* Program Name : ZGER_BAPI_4 *
* describe: *
* Created by : *
* Created on : *
* *
*------------------------------------------------------------*
REPORT zger_bapi_4.
DATA:
BEGIN OF ls_grp,
frggr TYPE t16fc-frggr, "审批组
frgco TYPE t16fc-frgco, "审批代码
END OF ls_grp,
lt_grp LIKE TABLE OF ls_grp,
lt_return TYPE STANDARD TABLE OF bapireturn,
ls_return TYPE bapireturn.
PARAMETERS:p_EBELN TYPE EKKO-EBELN.
PARAMETERS:p_frgco TYPE t16fc-frgco.
* 根据PR获得审批组,从而获取审批码
SELECT t16fc~frggr
t16fc~frgco
INTO TABLE lt_grp
FROM EKKO
INNER JOIN t16fc ON EKKO~frggr = t16fc~frggr "审批组
WHERE EKKO~EBELN = p_EBELN.
" AND eban~frgrl = 'X'."FRGRL 字段标示审批是否结束(X未结束,需要审批, ''审批结束
*循环审批码将PR逐级
SORT lt_grp BY frggr frgco.
DELETE ADJACENT DUPLICATES FROM lt_grp COMPARING frggr frgco.
LOOP AT lt_grp INTO ls_grp.
CALL FUNCTION 'BAPI_PO_RELEASE'
EXPORTING
purchaseorder = p_EBELN
po_rel_code = P_FRGCO
* USE_EXCEPTIONS = 'X'
* NO_COMMIT = ' '
* IMPORTING
* REL_STATUS_NEW =
* REL_INDICATOR_NEW =
* RET_CODE =
TABLES
RETURN = lt_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.
* Implement suitable error handling here
ENDIF.
LOOP AT lt_return INTO ls_return WHERE type = 'A'
OR type = 'E'
OR type = 'X'.
"MESSAGE ls_return-MASSAGE TYPE 'S' DISPLAY LIKE 'E'.
ENDLOOP.
ENDLOOP.
MESSAGE '审批完成,请通过ME29N查看审批结果' TYPE 'S'.