? ME29N采购订单取消审批BAPI_PO_RESET_RELEASE - SAP顾问圈 亚博体育娱乐 ,亚博体育app怎么样,亚博2018网上投注
二维码

[BAPI] ME29N采购订单取消审批BAPI_PO_RESET_RELEASE

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

采购订单审批时需要逐级审批,但是取消审批也可以跨级审批,直接置为未审批状态。

1、逐级取消审批
  1. FUNCTION zpufm010.
  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: 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. ??IF sy-subrc = 0.
  31. ? ? SELECT SINGLE * INTO ls_t16fs FROM t16fs WHERE frggr = ls_ekko-frggr AND frgsx = ls_ekko-frgsx. "审批代码
  32. ? ? IF sy-subrc = 0.
  33. ? ?? ?lv_level = strlen( i_frgzu ).
  34. ? ?? ?CONCATENATE lv_pre_field lv_level INTO lv_fieldname.
  35. ? ?? ?"通过指针获取批准代码
  36. ? ?? ?ASSIGN COMPONENT lv_fieldname OF STRUCTURE ls_t16fs TO .
  37. ? ?? ?IF sy-subrc = 0.
  38. ? ?? ???CALL FUNCTION 'BAPI_PO_RESET_RELEASE'
  39. ? ?? ?? ? EXPORTING
  40. ? ?? ?? ?? ?purchaseorder? ?? ?? ?? ?= i_ebeln
  41. ? ?? ?? ?? ?po_rel_code? ?? ?? ?? ???=
  42. ? ?? ?? ?? ?use_exceptions? ?? ?? ???= 'X'
  43. ? ?? ?? ? TABLES
  44. ? ?? ?? ?? ?return? ?? ?? ?? ?? ?? ? = lt_return
  45. ? ?? ?? ? EXCEPTIONS
  46. ? ?? ?? ?? ?authority_check_fail? ???= 1
  47. ? ?? ?? ?? ?document_not_found? ?? ? = 2
  48. ? ?? ?? ?? ?enqueue_fail? ?? ?? ?? ? = 3
  49. ? ?? ?? ?? ?prerequisite_fail? ?? ???= 4
  50. ? ?? ?? ?? ?release_already_posted? ?= 5
  51. ? ?? ?? ?? ?responsibility_fail? ?? ?= 6
  52. ? ?? ?? ?? ?no_release_already? ?? ? = 7
  53. ? ?? ?? ?? ?no_new_release_indicator = 8
  54. ? ?? ?? ?? ?OTHERS? ?? ?? ?? ?? ?? ? = 9.
  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.
复制代码

2、直接反审批,一步到位
  1. FUNCTION zpufm010.
  2. *"----------------------------------------------------------------------
  3. *"*"本地接口:
  4. *"??IMPORTING
  5. *"? ???VALUE(I_EBELN) TYPE??EBELN
  6. *"??EXPORTING
  7. *"? ???VALUE(E_MESSAGE) TYPE??ZOTS001
  8. *"----------------------------------------------------------------------
  9. ??DATA:lt_return TYPE TABLE OF bapireturn WITH HEADER LINE.
  10. ??DATA:BEGIN OF ls_ekko,
  11. ? ?? ?? ?ebeln TYPE ekko-ebeln,
  12. ? ?? ?? ?frggr TYPE ekko-frggr,
  13. ? ?? ?? ?frgsx TYPE ekko-frgsx,
  14. ? ?? ? END OF ls_ekko.
  15. ??DATA:ls_t16fs TYPE t16fs.
  16. ??DATA:lv_pre_field TYPE string VALUE 'FRGC'.
  17. ??DATA:lv_fieldname TYPE string.
  18. ??FIELD-SYMBOLS: TYPE t16fs-frgc1.

  19. ??PERFORM frm_inputsap_ebeln CHANGING i_ebeln.


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

  67. ? ? ENDIF.
  68. ??ELSE.
  69. ? ? e_message-type? ? = 'S'.
  70. ? ? e_message-message = '没有发现需要反审批的采购订单!'.
  71. ??ENDIF.

  72. ENDFUNCTION.
复制代码

快速回帖

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

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