BAPI_INCOMINGINVOICE_CANCEL usage

2380 ワード

The BAPI is equivalent to Tcode MR8M
CLASS mr8m DEFINITION.
  PUBLIC SECTION.
    CLASS-METHODS: cancel IMPORTING pt_belnr  TYPE mblnr
                                    pt_gjahr  TYPE gjahr
                                    pt_stgrd  TYPE stgrd
                                    pt_budat  TYPE budat
                          EXPORTING et_belnr  TYPE mblnr
                                    et_gjahr  TYPE gjahr
                                    et_return TYPE string.
ENDCLASS.                    "MR8M DEFINITION
CLASS mr8m IMPLEMENTATION.
  METHOD cancel.
    DATA: l_returns TYPE STANDARD TABLE OF bapiret2,
          l_return  TYPE bapiret2.
*Cancel invoice document
    IF pt_budat IS NOT INITIAL.
      CALL FUNCTION 'BAPI_INCOMINGINVOICE_CANCEL'
        EXPORTING
          invoicedocnumber          = pt_belnr
          fiscalyear                = pt_gjahr
          reasonreversal            = pt_stgrd
          postingdate               = pt_budat
        IMPORTING
          invoicedocnumber_reversal = et_belnr
          fiscalyear_reversal       = et_gjahr
        TABLES
          return                    = l_returns[].
    ELSE.
      CALL FUNCTION 'BAPI_INCOMINGINVOICE_CANCEL'
        EXPORTING
          invoicedocnumber          = pt_belnr
          fiscalyear                = pt_gjahr
          reasonreversal            = pt_stgrd
        IMPORTING
          invoicedocnumber_reversal = et_belnr
          fiscalyear_reversal       = et_gjahr
        TABLES
          return                    = l_returns[].
    ENDIF.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait = 'X'.
    CLEAR et_return.
*Return error message if error encountered
    LOOP AT l_returns INTO l_return.
      IF et_return IS INITIAL.
        et_return = l_return-message.
      ELSE.
        CONCATENATE et_return ';' l_return-message INTO et_return.
      ENDIF.
    ENDLOOP.
  ENDMETHOD.                    "CANCEL
ENDCLASS.                    "MR8M IMPLEMENTATION