Implement BADI_ACC_DOCUMENT for Enabling Parameter Extention2 in BAPI_ACC_DOCUMENT_POST

BAPI_ACC_DOCUMENT_POST biasanya digunakan untuk create document FI seperti GL, AP, dan AR (TCode F-02). Pada BAPI ini, terdapat parameter table EXTENTION2 yang bisa digunakan untuk melempar data yang field-nya tidak disediakan oleh BAPI BAPI_ACC_DOCUMENT_POST, seperti field Ref. Key 1 Header (BKPF-XREF1_HD), atau pun untuk kebutuhan mengubah posting key dari jurnal yang akan dibuat.

Namun, parameter EXTENTION2 ini baru akan berfungsi apabila BADI_ACC_DOCUMENT sudah diimplementasikan. Berikut adalah step untuk implement BADI_ACC_DOCUMENT:

  • Copy class CL_EXM_IM_ACC_DOCUMENT menjadi custome class YCL_EXM_IM_ACC_DOCUMENT via SE24. Activate.
  • Jalankan TCode SE19 dan create BADI_ACC_DOCUMENT pada bagian Create Implementation>>New Badi.
  • Tuliskan custome name Enhancement Implementation BAdI-nya beserta Composite Enhancement Implementation (bila belum ada composite-nya maka create terlebih dahulu.

create-badi

  • Masukan nama custome BAdI pada step3 dan nama custom class pada step1, serta pilih nama BAdI Definitioan = BADI_ACC_DOCUMENT.

create-badi2

    • Save & Activate.

create-badi3

    • Pada Tab Technical, double click custom class untuk custom coding BAdI sesuai requeirement.

create-badi4

create-badi5

    • Double click methode ~CHANGE untuk mulai melakukan coding.

create-badi6

  • Save & Activate

Pada ABAP program, passing parameter extension2 sebegai berikut

  DATA:  ld_header LIKE bapiache09,
         ld_objkey LIKE bapiache09-obj_key,
         lt_gl     LIKE bapiacgl09 OCCURS 0 WITH HEADER LINE,
         lt_ap     LIKE bapiacap09 OCCURS 0 WITH HEADER LINE,
         lt_amt    LIKE bapiaccr09 OCCURS 0 WITH HEADER LINE,
         lt_ext    LIKE bapiparex OCCURS 0 WITH HEADER LINE,
         lt_ret    LIKE bapiret2 OCCURS 0 WITH HEADER LINE,
         ld_itemno LIKE bapiacgl09-itemno_acc,

  CONSTANT: c_struct TYPE TE_STRUC VALUE 'XREF1_HD'.

    CLEAR lt_ext.
    ADD 1 TO ld_itemno.
    lt_ext-structure   = c_struct.
    lt_ext-valuepart1  = ld_itemno.
    lt_ext-valuepart2  = 'Test Ref Key Header'.
    APPEND lt_ext.

    CLEAR lt_ext.
    ADD 1 TO ld_itemno.
    lt_ext-structure   = c_struct.
    lt_ext-valuepart1  = ld_itemno.
    lt_ext-valuepart2  = 'Test Ref Key Header'.
    APPEND lt_ext.

*isi parameter ld_header, lt_gl, lt_amt sesuai requirement.
    CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
      EXPORTING
        documentheader = ld_header
      IMPORTING
        obj_key        = ld_objkey
      TABLES
        accountgl      = lt_gl
        accountpayable = lt_ap
        currencyamount = lt_amt
        return         = lt_ret
        extension2     = lt_ext
      EXCEPTIONS
        OTHERS         = 1.

    IF ld_objkey IS INITIAL OR ld_objkey EQ '$'.
      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    ELSE.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          wait = 'X'.
    ENDIF.

Sedangkan pada method CHANGE lakukan coding sebagai berikut:

  DATA: wa_extension   TYPE bapiparex,
        wa_accit       TYPE accit,
        ld_posnr       TYPE posnr_acc.

  LOOP AT c_extension2 INTO wa_extension.
    ld_posnr = wa_extension-valuepart1.
    READ TABLE c_accit WITH KEY posnr = ld_posnr
          INTO wa_accit.
    IF sy-subrc IS INITIAL.
      IF wa_extension-structure = 'XREF1_HD'.
        wa_accit-xref1_hd = wa_extension-valuepart2.
        MODIFY c_accit FROM wa_accit index sy-tabix TRANSPORTING xref1_hd.
      ENDIF.
    ENDIF.
  ENDLOOP.
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s