ABAP 更改銷售訂單(BAPI'BAPI_SALESORDER_CHANGE')


Change類的BAPI都差不多,改行項目的某個字段時,只需在lt_item的某個字段給值,然后再lt_itemx結構中的對應字段打上’X’,另外記得updateflag字段給’U’表示Update.

最后記得調用commit,一般都沒什么問題。

示例代碼:

 DATA: lv_vbeln TYPE bapivbeln-vbeln,
        ls_headrx TYPE bapisdh1x,
        lt_return TYPE TABLE OF bapiret2 WITH HEADER LINE,
        lt_item   TYPE TABLE OF bapisditm WITH HEADER LINE,
        lt_itemx  TYPE TABLE OF bapisditmx WITH HEADER LINE.
  DATA: lv_message TYPE string.
  DATA: ls_zsd_up_dr_log TYPE zsd_up_dr_log.
  DATA: lt_zsd_up_dr_log TYPE TABLE OF zsd_up_dr_log.
  lv_vbeln = p_vbeln .
  ls_headrx-updateflag = 'U'.
  LOOP AT gt_change INTO gs_change.
    lt_item-itm_number = gs_change-posnr.
*    lt_item-material   = gs_change-matnr.
    lt_item-dlv_prio   = gs_change-lprio.
    APPEND lt_item.

    lt_itemx-itm_number = gs_change-posnr.
    lt_itemx-updateflag = 'U'.
    lt_itemx-dlv_prio   = 'X'.
    APPEND lt_itemx.
    ls_zsd_up_dr_log-vbeln = p_vbeln.
    ls_zsd_up_dr_log-posnr = gs_change-posnr.
    ls_zsd_up_dr_log-erdat = sy-datum.
    APPEND ls_zsd_up_dr_log TO lt_zsd_up_dr_log.
  ENDLOOP.


  CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
    EXPORTING
      salesdocument         = lv_vbeln
*     ORDER_HEADER_IN       =
      order_header_inx      = ls_headrx
*     SIMULATION            =
*     BEHAVE_WHEN_ERROR     = ' '
*     INT_NUMBER_ASSIGNMENT = ' '
*     LOGIC_SWITCH          =
*     NO_STATUS_BUF_INIT    = ' '
    TABLES
      return                = lt_return
      order_item_in         = lt_item
      order_item_inx        = lt_itemx
*     PARTNERS              =
*     PARTNERCHANGES        =
*     PARTNERADDRESSES      =
*     ORDER_CFGS_REF        =
*     ORDER_CFGS_INST       =
*     ORDER_CFGS_PART_OF    =
*     ORDER_CFGS_VALUE      =
*     ORDER_CFGS_BLOB       =
*     ORDER_CFGS_VK         =
*     ORDER_CFGS_REFINST    =
*     SCHEDULE_LINES        =
*     SCHEDULE_LINESX       =
*     ORDER_TEXT            =
*     ORDER_KEYS            =
*     CONDITIONS_IN         =
*     CONDITIONS_INX        =
*     EXTENSIONIN           =
    .
  LOOP AT lt_return WHERE type = 'E' OR type = 'A'.
    CONCATENATE lt_return-message ';' lv_message   INTO lv_message.  ENDLOOP.
  IF sy-subrc ne 0.
  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait = 'X'.

  ENDIF.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM