zoukankan      html  css  js  c++  java
  • 如何利用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的原创文章,请关注公众号"汪子熙":

  • 相关阅读:
    转 Linux查看版本信息及CPU内核、型号等
    freeswitch ODBC error: ODBC NOT AVAILABLE!
    asterisk 命令
    Freeswitch mod 安装
    数据库压缩备份
    IEnumreable的使用小结
    新的Layout布局系统
    前台网站开发手记
    容器服务是如何在高速增长下保持高可用性的
    Kubernetes问题排查流程
  • 原文地址:https://www.cnblogs.com/sap-jerry/p/9876489.html
Copyright © 2011-2022 走看看