Skip to Content
Technical Articles
Author's profile photo Brian Atkinson

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:

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.

Assigned Tags

      8 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Fernando Suarez
      Fernando Suarez

      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.

      Author's profile photo kishor sahu
      kishor sahu

      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.

      Author's profile photo Vitor Matos Quintão
      Vitor Matos Quintão

      Thanks for sharing!

      Very clear and it was what I need!

      Regards

      Author's profile photo madjid khanevadegi
      madjid khanevadegi

      Excellent

       

      thanks

      Author's profile photo Clive Robertson
      Clive Robertson

      Well documented and useful blog, thank you for your contribution.

      Author's profile photo Venkatakasi Reddy Polu
      Venkatakasi Reddy Polu

      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.

      Author's profile photo vijaya krishna
      vijaya krishna

      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.

       

      Author's profile photo Thorsten Kolz
      Thorsten Kolz

      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.