ABAP VA01增强,调整组件数量
时间:2021-07-30
本文章向大家介绍ABAP VA01增强,调整组件数量,主要包括ABAP VA01增强,调整组件数量使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
业务背景介绍:
VA01创建时,输入成品物料,会自动展开其销售BOM(CS03中BOM用途为5),当下面存在BOM组件有组件报废率时,在销售订单中的数量,需要加上可能报废的数量。
比如组件报废率为5(这里都是百分比的stpox-ausch),则该 销售订单行数量 = 销售订单行数量 + 销售订单行数量 * 0.05。
经过测试,最终写了个隐式增强,打开SE38 -> FV45SFST_STRUKTUR_ANLEGEN_POSI,
这里用的是浮点数算法,另外新建了个接口(接口使用固定点算法)用来计算上面的销售订单行数量。
接口参考:
代码参考:
IF vbak-kunnr EQ '0005000000' . DATA:wa_topmat TYPE cstmat. DATA: lt_stpox LIKE TABLE OF stpox. * GET PARAMETER ID 'BOMPOSNR2' FIELD lv_bomposnr. "该物料在BOM的项目号 READ TABLE xvbap INTO DATA(ls_xvbap) WITH KEY posnr = vbap-uepos."获取上层物料号 IF sy-subrc EQ 0 AND ls_xvbap-pstyv EQ 'ZTAQ'. READ TABLE xvbep INTO DATA(ls_xvbep) WITH KEY posnr = vbap-uepos."获取上层物料号的数量 CALL FUNCTION 'CS_BOM_EXPL_MAT_V2' "展开BOM,获取组件报废率 EXPORTING aufsw = 'X' capid = 'PP01' "checkb "BOM应用 datuv = sy-datum "有效起始日 mtnrv = ls_xvbap-matnr "展开物料号 postp = ' ' "项目类别(物料单) stlan = '5' "BOM用途(销售BOM) stlal = '01' "可选的BOM werks = ls_xvbap-werks "工厂 emeng = ls_xvbep-wmeng "数量 gsmng计划订单总数量 bdmng需求量 mehrs = 'X' IMPORTING topmat = wa_topmat * DSTST = TABLES stb = lt_stpox * MATCAT = EXCEPTIONS alt_not_found = 1 call_invalid = 2 material_not_found = 3 missing_authorization = 4 no_bom_found = 5 no_plant_data = 6 no_suitable_bom_found = 7 conversion_error = 8 OTHERS = 9. READ TABLE lt_stpox INTO DATA(ls_stpox) WITH KEY posnr = xstb-posnr idnrk = vbap-matnr. IF sy-subrc EQ 0. IF ls_stpox-ausch NE 0. * vbap-kwmeng = ls_stpox-mngko * ls_stpox-ausch. * vbap-kwmeng = vbap-kwmeng / '100'. * DATA: lv_formula TYPE string. * lv_formula = |{ ls_stpox-mngko } * { ls_stpox-ausch } / 100|. * CALL FUNCTION 'EVAL_FORMULA' * EXPORTING * formula = lv_formula * IMPORTING * value = vbap-kwmeng * EXCEPTIONS * division_by_zero = 1 * OTHERS = 11. * vbap-kwmeng = ls_stpox-mngko * vbap-kwmeng. CALL FUNCTION 'Z_RFC_SD_VA01' EXPORTING p_mngko = ls_stpox-mngko p_ausch = ls_stpox-ausch IMPORTING p_kwmeng = xstb-MNGLG. xstb-MNGKO = xstb-MNGLG. ENDIF. ENDIF. CLEAR ls_xvbep. ENDIF. ENDIF.
背后延申:
经过这里
,进入该form,最终会进入到出口MV45AFZZ(se38可进),我在
userexit_move_field_to_vbap中试着改过vbap-kwmeng,结果更改后的数量不能再次在va01中手动调整,而且保存之后,数量也会变回未更改的状态,最终选择了上面的隐式增强。隐式增强也是执行到这里时,按F7会跳到一个function,再按F5会跳回到隐式增强处。
原文地址:https://www.cnblogs.com/chaguoguo/p/15078161.html
- 一斤代码深入理解系列(三):微信小程序和服务器通信
- C#CreateGraphics方法的三种实现方式
- 一斤代码深入理解系列(四):微信小程序和服务器通信-WebSocket
- linux学习第十四篇:查看磁盘,文件大小命令:df,du;磁盘分区
- 二叉树的性质和常用操作代码集合
- linux学习第十五篇:磁盘格式化,磁盘挂载,手动增加swap空间
- 《Java程序设计基础》 第8章手记Part 2
- 备忘录模式
- 《Java程序设计基础》 第8章手记Part 1
- 你很有想法,跟我学做菜吧No.3
- 《数据结构》 定长顺序串常用操作代码集合
- 一斤代码深入理解系列(七):微信小程序中使用微信风格样式库-WeUI
- 餐厅老板要累疯了No.2
- linux学习第十九篇:压缩介绍,gzip,bzip2,xz压缩工具
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 详解flink 1.11中的新部署模式-Application模式
- 浙大版《C语言程序设计(第3版)》题目集 习题10-2 递归求阶乘和
- hadoop源码解析之RPC分析
- 存储过程和触发器
- hadoop源码学习之namenode启动
- 浙大版《C语言程序设计(第3版)》题目集 习题10-3 递归实现指数函数
- hadoop2.7.3源码解析之datanode注册和心跳机制
- 审核/审计
- flink教程-聊聊 flink 1.11 中新的水印策略
- 浙大版《C语言程序设计(第3版)》题目集 习题10-4 递归求简单交错幂级数的部分和
- JSP分页显示(前端处理)
- 拓扑排序-HDU2647 Reward
- hadoop2.7.3源码解析之HA架构分析
- hadoop源码解析之hdfs内部结构分析
- 浙大版《C语言程序设计(第3版)》题目集 习题10-5 递归计算Ackermenn函数