[SAP] – Menambahkan Informasi Local Currency pada “BAPI_ACC_DOCUMENT_POST”

Saat memposting dokumen Finance kebanyakan transaksi tanpa mencantumkan / mengeset nilai dari “Local Currency”, case ini saya dapatkan ketika support salah satu projek, dimana ada kebutuhan user dapat mengeset value dari dokumen currency dan local currency, dengan menambahkan fungsi pada program mass upload yang telah dibuat sebelumnya.

Untuk dapat melakukan hal tersebut pada  BAPI_ACC_DOCUMENT_POST, maka perlu ditambahkan set value pada beberapa kondisi inputan pada currency ammount.

1.BAPI dengan kondisi inputan yang perlu di set ulang untuk mengakomodasi kebutuhan (kotak orange)

2. Cek di mana nilai setting key “local currency” pada structure dan data element & domain.

Pada gambar 2 Point 3, didapatkan nilai yang dapat diset pada currencyamount, dimana berarti jika akan mengirimkan 2 data (dokument currency dan lokal currency, berarti perlu 2 setting value). 
Adapun nilai-nilai currency type yang disediakan yakni.

Dikarenakan kebutuhan upload untuk menambahkan informasi Local Currency, dan Document Currency yang sudah ada sebelumnya, maka pada tab currencyammount perlu ditambahkan Currency Type dengan value 10. 

Pada inputan currency amount, perlu memasukkan 2 line item per masing-masing item (dengan value currency type 00  sebagai document currency, dan value 10 sebagai local currency, dengan value uang tetap dimasukkan pada AMT_DOCCUR.

Berikut adalah code pada sisi collect items. (disini untuk masuk condition diberi if local currency is not initial, karena pada case di hcml tidak selalu digunakan (special case))

===========================================
FORM f_mapping_item  TABLES   p_accgl STRUCTURE bapiacgl09
                              p_accpyb STRUCTURE bapiacap09
                              p_accrcv STRUCTURE bapiacar09
                              p_curr STRUCTURE bapiaccr09
                              p_ext1 STRUCTURE bapiacextc
                     USING    p_disp LIKE LINE OF gi_disp
                     CHANGING p_count TYPE i.

  DATA : lv_pos   TYPE zde_pos.

  IF p_disp-koart = ‘S’.  “maka dia GL
    “account GL
    ADD 1 TO p_count.
    p_accgl-itemno_acc     = p_count.
    p_accgl-gl_account     = p_disp-ktonr.
    p_accgl-item_text      = p_disp-sgtxt.
    p_accgl-alloc_nmbr     = p_disp-zuonr.
    p_accgl-tax_code       = p_disp-mwskz.
    p_accgl-profit_ctr     = p_disp-prctr.
    p_accgl-ref_key_3      = p_disp-xref3.
    p_accgl-orderid        = p_disp-orderid.
    p_accgl-func_area_long = p_disp-func_area.

    IF p_disp-stodt IS NOT INITIAL.
      CONCATENATE gv_stodt p_disp-stodt INTO p_ext1-field1 SEPARATED BY ‘-‘.
      CONDENSE p_ext1-field1 NO-GAPS.
      APPEND p_ext1 TO gi_ext1.
    ELSEIF p_disp-pernr IS NOT INITIAL.
      CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_INPUT’
        EXPORTING
          input  = p_disp-pernr
        IMPORTING
          output = p_accgl-person_no.

      CLEAR : lv_pos.
      CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_INPUT’
        EXPORTING
          input  = p_accgl-itemno_acc
        IMPORTING
          output = lv_pos.

      CONCATENATE lv_pos p_accgl-person_no INTO p_ext1-field1 SEPARATED BY ‘-‘.
      CONDENSE p_ext1-field1 NO-GAPS.
      APPEND p_ext1 TO gi_ext1.
    ENDIF.

    IF p_disp-cotype EQ ‘C’.
      p_accgl-costcenter   = p_disp-coobj.
    ELSEIF p_disp-cotype EQ ‘O’.
      p_accgl-orderid      = p_disp-coobj.
    ELSEIF p_disp-cotype EQ ‘W’.
      p_accgl-wbs_element  = p_disp-coobj.
    ENDIF.

    APPEND p_accgl TO gi_accgl.



  ELSEIF p_disp-koart = ‘K’.  “maka dia Payable
    “Payable
    ADD 1 TO p_count.
    p_accpyb-itemno_acc  = p_count.
    p_accpyb-vendor_no   = p_disp-ktonr.
    p_accpyb-item_text   = p_disp-sgtxt.
    p_accpyb-alloc_nmbr  = p_disp-zuonr.
    p_accpyb-bline_date  = p_disp-zfbdt.
    p_accpyb-tax_code    = p_disp-mwskz.
    p_accpyb-profit_ctr  = p_disp-prctr.
    p_accpyb-ref_key_3   = p_disp-xref3.
    p_accpyb-sp_gl_ind   = p_disp-umskz.
    p_accpyb-partner_bk  = p_disp-partner_bt.

    APPEND p_accpyb TO gi_accpyb.

  ELSEIF p_disp-koart = ‘D’.  “maka dia Receivable
    “Receivable
    ADD 1 TO p_count.
    p_accrcv-itemno_acc  = p_count.
    p_accrcv-customer    = p_disp-ktonr.
    p_accrcv-item_text   = p_disp-sgtxt.
    p_accrcv-alloc_nmbr  = p_disp-zuonr.
    p_accrcv-tax_code    = p_disp-mwskz.
    p_accrcv-profit_ctr  = p_disp-prctr.
    p_accrcv-ref_key_3   = p_disp-xref3.

    APPEND p_accrcv TO gi_accrcv.

  ENDIF.

  p_curr-itemno_acc      = p_count.
  p_curr-currency        = p_disp-waers.
  IF p_curr-currency = c_idr.
    p_curr-amt_doccur      = p_disp-wrbtr * gv_factor.
  ELSE.
    p_curr-amt_doccur      = p_disp-wrbtr.
  ENDIF.
  p_curr-exch_rate       = p_disp-kursf.

  APPEND p_curr TO gi_curr.

  “Additional for case document currency & lokal currency 
  IF p_disp-dmbtr IS NOT INITIAL.
    p_curr-itemno_acc      = p_count.
    p_curr-curr_type       = c_curtp.
    p_curr-currency        = p_disp-hwaer.
    IF p_curr-currency = c_idr.
      p_curr-amt_doccur      = p_disp-dmbtr * gv_factor.
    ELSE.
      p_curr-amt_doccur      = p_disp-dmbtr.
    ENDIF.
    p_curr-exch_rate       = p_disp-kursf.

    APPEND p_curr TO gi_curr.
  ENDIF.
ENDFORM. 

==================================

Dengan adanya maintain 00 document currency dan 10 local currency, maka dokument dapat terbentuk salah satu contohnya sebagai berikut.

Hal ini dapat juga untuk set value amount 0, sebagai berikut (case kedua)

DONE

Demikian sharing singkat dari saya terkait case untuk dapat menginputkan value document currency dan local curency, serta set nilai 0. Jika ada yang perlu didiskusikan, dapat comment di bawah ya, atau email : yudho.guritno@gmail.com

TerimaKasih dan SemogaBermanfaat,
Salam.
GuritnoY
Senior SAP Abap
https://www.linkedin.com/in/guritno-yudho-wibowo-95944236/

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *