Technical Articles
5 Easy Steps to Add New Line Item Fields to FBL1N
Introduction:
A common request from users of FBL1N (Vendor Line Items) is to include additional columns of data in the “Column Set” that can be selected when creating or maintaining a line layout variant. These requests come when neither the base list nor the special fields list have the data needed; i.e., user needs data from another table.
FBL1N – Vendor Line Items (Accounting > Financial Accounting > Accounts Payable > Account)
This blog outlines five easy steps to add fields to structure RFPOSXEXT; thus, adding to the list of fields available in the line layout variants of FBL1N (Vendor Line Items), FLB3N* (G/L Line Items), and FBL5N (Customer Line Items). In addition, the blog shows how to use a BAdI to populate these additional fields with data. This is my preferred method. There are other ways to accomplish the same; namely via a Business Transaction Event (BTE). If you would like to review the BTE approach, then an example is provided in blog “Vendor code addition in FBL3N report using Business Transaction Events (BTE).” There is also a video from Lukman Hakim on the BTE approach: “SAP ABAP : Adding Fields to Transaction FBL1N , FBL3N & FBL5N.”
As you read this, keep in mind that RFPOSX (Line Item Data) is the base structure for line items in transactions FBL1N, FBL3N, and FBL5N. Between RFPOSX and the table entries in T021S (Line Layout Variant Special Fields), structure RFPOSXEXT is generated. RFPOSXEXT is used for displaying line items in these transactions.
* Important FBL3N note: Most companies are using the New GL. In that case, GL account line item display would be done via transaction FAGLL03, not FBL3N. Click here to read documentation on adding fields to FAGLL03.
The below example will demonstrate adding Vendor Name to the Layout Column Set, and then populating it with data from LFA1 (Vendor Master) via a BAdI when Tcode FBL1N is used.
Intended Audience:
SAP Business Analyst, Configuration Specialist, ABAP Programmer
Prerequisites:
For some good background, please read the following OSS Notes:
- 984305 – Line item: Definition of special fields (T021S)
- 1323512 – Line items: BADI FI_ITEMS_CH_DATA
Steps:
Step 1: Add Append Structure to RFPOSX structure
- Go to Tcode SE11
- Enter structure RFPOSX
- Click on Display button
- Click on Append Structure button
- Click on Create icon
- Provide an Append Name; e.g., ZZADD_FIELDS
- Click Continue icon
- Add Component(s). In this example, just one… ZVEND_NAME.
- Save and Activate
Step 2: Extend structure RFPOSXEXT
- Go to Tcode SA38 or SE38
- Execute program RFPOSXEXTEND
- Click Yes button to extend the structure
- Confirm the extension worked
- Go to Tcode SE11
- Enter structure RFPOSXEXT
- Click on Display button
- Search for Component ZVEND_NAME
Once Step 2 is complete, “Vendor Name 1” will now be visible in the layout Column Set; however, even if added to the screen, no data will appear. Steps 3 and 4 are required to populate the ZVEND_NAME field with data.
Step 3: Create an implementation of FI_ITEMS_CH_DATA
- Go to Tcode SE18
- Menu > Enhancement Implementation > Create
- Add Name of enhancement
- Add Short Text
- Save/Activate
Step 4: Add code to CHANGE_ITEMS method
Step 5: Update layout(s) in FBL1N to include “Vendor Name 1”
- Go to transaction FBL1N
- Execute report
- Create or update layout to include “Vendor Name 1”
- Save
- “Vendor Name” now appears in the report
Conclusion:
If fields from tables other than what can be provided by the Special Fields table (T021S) are needed in FBL1N, then the above steps are simpler and easier than a BTE (in my opinion). As mentioned above, these steps can also be carried out for FBL5N. The steps can also be used for FBL3N if you are not yet using the New GL; otherwise, follow the link above for changing FAGLL03.
Let me know if you liked this blog, and please reply with questions and comments. Thank you.
First of all, thank you for this article. It's pretty clear and easy to implement. It's all working properly except when running fbl1n in the background. In this scenario the vendor name field won't get populated. Would you have any advice that would point me in the right direction to sort this out?
Regards.
Hi,
i can understand your issue. when you run in the backgroun, system cant take the transaction as FBL1N. in that case , you can give program name in the validation other than transaction.
Regards,
Kishor Gudia.
Thanks for sharing!
Very clear and it was what I need!
Regards
Excellent
thanks
Well documented and useful blog, thank you for your contribution.
Thanks for Excellent document. please guide me how to display PO field in FBL1N report?. I can see Purchase Do no in FBL1N but PO no is not showing please help me how to over come this.
I followed the steps as per the video and I see the vendor name
in the FBL1N report but it's bank and name is not displayed. Any guidance on this is appreciated.
I need to do the same for customer name. please advise whether i need to use the same structure name with table KNA1 for customer name.
Thank you.
That was easy to implement!
I just got a little bit scared when my imported transport had RC 8.
This was the case, because you first need to run report RFPOSXEXTEND in the target system and then you can re-import again.
So I recommend to have two transports: One for the change of structure RFPOSX (after the import you need to run RFPOSXEXTEND) and one for the BAdI implementation.