日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

            歡迎訪問 生活随笔!

            生活随笔

            當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

            编程问答

            采购订单审批/取消审批程序(BAPI_PO_RESET_RELEASE、BAPI_PO_RELEASE)

            發布時間:2025/3/20 编程问答 42 豆豆
            生活随笔 收集整理的這篇文章主要介紹了 采购订单审批/取消审批程序(BAPI_PO_RESET_RELEASE、BAPI_PO_RELEASE) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

            data:? gt_t16fs?????? TYPE STANDARD TABLE OF t16fs,??????????? "批準策略

            ????? "定義采購訂單對應的審批信息
            ????? BEGIN OF gt_ekko OCCURS 0,
            ??????? ebeln LIKE ekko-ebeln,??????????????????????????????? "采購訂單編號
            ??????? frggr LIKE ekko-frggr,?????????????????????????????????? "審批組
            ??????? frgsx LIKE ekko-frgsx,????????????????????????????????? "審批策略
            ??????? frgzu LIKE ekko-frgzu,????????????????????????????????? "版本狀態
            ??????? bsart LIKE ekko-bsart,???????????????????????????????? "采購憑證類型
            ??????? ekorg LIKE ekko-ekorg,?????????????????????????????? "采購組織
            ????? END?? OF gt_ekko.

            *&———————————————————————*
            *&????? Form? get_Approval_strategy
            *&———————————————————————*
            *?????? 取采購訂單對應的審批組和審批策略
            *?????? 再根據審批組和審批管理取每級對應的審批組
            *———————————————————————-*
            FORM get_approval_strategy.
            ? "取采購訂單對應審批組
            ? SELECT ebeln???????????????????????????? "采購訂單
            ??? frggr???????????????????????????????????????????? "審批組
            ??? frgsx???????????????????????????????????????????? "審批策略
            ??? frgzu???????????????????????????????????????????? "版本狀態
            ??? bsart??????????????????????????????????????????? "采購憑證類型
            ??? ekorg?????????????????????????????????????????? "采購組織
            ??? INTO TABLE gt_ekko
            ??? FROM ekko

            ? WHERE ebeln = l_ebeln.


            ? "根據審批組取對應批準策略
            ? SELECT *
            ??? INTO TABLE gt_t16fs
            ??? FROM t16fs
            ??? FOR ALL ENTRIES IN gt_ekko
            ? WHERE frggr = gt_ekko-frggr?????? "審批組

            ??????? AND frgsx = gt_ekko-frgsx.????? "審批策略


            ENDFORM.??????????????????? "get_Approval_strategy

            ?

            *&———————————————————————*
            *&????? Form? PROCESS_po
            *&———————————————————————*
            *?????? 處理采購訂單,包括取消審批和審批
            *———————————————————————-*
            *????? –>VALUE(FV_APPROVE)? 處理標識,N:表示取消審批, Y:表示審批通過
            *———————————————————————-*
            FORM process_po USING value(fv_approve).
            ? DATA: l_level TYPE n,????????????????????????????????????????????????? "當前訂單已審批通過級別數
            ??????? l_last_char TYPE n,???????????????????????????????????????????????? "當前訂單最后審批通過級別
            ??????? l_pre_field TYPE string VALUE 'FRGC',????????????? "所有審批組對應字段相同部分
            ??????? l_fieldname TYPE string.??????????????????????????????????????? "由l_pre_field + l_last_char組成對應審批組字段


            ? FIELD-SYMBOLS: <fs_field> TYPE t16fs-frgc1.????? "當前審批組值
            ? CLEAR: l_level,
            ???????? l_last_char,
            ???????? l_fieldname.

            ? READ TABLE gt_ekko ASSIGNING <fs_ekko> WITH KEY ebeln = w_poheader-po_number.
            ? IF sy-subrc EQ 0 AND <fs_ekko>-frgzu IS NOT INITIAL.
            ??? "根據采購訂單的審批組、審批策略取對應的審批組
            ??? READ TABLE gt_t16fs ASSIGNING <fs_t16fs> WITH KEY frggr = <fs_ekko>-frggr
            ???????????????????????????????????????????????????????????????????????????????????????????????????????? frgsx = <fs_ekko>-frgsx.

            ?? "計算審批通過級數
            ??? l_level = STRLEN( <fs_ekko>-frgzu ).
            ??? "取消采購訂單,只取消第一級審批就可以,不需要逐級取消審批,如果逐級取消審批后造成采購訂單被鎖定錯誤
            ??? IF fv_approve = 'N'.

            ????? "組成字段名
            ????? CONCATENATE l_pre_field '1' INTO l_fieldname.

            ????? "通過指針獲取批準代碼
            ????? ASSIGN COMPONENT l_fieldname OF STRUCTURE <fs_t16fs> TO <fs_field>.

            ????? PERFORM approve_po USING <fs_ekko>-ebeln 'N' <fs_field>.

            ??? ENDIF.

            ??? "批準采購訂單,由前往后逐級審批

            ??? IF fv_approve = 'Y'.
            ????? DO l_level TIMES.
            ??????? l_last_char = sy-index.
            ??????? CONCATENATE l_pre_field l_last_char INTO l_fieldname.
            ??????? ASSIGN COMPONENT l_fieldname OF STRUCTURE <fs_t16fs> TO <fs_field>.
            ????????? PERFORM approve_po USING <fs_ekko>-ebeln 'Y' <fs_field>.
            ????? ENDDO.

            ??? ENDIF.
            ? ENDIF.

            ENDFORM.??????????????????? "PROCESS_po

            ?

            *&———————————————————————*
            *&????? Form? approve_po
            *&———————————————————————*
            *?????? 審批或取消采購訂單審批
            *———————————————————————-*
            *????? –>VALUE(FV_EBELN)??? 采購訂單編號
            *????? –>VALUE(FV_APPROVE)? 審批狀態
            *????? –>VALUE(FV_REL_COD)? 審批代碼
            *———————————————————————-*
            FORM approve_po USING value(fv_ebeln)
            ????????????????????? value(fv_approve)
            ????????????????????? value(fv_rel_cod).
            ? CALL FUNCTION 'Z_MM_APPROVE_PO'
            ??? EXPORTING
            ????? purchaseorder = fv_ebeln
            ????? approve??????????? = fv_approve
            ????? rel_cod???????????? = fv_rel_cod.

            ? IF sy-subrc EQ 0.
            ??? WAIT UP TO 1 SECONDS.
            ? ENDIF.

            ENDFORM.??????????????????? "approve_po

            FUNCTION z_mm_approve_po.
            *"———————————————————————-
            *"*"Update function module:
            *"
            *"*"Local interface:
            *"? IMPORTING
            *"???? VALUE(PURCHASEORDER) TYPE? BAPIMMPARA-PO_NUMBER
            *"???? VALUE(APPROVE) TYPE? CHAR1
            *"???? VALUE(REL_COD) TYPE? BAPIMMPARA-PO_REL_COD
            *"———————————————————————-

            ? IF approve = 'Y'.
            ??? CALL FUNCTION 'BAPI_PO_RELEASE'
            ????? EXPORTING
            ??????? purchaseorder??????????????? = purchaseorder
            ??????? po_rel_code????????????????? = rel_cod
            *???? USE_EXCEPTIONS?????????????? = 'X'
            *???? NO_COMMIT??????????????????? = ' '
            *?? IMPORTING
            *???? REL_STATUS_NEW?????????????? =
            *???? REL_INDICATOR_NEW??????????? =
            *???? RET_CODE???????????????????? =
            *?? TABLES
            *???? RETURN?????????????????????? = return
            ???? EXCEPTIONS
            ?????? authority_check_fail???????? = 1
            ?????? document_not_found?????????? = 2
            ?????? enqueue_fail???????????????? = 3
            ?????? prerequisite_fail??????????? = 4
            ?????? release_already_posted?????? = 5
            ?????? responsibility_fail????????? = 6
            ?????? OTHERS?????????????????????? = 7
            ????????????? .
            ??? IF sy-subrc <> 0.
            ????? MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            ????????????? WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
            ??? ENDIF.
            ? ELSEIF approve = 'N'.
            ??? CALL FUNCTION 'BAPI_PO_RESET_RELEASE'
            ????? EXPORTING
            ??????? purchaseorder????????????????? = purchaseorder
            ??????? po_rel_code???????????????????? = rel_cod
            *???? USE_EXCEPTIONS???????????????? = 'X'
            *?? IMPORTING
            *???? REL_STATUS_NEW???????????????? =
            *???? REL_INDICATOR_NEW????????????? =
            *?? TABLES
            *???? RETURN???????????????????????? = return
            ???? EXCEPTIONS
            ?????? authority_check_fail?????????? = 1
            ?????? document_not_found???????????? = 2
            ?????? enqueue_fail?????????????????? = 3
            ?????? prerequisite_fail????????????? = 4
            ?????? release_already_posted???????? = 5
            ?????? responsibility_fail??????????? = 6
            ?????? no_release_already???????????? = 7
            ?????? no_new_release_indicator?????? = 8
            ?????? OTHERS???????????????????????? = 9
            ????????????? .
            ??? IF sy-subrc <> 0.
            ????? MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            ????????????? WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
            ??? ENDIF.

            ? ENDIF.
            ENDFUNCTION.?

            總結

            以上是生活随笔為你收集整理的采购订单审批/取消审批程序(BAPI_PO_RESET_RELEASE、BAPI_PO_RELEASE)的全部內容,希望文章能夠幫你解決所遇到的問題。

            如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。