SAP ABAP BAPI 50连载36-BAPI_SALESORDER_CHANGE-VA02

今天,我们来学习SD模块的销售订单修改/删除的BAPI函数,也可以写成批量的接口。

前台的TCODE事务代码是VA02,非常好用。

修改或者删除销售订单BAPI:BAPI_SALESORDER_CHANGE

如果您想复习一下销售订单创建VA01的demo示例:

SAP ABAP BAPI函数50连载31-BAPI_SALESORDER_CREATEFROMDAT2 VA01

函数参数如下:

参数名称 关联类型 可选的 说明
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/

微信原文《全文完》

今日热点在看SAP HOT583