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
BAPI_ACC_DOCUMENT_CHECK
– Validates accounting documentsBAPI_ACC_DOCUMENT_POST
– Posts accounting entriesBAPI_PAYMENTPROP_CREATE
– Creates payment proposalsBAPI_PAYMENT_CREATE
– Generates payment files (ACH, SEPA, Wire Transfers)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 paymentBAPI_TRANSACTION_ROLLBACK
cancels if errors occur