Skip to Content
Technical Articles

Change financial document using function module FI_DOCUMENT_CHANGE

Introduction

Financial accounting documents are updated online via transactions FB02 (change document) / FB09 (change line item) or Fiori apps such as Manage Journal Entries. Certain business cases require the documents to be changed via interface (from file or other source). When changing accounting documents via interface and not directly online in your SAP environment, the function module FI_DOCUMENT_CHANGE can be used. In this blog post I share a test program to change a financial document using function module FI_DOCUMENT_CHANGE.

 

Test program to change FI document using function module FI_DOCUMENT_CHANGE

*&---------------------------------------------------------------------*
*& Report ZTEST
*&---------------------------------------------------------------------*
*& Test program: Update FI document
*&---------------------------------------------------------------------*
report ztest.

* Constants document to be changed - TO BE CHANGED
constants:
  lc_bukrs type bukrs      value 'BEN0',
  lc_belnr type belnr_d    value '0560000096',
  lc_gjahr type gjahr      value '2017',
  lc_buzei type buzei      value '001'.


* Constants
constants:
  lc_k     type koart      value 'K',              " Vendor Account Type
  lc_gname type eqegraname value 'BKPF',           " Elementary Lock of Lock Entry (Table Name)
  lc_zuonr type char05     value 'ZUONR'.          " Field name for assignment at line item


* Variables
data: lv_garg  type eqegraarg.                     " Argument String of Lock Entry

* Structures
data: ls_accchg     type accchg.                   " Changing FI Document Work Area

* Tables
data:
  lt_accchg type standard table of accchg,         " Changing FI Document
  lt_enq    type standard table of seqg3.          " Lock entry details

*     Filling the fields to be changed
ls_accchg-fdname = lc_zuonr.
ls_accchg-newval = 'TEST UPDATE'.              " New value assignment field - TO BE CHANGED
append ls_accchg to lt_accchg.

** UPDATE FI DOCUMENT
if lt_accchg is not initial.
*     Check if there is lock on document before proceeding
  call function 'ENQUEUE_READ'
    exporting
      gclient               = sy-mandt
      gname                 = lc_gname             " BKPF
      garg                  = lv_garg
    tables
      enq                   = lt_enq
    exceptions
      communication_failure = 1
      system_failure        = 2
      others                = 3.

  if sy-subrc eq 0 and lt_enq is initial.

*     Call the FM to update the FI document
    call function 'FI_DOCUMENT_CHANGE'
      exporting
        i_bukrs              = lc_bukrs
        i_belnr              = lc_belnr
        i_gjahr              = lc_gjahr
        i_buzei              = lc_buzei
      tables
        t_accchg             = lt_accchg
      exceptions
        no_reference         = 1
        no_document          = 2
        many_documents       = 3
        wrong_input          = 4
        overwrite_creditcard = 5
        others               = 6.

    if sy-subrc = 0.
*       Commit the changes
      call function 'BAPI_TRANSACTION_COMMIT'
        exporting
          wait = 'X'.
    endif.
  endif.
endif.

 

Conclusion

Function module FI_DOCUMENT_CHANGE can be used to update financial accounting documents in your SAP environment.

 

Useful reference

Knowledge base article 2713775: https://launchpad.support.sap.com/#/notes/2713775

2 Comments
You must be Logged on to comment or reply to a post.
  • Thanks for sharing! It’s funny how SAP sets the FM to “not released” but then writes a KBA on it. 🙂

    Note: you don’t need to use [ ] here for internal tables. That would apply if you declared a table with header line but, thankfully, it’s not the case.