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

简介: 假设我想修改S/4HANA里Sales Order抬头的Service Date字段SERV_DATE: 首先从数据库表VBKD里查找到SERV_DATE修改之前的值为2020年1月1日 使用如下代码,将这个字段的值改成2020年1月2日。

假设我想修改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的原创文章,请关注公众号"汪子熙"。

相关文章
|
6月前
|
监控 安全
关于在执行 SAP ERP MM 模块 Post Goods Issue 时修改 Material Cost 的讨论
关于在执行 SAP ERP MM 模块 Post Goods Issue 时修改 Material Cost 的讨论
80 0
SAP QM执行事务代码QE23为检验批录入结果,报错-No selected set exists for the inspection point 200 or plant NMDC-
SAP QM执行事务代码QE23为检验批录入结果,报错-No selected set exists for the inspection point 200 or plant NMDC-
SAP QM执行事务代码QE23为检验批录入结果,报错-No selected set exists for the inspection point 200 or plant NMDC-
SAP MM ML81N为采购订单创建服务接收单,报错- No matching PO items selected -
SAP MM ML81N为采购订单创建服务接收单,报错- No matching PO items selected -
SAP MM ML81N为采购订单创建服务接收单,报错- No matching PO items selected -
SAP RETAIL 自动补货WRP1R事务代码报错 - Forecast values for determining target stock do not exist -
SAP RETAIL 自动补货WRP1R事务代码报错 - Forecast values for determining target stock do not exist -
SAP RETAIL 自动补货WRP1R事务代码报错 - Forecast values for determining target stock do not exist -
SAP RETAIL WA03 基于分配表创建PO报错 - No work list could be selected –
SAP RETAIL WA03 基于分配表创建PO报错 - No work list could be selected –
SAP RETAIL WA03 基于分配表创建PO报错 - No work list could be selected –
SAP SD 基础知识之Cash Sales和Rush Order的区别
SAP SD 基础知识之Cash Sales和Rush Order的区别
SAP SD 基础知识之Cash Sales和Rush Order的区别
SAP MM PR单据类型的配置里‘Control’和’Doc.Type’字段的作用?
SAP MM PR单据类型的配置里‘Control’和’Doc.Type’字段的作用?
SAP MM PR单据类型的配置里‘Control’和’Doc.Type’字段的作用?
如何利用BAPI SD_SALESDOCUMENT_CHANGE修改Sales Order的字段
假设我想修改S/4HANA里Sales Order抬头的Service Date字段SERV_DATE: 首先从数据库表VBKD里查找到SERV_DATE修改之前的值为2020年1月1日
使用函数BAPISDORDER_GETDETAILEDLIST读取S/4HANA中Sales Order行项目数据
事务码MM03查看物料主数据,如下图所示的行项目数据,包含物料ID,描述信息,数量,单价等等:
如何处理用代码创建SD Sales order时遇到的错误消息KI 180
错误消息KI 180:You must enter a company code for transaction Create sales document