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: 

ALV interactive in one report

nayanlad
Participant
0 Kudos

Hi gurus

no one understands my actual problem.

i had made a report for outstanding creditor aging report.

but i hav a problem with it that

first i 'm showing a summary of vendor's with aging in alv_grid_display.

when user click any vendor code it will take user command and it has to genrate detail alv report

but problem is it is showing same layout which the summary report have.

means my summary report have 11 fields only.

now it is showing detail in 11 fields only. and my detail report have 26 + fields, so i want to display this 26 fields.

note that same report , two internal table and two report which i have to show. and it have single alv-layout.

so please help me.

if you want source then i'll also pass source.

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi...

same functionality u can find in

report : BCALV_GRID_03

regards

vivek

6 REPLIES 6

Former Member
0 Kudos

Hi...

same functionality u can find in

report : BCALV_GRID_03

regards

vivek

0 Kudos

Thanks for reply Mr.Vivek but

pls check my source and say to me that where's my mistake.

REPORT YL_FI_OUTSTANDCREDITOR_NYN MESSAGE-ID ZAP.

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

  • DATABASE TABLES *

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

TABLES :BSAK, "ACCOUNTING: SECONDARY INDEX FOR VENDORS (CLEARED ITEMS)

LFA1, "VENDOR MASTER (GENERAL SECTION)

LFB1, "Vendor Master (Company Code)

BSIK, "ACCOUNTING: SECONDARY INDEX FOR VENDORS

EKKO, "PURCHASE ORDER HEADER

T052, "TERMS OF PAYMENT

BSEG. "ACCOUNTING DOCUMENT SEGMENT

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

  • INTERNAL TABLES

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

DATA: BEGIN OF ITAB_VEND OCCURS 0,

LIFNR LIKE LFA1-LIFNR, "VENDOR NO

BUKRS LIKE BSAK-BUKRS, "COMPANY CODE

GSBER LIKE BSIK-GSBER, "BUSINESS AREA

WRBTR LIKE BSIK-WRBTR, "AMOUNT IN LOCAL CURRENCY

DMBTR LIKE BSIK-DMBTR, "AMOUNT IN DOCUMENT CURRENCY

NAME1 LIKE LFA1-NAME1, "VENDOR NAME

SHKZG LIKE BSIK-SHKZG, "DEBIT/CREDIT INDICATOR

KTOKK LIKE LFA1-KTOKK, "VENDOR ACCOUNT GROUP

BLDAT LIKE BSIK-BLDAT, "DOCUMENT DATE

BUDAT LIKE BSIK-BUDAT, "POSTING DATE

BELNR LIKE BSIK-BELNR, "DOCUMENT NUMBER

ZFBDT LIKE BSIK-ZFBDT, "BASELINE DATE FOR DUE DATE CALCULATION

UMSKZ LIKE BSIK-UMSKZ, "SPECIAL G/L INDICATOR

BLART LIKE BSAK-BLART, "DOCUMENT TYPE

EBELN LIKE EKKO-EBELN,

ZTERM LIKE BSIK-ZTERM, "TERMS OF PAYMENT KEY

DUEDT LIKE BSAK-BUDAT, "DUE DATE

REBZJ LIKE BSIK-REBZJ, "FIN YEAR

REBZG LIKE BSIK-REBZG, "REF. DOC.

XBLNR LIKE BSIK-XBLNR,

END OF ITAB_VEND .

DATA: BEGIN OF ITAB_VEND1 OCCURS 0,

LIFNR LIKE LFA1-LIFNR,

NAME1 LIKE LFA1-NAME1,

BUKRS LIKE BSIK-BUKRS,

BELNR LIKE BSIK-BELNR,

BLDAT LIKE BSIK-BLDAT,

BUDAT LIKE BSIK-BUDAT,

DUEDT LIKE BSAK-BUDAT, "DUE DATE

DUDAY TYPE I, "DUE DAYS

EBELN LIKE EKKO-EBELN,

MINUS LIKE BSIK-WRBTR, "RANGE BELOW 0

ONE LIKE BSIK-WRBTR, "RANGE GREATER THAN 0 LESS THAN 30

TWO LIKE BSIK-WRBTR, "RANGE GREATER THAN 30 LESS THAN 60

THREE LIKE BSIK-WRBTR, "RANGE GREATER THAN 60 LESS THAN 90

FOUR LIKE BSIK-WRBTR, "RANGE GREATER THAN 90 LESS THAN 120

FIVE LIKE BSIK-WRBTR, "RANGE GREATER THAN 120 LESS THAN 180

SIX LIKE BSIK-WRBTR, "RANGE GREATER 180

CRED LIKE BSIK-WRBTR, "CREDIT

GJAHR LIKE BSIK-GJAHR,

ATOT LIKE BSIK-WRBTR,

WAERS LIKE BSIK-WAERS,

LWAERS LIKE BSIK-WAERS,

UMSKZ LIKE BSIK-UMSKZ,

ZTERM LIKE EKKO-ZTERM,

BLART LIKE BSIK-BLART,

ZFBDT LIKE BSIK-ZFBDT,

REBZJ LIKE BSIK-REBZJ, "REF. DOCUMENT

REBZG LIKE BSIK-REBZG, "FIN. YEAR

AADV LIKE BSIK-WRBTR, "UNADJUSTED ADVANCE AMOUNT

NWRBTR LIKE BSAK-WRBTR,

NDMBTR LIKE BSAK-DMBTR,

WRBTR LIKE BSAK-WRBTR,

DMBTR LIKE BSAK-DMBTR,

TEXT1 LIKE T052U-TEXT1,

END OF ITAB_VEND1.

DATA: BEGIN OF ITAB_VEND2 OCCURS 0,

BUKRS LIKE BSAK-BUKRS, "COMPANY CODE

BELNR LIKE BSIK-BELNR,

LIFNR LIKE LFA1-LIFNR,

NAME1 LIKE LFA1-NAME1,

XBLNR LIKE BSIK-XBLNR,

GSBER LIKE BSIK-GSBER,

BLDAT LIKE BSIK-BLDAT,

BUDAT LIKE BSIK-BUDAT,

DUEDT LIKE BSAK-BUDAT,

DUDAY TYPE I, "DUE DAYS

EBELN LIKE EKKO-EBELN,

MINUS LIKE BSIK-WRBTR, "RANGE BELOW 0

ONE LIKE BSIK-WRBTR, "RANGE GREATER THAN 0 LESS THAN 30

TWO LIKE BSIK-WRBTR, "RANGE GREATER THAN 30 LESS THAN 60

THREE LIKE BSIK-WRBTR, "RANGE GREATER THAN 60 LESS THAN 90

FOUR LIKE BSIK-WRBTR, "RANGE GREATER THAN 90 LESS THAN 120

FIVE LIKE BSIK-WRBTR, "RANGE GREATER THAN 120 LESS THAN 160

SIX LIKE BSIK-WRBTR, "RANGE GREATER THAN 180

CRED LIKE BSIK-WRBTR, "CREDIT

ATOT LIKE BSIK-WRBTR,

WAERS LIKE BSIK-WAERS,

LWAERS LIKE BSIK-WAERS,

UMSKZ LIKE BSIK-UMSKZ,

ZFBDT LIKE BSIK-ZFBDT,

ZTERM LIKE EKKO-ZTERM,

BLART LIKE BSIK-BLART,

REBZJ LIKE BSIK-REBZJ, "REF. DOCUMENT

REBZG LIKE BSIK-REBZG, "FIN. YEAR

AADV LIKE BSIK-WRBTR, "UNADJUSTED ADVANCE AMOUNT

NWRBTR LIKE BSIK-WRBTR,

NDMBTR LIKE BSIK-DMBTR,

TEXT1 LIKE T052U-TEXT1,

END OF ITAB_VEND2 .

DATA: BEGIN OF ITAB_VEND3 OCCURS 0,

BUKRS LIKE BSAK-BUKRS, "COMPANY CODE

BELNR LIKE BSIK-BELNR,

LIFNR LIKE LFA1-LIFNR,

NAME1 LIKE LFA1-NAME1,

XBLNR LIKE BSIK-XBLNR,

GSBER LIKE BSIK-GSBER,

BLDAT LIKE BSIK-BLDAT,

BUDAT LIKE BSIK-BUDAT,

DUEDT LIKE BSAK-BUDAT,

DUDAY TYPE I, "DUE DAYS

EBELN LIKE EKKO-EBELN,

MINUS LIKE BSIK-WRBTR, "RANGE BELOW 0

ONE LIKE BSIK-WRBTR, "RANGE GREATER THAN 0 LESS THAN 30

TWO LIKE BSIK-WRBTR, "RANGE GREATER THAN 30 LESS THAN 60

THREE LIKE BSIK-WRBTR, "RANGE GREATER THAN 60 LESS THAN 90

FOUR LIKE BSIK-WRBTR, "RANGE GREATER THAN 90 LESS THAN 120

FIVE LIKE BSIK-WRBTR, "RANGE GREATER THAN 120 LESS THAN 180

SIX LIKE BSIK-WRBTR, "RANGE GREATER THAN 180

CRED LIKE BSIK-WRBTR, "CREDIT

ATOT LIKE BSIK-WRBTR,

WAERS LIKE BSIK-WAERS,

LWAERS LIKE BSIK-WAERS,

UMSKZ LIKE BSIK-UMSKZ,

ZFBDT LIKE BSIK-ZFBDT,

ZTERM LIKE EKKO-ZTERM,

BLART LIKE BSIK-BLART,

REBZJ LIKE BSIK-REBZJ, "REF. DOCUMENT

REBZG LIKE BSIK-REBZG, "FIN. YEAR

AADV LIKE BSIK-WRBTR, "UNADJUSTED ADVANCE AMOUNT

NWRBTR LIKE BSIK-WRBTR,

NDMBTR LIKE BSIK-DMBTR,

TEXT1 LIKE T052U-TEXT1,

END OF ITAB_VEND3 .

DATA: BEGIN OF ITAB_VEND4 OCCURS 0,

BUKRS LIKE BSAK-BUKRS, "COMPANY CODE

BELNR LIKE BSIK-BELNR,

LIFNR LIKE LFA1-LIFNR,

NAME1 LIKE LFA1-NAME1,

XBLNR LIKE BSIK-XBLNR,

GSBER LIKE BSIK-GSBER, "BUSINESS AREA

BLDAT LIKE BSIK-BLDAT,

BUDAT LIKE BSIK-BUDAT,

DUEDT LIKE BSAK-BUDAT,

DUDAY TYPE I, "DUE DAYS

EBELN LIKE EKKO-EBELN,

MINUS LIKE BSIK-WRBTR, "RANGE BELOW 0

ONE LIKE BSIK-WRBTR, "RANGE GREATER THAN 0 LESS THAN 30

TWO LIKE BSIK-WRBTR, "RANGE GREATER THAN 30 LESS THAN 60

THREE LIKE BSIK-WRBTR, "RANGE GREATER THAN 60 LESS THAN 90

FOUR LIKE BSIK-WRBTR, "RANGE GREATER THAN 90 LESS THAN 120

FIVE LIKE BSIK-WRBTR, "RANGE GREATER THAN 120 LESS THAN 180

SIX LIKE BSIK-WRBTR, "RANGE GREATER THAN 180

CRED LIKE BSIK-WRBTR, "CREDIT

ATOT LIKE BSIK-WRBTR,

WAERS LIKE BSIK-WAERS,

LWAERS LIKE BSIK-WAERS,

UMSKZ LIKE BSIK-UMSKZ,

ZFBDT LIKE BSIK-ZFBDT,

ZTERM LIKE EKKO-ZTERM,

BLART LIKE BSIK-BLART,

REBZJ LIKE BSIK-REBZJ, "REF. DOCUMENT

REBZG LIKE BSIK-REBZG, "FIN. YEAR

AADV LIKE BSIK-WRBTR, "UNADJUSTED ADVANCE AMOUNT

NWRBTR LIKE BSIK-WRBTR,

NDMBTR LIKE BSIK-DMBTR,

TEXT1 LIKE T052U-TEXT1,

END OF ITAB_VEND4 .

DATA: BEGIN OF TEMP OCCURS 0,

BUKRS LIKE BSIK-BUKRS,

LIFNR LIKE LFA1-LIFNR,

NAME1 LIKE LFA1-NAME1,

XBLNR LIKE BSIK-XBLNR,

GSBER LIKE BSIK-GSBER,

BELNR LIKE BSIK-BELNR,

BLDAT LIKE BSIK-BLDAT,

BUDAT LIKE BSIK-BUDAT,

DUEDT LIKE BSAK-BUDAT, "DUE DATE

DUDAY TYPE I, "DUE DAYS

EBELN LIKE EKKO-EBELN,

MINUS LIKE BSIK-WRBTR, "RANGE BELOW 0

ONE LIKE BSIK-WRBTR, "RANGE GREATER THAN 0 LESS THAN 30

TWO LIKE BSIK-WRBTR, "RANGE GREATER THAN 30 LESS THAN 60

THREE LIKE BSIK-WRBTR, "RANGE GREATER THAN 60 LESS THAN 90

FOUR LIKE BSIK-WRBTR, "RANGE GREAT R THAN 90 LESS THAN 120

FIVE LIKE BSIK-WRBTR, "RANGE GREATER THAN 120 LESS THAN 180

SIX LIKE BSIK-WRBTR, "RANGE GREATER THAN 180

CRED LIKE BSIK-WRBTR, "CREDIT

WAERS LIKE BSIK-WAERS,

UMSKZ LIKE BSIK-UMSKZ,

GJAHR LIKE BSIK-GJAHR,

BLART LIKE BSIK-BLART,

ZTERM LIKE EKKO-ZTERM,

ZFBDT LIKE BSIK-ZFBDT,

REBZJ LIKE BSEG-REBZJ, "REF. DOCUMENT

REBZG LIKE BSEG-REBZG, "FIN. YEAR

AADV LIKE BSIK-WRBTR, "UNADJUSTED ADVANCE AMOUNT

WRBTR LIKE BSEG-WRBTR,

DMBTR LIKE BSEG-DMBTR,

NWRBTR LIKE BSEG-WRBTR,

NDMBTR LIKE BSEG-DMBTR,

TEXT1 LIKE T052U-TEXT1,

END OF TEMP.

DATA: BEGIN OF TEMP1 OCCURS 0,

BUKRS LIKE BSIK-BUKRS,

LIFNR LIKE LFA1-LIFNR,

NAME1 LIKE LFA1-NAME1,

XBLNR LIKE BSIK-XBLNR,

GSBER LIKE BSIK-GSBER,

BELNR LIKE BSIK-BELNR,

BLDAT LIKE BSIK-BLDAT,

BUDAT LIKE BSIK-BUDAT,

DUEDT LIKE BSAK-BUDAT, "DUE DATE

DUDAY TYPE I, "DUE DAYS

EBELN LIKE EKKO-EBELN,

MINUS LIKE BSIK-WRBTR, "RANGE BELOW 0

ONE LIKE BSIK-WRBTR, "RANGE GREATER THAN 0 LESS THAN 30

TWO LIKE BSIK-WRBTR, "RANGE GREATER THAN 30 LESS THAN 60

THREE LIKE BSIK-WRBTR, "RANGE GREATER THAN 61 LESS THAN 90

FOUR LIKE BSIK-WRBTR, "RANGE GREATER THAN 90 LESS THAN 120

FIVE LIKE BSIK-WRBTR, "RANGE GREATER THAN 120 LESS THAN 180

SIX LIKE BSIK-WRBTR, "RANGE GREATER THAN 180

CRED LIKE BSIK-WRBTR, "CREDIT

WAERS LIKE BSIK-WAERS,

UMSKZ LIKE BSIK-UMSKZ,

GJAHR LIKE BSIK-GJAHR,

BLART LIKE BSIK-BLART,

ZTERM LIKE EKKO-ZTERM,

ZFBDT LIKE BSIK-ZFBDT,

REBZJ LIKE BSIK-REBZJ, "REF. DOCUMENT

REBZG LIKE BSIK-REBZG, "FIN. YEAR

AADV LIKE BSIK-WRBTR, "UNADJUSTED ADVANCE AMOUNT

WRBTR LIKE BSEG-WRBTR,

DMBTR LIKE BSEG-DMBTR,

NWRBTR LIKE BSIK-WRBTR,

NDMBTR LIKE BSIK-DMBTR,

TEXT1 LIKE T052U-TEXT1,

END OF TEMP1.

DATA: BEGIN OF TEMP2 OCCURS 0,

BUKRS LIKE BSIK-BUKRS,

LIFNR LIKE LFA1-LIFNR,

NAME1 LIKE LFA1-NAME1,

BELNR LIKE BSIK-BELNR,

BLDAT LIKE BSIK-BLDAT,

BUDAT LIKE BSIK-BUDAT,

DUEDT LIKE BSAK-BUDAT, "DUE DATE

DUDAY TYPE I, "DUE DAYS

EBELN LIKE EKKO-EBELN,

MINUS LIKE BSIK-WRBTR, "RANGE BELOW 0

ONE LIKE BSIK-WRBTR, "RANGE GREATER THAN 0 LESS THAN 30

TWO LIKE BSIK-WRBTR, "RANGE GREATER THAN 30 LESS THAN 60

THREE LIKE BSIK-WRBTR, "RANGE GREATER THAN 60 LESS THAN 90

FOUR LIKE BSIK-WRBTR, "RANGE GREATER THAN 90 LESS THAN 120

FIVE LIKE BSIK-WRBTR, "RANGE GREATER THAN 120 LESS THAN 180

SIX LIKE BSIK-WRBTR, "RANGE GREATER THAN 180

CRED LIKE BSIK-WRBTR, "CREDIT

WAERS LIKE BSIK-WAERS,

UMSKZ LIKE BSIK-UMSKZ,

GJAHR LIKE BSIK-GJAHR,

BLART LIKE BSIK-BLART,

ZTERM LIKE EKKO-ZTERM,

ZFBDT LIKE BSIK-ZFBDT,

REBZJ LIKE BSIK-REBZJ, "REF. DOCUMENT

REBZG LIKE BSIK-REBZG, "FIN. YEAR

AADV LIKE BSIK-WRBTR, "UNADJUSTED ADVANCE AMOUNT

WRBTR LIKE BSEG-WRBTR,

DMBTR LIKE BSEG-DMBTR,

NWRBTR LIKE BSIK-WRBTR,

NDMBTR LIKE BSIK-DMBTR,

TEXT1 LIKE T052U-TEXT1,

END OF TEMP2.

DATA: BEGIN OF TEMP3 OCCURS 0,

BUKRS LIKE BSIK-BUKRS,

LIFNR LIKE LFA1-LIFNR,

NAME1 LIKE LFA1-NAME1,

BELNR LIKE BSIK-BELNR,

BLDAT LIKE BSIK-BLDAT,

BUDAT LIKE BSIK-BUDAT,

DUEDT LIKE BSAK-BUDAT, "DUE DATE

DUDAY TYPE I, "DUE DAYS

EBELN LIKE EKKO-EBELN,

MINUS LIKE BSIK-WRBTR, "RANGE BELOW 0

ONE LIKE BSIK-WRBTR, "RANGE GREATER THAN 0 LESS THAN 30

TWO LIKE BSIK-WRBTR, "RANGE GREATER THAN 30 LESS THAN 60

THREE LIKE BSIK-WRBTR, "RANGE GREATER THAN 60 LESS THAN 90

FOUR LIKE BSIK-WRBTR, "RANGE GREATER THAN 90 LESS THAN 120

FIVE LIKE BSIK-WRBTR, "RANGE GREATER THAN 120 LESS THAN 180

SIX LIKE BSIK-WRBTR, "RANGE GREATER THAN 180

CRED LIKE BSIK-WRBTR, "CREDIT

WAERS LIKE BSIK-WAERS,

UMSKZ LIKE BSIK-UMSKZ,

GJAHR LIKE BSIK-GJAHR,

BLART LIKE BSIK-BLART,

ZTERM LIKE EKKO-ZTERM,

ZFBDT LIKE BSIK-ZFBDT,

REBZJ LIKE BSEG-REBZJ, " EF. DOCUMENT

REBZG LIKE BSEG-REBZG, "FIN. YEAR

AADV LIKE BSIK-WRBTR, "UNADJUSTED ADVANCE AMOUNT

WRBTR LIKE BSEG-WRBTR,

DMBTR LIKE BSEG-DMBTR,

NWRBTR LIKE BSEG-WRBTR,

NDMBTR LIKE BSEG-DMBTR,

TEXT1 LIKE T052U-TEXT1,

END OF TEMP3.

DATA: BEGIN OF TEMP4 OCCURS 0,

BUKRS LIKE BSIK-BUKRS,

LIFNR LIKE LFA1-LIFNR,

NAME1 LIKE LFA1-NAME1,

XBLNR LIKE BSIK-XBLNR,

GSBER LIKE BSIK-GSBER, "BUSINESS AREA

BELNR LIKE BSIK-BELNR,

BLDAT LIKE BSIK-BLDAT,

BUDAT LIKE BSIK-BUDAT,

DUEDT LIKE BSAK-BUDAT, "DUE DATE

DUDAY TYPE I, "DUE DAYS

EBELN LIKE EKKO-EBELN,

MINUS LIKE BSIK-WRBTR, "RANGE BELOW 0

ONE LIKE BSIK-WRBTR, "RANGE GREATER THAN 0 LESS THAN 30

TWO LIKE BSIK-WRBTR, "RANGE GREATER THAN 30 LESS THAN 60

THREE LIKE BSIK-WRBTR, "RANGE GREATER THAN 60 LESS THAN 90

FOUR LIKE BSIK-WRBTR, "RANGE GREATER THAN 90 LESS THAN 120

FIVE LIKE BSIK-WRBTR, "RANGE GREATER THAN 120 LESS THAN 180

SIX LIKE BSIK-WRBTR, "RANGE GREATER THAN 180

CRED LIKE BSIK-WRBTR, "CREDIT

WAERS LIKE BSIK-WAERS,

UMSKZ LIKE BSIK-UMSKZ,

GJAHR LIKE BSIK-GJAHR,

BLART LIKE BSIK-BLART,

ZTERM LIKE EKKO-ZTERM,

ZFBDT LIKE BSIK-ZFBDT,

REBZJ LIKE BSEG-REBZJ, "REF. DOCUMENT

REBZG LIKE BSEG-REBZG, "FIN. YEAR

AADV LIKE BSIK-WRBTR, "UNADJUSTED ADVANCE AMOUNT

WRBTR LIKE BSEG-WRBTR,

DMBTR LIKE BSEG-DMBTR,

NWRBTR LIKE BSEG-WRBTR,

NDMBTR LIKE BSEG-DMBTR,

TEXT1 LIKE T052U-TEXT1,

END OF TEMP4.

*----


  • FINAL TWO TABLE DECLARE FOR NEW REPORT

*----


TYPES: BEGIN OF TYP_FINAL,

BUKRS LIKE BSAK-BUKRS, "COMPANY CODE

GSBER LIKE BSIK-GSBER, "BUSINESS AREA

LIFNR LIKE LFA1-LIFNR, "VENDOR NO

NAME1 LIKE LFA1-NAME1, "VENDOR NAME

MINUS LIKE BSIK-WRBTR, "RANGE BELOW 0

ONE LIKE BSIK-WRBTR, "RANGE GREATER THAN 0 LESS THAN 30

TWO LIKE BSIK-WRBTR, "RANGE GREATER THAN 30 LESS THAN 60

THREE LIKE BSIK-WRBTR, "RANGE GREATER THAN 60 LESS THAN 90

FOUR LIKE BSIK-WRBTR, "RANGE GREATER THAN 90 LESS THAN 120

FIVE LIKE BSIK-WRBTR, "RANGE GREATER THAN 120 LESS THAN 180

SIX LIKE BSIK-WRBTR, "RANGE GREATER 180

AADV LIKE BSIK-WRBTR, "UNADJUSTED ADVANCE AMOUNT

ATOT LIKE BSIK-WRBTR, "TOTAL AMOUNT

END OF TYP_FINAL.

DATA: ITAB_FINAL TYPE TABLE OF TYP_FINAL WITH HEADER LINE.

TYPES: BEGIN OF TYP_DETAIL,

BUKRS LIKE BSAK-BUKRS, "COMPANY CODE

GSBER LIKE BSIK-GSBER, "BUSINESS AREA

LIFNR LIKE LFA1-LIFNR, "VENDOR NO

NAME1 LIKE LFA1-NAME1, "VENDOR NAME

EBELN LIKE EKKO-EBELN, "PO NUMBER

BELNR LIKE BSIK-BELNR, "DOC NUMBER

XBLNR LIKE BSIK-XBLNR, "INVOICE NUMBER

UMSKZ LIKE BSIK-UMSKZ, "SPECIAL G/L INDICATOR

BLART LIKE BSIK-BLART, "DOCUMENT TYPE

BLDAT LIKE BSIK-BLDAT, "DOCUMENT DATE

BUDAT LIKE BSIK-BUDAT, "POSTING DATE

DUEDT LIKE BSAK-BUDAT, "DUE DATE

DUDAY TYPE I, "DUE DAYS

MINUS LIKE BSIK-WRBTR, "RANGE BELOW 0 (NOT YET DUE)

ONE LIKE BSIK-WRBTR, "RANGE GREATER THAN 0 LESS THAN 30

TWO LIKE BSIK-WRBTR, "RANGE GREATER THAN 30 LESS THAN 60

THREE LIKE BSIK-WRBTR, "RANGE GREATER THAN 60 LESS THAN 90

FOUR LIKE BSIK-WRBTR, "RANGE GREATER THAN 90 LESS THAN 120

FIVE LIKE BSIK-WRBTR, "RANGE GREATER THAN 120 LESS THAN 180

SIX LIKE BSIK-WRBTR, "RANGE GREATER 180

AADV LIKE BSIK-WRBTR, "UNADJUSTED ADVANCE AMOUNT

ATOT LIKE BSIK-WRBTR, "TOTAL AMOUNT

TEXT1 LIKE T052U-TEXT1,

END OF TYP_DETAIL.

DATA: ITAB_DETAIL TYPE TABLE OF TYP_DETAIL WITH HEADER LINE.

DATA: WMINUS LIKE BSIK-WRBTR, "RANGE BELOW 0 (NOT YET DUE)

WONE LIKE BSIK-WRBTR, "RANGE GREATER THAN 0 LESS THAN 30

WTWO LIKE BSIK-WRBTR, "RANGE GREATER THAN 30 LESS THAN 60

WTHREE LIKE BSIK-WRBTR, "RANGE GREATER THAN 60 LESS THAN 90

WFOUR LIKE BSIK-WRBTR, "RANGE GREATER THAN 90 LESS THAN 120

WFIVE LIKE BSIK-WRBTR, "RANGE GREATER THAN 120 LESS THAN 180

WSIX LIKE BSIK-WRBTR, "RANGE GREATER 180

WAADV LIKE BSIK-WRBTR, "UNADJUSTED ADVANCE AMOUNT

WATOT LIKE BSIK-WRBTR. "TOTAL AMOUNT.

DATA: BEGIN OF ITABVEND OCCURS 0,

LIFNR LIKE LFA1-LIFNR, "VENDOR NO

END OF ITABVEND.

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

  • WORK VARIABLES *

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

DATA V_SHKZG LIKE BSIK-SHKZG.

DATA W_DAYS TYPE I.

DATA TOT LIKE BSIK-WRBTR.

DATA NODAY(3) TYPE C.

DATA W_YER LIKE BSIK-GJAHR.

DATA W_DUEDT LIKE BSAK-BUDAT.

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

  • ALV DECLARATION *

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

*DATA : UPDGR. "SHIVAM

TYPE-POOLS : SLIS.

CONSTANTS:

GC_FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'.

DATA: G_REPID LIKE SY-REPID.

DATA :

  • USED FOR INDIVIDUAL COLUMN

GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,

G_TABNAME TYPE SLIS_TABNAME VALUE 'ITAB_OPEN_H',

  • USED FOR LAYOUT TYPE

GS_LAYOUT TYPE SLIS_LAYOUT_ALV,

  • USED FOR SUBTOTAL

GS_SUB TYPE SLIS_SUBTOT_TEXT,

GT_SP_GROUP TYPE SLIS_T_SP_GROUP_ALV,

  • USED FOR EVENTS IN THE REPORT

GT_EVENTS TYPE SLIS_T_EVENT,

GT_COL TYPE SLIS_COLOR, "USED FOR LAYOUT COLOR

  • FOR SORTING THE TABLE

GT_SORT TYPE SLIS_T_SORTINFO_ALV,

GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER,

  • CONTAINS THE USER EVENT

G_USER_COMMAND LIKE SLIS_EV_USER_COMMAND VALUE 'USER_COMMAND',

ALV_EVENT TYPE SLIS_ALV_EVENT, "STRUCTURE EVENT HANDLING

GT_PRINT TYPE SLIS_PRINT_ALV.

DATA IFIELDNAME(15).

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

*DATA FOR SELECTION SCREEN

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

DATA: GS_KEYINFO TYPE SLIS_KEYINFO_ALV,

G_TABNAME_HEADER TYPE SLIS_TABNAME,

G_TABNAME_ITEM TYPE SLIS_TABNAME.

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

  • ALV INITIALIZATION.

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

INITIALIZATION.

G_REPID = SY-REPID.

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

  • SELECT OPTIONS *

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

START-OF-SELECTION.

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.

SELECT-OPTIONS S_LIFNR FOR LFA1-LIFNR .

SELECT-OPTIONS S_BUKRS FOR BSAK-BUKRS OBLIGATORY DEFAULT 1000.

SELECT-OPTIONS S_GSBER FOR BSAK-GSBER .

SELECT-OPTIONS S_KTOKK FOR LFA1-KTOKK .

SELECT-OPTIONS S_BLART FOR BSAK-BLART.

SELECT-OPTIONS S_EBELN FOR EKKO-EBELN.

SELECTION-SCREEN END OF BLOCK B1.

SELECTION-SCREEN BEGIN OF BLOCK B4 WITH FRAME TITLE TEXT-009.

SELECTION-SCREEN BEGIN OF LINE.

PARAMETERS : P_S AS CHECKBOX.

SELECTION-SCREEN COMMENT 3(25) TEXT-007.

SELECT-OPTIONS S_UMSKZ FOR BSIK-UMSKZ .

SELECTION-SCREEN END OF LINE.

PARAMETERS : P_N AS CHECKBOX.

SELECTION-SCREEN END OF BLOCK B4.

SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-002.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(15) TEXT-005.

PARAMETERS P_IDAT RADIOBUTTON GROUP RAD1.

PARAMETERS P_IDAT1 LIKE BSIK-BLDAT OBLIGATORY.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(15) TEXT-006.

PARAMETERS P_PDAT RADIOBUTTON GROUP RAD1.

PARAMETERS P_PDAT1 LIKE BSIK-BUDAT OBLIGATORY .

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN END OF BLOCK B2.

SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-003.

PARAMETERS : P_LC RADIOBUTTON GROUP RAD2 .

PARAMETERS : P_DC RADIOBUTTON GROUP RAD2 .

SELECTION-SCREEN END OF BLOCK B3.

  • SELECTION-SCREEN BEGIN OF BLOCK B7 WITH FRAME TITLE TEXT-010.

  • PARAMETERS : P_DD RADIOBUTTON GROUP RAD4 DEFAULT 'X'.

  • PARAMETERS : P_BD RADIOBUTTON GROUP RAD4 .

  • PARAMETERS : P_DU RADIOBUTTON GROUP RAD4 .

  • SELECTION-SCREEN END OF BLOCK B7.

SELECTION-SCREEN BEGIN OF BLOCK B8 WITH FRAME TITLE TEXT-011.

PARAMETERS : P_D RADIOBUTTON GROUP RAD5 DEFAULT 'X'.

PARAMETERS : P_C RADIOBUTTON GROUP RAD5 .

PARAMETERS : P_B RADIOBUTTON GROUP RAD5 .

SELECTION-SCREEN END OF BLOCK B8.

SELECTION-SCREEN BEGIN OF BLOCK B9 WITH FRAME TITLE TEXT-012.

PARAMETERS : P_SUM RADIOBUTTON GROUP RAD6 DEFAULT 'X'.

PARAMETERS : P_DET RADIOBUTTON GROUP RAD6 .

SELECTION-SCREEN END OF BLOCK B9.

INITIALIZATION.

LOOP AT SCREEN.

IF SCREEN-NAME = 'P_IDAT1'.

SCREEN-INPUT = 0.

MODIFY SCREEN.

ENDIF.

IF SCREEN-NAME = 'P_PDAT1'.

SCREEN-INPUT = 0.

MODIFY SCREEN.

ENDIF.

IF SCREEN-NAME = 'S_UMSKZ-LOW' OR SCREEN-NAME = 'S_UMSKZ-HIGH'.

SCREEN-INPUT = 0.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

AT SELECTION-SCREEN.

IF S_KTOKK IS INITIAL AND S_LIFNR IS INITIAL .

MESSAGE E000.

ENDIF.

IF P_N EQ 'X' OR P_S EQ 'X' .

ELSE.

MESSAGE E001.

ENDIF.

AT SELECTION-SCREEN OUTPUT.

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

      • IF DOCUMENT DATE IS TICKED ************

IF P_IDAT EQ 'X'.

LOOP AT SCREEN.

IF SCREEN-NAME = 'P_IDAT1'.

SCREEN-INPUT = 1.

MODIFY SCREEN.

ENDIF.

IF SCREEN-NAME = 'P_PDAT1'.

SCREEN-INPUT = 0.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

ENDIF.

      • IF POSTING DATE IS TICKED *******

IF P_PDAT EQ 'X'.

LOOP AT SCREEN.

IF SCREEN-NAME = 'P_IDAT1'.

SCREEN-INPUT = 0.

MODIFY SCREEN.

ENDIF.

IF SCREEN-NAME = 'P_PDAT1'.

SCREEN-INPUT = 1.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

ENDIF.

          • IF SPECIAL & NORMAL ARE TICKED *****

IF P_S EQ 'X' AND P_N NE 'X'.

LOOP AT SCREEN.

IF SCREEN-NAME = 'S_UMSKZ-LOW' OR SCREEN-NAME = 'S_UMSKZ-HIGH'.

SCREEN-INPUT = 1.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

ENDIF.

          • IF NORMAL INDICATOR IS TICKED AND SPECIAL INDICATOR BLANK **

IF P_S EQ '' AND P_N EQ 'X'.

LOOP AT SCREEN.

IF SCREEN-NAME = 'S_UMSKZ-LOW' OR SCREEN-NAME = 'S_UMSKZ-HIGH'.

SCREEN-INPUT = 0.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

ENDIF.

START-OF-SELECTION.

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

*START QUERY FOR SELECTION PROCEDURE

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

      • START FOR DEBIT INDICATOR *******

IF P_D EQ 'X'.

                        • IF NORMAL AND SPECIAL INDICATOR ARE CHECKED****************

IF P_N EQ 'X' AND P_S EQ 'X'.

**********IF DOCUMENT DATE IS CHECKED*********************************

IF P_IDAT EQ 'X'.

*this is Inner join with BSIK Table

SELECT A~KTOKK A~NAME1 A~LIFNR B~GSBER B~SHKZG B~WRBTR B~DMBTR B~BLDAT

B~BUDAT B~BELNR B~BUKRS B~UMSKZ B~ZFBDT B~BLART B~ZTERM B~XBLNR

INTO (ITAB_VEND-KTOKK,ITAB_VEND-NAME1,ITAB_VEND-LIFNR,

ITAB_VEND-GSBER,V_SHKZG,ITAB_VEND-WRBTR,ITAB_VEND-DMBTR,

ITAB_VEND-BLDAT,ITAB_VEND-BUDAT,ITAB_VEND-BELNR,

ITAB_VEND-BUKRS,ITAB_VEND-UMSKZ,ITAB_VEND-ZFBDT,

ITAB_VEND-BLART,ITAB_VEND-ZTERM,ITAB_VEND-XBLNR)

FROM ( LFA1 AS A INNER JOIN BSIK AS B ON A~LIFNR = B~LIFNR )

WHERE A~LIFNR IN S_LIFNR AND

A~KTOKK IN S_KTOKK

AND BUKRS IN S_BUKRS

AND GSBER IN S_GSBER

AND BLDAT <= P_IDAT1

AND UMSKZ IN S_UMSKZ

AND BLART IN S_BLART

AND SHKZG EQ 'S'.

IF V_SHKZG EQ 'H'.

ITAB_VEND-WRBTR = ITAB_VEND-WRBTR * -1.

ITAB_VEND-DMBTR = ITAB_VEND-DMBTR * -1 .

ENDIF.

APPEND ITAB_VEND.

CLEAR ITAB_VEND.

ENDSELECT.

*this is Inner join with BSAK Table

SELECT A~KTOKK A~NAME1 A~LIFNR B~SHKZG B~WRBTR B~DMBTR B~BLDAT

B~BUDAT B~BELNR B~BUKRS B~UMSKZ B~ZFBDT B~BLART B~ZTERM

B~GSBER B~XBLNR INTO

(ITAB_VEND-KTOKK,ITAB_VEND-NAME1,ITAB_VEND-LIFNR,V_SHKZG,

ITAB_VEND-WRBTR,ITAB_VEND-DMBTR,ITAB_VEND-BLDAT,ITAB_VEND-BUDAT,

ITAB_VEND-BELNR,ITAB_VEND-BUKRS,ITAB_VEND-UMSKZ,ITAB_VEND-ZFBDT,

ITAB_VEND-BLART,ITAB_VEND-ZTERM,ITAB_VEND-GSBER,ITAB_VEND-XBLNR)

FROM ( LFA1 AS A INNER JOIN BSAK AS B ON A~LIFNR = B~LIFNR )

WHERE A~LIFNR IN S_LIFNR

AND A~KTOKK IN S_KTOKK

AND BUKRS IN S_BUKRS

AND GSBER IN S_GSBER

AND BLDAT <= P_IDAT1

AND UMSKZ IN S_UMSKZ

AND AUGDT > P_IDAT1

AND BLART IN S_BLART

AND SHKZG EQ 'S'.

IF V_SHKZG EQ 'H'.

ITAB_VEND-WRBTR = ITAB_VEND-WRBTR * -1.

ITAB_VEND-DMBTR = ITAB_VEND-DMBTR * -1 .

ENDIF.

APPEND ITAB_VEND.

CLEAR ITAB_VEND.

ENDSELECT.

*

ENDIF.

************************FOR POSTING DATE*************************************

IF P_PDAT EQ 'X'.

  • this is Inner join with BSIK Table

SELECT A~KTOKK A~NAME1 A~LIFNR B~SHKZG B~WRBTR B~DMBTR B~BLDAT B~BUDAT

B~BELNR B~BUKRS B~UMSKZ B~ZFBDT B~BLART B~ZTERM

B~GSBER B~XBLNR INTO

(ITAB_VEND-KTOKK,ITAB_VEND-NAME1,ITAB_VEND-LIFNR,V_SHKZG,

ITAB_VEND-WRBTR,ITAB_VEND-DMBTR,ITAB_VEND-BLDAT,ITAB_VEND-BUDAT,

ITAB_VEND-BELNR,ITAB_VEND-BUKRS,ITAB_VEND-UMSKZ,ITAB_VEND-ZFBDT,

ITAB_VEND-BLART,ITAB_VEND-ZTERM,

ITAB_VEND-GSBER,ITAB_VEND-XBLNR)

FROM ( LFA1 AS A INNER JOIN BSIK AS B ON A~LIFNR = B~LIFNR )

WHERE A~LIFNR IN S_LIFNR

AND A~KTOKK IN S_KTOKK

AND BUKRS IN S_BUKRS

AND GSBER IN S_GSBER

AND BUDAT <= P_PDAT1

AND UMSKZ IN S_UMSKZ

AND BLART IN S_BLART

AND SHKZG EQ 'S'.

IF V_SHKZG EQ 'H'.

ITAB_VEND-WRBTR = ITAB_VEND-WRBTR * -1.

ITAB_VEND-DMBTR = ITAB_VEND-DMBTR * -1 .

ENDIF.

APPEND ITAB_VEND.

CLEAR ITAB_VEND.

ENDSELECT.

*4 this is Inner join with BSAK Table

SELECT A~KTOKK A~NAME1 A~LIFNR B~SHKZG B~WRBTR B~DMBTR B~BLDAT

B~BUDAT B~BELNR B~BUKRS B~UMSKZ B~ZFBDT B~BLART B~ZTERM

B~GSBER B~XBLNR INTO

(ITAB_VEND-KTOKK,ITAB_VEND-NAME1,ITAB_VEND-LIFNR,V_SHKZG,

ITAB_VEND-WRBTR,ITAB_VEND-DMBTR,ITAB_VEND-BLDAT,ITAB_VEND-BUDAT,

ITAB_VEND-BELNR,ITAB_VEND-BUKRS,ITAB_VEND-UMSKZ,ITAB_VEND-ZFBDT,

ITAB_VEND-BLART,ITAB_VEND-ZTERM,ITAB_VEND-GSBER,ITAB_VEND-XBLNR)

FROM ( LFA1 AS A INNER JOIN BSAK AS B ON A~LIFNR = B~LIFNR )

WHERE A~LIFNR IN S_LIFNR

AND A~KTOKK IN S_KTOKK

AND BUKRS IN S_BUKRS

AND GSBER IN S_GSBER

AND AUGDT > P_PDAT1

AND UMSKZ IN S_UMSKZ

AND BUDAT <= P_PDAT1

AND BLART IN S_BLART

AND SHKZG EQ 'S'.

IF V_SHKZG EQ 'H'.

ITAB_VEND-WRBTR = ITAB_VEND-WRBTR * -1.

ITAB_VEND-DMBTR = ITAB_VEND-DMBTR * -1 .

ENDIF.

APPEND ITAB_VEND.

CLEAR ITAB_VEND.

ENDSELECT.

ENDIF.

ENDIF.

                                          • NORMAL ALONE IS SELECTED ********************************

IF P_N EQ 'X' AND P_S EQ ''.

*************************DOCUMENT DATE*****************************************

IF P_IDAT EQ 'X'.

*5 if Document date this is Inner join with BSIK Table

SELECT A~KTOKK A~NAME1 A~LIFNR B~SHKZG B~WRBTR B~DMBTR B~BLDAT B~BUDAT

B~BELNR B~BUKRS B~UMSKZ B~ZFBDT B~BLART B~ZTERM

B~GSBER B~XBLNR INTO

(ITAB_VEND-KTOKK,ITAB_VEND-NAME1,ITAB_VEND-LIFNR,V_SHKZG,

ITAB_VEND-WRBTR,ITAB_VEND-DMBTR,ITAB_VEND-BLDAT,ITAB_VEND-BUDAT,

ITAB_VEND-BELNR,ITAB_VEND-BUKRS,ITAB_VEND-UMSKZ,ITAB_VEND-ZFBDT,

ITAB_VEND-BLART,ITAB_VEND-ZTERM,ITAB_VEND-GSBER,ITAB_VEND-XBLNR)

FROM ( LFA1 AS A INNER JOIN BSIK AS B ON A~LIFNR = B~LIFNR )

WHERE A~LIFNR IN S_LIFNR

AND A~KTOKK IN S_KTOKK

AND BUKRS IN S_BUKRS

AND GSBER IN S_GSBER

AND BLDAT <= P_IDAT1

AND UMSKZ EQ ' '

AND BLART IN S_BLART

AND SHKZG EQ 'S'.

IF V_SHKZG EQ 'H'.

ITAB_VEND-WRBTR = ITAB_VEND-WRBTR * -1.

ITAB_VEND-DMBTR = ITAB_VEND-DMBTR * -1 .

ENDIF.

APPEND ITAB_VEND.

CLEAR ITAB_VEND.

ENDSELECT.

*6 if Document date this is Inner join with BSAK Table

SELECT A~KTOKK A~NAME1 A~LIFNR B~SHKZG B~WRBTR B~DMBTR B~BLDAT

B~BUDAT B~BELNR B~BUKRS B~UMSKZ B~ZFBDT B~BLART B~ZTERM

B~GSBER B~XBLNR INTO

(ITAB_VEND-KTOKK,ITAB_VEND-NAME1,ITAB_VEND-LIFNR,V_SHKZG,

ITAB_VEND-WRBTR,ITAB_VEND-DMBTR,ITAB_VEND-BLDAT,ITAB_VEND-BUDAT,

ITAB_VEND-BELNR,ITAB_VEND-BUKRS,ITAB_VEND-UMSKZ,ITAB_VEND-ZFBDT,

ITAB_VEND-BLART,ITAB_VEND-ZTERM,ITAB_VEND-GSBER,ITAB_VEND-XBLNR)

FROM ( LFA1 AS A INNER JOIN BSAK AS B ON A~LIFNR = B~LIFNR )

WHERE A~LIFNR IN S_LIFNR

AND A~KTOKK IN S_KTOKK

AND BUKRS IN S_BUKRS

AND GSBER IN S_GSBER

AND BLDAT <= P_IDAT1

AND UMSKZ EQ ''

AND AUGDT > P_IDAT1

AND BLART IN S_BLART

AND SHKZG EQ 'S'.

IF V_SHKZG EQ 'H'.

ITAB_VEND-WRBTR = ITAB_VEND-WRBTR * -1.

ITAB_VEND-DMBTR = ITAB_VEND-DMBTR * -1 .

ENDIF.

APPEND ITAB_VEND.

CLEAR ITAB_VEND.

ENDSELECT.

ENDIF.

**************************POSTING DATE****************************************

IF P_PDAT EQ 'X'.

*7 if Posting date this is Inner join with BSIK Table

SELECT A~KTOKK A~NAME1 A~LIFNR B~SHKZG B~WRBTR B~DMBTR B~BLDAT B~BUDAT

B~BELNR B~BUKRS B~UMSKZ B~ZFBDT B~BLART B~ZTERM B~GSBER B~XBLNR

INTO

(ITAB_VEND-KTOKK,ITAB_VEND-NAME1,ITAB_VEND-LIFNR,V_SHKZG,

ITAB_VEND-WRBTR,ITAB_VEND-DMBTR,ITAB_VEND-BLDAT,ITAB_VEND-BUDAT,

ITAB_VEND-BELNR,ITAB_VEND-BUKRS,ITAB_VEND-UMSKZ,ITAB_VEND-ZFBDT,

ITAB_VEND-BLART,ITAB_VEND-ZTERM,ITAB_VEND-GSBER,ITAB_VEND-XBLNR)

FROM ( LFA1 AS A INNER JOIN BSIK AS B ON A~LIFNR = B~LIFNR )

WHERE A~LIFNR IN S_LIFNR

AND A~KTOKK IN S_KTOKK

AND BUKRS IN S_BUKRS

AND GSBER IN S_GSBER

AND BUDAT <= P_PDAT1

AND UMSKZ EQ ' '

AND BLART IN S_BLART

AND SHKZG EQ 'S'.

IF V_SHKZG EQ 'H'.

ITAB_VEND-WRBTR = ITAB_VEND-WRBTR * -1.

ITAB_VEND-DMBTR = ITAB_VEND-DMBTR * -1 .

ENDIF.

APPEND ITAB_VEND.

CLEAR ITAB_VEND.

ENDSELECT.

*8 if Posting date this is Inner join with BSAK Table

SELECT A~KTOKK A~NAME1 A~LIFNR B~SHKZG B~WRBTR B~DMBTR B~BLDAT

B~BUDAT B~BELNR B~BUKRS B~UMSKZ B~ZFBDT B~BLART B~ZTERM B~GSBER

B~XBLNR INTO

(ITAB_VEND-KTOKK,ITAB_VEND-NAME1,ITAB_VEND-LIFNR,V_SHKZG,

ITAB_VEND-WRBTR,ITAB_VEND-DMBTR,ITAB_VEND-BLDAT,ITAB_VEND-BUDAT,

ITAB_VEND-BELNR,ITAB_VEND-BUKRS,ITAB_VEND-UMSKZ,ITAB_VEND-ZFBDT,

ITAB_VEND-BLART,ITAB_VEND-ZTERM,ITAB_VEND-GSBER,ITAB_VEND-XBLNR)

FROM ( LFA1 AS A INNER JOIN BSAK AS B ON A~LIFNR = B~LIFNR )

WHERE A~LIFNR IN S_LIFNR AND

A~KTOKK IN S_KTOKK

AND BUKRS IN S_BUKRS

AND GSBER IN S_GSBER

AND AUGDT > P_PDAT1

AND UMSKZ EQ ' '

AND BUDAT <= P_PDAT1

AND BLART IN S_BLART

AND SHKZG EQ 'S'.

IF V_SHKZG EQ 'H'.

ITAB_VEND-WRBTR = ITAB_VEND-WRBTR * -1.

ITAB_VEND-DMBTR = ITAB_VEND-DMBTR * -1 .

ENDIF.

APPEND ITAB_VEND.

CLEAR ITAB_VEND.

ENDSELECT.

ENDIF.

ENDIF.

**********************FOR SPECIAL INDICATOR*********************************

IF P_N EQ '' AND P_S EQ 'X'.

*******************************DOCUMENT DATE********************************

IF P_IDAT EQ 'X'.

*9 if Document date this is Inner join with BSIK Table

SELECT A~KTOKK A~NAME1 A~LIFNR B~SHKZG B~WRBTR B~DMBTR B~BLDAT B~BUDAT

B~BELNR B~BUKRS B~UMSKZ B~ZFBDT B~BLART B~ZTERM B~GSBER B~XBLNR

INTO

(ITAB_VEND-KTOKK,ITAB_VEND-NAME1,ITAB_VEND-LIFNR,V_SHKZG,

ITAB_VEND-WRBTR,ITAB_VEND-DMBTR,ITAB_VEND-BLDAT,ITAB_VEND-BUDAT,

ITAB_VEND-BELNR,ITAB_VEND-BUKRS,ITAB_VEND-UMSKZ,ITAB_VEND-ZFBDT,

ITAB_VEND-BLART,ITAB_VEND-ZTERM,ITAB_VEND-GSBER,ITAB_VEND-XBLNR)

FROM ( LFA1 AS A INNER JOIN BSIK AS B ON A~LIFNR = B~LIFNR )

WHERE A~LIFNR IN S_LIFNR

AND A~KTOKK IN S_KTOKK

AND BUKRS IN S_BUKRS

AND GSBER IN S_GSBER

AND BLDAT <= P_IDAT1

AND UMSKZ IN S_UMSKZ

AND UMSKZ NE SPACE

AND BLART IN S_BLART

AND SHKZG EQ 'S'.

IF V_SHKZG EQ 'H'.

ITAB_VEND-WRBTR = ITAB_VEND-WRBTR * -1.

ITAB_VEND-DMBTR = ITAB_VEND-DMBTR * -1 .

ENDIF.

APPEND ITAB_VEND.

CLEAR ITAB_VEND.

ENDSELECT.

*10 if Document date this is Inner join with BSAK Table

SELECT A~KTOKK A~NAME1 A~LIFNR B~SHKZG B~WRBTR B~DMBTR B~BLDAT

B~BUDAT B~BELNR B~BUKRS B~UMSKZ B~ZFBDT B~BLART B~ZTERM

B~GSBER B~XBLNR INTO

(ITAB_VEND-KTOKK,ITAB_VEND-NAME1,ITAB_VEND-LIFNR,V_SHKZG,

ITAB_VEND-WRBTR,ITAB_VEND-DMBTR,ITAB_VEND-BLDAT,ITAB_VEND-BUDAT,

ITAB_VEND-BELNR,ITAB_VEND-BUKRS,ITAB_VEND-UMSKZ,ITAB_VEND-ZFBDT,

ITAB_VEND-BLART,ITAB_VEND-ZTERM,ITAB_VEND-GSBER,ITAB_VEND-XBLNR)

FROM ( LFA1 AS A INNER JOIN BSAK AS B ON A~LIFNR = B~LIFNR )

WHERE A~LIFNR IN S_LIFNR

AND A~KTOKK IN S_KTOKK

AND BUKRS IN S_BUKRS

AND GSBER IN S_GSBER

AND BLDAT <= P_IDAT1

AND UMSKZ IN S_UMSKZ

AND AUGDT > P_IDAT1

AND UMSKZ NE SPACE

AND BLART IN S_BLART

AND SHKZG EQ 'S'.

IF V_SHKZG EQ 'H'.

ITAB_VEND-WRBTR = ITAB_VEND-WRBTR * -1.

ITAB_VEND-DMBTR = ITAB_VEND-DMBTR * -1 .

ENDIF.

APPEND ITAB_VEND.

CLEAR ITAB_VEND.

ENDSELECT.

ENDIF.

*********************************POSTING DATE***********************************

IF P_PDAT EQ 'X'.

*11 if POSTING date this is Inner join with BSIK Table

SELECT A~KTOKK A~NAME1 A~LIFNR B~SHKZG B~WRBTR B~DMBTR B~BLDAT B~BUDAT

B~BELNR B~BUKRS B~UMSKZ B~ZFBDT B~BLART B~ZTERM B~GSBER B~XBLNR

INTO

(ITAB_VEND-KTOKK,ITAB_VEND-NAME1,ITAB_VEND-LIFNR,V_SHKZG,

ITAB_VEND-WRBTR,ITAB_VEND-DMBTR,ITAB_VEND-BLDAT,ITAB_VEND-BUDAT,

ITAB_VEND-BELNR, ITAB_VEND-BUKRS,ITAB_VEND-UMSKZ,ITAB_VEND-ZFBDT,

ITAB_VEND-BLART,ITAB_VEND-ZTERM,ITAB_VEND-GSBER,ITAB_VEND-XBLNR)

FROM ( LFA1 AS A INNER JOIN BSIK AS B ON A~LIFNR = B~LIFNR )

WHERE A~LIFNR IN S_LIFNR

AND A~KTOKK IN S_KTOKK

AND BUKRS IN S_BUKRS

AND GSBER IN S_GSBER

AND BUDAT <= P_PDAT1

AND UMSKZ IN S_UMSKZ

AND UMSKZ NE SPACE

AND BLART IN S_BLART

AND SHKZG EQ 'S'.

IF V_SHKZG EQ 'H'.

ITAB_VEND-WRBTR = ITAB_VEND-WRBTR * -1.

ITAB_VEND-DMBTR = ITAB_VEND-DMBTR * -1 .

ENDIF.

APPEND ITAB_VEND.

CLEAR ITAB_VEND.

ENDSELECT.

*12 if Posting date this is Inner join with BSAK Table

SELECT A~KTOKK A~NAME1 A~LIFNR B~SHKZG B~WRBTR B~DMBTR B~BLDAT

B~BUDAT B~BELNR B~BUKRS B~UMSKZ B~ZFBDT B~BLART B~ZTERM

B~GSBER B~XBLNR INTO

(ITAB_VEND-KTOKK,ITAB_VEND-NAME1,ITAB_VEND-LIFNR,V_SHKZG,

ITAB_VEND-WRBTR,ITAB_VEND-DMBTR,ITAB_VEND-BLDAT,ITAB_VEND-BUDAT,

ITAB_VEND-BELNR,ITAB_VEND-BUKRS,ITAB_VEND-UMSKZ,ITAB_VEND-ZFBDT,

ITAB_VEND-BLART,ITAB_VEND-ZTERM,ITAB_VEND-GSBER,ITAB_VEND-XBLNR)

FROM ( LFA1 AS A INNER JOIN BSAK AS B ON A~LIFNR = B~LIFNR )

WHERE A~LIFNR IN S_LIFNR

AND A~KTOKK IN S_KTOKK

AND BUKRS IN S_BUKRS

AND GSBER IN S_GSBER

AND AUGDT > P_PDAT1

AND UMSKZ IN S_UMSKZ

AND UMSKZ NE SPACE

AND BUDAT <= P_PDAT1

AND BLART IN S_BLART

AND SHKZG EQ 'S'.

IF V_SHKZG EQ 'H'.

ITAB_VEND-WRBTR = ITAB_VEND-WRBTR * -1.

ITAB_VEND-DMBTR = ITAB_VEND-DMBTR * -1 .

ENDIF.

APPEND ITAB_VEND.

CLEAR ITAB_VEND.

ENDSELECT.

ENDIF.

ENDIF.

                                                        • END FOR DEBIT INDICATOR ******************************************

    • START FOR NET OFF VALUE DISPLAY ********

SORT ITAB_VEND BY BLART.

LOOP AT ITAB_VEND WHERE BLART EQ 'AB' OR BLART EQ 'KA'.

MOVE-CORRESPONDING ITAB_VEND TO TEMP4.

COLLECT TEMP4.

CLEAR TEMP4.

DELETE ITAB_VEND.

CLEAR ITAB_VEND.

ENDLOOP.

CLEAR ITAB_VEND.

LOOP AT TEMP4.

READ TABLE ITAB_VEND WITH KEY LIFNR = TEMP4-LIFNR BELNR = TEMP4-REBZG.

IF SY-SUBRC EQ 0.

IF ITAB_VEND-WRBTR NE TEMP1-WRBTR AND ITAB_VEND-DMBTR NE TEMP1-DMBTR.

IF V_SHKZG EQ 'S'.

TEMP1-NWRBTR = ITAB_VEND-WRBTR + TEMP1-WRBTR.

TEMP1-NDMBTR = ITAB_VEND-DMBTR + TEMP1-DMBTR.

DELETE ITAB_VEND WHERE LIFNR = TEMP1-LIFNR AND BELNR = TEMP1-REBZG.

MODIFY TEMP1.

CLEAR TEMP1.

ENDIF.

ENDIF.

ENDIF.

ENDLOOP.

                                                                • END FOR NET OFF VALUE DISPLAY *******************

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

  • START FOR NO. OF DAYS CALCULATION FOR AGING OUTPUT DISPLAY *

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

LOOP AT TEMP4.

READ TABLE ITAB_VEND1 WITH KEY LIFNR = TEMP4-LIFNR.

ITAB_VEND1-BELNR = TEMP4-REBZG .

*IF DOCUMENT DATE IS CHECKED

*1 Nayan 's first calculation.

IF P_IDAT EQ 'X'.

IF TEMP1-BLART EQ 'LD'.

SELECT SINGLE * FROM T052 WHERE ZTERM = ITAB_VEND-ZTERM.

W_DUEDT = ITAB_VEND-BLDAT + T052-ZTAG1.

CALL FUNCTION 'HR_SGPBS_YRS_MTHS_DAYS'

EXPORTING

BEG_DA = W_DUEDT

END_DA = P_IDAT1

IMPORTING

NO_CAL_DAY = W_DAYS.

ENDIF.

IF TEMP4-BLART NE 'LD'.

SELECT SINGLE * FROM T052 WHERE ZTERM = ITAB_VEND-ZTERM.

W_DUEDT = ITAB_VEND-BLDAT + T052-ZTAG1.

CALL FUNCTION 'HR_SGPBS_YRS_MTHS_DAYS'

EXPORTING

BEG_DA = W_DUEDT

END_DA = P_IDAT1

IMPORTING

NO_CAL_DAY = W_DAYS.

ENDIF.

      • FOR MOVING THE DUE VALUES TO THE APPR. TIME PERIOD ****

IF W_DAYS > 180 .

IF P_LC IS INITIAL .

IF TEMP4-NWRBTR < 0.

MOVE TEMP4-NWRBTR TO ITAB_VEND4-SIX .

ELSE.

MOVE TEMP4-NWRBTR TO ITAB_VEND4-AADV.

ENDIF.

ELSE .

IF TEMP4-NDMBTR < 0.

MOVE TEMP4-NDMBTR TO ITAB_VEND4-SIX .

ELSE.

MOVE TEMP4-NDMBTR TO ITAB_VEND4-AADV.

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS > 120 .

IF W_DAYS <= 180.

IF P_LC IS INITIAL .

IF TEMP4-NWRBTR < 0.

MOVE TEMP4-NWRBTR TO ITAB_VEND4-FIVE .

ELSE.

MOVE TEMP4-NWRBTR TO ITAB_VEND4-AADV.

ENDIF.

ELSE .

IF TEMP4-NDMBTR < 0.

MOVE TEMP4-NDMBTR TO ITAB_VEND4-FIVE .

ELSE.

MOVE TEMP4-NDMBTR TO ITAB_VEND4-AADV.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS > 90 .

IF W_DAYS <= 120.

IF P_LC IS INITIAL .

IF TEMP4-NWRBTR < 0.

MOVE TEMP4-NWRBTR TO ITAB_VEND4-FOUR .

ELSE.

MOVE TEMP4-NWRBTR TO ITAB_VEND4-AADV.

ENDIF.

ELSE .

IF TEMP4-NDMBTR < 0.

MOVE TEMP4-NDMBTR TO ITAB_VEND4-FOUR .

ELSE.

MOVE TEMP4-NDMBTR TO ITAB_VEND4-AADV.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS > 60 .

IF W_DAYS <= 90.

IF P_LC IS INITIAL .

IF TEMP4-NWRBTR < 0.

MOVE TEMP4-NWRBTR TO ITAB_VEND4-THREE .

ELSE.

MOVE TEMP4-NWRBTR TO ITAB_VEND4-AADV.

ENDIF.

ELSE .

IF TEMP4-NDMBTR < 0.

MOVE TEMP4-NDMBTR TO ITAB_VEND4-THREE .

ELSE.

MOVE TEMP4-NDMBTR TO ITAB_VEND4-AADV.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS > 30 .

IF W_DAYS <= 60.

IF P_LC IS INITIAL .

IF TEMP4-NWRBTR < 0.

MOVE TEMP4-NWRBTR TO ITAB_VEND4-TWO .

ELSE.

MOVE TEMP4-NWRBTR TO ITAB_VEND4-AADV.

ENDIF.

ELSE .

IF TEMP4-NDMBTR < 0.

MOVE TEMP4-NDMBTR TO ITAB_VEND4-TWO .

ELSE.

MOVE TEMP4-NDMBTR TO ITAB_VEND4-AADV.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS > 0 .

IF W_DAYS <= 30 .

IF P_LC IS INITIAL .

IF TEMP4-NWRBTR < 0.

MOVE TEMP4-NWRBTR TO ITAB_VEND4-ONE .

ELSE.

MOVE TEMP4-NWRBTR TO ITAB_VEND4-AADV.

ENDIF.

ELSE .

IF TEMP4-NDMBTR < 0.

MOVE TEMP4-NDMBTR TO ITAB_VEND4-ONE .

ELSE.

MOVE TEMP4-NDMBTR TO ITAB_VEND4-AADV.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS <= 0 .

IF P_LC IS INITIAL .

IF TEMP4-NWRBTR < 0.

MOVE TEMP4-NWRBTR TO ITAB_VEND4-MINUS .

ELSE.

MOVE TEMP4-NWRBTR TO ITAB_VEND4-AADV.

ENDIF.

ELSE .

IF TEMP4-NDMBTR < 0.

MOVE TEMP4-NDMBTR TO ITAB_VEND4-MINUS .

ELSE.

MOVE TEMP4-NDMBTR TO ITAB_VEND4-AADV.

ENDIF.

ENDIF.

ENDIF.

if itab_vend-UMSKZ ne ' ' .

clear w_duedt.

clear w_days.

endif.

select single text1 into ITAB_VEND4-text1 from T052U where ZTERM eq ITAB_VEND-ZTERM.

ITAB_VEND4-ATOT = ITAB_VEND4-ONE + ITAB_VEND4-TWO + ITAB_VEND4-THREE +

ITAB_VEND4-FOUR + ITAB_VEND4-FIVE + ITAB_VEND4-SIX +

ITAB_VEND4-MINUS + ITAB_VEND4-CRED + ITAB_VEND4-AADV.

*nayan's first solution

MOVE ITAB_VEND-LIFNR TO ITAB_VEND4-LIFNR.

MOVE ITAB_VEND-NAME1 TO ITAB_VEND4-NAME1.

MOVE ITAB_VEND-BELNR TO ITAB_VEND4-BELNR.

MOVE ITAB_VEND-BLDAT TO ITAB_VEND4-BLDAT.

MOVE ITAB_VEND-BUDAT TO ITAB_VEND4-BUDAT.

MOVE ITAB_VEND-BUKRS TO ITAB_VEND4-BUKRS.

MOVE ITAB_VEND-UMSKZ TO ITAB_VEND4-UMSKZ.

MOVE ITAB_VEND-BLART TO ITAB_VEND4-BLART.

MOVE ITAB_VEND-ZFBDT TO ITAB_VEND4-ZFBDT.

MOVE ITAB_VEND-ZTERM TO ITAB_VEND4-ZTERM.

MOVE ITAB_VEND-GSBER TO ITAB_VEND4-GSBER.

MOVE ITAB_VEND-XBLNR TO ITAB_VEND4-XBLNR.

MOVE W_DAYS TO ITAB_VEND4-DUDAY.

MOVE W_DUEDT TO ITAB_VEND4-DUEDT.

COLLECT ITAB_VEND4.

CLEAR ITAB_VEND4.

CLEAR W_DUEDT.

ENDIF.

***FOR POSTING DATE & IS CHECKED ***********************

IF P_PDAT EQ 'X'.

    • FOR DOCUMENT DATE IS CHECKED *******

                                                    • FOR CALCULATING THE NO. OF DAYS **********

  • Nayan's second calculation is here.

SELECT SINGLE * FROM T052 WHERE ZTERM = ITAB_VEND-ZTERM.

TEMP4-DUEDT = ITAB_VEND-BUDAT + T052-ZTAG1.

W_DUEDT = TEMP4-DUEDT.

CALL FUNCTION 'HR_SGPBS_YRS_MTHS_DAYS'

EXPORTING

BEG_DA = W_DUEDT

END_DA = P_PDAT1

IMPORTING

NO_CAL_DAY = W_DAYS.

      • FOR MOVING THE DUE VALUES TO THE APPR. TIME PERIOD ****

IF W_DAYS > 180 .

IF P_LC IS INITIAL .

IF TEMP4-NWRBTR < 0 .

MOVE TEMP4-NWRBTR TO ITAB_VEND4-SIX .

ELSE.

MOVE TEMP4-NWRBTR TO ITAB_VEND4-AADV.

ENDIF.

ELSE .

IF TEMP4-NDMBTR < 0.

MOVE TEMP4-NDMBTR TO ITAB_VEND4-SIX .

ELSE.

MOVE TEMP4-NDMBTR TO ITAB_VEND4-AADV.

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS > 120 .

IF W_DAYS <= 180.

IF P_LC IS INITIAL .

IF TEMP4-NWRBTR < 0 .

MOVE TEMP4-NWRBTR TO ITAB_VEND4-FIVE .

ELSE.

MOVE TEMP4-NWRBTR TO ITAB_VEND4-AADV.

ENDIF.

ELSE .

IF TEMP4-NDMBTR < 0.

MOVE TEMP4-NDMBTR TO ITAB_VEND4-FIVE .

ELSE.

MOVE TEMP4-NDMBTR TO ITAB_VEND4-AADV.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS > 90 .

IF W_DAYS <= 120.

IF P_LC IS INITIAL .

IF TEMP4-NWRBTR < 0 .

MOVE TEMP4-NWRBTR TO ITAB_VEND4-FOUR .

ELSE.

MOVE TEMP4-NWRBTR TO ITAB_VEND4-AADV.

ENDIF.

ELSE .

IF TEMP4-NDMBTR < 0.

MOVE TEMP4-NDMBTR TO ITAB_VEND4-FOUR .

ELSE.

MOVE TEMP4-NDMBTR TO ITAB_VEND4-AADV.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS > 60 .

IF W_DAYS <= 90.

IF P_LC IS INITIAL .

IF TEMP4-NWRBTR < 0 .

MOVE TEMP4-NWRBTR TO ITAB_VEND4-THREE .

ELSE.

MOVE TEMP4-NWRBTR TO ITAB_VEND4-AADV.

ENDIF.

ELSE .

IF TEMP4-NDMBTR < 0.

MOVE TEMP4-NDMBTR TO ITAB_VEND4-THREE .

ELSE.

MOVE TEMP4-NDMBTR TO ITAB_VEND4-AADV.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS > 30 .

IF W_DAYS <= 60.

IF P_LC IS INITIAL .

IF TEMP4-NWRBTR < 0 .

MOVE TEMP4-NWRBTR TO ITAB_VEND4-TWO .

ELSE.

MOVE TEMP4-NWRBTR TO ITAB_VEND4-AADV.

ENDIF.

ELSE .

IF TEMP4-NDMBTR < 0.

MOVE TEMP4-NDMBTR TO ITAB_VEND4-TWO .

ELSE.

MOVE TEMP4-NDMBTR TO ITAB_VEND4-AADV.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS > 0 .

IF W_DAYS <= 30 .

IF P_LC IS INITIAL .

IF TEMP4-NWRBTR < 0 .

MOVE TEMP4-NWRBTR TO ITAB_VEND4-ONE .

ELSE.

MOVE TEMP4-NWRBTR TO ITAB_VEND4-AADV.

ENDIF.

ELSE .

IF TEMP4-NDMBTR < 0.

MOVE TEMP4-NDMBTR TO ITAB_VEND4-ONE .

ELSE.

MOVE TEMP4-NDMBTR TO ITAB_VEND4-AADV.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS <= 0 .

IF P_LC IS INITIAL .

IF TEMP4-NWRBTR < 0 .

MOVE TEMP4-NWRBTR TO ITAB_VEND4-MINUS .

ELSE.

MOVE TEMP4-NWRBTR TO ITAB_VEND4-AADV.

ENDIF.

ELSE .

IF TEMP4-NDMBTR < 0.

MOVE TEMP4-NDMBTR TO ITAB_VEND4-MINUS .

ELSE.

MOVE TEMP4-NDMBTR TO ITAB_VEND4-AADV.

ENDIF.

ENDIF.

ENDIF.

if itab_vend-UMSKZ ne ' ' .

clear w_duedt.

clear w_days.

endif.

select single text1 into ITAB_VEND4-text1 from T052U where ZTERM eq ITAB_VEND-ZTERM.

ITAB_VEND4-ATOT = ITAB_VEND4-ONE + ITAB_VEND4-TWO + ITAB_VEND4-THREE +

ITAB_VEND4-FOUR + ITAB_VEND4-FIVE + ITAB_VEND4-SIX +

ITAB_VEND4-MINUS + ITAB_VEND4-CRED + ITAB_VEND4-AADV.

MOVE ITAB_VEND-LIFNR TO ITAB_VEND4-LIFNR.

MOVE ITAB_VEND-NAME1 TO ITAB_VEND4-NAME1.

MOVE ITAB_VEND-BELNR TO ITAB_VEND4-BELNR.

MOVE ITAB_VEND-BLDAT TO ITAB_VEND4-BLDAT.

MOVE ITAB_VEND-BUDAT TO ITAB_VEND4-BUDAT.

MOVE ITAB_VEND-BUKRS TO ITAB_VEND4-BUKRS.

MOVE ITAB_VEND-UMSKZ TO ITAB_VEND4-UMSKZ.

MOVE ITAB_VEND-ZTERM TO ITAB_VEND4-ZTERM.

MOVE ITAB_VEND-BLART TO ITAB_VEND4-BLART.

MOVE ITAB_VEND-ZFBDT TO ITAB_VEND4-ZFBDT.

MOVE ITAB_VEND-GSBER TO ITAB_VEND4-GSBER.

MOVE ITAB_VEND-XBLNR TO ITAB_VEND4-XBLNR.

MOVE W_DUEDT TO ITAB_VEND4-DUEDT.

MOVE W_DAYS TO ITAB_VEND4-DUDAY.

COLLECT ITAB_VEND4.

CLEAR ITAB_VEND4.

CLEAR W_DUEDT.

ENDIF.

ENDLOOP.

ENDIF.

    • END OF DEBIT INDICATOR ***

*******START FOR CREDIT INDICATOR *************************************

IF P_C EQ 'X'.

                        • IF NORMAL AND SPECIAL INDICATOR ARE CHECKED****************

IF P_N EQ 'X' AND P_S EQ 'X'.

******************DOCUMENT DATE***************************************

IF P_IDAT EQ 'X'.

*13 if doc.date date this is Inner join with BSIK Table

SELECT A~KTOKK A~NAME1 A~LIFNR B~SHKZG B~WRBTR B~DMBTR B~BLDAT B~BUDAT

B~BELNR B~BUKRS B~UMSKZ B~ZFBDT B~BLART B~ZTERM B~GSBER B~XBLNR

INTO

(ITAB_VEND-KTOKK,ITAB_VEND-NAME1,ITAB_VEND-LIFNR,V_SHKZG,

ITAB_VEND-WRBTR,ITAB_VEND-DMBTR,ITAB_VEND-BLDAT,ITAB_VEND-BUDAT,

ITAB_VEND-BELNR,ITAB_VEND-BUKRS,ITAB_VEND-UMSKZ,ITAB_VEND-ZFBDT,

ITAB_VEND-BLART,ITAB_VEND-ZTERM,ITAB_VEND-GSBER,ITAB_VEND-XBLNR)

FROM ( LFA1 AS A INNER JOIN BSIK AS B ON A~LIFNR = B~LIFNR )

WHERE A~LIFNR IN S_LIFNR

AND A~KTOKK IN S_KTOKK

AND B~BUKRS IN S_BUKRS

AND B~GSBER IN S_GSBER

AND B~BLDAT <= P_IDAT1

AND B~UMSKZ IN S_UMSKZ

AND BLART IN S_BLART

AND SHKZG EQ 'H'.

IF V_SHKZG EQ 'H'.

ITAB_VEND-WRBTR = ITAB_VEND-WRBTR * -1.

ITAB_VEND-DMBTR = ITAB_VEND-DMBTR * -1 .

ENDIF.

APPEND ITAB_VEND.

CLEAR ITAB_VEND.

ENDSELECT.

*14 if Doc. date this is Inner join with BSAK Table

SELECT A~KTOKK A~NAME1 A~LIFNR B~SHKZG B~WRBTR B~DMBTR B~BLDAT

B~BUDAT B~BELNR B~BUKRS B~UMSKZ B~ZFBDT B~BLART B~ZTERM

B~GSBER B~XBLNR INTO

(ITAB_VEND-KTOKK,ITAB_VEND-NAME1,ITAB_VEND-LIFNR,V_SHKZG,

ITAB_VEND-WRBTR,ITAB_VEND-DMBTR,ITAB_VEND-BLDAT,ITAB_VEND-BUDAT,

ITAB_VEND-BELNR,ITAB_VEND-BUKRS,ITAB_VEND-UMSKZ,ITAB_VEND-ZFBDT,

ITAB_VEND-BLART,ITAB_VEND-ZTERM,ITAB_VEND-GSBER,ITAB_VEND-XBLNR)

FROM ( LFA1 AS A INNER JOIN BSAK AS B ON A~LIFNR = B~LIFNR )

WHERE A~LIFNR IN S_LIFNR

AND A~KTOKK IN S_KTOKK

AND B~BUKRS IN S_BUKRS

AND B~GSBER IN S_GSBER

AND B~BLDAT <= P_IDAT1

AND B~UMSKZ IN S_UMSKZ

AND AUGDT > P_IDAT1

AND BLART IN S_BLART

AND SHKZG EQ 'H'.

IF V_SHKZG EQ 'H'.

ITAB_VEND-WRBTR = ITAB_VEND-WRBTR * -1.

ITAB_VEND-DMBTR = ITAB_VEND-DMBTR * -1 .

ENDIF.

APPEND ITAB_VEND.

CLEAR ITAB_VEND.

ENDSELECT.

ENDIF.

*************FOR POSTING DATE****************************************

IF P_PDAT EQ 'X'.

*15 if Posting date this is Inner join with BSIK Table

SELECT A~KTOKK A~NAME1 A~LIFNR B~SHKZG B~WRBTR B~DMBTR B~BLDAT B~BUDAT

B~BELNR B~BUKRS B~UMSKZ B~ZFBDT B~BLART B~ZTERM B~GSBER B~XBLNR

INTO

(ITAB_VEND-KTOKK,ITAB_VEND-NAME1,ITAB_VEND-LIFNR,V_SHKZG,

ITAB_VEND-WRBTR,ITAB_VEND-DMBTR,ITAB_VEND-BLDAT,ITAB_VEND-BUDAT,

ITAB_VEND-BELNR,ITAB_VEND-BUKRS,ITAB_VEND-UMSKZ,ITAB_VEND-ZFBDT,

ITAB_VEND-BLART,ITAB_VEND-ZTERM,ITAB_VEND-GSBER,ITAB_VEND-XBLNR)

FROM ( LFA1 AS A INNER JOIN BSIK AS B ON A~LIFNR = B~LIFNR )

WHERE A~LIFNR IN S_LIFNR

AND A~KTOKK IN S_KTOKK

AND B~BUKRS IN S_BUKRS

AND GSBER IN S_GSBER

AND BUDAT <= P_PDAT1

AND UMSKZ IN S_UMSKZ

AND BLART IN S_BLART

AND SHKZG EQ 'H'.

IF V_SHKZG EQ 'H'.

ITAB_VEND-WRBTR = ITAB_VEND-WRBTR * -1.

ITAB_VEND-DMBTR = ITAB_VEND-DMBTR * -1 .

ENDIF.

APPEND ITAB_VEND.

CLEAR ITAB_VEND.

ENDSELECT.

*16 if Posting date this is Inner join with BSAK Table

SELECT A~KTOKK A~NAME1 A~LIFNR B~SHKZG B~WRBTR B~DMBTR B~BLDAT

B~BUDAT B~BELNR B~BUKRS B~UMSKZ B~ZFBDT B~BLART B~ZTERM

B~GSBER B~XBLNR INTO

(ITAB_VEND-KTOKK,ITAB_VEND-NAME1,ITAB_VEND-LIFNR,V_SHKZG,

ITAB_VEND-WRBTR,ITAB_VEND-DMBTR,ITAB_VEND-BLDAT,ITAB_VEND-BUDAT,

ITAB_VEND-BELNR,ITAB_VEND-BUKRS,ITAB_VEND-UMSKZ,ITAB_VEND-ZFBDT,

ITAB_VEND-BLART,ITAB_VEND-ZTERM,ITAB_VEND-GSBER,ITAB_VEND-XBLNR)

FROM ( LFA1 AS A INNER JOIN BSAK AS B ON A~LIFNR = B~LIFNR )

WHERE A~LIFNR IN S_LIFNR

AND A~KTOKK IN S_KTOKK

AND B~BUKRS IN S_BUKRS

AND GSBER IN S_GSBER

AND BUDAT <= P_PDAT1

AND UMSKZ IN S_UMSKZ

AND AUGDT > P_PDAT1

AND BLART IN S_BLART

AND SHKZG EQ 'H'.

IF V_SHKZG EQ 'H'.

ITAB_VEND-WRBTR = ITAB_VEND-WRBTR * -1.

ITAB_VEND-DMBTR = ITAB_VEND-DMBTR * -1 .

ENDIF.

APPEND ITAB_VEND.

CLEAR ITAB_VEND.

ENDSELECT.

ENDIF.

ENDIF.

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

******************NORMAL INDICATOR************************************

IF P_N EQ 'X' AND P_S EQ ''.

************DOCUMENT DATE*********************************************

IF P_IDAT EQ 'X'.

*17 if Doc date this is Inner join with BSIK Table

SELECT A~KTOKK A~NAME1 A~LIFNR B~SHKZG B~WRBTR B~DMBTR B~BLDAT B~BUDAT

B~BELNR B~BUKRS B~UMSKZ B~ZFBDT B~BLART B~ZTERM B~GSBER B~XBLNR

INTO (ITAB_VEND-KTOKK,ITAB_VEND-NAME1,ITAB_VEND-LIFNR,V_SHKZG,

ITAB_VEND-WRBTR,ITAB_VEND-DMBTR,ITAB_VEND-BLDAT,ITAB_VEND-BUDAT,

ITAB_VEND-BELNR,ITAB_VEND-BUKRS,ITAB_VEND-UMSKZ,ITAB_VEND-ZFBDT,

ITAB_VEND-BLART,ITAB_VEND-ZTERM,ITAB_VEND-GSBER,ITAB_VEND-XBLNR)

FROM ( LFA1 AS A INNER JOIN BSIK AS B ON A~LIFNR = B~LIFNR )

WHERE A~LIFNR IN S_LIFNR

AND A~KTOKK IN S_KTOKK

AND B~BUKRS IN S_BUKRS

AND GSBER IN S_GSBER

AND BLDAT <= P_IDAT1

AND UMSKZ EQ ' '

AND BLART IN S_BLART

AND SHKZG EQ 'H'.

IF V_SHKZG EQ 'H'.

ITAB_VEND-WRBTR = ITAB_VEND-WRBTR * -1.

ITAB_VEND-DMBTR = ITAB_VEND-DMBTR * -1 .

ENDIF.

APPEND ITAB_VEND.

CLEAR ITAB_VEND.

ENDSELECT.

*18 if Doc date this is Inner join with BSAK Table

SELECT A~KTOKK A~NAME1 A~LIFNR B~SHKZG B~WRBTR B~DMBTR B~BLDAT

B~BUDAT B~BELNR B~BUKRS B~UMSKZ B~ZFBDT B~BLART B~ZTERM

B~GSBER B~XBLNR

INTO (ITAB_VEND-KTOKK,ITAB_VEND-NAME1,ITAB_VEND-LIFNR,V_SHKZG,

ITAB_VEND-WRBTR,ITAB_VEND-DMBTR,ITAB_VEND-BLDAT,ITAB_VEND-BUDAT,

ITAB_VEND-BELNR,ITAB_VEND-BUKRS,ITAB_VEND-UMSKZ,ITAB_VEND-ZFBDT,

ITAB_VEND-BLART,ITAB_VEND-ZTERM,ITAB_VEND-GSBER,ITAB_VEND-XBLNR)

FROM ( LFA1 AS A INNER JOIN BSAK AS B ON A~LIFNR = B~LIFNR )

WHERE A~LIFNR IN S_LIFNR

AND A~KTOKK IN S_KTOKK

AND B~BUKRS IN S_BUKRS

AND GSBER IN S_GSBER

AND BLDAT <= P_IDAT1

AND UMSKZ EQ ' '

AND AUGDT > P_IDAT1

AND BLART IN S_BLART

AND SHKZG EQ 'H'.

IF V_SHKZG EQ 'H'.

ITAB_VEND-WRBTR = ITAB_VEND-WRBTR * -1.

ITAB_VEND-DMBTR = ITAB_VEND-DMBTR * -1 .

ENDIF.

APPEND ITAB_VEND.

CLEAR ITAB_VEND.

ENDSELECT.

ENDIF.

************************POSTING DATE**********************************

IF P_PDAT EQ 'X'.

*19 if Posting date this is Inner join with BSIK Table

SELECT A~KTOKK A~NAME1 A~LIFNR B~SHKZG B~WRBTR B~DMBTR B~BLDAT B~BUDAT

B~BELNR B~BUKRS B~UMSKZ B~ZFBDT B~BLART B~ZTERM B~GSBER B~XBLNR

INTO (ITAB_VEND-KTOKK,ITAB_VEND-NAME1,ITAB_VEND-LIFNR,V_SHKZG,

ITAB_VEND-WRBTR,ITAB_VEND-DMBTR,ITAB_VEND-BLDAT,ITAB_VEND-BUDAT,

ITAB_VEND-BELNR,ITAB_VEND-BUKRS,ITAB_VEND-UMSKZ,ITAB_VEND-ZFBDT,

ITAB_VEND-BLART,ITAB_VEND-ZTERM,ITAB_VEND-GSBER,ITAB_VEND-XBLNR)

FROM ( LFA1 AS A INNER JOIN BSIK AS B ON A~LIFNR = B~LIFNR )

WHERE A~LIFNR IN S_LIFNR

AND A~KTOKK IN S_KTOKK

AND B~BUKRS IN S_BUKRS

AND GSBER IN S_GSBER

AND BUDAT <= P_PDAT1

AND UMSKZ EQ ' '

AND BLART IN S_BLART

AND SHKZG EQ 'H'.

IF V_SHKZG EQ 'H'.

ITAB_VEND-WRBTR = ITAB_VEND-WRBTR * -1.

ITAB_VEND-DMBTR = ITAB_VEND-DMBTR * -1 .

ENDIF.

APPEND ITAB_VEND.

CLEAR ITAB_VEND.

ENDSELECT.

*20 if Posting date this is Inner join with BSAK Table

SELECT A~KTOKK A~NAME1 A~LIFNR B~SHKZG B~WRBTR B~DMBTR B~BLDAT

B~BUDAT B~BELNR B~BUKRS B~UMSKZ B~ZFBDT B~BLART B~ZTERM

B~GSBER B~XBLNR

INTO (ITAB_VEND-KTOKK,ITAB_VEND-NAME1,ITAB_VEND-LIFNR,V_SHKZG,

ITAB_VEND-WRBTR,ITAB_VEND-DMBTR,ITAB_VEND-BLDAT,ITAB_VEND-BUDAT,

ITAB_VEND-BELNR,ITAB_VEND-BUKRS,ITAB_VEND-UMSKZ,ITAB_VEND-ZFBDT,

ITAB_VEND-BLART,ITAB_VEND-ZTERM,ITAB_VEND-GSBER,ITAB_VEND-XBLNR)

FROM ( LFA1 AS A INNER JOIN BSAK AS B ON A~LIFNR = B~LIFNR )

WHERE A~LIFNR IN S_LIFNR

AND A~KTOKK IN S_KTOKK

AND B~BUKRS IN S_BUKRS

AND GSBER IN S_GSBER

AND BUDAT <= P_PDAT1

AND UMSKZ EQ ' '

AND AUGDT > P_PDAT1

AND BLART IN S_BLART

AND SHKZG EQ 'H'.

IF V_SHKZG EQ 'H'.

ITAB_VEND-WRBTR = ITAB_VEND-WRBTR * -1.

ITAB_VEND-DMBTR = ITAB_VEND-DMBTR * -1 .

ENDIF.

APPEND ITAB_VEND.

CLEAR ITAB_VEND.

ENDSELECT.

ENDIF.

ENDIF.

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

**********************SPECIAL INDIACTOR ALONE****** ******************

IF P_N EQ '' AND P_S EQ 'X'.

****************************DOCUMENT DATE*****************************

IF P_IDAT EQ 'X'.

*21 if Doc date this is Inner join with BSIK Table

SELECT A~KTOKK A~NAME1 A~LIFNR B~SHKZG B~WRBTR B~DMBTR B~BLDAT B~BUDAT

B~BELNR B~BUKRS B~UMSKZ B~ZFBDT B~BLART B~ZTERM B~GSBER B~XBLNR

INTO (ITAB_VEND-KTOKK,ITAB_VEND-NAME1,ITAB_VEND-LIFNR,V_SHKZG,

ITAB_VEND-WRBTR,ITAB_VEND-DMBTR,ITAB_VEND-BLDAT,ITAB_VEND-BUDAT,

ITAB_VEND-BELNR,ITAB_VEND-BUKRS,ITAB_VEND-UMSKZ,ITAB_VEND-ZFBDT,

ITAB_VEND-BLART,ITAB_VEND-ZTERM,ITAB_VEND-GSBER,ITAB_VEND-XBLNR)

FROM ( LFA1 AS A INNER JOIN BSIK AS B ON A~LIFNR = B~LIFNR )

WHERE A~LIFNR IN S_LIFNR

AND A~KTOKK IN S_KTOKK

AND B~BUKRS IN S_BUKRS

AND GSBER IN S_GSBER

AND BLDAT <= P_IDAT1

AND UMSKZ IN S_UMSKZ

AND UMSKZ NE SPACE

AND BLART IN S_BLART

AND SHKZG EQ 'H'.

IF V_SHKZG EQ 'H'.

ITAB_VEND-WRBTR = ITAB_VEND-WRBTR * -1.

ITAB_VEND-DMBTR = ITAB_VEND-DMBTR * -1 .

ENDIF.

APPEND ITAB_VEND.

CLEAR ITAB_VEND.

ENDSELECT.

*22 if Doc date this is Inner join with BSAK Table

SELECT A~KTOKK A~NAME1 A~LIFNR B~SHKZG B~WRBTR B~DMBTR B~BLDAT

B~BUDAT B~BELNR B~BUKRS B~UMSKZ B~ZFBDT B~BLART B~ZTERM

B~GSBER B~XBLNR

INTO (ITAB_VEND-KTOKK,ITAB_VEND-NAME1,ITAB_VEND-LIFNR,V_SHKZG,

ITAB_VEND-WRBTR,ITAB_VEND-DMBTR,ITAB_VEND-BLDAT,ITAB_VEND-BUDAT,

ITAB_VEND-BELNR,ITAB_VEND-BUKRS,ITAB_VEND-UMSKZ,ITAB_VEND-ZFBDT,

ITAB_VEND-BLART,ITAB_VEND-ZTERM,ITAB_VEND-GSBER,ITAB_VEND-XBLNR)

FROM ( LFA1 AS A INNER JOIN BSAK AS B ON A~LIFNR = B~LIFNR )

WHERE A~LIFNR IN S_LIFNR

AND A~KTOKK IN S_KTOKK

AND B~BUKRS IN S_BUKRS

AND GSBER IN S_GSBER

AND BLDAT <= P_IDAT1

AND UMSKZ IN S_UMSKZ

AND UMSKZ NE SPACE

AND AUGDT > P_IDAT1

AND BLART IN S_BLART

AND SHKZG EQ 'H'.

IF V_SHKZG EQ 'H'.

ITAB_VEND-WRBTR = ITAB_VEND-WRBTR * -1.

ITAB_VEND-DMBTR = ITAB_VEND-DMBTR * -1 .

ENDIF.

APPEND ITAB_VEND.

CLEAR ITAB_VEND.

ENDSELECT.

ENDIF.

****************************POSTING DATE******************************

IF P_PDAT EQ 'X'.

*23 if Posting date this is Inner join with BSIK Table

SELECT A~KTOKK A~NAME1 A~LIFNR B~SHKZG B~WRBTR B~DMBTR B~BLDAT B~BUDAT

B~BELNR B~BUKRS B~UMSKZ B~ZFBDT B~BLART B~ZTERM B~GSBER B~XBLNR

INTO (ITAB_VEND-KTOKK,ITAB_VEND-NAME1,ITAB_VEND-LIFNR,V_SHKZG,

ITAB_VEND-WRBTR,ITAB_VEND-DMBTR,ITAB_VEND-BLDAT,ITAB_VEND-BUDAT,

ITAB_VEND-BELNR,ITAB_VEND-BUKRS,ITAB_VEND-UMSKZ,ITAB_VEND-ZFBDT,

ITAB_VEND-BLART,ITAB_VEND-ZTERM,ITAB_VEND-GSBER,ITAB_VEND-XBLNR)

FROM ( LFA1 AS A INNER JOIN BSIK AS B ON A~LIFNR = B~LIFNR )

WHERE A~LIFNR IN S_LIFNR

AND A~KTOKK IN S_KTOKK

AND B~BUKRS IN S_BUKRS

AND GSBER IN S_GSBER

AND BUDAT <= P_PDAT1

AND UMSKZ IN S_UMSKZ

AND UMSKZ NE SPACE

AND BLART IN S_BLART

AND SHKZG EQ 'H'.

IF V_SHKZG EQ 'H'.

ITAB_VEND-WRBTR = ITAB_VEND-WRBTR * -1.

ITAB_VEND-DMBTR = ITAB_VEND-DMBTR * -1 .

ENDIF.

APPEND ITAB_VEND.

CLEAR ITAB_VEND.

ENDSELECT.

*24 if Posting date this is Inner join with BSAK Table

SELECT A~KTOKK A~NAME1 A~LIFNR B~SHKZG B~WRBTR B~DMBTR B~BLDAT B~BUDAT

B~BELNR B~BUKRS B~UMSKZ B~ZFBDT B~BLART B~ZTERM B~GSBER B~XBLNR

INTO (ITAB_VEND-KTOKK,ITAB_VEND-NAME1,ITAB_VEND-LIFNR,V_SHKZG,

ITAB_VEND-WRBTR,ITAB_VEND-DMBTR,ITAB_VEND-BLDAT,ITAB_VEND-BUDAT,

ITAB_VEND-BELNR,ITAB_VEND-BUKRS,ITAB_VEND-UMSKZ,ITAB_VEND-ZFBDT,

ITAB_VEND-BLART,ITAB_VEND-ZTERM,ITAB_VEND-GSBER,ITAB_VEND-XBLNR)

FROM ( LFA1 AS A INNER JOIN BSAK AS B ON A~LIFNR = B~LIFNR )

WHERE A~LIFNR IN S_LIFNR

AND A~KTOKK IN S_KTOKK

AND B~BUKRS IN S_BUKRS

AND GSBER IN S_GSBER

AND BUDAT <= P_PDAT1

AND UMSKZ IN S_UMSKZ

AND UMSKZ NE SPACE

AND AUGDT > P_PDAT1

AND BLART IN S_BLART

AND SHKZG EQ 'H'.

IF V_SHKZG EQ 'H'.

ITAB_VEND-WRBTR = ITAB_VEND-WRBTR * -1.

ITAB_VEND-DMBTR = ITAB_VEND-DMBTR * -1 .

ENDIF.

APPEND ITAB_VEND.

CLEAR ITAB_VEND.

ENDSELECT.

ENDIF.

ENDIF.

*******END FOR CREDIT INDICATOR *************************************

    • START FOR NET OFF VALUE DISPLAY ********

SORT ITAB_VEND BY BLART.

LOOP AT ITAB_VEND WHERE BLART EQ 'AB' OR BLART EQ 'KA'.

MOVE-CORRESPONDING ITAB_VEND TO TEMP1.

COLLECT TEMP1.

CLEAR TEMP1.

DELETE ITAB_VEND.

CLEAR ITAB_VEND.

ENDLOOP.

CLEAR ITAB_VEND.

LOOP AT TEMP1.

READ TABLE ITAB_VEND WITH KEY LIFNR = TEMP-LIFNR BELNR = TEMP-REBZG.

IF SY-SUBRC EQ 0.

IF ITAB_VEND-WRBTR NE TEMP1-WRBTR

AND ITAB_VEND-DMBTR NE TEMP1-DMBTR.

IF V_SHKZG EQ 'S'.

TEMP1-NWRBTR = ITAB_VEND-WRBTR + TEMP1-WRBTR.

TEMP1-NDMBTR = ITAB_VEND-DMBTR + TEMP1-DMBTR.

DELETE ITAB_VEND WHERE LIFNR = TEMP1-LIFNR AND BELNR = TEMP1-REBZG.

MODIFY TEMP1.

CLEAR TEMP1.

ENDIF.

ENDIF.

ENDIF.

ENDLOOP.

    • END FOR NET OFF VALUE DISPLAY ********

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

  • START FOR NO. OF DAYS CALCULATION FOR AGING OUTPUT DISPLAY *

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

    • IF P_C EQ 'X'.

LOOP AT TEMP1.

READ TABLE ITAB_VEND1 WITH KEY LIFNR = TEMP1-LIFNR.

ITAB_VEND1-BELNR = TEMP1-REBZG .

********IF DOCUMENT DATE IS CHECKED********************

  • Nayan third days calculation.

IF P_IDAT EQ 'X'.

IF TEMP1-BLART EQ 'LD'.

SELECT SINGLE * FROM T052 WHERE ZTERM = ITAB_VEND-ZTERM.

W_DUEDT = ITAB_VEND-BLDAT + T052-ZTAG1.

CALL FUNCTION 'HR_SGPBS_YRS_MTHS_DAYS'

EXPORTING

BEG_DA = W_DUEDT

END_DA = P_IDAT1

IMPORTING

NO_CAL_DAY = W_DAYS.

ENDIF.

IF TEMP1-BLART NE 'LD'.

SELECT SINGLE * FROM T052 WHERE ZTERM = ITAB_VEND-ZTERM.

W_DUEDT = ITAB_VEND4-BLDAT + T052-ZTAG1.

CALL FUNCTION 'HR_SGPBS_YRS_MTHS_DAYS'

EXPORTING

BEG_DA = W_DUEDT

END_DA = P_IDAT1

IMPORTING

NO_CAL_DAY = W_DAYS.

ENDIF.

      • FOR MOVING THE DUE VALUES TO THE APPR. TIME PERIOD ****

IF W_DAYS > 180 .

IF P_LC IS INITIAL .

IF TEMP1-NWRBTR < 0 .

MOVE TEMP1-NWRBTR TO ITAB_VEND3-SIX .

ELSE.

MOVE TEMP1-NWRBTR TO ITAB_VEND3-AADV.

ENDIF.

ELSE .

IF TEMP1-NDMBTR < 0 .

MOVE TEMP1-NDMBTR TO ITAB_VEND3-SIX .

ELSE.

MOVE TEMP1-NDMBTR TO ITAB_VEND3-AADV.

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS > 120 .

IF W_DAYS <= 180.

IF P_LC IS INITIAL .

IF TEMP1-NWRBTR < 0 .

MOVE TEMP1-NWRBTR TO ITAB_VEND3-FIVE .

ELSE.

MOVE TEMP1-NWRBTR TO ITAB_VEND3-AADV.

ENDIF.

ELSE .

IF TEMP1-NDMBTR < 0 .

MOVE TEMP1-NDMBTR TO ITAB_VEND3-FIVE .

ELSE.

MOVE TEMP1-NDMBTR TO ITAB_VEND3-AADV.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS > 90 .

IF W_DAYS <= 120.

IF P_LC IS INITIAL .

IF TEMP1-NWRBTR < 0 .

MOVE TEMP1-NWRBTR TO ITAB_VEND3-FOUR .

ELSE.

MOVE TEMP1-NWRBTR TO ITAB_VEND3-AADV.

ENDIF.

ELSE .

IF TEMP1-NDMBTR < 0 .

MOVE TEMP1-NDMBTR TO ITAB_VEND3-FOUR .

ELSE.

MOVE TEMP1-NDMBTR TO ITAB_VEND3-AADV.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS > 60 .

IF W_DAYS <= 90.

IF P_LC IS INITIAL .

IF TEMP1-NWRBTR < 0 .

MOVE TEMP1-NWRBTR TO ITAB_VEND3-THREE .

ELSE.

MOVE TEMP1-NWRBTR TO ITAB_VEND3-AADV.

ENDIF.

ELSE .

IF TEMP1-NDMBTR < 0 .

MOVE TEMP1-NDMBTR TO ITAB_VEND3-THREE .

ELSE.

MOVE TEMP1-NDMBTR TO ITAB_VEND3-AADV.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS > 30 .

IF W_DAYS <= 60.

IF P_LC IS INITIAL .

IF TEMP1-NWRBTR < 0 .

MOVE TEMP1-NWRBTR TO ITAB_VEND3-TWO .

ELSE.

MOVE TEMP1-NWRBTR TO ITAB_VEND3-AADV.

ENDIF.

ELSE .

IF TEMP1-NDMBTR < 0 .

MOVE TEMP1-NDMBTR TO ITAB_VEND3-TWO .

ELSE.

MOVE TEMP1-NDMBTR TO ITAB_VEND3-AADV.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS > 0 .

IF W_DAYS <= 30 .

IF P_LC IS INITIAL .

IF TEMP1-NWRBTR < 0 .

MOVE TEMP1-NWRBTR TO ITAB_VEND3-ONE .

ELSE.

MOVE TEMP1-NWRBTR TO ITAB_VEND3-AADV.

ENDIF.

ELSE .

IF TEMP1-NDMBTR < 0 .

MOVE TEMP1-NDMBTR TO ITAB_VEND3-ONE .

ELSE.

MOVE TEMP1-NDMBTR TO ITAB_VEND3-AADV.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS <= 0 .

IF P_LC IS INITIAL .

IF TEMP1-NWRBTR < 0 .

MOVE TEMP1-NWRBTR TO ITAB_VEND3-MINUS .

ELSE.

MOVE TEMP1-NWRBTR TO ITAB_VEND3-AADV.

ENDIF.

ELSE .

IF TEMP1-NDMBTR < 0 .

MOVE TEMP1-NDMBTR TO ITAB_VEND3-MINUS .

ELSE.

MOVE TEMP1-NDMBTR TO ITAB_VEND3-AADV.

ENDIF.

ENDIF.

ENDIF.

if itab_vend-UMSKZ ne ' ' .

clear w_duedt.

clear w_days.

endif.

select single text1 into ITAB_VEND3-text1 from T052U where ZTERM eq ITAB_VEND-ZTERM.

ITAB_VEND3-ATOT = ITAB_VEND3-ONE + ITAB_VEND3-TWO + ITAB_VEND3-THREE +

ITAB_VEND3-FOUR + ITAB_VEND3-FIVE + ITAB_VEND3-SIX +

ITAB_VEND3-MINUS + ITAB_VEND3-CRED + ITAB_VEND3-AADV.

MOVE ITAB_VEND-LIFNR TO ITAB_VEND3-LIFNR.

MOVE ITAB_VEND-NAME1 TO ITAB_VEND3-NAME1.

MOVE ITAB_VEND-BELNR TO ITAB_VEND3-BELNR.

MOVE ITAB_VEND-BLDAT TO ITAB_VEND3-BLDAT.

MOVE ITAB_VEND-BUDAT TO ITAB_VEND3-BUDAT.

MOVE ITAB_VEND-BUKRS TO ITAB_VEND3-BUKRS.

MOVE ITAB_VEND-UMSKZ TO ITAB_VEND3-UMSKZ.

MOVE ITAB_VEND-BLART TO ITAB_VEND3-BLART.

MOVE ITAB_VEND-ZFBDT TO ITAB_VEND3-ZFBDT.

MOVE ITAB_VEND-ZTERM TO ITAB_VEND3-ZTERM.

MOVE ITAB_VEND-GSBER TO ITAB_VEND3-GSBER.

MOVE ITAB_VEND-XBLNR TO ITAB_VEND3-XBLNR.

MOVE W_DAYS TO ITAB_VEND3-DUDAY.

COLLECT ITAB_VEND3.

CLEAR ITAB_VEND3.

ENDIF.

***FOR POSTING DATE & IS CHECKED ***********************

IF P_PDAT EQ 'X'.

    • FOR DOCUMENT DATE IS CHECKED *******

                                                    • FOR CALCULATING THE NO. OF DAYS **********

  • Nayan's forth calculation...

SELECT SINGLE * FROM T052 WHERE ZTERM = ITAB_VEND-ZTERM.

TEMP1-DUEDT = TEMP1-BUDAT + T052-ZTAG1.

W_DUEDT = ITAB_VEND-BUDAT + T052-ZTAG1.

CALL FUNCTION 'HR_SGPBS_YRS_MTHS_DAYS'

EXPORTING

BEG_DA = W_DUEDT

END_DA = P_PDAT1

IMPORTING

NO_CAL_DAY = W_DAYS.

      • FOR MOVING THE DUE VALUES TO THE APPR. TIME PERIOD ****

IF W_DAYS > 180 .

IF P_LC IS INITIAL .

IF TEMP1-NWRBTR < 0 .

MOVE TEMP1-NWRBTR TO ITAB_VEND3-SIX .

ELSE.

MOVE TEMP1-NWRBTR TO ITAB_VEND3-AADV .

ENDIF.

ELSE .

IF TEMP1-NDMBTR < 0.

MOVE TEMP1-NDMBTR TO ITAB_VEND3-SIX .

ELSE.

MOVE TEMP1-NDMBTR TO ITAB_VEND3-AADV .

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS > 120 .

IF W_DAYS <= 180.

IF P_LC IS INITIAL.

IF TEMP1-NWRBTR < 0 .

MOVE TEMP1-NWRBTR TO ITAB_VEND3-FIVE .

ELSE.

MOVE TEMP1-NWRBTR TO ITAB_VEND3-AADV .

ENDIF.

ELSE .

IF TEMP1-NDMBTR < 0 .

MOVE TEMP1-NDMBTR TO ITAB_VEND3-FIVE .

ELSE.

MOVE TEMP1-NDMBTR TO ITAB_VEND3-AADV .

ENDIF.

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS > 90 .

IF W_DAYS <= 120.

IF P_LC IS INITIAL .

IF TEMP1-NWRBTR < 0 .

MOVE TEMP1-NWRBTR TO ITAB_VEND3-FOUR .

ELSE.

MOVE TEMP1-NWRBTR TO ITAB_VEND3-AADV .

ENDIF.

ELSE .

IF TEMP1-NDMBTR < 0 .

MOVE TEMP1-NDMBTR TO ITAB_VEND3-FOUR .

ELSE.

MOVE TEMP1-NDMBTR TO ITAB_VEND3-AADV.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS > 60 .

IF W_DAYS <= 90.

IF P_LC IS INITIAL .

IF TEMP1-NWRBTR < 0 .

MOVE TEMP1-NWRBTR TO ITAB_VEND3-THREE .

ELSE.

MOVE TEMP1-NWRBTR TO ITAB_VEND3-AADV .

ENDIF.

ELSE .

IF TEMP1-NDMBTR < 0 .

MOVE TEMP1-NDMBTR TO ITAB_VEND3-THREE .

ELSE.

MOVE TEMP1-NDMBTR TO ITAB_VEND3-AADV.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS > 30 .

IF W_DAYS <= 60.

IF P_LC IS INITIAL .

IF TEMP1-NWRBTR < 0 .

MOVE TEMP1-NWRBTR TO ITAB_VEND3-TWO .

ELSE.

MOVE TEMP1-NWRBTR TO ITAB_VEND3-AADV .

ENDIF.

ELSE .

IF TEMP1-NDMBTR < 0 .

MOVE TEMP1-NDMBTR TO ITAB_VEND3-TWO .

ELSE.

MOVE TEMP1-NDMBTR TO ITAB_VEND3-AADV.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS > 0 .

IF W_DAYS <= 30 .

IF P_LC IS INITIAL .

IF TEMP1-NWRBTR < 0 .

MOVE TEMP1-NWRBTR TO ITAB_VEND3-ONE .

ELSE.

MOVE TEMP1-NWRBTR TO ITAB_VEND3-AADV .

ENDIF.

ELSE .

IF TEMP1-NDMBTR < 0 .

MOVE TEMP1-NDMBTR TO ITAB_VEND3-ONE .

ELSE.

MOVE TEMP1-NDMBTR TO ITAB_VEND3-AADV.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS <= 0 .

IF P_LC IS INITIAL .

IF TEMP1-NWRBTR < 0 .

MOVE TEMP1-NWRBTR TO ITAB_VEND3-MINUS .

ELSE.

MOVE TEMP1-NWRBTR TO ITAB_VEND3-AADV .

ENDIF.

ELSE .

IF TEMP1-NDMBTR < 0 .

MOVE TEMP1-NDMBTR TO ITAB_VEND3-MINUS .

ELSE.

MOVE TEMP1-NDMBTR TO ITAB_VEND3-AADV.

ENDIF.

ENDIF.

ENDIF.

if itab_vend-UMSKZ ne ' ' .

clear w_duedt.

clear w_days.

endif.

select single text1 into ITAB_VEND3-text1 from T052U where ZTERM eq ITAB_VEND-ZTERM.

ITAB_VEND3-ATOT = ITAB_VEND3-ONE + ITAB_VEND3-TWO + ITAB_VEND3-THREE +

ITAB_VEND2-FOUR + ITAB_VEND3-FIVE + ITAB_VEND3-SIX +

ITAB_VEND3-MINUS + ITAB_VEND3-CRED + ITAB_VEND3-AADV.

MOVE ITAB_VEND-LIFNR TO ITAB_VEND3-LIFNR.

MOVE ITAB_VEND-NAME1 TO ITAB_VEND3-NAME1.

MOVE ITAB_VEND-BELNR TO ITAB_VEND3-BELNR.

MOVE ITAB_VEND-BLDAT TO ITAB_VEND3-BLDAT.

MOVE ITAB_VEND-BUDAT TO ITAB_VEND3-BUDAT.

MOVE ITAB_VEND-BUKRS TO ITAB_VEND3-BUKRS.

MOVE ITAB_VEND-UMSKZ TO ITAB_VEND3-UMSKZ.

MOVE ITAB_VEND-ZTERM TO ITAB_VEND3-ZTERM.

MOVE ITAB_VEND-BLART TO ITAB_VEND3-BLART.

MOVE ITAB_VEND-ZFBDT TO ITAB_VEND3-ZFBDT.

MOVE ITAB_VEND-GSBER TO ITAB_VEND3-GSBER.

MOVE ITAB_VEND-XBLNR TO ITAB_VEND3-XBLNR.

MOVE W_DUEDT TO ITAB_VEND3-DUEDT.

MOVE W_DAYS TO ITAB_VEND3-DUDAY.

COLLECT ITAB_VEND3.

CLEAR ITAB_VEND3.

CLEAR W_DUEDT.

ENDIF.

ENDLOOP.

ENDIF.

    • END OF CREDIT INDICATOR ***

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

  • END FOR NO. OF DAYS CALCULATION FOR AGING OUTPUT DISPLAY IF BOTH *

  • INDICATOR IS TICKED *

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

******START FOR BOTH INDICATOR***************************************

IF P_B EQ 'X'.

*****************NORAML AND SPECIAL INDIACTOR*************************

IF P_N EQ 'X' AND P_S EQ 'X'.

***********************DOCUMENTY DATE **********************************

IF P_IDAT EQ 'X'.

*25 if Doc date this is Inner join with BSIK Table

SELECT A~KTOKK A~NAME1 A~LIFNR B~SHKZG B~WRBTR B~DMBTR B~BLDAT B~BUDAT

B~BELNR B~BUKRS B~UMSKZ B~ZFBDT B~BLART B~ZTERM B~REBZG B~REBZJ

B~GSBER B~XBLNR

INTO (ITAB_VEND-KTOKK,ITAB_VEND-NAME1,ITAB_VEND-LIFNR,V_SHKZG,

ITAB_VEND-WRBTR,ITAB_VEND-DMBTR,ITAB_VEND-BLDAT,ITAB_VEND-BUDAT,

ITAB_VEND-BELNR,ITAB_VEND-BUKRS,ITAB_VEND-UMSKZ,ITAB_VEND-ZFBDT,

ITAB_VEND-BLART,ITAB_VEND-ZTERM,ITAB_VEND-REBZG,ITAB_VEND-REBZJ,

ITAB_VEND-GSBER,ITAB_VEND-XBLNR)

FROM ( LFA1 AS A INNER JOIN BSIK AS B ON A~LIFNR = B~LIFNR )

WHERE A~LIFNR IN S_LIFNR

AND A~KTOKK IN S_KTOKK

AND B~BUKRS IN S_BUKRS

AND GSBER IN S_GSBER

AND BLDAT <= P_IDAT1

AND UMSKZ IN S_UMSKZ

AND BLART IN S_BLART.

IF V_SHKZG EQ 'H'.

ITAB_VEND-WRBTR = ITAB_VEND-WRBTR * -1.

ITAB_VEND-DMBTR = ITAB_VEND-DMBTR * -1 .

ENDIF.

APPEND ITAB_VEND.

CLEAR ITAB_VEND.

ENDSELECT.

*26 if Doc date this is Inner join with BSAK Table

SELECT A~KTOKK A~NAME1 A~LIFNR B~SHKZG B~WRBTR B~DMBTR B~BLDAT

B~BUDAT B~BELNR B~BUKRS B~UMSKZ B~ZFBDT B~BLART B~ZTERM B~REBZG

B~REBZJ B~GSBER B~XBLNR

INTO (ITAB_VEND-KTOKK,ITAB_VEND-NAME1,ITAB_VEND-LIFNR,V_SHKZG,

ITAB_VEND-WRBTR,ITAB_VEND-DMBTR,ITAB_VEND-BLDAT,ITAB_VEND-BUDAT,

ITAB_VEND-BELNR,ITAB_VEND-BUKRS,ITAB_VEND-UMSKZ,ITAB_VEND-ZFBDT,

ITAB_VEND-BLART,ITAB_VEND-ZTERM,ITAB_VEND-REBZG,ITAB_VEND-REBZJ,

ITAB_VEND-GSBER,ITAB_VEND-XBLNR)

FROM ( LFA1 AS A INNER JOIN BSAK AS B ON A~LIFNR = B~LIFNR )

WHERE A~LIFNR IN S_LIFNR

AND A~KTOKK IN S_KTOKK

AND B~BUKRS IN S_BUKRS

AND GSBER IN S_GSBER

AND BLDAT <= P_IDAT1

AND UMSKZ IN S_UMSKZ

AND AUGDT > P_IDAT1

AND BLART IN S_BLART.

IF V_SHKZG EQ 'H'.

ITAB_VEND-WRBTR = ITAB_VEND-WRBTR * -1.

ITAB_VEND-DMBTR = ITAB_VEND-DMBTR * -1 .

ENDIF.

APPEND ITAB_VEND.

CLEAR ITAB_VEND.

ENDSELECT.

ENDIF.

***************************POSTING DATE*******************************

IF P_PDAT EQ 'X'.

*27 if Posting date this is Inner join with BSIK Table

SELECT A~KTOKK A~NAME1 A~LIFNR B~SHKZG B~WRBTR B~DMBTR B~BLDAT B~BUDAT

B~BELNR B~BUKRS B~UMSKZ B~ZFBDT B~BLART B~ZTERM B~REBZG B~REBZJ

B~GSBER B~XBLNR

INTO (ITAB_VEND-KTOKK,ITAB_VEND-NAME1,ITAB_VEND-LIFNR,V_SHKZG,

ITAB_VEND-WRBTR,ITAB_VEND-DMBTR,ITAB_VEND-BLDAT,ITAB_VEND-BUDAT,

ITAB_VEND-BELNR,ITAB_VEND-BUKRS,ITAB_VEND-UMSKZ,ITAB_VEND-ZFBDT,

ITAB_VEND-BLART,ITAB_VEND-ZTERM,ITAB_VEND-REBZG,ITAB_VEND-REBZJ,

ITAB_VEND-GSBER,ITAB_VEND-XBLNR)

FROM ( LFA1 AS A INNER JOIN BSIK AS B ON A~LIFNR = B~LIFNR )

WHERE A~LIFNR IN S_LIFNR

AND A~KTOKK IN S_KTOKK

AND B~BUKRS IN S_BUKRS

AND GSBER IN S_GSBER

AND BUDAT <= P_PDAT1

AND UMSKZ IN S_UMSKZ

AND BLART IN S_BLART.

IF V_SHKZG EQ 'H'.

ITAB_VEND-WRBTR = ITAB_VEND-WRBTR * -1.

ITAB_VEND-DMBTR = ITAB_VEND-DMBTR * -1 .

ENDIF.

APPEND ITAB_VEND.

CLEAR ITAB_VEND.

ENDSELECT.

*28 if Posting date this is Inner join with BSAK Table

SELECT A~KTOKK A~NAME1 A~LIFNR B~SHKZG B~WRBTR B~DMBTR B~BLDAT B~BUDAT

B~BELNR B~BUKRS B~UMSKZ B~ZFBDT B~BLART B~ZTERM B~REBZG B~REBZJ

B~GSBER B~XBLNR

INTO (ITAB_VEND-KTOKK,ITAB_VEND-NAME1,ITAB_VEND-LIFNR,V_SHKZG,

ITAB_VEND-WRBTR,ITAB_VEND-DMBTR,ITAB_VEND-BLDAT,ITAB_VEND-BUDAT,

ITAB_VEND-BELNR,ITAB_VEND-BUKRS,ITAB_VEND-UMSKZ,ITAB_VEND-ZFBDT,

ITAB_VEND-BLART,ITAB_VEND-ZTERM,ITAB_VEND-REBZG,ITAB_VEND-REBZJ,

ITAB_VEND-GSBER,ITAB_VEND-XBLNR)

FROM ( LFA1 AS A INNER JOIN BSAK AS B ON A~LIFNR = B~LIFNR )

WHERE A~LIFNR IN S_LIFNR

AND A~KTOKK IN S_KTOKK

AND B~BUKRS IN S_BUKRS

AND GSBER IN S_GSBER

AND BUDAT <= P_PDAT1

AND UMSKZ IN S_UMSKZ

AND AUGDT > P_PDAT1

AND BLART IN S_BLART.

IF V_SHKZG EQ 'H'.

ITAB_VEND-WRBTR = ITAB_VEND-WRBTR * -1.

ITAB_VEND-DMBTR = ITAB_VEND-DMBTR * -1 .

ENDIF.

APPEND ITAB_VEND.

CLEAR ITAB_VEND.

ENDSELECT.

ENDIF.

ENDIF.

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

************************NORMAL ONLY****************************************

IF P_N EQ 'X' AND P_S EQ ''.

*******************DOCUMENT DATE**************************************

IF P_IDAT EQ 'X'.

*29 if Doc date this is Inner join with BSIK Table

SELECT A~KTOKK A~NAME1 A~LIFNR B~SHKZG B~WRBTR B~DMBTR B~BLDAT B~BUDAT

B~BELNR B~BUKRS B~UMSKZ B~ZFBDT B~BLART B~ZTERM B~REBZG B~REBZJ

B~GSBER B~XBLNR

INTO (ITAB_VEND-KTOKK,ITAB_VEND-NAME1,ITAB_VEND-LIFNR,V_SHKZG,

ITAB_VEND-WRBTR,ITAB_VEND-DMBTR,ITAB_VEND-BLDAT,ITAB_VEND-BUDAT,

ITAB_VEND-BELNR, ITAB_VEND-BUKRS,ITAB_VEND-UMSKZ,ITAB_VEND-ZFBDT,

ITAB_VEND-BLART,ITAB_VEND-ZTERM,ITAB_VEND-REBZG,ITAB_VEND-REBZJ,

ITAB_VEND-GSBER,ITAB_VEND-XBLNR)

FROM ( LFA1 AS A INNER JOIN BSIK AS B ON A~LIFNR = B~LIFNR )

WHERE A~LIFNR IN S_LIFNR

AND A~KTOKK IN S_KTOKK

AND B~BUKRS IN S_BUKRS

AND GSBER IN S_GSBER

AND BLDAT <= P_IDAT1

AND UMSKZ EQ ' '

AND BLART IN S_BLART.

IF V_SHKZG EQ 'H'.

ITAB_VEND-WRBTR = ITAB_VEND-WRBTR * -1.

ITAB_VEND-DMBTR = ITAB_VEND-DMBTR * -1 .

ENDIF.

APPEND ITAB_VEND.

CLEAR ITAB_VEND.

ENDSELECT.

*30 if Doc date this is Inner join with BSAK Table

SELECT A~KTOKK A~NAME1 A~LIFNR B~SHKZG B~WRBTR B~DMBTR B~BLDAT

B~BUDAT B~BELNR B~BUKRS B~UMSKZ B~ZFBDT B~BLART B~ZTERM

B~REBZG B~REBZJ B~GSBER B~XBLNR

INTO (ITAB_VEND-KTOKK,ITAB_VEND-NAME1,ITAB_VEND-LIFNR,V_SHKZG,

ITAB_VEND-WRBTR,ITAB_VEND-DMBTR,ITAB_VEND-BLDAT,ITAB_VEND-BUDAT,

ITAB_VEND-BELNR,ITAB_VEND-BUKRS,ITAB_VEND-UMSKZ,ITAB_VEND-ZFBDT,

ITAB_VEND-BLART,ITAB_VEND-ZTERM, ITAB_VEND-REBZG,ITAB_VEND-REBZJ,

ITAB_VEND-GSBER,ITAB_VEND-XBLNR)

FROM ( LFA1 AS A INNER JOIN BSAK AS B ON A~LIFNR = B~LIFNR )

WHERE A~LIFNR IN S_LIFNR

AND A~KTOKK IN S_KTOKK

AND B~BUKRS IN S_BUKRS

AND GSBER IN S_GSBER

AND BLDAT <= P_IDAT1

AND UMSKZ EQ ' '

AND AUGDT > P_IDAT1

AND BLART IN S_BLART.

IF V_SHKZG EQ 'H'.

ITAB_VEND-WRBTR = ITAB_VEND-WRBTR * -1.

ITAB_VEND-DMBTR = ITAB_VEND-DMBTR * -1 .

ENDIF.

APPEND ITAB_VEND.

CLEAR ITAB_VEND.

ENDSELECT.

ENDIF.

*******************************POSTING DATE***************************

IF P_PDAT EQ 'X'.

*31 if Posting date this is Inner join with BSIK Table

SELECT A~KTOKK A~NAME1 A~LIFNR B~SHKZG B~WRBTR B~DMBTR B~BLDAT B~BUDAT

B~BELNR B~BUKRS B~UMSKZ B~ZFBDT B~BLART B~ZTERM B~REBZG B~REBZJ

B~GSBER B~XBLNR

INTO (ITAB_VEND-KTOKK,ITAB_VEND-NAME1,ITAB_VEND-LIFNR,V_SHKZG,

ITAB_VEND-WRBTR,ITAB_VEND-DMBTR,ITAB_VEND-BLDAT,ITAB_VEND-BUDAT,

ITAB_VEND-BELNR,ITAB_VEND-BUKRS,ITAB_VEND-UMSKZ,ITAB_VEND-ZFBDT,

ITAB_VEND-BLART,ITAB_VEND-ZTERM,ITAB_VEND-REBZG,ITAB_VEND-REBZJ,

ITAB_VEND-GSBER,ITAB_VEND-XBLNR)

FROM ( LFA1 AS A INNER JOIN BSIK AS B ON A~LIFNR = B~LIFNR )

WHERE A~LIFNR IN S_LIFNR

AND A~KTOKK IN S_KTOKK

AND B~BUKRS IN S_BUKRS

AND GSBER IN S_GSBER

AND BUDAT <= P_PDAT1

AND UMSKZ EQ ' '

AND BLART IN S_BLART.

IF V_SHKZG EQ 'H'.

ITAB_VEND-WRBTR = ITAB_VEND-WRBTR * -1.

ITAB_VEND-DMBTR = ITAB_VEND-DMBTR * -1 .

ENDIF.

APPEND ITAB_VEND.

CLEAR ITAB_VEND.

ENDSELECT.

*32 if Posting date this is Inner join with BSAK Table

SELECT A~KTOKK A~NAME1 A~LIFNR B~SHKZG B~WRBTR B~DMBTR B~BLDAT

B~BUDAT B~BELNR B~BUKRS B~UMSKZ B~ZFBDT B~BLART B~ZTERM

B~REBZG B~REBZJ B~GSBER B~XBLNR

INTO (ITAB_VEND-KTOKK,ITAB_VEND-NAME1,

ITAB_VEND-LIFNR,V_SHKZG,ITAB_VEND-WRBTR,ITAB_VEND-DMBTR,

ITAB_VEND-BLDAT,ITAB_VEND-BUDAT,ITAB_VEND-BELNR,ITAB_VEND-BUKRS,

ITAB_VEND-UMSKZ,ITAB_VEND-ZFBDT,ITAB_VEND-BLART,ITAB_VEND-ZTERM,

ITAB_VEND-REBZG,ITAB_VEND-REBZJ,ITAB_VEND-GSBER,ITAB_VEND-XBLNR)

FROM ( LFA1 AS A INNER JOIN BSAK AS B ON A~LIFNR = B~LIFNR )

WHERE A~LIFNR IN S_LIFNR

AND A~KTOKK IN S_KTOKK

AND B~BUKRS IN S_BUKRS

AND GSBER IN S_GSBER

AND BUDAT <= P_PDAT1

AND UMSKZ EQ ' '

AND AUGDT > P_PDAT1

AND BLART IN S_BLART.

IF V_SHKZG EQ 'H'.

ITAB_VEND-WRBTR = ITAB_VEND-WRBTR * -1.

ITAB_VEND-DMBTR = ITAB_VEND-DMBTR * -1 .

ENDIF.

APPEND ITAB_VEND.

CLEAR ITAB_VEND.

ENDSELECT.

ENDIF.

ENDIF.

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

*****************FOR SPECIAL INDICATOR********************************

IF P_N EQ '' AND P_S EQ 'X'.

******************************DOCUMENT DATE***************************

IF P_IDAT EQ 'X'.

*33 if Doc date this is Inner join with BSIK Table

SELECT A~KTOKK A~NAME1 A~LIFNR B~SHKZG B~WRBTR B~DMBTR B~BLDAT B~BUDAT

B~BELNR B~BUKRS B~UMSKZ B~ZFBDT B~BLART B~ZTERM B~REBZG B~REBZJ

B~GSBER B~XBLNR

INTO (ITAB_VEND-KTOKK,ITAB_VEND-NAME1,ITAB_VEND-LIFNR,V_SHKZG,

ITAB_VEND-WRBTR,ITAB_VEND-DMBTR,ITAB_VEND-BLDAT,ITAB_VEND-BUDAT,

ITAB_VEND-BELNR,ITAB_VEND-BUKRS,ITAB_VEND-UMSKZ,ITAB_VEND-ZFBDT,

ITAB_VEND-BLART,ITAB_VEND-ZTERM,ITAB_VEND-REBZG,ITAB_VEND-REBZJ,

ITAB_VEND-GSBER,ITAB_VEND-XBLNR)

FROM ( LFA1 AS A INNER JOIN BSIK AS B ON A~LIFNR = B~LIFNR )

WHERE A~LIFNR IN S_LIFNR

AND A~KTOKK IN S_KTOKK

AND B~BUKRS IN S_BUKRS

AND GSBER IN S_GSBER

AND BLDAT <= P_IDAT1

AND UMSKZ IN S_UMSKZ

AND UMSKZ NE SPACE

AND BLART IN S_BLART.

IF V_SHKZG EQ 'H'.

ITAB_VEND-WRBTR = ITAB_VEND-WRBTR * -1.

ITAB_VEND-DMBTR = ITAB_VEND-DMBTR * -1 .

ENDIF.

APPEND ITAB_VEND.

CLEAR ITAB_VEND.

ENDSELECT.

*34 if Doc date this is Inner join with BSAK Table

SELECT A~KTOKK A~NAME1 A~LIFNR B~SHKZG B~WRBTR B~DMBTR B~BLDAT

B~BUDAT B~BELNR B~BUKRS B~UMSKZ B~ZFBDT B~BLART B~ZTERM B~REBZG

B~REBZJ B~GSBER B~XBLNR

INTO (ITAB_VEND-KTOKK,ITAB_VEND-NAME1,ITAB_VEND-LIFNR,V_SHKZG,

ITAB_VEND-WRBTR,ITAB_VEND-DMBTR,ITAB_VEND-BLDAT,

ITAB_VEND-BUDAT,ITAB_VEND-BELNR,ITAB_VEND-BUKRS,ITAB_VEND-UMSKZ,

ITAB_VEND-ZFBDT,ITAB_VEND-BLART,ITAB_VEND-ZTERM, ITAB_VEND-REBZG,

ITAB_VEND-REBZJ,ITAB_VEND-GSBER,ITAB_VEND-XBLNR)

FROM ( LFA1 AS A INNER JOIN BSAK AS B ON A~LIFNR = B~LIFNR )

WHERE A~LIFNR IN S_LIFNR

AND A~KTOKK IN S_KTOKK

AND B~BUKRS IN S_BUKRS

AND GSBER IN S_GSBER

AND BLDAT <= P_IDAT1

AND UMSKZ IN S_UMSKZ

AND UMSKZ NE SPACE

AND AUGDT > P_IDAT1

AND BLART IN S_BLART.

IF V_SHKZG EQ 'H'.

ITAB_VEND-WRBTR = ITAB_VEND-WRBTR * -1.

ITAB_VEND-DMBTR = ITAB_VEND-DMBTR * -1 .

ENDIF.

APPEND ITAB_VEND.

CLEAR ITAB_VEND.

ENDSELECT.

ENDIF.

***********************POSTING DATE***********************************

IF P_PDAT EQ 'X'.

*35 if Posting date this is Inner join with BSIK Table

SELECT A~KTOKK A~NAME1 A~LIFNR B~SHKZG B~WRBTR B~DMBTR B~BLDAT B~BUDAT

B~BELNR B~BUKRS B~UMSKZ B~ZFBDT B~BLART B~ZTERM B~REBZG B~REBZJ

B~GSBER B~XBLNR

INTO (ITAB_VEND-KTOKK,ITAB_VEND-NAME1,ITAB_VEND-LIFNR,V_SHKZG,

ITAB_VEND-WRBTR,ITAB_VEND-DMBTR,ITAB_VEND-BLDAT,ITAB_VEND-BUDAT,

ITAB_VEND-BELNR,ITAB_VEND-BUKRS,ITAB_VEND-UMSKZ,ITAB_VEND-ZFBDT,

ITAB_VEND-BLART,ITAB_VEND-ZTERM,ITAB_VEND-REBZG,ITAB_VEND-REBZJ,

ITAB_VEND-GSBER,ITAB_VEND-XBLNR)

FROM ( LFA1 AS A INNER JOIN BSIK AS B ON A~LIFNR = B~LIFNR )

WHERE A~LIFNR IN S_LIFNR

AND A~KTOKK IN S_KTOKK

AND B~BUKRS IN S_BUKRS

AND GSBER IN S_GSBER

AND BUDAT <= P_PDAT1

AND UMSKZ IN S_UMSKZ

AND UMSKZ NE SPACE

AND BLART IN S_BLART.

IF V_SHKZG EQ 'H'.

ITAB_VEND-WRBTR = ITAB_VEND-WRBTR * -1.

ITAB_VEND-DMBTR = ITAB_VEND-DMBTR * -1 .

ENDIF.

APPEND ITAB_VEND.

CLEAR ITAB_VEND.

ENDSELECT.

*36 if Posting date this is Inner join with BSAK Table

SELECT A~KTOKK A~NAME1 A~LIFNR B~SHKZG B~WRBTR B~DMBTR B~BLDAT

B~BUDAT B~BELNR B~BUKRS B~UMSKZ B~ZFBDT B~BLART B~ZTERM B~REBZG

B~REBZJ B~GSBER B~XBLNR

INTO (ITAB_VEND-KTOKK,ITAB_VEND-NAME1,ITAB_VEND-LIFNR,V_SHKZG,

ITAB_VEND-WRBTR,ITAB_VEND-DMBTR,ITAB_VEND-BLDAT,

ITAB_VEND-BUDAT,ITAB_VEND-BELNR,ITAB_VEND-BUKRS,ITAB_VEND-UMSKZ,

ITAB_VEND-ZFBDT,ITAB_VEND-BLART,ITAB_VEND-ZTERM, ITAB_VEND-REBZG,

ITAB_VEND-REBZJ,ITAB_VEND-GSBER,ITAB_VEND-XBLNR)

FROM ( LFA1 AS A INNER JOIN BSAK AS B ON A~LIFNR = B~LIFNR )

WHERE A~LIFNR IN S_LIFNR

AND A~KTOKK IN S_KTOKK

AND B~BUKRS IN S_BUKRS

AND GSBER IN S_GSBER

AND BUDAT <= P_PDAT1

AND UMSKZ IN S_UMSKZ

AND UMSKZ NE SPACE

AND AUGDT > P_PDAT1

AND BLART IN S_BLART.

IF V_SHKZG EQ 'H'.

ITAB_VEND-WRBTR = ITAB_VEND-WRBTR * -1.

ITAB_VEND-DMBTR = ITAB_VEND-DMBTR * -1 .

ENDIF.

APPEND ITAB_VEND.

CLEAR ITAB_VEND.

ENDSELECT.

ENDIF.

ENDIF.

ENDIF.

******END FOR BOTH INDICATOR***************************************

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

  • END OF QUERY FOR SELECTION PROCEDURE

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

    • START FOR NET OFF VALUE DISPLAY ********

IF P_B EQ 'X'.

SORT ITAB_VEND BY BLART.

LOOP AT ITAB_VEND WHERE BLART EQ 'AB' OR BLART EQ 'KA'.

MOVE-CORRESPONDING ITAB_VEND TO TEMP.

COLLECT TEMP.

CLEAR TEMP.

DELETE ITAB_VEND.

CLEAR ITAB_VEND.

ENDLOOP.

LOOP AT TEMP.

READ TABLE ITAB_VEND WITH KEY LIFNR = TEMP-LIFNR BELNR = TEMP-REBZG.

IF SY-SUBRC EQ 0.

IF ITAB_VEND-WRBTR NE TEMP-WRBTR AND ITAB_VEND-DMBTR NE TEMP-DMBTR.

IF V_SHKZG EQ 'S'.

TEMP-NWRBTR = ITAB_VEND-WRBTR + TEMP-WRBTR.

TEMP-NDMBTR = ITAB_VEND-DMBTR + TEMP-DMBTR.

DELETE ITAB_VEND WHERE LIFNR = TEMP-LIFNR

AND BELNR = TEMP-REBZG.

MODIFY TEMP.

CLEAR TEMP.

ENDIF.

ENDIF.

ENDIF.

ENDLOOP.

    • END FOR NET OFF VALUE DISPLAY ********

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

  • START FOR NO. OF DAYS CALCULATION FOR AGING OUTPUT DISPLAY *

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

LOOP AT TEMP.

READ TABLE ITAB_VEND1 WITH KEY LIFNR = TEMP-LIFNR BELNR = TEMP-REBZG.

********IF DOCUMENT DATE IS CHECKED********************

  • Nayan 's fifth calculation

IF P_IDAT EQ 'X'.

IF TEMP-BLART EQ 'LD'.

SELECT SINGLE * FROM T052 WHERE ZTERM = ITAB_VEND-ZTERM.

W_DUEDT = ITAB_VEND-BLDAT + T052-ZTAG1. "temp-BLDAT

CALL FUNCTION 'HR_SGPBS_YRS_MTHS_DAYS'

EXPORTING

BEG_DA = W_DUEDT

END_DA = P_IDAT1

IMPORTING

NO_CAL_DAY = W_DAYS.

ENDIF.

IF TEMP-BLART NE 'LD'.

SELECT SINGLE * FROM T052 WHERE ZTERM = ITAB_VEND-ZTERM.

W_DUEDT = ITAB_VEND-BLDAT + T052-ZTAG1. "temp-BLDAT

CALL FUNCTION 'HR_SGPBS_YRS_MTHS_DAYS'

EXPORTING

BEG_DA = W_DUEDT

END_DA = P_IDAT1

IMPORTING

NO_CAL_DAY = W_DAYS.

ENDIF.

      • FOR MOVING THE DUE VALUES TO THE APPR. TIME PERIOD ****

IF W_DAYS > 180 .

IF P_LC IS INITIAL .

IF TEMP-NWRBTR < 0.

MOVE TEMP-NWRBTR TO ITAB_VEND2-SIX .

ELSE.

MOVE TEMP-NWRBTR TO ITAB_VEND2-AADV .

ENDIF.

ELSE .

IF TEMP-NDMBTR < 0 .

MOVE TEMP-NDMBTR TO ITAB_VEND2-SIX .

ELSE.

MOVE TEMP-NDMBTR TO ITAB_VEND2-AADV .

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS > 120 .

IF W_DAYS <= 180.

IF P_LC IS INITIAL .

IF TEMP-NWRBTR < 0.

MOVE TEMP-NWRBTR TO ITAB_VEND2-FIVE .

ELSE.

MOVE TEMP-NWRBTR TO ITAB_VEND2-AADV .

ENDIF.

ELSE .

IF TEMP-NDMBTR < 0 .

MOVE TEMP-NDMBTR TO ITAB_VEND2-FIVE .

ELSE.

MOVE TEMP-NDMBTR TO ITAB_VEND2-AADV .

ENDIF.

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS > 90 .

IF W_DAYS <= 120.

IF P_LC IS INITIAL .

IF TEMP-NWRBTR < 0.

MOVE TEMP-NWRBTR TO ITAB_VEND2-FOUR .

ELSE.

MOVE TEMP-NWRBTR TO ITAB_VEND2-AADV .

ENDIF.

ELSE .

IF TEMP-NDMBTR < 0 .

MOVE TEMP-NDMBTR TO ITAB_VEND2-FOUR .

ELSE.

MOVE TEMP-NDMBTR TO ITAB_VEND2-AADV .

ENDIF.

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS > 60 .

IF W_DAYS <= 90.

IF P_LC IS INITIAL .

IF TEMP-NWRBTR < 0.

MOVE TEMP-NWRBTR TO ITAB_VEND2-THREE .

ELSE.

MOVE TEMP-NWRBTR TO ITAB_VEND2-AADV .

ENDIF.

ELSE .

IF TEMP-NDMBTR < 0 .

MOVE TEMP-NDMBTR TO ITAB_VEND2-THREE .

ELSE.

MOVE TEMP-NDMBTR TO ITAB_VEND2-AADV .

ENDIF.

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS > 30 .

IF W_DAYS <= 60.

IF P_LC IS INITIAL .

IF TEMP-NWRBTR < 0.

MOVE TEMP-NWRBTR TO ITAB_VEND2-TWO .

ELSE.

MOVE TEMP-NWRBTR TO ITAB_VEND2-AADV .

ENDIF.

ELSE .

IF TEMP-NDMBTR < 0 .

MOVE TEMP-NDMBTR TO ITAB_VEND2-TWO .

ELSE.

MOVE TEMP-NDMBTR TO ITAB_VEND2-AADV .

ENDIF.

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS > 0 .

IF W_DAYS <= 30 .

IF P_LC IS INITIAL .

IF TEMP-NWRBTR < 0.

MOVE TEMP-NWRBTR TO ITAB_VEND2-ONE .

ELSE.

MOVE TEMP-NWRBTR TO ITAB_VEND2-AADV .

ENDIF.

ELSE .

IF TEMP-NDMBTR < 0 .

MOVE TEMP-NDMBTR TO ITAB_VEND2-ONE .

ELSE.

MOVE TEMP-NDMBTR TO ITAB_VEND2-AADV .

ENDIF.

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS <= 0 .

IF P_LC IS INITIAL .

IF TEMP-NWRBTR < 0.

MOVE TEMP-NWRBTR TO ITAB_VEND2-MINUS .

ELSE.

MOVE TEMP-NWRBTR TO ITAB_VEND2-AADV .

ENDIF.

ELSE .

IF TEMP-NDMBTR < 0 .

MOVE TEMP-NDMBTR TO ITAB_VEND2-MINUS .

ELSE.

MOVE TEMP-NDMBTR TO ITAB_VEND2-AADV .

ENDIF.

ENDIF.

ENDIF.

if itab_vend-UMSKZ ne ' ' .

clear w_duedt.

clear w_days.

endif.

select single text1 into ITAB_VEND2-text1 from T052U where ZTERM eq ITAB_VEND-ZTERM.

ITAB_VEND2-ATOT = ITAB_VEND2-ONE + ITAB_VEND2-TWO + ITAB_VEND2-THREE +

ITAB_VEND2-FOUR + ITAB_VEND2-FIVE + ITAB_VEND2-SIX +

ITAB_VEND2-MINUS + ITAB_VEND2-CRED + ITAB_VEND2-AADV.

MOVE ITAB_VEND-LIFNR TO ITAB_VEND2-LIFNR.

MOVE ITAB_VEND-NAME1 TO ITAB_VEND2-NAME1.

MOVE ITAB_VEND-BELNR TO ITAB_VEND2-BELNR.

MOVE ITAB_VEND-BLDAT TO ITAB_VEND2-BLDAT.

MOVE ITAB_VEND-BUDAT TO ITAB_VEND2-BUDAT.

MOVE ITAB_VEND-BUKRS TO ITAB_VEND2-BUKRS.

MOVE ITAB_VEND-UMSKZ TO ITAB_VEND2-UMSKZ.

MOVE ITAB_VEND-BLART TO ITAB_VEND2-BLART.

MOVE ITAB_VEND-ZFBDT TO ITAB_VEND2-ZFBDT.

MOVE ITAB_VEND-ZTERM TO ITAB_VEND2-ZTERM.

MOVE ITAB_VEND-GSBER TO ITAB_VEND2-GSBER.

MOVE ITAB_VEND-XBLNR TO ITAB_VEND2-XBLNR.

MOVE W_DAYS TO ITAB_VEND2-DUDAY.

MOVE W_DUEDT TO ITAB_VEND2-DUEDT.

IF ITAB_VEND2-LIFNR <> ''.

COLLECT ITAB_VEND2.

  • CLEAR ITAB_VEND2.

ENDIF.

  • COLLECT ITAB_VEND2.

CLEAR ITAB_VEND2.

ENDIF.

***FOR POSTING DATE & IS CHECKED ***********************

IF P_PDAT EQ 'X'.

    • FOR DOCUMENT DATE IS CHECKED *******

                                                    • FOR CALCULATING THE NO. OF DAYS **********

*nayan's sixth calculation....

SELECT SINGLE * FROM T052 WHERE ZTERM = TEMP-ZTERM.

TEMP-DUEDT = TEMP-BUDAT + T052-ZTAG1.

SELECT SINGLE * FROM T052 WHERE ZTERM = ITAB_VEND-ZTERM.

W_DUEDT = ITAB_VEND-BUDAT + T052-ZTAG1.

CALL FUNCTION 'HR_SGPBS_YRS_MTHS_DAYS'

EXPORTING

BEG_DA = W_DUEDT

END_DA = P_PDAT1

IMPORTING

NO_CAL_DAY = W_DAYS.

      • FOR MOVING THE DUE VALUES TO THE APPR. TIME PERIOD ****

IF W_DAYS > 180 .

IF P_LC IS INITIAL .

IF TEMP-NWRBTR < 0 .

MOVE TEMP-NWRBTR TO ITAB_VEND2-SIX .

ELSE.

MOVE TEMP-NWRBTR TO ITAB_VEND2-AADV.

ENDIF.

ELSE .

IF TEMP-NDMBTR < 0 .

MOVE TEMP-NDMBTR TO ITAB_VEND2-SIX .

ELSE.

MOVE TEMP-NDMBTR TO ITAB_VEND2-AADV.

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS > 120 .

IF W_DAYS <= 180.

IF P_LC IS INITIAL .

IF TEMP-NWRBTR < 0 .

MOVE TEMP-NWRBTR TO ITAB_VEND2-FIVE .

ELSE.

MOVE TEMP-NWRBTR TO ITAB_VEND2-AADV.

ENDIF.

ELSE .

IF TEMP-NDMBTR < 0 .

MOVE TEMP-NDMBTR TO ITAB_VEND2-FIVE .

ELSE.

MOVE TEMP-NDMBTR TO ITAB_VEND2-AADV.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS > 90 .

IF W_DAYS <= 120.

IF P_LC IS INITIAL .

IF TEMP-NWRBTR < 0 .

MOVE TEMP-NWRBTR TO ITAB_VEND2-FOUR .

ELSE.

MOVE TEMP-NWRBTR TO ITAB_VEND2-AADV.

ENDIF.

ELSE .

IF TEMP-NDMBTR < 0 .

MOVE TEMP-NDMBTR TO ITAB_VEND2-FOUR .

ELSE.

MOVE TEMP-NDMBTR TO ITAB_VEND2-AADV.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS > 60 .

IF W_DAYS <= 90.

IF P_LC IS INITIAL .

IF TEMP-NWRBTR < 0 .

MOVE TEMP-NWRBTR TO ITAB_VEND2-THREE .

ELSE.

MOVE TEMP-NWRBTR TO ITAB_VEND2-AADV.

ENDIF.

ELSE .

IF TEMP-NDMBTR < 0 .

MOVE TEMP-NDMBTR TO ITAB_VEND2-THREE .

ELSE.

MOVE TEMP-NDMBTR TO ITAB_VEND2-AADV.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS > 30 .

IF W_DAYS <= 60.

IF P_LC IS INITIAL .

IF TEMP-NWRBTR < 0 .

MOVE TEMP-NWRBTR TO ITAB_VEND2-TWO .

ELSE.

MOVE TEMP-NWRBTR TO ITAB_VEND2-AADV.

ENDIF.

ELSE .

IF TEMP-NDMBTR < 0 .

MOVE TEMP-NDMBTR TO ITAB_VEND2-TWO .

ELSE.

MOVE TEMP-NDMBTR TO ITAB_VEND2-AADV.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS > 0 .

IF W_DAYS <= 30 .

IF P_LC IS INITIAL .

IF TEMP-NWRBTR < 0 .

MOVE TEMP-NWRBTR TO ITAB_VEND2-ONE .

ELSE.

MOVE TEMP-NWRBTR TO ITAB_VEND2-AADV.

ENDIF.

ELSE .

IF TEMP-NDMBTR < 0 .

MOVE TEMP-NDMBTR TO ITAB_VEND2-ONE .

ELSE.

MOVE TEMP-NDMBTR TO ITAB_VEND2-AADV.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS <= 0 .

IF P_LC IS INITIAL .

IF TEMP-NWRBTR < 0 .

MOVE TEMP-NWRBTR TO ITAB_VEND2-MINUS .

ELSE.

MOVE TEMP-NWRBTR TO ITAB_VEND2-AADV.

ENDIF.

ELSE .

IF TEMP-NDMBTR < 0 .

MOVE TEMP-NDMBTR TO ITAB_VEND2-MINUS .

ELSE.

MOVE TEMP-NDMBTR TO ITAB_VEND2-AADV.

ENDIF.

ENDIF.

ENDIF.

if itab_vend-UMSKZ ne ' ' .

clear w_duedt.

clear w_days.

endif.

select single text1 into ITAB_VEND2-text1 from T052U where ZTERM eq ITAB_VEND-ZTERM.

ITAB_VEND2-ATOT = ITAB_VEND2-ONE + ITAB_VEND2-TWO + ITAB_VEND2-THREE +

ITAB_VEND2-FOUR + ITAB_VEND2-FIVE + ITAB_VEND2-SIX +

ITAB_VEND2-MINUS + ITAB_VEND2-CRED + ITAB_VEND2-AADV.

MOVE ITAB_VEND-LIFNR TO ITAB_VEND2-LIFNR.

MOVE ITAB_VEND-NAME1 TO ITAB_VEND2-NAME1.

MOVE ITAB_VEND-BELNR TO ITAB_VEND2-BELNR.

MOVE ITAB_VEND-BLDAT TO ITAB_VEND2-BLDAT.

MOVE ITAB_VEND-BUDAT TO ITAB_VEND2-BUDAT.

MOVE ITAB_VEND-BUKRS TO ITAB_VEND2-BUKRS.

MOVE ITAB_VEND-UMSKZ TO ITAB_VEND2-UMSKZ.

MOVE ITAB_VEND-ZTERM TO ITAB_VEND2-ZTERM.

MOVE ITAB_VEND-BLART TO ITAB_VEND2-BLART.

MOVE ITAB_VEND-ZFBDT TO ITAB_VEND2-ZFBDT.

MOVE ITAB_VEND-GSBER TO ITAB_VEND2-GSBER.

MOVE ITAB_VEND-XBLNR TO ITAB_VEND2-XBLNR.

MOVE W_DUEDT TO ITAB_VEND2-DUEDT.

MOVE W_DAYS TO ITAB_VEND2-DUDAY.

IF ITAB_VEND2-LIFNR <> ''.

COLLECT ITAB_VEND2.

ENDIF.

CLEAR ITAB_VEND2.

CLEAR W_DUEDT.

ENDIF.

ENDLOOP.

LOOP AT ITAB_VEND.

********IF DOCUMENT DATE IS CHECKED********************

IF P_IDAT EQ 'X'.

*Nayan 's seven calculation

IF ITAB_VEND-BLART EQ 'LD'.

SELECT SINGLE * FROM T052 WHERE ZTERM = ITAB_VEND-ZTERM.

W_DUEDT = ITAB_VEND-BLDAT + T052-ZTAG1.

CALL FUNCTION 'HR_SGPBS_YRS_MTHS_DAYS'

EXPORTING

BEG_DA = W_DUEDT

END_DA = P_IDAT1

IMPORTING

NO_CAL_DAY = W_DAYS.

ENDIF.

IF ITAB_VEND-BLART NE 'LD'.

SELECT SINGLE * FROM T052 WHERE ZTERM = itab_vend-ZTERM.

W_DUEDT = ITAB_VEND-BLDAT + T052-ZTAG1.

CALL FUNCTION 'HR_SGPBS_YRS_MTHS_DAYS'

EXPORTING

BEG_DA = W_DUEDT

END_DA = P_IDAT1

IMPORTING

NO_CAL_DAY = W_DAYS.

ENDIF.

      • FOR MOVING THE DUE VALUES TO THE APPR. TIME PERIOD ****

IF W_DAYS > 180 .

IF P_LC IS INITIAL .

IF ITAB_VEND-WRBTR < 0 .

MOVE ITAB_VEND-WRBTR TO ITAB_VEND2-SIX.

ELSE.

MOVE ITAB_VEND-WRBTR TO ITAB_VEND2-AADV.

ENDIF.

ELSE .

IF ITAB_VEND-DMBTR < 0 .

MOVE ITAB_VEND-DMBTR TO ITAB_VEND2-SIX.

ELSE.

MOVE ITAB_VEND-DMBTR TO ITAB_VEND2-AADV.

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS > 120 .

IF W_DAYS <= 180.

IF P_LC IS INITIAL .

IF ITAB_VEND-WRBTR < 0 .

MOVE ITAB_VEND-WRBTR TO ITAB_VEND2-FIVE.

ELSE.

MOVE ITAB_VEND-WRBTR TO ITAB_VEND2-AADV.

ENDIF.

ELSE .

IF ITAB_VEND-DMBTR < 0 .

MOVE ITAB_VEND-DMBTR TO ITAB_VEND2-FIVE.

ELSE.

MOVE ITAB_VEND-DMBTR TO ITAB_VEND2-AADV.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS > 90 .

IF W_DAYS <= 120.

IF P_LC IS INITIAL .

IF ITAB_VEND-WRBTR < 0 .

MOVE ITAB_VEND-WRBTR TO ITAB_VEND2-FOUR.

ELSE.

MOVE ITAB_VEND-WRBTR TO ITAB_VEND2-AADV.

ENDIF.

ELSE .

IF ITAB_VEND-DMBTR < 0 .

MOVE ITAB_VEND-DMBTR TO ITAB_VEND2-FOUR.

ELSE.

MOVE ITAB_VEND-DMBTR TO ITAB_VEND2-AADV.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS > 60 .

IF W_DAYS <= 90.

IF P_LC IS INITIAL .

IF ITAB_VEND-WRBTR < 0 .

MOVE ITAB_VEND-WRBTR TO ITAB_VEND2-THREE.

ELSE.

MOVE ITAB_VEND-WRBTR TO ITAB_VEND2-AADV.

ENDIF.

ELSE .

IF ITAB_VEND-DMBTR < 0 .

MOVE ITAB_VEND-DMBTR TO ITAB_VEND2-THREE.

ELSE.

MOVE ITAB_VEND-DMBTR TO ITAB_VEND2-AADV.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS > 30 .

IF W_DAYS <= 60.

IF P_LC IS INITIAL .

IF ITAB_VEND-WRBTR < 0 .

MOVE ITAB_VEND-WRBTR TO ITAB_VEND2-TWO.

ELSE.

MOVE ITAB_VEND-WRBTR TO ITAB_VEND2-AADV.

ENDIF.

ELSE .

IF ITAB_VEND-DMBTR < 0 .

MOVE ITAB_VEND-DMBTR TO ITAB_VEND2-TWO.

ELSE.

MOVE ITAB_VEND-DMBTR TO ITAB_VEND2-AADV.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS > 0 .

IF W_DAYS <= 30 .

IF P_LC IS INITIAL .

IF ITAB_VEND-WRBTR < 0 .

MOVE ITAB_VEND-WRBTR TO ITAB_VEND2-ONE.

ELSE.

MOVE ITAB_VEND-WRBTR TO ITAB_VEND2-AADV.

ENDIF.

ELSE .

IF ITAB_VEND-DMBTR < 0 .

MOVE ITAB_VEND-DMBTR TO ITAB_VEND2-ONE.

ELSE.

MOVE ITAB_VEND-DMBTR TO ITAB_VEND2-AADV.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS <= 0 .

IF P_LC IS INITIAL .

IF ITAB_VEND-WRBTR < 0 .

MOVE ITAB_VEND-WRBTR TO ITAB_VEND2-MINUS.

ELSE.

MOVE ITAB_VEND-WRBTR TO ITAB_VEND2-AADV.

ENDIF.

ELSE .

IF ITAB_VEND-DMBTR < 0 .

MOVE ITAB_VEND-DMBTR TO ITAB_VEND2-MINUS.

ELSE.

MOVE ITAB_VEND-DMBTR TO ITAB_VEND2-AADV.

ENDIF.

ENDIF.

ENDIF.

if itab_vend-UMSKZ ne ' ' .

clear w_duedt.

clear w_days.

endif.

select single text1 into ITAB_VEND2-text1 from T052U where ZTERM eq ITAB_VEND-ZTERM.

ITAB_VEND2-ATOT = ITAB_VEND2-ONE + ITAB_VEND2-TWO +

ITAB_VEND2-THREE + ITAB_VEND2-FOUR +

ITAB_VEND2-FIVE + ITAB_VEND2-SIX +

ITAB_VEND2-CRED + ITAB_VEND2-MINUS +

ITAB_VEND2-AADV.

MOVE ITAB_VEND-LIFNR TO ITAB_VEND2-LIFNR.

MOVE ITAB_VEND-NAME1 TO ITAB_VEND2-NAME1.

MOVE ITAB_VEND-BELNR TO ITAB_VEND2-BELNR.

MOVE ITAB_VEND-BLDAT TO ITAB_VEND2-BLDAT.

MOVE ITAB_VEND-BUDAT TO ITAB_VEND2-BUDAT.

MOVE ITAB_VEND-BUKRS TO ITAB_VEND2-BUKRS.

MOVE ITAB_VEND-UMSKZ TO ITAB_VEND2-UMSKZ.

MOVE ITAB_VEND-BLART TO ITAB_VEND2-BLART.

MOVE ITAB_VEND-ZFBDT TO ITAB_VEND2-ZFBDT.

MOVE ITAB_VEND-ZTERM TO ITAB_VEND2-ZTERM.

MOVE ITAB_VEND-GSBER TO ITAB_VEND2-GSBER.

MOVE ITAB_VEND-XBLNR TO ITAB_VEND2-XBLNR.

MOVE W_DAYS TO ITAB_VEND2-DUDAY.

MOVE W_DUEDT TO ITAB_VEND2-DUEDT.

APPEND ITAB_VEND2.

CLEAR ITAB_VEND2.

ENDIF.

***FOR POSTING DATE & IS CHECKED ***********************

IF P_PDAT EQ 'X'.

    • FOR DO UMENT DATE IS CHECKED *******

                                                    • FOR CALCULATING THE NO. OF DAYS **********

  • Nayan 's eight calculation

SELECT SINGLE * FROM T052 WHERE ZTERM = ITAB_VEND-ZTERM.

ITAB_VEND-DUEDT = ITAB_VEND-BUDAT + T052-ZTAG1.

W_DUEDT = ITAB_VEND-BUDAT + T052-ZTAG1.

CALL FUNCTION 'HR_SGPBS_YRS_MTHS_DAYS'

EXPORTING

BEG_DA = W_DUEDT

END_DA = P_PDAT1

IMPORTING

NO_CAL_DAY = W_DAYS.

      • FOR MOVING THE DUE VALUES TO THE APPR. TIME PERIOD ****

IF W_DAYS > 180 .

IF P_LC IS INITIAL .

IF ITAB_VEND-WRBTR < 0 .

MOVE ITAB_VEND-WRBTR TO ITAB_VEND2-SIX .

ELSE.

MOVE ITAB_VEND-WRBTR TO ITAB_VEND2-AADV .

ENDIF.

ELSE .

IF ITAB_VEND-DMBTR < 0 .

MOVE ITAB_VEND-DMBTR TO ITAB_VEND2-SIX .

ELSE.

MOVE ITAB_VEND-DMBTR TO ITAB_VEND2-AADV .

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS > 120 .

IF W_DAYS <= 180.

IF P_LC IS INITIAL .

IF ITAB_VEND-WRBTR < 0 .

MOVE ITAB_VEND-WRBTR TO ITAB_VEND2-FIVE .

ELSE.

MOVE ITAB_VEND-WRBTR TO ITAB_VEND2-AADV .

ENDIF.

ELSE .

IF ITAB_VEND-DMBTR < 0 .

MOVE ITAB_VEND-DMBTR TO ITAB_VEND2-FIVE .

ELSE.

MOVE ITAB_VEND-DMBTR TO ITAB_VEND2-AADV .

ENDIF.

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS > 90 .

IF W_DAYS <= 120.

IF P_LC IS INITIAL .

IF ITAB_VEND-WRBTR < 0 .

MOVE ITAB_VEND-WRBTR TO ITAB_VEND2-FOUR .

ELSE.

MOVE ITAB_VEND-WRBTR TO ITAB_VEND2-AADV .

ENDIF.

ELSE .

IF ITAB_VEND-DMBTR < 0 .

MOVE ITAB_VEND-DMBTR TO ITAB_VEND2-FOUR .

ELSE.

MOVE ITAB_VEND-DMBTR TO ITAB_VEND2-AADV .

ENDIF.

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS > 60 .

IF W_DAYS <= 90.

IF P_LC IS INITIAL .

IF ITAB_VEND-WRBTR < 0 .

MOVE ITAB_VEND-WRBTR TO ITAB_VEND2-THREE .

ELSE.

MOVE ITAB_VEND-WRBTR TO ITAB_VEND2-AADV .

ENDIF.

ELSE .

IF ITAB_VEND-DMBTR < 0 .

MOVE ITAB_VEND-DMBTR TO ITAB_VEND2-THREE .

ELSE.

MOVE ITAB_VEND-DMBTR TO ITAB_VEND2-AADV .

ENDIF.

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS > 30 .

IF W_DAYS <= 60.

IF P_LC IS INITIAL .

IF ITAB_VEND-WRBTR < 0 .

MOVE ITAB_VEND-WRBTR TO ITAB_VEND2-TWO .

ELSE.

MOVE ITAB_VEND-WRBTR TO ITAB_VEND2-AADV .

ENDIF.

ELSE .

IF ITAB_VEND-DMBTR < 0 .

MOVE ITAB_VEND-DMBTR TO ITAB_VEND2-TWO .

ELSE.

MOVE ITAB_VEND-DMBTR TO ITAB_VEND2-AADV .

ENDIF.

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS > 0 .

IF W_DAYS <= 30 .

IF P_LC IS INITIAL .

IF ITAB_VEND-WRBTR < 0 .

MOVE ITAB_VEND-WRBTR TO ITAB_VEND2-ONE .

ELSE.

MOVE ITAB_VEND-WRBTR TO ITAB_VEND2-AADV .

ENDIF.

ELSE .

IF ITAB_VEND-DMBTR < 0 .

MOVE ITAB_VEND-DMBTR TO ITAB_VEND2-ONE .

ELSE.

MOVE ITAB_VEND-DMBTR TO ITAB_VEND2-AADV .

ENDIF.

ENDIF.

ENDIF.

ENDIF.

IF W_DAYS <= 0 .

IF P_LC IS INITIAL .

IF ITAB_VEND-WRBTR < 0 .

MOVE ITAB_VEND-WRBTR TO ITAB_VEND2-MINUS .

ELSE.

MOVE ITAB_VEND-WRBTR TO ITAB_VEND2-AADV .

ENDIF.

ELSE .

IF ITAB_VEND-DMBTR < 0 .

MOVE ITAB_VEND-DMBTR TO ITAB_VEND2-MINUS .

ELSE.

MOVE ITAB_VEND-DMBTR TO ITAB_VEND2-AADV .

ENDIF.

ENDIF.

ENDIF.

if itab_vend-UMSKZ ne ' ' .

clear w_duedt.

clear w_days.

endif.

select single text1 into ITAB_VEND2-text1 from T052U where ZTERM eq ITAB_VEND-ZTERM.

ITAB_VEND2-ATOT = ITAB_VEND2-ONE + ITAB_VEND2-TWO + ITAB_VEND2-THREE +

ITAB_VEND2-FOUR + ITAB_VEND2-FIVE + ITAB_VEND2-SIX +

ITAB_VEND2-MINUS + ITAB_VEND2-CRED + ITAB_VEND2-AADV.

MOVE ITAB_VEND-LIFNR TO ITAB_VEND2-LIFNR.

MOVE ITAB_VEND-NAME1 TO ITAB_VEND2-NAME1.

MOVE ITAB_VEND-BELNR TO ITAB_VEND2-BELNR.

MOVE ITAB_VEND-BLDAT TO ITAB_VEND2-BLDAT.

MOVE ITAB_VEND-BUDAT TO ITAB_VEND2-BUDAT.

MOVE ITAB_VEND-BUKRS TO ITAB_VEND2-BUKRS.

MOVE ITAB_VEND-UMSKZ TO ITAB_VEND2-UMSKZ.

MOVE ITAB_VEND-ZTERM TO ITAB_VEND2-ZTERM.

MOVE ITAB_VEND-BLART TO ITAB_VEND2-BLART.

MOVE ITAB_VEND-ZFBDT TO ITAB_VEND2-ZFBDT.

MOVE ITAB_VEND-GSBER TO ITAB_VEND2-GSBER.

MOVE ITAB_VEND-XBLNR TO ITAB_VEND2-XBLNR.

MOVE W_DUEDT TO ITAB_VEND2-DUEDT.

MOVE W_DAYS TO ITAB_VEND2-DUDAY.

APPEND ITAB_VEND2.

CLEAR ITAB_VEND2.

CLEAR W_DUEDT.

ENDIF.

ENDLOOP.

ENDIF.

    • END OF BOTH ***

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

  • END FOR NO. OF DAYS CALCULATION FOR AGING OUTPUT DISPLAY IF BOTH *

  • INDICATOR IS TICKED *

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

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

  • ALV LAYOUT PROPERTIES *

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

refresh gt_fieldcat. "SHIVAM

PERFORM FIELDCAT_INIT USING GT_FIELDCAT[].

CLEAR GS_LAYOUT.

GS_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.

GS_LAYOUT-TOTALS_BEFORE_ITEMS = ''.

GS_LAYOUT-KEY_HOTSPOT = 'X'.

GS_LAYOUT-NO_KEYFIX = 'X'.

GS_LAYOUT-GET_SELINFOS = 'X'.

GS_LAYOUT-GROUP_CHANGE_EDIT = 'X'.

GS_LAYOUT-DETAIL_POPUP = 'X'.

GS_LAYOUT-TOTALS_TEXT = 'Total'.

GS_LAYOUT-SUBTOTALS_TEXT = 'Sub Total'.

GS_LAYOUT-NO_SUBTOTALS = ''.

GS_LAYOUT-NUMC_SUM = 'X'.

GS_LAYOUT-DETAIL_INITIAL_LINES = 'X'.

  • GS_LAYOUT-NO_HOTSPOT = ' '.

  • GS_LAYOUT-COLWIDTH_OPTIMIZE = ''.

  • GS_LAYOUT-TOTALS_BEFORE_ITEMS = ''.

  • GS_LAYOUT-KEY_HOTSPOT = 'X'.

GS_LAYOUT-NO_VLINE = ''.

  • GS_LAYOUT-DEF_STATUS = 'X'.

  • GS_LAYOUT-NO_KEYFIX = 'X'.

GS_LAYOUT-ZEBRA = 'X'. "STRIPED PATTERN

  • GS_LAYOUT-HOTSPOT_FIELDNAME = ''.

GS_LAYOUT-WINDOW_TITLEBAR = 'CREDITORS AGING REPORT'.

GS_LAYOUT-GET_SELINFOS = 'X'.

GS_LAYOUT-DETAIL_POPUP = 'X'.

GS_LAYOUT-DETAIL_TITLEBAR = 'CREDITORS AGING REPORT'.

IF P_DET EQ 'X'.

  • data: variant_detail like disvariant. "SHIVAM

  • variant_detail-report = g_repid. "SHIVAM

IF P_D EQ 'X' .

  • ***********************************************************************

  • * ALV REUSE FUNCTION

  • ***********************************************************************

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = G_REPID

IS_LAYOUT = GS_LAYOUT

IT_SORT = GT_SORT[]

I_CALLBACK_USER_COMMAND = G_USER_COMMAND

IT_FIELDCAT = GT_FIELDCAT[]

IT_EVENTS = GT_EVENTS[] "SHIVAM

IT_SPECIAL_GROUPS = GT_SP_GROUP[]

I_SAVE = 'X'

TABLES

T_OUTTAB = ITAB_VEND4.

ENDIF.

  • *********** IF BOTH INDICATOR IS CHECKED *****************************

IF P_B EQ 'X'.

  • --------------------*

  • ***********************************************************************

  • ALV REUSE FUNCTION *

  • ***********************************************************************

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = G_REPID

IS_LAYOUT = GS_LAYOUT

IT_SORT = GT_SORT[]

I_CALLBACK_USER_COMMAND = G_USER_COMMAND

IT_FIELDCAT = GT_FIELDCAT[]

IT_EVENTS = GT_EVENTS[] "SHIVAM

IT_SPECIAL_GROUPS = GT_SP_GROUP[]

I_SAVE = 'X'

TABLES

T_OUTTAB = ITAB_VEND2.

ENDIF.

  • ***********************************************************************

  • **** IF CREDIT INDICATOR IS CHECKED **********************************

IF P_C EQ 'X'.

  • --------------------*

  • ***********************************************************************

  • ALV REUSE FUNCTION *

  • ***********************************************************************

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = G_REPID

IS_LAYOUT = GS_LAYOUT

IT_SORT = GT_SORT[]

I_CALLBACK_USER_COMMAND = G_USER_COMMAND

IT_FIELDCAT = GT_FIELDCAT[]

IT_EVENTS = GT_EVENTS[] "SHIVAM

IT_SPECIAL_GROUPS = GT_SP_GROUP[]

I_SAVE = 'X'

TABLES

T_OUTTAB = ITAB_VEND3.

ENDIF.

ELSE.

IF P_D EQ 'X'.

IF ITAB_VEND4[] IS NOT INITIAL.

SELECT DISTINCT LIFNR FROM LFA1 INTO TABLE ITABVEND WHERE LIFNR IN S_LIFNR GROUP BY LIFNR.

LOOP AT ITABVEND.

LOOP AT ITAB_VEND4 WHERE LIFNR EQ ITABVEND-LIFNR.

WMINUS = WMINUS + ITAB_VEND4-MINUS.

WONE = WONE + ITAB_VEND4-ONE.

WTWO = WTWO + ITAB_VEND4-TWO.

WTHREE = WTHREE + ITAB_VEND4-THREE.

WFOUR = WFOUR + ITAB_VEND4-FOUR.

WFIVE = WFIVE + ITAB_VEND4-FIVE.

WSIX = WSIX + ITAB_VEND4-SIX.

WAADV = WAADV + ITAB_VEND4-AADV.

WATOT = WATOT + ITAB_VEND4-ATOT.

ENDLOOP.

MOVE: ITABVEND-LIFNR TO ITAB_FINAL-LIFNR,

ITAB_VEND4-NAME1 TO ITAB_FINAL-NAME1,

WMINUS TO ITAB_FINAL-MINUS,

WONE TO ITAB_FINAL-ONE,

WTWO TO ITAB_FINAL-TWO,

WTHREE TO ITAB_FINAL-THREE,

WFOUR TO ITAB_FINAL-FOUR,

WFIVE TO ITAB_FINAL-FIVE,

WSIX TO ITAB_FINAL-SIX,

WAADV TO ITAB_FINAL-AADV,

WATOT TO ITAB_FINAL-ATOT.

APPEND ITAB_FINAL.

CLEAR ITAB_FINAL.

CLEAR WMINUS.

CLEAR WONE .

CLEAR WTWO .

CLEAR WTHREE.

CLEAR WFOUR .

CLEAR WFIVE .

CLEAR WSIX .

CLEAR WAADV .

CLEAR WATOT .

ENDLOOP.

ENDIF.

ENDIF.

IF P_C EQ 'X'.

IF ITAB_VEND3[] IS NOT INITIAL.

SELECT DISTINCT LIFNR FROM LFA1 INTO TABLE ITABVEND WHERE LIFNR IN S_LIFNR GROUP BY LIFNR.

LOOP AT ITABVEND.

LOOP AT ITAB_VEND3 WHERE LIFNR EQ ITABVEND-LIFNR.

WMINUS = WMINUS + ITAB_VEND3-MINUS.

WONE = WONE + ITAB_VEND3-ONE.

WTWO = WTWO + ITAB_VEND3-TWO.

WTHREE = WTHREE + ITAB_VEND3-THREE.

WFOUR = WFOUR + ITAB_VEND3-FOUR.

WFIVE = WFIVE + ITAB_VEND3-FIVE.

WSIX = WSIX + ITAB_VEND3-SIX.

WAADV = WAADV + ITAB_VEND3-AADV.

WATOT = WATOT + ITAB_VEND3-ATOT.

ENDLOOP.

MOVE: ITABVEND-LIFNR TO ITAB_FINAL-LIFNR,

ITAB_VEND3-NAME1 TO ITAB_FINAL-NAME1,

WMINUS TO ITAB_FINAL-MINUS,

WONE TO ITAB_FINAL-ONE,

WTWO TO ITAB_FINAL-TWO,

WTHREE TO ITAB_FINAL-THREE,

WFOUR TO ITAB_FINAL-FOUR,

WFIVE TO ITAB_FINAL-FIVE,

WSIX TO ITAB_FINAL-SIX,

WAADV TO ITAB_FINAL-AADV,

WATOT TO ITAB_FINAL-ATOT.

APPEND ITAB_FINAL.

CLEAR ITAB_FINAL.

CLEAR WMINUS.

CLEAR WONE .

CLEAR WTWO .

CLEAR WTHREE.

CLEAR WFOUR .

CLEAR WFIVE .

CLEAR WSIX .

CLEAR WAADV .

CLEAR WATOT .

ENDLOOP.

ENDIF.

ENDIF.

IF P_B EQ 'X'.

IF ITAB_VEND2[] IS NOT INITIAL.

SELECT DISTINCT LIFNR FROM LFA1 INTO TABLE ITABVEND WHERE LIFNR IN S_LIFNR GROUP BY LIFNR.

LOOP AT ITABVEND.

LOOP AT ITAB_VEND2 WHERE LIFNR EQ ITABVEND-LIFNR.

WMINUS = WMINUS + ITAB_VEND2-MINUS.

WONE = WONE + ITAB_VEND2-ONE.

WTWO = WTWO + ITAB_VEND2-TWO.

WTHREE = WTHREE + ITAB_VEND2-THREE.

WFOUR = WFOUR + ITAB_VEND2-FOUR.

WFIVE = WFIVE + ITAB_VEND2-FIVE.

WSIX = WSIX + ITAB_VEND2-SIX.

WAADV = WAADV + ITAB_VEND2-AADV.

WATOT = WATOT + ITAB_VEND2-ATOT.

ENDLOOP.

MOVE: ITABVEND-LIFNR TO ITAB_FINAL-LIFNR,

ITAB_VEND2-NAME1 TO ITAB_FINAL-NAME1,

WMINUS TO ITAB_FINAL-MINUS,

WONE TO ITAB_FINAL-ONE,

WTWO TO ITAB_FINAL-TWO,

WTHREE TO ITAB_FINAL-THREE,

WFOUR TO ITAB_FINAL-FOUR,

WFIVE TO ITAB_FINAL-FIVE,

WSIX TO ITAB_FINAL-SIX,

WAADV TO ITAB_FINAL-AADV,

WATOT TO ITAB_FINAL-ATOT.

APPEND ITAB_FINAL.

CLEAR ITAB_FINAL.

CLEAR WMINUS.

CLEAR WONE .

CLEAR WTWO .

CLEAR WTHREE.

CLEAR WFOUR .

CLEAR WFIVE .

CLEAR WSIX .

CLEAR WAADV .

CLEAR WATOT .

ENDLOOP.

ENDIF.

ENDIF.

LOOP AT ITAB_FINAL WHERE AADV EQ 0 AND MINUS EQ 0 AND ATOT = 0.

DELETE ITAB_FINAL.

CLEAR ITAB_FINAL.

ENDLOOP.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = G_REPID

IS_LAYOUT = GS_LAYOUT

IT_SORT = GT_SORT[]

I_CALLBACK_USER_COMMAND = G_USER_COMMAND

IT_FIELDCAT = GT_FIELDCAT[]

IT_EVENTS = GT_EVENTS[] "SHIVAM

  • IT_SPECIAL_GROUPS = GT_SP_GROUP[]

  • I_SAVE = 'X'

TABLES

T_OUTTAB = ITAB_FINAL.

ENDIF.

  • ***********************************************************************

  • &---------------------------------------------------------------------*

  • & FORM FIELDCAT_INIT

  • &---------------------------------------------------------------------*

  • TEXT

  • ----------------------------------------------------------------------*

  • -->P_GT_FIELDCAT[] TEXT

  • ----------------------------------------------------------------------*

FORM FIELDCAT_INIT USING RT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.

DATA: LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV.

IF P_DET EQ 'X'.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-ROW_POS = '1'.

LS_FIELDCAT-COL_POS = '1'.

LS_FIELDCAT-FIELDNAME = 'LIFNR'.

LS_FIELDCAT-KEY = ''.

LS_FIELDCAT-OUTPUTLEN = '10'.

LS_FIELDCAT-REF_TABNAME = 'LFA1'.

APPEND LS_FIELDCAT TO RT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-ROW_POS = '1'.

LS_FIELDCAT-COL_POS = '2'.

LS_FIELDCAT-FIELDNAME = 'NAME1'.

LS_FIELDCAT-KEY = ''.

LS_FIELDCAT-OUTPUTLEN = '35'.

LS_FIELDCAT-SELTEXT_L = 'VEND.NAME' .

APPEND LS_FIELDCAT TO RT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-ROW_POS = '1'.

LS_FIELDCAT-COL_POS = '3'.

LS_FIELDCAT-FIELDNAME = 'GSBER'.

LS_FIELDCAT-KEY = ''.

LS_FIELDCAT-OUTPUTLEN = '10'.

LS_FIELDCAT-SELTEXT_L = 'Business Area'.

APPEND LS_FIELDCAT TO RT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-ROW_POS = '1'.

LS_FIELDCAT-COL_POS = '4'.

LS_FIELDCAT-FIELDNAME = 'BELNR'.

LS_FIELDCAT-KEY = ''.

LS_FIELDCAT-OUTPUTLEN = '10'.

LS_FIELDCAT-SELTEXT_L = 'DOC.NO'.

APPEND LS_FIELDCAT TO RT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-ROW_POS = '1'.

LS_FIELDCAT-COL_POS = '5'.

LS_FIELDCAT-FIELDNAME = 'EBELN'.

LS_FIELDCAT-KEY = ''.

LS_FIELDCAT-OUTPUTLEN = '10'.

LS_FIELDCAT-SELTEXT_L = 'PO.NO'.

APPEND LS_FIELDCAT TO RT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-ROW_POS = '1'.

LS_FIELDCAT-COL_POS = '6'.

LS_FIELDCAT-FIELDNAME = 'XBLNR'.

LS_FIELDCAT-KEY = ''.

LS_FIELDCAT-OUTPUTLEN = '5'.

LS_FIELDCAT-SELTEXT_L = 'Ref.Doc.No' .

APPEND LS_FIELDCAT TO RT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-ROW_POS = '1'.

LS_FIELDCAT-COL_POS = '7'.

LS_FIELDCAT-FIELDNAME = 'UMSKZ'.

LS_FIELDCAT-KEY = ''.

LS_FIELDCAT-OUTPUTLEN = '1'.

LS_FIELDCAT-SELTEXT_L = 'SPL.GL.IND'.

APPEND LS_FIELDCAT TO RT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-ROW_POS = '1'.

LS_FIELDCAT-COL_POS = '8'.

LS_FIELDCAT-FIELDNAME = 'BLART'.

LS_FIELDCAT-KEY = ''.

LS_FIELDCAT-OUTPUTLEN = '3'.

LS_FIELDCAT-SELTEXT_L = 'D.TYPE'.

APPEND LS_FIELDCAT TO RT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-ROW_POS = '1'.

LS_FIELDCAT-COL_POS = '9'.

LS_FIELDCAT-FIELDNAME = 'BLDAT'.

LS_FIELDCAT-KEY = ''.

LS_FIELDCAT-OUTPUTLEN = '12'.

LS_FIELDCAT-SELTEXT_L = 'D.DATE'.

APPEND LS_FIELDCAT TO RT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-ROW_POS = '1'.

LS_FIELDCAT-COL_POS = '10'.

LS_FIELDCAT-FIELDNAME = 'BUDAT'.

LS_FIELDCAT-KEY = ''.

LS_FIELDCAT-OUTPUTLEN = '12'.

LS_FIELDCAT-SELTEXT_L = 'POST.DATE'.

APPEND LS_FIELDCAT TO RT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-ROW_POS = '1'.

LS_FIELDCAT-COL_POS = '11'.

LS_FIELDCAT-FIELDNAME = 'ZFBDT'.

LS_FIELDCAT-KEY = ''.

LS_FIELDCAT-OUTPUTLEN = '12'.

LS_FIELDCAT-SELTEXT_L = 'BASE.DATE'.

APPEND LS_FIELDCAT TO RT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-ROW_POS = '1'.

LS_FIELDCAT-COL_POS = '12'.

LS_FIELDCAT-FIELDNAME = 'DUEDT'.

LS_FIELDCAT-DO_SUM = 'X'.

LS_FIELDCAT-KEY = ''.

LS_FIELDCAT-OUTPUTLEN = '15'.

LS_FIELDCAT-SELTEXT_L = 'Duedate' .

APPEND LS_FIELDCAT TO RT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-ROW_POS = '1'.

LS_FIELDCAT-COL_POS = '13'.

LS_FIELDCAT-FIELDNAME = 'DUDAY'.

LS_FIELDCAT-KEY = ''.

LS_FIELDCAT-OUTPUTLEN = '15'.

LS_FIELDCAT-SELTEXT_L = 'DUE DAYS' .

APPEND LS_FIELDCAT TO RT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-ROW_POS = '1'.

LS_FIELDCAT-COL_POS = '14'.

LS_FIELDCAT-FIELDNAME = 'MINUS'.

LS_FIELDCAT-KEY = ''.

LS_FIELDCAT-DO_SUM = 'X'.

LS_FIELDCAT-OUTPUTLEN = '15'.

LS_FIELDCAT-SELTEXT_L = 'Not yet dueamt.' .

APPEND LS_FIELDCAT TO RT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-ROW_POS = '1'.

LS_FIELDCAT-COL_POS = '15'.

LS_FIELDCAT-FIELDNAME = 'ONE'.

LS_FIELDCAT-DO_SUM = 'X'.

LS_FIELDCAT-KEY = ''.

LS_FIELDCAT-OUTPUTLEN = '15'.

LS_FIELDCAT-SELTEXT_L = '0-30' .

APPEND LS_FIELDCAT TO RT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-ROW_POS = '1'.

LS_FIELDCAT-COL_POS = '16'.

LS_FIELDCAT-FIELDNAME = 'TWO'.

LS_FIELDCAT-DO_SUM = 'X'.

LS_FIELDCAT-KEY = ''.

LS_FIELDCAT-OUTPUTLEN = '15'.

LS_FIELDCAT-SELTEXT_L = '31-60' .

APPEND LS_FIELDCAT TO RT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-ROW_POS = '1'.

LS_FIELDCAT-COL_POS = '17'.

LS_FIELDCAT-FIELDNAME = 'THREE'.

LS_FIELDCAT-DO_SUM = 'X'.

LS_FIELDCAT-OUTPUTLEN = '15'.

LS_FIELDCAT-SELTEXT_L = '61-90' .

APPEND LS_FIELDCAT TO RT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-ROW_POS = '1'.

LS_FIELDCAT-COL_POS = '18'.

LS_FIELDCAT-FIELDNAME = 'FOUR'.

LS_FIELDCAT-DO_SUM = 'X'.

LS_FIELDCAT-KEY = ''.

LS_FIELDCAT-OUTPUTLEN = '15'.

LS_FIELDCAT-SELTEXT_L = '91-120' .

APPEND LS_FIELDCAT TO RT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-ROW_POS = '1'.

LS_FIELDCAT-COL_POS = '19'.

LS_FIELDCAT-FIELDNAME = 'FIVE'.

LS_FIELDCAT-KEY = ''.

LS_FIELDCAT-DO_SUM = 'X'.

LS_FIELDCAT-OUTPUTLEN = '15'.

LS_FIELDCAT-SELTEXT_L = '121-180' .

APPEND LS_FIELDCAT TO RT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-ROW_POS = '1'.

LS_FIELDCAT-COL_POS = '20'.

LS_FIELDCAT-FIELDNAME = 'SIX'.

LS_FIELDCAT-KEY = ''.

LS_FIELDCAT-DO_SUM = 'X'.

LS_FIELDCAT-OUTPUTLEN = '15'.

LS_FIELDCAT-SELTEXT_L = '>180' .

APPEND LS_FIELDCAT TO RT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-ROW_POS = '1'.

LS_FIELDCAT-COL_POS = '21'.

LS_FIELDCAT-FIELDNAME = 'AADV'.

LS_FIELDCAT-DO_SUM = 'X'.

LS_FIELDCAT-KEY = ''.

LS_FIELDCAT-OUTPUTLEN = '15'.

LS_FIELDCAT-SELTEXT_L = 'UnAdj.Advance' .

APPEND LS_FIELDCAT TO RT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-ROW_POS = '1'.

LS_FIELDCAT-COL_POS = '22'.

LS_FIELDCAT-FIELDNAME = 'ATOT'.

LS_FIELDCAT-DO_SUM = 'X'.

LS_FIELDCAT-KEY = ''.

LS_FIELDCAT-OUTPUTLEN = '15'.

LS_FIELDCAT-SELTEXT_L = 'TOTAL' .

APPEND LS_FIELDCAT TO RT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-ROW_POS = '1'.

LS_FIELDCAT-COL_POS = '23'.

LS_FIELDCAT-FIELDNAME = 'CRED'.

LS_FIELDCAT-KEY = ''.

LS_FIELDCAT-DO_SUM = 'X'.

LS_FIELDCAT-OUTPUTLEN = '5'.

LS_FIELDCAT-SELTEXT_L = 'CREDIT' .

APPEND LS_FIELDCAT TO RT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-ROW_POS = '1'.

LS_FIELDCAT-COL_POS = '24'.

LS_FIELDCAT-FIELDNAME = 'ZTERM'.

LS_FIELDCAT-KEY = ''.

LS_FIELDCAT-OUTPUTLEN = '5'.

LS_FIELDCAT-SELTEXT_L = 'TERMS' .

APPEND LS_FIELDCAT TO RT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-ROW_POS = '1'.

LS_FIELDCAT-COL_POS = '25'.

LS_FIELDCAT-FIELDNAME = 'TEXT1'.

LS_FIELDCAT-KEY = ''.

LS_FIELDCAT-OUTPUTLEN = '24'.

LS_FIELDCAT-SELTEXT_L = 'PAYMENT TERMS' .

APPEND LS_FIELDCAT TO RT_FIELDCAT.

ELSE.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-ROW_POS = '1'.

LS_FIELDCAT-COL_POS = '1'.

LS_FIELDCAT-FIELDNAME = 'LIFNR'.

LS_FIELDCAT-KEY = ''.

LS_FIELDCAT-HOTSPOT = 'X'.

LS_FIELDCAT-OUTPUTLEN = '10'.

LS_FIELDCAT-REF_TABNAME = 'LFA1'.

APPEND LS_FIELDCAT TO RT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-ROW_POS = '1'.

LS_FIELDCAT-COL_POS = '2'.

LS_FIELDCAT-FIELDNAME = 'NAME1'.

LS_FIELDCAT-KEY = ''.

LS_FIELDCAT-HOTSPOT = 'X'.

LS_FIELDCAT-OUTPUTLEN = '40'.

LS_FIELDCAT-SELTEXT_L = 'VEND.NAME' .

APPEND LS_FIELDCAT TO RT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-ROW_POS = '1'.

LS_FIELDCAT-COL_POS = '3'.

LS_FIELDCAT-FIELDNAME = 'MINUS'.

LS_FIELDCAT-KEY = ''.

LS_FIELDCAT-DO_SUM = 'X'.

LS_FIELDCAT-OUTPUTLEN = '15'.

LS_FIELDCAT-SELTEXT_L = 'Not yet dueamt.' .

APPEND LS_FIELDCAT TO RT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-ROW_POS = '1'.

LS_FIELDCAT-COL_POS = '4'.

LS_FIELDCAT-FIELDNAME = 'ONE'.

LS_FIELDCAT-DO_SUM = 'X'.

LS_FIELDCAT-KEY = ''.

LS_FIELDCAT-OUTPUTLEN = '15'.

LS_FIELDCAT-SELTEXT_L = '0-30' .

APPEND LS_FIELDCAT TO RT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-ROW_POS = '1'.

LS_FIELDCAT-COL_POS = '5'.

LS_FIELDCAT-FIELDNAME = 'TWO'.

LS_FIELDCAT-DO_SUM = 'X'.

LS_FIELDCAT-KEY = ''.

LS_FIELDCAT-OUTPUTLEN = '15'.

LS_FIELDCAT-SELTEXT_L = '31-60' .

APPEND LS_FIELDCAT TO RT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-ROW_POS = '1'.

LS_FIELDCAT-COL_POS = '6'.

LS_FIELDCAT-FIELDNAME = 'THREE'.

LS_FIELDCAT-DO_SUM = 'X'.

LS_FIELDCAT-OUTPUTLEN = '15'.

LS_FIELDCAT-SELTEXT_L = '61-90' .

APPEND LS_FIELDCAT TO RT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-ROW_POS = '1'.

LS_FIELDCAT-COL_POS = '7'.

LS_FIELDCAT-FIELDNAME = 'FOUR'.

LS_FIELDCAT-DO_SUM = 'X'.

LS_FIELDCAT-KEY = ''.

LS_FIELDCAT-OUTPUTLEN = '15'.

LS_FIELDCAT-SELTEXT_L = '91-120' .

APPEND LS_FIELDCAT TO RT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-ROW_POS = '1'.

LS_FIELDCAT-COL_POS = '8'.

LS_FIELDCAT-FIELDNAME = 'FIVE'.

LS_FIELDCAT-KEY = ''.

LS_FIELDCAT-DO_SUM = 'X'.

LS_FIELDCAT-OUTPUTLEN = '15'.

LS_FIELDCAT-SELTEXT_L = '121-180' .

APPEND LS_FIELDCAT TO RT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-ROW_POS = '1'.

LS_FIELDCAT-COL_POS = '9'.

LS_FIELDCAT-FIELDNAME = 'SIX'.

LS_FIELDCAT-KEY = ''.

LS_FIELDCAT-DO_SUM = 'X'.

LS_FIELDCAT-OUTPUTLEN = '15'.

LS_FIELDCAT-SELTEXT_L = '>180' .

APPEND LS_FIELDCAT TO RT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-ROW_POS = '1'.

LS_FIELDCAT-COL_POS = '10'.

LS_FIELDCAT-FIELDNAME = 'AADV'.

LS_FIELDCAT-DO_SUM = 'X'.

LS_FIELDCAT-KEY = ''.

LS_FIELDCAT-OUTPUTLEN = '15'.

LS_FIELDCAT-SELTEXT_L = 'UnAdj.Advance' .

APPEND LS_FIELDCAT TO RT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-ROW_POS = '1'.

LS_FIELDCAT-COL_POS = '11'.

LS_FIELDCAT-FIELDNAME = 'ATOT'.

LS_FIELDCAT-DO_SUM = 'X'.

LS_FIELDCAT-KEY = ''.

LS_FIELDCAT-OUTPUTLEN = '15'.

LS_FIELDCAT-SELTEXT_L = 'TOTAL' .

APPEND LS_FIELDCAT TO RT_FIELDCAT.

ENDIF.

ENDFORM.

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

**&----


*

**& FORM USER COMMAND

**&----


  • TEXT

**----


*

    • -->P_GT_SORT[] TEXT

**----


FORM USER_COMMAND4 USING UCOMM LIKE SY-UCOMM SELFIELD TYPE SLIS_SELFIELD

.

DATA : LS_SELFIELD TYPE SLIS_SELFIELD ,

LT_FC TYPE SLIS_T_FIELDCAT_ALV,

LS_FC TYPE SLIS_FIELDCAT_ALV .

DATA : IVALUE(1).

REFRESH TEMP3.

*****************TO GET THE BREAK UP DETAILS**************************

CLEAR IFIELDNAME.

CLEAR IVALUE.

IFIELDNAME = SELFIELD-FIELDNAME.

CASE IFIELDNAME.

WHEN 'ONE'.

IVALUE = 1.

WHEN 'TWO'.

IVALUE = 2.

WHEN 'THREE'.

IVALUE = 3.

WHEN 'FOUR'.

IVALUE = 4.

WHEN 'FIVE'.

IVALUE = 5.

WHEN 'SIX'.

IVALUE = 6.

WHEN 'MINUS'.

IVALUE = 8.

ENDCASE.

SELFIELD-SEL_TAB_FIELD = 'ITAB_VEND2-LIFNR'.

CASE SELFIELD-SEL_TAB_FIELD.

WHEN 'ITAB_VEND2-LIFNR'.

READ TABLE ITAB_VEND2 INDEX SELFIELD-TABINDEX.

*FOR THE FIRST COLUMN

IF IVALUE = 1.

LOOP AT ITAB_VEND1 WHERE LIFNR = ITAB_VEND2-LIFNR AND BELNR EQ

ITAB_VEND2-BELNR AND ONE NE 0.

MOVE-CORRESPONDING ITAB_VEND1 TO TEMP3.

APPEND TEMP3.

CLEAR TEMP3.

ENDLOOP.

ENDIF.

*FOR THE SECOND COLUMN

IF IVALUE = 2.

LOOP AT ITAB_VEND1 WHERE LIFNR = ITAB_VEND2-LIFNR AND BELNR EQ

ITAB_VEND2-BELNR AND TWO NE 0.

MOVE-CORRESPONDING ITAB_VEND1 TO TEMP3.

APPEND TEMP3.

CLEAR TEMP3.

ENDLOOP.

ENDIF.

*FOR THE THIRD COLUMN

IF IVALUE = 3.

LOOP AT ITAB_VEND1 WHERE LIFNR = ITAB_VEND2-LIFNR AND BELNR EQ

ITAB_VEND2-BELNR AND THREE NE 0.

MOVE-CORRESPONDING ITAB_VEND1 TO TEMP3.

APPEND TEMP3.

CLEAR TEMP3.

ENDLOOP.

ENDIF.

*FOR THE FOUR COLUMN

IF IVALUE = 4.

LOOP AT ITAB_VEND1 WHERE LIFNR = ITAB_VEND2-LIFNR AND BELNR EQ

ITAB_VEND2-BELNR AND FOUR NE 0.

MOVE-CORRESPONDING ITAB_VEND1 TO TEMP3.

APPEND TEMP3.

CLEAR TEMP3.

ENDLOOP.

ENDIF.

*FOR THE FIVE COLUMN

IF IVALUE = 5.

LOOP AT ITAB_VEND1 WHERE LIFNR = ITAB_VEND2-LIFNR AND BELNR EQ

ITAB_VEND2-BELNR AND FIVE NE 0.

MOVE-CORRESPONDING ITAB_VEND1 TO TEMP3.

APPEND TEMP3.

CLEAR TEMP3.

ENDLOOP.

ENDIF.

*FOR THE SIX COLUMN

IF IVALUE = 6.

LOOP AT ITAB_VEND1 WHERE LIFNR = ITAB_VEND2-LIFNR AND BELNR EQ

ITAB_VEND2-BELNR AND SIX NE 0.

MOVE-CORRESPONDING ITAB_VEND1 TO TEMP3.

APPEND TEMP3.

CLEAR TEMP3.

ENDLOOP.

ENDIF.

*FOR THE MINUS COLUMN

IF IVALUE = 8.

LOOP AT ITAB_VEND1 WHERE LIFNR = ITAB_VEND2-LIFNR AND BELNR EQ

ITAB_VEND2-BELNR AND MINUS NE 0.

MOVE-CORRESPONDING ITAB_VEND1 TO TEMP3.

APPEND TEMP3.

CLEAR TEMP3.

ENDLOOP.

ENDIF.

ENDCASE.

LOOP AT TEMP3.

SELECT SINGLE WAERS GJAHR UMSKZ BLART ZTERM INTO (TEMP3-WAERS,

TEMP3-GJAHR,TEMP3-UMSKZ,TEMP3-BLART,TEMP3-ZTERM) FROM BSIK

WHERE BELNR EQ TEMP3-BELNR.

MODIFY TEMP3.

ENDLOOP.

LOOP AT TEMP3.

SELECT SINGLE WAERS GJAHR UMSKZ BLART ZTERM INTO (TEMP3-WAERS,

TEMP3-GJAHR,TEMP3-UMSKZ,TEMP3-BLART,TEMP3-ZTERM) FROM BSIK

WHERE BELNR EQ TEMP3-BELNR.

IF SY-SUBRC = 0.

MODIFY TEMP.

ENDIF.

ENDLOOP.

*************DEFINITION OF THE THE ALV STRUCTURE**************

*

DEFINE FC_ADD.

LS_FC-FIELDNAME = &1.

LS_FC-REPTEXT_DDIC = &2.

LS_FC-JUST = &3.

LS_FC-DO_SUM = 'X'.

LS_FC-HOTSPOT = 'LIFNR'.

APPEND LS_FC TO LT_FC.

END-OF-DEFINITION.

*

  • **************************************************************

FC_ADD 'LIFNR' 'VEND.NO' 'L'.

FC_ADD 'NAME1' 'VEND.NAME' 'L'.

FC_ADD 'BELNR' 'DOC.NO' 'L'.

FC_ADD 'BLART' 'DOC.TYP' 'L'.

FC_ADD 'UMSKZ' 'SP.IND' 'L'.

FC_ADD 'BLDAT' 'DOC.DAT' 'L'.

FC_ADD 'BUDAT' 'POSTING DAT' 'L'.

FC_ADD 'ZTERM' 'TERMS' 'L'.

IF IVALUE EQ 8.

FC_ADD 'MINUS' '< 0' 'C'.

ENDIF.

IF IVALUE EQ 1.

FC_ADD 'ONE' '0-30' 'C'.

ENDIF.

IF IVALUE EQ 2.

FC_ADD 'TWO' '31-60' 'C'.

ENDIF.

IF IVALUE EQ 3.

FC_ADD 'THREE' '61-90' 'C' .

ENDIF.

IF IVALUE EQ 4.

FC_ADD 'FOUR' '91-120' 'C'.

ENDIF.

IF IVALUE EQ 5.

FC_ADD 'FIVE' '121-180' 'C'.

ENDIF.

IF IVALUE EQ 6.

FC_ADD 'SIX' '>180' 'C'.

ENDIF.

IF P_LC IS INITIAL .

FC_ADD 'WAERS' 'D.CURR' 'L'.

ENDIF.

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

CLEAR LS_FC.

LOOP AT LT_FC INTO LS_FC .

IF LS_FC-FIELDNAME = 'LIFNR'.

LS_FC-OUTPUTLEN = 10.

LS_FC-KEY = 'X'.

LS_FC-HOTSPOT = 'X'.

MODIFY LT_FC FROM LS_FC TRANSPORTING OUTPUTLEN.

ENDIF.

IF LS_FC-FIELDNAME = 'NAME1'.

LS_FC-OUTPUTLEN = 10.

LS_FC-KEY = 'X'.

LS_FC-HOTSPOT = 'X'.

MODIFY LT_FC FROM LS_FC TRANSPORTING OUTPUTLEN.

ENDIF.

IF LS_FC-FIELDNAME = 'BELNR'.

LS_FC-OUTPUTLEN = 10.

LS_FC-KEY = 'X'.

LS_FC-HOTSPOT = 'X'.

MODIFY LT_FC FROM LS_FC TRANSPORTING OUTPUTLEN.

ENDIF.

IF LS_FC-FIELDNAME = 'BLART'.

LS_FC-OUTPUTLEN = 3.

LS_FC-KEY = 'X'.

LS_FC-HOTSPOT = 'X'.

MODIFY LT_FC FROM LS_FC TRANSPORTING OUTPUTLEN.

ENDIF.

*

IF LS_FC-FIELDNAME = 'BLDAT'.

LS_FC-OUTPUTLEN = 12.

MODIFY LT_FC FROM LS_FC TRANSPORTING OUTPUTLEN.

ENDIF.

*

IF LS_FC-FIELDNAME = 'BUDAT'.

LS_FC-OUTPUTLEN = 12.

MODIFY LT_FC FROM LS_FC TRANSPORTING OUTPUTLEN.

ENDIF.

*

IF LS_FC-FIELDNAME = 'MINUS'.

LS_FC-OUTPUTLEN = 15.

MODIFY LT_FC FROM LS_FC TRANSPORTING OUTPUTLEN.

ENDIF.

IF LS_FC-FIELDNAME = 'ONE'.

LS_FC-OUTPUTLEN = 15.

MODIFY LT_FC FROM LS_FC TRANSPORTING OUTPUTLEN.

ENDIF.

IF LS_FC-FIELDNAME = 'TWO'.

LS_FC-OUTPUTLEN = 15.

MODIFY LT_FC FROM LS_FC TRANSPORTING OUTPUTLEN.

ENDIF.

*

IF LS_FC-FIELDNAME = 'THREE'.

LS_FC-OUTPUTLEN = 15.

MODIFY LT_FC FROM LS_FC TRANSPORTING OUTPUTLEN.

ENDIF.

*

IF LS_FC-FIELDNAME = 'FOUR'.

LS_FC-OUTPUTLEN = 15.

MODIFY LT_FC FROM LS_FC TRANSPORTING OUTPUTLEN.

ENDIF.

*

IF LS_FC-FIELDNAME = 'FIVE'.

LS_FC-OUTPUTLEN = 15.

MODIFY LT_FC FROM LS_FC TRANSPORTING OUTPUTLEN.

ENDIF.

*

IF LS_FC-FIELDNAME = 'SIX'.

LS_FC-OUTPUTLEN = 15.

MODIFY LT_FC FROM LS_FC TRANSPORTING OUTPUTLEN.

ENDIF.

*

IF LS_FC-FIELDNAME = 'WAERS'.

LS_FC-OUTPUTLEN = 3.

MODIFY LT_FC FROM LS_FC TRANSPORTING OUTPUTLEN.

ENDIF.

*

IF LS_FC-FIELDNAME = 'LWAERS'.

LS_FC-OUTPUTLEN = 3.

MODIFY LT_FC FROM LS_FC TRANSPORTING OUTPUTLEN.

ENDIF.

*

IF LS_FC-FIELDNAME = 'ZTERMS'.

LS_FC-OUTPUTLEN = 5.

MODIFY LT_FC FROM LS_FC TRANSPORTING OUTPUTLEN.

ENDIF.

ENDLOOP.

*

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

    • ALV REUSE FUNCTION 2

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

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = G_REPID

I_CALLBACK_USER_COMMAND = 'USER_COMMAND2'

IT_FIELDCAT = LT_FC

IS_LAYOUT = GS_LAYOUT

I_SAVE = 'X'

TABLES

T_OUTTAB = TEMP3.

ENDFORM.

*SHIVAM

form alv_event_init.

clear alv_event.

alv_event-name = slis_ev_top_of_page.

alv_event-form = 'ALV_TOP_OF_PAGE'.

append alv_event to gt_events.

clear alv_event.

alv_event-name = slis_ev_top_of_list.

alv_event-form = 'ALV_TOP_OF_LIST'.

append alv_event to gt_events.

clear alv_event.

alv_event-name = slis_ev_end_of_list.

alv_event-form = 'ALV_END_OF_LIST'.

append alv_event to gt_events.

clear alv_event.

alv_event-name = slis_ev_end_of_page.

alv_event-form = 'ALV_END_OF_PAGE'.

clear alv_event.

endform. " ALV_EVENT_INIT

  • special comment'

*END

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

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

**&----


*

**& FORM USER COMMAND

**&----


  • TEXT

**----


*

    • -->P_GT_SORT[] TEXT

**----


FORM USER_COMMAND USING UCOMM LIKE SY-UCOMM SELFIELD TYPE SLIS_SELFIELD.

DATA TBELNR LIKE BSIK-BELNR.

DATA TGJAHR LIKE BSIK-GJAHR.

DATA TBUKRS LIKE BSIK-BUKRS.

DATA TLIFNR LIKE BSIK-LIFNR.

DATA TNAME1 LIKE LFA1-NAME1.

                          • TO CALL TRANSCATION FB03 *************************

CASE SELFIELD-FIELDNAME.

WHEN 'BELNR'.

READ TABLE ITAB_VEND1 INDEX SELFIELD-TABINDEX.

MOVE : ITAB_VEND1-BELNR TO TBELNR.

MOVE : ITAB_VEND1-GJAHR TO TGJAHR.

MOVE : ITAB_VEND1-BUKRS TO TBUKRS.

SET PARAMETER ID 'BLN' FIELD SELFIELD-VALUE.

SET PARAMETER ID 'GJR' FIELD TGJAHR.

SET PARAMETER ID 'BUK' FIELD TBUKRS.

CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.

WHEN 'LIFNR'.

REFRESH GT_FIELDCAT.

read table itab_FINAL index selfield-tabindex.

MOVE : ITAB_FINAL-lifnr TO Tlifnr.

loop at itab_detail.

delete itab_detail.

clear itab_detail.

endloop.

IF P_B EQ 'X'.

loop at itab_vend2 where lifnr eq tlifnr.

MOVE-CORRESPONDING ITAB_VEND2 TO itab_detail..

COLLECT itab_detail.

CLEAR itab_detail.

endloop.

ENDIF.

IF P_C EQ 'X'.

loop at itab_vend3 where lifnr eq tlifnr.

MOVE-CORRESPONDING ITAB_VEND3 TO itab_detail..

COLLECT itab_detail.

CLEAR itab_detail.

endloop.

ENDIF.

IF P_D EQ 'X'.

loop at itab_vend4 where lifnr eq tlifnr.

MOVE-CORRESPONDING ITAB_VEND4 TO itab_detail..

COLLECT itab_detail.

CLEAR itab_detail.

endloop.

ENDIF.

PERFORM FIELDCAT_INIT USING GT_FIELDCAT[].

CLEAR GS_LAYOUT.

GS_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.

GS_LAYOUT-TOTALS_BEFORE_ITEMS = ''.

GS_LAYOUT-KEY_HOTSPOT = 'X'.

GS_LAYOUT-NO_KEYFIX = 'X'.

GS_LAYOUT-GET_SELINFOS = 'X'.

GS_LAYOUT-GROUP_CHANGE_EDIT = 'X'.

GS_LAYOUT-DETAIL_POPUP = 'X'.

GS_LAYOUT-TOTALS_TEXT = 'Total'.

GS_LAYOUT-SUBTOTALS_TEXT = 'Sub Total'.

GS_LAYOUT-NO_SUBTOTALS = ''.

GS_LAYOUT-NUMC_SUM = 'X'.

GS_LAYOUT-DETAIL_INITIAL_LINES = 'X'.

  • GS_LAYOUT-NO_HOTSPOT = ' '.

  • GS_LAYOUT-COLWIDTH_OPTIMIZE = ''.

  • GS_LAYOUT-TOTALS_BEFORE_ITEMS = ''.

  • GS_LAYOUT-KEY_HOTSPOT = 'X'.

GS_LAYOUT-NO_VLINE = ''.

  • GS_LAYOUT-DEF_STATUS = 'X'.

  • GS_LAYOUT-NO_KEYFIX = 'X'.

GS_LAYOUT-ZEBRA = 'X'. "STRIPED PATTERN

  • GS_LAYOUT-HOTSPOT_FIELDNAME = ''.

GS_LAYOUT-WINDOW_TITLEBAR = 'CREDITORS AGING REPORT'.

GS_LAYOUT-GET_SELINFOS = 'X'.

GS_LAYOUT-DETAIL_POPUP = 'X'.

GS_LAYOUT-DETAIL_TITLEBAR = 'CREDITORS AGING REPORT'.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = G_REPID

IS_LAYOUT = GS_LAYOUT

IT_SORT = GT_SORT[]

  • I_CALLBACK_USER_COMMAND = G_USER_COMMAND

IT_FIELDCAT = GT_FIELDCAT[]

IT_EVENTS = GT_EVENTS[] "SHIVAM

IT_SPECIAL_GROUPS = GT_SP_GROUP[]

I_SAVE = 'X'

TABLES

T_OUTTAB = ITAB_detail.

ENDCASE.

ENDFORM.

********END OF REPORT************

Former Member
0 Kudos

Hi,

You need to display the summary report in a seperate alv_grid_display. you need to create seperate fieldcatalog for the summary report.

Hope this helps u.

Thanks.

Ruthra

former_member188685
Active Contributor
0 Kudos

if you want both the reports you have to use Block list. or Object Oriented ALV.

check here...

Former Member
0 Kudos

hi,

note in alv interactive did u trigger &IC1 .then only the second reprot will be called.hey if u need i will send u sample code.

refer to this link

nayanlad
Participant
0 Kudos

thanks 4 help but i had solved it