ABAP-删除销售订单

FUNCTION zsd_fm_036.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     REFERENCE(VBELN_IN) TYPE  VBELN_VA
*"  EXPORTING
*"     REFERENCE(VBELN_OUT) TYPE  VBELN_VA
*"     REFERENCE(STATUS) TYPE  CHAR1
*"     REFERENCE(MSG) TYPE  CHAR50
*"----------------------------------------------------------------------
  DATA: ls_vbak TYPE vbak, lt_vbak TYPE TABLE OF vbak.

  DATA: f_headinx LIKE bapisdh1x,
        t_ret     TYPE TABLE OF bapiret2,
        l_ret     TYPE  bapiret2,
        lv_vbeln  TYPE bapivbeln-vbeln.

  lv_vbeln = vbeln_in.
  CLEAR: f_headinx .
  IF lv_vbeln IS NOT INITIAL.
    f_headinx-updateflag 'D'.

    CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
      EXPORTING
        salesdocument    = lv_vbeln
        order_header_inx = f_headinx
      TABLES
        return           = t_ret.

    READ TABLE t_ret INTO l_ret WITH KEY type 'S'.
    IF sy-subrc EQ 0.
      COMMIT WORK AND WAIT .
    ELSE.
      ROLLBACK WORK .
    ENDIF.


  ENDIF.

  SELECT SINGLE * INTO ls_vbak FROM vbak  WHERE vbeln = lv_vbeln .

  IF ls_vbak IS INITIAL.

    vbeln_out = lv_vbeln.
    status    'S'.
    msg  '删除成功!'.
  ELSE.
    vbeln_out = lv_vbeln.
    status    'E'.
    LOOP AT t_ret INTO l_ret WHERE type EQ 'E'.
      msg = msg && l_ret-message.
    ENDLOOP.

  ENDIF.




ENDFUNCTION.

posted @ 2021-11-29 13:00  東東東東  阅读(179)  评论(0编辑  收藏  举报