Enterprise Resource Planning Blogs by Members
Gain new perspectives and knowledge about enterprise resource planning in blog posts from community members. Share your own comments and ERP insights today!
cancel
Showing results for 
Search instead for 
Did you mean: 
Standard  FBL5N fetches the customer line item display based on posting date. When there is a requirement to fetch customer line items based on document date, a custom enhancement needs to be developed.

To make them work according to document date (To fetch records based on BLDAT-Document date) enhancement needs to be developed in the logical database.The logical database holds all the structures. Here we cannot enhance the structures and nodes directly. Only the source code program of the database can only be enhanced.



By using submit functionality (passing vendor,open items date) in  custom z reports ,records based on the posting date will only be fetched. But in order to fetch open items based on document date(BLDAT), enhancement needs to be done. The standard transaction code FBL5N cannot be enhanced to accomodate this functionality. The standard FBL5N fetches the customer line item display based on posting date(key date).

The enhancement has to be done in the logical database.

Go to SE36. For FBL5N(Customer) DDF is the logical database. Go to source code/Database program.



Enhancement spots will be available. Create enhancement implementations. The databases should be enhanced(XBSID , XBSAD). These two structures need to be enhanced to accommodate this functionality as XBSID and XBSAD holds the document date.



Enhancement needs to be applied at 2 areas.

1.Put the below enhancement LOGIC in PERFORM update_xbsid_hdb. (towards the end) Endform.

Find the detailed code snippet .
data: lv_cus type char1.
IMPORT lv_cus to lv_cus from MEMORY ID 'ABC'.
if sy-tcode = 'ZFI_CUSTOMER_AGEING' .
* or sy-tcode = 'ZFI_CPA' OR
* ( sy-tcode = 'ZFI_ACCR_AGE' AND LV_CUS IS NOT INITIAL ).
* Variante 1: Offene Posten zu einem bestimmten Stichtag
if DD_OPOPT = 'X' and DD_APOPT ne 'X'.
refresh xbsid.
select (BSID_FIELDS) from BSID
into corresponding fields of table XBSID
for all entries in K_KUNNR
where KUNNR eq K_KUNNR-LOW
and BUKRS in DD_BUKRS
* AND GJAHR IN DD_GJAHR
* AND GJAHR BETWEEN '0001' AND '9999'
and BlDAT in DD_BUDAT
and BLDAT le DD_STIDA
and ZUONR in DD_ZUONR
and SHKZG in DD_SHKZG
and UMSKZ in DD_UMSKZ
and BSCHL in DD_BSCHL
and (BSID_WHERE).
endif. "Variante 1
* Variante 2: Ausgegl. Posten in einem Datumsintervall
"- Es erfolgt kein Zugriff auf BSID

* Variante 3: Variante 1 + 2 gleichzeitig
if DD_OPOPT eq 'X' and DD_APOPT eq 'X'.
* SELECT * FROM BSID WHERE KUNNR > KUNNR-BSID
select (BSID_FIELDS) from BSID
into corresponding fields of table XBSID
for all entries in K_KUNNR
where KUNNR eq K_KUNNR-LOW
and BUKRS in DD_BUKRS
* AND GJAHR IN DD_GJAHR
* AND GJAHR BETWEEN '0001' AND '9999'
and BUDAT in DD_BUDAT
and BUDAT le DD_STIDA
and ZUONR in DD_ZUONR
and SHKZG in DD_SHKZG
and UMSKZ in DD_UMSKZ
and BSCHL in DD_BSCHL
and (BSID_WHERE).
endif. "Variante 3

* Variante 4 (aus RFITEMAR): AP mit Stichtag und Ausgleichszeitraum
"- Kein Zugriff auf BSID!

* check projk and imkey range
if PROJK_ELIMINATED eq 'X' or IMKEY_ELIMINATED eq 'X'.
loop at XBSID.
if PROJK_ELIMINATED eq 'X'.
perform CHECK_INT_EXT(FI_LDB_UTIL) tables PROJK_TAB
using XBSID-PROJK
'KONPR'
changing CHECK_OK.
if CHECK_OK = 'N'.
delete XBSID.
continue.
endif.
endif.

if IMKEY_ELIMINATED eq 'X'.
perform CHECK_INT_EXT(FI_LDB_UTIL) tables IMKEY_TAB
using XBSID-IMKEY
'IMKEY'
changing CHECK_OK.
if CHECK_OK = 'N'.
delete XBSID.
endif.
endif.

endloop.
endif.

sort XBSID by MANDT KUNNR BUKRS.
CURSOR-BSID = 1.
ENDIF.


2. Enhance in PERFORM update_xbsad. 

Find the code for enhancement.
DATA: LV_CUS1 TYPE CHAR1.
IMPORT LV_CUS TO LV_CUS1 FROM MEMORY ID 'ABC'.
IF SY-TCODE = 'ZFI_CUSTOMER_AGEING' .

* Variante 1: Offene Posten zu einem bestimmten Stichtag
if DD_OPOPT = 'X' and DD_APOPT ne 'X'.
refresh xbsad.
if B0SG-XNOPL is initial.
select (BSID_FIELDS) from BSAD
into corresponding fields of table XBSAD
for all entries in K_KUNNR
where KUNNR eq K_KUNNR-LOW
and BUKRS in DD_BUKRS
* AND GJAHR IN DD_GJAHR
* AND AUGDT BETWEEN '00010101'
* AND '99991231'
and BLDAT in DD_BUDAT
and BLDAT le DD_STIDA
and AUGDT gt DD_STIDA
and ZUONR in DD_ZUONR
and SHKZG in DD_SHKZG
and UMSKZ in DD_UMSKZ
and BSCHL in DD_BSCHL
and (BSID_WHERE).
endif.
endif. "Variante 1
* Variante 2: Ausgegl. Posten in einem Datumsintervall
if DD_OPOPT ne 'X' and DD_APOPT = 'X'.
select (BSID_FIELDS) from BSAD
into corresponding fields of table XBSAD
for all entries in K_KUNNR
where KUNNR eq K_KUNNR-LOW
and BUKRS in DD_BUKRS
* AND GJAHR IN DD_GJAHR
* AND AUGDT BETWEEN '00010101'
* AND '99991231'
and BUDAT in DD_BUDAT
and AUGDT in DD_AUGDT
and ZUONR in DD_ZUONR
and SHKZG in DD_SHKZG
and UMSKZ in DD_UMSKZ
and BSCHL in DD_BSCHL
and (BSID_WHERE).
endif. "Variante 2
* Variante 3: Variante 1 + 2 gleichzeitig
if DD_OPOPT eq 'X' and DD_APOPT eq 'X'.
select (BSID_FIELDS) from BSAD
into corresponding fields of XBSAD
for all entries in K_KUNNR
where KUNNR eq K_KUNNR-LOW
and BUKRS in DD_BUKRS
* AND GJAHR IN DD_GJAHR
* AND AUGDT BETWEEN '00010101'
* AND '99991231'
and BUDAT in DD_BUDAT
and BUDAT le DD_STIDA
* AND AUGDT GT DD_STIDA
* OR AUGDT IN DD_AUGDT
and ZUONR in DD_ZUONR
and UMSKZ in DD_UMSKZ
and SHKZG in DD_SHKZG
and BSCHL in DD_BSCHL
and (BSID_WHERE).
check XBSAD-AUGDT gt DD_STIDA or XBSAD-AUGDT in DD_AUGDT.
append XBSAD.
endselect.
endif. "Variante 3
* Variante 4 (aus RFITEMAR): AP mit Stichtag und Ausgleichszeitraum
if DD_OPOPT ne 'X' and DD_APOPT ne 'X'.
select (BSID_FIELDS) from BSAD
into corresponding fields of table XBSAD
for all entries in K_KUNNR
where KUNNR eq K_KUNNR-LOW
and BUKRS in DD_BUKRS
* AND GJAHR IN DD_GJAHR
* AND AUGDT BETWEEN '00010101'
* AND '99991231'
and BUDAT in DD_BUDAT
and AUGDT gt DD_STIDA
and AUGDT in DD_AUGDT
and ZUONR in DD_ZUONR
and UMSKZ in DD_UMSKZ
and SHKZG in DD_SHKZG
and BSCHL in DD_BSCHL
and (BSID_WHERE).
endif. " Variante 4

* check projk and imkey range
if PROJK_ELIMINATED eq 'X' or IMKEY_ELIMINATED eq 'X'.
loop at XBSAD.
if PROJK_ELIMINATED eq 'X'.
perform CHECK_INT_EXT(FI_LDB_UTIL) tables PROJK_TAB
using XBSAD-PROJK
'KONPR'
changing CHECK_OK.
if CHECK_OK = 'N'.
delete XBSAD.
continue.
endif.
endif.

if IMKEY_ELIMINATED eq 'X'.
perform CHECK_INT_EXT(FI_LDB_UTIL) tables IMKEY_TAB
using XBSAD-IMKEY
'IMKEY'
changing CHECK_OK.
if CHECK_OK = 'N'.
delete XBSAD.
endif.
endif.

endloop.
endif.

sort XBSAD by MANDT KUNNR BUKRS.
CURSOR-BSAD = 1.
ENDIF.



The above attached code snippets and images are screenshots.

In the above 2 enhancements, the sy-tcode should be given. The sy-tcode should be the name of the transaction code of the custom zreport.  Only if  the tcode is executed the enhacements work otherwise FBL5N works as per standard.This can be tested by checking the custom z report and FBL5N. The custom report fetches records by document date and FBL5N fetches records by posting date.

When there is a requirement to fetch records based on document date from FBL5N, such a enhancement needs to be applied.The records from FBL5N will be fetched based on the document date.All the records based on the document date(BLDAT) will be fetched.
Labels in this area