二维码

[BAPI] 删除/关闭采购申请BAPI_REQUISITION_DELETE

Twilight发表于 2019-07-02 14:48Twilight 最后回复于 2019-07-02 14:48 [复制链接] 7590 0

BAPI_REQUISITION_DELETE 删除/关闭采购申请,可以按照行项目部分删除,只是标记删除标识。
BAPI_REQUISITION_DELETE只能删除普通的采购申请,如果删除L委外类型,需要使用BAPI_PR_CHANGE来删除

1、BAPI_REQUISITION_DELETE
  1. FUNCTION zpufm008.
  2. *"----------------------------------------------------------------------
  3. *"*"本地接口
  4. *"  IMPORTING
  5. *"     VALUE(I_BANFN) TYPE  BANFN
  6. *"  EXPORTING
  7. *"     VALUE(E_MESSAGE) TYPE  ZOTS001
  8. *"  TABLES
  9. *"      T_RQ_DEL STRUCTURE  BAPIEBAND
  10. *"----------------------------------------------------------------------
  11.   DATA:lt_return TYPE TABLE OF bapireturn WITH HEADER LINE.
  12.   DATA:lv_message  TYPE string.

  13.   PERFORM frm_inputsap_banfn CHANGING i_banfn.

  14.   CALL FUNCTION 'BAPI_REQUISITION_DELETE'
  15.     EXPORTING
  16.       number                      = i_banfn
  17.     TABLES
  18.       requisition_items_to_delete = t_rq_del
  19.       return                      = lt_return.

  20.   LOOP AT lt_return WHERE type CA 'AEX'.
  21.     IF e_message-message IS INITIAL.
  22.       e_message-message   = lt_return-message.
  23.     ELSE.
  24.       CONCATENATE e_message-message lv_message INTO e_message-message SEPARATED BY '/'.
  25.     ENDIF.
  26.   ENDLOOP.
  27.   IF sy-subrc = 0.
  28.     CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
  29.     e_message-type   = 'E'.
  30.   ELSE.
  31.     CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
  32.       EXPORTING
  33.         wait = 'X'.
  34.     e_message-type    = 'S'.
  35.     READ TABLE t_rq_del INDEX 1.
  36.     IF sy-subrc = 0.
  37.       IF t_rq_del-delete_ind = 'X'.
  38.         e_message-message = '采购申请删除成功!'.
  39.       ELSE.
  40.         e_message-message = '采购申请取消删除成功!'.
  41.       ENDIF.
  42.     ENDIF.
  43.   ENDIF.

  44. ENDFUNCTION.
  45. FORM frm_inputsap_banfn CHANGING pc_vbeln TYPE eban-banfn.
  46.   CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
  47.     EXPORTING
  48.       input  = pc_vbeln
  49.     IMPORTING
  50.       output = pc_vbeln.
  51. ENDFORM.
复制代码

2、BAPI_PR_CHANGE
  1. FUNCTION zpufm008.
  2. *"----------------------------------------------------------------------
  3. *"*"本地接口:
  4. *"  IMPORTING
  5. *"     VALUE(I_BANFN) TYPE  BANFN
  6. *"  EXPORTING
  7. *"     VALUE(E_MESSAGE) TYPE  ZOTS001
  8. *"  TABLES
  9. *"      T_RQ_DEL STRUCTURE  BAPIEBAND
  10. *"----------------------------------------------------------------------
  11.   DATA:lt_return  TYPE TABLE OF bapiret2 WITH HEADER LINE.
  12.   DATA:lt_pritem  TYPE TABLE OF bapimereqitemimp WITH HEADER LINE.
  13.   DATA:lt_pritemx        TYPE TABLE OF        bapimereqitemx WITH HEADER LINE.
  14.   DATA:lv_message  TYPE string.

  15.   CHECK t_rq_del[] IS NOT INITIAL.
  16.   PERFORM frm_inputsap_banfn CHANGING i_banfn.

  17.   LOOP AT t_rq_del.
  18.     CLEAR:lt_pritem,lt_pritemx.
  19.     lt_pritem-preq_item  = t_rq_del-preq_item.
  20.     lt_pritem-delete_ind = t_rq_del-delete_ind.
  21.     APPEND lt_pritem.
  22.     lt_pritemx-preq_item  = t_rq_del-preq_item.
  23.     lt_pritemx-preq_itemx = 'X'.
  24.     lt_pritemx-delete_ind = 'X'.
  25.     APPEND lt_pritemx.
  26.   ENDLOOP.

  27.   CALL FUNCTION 'BAPI_PR_CHANGE'
  28.     EXPORTING
  29.       number  = i_banfn
  30.     TABLES
  31.       return  = lt_return
  32.       pritem  = lt_pritem
  33.       pritemx = lt_pritemx.

  34.   LOOP AT lt_return WHERE type CA 'AEX'.
  35.     IF e_message-message IS INITIAL.
  36.       e_message-message   = lt_return-message.
  37.     ELSE.
  38.       CONCATENATE e_message-message lv_message INTO e_message-message SEPARATED BY '/'.
  39.     ENDIF.
  40.   ENDLOOP.
  41.   IF sy-subrc = 0.
  42.     CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
  43.     e_message-type   = 'E'.
  44.   ELSE.
  45.     CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
  46.       EXPORTING
  47.         wait = 'X'.
  48.     e_message-type    = 'S'.
  49.     READ TABLE t_rq_del INDEX 1.
  50.     IF sy-subrc = 0.
  51.       IF t_rq_del-delete_ind = 'X'.
  52.         e_message-message = '采购申请删除成功!'.
  53.       ELSE.
  54.         e_message-message = '采购申请取消删除成功!'.
  55.       ENDIF.
  56.     ENDIF.
  57.   ENDIF.

  58. ENDFUNCTION.
  59. FORM frm_inputsap_banfn CHANGING pc_vbeln TYPE eban-banfn.
  60.   CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
  61.     EXPORTING
  62.       input  = pc_vbeln
  63.     IMPORTING
  64.       output = pc_vbeln.
  65. ENDFORM.
复制代码
回复

使用道具 举报

快速回帖

本版积分规则
您需要登录后才可以回帖 登录 | 注册有礼

快速回复 返回顶部 返回列表