Skip to main content

Enhance SAP FBL1N, FBL3N & FBL5N: Add Custom Fields in 3 Easy Steps (ABAP Guide)

Enhance SAP FBL1N, FBL3N & FBL5N: Add Custom Fields in 3 Easy Steps (ABAP Guide)

Enhance SAP FBL1N, FBL3N & FBL5N: Add Custom Fields in 3 Easy Steps (ABAP Guide)

In SAP Financial Accounting (FI), line item reports such as FBL1N (Vendor Line Items), FBL3N (G/L Account Line Items), and FBL5N (Customer Line Items) are heavily used. Business users often require custom fields in these reports. This guide explains how to add custom fields step by step with ABAP.

Step 1: Append Structure to RFPOSX

Extend the standard structure RFPOSX by appending your custom fields.

Step 2: Run Program RFPOSXEXTEND

Execute program RFPOSXEXTEND to regenerate the structure and make the appended fields available in the FBL reports.

Step 3: Implement BADI FI_ITEMS_CH_DATA

Implement BADI FI_ITEMS_CH_DATA and enhance method CHANGE_ITEMS to fill the new custom fields.

ABAP Code Example


METHOD if_ex_fi_items_ch_data~change_items.
  CONSTANTS : lc_fbl1n TYPE tcode VALUE 'FBL1N'.
  CONSTANTS : lc_fbl3n TYPE tcode VALUE 'FBL3N'.
  CONSTANTS : lc_fbl5n TYPE tcode VALUE 'FBL5N'.

  IF sy-tcode = lc_fbl1n.
    LOOP AT ct_items ASSIGNING FIELD-SYMBOL(<fs_items>).
      IF NOT <fs_items>-konto IS INITIAL.
        SELECT CONCAT( adrc~name1, adrc~name2 )
          FROM adrc
          INNER JOIN lfa1 ON adrc~addrnumber = lfa1~adrnr
          WHERE lfa1~lifnr = @<fs_items>-konto
          INTO @<fs_items>-zvend_name UP TO 1 ROWS.
        ENDSELECT.
      ENDIF.
      SELECT SINGLE txt50 FROM skat INTO <fs_items>-zhkontnm
        WHERE ktopl = '2000' AND saknr = <fs_items>-hkont AND spras = 'E'.
    ENDLOOP.
  ENDIF.

  IF sy-tcode = lc_fbl5n.
    LOOP AT ct_items ASSIGNING <fs_items>.
      IF NOT <fs_items>-konto IS INITIAL.
        SELECT CONCAT( adrc~name1, adrc~name2 )
          FROM adrc
          INNER JOIN kna1 ON adrc~addrnumber = kna1~adrnr
          WHERE kna1~kunnr = @<fs_items>-konto
          INTO @<fs_items>-zcust_name UP TO 1 ROWS.
        ENDSELECT.
      ENDIF.
      SELECT SINGLE txt50 FROM skat INTO <fs_items>-zhkontnm
        WHERE ktopl = '2000' AND saknr = <fs_items>-hkont AND spras = 'E'.
    ENDLOOP.
  ENDIF.

  IF sy-tcode = lc_fbl3n.
    LOOP AT ct_items ASSIGNING <fs_items>.
      SELECT SINGLE txt50 FROM skat INTO <fs_items>-zhkontnm
        WHERE ktopl = '2000' AND saknr = <fs_items>-hkont AND spras = 'E'.
      IF NOT <fs_items>-konto IS INITIAL.
        SELECT SINGLE txt50 FROM skat INTO <fs_items>-zsaknrnm
          WHERE ktopl = '2000' AND saknr = <fs_items>-konto AND spras = 'E'.
      ENDIF.
    ENDLOOP.
  ENDIF.
ENDMETHOD.
  

Best Practices

  • Always use append structure instead of modifying standard objects.
  • Run RFPOSXEXTEND after appending fields to regenerate structures.
  • Optimize SELECT queries to avoid performance bottlenecks.
  • Use SPRSL for language-dependent texts.

Conclusion

By appending structure RFPOSX, running program RFPOSXEXTEND, and implementing BADI FI_ITEMS_CH_DATA, you can successfully add custom fields to reports FBL1N, FBL3N, and FBL5N. This enhancement ensures upgrade safety, flexibility, and fulfills business requirements effectively.

Comments

Popular posts from this blog

PHP MySql CRUD Dengan Konsep MVC

Pada postingan kali ini saya akan sharing cara membuat CRUD dengan php menggunakan konsep MVC, ok langsung saja buka code editor (saya menggunakan sublime text) dan buat folder baru dengan nama phpmvc didalam folder htdocs kalian dan tambah folder seperti berikut :  Setelah itu kita siapkan database di mysql, buat database dengan nama phpmvc dan tablenya seperti gambar berikut : tambahkan file config.php didalam folder app/config : <?php define('BASEURL', 'http://localhost:8181/phpmvc/public'); define('DB_HOST', 'localhost'); define('DB_USER', 'root'); define('DB_PASS', ''); define('DB_NAME', 'phpmvc'); kemudian tambahkan 3 file controller didalam folder app/controllers, yaitu Home, About, dan Mahasiswa : Home.php <?php class Home extends Controller { public function index() { $data['nama'] = $this->model('User_model')->getUser()...

Cara Sederhana Multi Insert Data Dengan PHP - MySQL

Pada postingan kali ini saya akan share cara melakukan insert lebih dari satu data dengan menggunaka PHP- Jquery dan MySQL. Pertama buat database di MySQL dan table, disini saya membuat database dengan nama db_latihan dan table dengan nama t_barang dengan struktur table seperti berikut : Setelah membuat database dan table selanjutnya membuat project PHP, project PHP nya saya buat dengan nama multi-insert, lalu didalam folder ini saya membuat dua file yaitu index.php dan insert.php . Source code index.php seperti berikut : <! doctype   html > < html   lang = "en" >    < head >      <!-- Required meta tags -->      < meta   charset = "utf-8" >      < meta   name = "viewport"   content = "width=device-width, initial-scale=1" >      <!-- Bootstrap CSS -->      < link ...

IT Asset Management Dengan PHP MySQL

Pada postingan kali saya akan share sebuah aplikasi IT Asset management yang fungsinya untuk memonitoring semua Asset khusus IT, contohnya : Laptop/komputer , Printer, Router, Hardisk, dll. Dalam aplkasi ini kita bisa mengetahui Asset IT posisinya dimana dan digunakan oleh siapa. untuk data-data yang dibutuhkan antara lain : 1. data kategori asset dalam menu ini kita bisa meng-input jenis2 kategory asset : tambah kategori asset : 2. data department 3. data karyawan 4. data department per karyawan 5. data asset location  6. data satuan asset dan untuk transaksi yang ada dalam aplikasi ini adalah,  1. create asset, pada menu create asset ini kita akan mengalokasikan sebuah asset ke karyawan/personnel tampilannya seperti berikut: setelah klik tombol save akan muncul seperti dibawah : untuk melihat detail asset yang sudah dibuat tadi, kita bisa pilih...