今天,我们来学习SD模块的销售订单修改/删除的BAPI函数,也可以写成批量的接口。
前台的TCODE事务代码是VA02,非常好用。
修改或者删除销售订单BAPI:BAPI_SALESORDER_CHANGE
如果您想复习一下销售订单创建VA01的demo示例:
函数参数如下:
参数名称 | 关联类型 | 可选的 | 说明 |
SALESDOCUMENT | BAPIVBELN-VBELN | 必选 | 销售订单编号 |
ORDER_HEADER_IN | BAPISDH1 | 可选 | SD 订单标题 |
ORDER_HEADER_INX | BAPISDH1X | 必选 | 复选框清单:SD 订单标题 |
ORDER_ITEM_IN常用输入参数字段,主要用来输入销售订单的相关行项目字段:
组件 | 类型 | 简短描述 |
ITM_NUMBER | POSNR_VA | 销售凭证项目 |
MATERIAL | MATNR18 | 物料编号(18个字符) |
TARGET_QTY | DZMENG | 目标数量(采用销售单位) |
ORDER_ITEM_INX常用输入参数字段:除与ORDER_ITEM_IN中对应字段外(字段对应,类型不一定对应,具体需要字段,去bapi参数的关联类型结构中查找)
SCHEDULE_LINES常用输入参数字段:
组件 | 类型 | 简短描述 |
ITM_NUMBER | POSNR_VA | 销售凭证项目 |
SCHED_LINE | ETENR | 计划行 |
REQ_QTY | WMENG | 各销售单位订单数量 |
SCHEDULE_LINESX,是和SCHEDULE_LINES一一对应的关系。
常用输入参数字段:除与SCHEDULE_LINES中对应字段外(字段对应,类型不一定对应,具体需要字段,去bapi参数的关联类型结构中查找)
组件 | 类型 | 简短描述 |
UPDATEFLAG | UPDKZ_D | 更新标识 |
demo代码如下,请注意及时的commit work哦。有时候如果是批量的一整个流程。
为了能够及时清空函数组的变量,请在destination里面使用更新模式来执行,或者SET LOCAL的模式。
*–定义
DATA HEADER_INX TYPE BAPISDH1X .
DATA SALESDOCUMENT TYPE BAPIVBELN-VBELN .
DATA : RETURN TYPE TABLE OF BAPIRET2 WITH HEADER LINE ,
ORDER_ITEMS_IN TYPE TABLE OF BAPISDITM WITH HEADER LINE ,
ORDER_ITEMS_INX TYPE TABLE OF BAPISDITMX WITH HEADER LINE ,
SCHEDULES_IN TYPE TABLE OF BAPISCHDL WITH HEADER LINE ,
SCHEDULES_INX TYPE TABLE OF BAPISCHDLX WITH HEADER LINE .
DATA L_MSG(50) TYPE C .
*–赋值,先清空变量,保持良好的习惯
CLEAR :
HEADER_INX ,
SALESDOCUMENT ,
RETURN , RETURN[] ,
ORDER_ITEMS_IN , ORDER_ITEMS_IN[] ,
ORDER_ITEMS_INX , ORDER_ITEMS_INX[] ,
SCHEDULES_IN , SCHEDULES_IN[] ,
SCHEDULES_INX , SCHEDULES_INX[] .
HEADER_INX-UPDATEFLAG = ‘U’ .
SORT GT_SO BY VBELN .
LOOP AT GT_SO WHERE CHECKBOX = ‘X’ .
SALESDOCUMENT = GT_SO-VBELN .
*–行项目
ORDER_ITEMS_IN-ITM_NUMBER = GT_SO-POSNR_VA .
ORDER_ITEMS_IN-MATERIAL = GT_SO-MATNR .
ORDER_ITEMS_IN-TARGET_QTY = GT_SO-DZMENG .
APPEND ORDER_ITEMS_IN .
CLEAR ORDER_ITEMS_IN .
ORDER_ITEMS_INX-ITM_NUMBER = GT_SO-POSNR_VA .
ORDER_ITEMS_INX-MATERIAL = ‘X’ .
ORDER_ITEMS_INX-TARGET_QTY = ‘X’ .
ORDER_ITEMS_INX-UPDATEFLAG = ‘U’ .
APPEND ORDER_ITEMS_INX .
CLEAR ORDER_ITEMS_INX .
*–计划行
SCHEDULES_IN-ITM_NUMBER = GT_SO-POSNR_VA .
SCHEDULES_IN-SCHED_LINE = ‘0001’ .
SCHEDULES_IN-REQ_QTY = GT_SO-DZMENG .
APPEND SCHEDULES_IN .
CLEAR SCHEDULES_IN .
SCHEDULES_INX-ITM_NUMBER = GT_SO-POSNR_VA .
SCHEDULES_INX-SCHED_LINE = ‘0001’ .
SCHEDULES_INX-UPDATEFLAG = ‘U’ .
SCHEDULES_INX-REQ_QTY = ‘X’ .
APPEND SCHEDULES_INX .
CLEAR SCHEDULES_INX .
AT END OF VBELN .
*–CALL BAPI
CALL FUNCTION ‘BAPI_SALESORDER_CHANGE’
EXPORTING
SALESDOCUMENT = SALESDOCUMENT
ORDER_HEADER_INX = HEADER_INX
TABLES
RETURN = RETURN
ORDER_ITEM_IN = ORDER_ITEMS_IN
ORDER_ITEM_INX = ORDER_ITEMS_INX
SCHEDULE_LINES = SCHEDULES_IN
SCHEDULE_LINESX = SCHEDULES_INX
.
READ TABLE RETURN WITH KEY TYPE = ‘E’ .
IF SY-SUBRC = 0 .
CALL FUNCTION ‘BAPI_TRANSACTION_ROLLBACK’ .
CLEAR L_MSG .
LOOP AT RETURN WHERE TYPE = ‘E’ .
CONCATENATE L_MSG ‘/’ RETURN-MESSAGE INTO L_MSG .
ENDLOOP .
ELSE .
CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT’
EXPORTING
WAIT = ‘X’ .
CLEAR L_MSG .
CONCATENATE ‘修改成功:’ SALESDOCUMENT INTO L_MSG .
ENDIF .
ENDLOOP .
我的微信公众号【 hot583 】 或者在这个链接联系我
本文链接 : http://www.hot583.com/2022/06/21/bapi_salesorder_change/
本文为作者原创,如果这篇文章对您有用,欢迎转载,
转载请务必注明来源《今日热点在看》http://www.hot583.com/
微信原文《全文完》