千家信息网

如何利用BAPI SD_SALESDOCUMENT_CHANGE修改Sales Order的字段

发表于:2025-01-26 作者:千家信息网编辑
千家信息网最后更新 2025年01月26日,假设我想修改S/4HANA里Sales Order抬头的Service Date字段SERV_DATE:首先从数据库表VBKD里查找到SERV_DATE修改之前的值为2020年1月1日使用如下代码,将
千家信息网最后更新 2025年01月26日如何利用BAPI SD_SALESDOCUMENT_CHANGE修改Sales Order的字段

假设我想修改S/4HANA里Sales Order抬头的Service Date字段SERV_DATE:

首先从数据库表VBKD里查找到SERV_DATE修改之前的值为2020年1月1日

使用如下代码,将这个字段的值改成2020年1月2日。

REPORT zchange_so1.DATA: lv_num        TYPE bapivbeln-vbeln,      ls_doc_header TYPE bapisdhd1,      lt_vbap       TYPE STANDARD  TABLE OF vbap.lv_num = '0000000268'.CALL FUNCTION 'SD_VBAP_READ_WITH_VBELN'  EXPORTING    i_vbeln          = lv_num  TABLES    et_vbap          = lt_vbap  EXCEPTIONS    record_not_found = 1    OTHERS           = 2.BREAK-POINT.DATA: i_order_header_in  LIKE bapisdhd1 .DATA: i_order_header_inx LIKE bapisdhd1x,      lt_bapiret2        LIKE bapiret2   OCCURS 0 WITH HEADER LINE.i_order_header_inx-updateflag = 'U'.i_order_header_in-serv_date = '20200102' .i_order_header_inx-serv_date = 'X'.CALL FUNCTION 'SD_SALESDOCUMENT_CHANGE'  EXPORTING    salesdocument    = lv_num    order_header_in  = i_order_header_in    order_header_inx = i_order_header_inx  TABLES    return           = lt_bapiret2.clear: lt_bapiret2.CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'  IMPORTING     RETURN = lt_bapiret2.BREAK-POINT.

执行之后,从输出参数lt_bapiret2里查看到这个Sales Order已经成功被更新了。

从后台数据库表VBKD里查看到这个字段的值也已经成功更新了:

要获取更多Jerry的原创文章,请关注公众号"汪子熙":


0