BAPI for Payment File Creation

Hello Dear Friends if you are looking for bali for payment file creation then here you will get the details for that BAPI.

What is BAPI for Payment File Creation?

Key BAPIs for Payment Processing

  1. BAPI_ACC_DOCUMENT_CHECK – Validates accounting documents
  2. BAPI_ACC_DOCUMENT_POST – Posts accounting entries
  3. BAPI_PAYMENTPROP_CREATE – Creates payment proposals
  4. BAPI_PAYMENT_CREATE – Generates payment files (ACH, SEPA, Wire Transfers)
  5. BAPI_PAYMENT_GETDETAIL – Retrieves payment details

ABAP Code Example

REPORT z_create_payment_file.

* Data Declarations
DATA:
  lv_company_code   TYPE bkpf-bukrs VALUE '1000',    " Company Code
  lv_payment_method TYPE reguh-rzawe VALUE 'C',      " Payment Method (C = Bank Transfer)
  lv_house_bank     TYPE reguh-hbkid VALUE 'BANK_US', " House Bank
  lv_account_id     TYPE reguh-hktid VALUE 'MAIN',   " Bank Account
  lv_payment_date   TYPE sy-datum,                   " Payment Date
  lv_payment_currency TYPE reguh-waers VALUE 'USD',  " Currency
  lv_payment_run_id TYPE fpayh-xvor,                 " Payment Run ID
  lv_payment_status TYPE c LENGTH 1,                 " Status
  lt_items          TYPE TABLE OF bapiaccap,         " Payment Items
  ls_item           TYPE bapiaccap,
  lt_return         TYPE TABLE OF bapiret2,          " Return Messages
  ls_return         TYPE bapiret2.

* Set payment date (today)
lv_payment_date = sy-datum.

* 1. Prepare Payment Items (Vendors/Invoices to Pay)
ls_item-vendor_no    = '100001'.       " Vendor Number
ls_item-invoice_doc  = '4500000123'.   " Invoice Document
ls_item-payment_amount = '1000.00'.    " Amount to Pay
ls_item-payment_currency = 'USD'.      " Currency
APPEND ls_item TO lt_items.
CLEAR ls_item.

ls_item-vendor_no    = '100002'.       " Another Vendor
ls_item-invoice_doc  = '4500000456'.
ls_item-payment_amount = '2500.50'.
ls_item-payment_currency = 'USD'.
APPEND ls_item TO lt_items.

* 2. Create Payment Proposal
CALL FUNCTION 'BAPI_PAYMENTPROP_CREATE'
  EXPORTING
    companycode      = lv_company_code
    paymentmethod   = lv_payment_method
    housebank       = lv_house_bank
    bankaccount     = lv_account_id
    paymentdate     = lv_payment_date
    currency        = lv_payment_currency
  IMPORTING
    paymentrunid    = lv_payment_run_id
  TABLES
    paymentitems    = lt_items
    return          = lt_return.

* Check for errors
READ TABLE lt_return WITH KEY type = 'E' TRANSPORTING NO FIELDS.
IF sy-subrc = 0.
  WRITE: / 'Error in Payment Proposal Creation:'.
  LOOP AT lt_return INTO ls_return WHERE type CA 'EAX'.
    WRITE: / ls_return-message.
  ENDLOOP.
  CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
  RETURN.
ENDIF.

* 3. Generate Payment File
CALL FUNCTION 'BAPI_PAYMENT_CREATE'
  EXPORTING
    paymentrunid    = lv_payment_run_id
    paymentdate     = lv_payment_date
  IMPORTING
    paymentstatus   = lv_payment_status
  TABLES
    return          = lt_return.

* Check payment status
IF lv_payment_status = 'S'.
  WRITE: / 'Payment File Generated Successfully.'.
  WRITE: / 'Payment Run ID:', lv_payment_run_id.
  
  * 4. Commit changes
  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
      wait = 'X'.
ELSE.
  WRITE: / 'Error in Payment File Creation:'.
  LOOP AT lt_return INTO ls_return WHERE type CA 'EAX'.
    WRITE: / ls_return-message.
  ENDLOOP.
  CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ENDIF.

Explanation of Key Steps

1. Setting Up Payment Data

  • lv_company_code: Your SAP company code (e.g., ‘1000’)
  • lv_payment_method: Payment method (C = Bank Transfer, T = Check)
  • lv_house_bank: House bank ID (configured in FI12)
  • lt_items: Contains vendor invoices to be paid

2.Creating Payment Proposal (BAPI_PAYMENTPROP_CREATE)

  • Validates payment items
  • Generates a Payment Run ID (lv_payment_run_id)

3. Generating Payment File (BAPI_PAYMENT_CREATE)

  • Creates the actual payment file (e.g., ACH, SEPA, Wire Transfer)
  • Returns status (S = Success, E = Error)

4. Commit/Rollback

  • BAPI_TRANSACTION_COMMIT finalizes the payment
  • BAPI_TRANSACTION_ROLLBACK cancels if errors occur

Leave a Comment