Sunteți pe pagina 1din 9

report ZPGM_CUSTOMER_AGEING.

type-pools: SLIS.
tables: BSID, BSAD, J_1IEXCDTL.
data: IT_FCAT type SLIS_T_FIELDCAT_ALV,
WA_FCAT type SLIS_FIELDCAT_ALV,
WA_LAYOUT type SLIS_LAYOUT_ALV,
IT_EVENTS type SLIS_T_EVENT ,
IT_LIST type SLIS_T_LISTHEADER,
WA_LIST type SLIS_LISTHEADER,
IT_SORT type SLIS_T_SORTINFO_ALV,
WA_SORT type SLIS_SORTINFO_ALV.
data: LEN(10) type C,
RECORDS type STRING.
data: begin of ITAB occurs 0,
KUNNR like BSID-KUNNR,
BUDAT like BSID-BUDAT,
VBELN like BSID-VBELN,
BLDAT like BSID-BLDAT,
BELNR like BSID-BELNR,
DMBTR like BSID-DMBTR,
WRBTR like BSID-WRBTR,
SHKZG like BSID-SHKZG,
AUGBL like BSID-AUGBL,
AUGDT like BSID-AUGDT,
NAME1 like KNA1-NAME1,
ORT01 like KNA1-ORT01,
BZIRK like KNVV-BZIRK,
EXNUM like J_1IEXCDTL-EXNUM,
DAY1 like VTBBEWE-ATAGE,
DD type I,
A_1 like BSID-WRBTR,
A_2 like BSID-WRBTR,
A_3 like BSID-WRBTR,
A_4 like BSID-WRBTR,
A_5 like BSID-WRBTR,
A_6 like BSID-WRBTR,
A_7 like BSID-WRBTR,
TOTAL like BSID-WRBTR,
end of ITAB.
data: JTAB like ITAB occurs 0 with header line.
data: FOR_1ST_AGE(17) type C,
FOR_2ND_AGE(17) type C,
FOR_3RD_AGE(17) type C,
FOR_4TH_AGE(17) type C,
FOR_5TH_AGE(17) type C,
FOR_6TH_AGE(18) type C,
FOR_7TH_AGE(18) type C.
data: V_KUNNR like BSID-KUNNR.
selection-screen : begin of block B1 with frame title TEXT-000.
select-options: CUST for BSID-KUNNR.
selection-screen skip.
selection-screen: begin of line.
selection-screen: comment 2(30) TEXT-001.
parameters: AGEDAYS1(3) type N default 7 .
parameters: AGEDAYS2(3) type N default 15.
parameters: AGEDAYS3(3) type N default 30.
parameters: AGEDAYS4(3) type N default 45.
parameters: AGEDAYS5(3) type N default 60.
parameters: AGEDAYS6(3) type N default 90.
selection-screen: end of line.
selection-screen skip.
select-options: BLDAT for BSID-BLDAT no intervals no-extension DEFAULT sy-datum.
selection-screen: end of block B1.
data: AGEDAYS1_1(3) type N,
AGEDAYS2_1(3) type N,
AGEDAYS3_1(3) type N,
AGEDAYS4_1(3) type N,
AGEDAYS5_1(3) type N,
AGEDAYS6_1(3) type N.
AGEDAYS1_1 = AGEDAYS1 + 1.
AGEDAYS2_1 = AGEDAYS2 + 1.
AGEDAYS3_1 = AGEDAYS3 + 1.
AGEDAYS4_1 = AGEDAYS4 + 1.
AGEDAYS5_1 = AGEDAYS5 + 1.
AGEDAYS6_1 = AGEDAYS6 + 1.
shift AGEDAYS1 left deleting leading '0'.
shift AGEDAYS2 left deleting leading '0'.
shift AGEDAYS3 left deleting leading '0'.
shift AGEDAYS4 left deleting leading '0'.
shift AGEDAYS5 left deleting leading '0'.
shift AGEDAYS6 left deleting leading '0'.
shift AGEDAYS1_1 left deleting leading '0'.
shift AGEDAYS2_1 left deleting leading '0'.
shift AGEDAYS3_1 left deleting leading '0'.
shift AGEDAYS4_1 left deleting leading '0'.
shift AGEDAYS5_1 left deleting leading '0'.
concatenate '0 -' AGEDAYS1 ' days' into FOR_1ST_AGE separated by SPACE.
concatenate AGEDAYS1_1 '-' AGEDAYS2 ' days' into FOR_2ND_AGE separated by SPACE.
concatenate AGEDAYS2_1 '-' AGEDAYS3 ' days' into FOR_3RD_AGE separated by SPACE.
concatenate AGEDAYS3_1 '-' AGEDAYS4 ' days' into FOR_4TH_AGE separated by SPACE.
concatenate AGEDAYS4_1 '-' AGEDAYS5 ' days' into FOR_5TH_AGE separated by SPACE.
concatenate AGEDAYS5_1 '-' AGEDAYS6 ' days' into FOR_6TH_AGE separated by SPACE.
concatenate 'Above' AGEDAYS6 ' days' into FOR_7TH_AGE separated by SPACE.
********************************************************************************
************
start-of-selection.
select KUNNR AUGDT AUGBL BELNR BUDAT BLDAT SHKZG DMBTR VBELN
into corresponding fields of table ITAB
from BSID where KUNNR in CUST
and BLDAT <= BLDAT-LOW
and UMSKZ ne 'E'
and UMSKZ ne 'F'
and BUDAT <= BLDAT-LOW.
select KUNNR AUGDT AUGBL BELNR BUDAT BLDAT SHKZG DMBTR VBELN
into corresponding fields of table JTAB
from BSAD where KUNNR in CUST
and BLDAT <= BLDAT-LOW
and UMSKZ ne 'E'
and UMSKZ ne 'F'
and AUGDT > BLDAT-LOW
and BUDAT <= BLDAT-LOW.
loop at JTAB where AUGDT > BLDAT-LOW.
append JTAB to ITAB.
endloop.
loop at ITAB.
if ITAB-SHKZG = 'H'.
ITAB-DMBTR = ITAB-DMBTR * -1.
modify ITAB.
elseif ITAB-SHKZG = 'S'.
ITAB-DMBTR = ITAB-DMBTR * 1.
modify ITAB.
endif.
select distinct KNA1~NAME1 KNA1~ORT01 KNVV~BZIRK
into (ITAB-NAME1, ITAB-ORT01, ITAB-BZIRK)
from KNB1 inner join KNA1 on KNB1~KUNNR = KNA1~KUNNR
inner join KNVV on KNVV~KUNNR = KNA1~KUNNR
where KNA1~KUNNR = ITAB-KUNNR
and KNA1~SPRAS = 'EN'.
modify ITAB.
endselect.
endloop.
loop at ITAB.
select EXNUM into ITAB-EXNUM from J_1IEXCDTL
where RDOC2 = ITAB-VBELN.
modify ITAB.
endselect.
endloop.
sort ITAB by BLDAT.
loop at ITAB.
call function 'FIMA_DAYS_AND_MONTHS_AND_YEARS'
exporting
I_DATE_FROM = ITAB-BLDAT
* I_KEY_DAY_FROM =
I_DATE_TO = BLDAT-LOW
* I_KEY_DAY_TO =
* I_FLG_SEPARATE = ' '
importing
E_DAYS = ITAB-DAY1
* E_MONTHS =
* E_YEARS =
.
move ITAB-DAY1 to ITAB-DD.
modify ITAB.
endloop.
loop at ITAB.
if ITAB-DD > AGEDAYS6.
move ITAB-DMBTR to ITAB-A_7.
modify ITAB.
endif.
if ITAB-DD <= AGEDAYS6 and ITAB-DD > AGEDAYS5.
move ITAB-DMBTR to ITAB-A_6.
modify ITAB.
endif.
if ITAB-DD <= AGEDAYS5 and ITAB-DD > AGEDAYS4.
move ITAB-DMBTR to ITAB-A_5.
modify ITAB.
endif.
if ITAB-DD <= AGEDAYS4 and ITAB-DD > AGEDAYS3.
move ITAB-DMBTR to ITAB-A_4.
modify ITAB.
endif.
if ITAB-DD <= AGEDAYS3 and ITAB-DD > AGEDAYS2.
move ITAB-DMBTR to ITAB-A_3.
modify ITAB.
endif.
if ITAB-DD <= AGEDAYS2 and ITAB-DD > AGEDAYS1.
move ITAB-DMBTR to ITAB-A_2.
modify ITAB.
endif.
if ITAB-DD <= AGEDAYS1 and ITAB-DD => 0.
move ITAB-DMBTR to ITAB-A_1.
modify ITAB.
endif.
endloop.
loop at ITAB.
ITAB-TOTAL = ITAB-A_1 + ITAB-A_2 + ITAB-A_3 + ITAB-A_4 + ITAB-A_5 + ITAB-A_6
+ ITAB-A_7.
modify ITAB.
endloop.
sort ITAB by BLDAT ASCENDING.
perform BUILD.
* perform GET_EVENTS.
perform CALL_ALV.
*&---------------------------------------------------------------------*
*& Form build
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
form BUILD.
refresh IT_FCAT.
clear WA_FCAT.
WA_FCAT-FIELDNAME = 'KUNNR'.
WA_FCAT-TABNAME = 'ITAB'.
WA_FCAT-SELTEXT_L = 'Customer Code'.
WA_FCAT-NO_ZERO = 'X'.
append WA_FCAT to IT_FCAT.
clear WA_FCAT.
WA_FCAT-FIELDNAME = 'NAME1'.
WA_FCAT-TABNAME = 'ITAB'.
WA_FCAT-SELTEXT_L = 'Customer Name'.
WA_FCAT-NO_ZERO = 'X'.
append WA_FCAT to IT_FCAT.
clear WA_FCAT.
WA_FCAT-FIELDNAME = 'VBELN'.
WA_FCAT-TABNAME = 'ITAB'.
WA_FCAT-SELTEXT_L = 'Invoice No.'.
WA_FCAT-HOTSPOT = 'X'.
WA_FCAT-NO_ZERO = 'X'.
append WA_FCAT to IT_FCAT.
clear WA_FCAT.
WA_FCAT-FIELDNAME = 'BUDAT'.
WA_FCAT-TABNAME = 'ITAB'.
WA_FCAT-SELTEXT_L = 'Invoice Date'.
WA_FCAT-NO_ZERO = 'X'.
append WA_FCAT to IT_FCAT.
clear WA_FCAT.
WA_FCAT-FIELDNAME = 'BELNR'.
WA_FCAT-TABNAME = 'ITAB'.
WA_FCAT-SELTEXT_L = 'Doc No.'.
WA_FCAT-NO_ZERO = 'X'.
append WA_FCAT to IT_FCAT.
clear WA_FCAT.
WA_FCAT-FIELDNAME = 'BLDAT'.
WA_FCAT-TABNAME = 'ITAB'.
WA_FCAT-SELTEXT_L = 'Doc Date'.
WA_FCAT-NO_ZERO = 'X'.
append WA_FCAT to IT_FCAT.
* clear WA_FCAT.
* WA_FCAT-FIELDNAME = 'EXNUM'.
* WA_FCAT-TABNAME = 'ITAB'.
* WA_FCAT-SELTEXT_L = 'Ex. Invoice No.'.
* WA_FCAT-NO_ZERO = 'X'.
* append WA_FCAT to IT_FCAT.
clear WA_FCAT.
WA_FCAT-FIELDNAME = 'BZIRK'.
WA_FCAT-TABNAME = 'ITAB'.
WA_FCAT-SELTEXT_L = 'Zone'.
WA_FCAT-NO_ZERO = 'X'.
append WA_FCAT to IT_FCAT.
clear WA_FCAT.
WA_FCAT-FIELDNAME = 'TOTAL'.
WA_FCAT-TABNAME = 'ITAB'.
WA_FCAT-SELTEXT_L = 'Net Outstanding'.
WA_FCAT-NO_ZERO = 'X'.
WA_FCAT-DO_SUM = 'X'.
append WA_FCAT to IT_FCAT.
clear WA_FCAT.
WA_FCAT-FIELDNAME = 'A_1'.
WA_FCAT-TABNAME = 'ITAB'.
WA_FCAT-SELTEXT_L = FOR_1ST_AGE.
WA_FCAT-NO_ZERO = 'X'.
WA_FCAT-DO_SUM = 'X'.
append WA_FCAT to IT_FCAT.
clear WA_FCAT.
WA_FCAT-FIELDNAME = 'A_2'.
WA_FCAT-TABNAME = 'ITAB'.
WA_FCAT-SELTEXT_L = FOR_2ND_AGE.
WA_FCAT-NO_ZERO = 'X'.
WA_FCAT-DO_SUM = 'X'.
append WA_FCAT to IT_FCAT.
clear WA_FCAT.
WA_FCAT-FIELDNAME = 'A_3'.
WA_FCAT-TABNAME = 'ITAB'.
WA_FCAT-SELTEXT_L = FOR_3RD_AGE.
WA_FCAT-NO_ZERO = 'X'.
WA_FCAT-DO_SUM = 'X'.
append WA_FCAT to IT_FCAT.
clear WA_FCAT.
WA_FCAT-FIELDNAME = 'A_4'.
WA_FCAT-TABNAME = 'ITAB'.
WA_FCAT-SELTEXT_L = FOR_4TH_AGE.
WA_FCAT-NO_ZERO = 'X'.
WA_FCAT-DO_SUM = 'X'.
append WA_FCAT to IT_FCAT.
clear WA_FCAT.
WA_FCAT-FIELDNAME = 'A_5'.
WA_FCAT-TABNAME = 'ITAB'.
WA_FCAT-SELTEXT_L = FOR_5TH_AGE.
WA_FCAT-NO_ZERO = 'X'.
WA_FCAT-DO_SUM = 'X'.
append WA_FCAT to IT_FCAT.
clear WA_FCAT.
WA_FCAT-FIELDNAME = 'A_6'.
WA_FCAT-TABNAME = 'ITAB'.
WA_FCAT-SELTEXT_L = FOR_6TH_AGE.
WA_FCAT-NO_ZERO = 'X'.
WA_FCAT-DO_SUM = 'X'.
append WA_FCAT to IT_FCAT.
clear WA_FCAT.
WA_FCAT-FIELDNAME = 'A_7'.
WA_FCAT-TABNAME = 'ITAB'.
WA_FCAT-SELTEXT_L = FOR_7TH_AGE.
WA_FCAT-NO_ZERO = 'X'.
WA_FCAT-DO_SUM = 'X'.
append WA_FCAT to IT_FCAT.
WA_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
WA_LAYOUT-ZEBRA = 'X'.
refresh IT_SORT.
clear WA_SORT.
WA_SORT-FIELDNAME = 'KUNNR'.
WA_SORT-SPOS = 1.
WA_SORT-UP = 'X'.
WA_SORT-SUBTOT = 'X'.
append WA_SORT to IT_SORT.
endform. "BUILD
*&---------------------------------------------------------------------*
*& Form call_alv
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
form CALL_ALV.
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = SY-CPROG
* I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = 'NEXT_SCREEN'
I_CALLBACK_TOP_OF_PAGE = 'TOP-OF-PAGE '
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
* I_STRUCTURE_NAME =
* I_BACKGROUND_ID = ' '
* I_GRID_TITLE =
* I_GRID_SETTINGS =
IS_LAYOUT = WA_LAYOUT
IT_FIELDCAT = IT_FCAT
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
IT_SORT = IT_SORT
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
* I_SAVE = ' '
* IS_VARIANT =
* IT_EVENTS = IT_EVENTS
* IT_EVENT_EXIT =
* IS_PRINT =
* IS_REPREP_ID =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* I_HTML_HEIGHT_TOP = 0
* I_HTML_HEIGHT_END = 0
* IT_ALV_GRAPHICS =
* IT_HYPERLINK =
* IT_ADD_FIELDCAT =
* IT_EXCEPT_QINFO =
* IR_SALV_FULLSCREEN_ADAPTER =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
tables
T_OUTTAB = ITAB
exceptions
PROGRAM_ERROR = 1
others = 2
.
if SY-SUBRC <> 0.
message: 'Error' type 'E'.
endif.
endform . "CALL_ALV
*&---------------------------------------------------------------------*
*& Form top-of-page
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
form TOP-OF-PAGE.
clear WA_LIST.
refresh IT_LIST.
WA_LIST-TYP = 'H'.
WA_LIST-INFO = 'Customer Ageing'.
append WA_LIST to IT_LIST.
describe table ITAB lines LEN.
concatenate 'No. of Records: ' LEN into RECORDS separated by SPACE.
clear WA_LIST.
WA_LIST-TYP ='S'.
WA_LIST-INFO = RECORDS.
append WA_LIST to IT_LIST.
call function 'REUSE_ALV_COMMENTARY_WRITE'
exporting
IT_LIST_COMMENTARY = IT_LIST
* I_LOGO =
* I_END_OF_LIST_GRID =
* I_ALV_FORM =
.
endform. "top-of-page
*&---------------------------------------------------------------------*
*& Form next_screen
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->COMMAND text
* -->SELFIELD text
*----------------------------------------------------------------------*
form NEXT_SCREEN using COMMAND like SY-UCOMM SELFIELD type SLIS_SELFIELD.
data: WA_ITAB like line of ITAB.
data: SEL_FIELD(10) type C.
case COMMAND.
when '&IC1'.
read table ITAB index SELFIELD-TABINDEX into WA_ITAB.
SEL_FIELD = WA_ITAB-VBELN.
set parameter id 'VF' field SEL_FIELD.
call transaction 'VF03' and skip first screen.
endcase.
endform. "next_screen
**&---------------------------------------------------------------------*
**& Form get_events
**&---------------------------------------------------------------------*
** text
**----------------------------------------------------------------------*
*form GET_EVENTS.
*
* call function 'REUSE_ALV_EVENTS_GET'
* exporting
* I_LIST_TYPE = 0
* importing
* ET_EVENTS = IT_EVENTS
* exceptions
* LIST_TYPE_WRONG = 1
* others = 2.
* if SY-SUBRC <> 0.
* message id SY-MSGID type SY-MSGTY number SY-MSGNO
* with SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
** Implement suitable error handling here
* endif.
*

S-ar putea să vă placă și