BTE in ‘Payment Run’ and ‘Dunning’
In this blog post I would like to share basic knowledge on BTE in technical point of view.
You will find several blogs on BTEs, while implementing BTE for Payment run and Dunning I must go through all those links to get a basic idea on how payment run and dunning works. So, I thought of posting this blog where we would find all the basic points at one place.
- Enhancement Techniques in SAP ABAP in FI Module.
- What is BTE?
- How to find BTE?
- Steps to implement BTE
- Basic idea on Automatic payment run report.
- How to find report for Automatic payment run and technical flow of “RFFOAVIS_DD_PRENOTIF”
- BTE for Email in “AUTOMATIC PAYMENT RUN F110”
- BTE For Splitting spool in “AUTOMATIC PAYMENT RUN F110”
- What is Dunning?
- BTE to call Dunning Notice Form
Enhancement Techniques in SAP ABAP in FI Module:
Like user-exit, badi and enhancements in SD module, we have two important enhancement technics in FI module in SAP ABAP.
- Substitution user-exits
- BTE (Business Transaction Events)
In this blog I am going to give a basic idea on role of BTE in “PAYMENT RUN” and “DUNNING” from technical point of view.
BTE (BUSINESS TRANSACTION EVENTS)
- BTE is one of the enhancement techniques available in SAP that can be used by SAP, third party vendor(partner) and customer.
- BTEs are generally found in the general ledger accounting (FI-GL), account receivable and payable (FI-AR and FI-AP) and sales and distribution components.
- A BTE has a predefined interface and allows you to attach additional functionality in the form of a service function module.
- The BTE is called by the SAP standard program by a call to function OPEN_FI_PERFORM_ or OUTBOUND_CALL_. This function checks if there are any active BTEs according to customizing.
According to its Interface there are 2 types of BTEs:
- Publish & Subscribe interfaces: Cannot update data it is possible to have multiple implementations These interfaces inform external software that certain events have taken place in an SAP standard application and provide them with the data produced. The external software returns no data to the SAP Standard System. They do not influence the standard R/3 program in any way.
- Process interfaces: Can update data, only one active implementation. These interfaces are used to control a business process differently than the way in which it is handled in the standard R/3 System. They intervene in the standard process and return data to the SAP application.
How to Find BTE:
P/S: If we need BTE corresponding to Publish and subscribe interface, click on (INFO SYSTEM P/S).
Select A (Application Component) and execute. We will get all the related BTEs for (Posting Document, Change Document, Customer Balances, Customer master, Dunning, Payment Methods Etc.)
Select the BTE for which functionality you are looking for and click on “Pattern Function Module”
Below SE37 Screen will get opened along with the function module name
Check if you have the required variables in importing parameters. If yes, copy the function module into Z function module and do necessary changes.
Similarly, for Process interface.
BTE in Automatic Payment Run:
Automatic Payment Run: (F110) Main tables are (REGUH – Header table and REGUP-Item table)
Initial screen of F110 looks like as below:
Payment run will be scheduling on posting date to docs entered upto date for company code and customer or vendor level selection.
If we observe in the above screen shot, run is scheduled from posting date to Docs entered up to date for company code and customer. Which means , all the payments till “doc entered up to date” of mentioned customer in the company code respective to mentioned payment method will be executed .
How to find the report name in payment run:
In the Print out / output medium tab we will be mentioning the report with the variant.
Here in my example, I will take the report “RFFOAVIS_DD_PRENOTIF “.
Flow of “RFFOAVIS_DD_PRENOTIF “:
For Payment runs, we have standard function module “FI_PDF_ADVICE_OUTPUT” which calls our adobe form or smart form which is mentioned in the report. The sequence in which our form is being triggered is already handled by standard report ““RFFOAVIS_DD_PRENOTIF “.
The form name will be captured in the variables “PAR_AFOR” “PAR_APDF”.
If we closely observe report “RFFOAVIS_DD_PRENOTIF “, we have loop in which at new ZBUKR, VBLNR being called. Which means for each company code, for each customer, our form will be triggered.
In other words, if a company code has three customers with three accounting documents each, then we will have three forms with three line items in it.
If we closely observe FM “FI_PDF_ADVICE_OUTPUT” it is automatically calling our adobe form. Here it is enough for a technical person to create form and interface and to have his code in code initialization. While declaring parameters in adobe interface we should declare like the parameters in the FM. All the header and item values will be automatically available, so we need not write any select queries to get data.
Practical examples to implement BTE:
Email Sending functionality for Payment run F110:
We have already discussed how to find BTE above.
Since I need data to be updated, I have chosen Process interface.
I found BTE 2040 suitable for my development as I have REGUH (payment header table in import parameter and FINAA as output parameter where we pass the email id to send email
If you see FINAA table, you have INTAD where you can pass email address.
So, I have found the BTE which need to be implemented.
Now let’s see the implementation steps.
Steps to implement the BTE
For each BTE we have to create a product and activate it.
Here if you check the check box it means it is activated.
Then goto Process interface and click on customer. Here, “ of an SAP application” containes all the standard implementation already done in the system. And for futher implementations we need to chose patner or customer depending on our requirement.
Senerio 2: Place PDF output in AL11
We have already seen the flow of standard report “RFFOAVIS_DD_PRENOTIF”. Sequence of execution is as below:
OPEN_FI_PERFORM_00002040_P (BTE 2040 already discussed)
OPEN_FI_PERFORM_00002050_P (BTE 2050 discussed below)
FI_PDF_ADVICE_OUTPUT (Calling our Form and creating spool number with content in it)
After this end loop we will all the spool details with the content in it . we have to read this spool and place it in AL11 path.
Please refer my blog to know how to place adobe form in AL11
Since we are getting spool details at the end of “ENDLOOP”, we get all the documents for all the customers in a company code into same spool. But we must get each document in each spool according to our requirement. So, we must split the spool. For this we have BTE 2050.
If we see the function module of BTE 2050 we have following parameters
For NACHA = 1, we can pass “X” to C_ITCPO_TDNEW so that we get new spools for every document.
What is dunning?
In SAP FI, Dunning plays a vital role in Accounts receivables. Dunning is like reminder notice to our business partners for their overdue/open items or outstanding balances.
Dunning letter summarizes overdue invoices record and asks for payment to be made. We configure dunning program for accounts receivable and accounts payable.
Dunning Program includes following configuration steps:
- Dunning procedure
- Dunning level
- Dunning Areas
Dunning procedure controls the path of dunning to the customer and vendor through the system. We can define our own dunning procedure as per our convenience. Transaction code: FBMP.
Dunning level defines dunning text; maximum nine dunning levels are available. As the dunning level increases, text will also change as consistent to make payment.
Dunning area means the client/company/company code in which we are working on dunning program.
If we don’t want to run dunning program at company code level then we can also run dunning program at organizational level like, sales organization.
Initial screen of Dunning looks as below:
In The above screen Dunning is performed in the date 1st sep 2019 for the company code and customer for the dates between dunning date and dunning posted date. Dunning posted date can be of any future date. All the dues within these dates for corresponding company code and customer will be executed.
Each dunning notice depend on the dunning procedure. Dunning procedure is nothing but after how many days dunning notice should be sent. It can be for 10 days or 20 days etc.
These are configured in FBMP Transaction. Form name is also configured in the dunning procedure level.
Go to FBMP, List of dunning procedures will get displayed.
Double click on any procedure, here number of days, total due items etc are maintained.
Click on Dunning text button, we find our form name here for respective dunning levels.
Function module to call above maintained form is configured in BTE 1720.
Since it will not update any data, it will be under P/S module interface.
Hope, you got a basic idea on usage of BTEs in Dunning and payment run.