二维码

[BAPI] SAP 删除生产订单的BAPI

Twilight发表于 2018-09-30 15:42Twilight 最后回复于 2018-09-30 15:42 [复制链接] 7897 0

查看生产订单T-code:CO03,这里的删除是指更新订单删除标记
程序代码:
  1. FUNCTION zppfm008.
  2. *"----------------------------------------------------------------------
  3. *"*"本地接口
  4. *"  IMPORTING
  5. *"     VALUE(I_ORDER_NUMBER) TYPE  AUFNR OPTIONAL
  6. *"  EXPORTING
  7. *"     VALUE(E_MESSAGE) TYPE  ZOTS001
  8. *"----------------------------------------------------------------------
  9.   DATA:BEGIN OF ls_afpo,
  10.          aufnr TYPE aufk-aufnr,
  11.          objnr TYPE aufk-objnr,
  12.        END OF ls_afpo.
  13.   DATA:lv_aufnr           TYPE afpo-aufnr.
  14.   DATA:lv_line           TYPE i.
  15.   DATA:lv_index          TYPE i.
  16.   DATA:lt_orders TYPE TABLE OF bapi_order_key WITH HEADER LINE.
  17.   DATA:lt_detail_return TYPE TABLE OF bapi_order_return WITH HEADER LINE.

  18.   IF i_order_number IS NOT INITIAL.
  19.     CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
  20.       EXPORTING
  21.         input  = i_order_number
  22.       IMPORTING
  23.         output = lv_aufnr.
  24.     SELECT SINGLE aufnr objnr INTO ls_afpo FROM aufk WHERE aufnr = lv_aufnr.
  25.     CALL FUNCTION 'STATUS_CHECK'
  26.       EXPORTING
  27.         client            = sy-mandt
  28.         objnr             = ls_afpo-objnr
  29.         status            = 'I0076' "DLFL        删除标记
  30.       EXCEPTIONS
  31.         object_not_found  = 1
  32.         status_not_active = 2
  33.         OTHERS            = 3.
  34.     IF sy-subrc = 0.
  35.       e_message-type = 'S'.
  36.       e_message-message  = '已被删除'.
  37.       EXIT.
  38.     ENDIF.
  39.   ELSE.
  40.     e_message-type = 'E'.
  41.     e_message-message = '输入条件不能全为空'.
  42.     EXIT.
  43.   ENDIF.

  44.   lt_orders-order_number = lv_aufnr.
  45.   APPEND lt_orders.

  46.   CALL FUNCTION 'BAPI_PRODORD_SET_DELETION_FLAG'
  47.     TABLES
  48.       orders        = lt_orders[]
  49.       detail_return = lt_detail_return.

  50.   LOOP AT lt_detail_return WHERE type CA 'AEX'.
  51.     IF e_message-message IS INITIAL.
  52.       e_message-message = lt_detail_return-message.
  53.     ELSE.
  54.       e_message-message = e_message-message && '/' && lt_detail_return-message.
  55.     ENDIF.
  56.   ENDLOOP.
  57.   IF sy-subrc = 0.
  58.     CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK' .

  59.     e_message-type = 'E'.
  60.     EXIT.
  61.   ELSE.
  62.     CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
  63.       EXPORTING
  64.         wait = 'X'.
  65.     e_message-type = 'S'.
  66.     e_message-message  = '删除生产订单成功'.
  67.   ENDIF.

  68. ENDFUNCTION.
复制代码

生产订单系统状态保存在数据库表TJ02
回复

使用道具 举报

快速回帖

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

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