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的原创文章,请关注公众号"汪子熙":

  • 相关阅读:
    React.Fragment
    微信分享
    视频H5 video标签最佳实践
    详解vue2.0+vue-video-player实现hls播放全过程
    call()和appl()的理解
    JS 原生面经从初级到高级
    vue面试
    面试题2
    IdentityServer4 实现 OpenID Connect 和 OAuth 2.0
    DDD关键知识点整理汇总
  • 原文地址:https://www.cnblogs.com/sap-jerry/p/9876489.html
Copyright © 2011-2022 走看看