二维码

[BAPI] ME29N采购订单审批BAPI_PO_RELEASE

Twilight发表于 2019-08-07 10:43Twilight 最后回复于 2019-08-07 10:43 [复制链接] 3502 0

采购订单不能跨级审批,只能逐级审批

程序代码:
  1. FUNCTION zpufm009.
  2. *"----------------------------------------------------------------------
  3. *"*"本地接口
  4. *"  IMPORTING
  5. *"     VALUE(I_EBELN) TYPE  EBELN
  6. *"     VALUE(I_FRGZU) TYPE  FRGZU
  7. *"  EXPORTING
  8. *"     VALUE(E_MESSAGE) TYPE  ZOTS001
  9. *"----------------------------------------------------------------------
  10.   DATA:lt_return TYPE TABLE OF bapireturn WITH HEADER LINE.
  11.   DATA:BEGIN OF ls_ekko,
  12.         ebeln TYPE ekko-ebeln,
  13.         frggr TYPE ekko-frggr,
  14.         frgsx TYPE ekko-frgsx,
  15.       END OF ls_ekko.
  16.   DATA:ls_t16fs TYPE t16fs.
  17.   DATA:lv_level TYPE n.
  18.   DATA:lv_pre_field TYPE string VALUE 'FRGC'.
  19.   DATA:lv_fieldname TYPE string.
  20.   FIELD-SYMBOLS:<fs_field> TYPE t16fs-frgc1.

  21.   PERFORM frm_inputsap_ebeln CHANGING i_ebeln.

  22.   SELECT SINGLE
  23.     ebeln  "采购订单
  24.     frggr  "审批组
  25.     frgsx  "审批策略
  26.   INTO ls_ekko
  27.   FROM ekko
  28.   WHERE ebeln = i_ebeln
  29.     AND frgzu = i_frgzu "空 未审核 X一级审核 XX二级审核
  30.     AND frgrl = 'X'.    "X有待审批,未审核完成
  31.   IF sy-subrc = 0.
  32.     SELECT SINGLE * INTO ls_t16fs FROM t16fs WHERE frggr = ls_ekko-frggr AND frgsx = ls_ekko-frgsx. "审批代码
  33.     IF sy-subrc = 0.
  34.       lv_level = strlen( i_frgzu ).
  35.       lv_level = lv_level + 1.
  36.       CONCATENATE lv_pre_field lv_level INTO lv_fieldname.
  37.       "通过指针获取批准代码
  38.       ASSIGN COMPONENT lv_fieldname OF STRUCTURE ls_t16fs TO <fs_field>.
  39.       IF sy-subrc = 0.
  40.         CALL FUNCTION 'BAPI_PO_RELEASE'
  41.           EXPORTING
  42.             purchaseorder          = i_ebeln
  43.             po_rel_code            = <fs_field>
  44.             use_exceptions         = 'X'
  45.           TABLES
  46.             return                 = lt_return
  47.           EXCEPTIONS
  48.             authority_check_fail   = 1
  49.             document_not_found     = 2
  50.             enqueue_fail           = 3
  51.             prerequisite_fail      = 4
  52.             release_already_posted = 5
  53.             responsibility_fail    = 6
  54.             OTHERS                 = 7.
  55.         LOOP AT lt_return WHERE type CA 'AEX'.
  56.           IF e_message-message IS INITIAL.
  57.             e_message-message   = lt_return-message.
  58.           ELSE.
  59.             CONCATENATE e_message-message lt_return-message INTO e_message-message SEPARATED BY '/'.
  60.           ENDIF.
  61.         ENDLOOP.
  62.         IF sy-subrc = 0.
  63.           e_message-type   = 'E'.
  64.           EXIT.
  65.         ELSE.
  66.           e_message-type    = 'S'.
  67.           e_message-message = '采购订单' && lv_level && '级审批通过!'.
  68.         ENDIF.
  69.       ENDIF.

  70.     ENDIF.
  71.   ELSE.
  72.     e_message-type    = 'S'.
  73.     e_message-message = '没有发现需要审批的采购订单!'.
  74.   ENDIF.

  75. ENDFUNCTION.
  76. FORM frm_inputsap_ebeln CHANGING pc_vbeln TYPE ekko-ebeln.
  77.   CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
  78.     EXPORTING
  79.       input  = pc_vbeln
  80.     IMPORTING
  81.       output = pc_vbeln.
  82. ENDFORM.
复制代码

回复

使用道具 举报

快速回帖

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

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