BAPI审批采购订单

* 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.

原文地址:https://www.cnblogs.com/lvdong18847870057/p/12422682.html