* Program Name : ZGER_BAPI_2 *
* describe: *
* Created by : *
* Created on : *
* *
*------------------------------------------------------------*
REPORT zger_bapi_2.
TABLES ekko.
DATA gc_frggr LIKE ekko-frggr."审批组
DATA gc_frgsx LIKE ekko-frgsx."审批策略
DATA gc_frgke LIKE ekko-frgke."批准标识:采购凭证
DATA ret_code LIKE sy-subrc.
DATA msg(255) TYPE c.
DATA gt_t16fs LIKE t16fs OCCURS 0 WITH HEADER LINE.
DATA gc_new_status LIKE bapimmpara-rel_status.
"DATA GC_INDICATOR_NEW LIKE BAPIMMPARA-PO_REL_IND.
"DATA GT_LOG LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE.
"DATA GC_NO_COMMIT LIKE BAPIMMPARA-SELECTION.
"DATA ET_LOG LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF typ_01 OCCURS 0,
rel_code TYPE frgco,
END OF typ_01.
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE TEXT-001.
PARAMETERS: po_num LIKE ekko-ebeln, "采购订单号
rel_code TYPE frgco. "审批代码
SELECTION-SCREEN END OF BLOCK blk1.
SELECT SINGLE ekko~frgke
INTO gc_frgke
FROM ekko
WHERE ekko~ebeln = po_num.
IF gc_frgke = '1'.
ret_code = -1.
CONCATENATE : po_num '已经通过审核' INTO msg.
ELSE.
SELECT SINGLE ekko~frggr ekko~frgsx
INTO (gc_frggr,gc_frgsx)
FROM ekko
WHERE ekko~ebeln = po_num.
ENDIF.
IF ( gc_frggr IS NOT INITIAL ) AND ( gc_frgsx IS NOT INITIAL ).
REFRESH gt_t16fs.
CLEAR gt_t16fs.
SELECT *
INTO CORRESPONDING FIELDS OF TABLE gt_t16fs
FROM t16fs
WHERE t16fs~frggr = gc_frggr
AND t16fs~frgsx = gc_frgsx.
ELSE.
ret_code = -1.
msg = '未找到对应审批策略,请检查输入'.
EXIT.
ENDIF.
IF rel_code IS NOT INITIAL.
*CLEAR GC_NEW_STATUS.
*CLEAR GC_INDICATOR_NEW.
CALL FUNCTION 'BAPI_PO_RELEASE'
EXPORTING
purchaseorder = po_num
po_rel_code = rel_code
use_exceptions = 'X'
* NO_COMMIT = ' '
* IMPORTING
* REL_STATUS_NEW =
* REL_INDICATOR_NEW =
* RET_CODE =
* TABLES
* 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
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
WRITE: '审批成功' .
ENDIF.
ENDIF.