Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

vendor aging report ,customer aging report

Former Member
0 Kudos

hi to all

can u pls what is vendor aging report . what is the purpose of it . can u pls some theoritical description

i will definitely reward points pls its urgent pls tell if there r any standard reports exists for theese . pls give some custom reports on theese with coding.

and for customer aging also

pls.................

1 ACCEPTED SOLUTION

Former Member
0 Kudos

An aging report is used to display all the open invoices (invoices without a payment) categorized by the difference in the due date (calculated with baseline date and payment terms) and current date. Usually, the due amount is displayed in different buckets such as <0 (payment not yet due), current (due now), 1-30 days, 31-60 days etc.

Vendor or A/P aging report should display open-vendor invoices i.e. vendor invoices for which payment has not been made.

Customer or A/R aging report should display open-customer invoices i.e. customer invoices for which payment has not been received.

4 REPLIES 4

Former Member
0 Kudos

Hi,

Check the Vendor against report code:

REPORT zvender_os NO STANDARD PAGE HEADING

LINE-SIZE 132

LINE-COUNT 65.

----


  • Tables

----


TABLES: bsik, "open items (A/C: Secondary Index for Customers)

lfa1, "customer master

lfb1,

rf140, "temp stru (Work Fields for Corrence(SAPF140*))

bsak, "cleared items (A/c Secnd Index for Cust(Clrms))

skat.

----


  • constants and variables

----


TYPE-POOLS: slis.

DATA: fieldcat TYPE slis_t_fieldcat_alv,

fieldcat1 TYPE slis_t_fieldcat_alv,

fieldcat_ln TYPE slis_fieldcat_alv,

layout_in TYPE slis_layout_alv,

layout_in1 TYPE slis_layout_alv,

sortcat TYPE slis_t_sortinfo_alv,

sortcat1 TYPE slis_t_sortinfo_alv,

sortcat_ln LIKE LINE OF sortcat,

eventcat1 TYPE slis_t_event,

eventcat TYPE slis_t_event,

eventcat_ln LIKE LINE OF eventcat,

col_pos TYPE i.

DATA: targ_month(2) TYPE n, "0001

targ_year(4) TYPE n, "0001

targ_mth_abs TYPE p, "0001

doc_month(2) TYPE n, "0001

doc_year(4) TYPE n, "0001

doc_mth_abs TYPE p, "0001

mth_result TYPE p, "0001

doc_days TYPE p,

targ_days TYPE p,

addl_days TYPE p,

ext_days TYPE p,

v_days(3) TYPE c,

v_kkber LIKE knkk-kkber.

DATA:

BEGIN OF inrec OCCURS 1000, "0001

lifnr LIKE bsik-lifnr,

belnr LIKE bsik-belnr,

gjahr LIKE bsik-gjahr,

bldat LIKE bsik-bldat,

xblnr LIKE bsik-xblnr,

blart LIKE bsik-blart,

sgtxt LIKE bsik-sgtxt,

shkzg LIKE bsik-shkzg,

dmbtr LIKE bsik-dmbtr,

zfbdt LIKE bsik-zfbdt,

zbd1t LIKE bsik-zbd1t,

zbd2t LIKE bsik-zbd2t,

zbd3t LIKE bsik-zbd3t,

zuonr LIKE bsik-zuonr,

END OF inrec.

DATA:

BEGIN OF inrect OCCURS 1000, "0001

lifnr LIKE bsik-lifnr,

belnr LIKE bsik-belnr,

gjahr LIKE bsik-gjahr,

bldat LIKE bsik-bldat,

xblnr LIKE bsik-xblnr,

blart LIKE bsik-blart,

sgtxt LIKE bsik-sgtxt,

shkzg LIKE bsik-shkzg,

dmbtr LIKE bsik-dmbtr,

zfbdt LIKE bsik-zfbdt,

zbd1t LIKE bsik-zbd1t,

zbd2t LIKE bsik-zbd2t,

zbd3t LIKE bsik-zbd3t,

zuonr LIKE bsik-zuonr,

END OF inrect,

BEGIN OF t_item OCCURS 1000, " 0001

lifnr LIKE bsik-lifnr,

belnr LIKE bsik-belnr,

gjahr LIKE bsik-gjahr,

bldat LIKE bsik-bldat,

xblnr LIKE bsik-xblnr,

blart LIKE bsik-blart,

sgtxt LIKE bsik-sgtxt,

zfbdt LIKE bsik-zfbdt,

dmbtr LIKE bsik-dmbtr,

days(3) TYPE c,

zuonr LIKE bsik-zuonr,

END OF t_item,

t_line LIKE t_item OCCURS 1000 WITH HEADER LINE, " 0001

BEGIN OF itab OCCURS 1000,

lifnr LIKE lfa1-lifnr,

total LIKE bsik-dmbtr,

zfuture LIKE bsik-dmbtr,

zcurrent LIKE bsik-dmbtr,

crbal LIKE bsik-dmbtr,

30days LIKE bsik-dmbtr,

60days LIKE bsik-dmbtr,

90days LIKE bsik-dmbtr,

99days LIKE bsik-dmbtr,

120days LIKE bsik-dmbtr,

180days LIKE bsik-dmbtr,

365days LIKE bsik-dmbtr,

bzirk LIKE knvv-bzirk,

vkbur LIKE knvv-vkbur,

vwerk LIKE knvv-vwerk,

vkgrp LIKE knvv-vkgrp,

klimk LIKE knkk-klimk,

cashd LIKE knkk-cashd,

grupp LIKE knkk-grupp,

erdat LIKE lfa1-erdat,

name1 LIKE lfa1-name1,

name2 LIKE lfa1-name2,

stras LIKE lfa1-stras,

ort01 LIKE lfa1-ort01,

telf1 LIKE lfa1-telf1,

psort(10),

sperr LIKE lfa1-sperr,

totsal LIKE bsik-dmbtr,

txt50 LIKE skat-txt50,

gsber LIKE bsik-gsber,

END OF itab.

DATA: sel_tab TYPE TABLE OF rsparams WITH HEADER LINE,

p_debit(1) TYPE c,

p_credit(1) TYPE c.

DATA: t_variant LIKE disvariant OCCURS 0 WITH HEADER LINE.

----


  • parameters and select-options

----


SELECTION-SCREEN BEGIN OF BLOCK blck0 WITH FRAME TITLE text-002.

PARAMETERS: stida LIKE sy-datum DEFAULT sy-datum OBLIGATORY,

p_bukrs LIKE t001-bukrs DEFAULT 'PIIL' MEMORY ID buk

OBLIGATORY.

  • P_BUKRS LIKE T001-BUKRS DEFAULT 'CC01' OBLIGATORY. "0003

SELECT-OPTIONS: s_lifnr FOR bsik-lifnr ,

  • s_vkbur FOR knvv-vkbur,

  • s_vkgrp FOR knvv-vkgrp,

  • s_bzirk FOR knvv-bzirk,

  • s_konda FOR knvv-konda,

  • s_kdgrp FOR knvv-kdgrp NO-DISPLAY ,

  • s_kvgr2 FOR knvv-kvgr2 NO-DISPLAY ,

  • s_kkber FOR knkk-kkber NO-DISPLAY ,

  • s_grupp FOR knkk-grupp NO-DISPLAY ,

  • s_ctlpc FOR knkk-ctlpc,

s_akont FOR lfb1-akont,

s_gsber FOR bsik-gsber.

PARAMETERS: p_future AS CHECKBOX DEFAULT 'X'.

SELECTION-SCREEN END OF BLOCK blck0.

SELECTION-SCREEN BEGIN OF BLOCK blck1 WITH FRAME TITLE text-002.

PARAMETERS: p_abs RADIOBUTTON GROUP zrad,

p_due RADIOBUTTON GROUP zrad DEFAULT 'X'.

SELECTION-SCREEN END OF BLOCK blck1.

*SELECTION-SCREEN BEGIN OF BLOCK blck2 WITH FRAME TITLE text-003.

*PARAMETERS: c_run RADIOBUTTON GROUP zrac DEFAULT 'X',

  • c_blk RADIOBUTTON GROUP zrac,

  • c_all RADIOBUTTON GROUP zrac.

*

*SELECTION-SCREEN END OF BLOCK blck2.

*SELECTION-SCREEN BEGIN OF BLOCK blck3 WITH FRAME TITLE text-004.

*PARAMETERS: p_debit AS CHECKBOX DEFAULT 'X' ,

  • p_credit AS CHECKBOX DEFAULT 'X' NO-DISPLAY,

*

*selection-screen end of block blck3.

----


  • start-of-selection.

----


START-OF-SELECTION.

  • PERFORM BUILD_EVENTCAT.

*----


p_debit = 'X'.

p_credit = 'X'.

PERFORM get_customer_invoices.

  • filter records based on selection criteria

PERFORM filter_records.

END-OF-SELECTION.

*----


PERFORM add_sort_field.

PERFORM modify_field.

PERFORM write_report.

&----


*& Form FILTER_RECORDS

&----


  • To collect all the required data from DB and store them in

  • internal table.

----


  • --> p1 text

  • <-- p2 text

----


FORM filter_records.

*

  • delete records based on selection criteria

LOOP AT itab.

  • SELECT vkbur vkgrp vwerk erdat konda kdgrp bzirk kvgr2

  • INTO (itab-vkbur, itab-vkgrp, itab-vwerk, knvv-erdat,

  • knvv-konda, knvv-kdgrp,itab-bzirk,knvv-kvgr2)

  • FROM knvv WHERE lifnr = itab-lifnr

  • ORDER BY erdat DESCENDING.

    • AKS :- Not Required for PI

  • CASE itab-vkbur.

  • WHEN 'SA1'.

  • itab-vkbur = 'SF25'.

  • WHEN 'QLD1'.

  • itab-vkbur = 'SF23'.

  • WHEN 'WA1'.

  • itab-vkbur = 'SF26'.

  • ENDCASE.

    • AKS.

  • EXIT.

  • ENDSELECT.

  • IF itab-vkbur IN s_vkbur AND

  • itab-vkgrp IN s_vkgrp AND

  • knvv-konda IN s_konda AND

  • knvv-kdgrp IN s_kdgrp AND

  • itab-bzirk IN s_bzirk AND

  • knvv-kvgr2 IN s_kvgr2.

  • ELSE.

  • DELETE itab.

  • CONTINUE.

  • ENDIF.

  • SELECT SINGLE klimk grupp cashd

  • INTO (itab-klimk, itab-grupp, itab-cashd)

  • FROM knkk WHERE lifnr = itab-lifnr

  • AND kkber IN s_kkber

  • AND ctlpc IN s_ctlpc

  • AND grupp IN s_grupp.

  • IF SY-SUBRC NE 0.

  • DELETE ITAB.

  • CONTINUE.

  • ENDIF.

SELECT SINGLE skat~txt50

INTO (itab-txt50)

FROM lfb1 INNER JOIN skat

ON lfb1akont EQ skatsaknr

WHERE lfb1~lifnr = itab-lifnr

AND lfb1~akont IN s_akont

AND skat~spras EQ 'EN'.

IF sy-subrc NE 0.

DELETE itab.

CONTINUE.

ENDIF.

SELECT SINGLE name1 name2 telf1 erdat stras ort01 sperr

INTO (itab-name1, itab-name2, itab-telf1,

itab-erdat, itab-stras, itab-ort01, itab-sperr )

FROM lfa1

WHERE lifnr = itab-lifnr

.

IF sy-subrc NE 0 .

DELETE itab.

CONTINUE.

ENDIF.

    • AKS For Filteration of Customer base on Block Area.

  • IF c_all NE 'X'.

  • IF c_run EQ 'X' AND itab-sperr EQ 'X'.

  • DELETE itab.

  • CONTINUE.

  • ELSE.

  • IF c_blk EQ 'X' AND itab-sperr NE 'X'.

  • DELETE itab.

  • CONTINUE.

  • ENDIF.

  • ENDIF.

  • ENDIF.

MODIFY itab.

ENDLOOP.

ENDFORM. " FILTER_RECORDS

&----


*& Form GET_CUSTOMER_INVOICES

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM get_customer_invoices.

DATA:ztotcre LIKE bsik-dmbtr.

DATA:ztotsal LIKE bsik-dmbtr.

DATA: fsdate LIKE sy-datum.

DATA: l_perio(4) TYPE c.

MOVE stida TO rf140-stida.

MOVE rf140-stida+4(2) TO targ_month.

MOVE rf140-stida+0(4) TO targ_year.

MOVE rf140-stida+6(2) TO targ_days.

targ_mth_abs = ( targ_year * 12 ) + targ_month.

CALL FUNCTION 'ZGET_PERIOD_FROM_DATE'

EXPORTING

i_date = stida

IMPORTING

e_perio = l_perio.

CONCATENATE l_perio '0401' INTO fsdate.

  • select open items.

IF p_due EQ 'X'.

SELECT lifnr belnr gjahr bldat xblnr blart sgtxt " 0001

shkzg dmbtr zfbdt zbd1t zbd2t zbd3t

zuonr

FROM bsik INTO TABLE inrect

WHERE bukrs = p_bukrs

AND budat LE stida

AND lifnr IN s_lifnr

AND gsber IN s_gsber

AND umskz NE 'T'

AND umskz NE 'F'

AND umskz NE 'R'

AND umskz NE 'P'

AND umskz NE 'J'

AND umskz NE 'L'.

  • LOOP AT INREC.

  • IF INREC-SHKZG = 'H'.

  • INREC-DMBTR = INREC-DMBTR * -1.

  • ENDIF.

  • MOVE-CORRESPONDING INREC TO T_ITEM. " 0001

  • PERFORM COLLECT_INVOICE USING INREC-lifnr INREC-DMBTR

  • INREC-ZFBDT INREC-ZBD1T

  • INREC-ZBD2T INREC-ZBD3T.

  • APPEND T_ITEM.

  • CLEAR T_ITEM.

  • ENDLOOP.

LOOP AT inrect.

inrec-lifnr = inrect-lifnr.

inrec-belnr = inrect-belnr.

inrec-gjahr = inrect-gjahr.

inrec-bldat = inrect-bldat.

inrec-xblnr = inrect-xblnr.

inrec-blart = inrect-blart.

inrec-sgtxt = inrect-sgtxt.

inrec-shkzg = inrect-shkzg.

inrec-dmbtr = inrect-dmbtr.

CALL FUNCTION 'NJ_CAL_DATE_IN_INTERVAL'

EXPORTING

date = inrect-zfbdt

days = inrect-zbd1t

months = 00

signum = '+'

years = 00

IMPORTING

calc_date = inrec-zfbdt.

inrec-zbd1t = inrect-zbd1t.

inrec-zbd2t = inrect-zbd2t.

inrec-zbd3t = inrect-zbd3t.

inrec-zuonr = inrect-zuonr.

APPEND inrec.

CLEAR inrec.

ENDLOOP.

ELSE.

SELECT lifnr belnr gjahr bldat xblnr blart sgtxt " 0001

shkzg dmbtr zfbdt zbd1t zbd2t zbd3t

zuonr

FROM bsik INTO TABLE inrec

WHERE bukrs = p_bukrs

AND budat LE stida

AND lifnr IN s_lifnr

AND gsber IN s_gsber

AND umskz NE 'T'

AND umskz NE 'F'

AND umskz NE 'R'

AND umskz NE 'P'

AND umskz NE 'J'

AND umskz NE 'L'.

ENDIF.

SORT inrec BY lifnr shkzg zfbdt .

LOOP AT inrec.

AT NEW lifnr.

  • For Customers Credit Balance Transaction to be display in Report

  • End of Credit Balance

ztotcre = 0.

ztotsal = 0.

ENDAT.

IF inrec-shkzg = 'H'.

inrec-dmbtr = inrec-dmbtr * -1.

ztotcre = ztotcre + inrec-dmbtr.

ELSE.

IF inrec-blart = 'RV'.

IF inrec-bldat GE fsdate.

ztotsal = ztotsal + inrec-dmbtr.

ENDIF.

ENDIF.

ztotcre = ztotcre + inrec-dmbtr.

  • endif.

IF p_debit EQ 'X'.

IF ztotcre > 0.

MOVE-CORRESPONDING inrec TO t_item. " 0001

PERFORM collect_invoice USING inrec-lifnr ztotcre

inrec-zfbdt inrec-zbd1t

inrec-zbd2t inrec-zbd3t

ztotsal.

APPEND t_item.

CLEAR t_item.

ztotcre = 0.

ztotsal = 0.

ENDIF.

ENDIF.

ENDIF.

IF p_credit EQ 'X'.

  • AT END OF lifnr.

IF ztotcre < 0.

MOVE-CORRESPONDING inrec TO t_item. " 0001

PERFORM collect_invoice USING inrec-lifnr ztotcre

inrec-zfbdt inrec-zbd1t

inrec-zbd2t inrec-zbd3t

ztotsal.

APPEND t_item.

CLEAR t_item.

ztotcre = 0.

ztotsal = 0.

  • APPEND t_item.

  • CLEAR t_item.

ENDIF.

  • ENDAT.

ENDIF.

ENDLOOP.

  • select cleared items

IF p_due EQ 'X'.

REFRESH inrect. CLEAR inrect.

SELECT lifnr belnr gjahr bldat xblnr blart sgtxt

shkzg dmbtr zfbdt zbd1t zbd2t zbd3t

zuonr

FROM bsak INTO TABLE inrect

WHERE bukrs = p_bukrs

AND budat LE stida

AND augdt > stida

AND lifnr IN s_lifnr

AND gsber IN s_gsber

.

REFRESH inrec. CLEAR inrec.

LOOP AT inrect.

inrec-lifnr = inrect-lifnr.

inrec-belnr = inrect-belnr.

inrec-gjahr = inrect-gjahr.

inrec-bldat = inrect-bldat.

inrec-xblnr = inrect-xblnr.

inrec-blart = inrect-blart.

inrec-sgtxt = inrect-sgtxt.

inrec-shkzg = inrect-shkzg.

inrec-dmbtr = inrect-dmbtr.

CALL FUNCTION 'NJ_CAL_DATE_IN_INTERVAL'

EXPORTING

date = inrect-zfbdt

days = inrect-zbd1t

months = 00

signum = '+'

years = 00

IMPORTING

calc_date = inrec-zfbdt.

inrec-zbd1t = inrect-zbd1t.

inrec-zbd2t = inrect-zbd2t.

inrec-zbd3t = inrect-zbd3t.

inrec-zuonr = inrect-zuonr.

APPEND inrec.

CLEAR inrec.

ENDLOOP.

ELSE.

REFRESH inrec. CLEAR inrec.

SELECT lifnr belnr gjahr bldat xblnr blart sgtxt

shkzg dmbtr zfbdt zbd1t zbd2t zbd3t

zuonr

FROM bsak INTO TABLE inrec

WHERE bukrs = p_bukrs

AND budat LE stida

AND augdt > stida

AND lifnr IN s_lifnr

AND gsber IN s_gsber

.

ENDIF.

SORT inrec BY lifnr shkzg zfbdt .

LOOP AT inrec.

AT NEW lifnr.

ztotcre = 0.

ztotsal = 0.

ENDAT.

IF inrec-shkzg = 'H'.

inrec-dmbtr = inrec-dmbtr * -1.

ztotcre = ztotcre + inrec-dmbtr.

ELSE.

IF inrec-blart = 'RV'.

IF inrec-bldat GE fsdate.

ztotsal = ztotsal + inrec-dmbtr.

ENDIF.

ENDIF.

ztotcre = ztotcre + inrec-dmbtr.

  • endif.

IF p_debit EQ 'X'.

IF ztotcre > 0.

MOVE-CORRESPONDING inrec TO t_item. " 0001

PERFORM collect_invoice USING inrec-lifnr ztotcre

inrec-zfbdt inrec-zbd1t

inrec-zbd2t inrec-zbd3t

ztotsal.

APPEND t_item.

CLEAR t_item.

ztotcre = 0.

ztotsal = 0.

ENDIF.

ENDIF.

ENDIF.

IF p_credit EQ 'X'.

  • AT END OF lifnr.

IF ztotcre < 0.

MOVE-CORRESPONDING inrec TO t_item. " 0001

PERFORM collect_invoice USING inrec-lifnr ztotcre

inrec-zfbdt inrec-zbd1t

inrec-zbd2t inrec-zbd3t

ztotsal.

APPEND t_item.

CLEAR t_item.

ztotcre = 0.

ztotsal = 0.

  • APPEND t_item.

  • CLEAR t_item.

ENDIF.

  • ENDAT. " 0001

ENDIF.

ENDLOOP.

ENDFORM. " GET_CUSTOMER_INVOICES

&----


*& Form COLLECT_INVOICE

&----


  • text

----


  • -->P_bsik_lifnr text

  • -->P_bsik_DMBTR text

  • -->P_bsik_ZFBDT text

  • -->P_bsik_ZFBDT1 text

  • -->P_bsik_ZFBDT2 text

  • -->P_bsik_ZFBDT3 text

----


FORM collect_invoice USING pp_lifnr

pp_dmbtr

pp_zfbdt

pp_zbd1t

pp_zbd2t

pp_zbd3t

pp_ztotsal.

doc_month = pp_zfbdt+4(2).

doc_year = pp_zfbdt+0(4).

doc_mth_abs = ( doc_year * 12 ) + doc_month.

mth_result = ( targ_mth_abs - doc_mth_abs ).

  • logic given by Mr. Ashok Singhvi

doc_days = pp_zfbdt+6(2).

addl_days = ( doc_days - targ_days ).

IF addl_days <= 0.

ADD 1 TO mth_result.

ENDIF.

******************************************

IF NOT pp_zbd3t IS INITIAL.

MOVE pp_zbd3t TO ext_days.

ELSEIF NOT pp_zbd2t IS INITIAL.

MOVE pp_zbd2t TO ext_days.

ELSEIF NOT pp_zbd1t IS INITIAL.

MOVE pp_zbd1t TO ext_days.

ELSE.

CLEAR ext_days.

ENDIF.

  • CHECK with Andrew whether this is working or not

  • if extended payment terms exist, subtract no of mths from mth_result

  • IF NOT ext_days IS INITIAL.

  • CASE ext_days.

  • WHEN 30.

  • SUBTRACT 1 FROM mth_result.

  • WHEN 60.

  • SUBTRACT 2 FROM mth_result.

  • WHEN 90.

  • SUBTRACT 3 FROM mth_result.

  • WHEN 120.

  • SUBTRACT 4 FROM mth_result.

  • ENDCASE.

  • ENDIF.

  • change to key date

IF pp_dmbtr > 0.

IF p_future = 'X'. " 0001

IF mth_result <= 0.

itab-zcurrent = pp_dmbtr.

t_item-days = 'CUR'.

ELSEIF mth_result = 1.

itab-30days = pp_dmbtr.

t_item-days = '30D'.

ELSEIF mth_result = 2.

itab-60days = pp_dmbtr.

t_item-days = '60D'.

ELSEIF mth_result = 3.

itab-90days = pp_dmbtr.

t_item-days = '90D'.

ELSEIF mth_result > 3 AND mth_result <= 4 .

itab-99days = pp_dmbtr.

t_item-days = '99D'.

ELSEIF mth_result > 4 AND mth_result <= 6 .

itab-120days = pp_dmbtr.

t_item-days = '120D'.

ELSEIF mth_result > 6 AND mth_result <= 12 .

itab-180days = pp_dmbtr.

t_item-days = '180D'.

ELSEIF mth_result > 12 .

itab-365days = pp_dmbtr.

t_item-days = '365D'.

ENDIF.

ELSE.

IF mth_result < 0.

itab-zfuture = pp_dmbtr.

t_item-days = 'FUT'.

ELSEIF mth_result = 0.

itab-zcurrent = pp_dmbtr.

t_item-days = 'CUR'.

ELSEIF mth_result = 1.

itab-30days = pp_dmbtr.

t_item-days = '30D'.

ELSEIF mth_result = 2.

itab-60days = pp_dmbtr.

t_item-days = '60D'.

ELSEIF mth_result = 3.

itab-90days = pp_dmbtr.

t_item-days = '90D'.

ELSEIF mth_result > 3 AND mth_result <= 4 .

itab-99days = pp_dmbtr.

t_item-days = '99D'.

ELSEIF mth_result > 4 AND mth_result <= 6 .

itab-120days = pp_dmbtr.

t_item-days = '120D'.

ELSEIF mth_result > 6 AND mth_result <= 12 .

itab-180days = pp_dmbtr.

t_item-days = '180D'.

ELSEIF mth_result > 12 .

itab-365days = pp_dmbtr.

t_item-days = '365D'.

ENDIF.

ENDIF. " 0001

itab-crbal = 0.

itab-total = pp_dmbtr.

ELSE.

IF p_future = 'X'. " 0001

IF mth_result <= 0.

itab-zcurrent = pp_dmbtr.

t_item-days = 'CUR'.

ELSEIF mth_result = 1.

itab-30days = pp_dmbtr.

t_item-days = '30D'.

ELSEIF mth_result = 2.

itab-60days = pp_dmbtr.

t_item-days = '60D'.

ELSEIF mth_result = 3.

itab-90days = pp_dmbtr.

t_item-days = '90D'.

ELSEIF mth_result > 3 AND mth_result <= 4 .

itab-99days = pp_dmbtr.

t_item-days = '99D'.

ELSEIF mth_result > 4 AND mth_result <= 6 .

itab-120days = pp_dmbtr.

t_item-days = '120D'.

ELSEIF mth_result > 6 AND mth_result <= 12 .

itab-180days = pp_dmbtr.

t_item-days = '180D'.

ELSEIF mth_result > 12 .

itab-365days = pp_dmbtr.

t_item-days = '365D'.

ENDIF.

ELSE.

IF mth_result < 0.

itab-zfuture = pp_dmbtr.

t_item-days = 'FUT'.

ELSEIF mth_result = 0.

itab-zcurrent = pp_dmbtr.

t_item-days = 'CUR'.

ELSEIF mth_result = 1.

itab-30days = pp_dmbtr.

t_item-days = '30D'.

ELSEIF mth_result = 2.

itab-60days = pp_dmbtr.

t_item-days = '60D'.

ELSEIF mth_result = 3.

itab-90days = pp_dmbtr.

t_item-days = '90D'.

ELSEIF mth_result > 3 AND mth_result <= 4 .

itab-99days = pp_dmbtr.

t_item-days = '99D'.

ELSEIF mth_result > 4 AND mth_result <= 6 .

itab-120days = pp_dmbtr.

t_item-days = '120D'.

ELSEIF mth_result > 6 AND mth_result <= 12 .

itab-180days = pp_dmbtr.

t_item-days = '180D'.

ELSEIF mth_result > 12 .

itab-365days = pp_dmbtr.

t_item-days = '365D'.

ENDIF.

ENDIF. " 0001

itab-total = pp_dmbtr.

itab-crbal = 0.

ENDIF.

itab-lifnr = pp_lifnr.

itab-totsal = pp_ztotsal.

COLLECT itab.

CLEAR itab.

ENDFORM. " COLLECT_INVOICE

&----


*& Form ADD_SORT_FIELD

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM add_sort_field.

DATA: l_amount(9) TYPE n.

IF p_future = 'X'.

LOOP AT itab.

l_amount = 999999999.

IF itab-365days > 0.

l_amount = l_amount - itab-365days.

CONCATENATE 'A' l_amount INTO itab-psort.

ELSEIF itab-180days > 0.

l_amount = l_amount - itab-180days.

CONCATENATE 'B' l_amount INTO itab-psort.

ELSEIF itab-120days > 0.

l_amount = l_amount - itab-120days.

CONCATENATE 'C' l_amount INTO itab-psort.

ELSEIF itab-99days > 0.

l_amount = l_amount - itab-99days.

CONCATENATE 'D' l_amount INTO itab-psort.

ELSEIF itab-90days > 0.

l_amount = l_amount - itab-90days.

CONCATENATE 'E' l_amount INTO itab-psort.

ELSEIF itab-60days > 0.

l_amount = l_amount - itab-60days.

CONCATENATE 'F' l_amount INTO itab-psort.

ELSEIF itab-30days > 0.

l_amount = l_amount - itab-30days.

CONCATENATE 'G' l_amount INTO itab-psort.

ELSEIF itab-zcurrent > 0.

l_amount = l_amount - itab-zcurrent.

CONCATENATE 'H' l_amount INTO itab-psort.

  • ELSEif itab-zfuture > 0.

  • L_AMOUNT = L_AMOUNT - ITAB-zfuture.

  • CONCATENATE 'F' L_AMOUNT INTO ITAB-PSORT.

ELSE.

l_amount = ABS( itab-total ).

CONCATENATE 'I' l_amount INTO itab-psort.

ENDIF.

MODIFY itab.

ENDLOOP.

ELSE.

LOOP AT itab.

l_amount = 999999999.

IF itab-365days > 0.

l_amount = l_amount - itab-365days.

CONCATENATE 'A' l_amount INTO itab-psort.

ELSEIF itab-180days > 0.

l_amount = l_amount - itab-180days.

CONCATENATE 'B' l_amount INTO itab-psort.

ELSEIF itab-120days > 0.

l_amount = l_amount - itab-120days.

CONCATENATE 'C' l_amount INTO itab-psort.

ELSEIF itab-99days > 0.

l_amount = l_amount - itab-99days.

CONCATENATE 'D' l_amount INTO itab-psort.

ELSEIF itab-90days > 0.

l_amount = l_amount - itab-90days.

CONCATENATE 'E' l_amount INTO itab-psort.

ELSEIF itab-60days > 0.

l_amount = l_amount - itab-60days.

CONCATENATE 'F' l_amount INTO itab-psort.

ELSEIF itab-30days > 0.

l_amount = l_amount - itab-30days.

CONCATENATE 'G' l_amount INTO itab-psort.

ELSEIF itab-zcurrent > 0.

l_amount = l_amount - itab-zcurrent.

CONCATENATE 'H' l_amount INTO itab-psort.

ELSEIF itab-zfuture > 0.

l_amount = l_amount - itab-zfuture.

CONCATENATE 'I' l_amount INTO itab-psort.

ELSE.

l_amount = ABS( itab-total ).

CONCATENATE 'J' l_amount INTO itab-psort.

ENDIF.

MODIFY itab.

ENDLOOP.

ENDIF.

ENDFORM. " ADD_SORT_FIELD

&----


*& Form WRITE_REPORT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM write_report.

PERFORM build_fieldcat.

PERFORM build_sortcat.

PERFORM build_eventcat.

PERFORM build_layout.

PERFORM start_list_viewer.

ENDFORM. " WRITE_REPORT

&----


*& Form BUILD_FIELDCAT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM build_fieldcat.

  • lifnr

ADD 1 TO col_pos.

CLEAR fieldcat_ln.

fieldcat_ln-ref_tabname = 'lfa1'.

fieldcat_ln-fieldname = 'LIFNR'.

fieldcat_ln-col_pos = col_pos.

fieldcat_ln-hotspot = 'X'.

fieldcat_ln-emphasize = 'C41'.

APPEND fieldcat_ln TO fieldcat.

  • Name1

ADD 1 TO col_pos.

CLEAR fieldcat_ln.

fieldcat_ln-ref_tabname = 'lfa1'.

fieldcat_ln-fieldname = 'NAME1'.

fieldcat_ln-emphasize = 'C41'.

fieldcat_ln-col_pos = col_pos.

fieldcat_ln-seltext_l = 'Name'.

APPEND fieldcat_ln TO fieldcat.

  • City Details

ADD 1 TO col_pos.

CLEAR fieldcat_ln.

fieldcat_ln-ref_tabname = 'lfa1'.

fieldcat_ln-fieldname = 'ORT01'.

fieldcat_ln-seltext_l = 'City'.

fieldcat_ln-col_pos = col_pos.

APPEND fieldcat_ln TO fieldcat.

  • Credit Limit

  • ADD 1 TO col_pos.

  • CLEAR fieldcat_ln.

  • fieldcat_ln-ref_tabname = 'KNKK'.

  • fieldcat_ln-fieldname = 'KLIMK'.

  • fieldcat_ln-col_pos = col_pos.

  • fieldcat_ln-emphasize = 'C41'.

  • APPEND fieldcat_ln TO fieldcat.

*

  • ADD 1 TO col_pos.

  • CLEAR fieldcat_ln.

    • fieldcat_ln-ref_tabname = 'bsik'.

        • fieldcat_ln-ref_fieldname = 'DMBTR'.

  • fieldcat_ln-fieldname = 'CRBAL'.

  • fieldcat_ln-col_pos = col_pos.

  • fieldcat_ln-emphasize = 'C41'.

  • fieldcat_ln-do_sum = 'X'.

  • fieldcat_ln-seltext_l = 'Cr. Bal.'.

  • fieldcat_ln-seltext_m = 'Cr. Bal.'.

  • fieldcat_ln-seltext_s = 'Cr. Bal.'.

  • APPEND fieldcat_ln TO fieldcat.

*

  • Total Amount

ADD 1 TO col_pos.

CLEAR fieldcat_ln.

fieldcat_ln-fieldname = 'TOTAL'.

fieldcat_ln-col_pos = col_pos.

fieldcat_ln-emphasize = 'C41'.

fieldcat_ln-do_sum = 'X'.

fieldcat_ln-hotspot = 'X'.

fieldcat_ln-seltext_l = 'Out.St.Amt.'.

fieldcat_ln-seltext_m = 'Out.St.Amt.'.

fieldcat_ln-seltext_s = 'Out.St.Amt.'.

fieldcat_ln-ref_tabname = 'zbsik'.

fieldcat_ln-ref_fieldname = 'ZDMBTR'.

APPEND fieldcat_ln TO fieldcat.

IF p_future NE 'X'.

  • Future

ADD 1 TO col_pos.

CLEAR fieldcat_ln.

  • fieldcat_ln-ref_tabname = 'bsik'.

  • fieldcat_ln-ref_fieldname = 'DMBTR'.

fieldcat_ln-fieldname = 'ZFUTURE'.

fieldcat_ln-col_pos = col_pos.

fieldcat_ln-do_sum = 'X'.

fieldcat_ln-hotspot = 'X'.

fieldcat_ln-emphasize = 'C41'.

fieldcat_ln-seltext_l = 'Future Due'.

fieldcat_ln-seltext_m = 'Future Due'.

fieldcat_ln-seltext_s = 'Future Due'.

APPEND fieldcat_ln TO fieldcat.

ENDIF.

  • Current

ADD 1 TO col_pos.

CLEAR fieldcat_ln.

  • fieldcat_ln-ref_tabname = 'bsik'.

  • fieldcat_ln-ref_fieldname = 'DMBTR'.

fieldcat_ln-fieldname = 'ZCURRENT'.

fieldcat_ln-col_pos = col_pos.

fieldcat_ln-do_sum = 'X'.

fieldcat_ln-hotspot = 'X'.

fieldcat_ln-emphasize = 'C41'.

fieldcat_ln-seltext_l = 'Normal Due'.

fieldcat_ln-seltext_m = 'Normal Due'.

fieldcat_ln-seltext_s = 'Normal Due'.

APPEND fieldcat_ln TO fieldcat.

  • 30 Days

ADD 1 TO col_pos.

CLEAR fieldcat_ln.

  • fieldcat_ln-ref_tabname = 'bsik'.

  • fieldcat_ln-ref_fieldname = 'DMBTR'.

fieldcat_ln-fieldname = '30DAYS'.

fieldcat_ln-col_pos = col_pos.

fieldcat_ln-do_sum = 'X'.

fieldcat_ln-hotspot = 'X'.

fieldcat_ln-emphasize = 'C41'.

fieldcat_ln-seltext_l = '0-30 Days'.

fieldcat_ln-seltext_m = '0-30 Days'.

fieldcat_ln-seltext_s = '0-30 Days'.

APPEND fieldcat_ln TO fieldcat.

  • 60 Days

ADD 1 TO col_pos.

CLEAR fieldcat_ln.

  • fieldcat_ln-ref_tabname = 'bsik'.

  • fieldcat_ln-ref_fieldname = 'DMBTR'.

fieldcat_ln-fieldname = '60DAYS'.

fieldcat_ln-col_pos = col_pos.

fieldcat_ln-do_sum = 'X'.

fieldcat_ln-hotspot = 'X'.

fieldcat_ln-emphasize = 'C41'.

fieldcat_ln-seltext_l = '31-60 Days'.

fieldcat_ln-seltext_m = '31-60 Days'.

fieldcat_ln-seltext_s = '31-60 Days'.

APPEND fieldcat_ln TO fieldcat.

  • 90 Days

ADD 1 TO col_pos.

CLEAR fieldcat_ln.

  • fieldcat_ln-ref_tabname = 'bsik'.

  • fieldcat_ln-ref_fieldname = 'DMBTR'.

fieldcat_ln-fieldname = '90DAYS'.

fieldcat_ln-col_pos = col_pos.

fieldcat_ln-do_sum = 'X'.

fieldcat_ln-hotspot = 'X'.

fieldcat_ln-emphasize = 'C41'.

fieldcat_ln-seltext_l = '61-90 Days'.

fieldcat_ln-seltext_m = '61-90 Days'.

fieldcat_ln-seltext_s = '61-90 Days'.

APPEND fieldcat_ln TO fieldcat.

  • 99 Days

ADD 1 TO col_pos.

CLEAR fieldcat_ln.

  • fieldcat_ln-ref_tabname = 'bsik'.

  • fieldcat_ln-ref_fieldname = 'DMBTR'.

fieldcat_ln-fieldname = '99DAYS'.

fieldcat_ln-col_pos = col_pos.

fieldcat_ln-do_sum = 'X'.

fieldcat_ln-hotspot = 'X'.

fieldcat_ln-emphasize = 'C41'.

fieldcat_ln-seltext_l = '91-120 Days'.

fieldcat_ln-seltext_m = '91-120 Days'.

fieldcat_ln-seltext_s = '91-120 Days'.

APPEND fieldcat_ln TO fieldcat.

*120Days

ADD 1 TO col_pos.

CLEAR fieldcat_ln.

  • fieldcat_ln-ref_tabname = 'bsik'.

  • fieldcat_ln-ref_fieldname = 'DMBTR'.

fieldcat_ln-fieldname = '120DAYS'.

fieldcat_ln-col_pos = col_pos.

fieldcat_ln-do_sum = 'X'.

fieldcat_ln-hotspot = 'X'.

fieldcat_ln-emphasize = 'C41'.

fieldcat_ln-seltext_l = '121-180 Days'.

fieldcat_ln-seltext_m = '121-180 Days'.

fieldcat_ln-seltext_s = '121-180 Days'.

APPEND fieldcat_ln TO fieldcat.

*180 Days

ADD 1 TO col_pos.

CLEAR fieldcat_ln.

  • fieldcat_ln-ref_tabname = 'bsik'.

  • fieldcat_ln-ref_fieldname = 'DMBTR'.

fieldcat_ln-fieldname = '180DAYS'.

fieldcat_ln-col_pos = col_pos.

fieldcat_ln-do_sum = 'X'.

fieldcat_ln-hotspot = 'X'.

fieldcat_ln-emphasize = 'C41'.

fieldcat_ln-seltext_l = '181-365 Days'.

fieldcat_ln-seltext_m = '181-365 Days'.

fieldcat_ln-seltext_s = '181-365 Days'.

APPEND fieldcat_ln TO fieldcat.

*365 Days

ADD 1 TO col_pos.

CLEAR fieldcat_ln.

  • fieldcat_ln-ref_tabname = 'bsik'.

  • fieldcat_ln-ref_fieldname = 'DMBTR'.

fieldcat_ln-fieldname = '365DAYS'.

fieldcat_ln-col_pos = col_pos.

fieldcat_ln-do_sum = 'X'.

fieldcat_ln-hotspot = 'X'.

fieldcat_ln-emphasize = 'C41'.

fieldcat_ln-seltext_l = '>365 Days'.

fieldcat_ln-seltext_m = '>365 Days'.

fieldcat_ln-seltext_s = '>365 Days'.

APPEND fieldcat_ln TO fieldcat.

  • Last Payment Date

  • ADD 1 TO col_pos.

  • CLEAR fieldcat_ln.

  • fieldcat_ln-ref_tabname = 'KNKK'.

  • fieldcat_ln-fieldname = 'CASHD'.

  • fieldcat_ln-col_pos = col_pos.

  • APPEND fieldcat_ln TO fieldcat.

*

  • Street Name

  • ADD 1 TO COL_POS.

  • CLEAR FIELDCAT_LN.

  • FIELDCAT_LN-REF_TABNAME = 'lfa1'.

  • FIELDCAT_LN-FIELDNAME = 'STRAS'.

  • FIELDCAT_LN-COL_POS = COL_POS.

  • APPEND FIELDCAT_LN TO FIELDCAT.

  • Telephone

  • ADD 1 TO COL_POS.

  • CLEAR FIELDCAT_LN.

  • FIELDCAT_LN-REF_TABNAME = 'lfa1'.

  • FIELDCAT_LN-FIELDNAME = 'TELF1'.

  • FIELDCAT_LN-COL_POS = COL_POS.

  • APPEND FIELDCAT_LN TO FIELDCAT.

  • Credit Group

  • ADD 1 TO COL_POS.

  • CLEAR FIELDCAT_LN.

  • FIELDCAT_LN-REF_TABNAME = 'KNKK'.

  • FIELDCAT_LN-FIELDNAME = 'GRUPP'.

  • FIELDCAT_LN-COL_POS = COL_POS.

  • APPEND FIELDCAT_LN TO FIELDCAT.

*Sales District

  • ADD 1 TO col_pos.

  • CLEAR fieldcat_ln.

  • fieldcat_ln-ref_tabname = 'KNVV'.

  • fieldcat_ln-fieldname = 'BZIRK'.

  • fieldcat_ln-col_pos = col_pos.

  • fieldcat_ln-seltext_l = 'S_Distt'.

  • fieldcat_ln-seltext_m = 'S_Distt'.

  • fieldcat_ln-seltext_s = 'S_Distt'.

*

  • APPEND fieldcat_ln TO fieldcat.

*

    • Sales Office

  • ADD 1 TO col_pos.

  • CLEAR fieldcat_ln.

  • fieldcat_ln-ref_tabname = 'KNVV'.

  • fieldcat_ln-fieldname = 'VKBUR'.

  • fieldcat_ln-col_pos = col_pos.

  • fieldcat_ln-seltext_l = 'S_Off'.

  • fieldcat_ln-seltext_m = 'S_Off'.

  • fieldcat_ln-seltext_s = 'S_Off'.

*

  • APPEND fieldcat_ln TO fieldcat.

  • Cust Creat Date

  • ADD 1 TO COL_POS.

  • CLEAR FIELDCAT_LN.

  • FIELDCAT_LN-REF_TABNAME = 'lfa1'.

  • FIELDCAT_LN-FIELDNAME = 'ERDAT'.

  • FIELDCAT_LN-COL_POS = COL_POS.

  • APPEND FIELDCAT_LN TO FIELDCAT.

  • Del Plant

  • ADD 1 TO col_pos.

  • CLEAR fieldcat_ln.

  • fieldcat_ln-ref_tabname = 'KNVV'.

  • fieldcat_ln-fieldname = 'VWERK'.

  • fieldcat_ln-col_pos = col_pos.

  • APPEND fieldcat_ln TO fieldcat.

    • Sales Group

  • ADD 1 TO col_pos.

  • CLEAR fieldcat_ln.

  • fieldcat_ln-ref_tabname = 'KNVV'.

  • fieldcat_ln-fieldname = 'VKGRP'.

  • fieldcat_ln-col_pos = col_pos.

  • APPEND fieldcat_ln TO fieldcat.

  • Sort Criteria

ADD 1 TO col_pos.

CLEAR fieldcat_ln.

fieldcat_ln-ref_tabname = 'bsik'.

fieldcat_ln-ref_fieldname = 'lifnr'.

fieldcat_ln-fieldname = 'PSORT'.

fieldcat_ln-col_pos = col_pos.

fieldcat_ln-do_sum = 'X'.

fieldcat_ln-seltext_l = 'Sort Field'.

fieldcat_ln-seltext_m = 'Sort Field'.

fieldcat_ln-seltext_s = 'Sort Field'.

APPEND fieldcat_ln TO fieldcat.

  • Sales of Customer

  • ADD 1 TO col_pos.

  • CLEAR fieldcat_ln.

    • fieldcat_ln-ref_tabname = 'bsik'.

    • fieldcat_ln-ref_fieldname = 'DMBTR'.

  • fieldcat_ln-fieldname = 'TOTSAL'.

  • fieldcat_ln-col_pos = col_pos.

  • fieldcat_ln-do_sum = 'X'.

  • fieldcat_ln-hotspot = 'X'.

  • fieldcat_ln-emphasize = 'C41'.

  • fieldcat_ln-seltext_l = 'Total Sales'.

  • fieldcat_ln-seltext_m = 'Total Sales'.

  • fieldcat_ln-seltext_s = 'Total Sales'.

  • APPEND fieldcat_ln TO fieldcat.

ENDFORM. " BUILD_FIELDCAT

&----


*& Form BUILD_SORTCAT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM build_sortcat.

  • SORTCAT_LN-SPOS = '1'.

sortcat_ln-spos = '2'. " 0001

sortcat_ln-fieldname = 'PSORT'.

sortcat_ln-up = 'X'. " 0001

  • sortcat_ln-subtot = 'X'.

APPEND sortcat_ln TO sortcat.

CLEAR sortcat_ln.

  • SORTCAT_LN-SPOS = '2'.

  • SORTCAT_LN-FIELDNAME = 'lifnr'.

sortcat_ln-spos = '1'. " 0001

sortcat_ln-fieldname = 'NAME1'. " 0001

sortcat_ln-up = 'X'.

APPEND sortcat_ln TO sortcat.

ENDFORM. " BUILD_SORTCAT

&----


*& Form BUILD_EVENTCAT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM build_eventcat.

eventcat_ln-name = 'TOP_OF_PAGE'.

eventcat_ln-form = 'PAGE_HEADER'.

APPEND eventcat_ln TO eventcat.

ENDFORM. " BUILD_EVENTCAT

&----


*& Form BUILD_LAYOUT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM build_layout.

layout_in-colwidth_optimize = 'X'.

  • layout_in-no_hotspot = 'X'.

layout_in-zebra = 'X'.

layout_in-get_selinfos = 'X'.

ENDFORM. " BUILD_LAYOUT

&----


*& Form START_LIST_VIEWER

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM start_list_viewer.

DATA: pgm LIKE sy-repid.

pgm = sy-repid.

  • if t_variant[] is initial.

  • t_variant-report = pgm.

  • t_variant-variant = '/ATB'.

  • t_variant-TEXT = '/ATB'.

  • t_variant-DEPENDVARS = 'S'.

  • append t_variant.

  • clear t_variant.

  • endif.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

i_callback_program = pgm

i_callback_user_command = 'USER_COMMAND'

it_fieldcat = fieldcat

it_sort = sortcat

is_layout = layout_in

i_save = 'A'

  • IS_VARIANT = t_variant

it_events = eventcat

TABLES

t_outtab = itab

EXCEPTIONS

OTHERS = 2.

ENDFORM. " START_LIST_VIEWER

*----


FORM user_command USING ucomm LIKE sy-ucomm

selfield TYPE slis_selfield.

DATA l_lifnr(10) TYPE n.

READ TABLE itab INDEX selfield-tabindex.

CHECK sy-subrc = 0.

CASE ucomm.

WHEN '&IC1'.

CASE selfield-sel_tab_field.

WHEN 'ITAB-LIFNR'.

SET PARAMETER ID 'LIF' FIELD itab-lifnr.

SET PARAMETER ID 'BUK' FIELD p_bukrs.

  • IF itab-lifnr CO '0123456789 '.

  • l_lifnr = itab-lifnr.

  • itab-lifnr = l_lifnr.

  • ENDIF.

    • SELECT SINGLE kkber INTO knkk-kkber

    • FROM knkk WHERE lifnr = itab-lifnr.

    • IF sy-subrc EQ 0.

    • v_kkber = knkk-kkber.

    • ELSE.

    • CLEAR v_kkber.

    • ENDIF.

  • REFRESH sel_tab[].

  • MOVE: 'lifnr' TO sel_tab-selname,

  • 'P' TO sel_tab-kind, " PARAMETER

  • itab-lifnr TO sel_tab-low.

  • APPEND sel_tab.

  • CLEAR sel_tab.

  • MOVE: 'KKBER' TO sel_tab-selname,

  • 'P' TO sel_tab-kind, " PARAMETER

  • v_kkber TO sel_tab-low.

  • APPEND sel_tab.

  • CLEAR sel_tab.

*

  • SUBMIT rfdkli41

  • USING SELECTION-SET 'VAR1'

  • WITH SELECTION-TABLE sel_tab

  • AND RETURN.

CALL TRANSACTION 'XK03' AND SKIP FIRST SCREEN.

WHEN 'ITAB-ZCURRENT'. " 0001

v_days = 'CUR'.

PERFORM display_line_item_level.

WHEN 'ITAB-ZFUTURE'.

v_days = 'FUT'.

PERFORM display_line_item_level.

WHEN 'ITAB-30DAYS'.

v_days = '30D'.

PERFORM display_line_item_level.

WHEN 'ITAB-60DAYS'.

v_days = '60D'.

PERFORM display_line_item_level.

WHEN 'ITAB-90DAYS'.

v_days = '90D'.

PERFORM display_line_item_level.

WHEN 'ITAB-99DAYS'.

v_days = '99D'.

PERFORM display_line_item_level.

WHEN 'ITAB-120DAYS'.

v_days = '120D'.

PERFORM display_line_item_level.

WHEN 'ITAB-180DAYS'.

v_days = '180D'.

PERFORM display_line_item_level.

WHEN 'ITAB-365DAYS'.

v_days = '365D'.

PERFORM display_line_item_level.

WHEN 'ITAB-TOTAL'.

v_days = ' '.

PERFORM display_line_item_level. " 0001

ENDCASE.

ENDCASE.

ENDFORM. "USER_COMMAND

----


  • PAGE_HEADER

----


FORM page_header.

WRITE:/115 'Time:', sy-timlo.

WRITE: /115 'Date:', sy-datum.

*

*

  • WRITE: /52 'Customer Outstanding Agewise ', "0002

  • 115 'Page:', sy-pagno.

  • SKIP.

IF p_abs EQ 'X'.

WRITE: /52 'Vendor Outstanding Agewise (Absolute Aging)',

115 'Page:', sy-pagno.

ELSE.

WRITE: /52 'Vendor Outstanding Agewise (Due Date Aging)',

115 'Page:', sy-pagno.

ENDIF.

SKIP.

ULINE /(132).

***

WRITE: /02 'Open Items as of:', stida.

  • IF NOT s_vkgrp[] IS INITIAL.

  • IF s_vkgrp-high IS INITIAL.

  • WRITE: 52 'Sales Group :',s_vkgrp-low.

  • ELSE.

  • WRITE: 52 'Sales Group :',s_vkgrp-low,'to',s_vkgrp-high.

  • ENDIF.

  • ELSE.

  • WRITE: 52 'Sales Group : All'.

  • ENDIF.

  • IF NOT s_grupp[] IS INITIAL.

  • IF s_grupp-high IS INITIAL.

  • WRITE: 107 'Credit group :',s_grupp-low.

  • ELSE.

  • WRITE: 107 'Credit group :',s_grupp-low,' to',s_grupp-high.

  • ENDIF.

  • ELSE.

  • WRITE: 107 'Credit Group : All'.

  • ENDIF.

***

WRITE: /02 'Comapany Code :', p_bukrs.

  • IF NOT s_konda[] IS INITIAL.

  • IF s_konda-high IS INITIAL.

  • WRITE: 52 'Price group :',s_konda-low.

  • ELSE.

  • WRITE: 52 'Price group :',s_konda-low,' to',s_konda-high.

  • ENDIF.

  • ELSE.

  • WRITE: 52 'Price Group : All'.

  • ENDIF.

  • IF NOT s_ctlpc[] IS INITIAL.

  • IF s_ctlpc-high IS INITIAL.

  • WRITE: 107 'Risk category:',s_ctlpc-low.

  • ELSE.

  • WRITE: 107 'Risk category:',s_ctlpc-low,' to',s_ctlpc-high.

  • ENDIF.

  • ELSE.

  • WRITE: 107 'Risk category: All'.

  • ENDIF.

***

  • IF NOT s_vkbur[] IS INITIAL.

  • IF s_vkbur-high IS INITIAL.

  • WRITE:/02 'Sales Office :',s_vkbur-low.

  • ELSE.

  • WRITE:/02 'Sales Office :',s_vkbur-low,' to',s_vkbur-high.

  • ENDIF.

  • ELSE.

  • WRITE:/02 'Sales Office : All'.

  • ENDIF.

*

  • IF NOT s_kdgrp[] IS INITIAL.

  • IF s_kdgrp-high IS INITIAL.

  • WRITE: 52 'Customer group :',s_kdgrp-low.

  • ELSE.

  • WRITE: 52 'Customer group :',s_kdgrp-low,' to',s_kdgrp-high.

  • ENDIF.

  • ELSE.

  • WRITE: 52 'Customer group : All'.

  • ENDIF.

*

  • IF NOT s_ktokd[] IS INITIAL.

  • IF s_ktokd-high IS INITIAL.

  • WRITE: 107 'Account Group:',s_ktokd-low.

  • ELSE.

  • WRITE: 107 'Account Group:',s_ktokd-low,' to',s_ktokd-high.

  • ENDIF.

  • ELSE.

  • WRITE: 107 'Account Group: All'.

  • ENDIF.

***

IF NOT s_lifnr[] IS INITIAL.

IF s_lifnr-high IS INITIAL.

WRITE: /02 'Vendor No :',s_lifnr-low.

ELSE.

WRITE: /02 'Vendor No :',s_lifnr-low,' to',s_lifnr-high.

ENDIF.

ELSE.

WRITE: /02 'Vendor No : All'.

ENDIF.

  • IF NOT s_kkber[] IS INITIAL.

  • IF s_kkber-high IS INITIAL.

  • WRITE: 52 'Credit Control Area:',s_kkber-low.

  • ELSE.

  • WRITE: 52 'Credit Control Area:',s_kkber-low,' to',s_kkber-high.

  • ENDIF.

  • ELSE.

  • WRITE: 52 'Credit Control Area: All'.

  • ENDIF.

    • AKS for Heading Of Modification for Block Customer

  • IF c_all EQ 'X'.

  • WRITE: 107 'Filter: All Customers'.

  • ELSE.

  • IF c_run EQ 'X'.

  • WRITE: 107 'Filter: Running Customers'.

  • ELSE.

  • WRITE: 107 'Filter: Block Customers'.

  • ENDIF.

  • ENDIF.

*

*

  • SKIP.

ENDFORM. "PAGE_HEADER

&----


*& Form display_line_item_level

&----


  • text

----


FORM display_line_item_level.

REFRESH t_line[].

IF v_days EQ space.

LOOP AT t_item WHERE lifnr = itab-lifnr.

MOVE-CORRESPONDING t_item TO t_line.

APPEND t_line.

CLEAR t_line.

ENDLOOP.

ELSE.

LOOP AT t_item WHERE lifnr = itab-lifnr

AND days = v_days.

MOVE-CORRESPONDING t_item TO t_line.

APPEND t_line.

CLEAR t_line.

ENDLOOP.

ENDIF.

PERFORM build_fieldcat_item.

PERFORM build_sortcat_item.

PERFORM build_eventcat_item.

PERFORM build_layout_item.

PERFORM start_list_viewer_item.

ENDFORM. " display_line_item_level

&----


*& Form BUILD_FIELDCAT_item

&----


  • text

----


FORM build_fieldcat_item.

REFRESH fieldcat1.

  • DOCU TYPE

ADD 1 TO col_pos.

CLEAR fieldcat_ln.

fieldcat_ln-ref_tabname = 'bsik'.

fieldcat_ln-ref_fieldname = 'BLART'.

fieldcat_ln-fieldname = 'BLART'.

fieldcat_ln-col_pos = col_pos.

APPEND fieldcat_ln TO fieldcat1.

  • REF dOCU

ADD 1 TO col_pos.

CLEAR fieldcat_ln.

fieldcat_ln-ref_tabname = 'bsik'.

fieldcat_ln-ref_fieldname = 'XBLNR'.

fieldcat_ln-fieldname = 'XBLNR'.

fieldcat_ln-col_pos = col_pos.

APPEND fieldcat_ln TO fieldcat1.

  • BILLING dOCU

ADD 1 TO col_pos.

CLEAR fieldcat_ln.

fieldcat_ln-ref_tabname = 'bsik'.

fieldcat_ln-ref_fieldname = 'VBELN'.

fieldcat_ln-fieldname = 'VBELN'.

fieldcat_ln-col_pos = col_pos.

fieldcat_ln-hotspot = 'X'.

APPEND fieldcat_ln TO fieldcat1.

  • Belnr

ADD 1 TO col_pos.

CLEAR fieldcat_ln.

fieldcat_ln-ref_tabname = 'bsik'.

fieldcat_ln-fieldname = 'BELNR'.

fieldcat_ln-fieldname = 'BELNR'.

fieldcat_ln-col_pos = col_pos.

fieldcat_ln-hotspot = 'X'.

APPEND fieldcat_ln TO fieldcat1.

  • Budat

ADD 1 TO col_pos.

CLEAR fieldcat_ln.

fieldcat_ln-ref_tabname = 'bsik'.

fieldcat_ln-fieldname = 'BLDAT'.

fieldcat_ln-fieldname = 'BLDAT'.

fieldcat_ln-col_pos = col_pos.

APPEND fieldcat_ln TO fieldcat1.

  • Total Amount

ADD 1 TO col_pos.

CLEAR fieldcat_ln.

fieldcat_ln-ref_tabname = 'bsik'.

fieldcat_ln-ref_fieldname = 'DMBTR'.

fieldcat_ln-fieldname = 'DMBTR'.

fieldcat_ln-col_pos = col_pos.

fieldcat_ln-do_sum = 'X'.

fieldcat_ln-seltext_l = 'Amount'.

fieldcat_ln-seltext_m = 'Amount'.

fieldcat_ln-seltext_s = 'Amount'.

APPEND fieldcat_ln TO fieldcat1.

  • zfbdt

ADD 1 TO col_pos.

CLEAR fieldcat_ln.

fieldcat_ln-ref_tabname = 'bsik'.

fieldcat_ln-fieldname = 'ZFBDT'.

fieldcat_ln-col_pos = col_pos.

APPEND fieldcat_ln TO fieldcat1.

  • Total Amount

ADD 1 TO col_pos.

CLEAR fieldcat_ln.

fieldcat_ln-ref_tabname = 'bsik'.

fieldcat_ln-ref_fieldname = 'SGTXT'.

fieldcat_ln-fieldname = 'SGTXT'.

fieldcat_ln-col_pos = col_pos.

APPEND fieldcat_ln TO fieldcat1.

ADD 1 TO col_pos.

CLEAR fieldcat_ln.

fieldcat_ln-ref_tabname = 'bsik'.

fieldcat_ln-fieldname = 'ZUONR'.

fieldcat_ln-col_pos = col_pos.

APPEND fieldcat_ln TO fieldcat1.

ENDFORM. " BUILD_FIELDCAT_item

&----


*& Form BUILD_SORTCAT_item

&----


  • text

----


FORM build_sortcat_item.

REFRESH sortcat1.

sortcat_ln-spos = '1'.

sortcat_ln-fieldname = 'BLDAT'.

sortcat_ln-up = 'X'.

  • sortcat_ln-subtot = 'X'.

APPEND sortcat_ln TO sortcat1.

CLEAR sortcat_ln.

sortcat_ln-spos = '2'.

sortcat_ln-fieldname = 'BELNR'.

sortcat_ln-up = 'X'.

APPEND sortcat_ln TO sortcat1.

ENDFORM. " BUILD_SORTCAT_item

&----


*& Form BUILD_EVENTCAT_item

&----


  • text

----


FORM build_eventcat_item.

REFRESH eventcat1.

  • EVENTCAT_LN-NAME = 'TOP_OF_PAGE'.

  • EVENTCAT_LN-FORM = 'PAGE_HEADER'.

  • APPEND EVENTCAT_LN TO EVENTCAT1.

ENDFORM. " BUILD_EVENTCAT_item

&----


*& Form BUILD_LAYOUT_item

&----


  • text

----


FORM build_layout_item.

layout_in1-colwidth_optimize = 'X'.

  • layout_in-no_hotspot = 'X'.

layout_in1-zebra = 'X'.

layout_in1-get_selinfos = 'X'.

ENDFORM. " BUILD_LAYOUT_item

&----


*& Form START_LIST_VIEWER_item

&----


  • text

----


FORM start_list_viewer_item.

DATA: pgm LIKE sy-repid.

pgm = sy-repid.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

i_callback_program = pgm

i_callback_user_command = 'USER_COMMAND1'

it_fieldcat = fieldcat1

it_sort = sortcat1

is_layout = layout_in1

i_save = 'A'

it_events = eventcat1

TABLES

t_outtab = t_line

EXCEPTIONS

OTHERS = 2.

ENDFORM. " START_LIST_VIEWER_item

----


  • FORM USER_COMMAND1 *

----


  • ........ *

----


  • --> UCOMM *

  • --> SELFIELD *

----


FORM user_command1 USING ucomm LIKE sy-ucomm

selfield TYPE slis_selfield.

IF sy-lsind = 0.

ENDIF.

READ TABLE t_line INDEX selfield-tabindex.

CHECK sy-subrc = 0.

CASE ucomm.

WHEN '&IC1'.

CASE selfield-sel_tab_field.

WHEN 'T_LINE-lifnr'.

SET PARAMETER ID 'LIF' FIELD itab-lifnr.

SET PARAMETER ID 'BUK' FIELD p_bukrs.

CALL TRANSACTION 'XK03' AND SKIP FIRST SCREEN.

WHEN 'T_LINE-BELNR'.

SET PARAMETER ID 'BLN' FIELD t_line-belnr.

SET PARAMETER ID 'BUK' FIELD p_bukrs.

SET PARAMETER ID 'GJR' FIELD t_line-gjahr.

CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.

ENDCASE.

ENDCASE.

ENDFORM. "USER_COMMAND1

&----


*& Form MODIFY_FIELD

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM modify_field .

LOOP AT itab.

IF itab-total = 0.

itab-30days = 0.

itab-60days = 0.

itab-90days = 0.

itab-99days = 0.

itab-120days = 0.

itab-180days = 0.

itab-365days = 0.

itab-zcurrent = 0.

MODIFY itab.

ENDIF.

ENDLOOP.

DELETE itab WHERE total = 0.

ENDFORM. " MODIFY_FIELD

Regards,

Bhaskar

0 Kudos

Hi, pls provide the coding for functions: ZGET_PERIOD_FROM_DATE and NJ_CAL_DATE_IN_INTERVAL. thanks.

Regards,

Roselle

Former Member
0 Kudos

Look at standard SAP report RFFMFG_AGINGBYFUND.

Rob

Former Member
0 Kudos

An aging report is used to display all the open invoices (invoices without a payment) categorized by the difference in the due date (calculated with baseline date and payment terms) and current date. Usually, the due amount is displayed in different buckets such as <0 (payment not yet due), current (due now), 1-30 days, 31-60 days etc.

Vendor or A/P aging report should display open-vendor invoices i.e. vendor invoices for which payment has not been made.

Customer or A/R aging report should display open-customer invoices i.e. customer invoices for which payment has not been received.