You are on page 1of 37

TYPE-POOLS: SLIS,ICON.

*----------------------------------------------------------------------*
* Table Definition
*----------------------------------------------------------------------*
TABLES : BSEG, "Accounting document segment
BSID, "Accounting: Secondary index for Customer
BSAD, "Accounting: Secondary index for Customer
KNA1, "General Data in Customer Master
KNVV, "Customer Master Sales Data
TVTA,
BKPF.
*----------------------------------------------------------------------*
* Data Declarations
*----------------------------------------------------------------------*
DATA : MONTH LIKE BKPF-MONAT, "Current Month of Fiscal Yr
YEAR LIKE BKPF-GJAHR, "Current Fiscal Year
POPER LIKE T009B-POPER.
DATA: IT_BSID LIKE BSID OCCURS 0 WITH HEADER LINE,
IT_BSAD LIKE BSAD OCCURS 0 WITH HEADER LINE.

TYPES: BEGIN OF TT_FAGLFLEXA,


RYEAR LIKE FAGLFLEXA-RYEAR,
DOCNR LIKE FAGLFLEXA-DOCNR,
RLDNR LIKE FAGLFLEXA-RLDNR,
RBUKRS LIKE FAGLFLEXA-RBUKRS,
DOCLN LIKE FAGLFLEXA-DOCLN,
RBUSA LIKE FAGLFLEXA-RBUSA,
* SEGMENT LIKE FAGLFLEXA-SEGMENT,
END OF TT_FAGLFLEXA,
BEGIN OF TT_FAGLFLEXA_TMP,
RYEAR LIKE FAGLFLEXA-RYEAR,
DOCNR LIKE FAGLFLEXA-DOCNR,
RLDNR LIKE FAGLFLEXA-RLDNR,
RBUKRS LIKE FAGLFLEXA-RBUKRS,
DOCLN LIKE BSEG-BUZEI,
RBUSA LIKE FAGLFLEXA-RBUSA,
* SEGMENT LIKE FAGLFLEXA-SEGMENT,
END OF TT_FAGLFLEXA_TMP.

DATA : LT_FAGLFLEXA TYPE TABLE OF TT_FAGLFLEXA


WITH NON-UNIQUE KEY RYEAR DOCNR RLDNR RBUKRS DOCLN,
LS_FAGLFLEXA TYPE TT_FAGLFLEXA.

DATA : BEGIN OF T_BSID OCCURS 0.


INCLUDE STRUCTURE BSID.
DATA : END OF T_BSID.

DATA : BEGIN OF T_BKPF OCCURS 0.


INCLUDE STRUCTURE BKPF.
DATA : END OF T_BKPF.

DATA : BEGIN OF LV_BSID OCCURS 0.


INCLUDE STRUCTURE BSID.
DATA : END OF LV_BSID.
DATA : BEGIN OF I_BSID OCCURS 0,
BUKRS(4),
GSBER(4),
KUNNR(10),
0_30 TYPE P DECIMALS 2,
31_60 TYPE P DECIMALS 2,
61_90 TYPE P DECIMALS 2,
91_120 TYPE P DECIMALS 2,
121_150 TYPE P DECIMALS 2,
151_180 TYPE P DECIMALS 2,
ABOVE_180 TYPE P DECIMALS 2,
TOTAL TYPE P DECIMALS 2,
TOT_ADJ_CR TYPE P DECIMALS 2,
VKGRP TYPE KNVV-VKGRP,
PERIOD_TOTAL TYPE P DECIMALS 2,
GJAHR TYPE BSID-GJAHR ,
END OF I_BSID.
*added by kavita for HIERARCHYLIST
**************************Added by Sumit kumar 15/10/2015*******************

TYPES : BEGIN OF TY_BSID,


VKGRP(40) TYPE C,
WRK_DELIM1 TYPE X ,
KUNNR(40) TYPE C,
WRK_DELIM2 TYPE X ,
NAME(40) TYPE C,
WRK_DELIM3 TYPE X ,
GSBER(40) TYPE C,
WRK_DELIM4 TYPE X ,
LW_KLIMK1(40) TYPE C,
WRK_DELIM5 TYPE X ,
LW_DBEKR1(40) TYPE C,
WRK_DELIM6 TYPE X ,
TOT_ADJ_CR(40) TYPE C,
WRK_DELIM7 TYPE X ,
0_30(40) TYPE C,
WRK_DELIM8 TYPE X ,
31_60(40) TYPE C,
WRK_DELIM9 TYPE X ,
61_90(40) TYPE C,
WRK_DELIM10 TYPE X ,
91_120(40) TYPE C,
WRK_DELIM11 TYPE X ,
121_150(40) TYPE C,
WRK_DELIM12 TYPE X ,
151_180(40) TYPE C,
WRK_DELIM13 TYPE X ,
ABOVE_180(40) TYPE C,
WRK_DELIM14 TYPE X ,
TOTAL(15) TYPE C,
END OF TY_BSID.

DATA:IT_FTP TYPE TABLE OF TY_BSID,


WA_FTP TYPE TY_BSID.
************************Ends Here By Sumit Kumar****************************
DATA : BEGIN OF I_HBSID OCCURS 0,
BUKRS(4),
GSBER(4),
KUNNR(10),
BELNR(10),
* XBLNR(16),
AWKEY(20),
** ZFBDT and ZUONR added by Zubin on 16.07.2010
ZFBDT TYPE BSID-ZFBDT,
ZUONR TYPE BSID-ZUONR,
BUDAT TYPE SY-DATUM,
0_30 TYPE P DECIMALS 2,
31_60 TYPE P DECIMALS 2,
61_90 TYPE P DECIMALS 2,
91_120 TYPE P DECIMALS 2,
121_150 TYPE P DECIMALS 2,
151_180 TYPE P DECIMALS 2,
ABOVE_180 TYPE P DECIMALS 2,
TOTAL TYPE P DECIMALS 2,
TOT_ADJ_CR TYPE P DECIMALS 2,
PERIOD_TOTAL TYPE P DECIMALS 2,
GJAHR TYPE BSID-GJAHR ,
END OF I_HBSID.

DATA : ITAB_HBSID LIKE I_HBSID OCCURS 0 WITH HEADER LINE.


*end of added by kavita for HIERARCHYLIST

DATA : ITAB_H LIKE T_BSID OCCURS 0 WITH HEADER LINE,


ITAB_S LIKE T_BSID OCCURS 0 WITH HEADER LINE.
DATA : ITAB_BSID LIKE I_BSID OCCURS 0 WITH HEADER LINE.
DATA: TEM_DAY TYPE P DECIMALS 0,
T_DAYS TYPE P DECIMALS 0.
DATA: GR_0_30 TYPE P DECIMALS 2,
GR_31_60 TYPE P DECIMALS 2,
GR_61_90 TYPE P DECIMALS 2,
GR_91_120 TYPE P DECIMALS 2,
GR_121_150 TYPE P DECIMALS 2,
GR_151_180 TYPE P DECIMALS 2,
GR_ABOVE_180 TYPE P DECIMALS 2,
GR_TOTAL TYPE P DECIMALS 2,
GR_ADJ_CR TYPE P DECIMALS 2,
GR_PERIOD_TOTAL TYPE P DECIMALS 2.
DATA: CLUB_CUS LIKE I_BSID OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF I_KNA1 OCCURS 0,
KUNNR LIKE KNA1-KUNNR,
NAME1 LIKE KNA1-NAME1,
END OF I_KNA1.
DATA: SL_NO LIKE SY-TABIX,
FLAG(1),LAST(1),
NEW_GSBER(4),
OLD_GSBER(4),
REFVAL TYPE P DECIMALS 2.
DATA : FIELD1(16),
FIELD2(16),
FIELD3(16),
FIELD4(16),
FIELD5(16),
FIELD6(16),
FIELD7(16).
*DATA : AGECOUNT TYPE I.

DATA GV_ACTVT(2) TYPE C VALUE '03'.

TYPES : BEGIN OF TT_KNVV,


KUNNR TYPE KUNNR,
VKORG TYPE VKORG,
VTWEG TYPE VTWEG,
SPART TYPE SPART,
VKGRP TYPE VKGRP,
END OF TT_KNVV.

DATA : LT_KNVV TYPE SORTED TABLE OF TT_KNVV WITH UNIQUE KEY KUNNR VKORG VTWEG SPART
VKGRP,
LS_KNVV TYPE TT_KNVV.

DATA : LW_KLIMK TYPE KNKK-KLIMK ,


LW_DBEKR TYPE KNKK-DBEKR ,
LW_KONDA TYPE KNVV-KONDA .

*----------------------------------------------------------------------*
* Parameter Selections
*----------------------------------------------------------------------*

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


PARAMETERS : BUKRS LIKE BSID-BUKRS OBLIGATORY.
SELECT-OPTIONS : GSBER FOR BSID-GSBER."OBLIGATORY,

PARAMETERS : BUDAT LIKE BSID-BUDAT DEFAULT SY-DATUM OBLIGATORY,


AUGDT LIKE BSAD-AUGDT DEFAULT SY-DATUM OBLIGATORY.
"OBLIGATORY,
SELECTION-SCREEN END OF BLOCK BLK1.

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


SELECT-OPTIONS : KUNNR FOR BSID-KUNNR,
S_VKGRP FOR KNVV-VKGRP,
HKONT FOR BSID-HKONT.
SELECTION-SCREEN END OF BLOCK BLK2.

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


PARAMETERS : AGEAN AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 01(31) TEXT-004.
SELECTION-SCREEN POSITION POS_LOW.
PARAMETERS: DAYS1(4) TYPE N DEFAULT '0000'.
PARAMETERS: DAYS2(4) TYPE N DEFAULT '0030' OBLIGATORY.
PARAMETERS: DAYS3(4) TYPE N DEFAULT '0060' OBLIGATORY.
PARAMETERS: DAYS4(4) TYPE N DEFAULT '0090' OBLIGATORY.
PARAMETERS: DAYS5(4) TYPE N DEFAULT '0120' OBLIGATORY.
PARAMETERS: DAYS6(4) TYPE N DEFAULT '0150' OBLIGATORY.
PARAMETERS: DAYS7(4) TYPE N DEFAULT '0180' OBLIGATORY.
SELECTION-SCREEN END OF LINE.
PARAMETERS:
TITLE02(50) DEFAULT 'Customer WISE AGE ANALYSIS'.
SELECTION-SCREEN END OF BLOCK BLK3.

SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME.

PARAMETERS: RAD1 RADIOBUTTON GROUP RAD,


RAD2 RADIOBUTTON GROUP RAD.

PARAMETERS : DTLS AS CHECKBOX DEFAULT 'X'.

SELECTION-SCREEN END OF BLOCK B2.


SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME.

PARAMETERS : P_FTP AS CHECKBOX.

SELECTION-SCREEN END OF BLOCK B3.

AT SELECTION-SCREEN.
** Authorizations Check for Business Area
PERFORM AUTH_CHECK_GSBER.

*----------------------------------------------------------------------*
* Start-of-selection
*----------------------------------------------------------------------*
START-OF-SELECTION.

* SELECT * FROM FAGLFLEXA INTO TABLE IT_FAGLFLEXA


* WHERE RBUKRS = BUKRS "Company Code
* AND RBUSA IN GSBER "Busines area
* AND BUDAT LE BUDAT. "Posting date
*
* SELECT * FROM BSID INTO CORRESPONDING FIELDS OF TABLE IT_BSID
* FOR ALL ENTRIES IN IT_FAGLFLEXA
* WHERE BELNR = IT_FAGLFLEXA-DOCNR
* AND BUZEI = IT_FAGLFLEXA-BUZEI
* AND BUKRS = BUKRS "Company Code
* AND KUNNR IN KUNNR "Customer
* AND BUDAT LE BUDAT "Posting date
* AND HKONT IN HKONT. " G/L Account
*
* REFRESH T_BSID. CLEAR T_BSID.
* T_BSID[] = IT_BSID[].
*
* SELECT * FROM BSAD APPENDING CORRESPONDING FIELDS OF TABLE T_BSID
* FOR ALL ENTRIES IN IT_FAGLFLEXA
* WHERE BELNR = IT_FAGLFLEXA-DOCNR
* AND BUZEI = IT_FAGLFLEXA-BUZEI
* AND BUKRS = BUKRS "Company Code
* AND KUNNR IN KUNNR "Customer No
*** AND umskz = space "Spl G/l Indctr
** AND gsber IN gsber "Busines area
* AND BUDAT LE BUDAT "Posting date
* AND HKONT IN HKONT . "G/L Account

SELECT * FROM BSID INTO CORRESPONDING FIELDS OF TABLE T_BSID


WHERE BUKRS = BUKRS "Company Code
AND KUNNR IN KUNNR "Customer
AND BUDAT LE BUDAT "Posting date
AND HKONT IN HKONT. " G/L Account

SELECT * FROM BSAD APPENDING CORRESPONDING FIELDS OF TABLE T_BSID


WHERE BUKRS = BUKRS "Company Code
AND KUNNR IN KUNNR "Customer No
AND BUDAT LE BUDAT "Posting date
AND AUGDT GT AUGDT
AND HKONT IN HKONT . "G/L Account

DATA I TYPE SY-TABIX.


IF NOT T_BSID[] IS INITIAL.
SELECT RYEAR DOCNR RLDNR RBUKRS DOCLN RBUSA FROM FAGLFLEXA INTO TABLE
LT_FAGLFLEXA
FOR ALL ENTRIES IN T_BSID
WHERE RYEAR = T_BSID-GJAHR
AND DOCNR = T_BSID-BELNR
AND RLDNR = '0L'
AND RBUKRS = BUKRS "Company Code
AND RBUSA IN GSBER. "Busines area

** Check for Sales Group as per selection screen


** (PN: As discussed with Mr. Mathew, although in KNVV there could be multiple
Sales Groups,
** still they are okay displaying the first Sales Group)
SELECT KUNNR VKORG VTWEG SPART VKGRP
FROM KNVV
INTO TABLE LT_KNVV
FOR ALL ENTRIES IN T_BSID
WHERE KUNNR = T_BSID-KUNNR AND
VKGRP IN S_VKGRP.

DELETE LT_KNVV WHERE SPART EQ 'C'. " Added By sumit Kumar 15/07/2015
DELETE ADJACENT DUPLICATES FROM LT_KNVV COMPARING KUNNR.
** Delete recs from T_BSID whose matching recs do not exist in LT_KNVV
LOOP AT T_BSID.
I = SY-TABIX.
READ TABLE LT_KNVV INTO LS_KNVV WITH KEY KUNNR = T_BSID-KUNNR BINARY SEARCH.
IF SY-SUBRC <> 0.
DELETE T_BSID INDEX I.
ENDIF.
ENDLOOP.

ENDIF.

LOOP AT LT_FAGLFLEXA INTO LS_FAGLFLEXA.


LS_FAGLFLEXA-DOCLN = LS_FAGLFLEXA-DOCLN+3(3).
MODIFY LT_FAGLFLEXA FROM LS_FAGLFLEXA.
ENDLOOP.

SORT LT_FAGLFLEXA BY RYEAR DOCNR RLDNR RBUKRS DOCLN.

LOOP AT T_BSID.

I = SY-TABIX.
READ TABLE LT_FAGLFLEXA INTO LS_FAGLFLEXA WITH KEY RYEAR = T_BSID-GJAHR
DOCNR = T_BSID-BELNR
RLDNR = '0L'
RBUKRS = T_BSID-BUKRS
DOCLN = T_BSID-BUZEI
BINARY SEARCH.
IF SY-SUBRC <> 0.
DELETE T_BSID INDEX I.
ELSE.
T_BSID-GSBER = LS_FAGLFLEXA-RBUSA.
MODIFY T_BSID INDEX I TRANSPORTING GSBER.
ENDIF.
ENDLOOP.
IF RAD1 = 'X'.
SORT T_BSID BY BUKRS GJAHR KUNNR GSBER ASCENDING ZFBDT DESCENDING.
ELSE.
SORT T_BSID BY BUKRS GJAHR KUNNR GSBER ASCENDING BUDAT DESCENDING.
ENDIF.
PERFORM AGEING_TABLE_CREATE.
PERFORM DISPLAY_INITAIL.
IF P_FTP = 'X'.
PERFORM SAVE_ON_FTP.
ENDIF.
IF AGEAN NE SPACE.
SET PF-STATUS 'ZRFI160'.
ELSE.
* SET PF-STATUS 'ZRFI162'.
SET PF-STATUS 'ZRFI160' EXCLUDING 'AGAN'.
ENDIF.

* AGECOUNT = 1.

AT USER-COMMAND.
CASE SY-UCOMM.
WHEN 'AGAN'.
IF AGEAN NE SPACE.
PERFORM DISPLAY.
* AGECOUNT = 2.
ELSE.
MESSAGE I208(00) WITH 'Parameter For Age Analysis Not Selected.'.
ENDIF.
* WHEN 'BACK'.
* LEAVE TO SCREEN 0.
ENDCASE.

*&---------------------------------------------------------------------*
*& Form ageing_table_create_ORG
*&---------------------------------------------------------------------*
FORM AGEING_TABLE_CREATE_ORG .
* BREAK SPLABAP.
LOOP AT T_BSID.
IF T_BSID-SHKZG = 'H'.
T_BSID-DMBTR = T_BSID-DMBTR * -1. " 28.04.2010
I_BSID-TOT_ADJ_CR = T_BSID-DMBTR.
GR_ADJ_CR = GR_ADJ_CR + T_BSID-DMBTR.

ENDIF.

I_BSID-BUKRS = T_BSID-BUKRS.
I_BSID-KUNNR = T_BSID-KUNNR.
I_BSID-GSBER = T_BSID-GSBER.

CLEAR TEM_DAY.
* TEM_DAY = BUDAT - T_BSID-ZFBDT.

IF RAD1 = 'X'.
TEM_DAY = BUDAT - T_BSID-ZFBDT.
ELSE.
TEM_DAY = BUDAT - T_BSID-BUDAT.
ENDIF.
IF T_BSID-SHKZG = 'S'. "29.04.2010
IF TEM_DAY LT DAYS1.
I_BSID-0_30 = T_BSID-DMBTR.
GR_0_30 = GR_0_30 + T_BSID-DMBTR.
ELSEIF TEM_DAY GE DAYS1 AND TEM_DAY LE DAYS2.
I_BSID-0_30 = T_BSID-DMBTR.
GR_0_30 = GR_0_30 + T_BSID-DMBTR.
ELSEIF TEM_DAY GE DAYS2 AND TEM_DAY LE DAYS3.
I_BSID-31_60 = T_BSID-DMBTR.
GR_31_60 = GR_31_60 + T_BSID-DMBTR.
ELSEIF TEM_DAY GE DAYS3 AND TEM_DAY LE DAYS4.
I_BSID-61_90 = T_BSID-DMBTR.
GR_61_90 = GR_61_90 + T_BSID-DMBTR.
ELSEIF TEM_DAY GE DAYS4 AND TEM_DAY LE DAYS5.
I_BSID-91_120 = T_BSID-DMBTR.
GR_91_120 = GR_91_120 + T_BSID-DMBTR.
* ELSEIF tem_day BETWEEN 121 AND 150.
* i_BSID-121_150 = t_BSID-dmbtr.
* gr_121_150 = gr_121_150 + t_BSID-dmbtr.
* ELSEIF tem_day BETWEEN 151 AND 180.
* i_BSID-151_180 = t_BSID-dmbtr.
* gr_151_180 = gr_151_180 + t_BSID-dmbtr.
ELSEIF TEM_DAY GE DAYS5 AND TEM_DAY LE DAYS6.
I_BSID-121_150 = T_BSID-DMBTR.
GR_121_150 = GR_121_150 + T_BSID-DMBTR.
ELSEIF TEM_DAY GE DAYS6 AND TEM_DAY LE DAYS7.
I_BSID-151_180 = T_BSID-DMBTR.
GR_151_180 = GR_151_180 + T_BSID-DMBTR.
ELSEIF TEM_DAY GT DAYS7.
I_BSID-ABOVE_180 = T_BSID-DMBTR.
GR_ABOVE_180 = GR_ABOVE_180 + T_BSID-DMBTR.
ENDIF.
ENDIF. "29.04.2010

I_BSID-TOTAL = T_BSID-DMBTR.

GR_TOTAL = GR_TOTAL + T_BSID-DMBTR.

* IF T_BSID-SHKZG = 'H'.
* T_BSID-DMBTR = 0. " 28.04.2010
* ENDIF.

COLLECT I_BSID.

MOVE-CORRESPONDING I_BSID TO I_HBSID.


I_HBSID-BELNR = T_BSID-BELNR.
** ZFBDT and ZUONR added by Zubin on 16.07.2010
I_HBSID-ZFBDT = T_BSID-ZFBDT.
I_HBSID-ZUONR = T_BSID-ZUONR.

COLLECT I_HBSID.

CLEAR I_BSID.

ENDLOOP.
CLEAR I_BSID.
SORT T_BSID BY KUNNR ASCENDING BUDAT DESCENDING.

LOOP AT I_BSID WHERE TOTAL = '0'.


MOVE I_BSID-BUKRS TO ITAB_BSID-BUKRS.
MOVE I_BSID-KUNNR TO ITAB_BSID-KUNNR.
MOVE I_BSID-GSBER TO ITAB_BSID-GSBER.
COLLECT ITAB_BSID.
DELETE I_BSID.
CLEAR ITAB_BSID.
ENDLOOP.
CLEAR I_BSID.

LOOP AT T_BSID WHERE SHKZG = 'H'.


READ TABLE I_BSID WITH KEY KUNNR = T_BSID-KUNNR GSBER = T_BSID-GSBER.
IF SY-SUBRC = 0.
IF I_BSID-TOTAL < 0.
MOVE T_BSID TO ITAB_H.
ITAB_H-DMBTR = ITAB_H-DMBTR * -1.
APPEND ITAB_H.
ELSE.
CLEAR I_BSID.
ENDIF.
ENDIF.
ENDLOOP.

LOOP AT T_BSID WHERE SHKZG = 'S'.


READ TABLE I_BSID WITH KEY KUNNR = T_BSID-KUNNR GSBER = T_BSID-GSBER.
IF SY-SUBRC = 0.
IF I_BSID-TOTAL > 0.
MOVE T_BSID TO ITAB_S.
APPEND ITAB_S.
ELSE.
CLEAR I_BSID.
ENDIF.
ENDIF.
ENDLOOP.

CLEAR : GR_0_30,GR_31_60,GR_61_90,GR_91_120,GR_121_150,GR_151_180,GR_ABOVE_180.

IF RAD1 = 'X'.
SORT ITAB_H BY KUNNR ASCENDING GSBER ASCENDING ZFBDT DESCENDING.
SORT ITAB_S BY KUNNR ASCENDING GSBER ASCENDING ZFBDT DESCENDING.
ELSE.
SORT ITAB_H BY KUNNR ASCENDING GSBER ASCENDING BUDAT DESCENDING.
SORT ITAB_S BY KUNNR ASCENDING GSBER ASCENDING BUDAT DESCENDING.
ENDIF.

LOOP AT ITAB_H.
NEW_GSBER = ITAB_H-GSBER.
AT NEW KUNNR.
CLEAR : FLAG,LAST,I_BSID.
READ TABLE I_BSID WITH KEY KUNNR = ITAB_H-KUNNR GSBER = NEW_GSBER.
IF I_BSID-TOTAL < 0.
FLAG = 'X'.
***** REFVAL = I_BSID-TOTAL. "- ( I_BSID-TOT_ADJ_CR ). "29.04.2010
REFVAL = I_BSID-TOTAL - ( I_BSID-TOT_ADJ_CR ). "29.04.2010
ENDIF.
ENDAT.

IF NEW_GSBER <> OLD_GSBER.


CLEAR : REFVAL, LAST.
READ TABLE I_BSID WITH KEY KUNNR = ITAB_H-KUNNR GSBER = NEW_GSBER.
***** REFVAL = I_BSID-TOTAL. "- ( I_BSID-TOT_ADJ_CR ). "29.04.2010
REFVAL = I_BSID-TOTAL - ( I_BSID-TOT_ADJ_CR ). "29.04.2010
FLAG = 'X'.
ENDIF.

IF ( FLAG = 'X' AND LAST <> 'X' ).


ITAB_BSID-KUNNR = ITAB_H-KUNNR.
ITAB_BSID-BUKRS = ITAB_H-BUKRS.
ITAB_BSID-GSBER = ITAB_H-GSBER.
CLEAR TEM_DAY.
* TEM_DAY = BUDAT - ITAB_H-ZFBDT.

IF RAD1 = 'X'.
TEM_DAY = BUDAT - ITAB_H-ZFBDT.
ELSE.
TEM_DAY = BUDAT - ITAB_H-BUDAT.
ENDIF.

IF TEM_DAY LT DAYS1.
IF REFVAL < ITAB_H-DMBTR.
ITAB_BSID-0_30 = ITAB_H-DMBTR.
GR_0_30 = GR_0_30 + ITAB_H-DMBTR.
ELSE.
ITAB_BSID-0_30 = REFVAL.
GR_0_30 = GR_0_30 + REFVAL.
LAST = 'X'.
ENDIF.
ELSEIF TEM_DAY GE DAYS1 AND TEM_DAY LE DAYS2.
IF REFVAL < ITAB_H-DMBTR.
ITAB_BSID-0_30 = ITAB_H-DMBTR.
GR_0_30 = GR_0_30 + ITAB_H-DMBTR.
ELSE.
ITAB_BSID-0_30 = REFVAL.
GR_0_30 = GR_0_30 + REFVAL.
LAST = 'X'.
ENDIF.

ELSEIF TEM_DAY GE DAYS2 AND TEM_DAY LE DAYS3.


IF REFVAL < ITAB_H-DMBTR.
ITAB_BSID-31_60 = ITAB_H-DMBTR.
GR_31_60 = GR_31_60 + ITAB_H-DMBTR.
ELSE.
ITAB_BSID-31_60 = REFVAL.
GR_31_60 = GR_31_60 + REFVAL.
LAST = 'X'.
ENDIF.
ELSEIF TEM_DAY GE DAYS3 AND TEM_DAY LE DAYS4.
IF REFVAL < ITAB_H-DMBTR.
ITAB_BSID-61_90 = ITAB_H-DMBTR.
GR_61_90 = GR_61_90 + ITAB_H-DMBTR.
ELSE.
ITAB_BSID-61_90 = REFVAL.
GR_61_90 = GR_61_90 + REFVAL.
LAST = 'X'.
ENDIF.
ELSEIF TEM_DAY GE DAYS4 AND TEM_DAY LE DAYS5.
IF REFVAL < ITAB_H-DMBTR.
ITAB_BSID-91_120 = ITAB_H-DMBTR.
GR_91_120 = GR_91_120 + ITAB_H-DMBTR.
ELSE.
ITAB_BSID-91_120 = REFVAL.
GR_91_120 = GR_91_120 + REFVAL.
LAST = 'X'.
ENDIF.
ELSEIF TEM_DAY GE DAYS5 AND TEM_DAY LE DAYS6.
IF REFVAL < ITAB_H-DMBTR.
ITAB_BSID-121_150 = ITAB_H-DMBTR.
GR_121_150 = GR_121_150 + ITAB_H-DMBTR.
ELSE.
ITAB_BSID-121_150 = REFVAL.
GR_121_150 = GR_121_150 + REFVAL.
LAST = 'X'.
ENDIF.
ELSEIF TEM_DAY GE DAYS6 AND TEM_DAY LE DAYS7.
IF REFVAL < ITAB_H-DMBTR.
ITAB_BSID-151_180 = ITAB_H-DMBTR.
GR_151_180 = GR_151_180 + ITAB_H-DMBTR.
ELSE.
ITAB_BSID-151_180 = REFVAL.
GR_151_180 = GR_151_180 + REFVAL.
LAST = 'X'.
ENDIF.
ELSEIF TEM_DAY GT DAYS7.
IF REFVAL < ITAB_H-DMBTR.
ITAB_BSID-ABOVE_180 = ITAB_H-DMBTR.
GR_ABOVE_180 = GR_ABOVE_180 + ITAB_H-DMBTR.
ELSE.
ITAB_BSID-ABOVE_180 = REFVAL.
GR_ABOVE_180 = GR_ABOVE_180 + REFVAL.
LAST = 'X'.
ENDIF.
ENDIF.
IF LAST <> 'X'.
REFVAL = REFVAL - ITAB_H-DMBTR.
ELSE.
REFVAL = 0.
READ TABLE I_BSID WITH KEY KUNNR = ITAB_BSID-KUNNR GSBER = NEW_GSBER.
ITAB_BSID-TOTAL = I_BSID-TOTAL.
ITAB_BSID-TOT_ADJ_CR = I_BSID-TOT_ADJ_CR. "changed by kavita on 28.04.2010
ENDIF.

COLLECT ITAB_BSID.
CLEAR ITAB_BSID.

OLD_GSBER = ITAB_H-GSBER.

ENDIF.
ENDLOOP.

CLEAR : REFVAL,FLAG,NEW_GSBER,OLD_GSBER.

LOOP AT ITAB_S.
NEW_GSBER = ITAB_S-GSBER.
AT NEW KUNNR.
CLEAR : FLAG,LAST,I_BSID.
READ TABLE I_BSID WITH KEY KUNNR = ITAB_S-KUNNR GSBER = NEW_GSBER.
IF I_BSID-TOTAL > 0.
FLAG = 'X'.
REFVAL = I_BSID-TOTAL.
ENDIF.
ENDAT.
IF NEW_GSBER <> OLD_GSBER.
CLEAR : REFVAL, LAST.
READ TABLE I_BSID WITH KEY KUNNR = ITAB_S-KUNNR GSBER = NEW_GSBER.
REFVAL = I_BSID-TOTAL.
FLAG = 'X'.
ENDIF.
IF ( FLAG = 'X' AND LAST <> 'X' ).
ITAB_BSID-KUNNR = ITAB_S-KUNNR.
ITAB_BSID-BUKRS = ITAB_S-BUKRS.
ITAB_BSID-GSBER = ITAB_S-GSBER.
CLEAR TEM_DAY.
* TEM_DAY = BUDAT - ITAB_S-ZFBDT.
IF RAD1 = 'X'.
TEM_DAY = BUDAT - ITAB_S-ZFBDT.
ELSE.
TEM_DAY = BUDAT - ITAB_S-BUDAT.
ENDIF.
IF TEM_DAY LT DAYS1.
IF REFVAL > ITAB_S-DMBTR.
ITAB_BSID-0_30 = ITAB_S-DMBTR.
GR_0_30 = GR_0_30 + ITAB_S-DMBTR.
ELSE.
ITAB_BSID-0_30 = REFVAL.
GR_0_30 = GR_0_30 + REFVAL.
LAST = 'X'.
ENDIF.
ELSEIF TEM_DAY GE DAYS1 AND TEM_DAY LE DAYS2.
IF REFVAL > ITAB_S-DMBTR.
ITAB_BSID-0_30 = ITAB_S-DMBTR.
GR_0_30 = GR_0_30 + ITAB_S-DMBTR.
ELSE.
ITAB_BSID-0_30 = REFVAL.
GR_0_30 = GR_0_30 + REFVAL.
LAST = 'X'.
ENDIF.
ELSEIF TEM_DAY GE DAYS2 AND TEM_DAY LE DAYS3.
IF REFVAL > ITAB_S-DMBTR.
ITAB_BSID-31_60 = ITAB_S-DMBTR.
GR_31_60 = GR_31_60 + ITAB_S-DMBTR.
ELSE.
ITAB_BSID-31_60 = REFVAL.
GR_31_60 = GR_31_60 + REFVAL.
LAST = 'X'.
ENDIF.
ELSEIF TEM_DAY GE DAYS3 AND TEM_DAY LE DAYS4.
IF REFVAL > ITAB_S-DMBTR.
ITAB_BSID-61_90 = ITAB_S-DMBTR.
GR_61_90 = GR_61_90 + ITAB_S-DMBTR.
ELSE.
ITAB_BSID-61_90 = REFVAL.
GR_61_90 = GR_61_90 + REFVAL.
LAST = 'X'.
ENDIF.
ELSEIF TEM_DAY GE DAYS4 AND TEM_DAY LE DAYS5.
IF REFVAL > ITAB_S-DMBTR.
ITAB_BSID-91_120 = ITAB_S-DMBTR.
GR_91_120 = GR_91_120 + ITAB_S-DMBTR.
ELSE.
ITAB_BSID-91_120 = REFVAL.
GR_91_120 = GR_91_120 + REFVAL.
LAST = 'X'.
ENDIF.
ELSEIF TEM_DAY GE DAYS5 AND TEM_DAY LE DAYS6.
IF REFVAL > ITAB_S-DMBTR.
ITAB_BSID-121_150 = ITAB_S-DMBTR.
GR_121_150 = GR_121_150 + ITAB_S-DMBTR.
ELSE.
ITAB_BSID-121_150 = REFVAL.
GR_121_150 = GR_121_150 + REFVAL.
LAST = 'X'.
ENDIF.
ELSEIF TEM_DAY GE DAYS6 AND TEM_DAY LE DAYS7.
IF REFVAL > ITAB_S-DMBTR.
ITAB_BSID-151_180 = ITAB_S-DMBTR.
GR_151_180 = GR_151_180 + ITAB_S-DMBTR.
ELSE.
ITAB_BSID-151_180 = REFVAL.
GR_151_180 = GR_151_180 + REFVAL.
LAST = 'X'.
ENDIF.
ELSEIF TEM_DAY GT DAYS7.
IF REFVAL > ITAB_S-DMBTR.
ITAB_BSID-ABOVE_180 = ITAB_S-DMBTR.
GR_ABOVE_180 = GR_ABOVE_180 + ITAB_S-DMBTR.
ELSE.
ITAB_BSID-ABOVE_180 = REFVAL.
GR_ABOVE_180 = GR_ABOVE_180 + REFVAL.
LAST = 'X'.
ENDIF.
ENDIF.
IF LAST <> 'X'.
REFVAL = REFVAL - ITAB_S-DMBTR.
ELSE.
REFVAL = 0.
READ TABLE I_BSID WITH KEY KUNNR = ITAB_BSID-KUNNR GSBER = ITAB_BSID-KUNNR.
ITAB_BSID-TOTAL = I_BSID-TOTAL.
ENDIF.
COLLECT ITAB_BSID.
CLEAR ITAB_BSID.
OLD_GSBER = ITAB_S-GSBER.
ENDIF.
ENDLOOP.

SORT ITAB_BSID BY BUKRS KUNNR GSBER.


FREE CLUB_CUS.
CLUB_CUS[] = ITAB_BSID[].

SORT CLUB_CUS BY KUNNR.


DELETE ADJACENT DUPLICATES FROM CLUB_CUS COMPARING KUNNR.

FREE I_KNA1.

IF NOT CLUB_CUS[] IS INITIAL.

SELECT KUNNR NAME1 FROM KNA1 INTO TABLE I_KNA1


FOR ALL ENTRIES IN CLUB_CUS
WHERE KUNNR = CLUB_CUS-KUNNR.
SORT I_KNA1 BY KUNNR.

ENDIF.

IF NOT I_HBSID[] IS INITIAL.

SELECT * FROM BKPF INTO TABLE T_BKPF


FOR ALL ENTRIES IN I_HBSID
WHERE BUKRS = I_HBSID-BUKRS
AND BELNR = I_HBSID-BELNR.

LOOP AT T_BKPF.
READ TABLE I_HBSID WITH KEY BUKRS = T_BKPF-BUKRS BELNR = T_BKPF-BELNR.
IF SY-SUBRC = 0.
* I_HBSID-XBLNR = T_BKPF-XBLNR.
I_HBSID-AWKEY = T_BKPF-AWKEY.
I_HBSID-BUDAT = T_BKPF-BUDAT.
MODIFY I_HBSID INDEX SY-TABIX.
ENDIF.
ENDLOOP.

ENDIF.
ENDFORM. " ageing_table_create_org
*&---------------------------------------------------------------------*
*& Form display
*&---------------------------------------------------------------------*
*****FORM DISPLAY .
*****
***** IF SY-LSIND = 1.
*****
****** TOP-OF-PAGE.
***** CLEAR SL_NO.
***** FORMAT COLOR 3.
***** WRITE : / ,
***** 1 'Date : ', SY-DATUM,
***** 20 'Time : ', SY-UZEIT,
***** 60 TEXT-005.
***** FORMAT COLOR OFF.
*****
***** CONCATENATE DAYS1 'TO' DAYS2 INTO FIELD1 SEPARATED BY SPACE.
***** CONCATENATE DAYS2 'TO' DAYS3 INTO FIELD2 SEPARATED BY SPACE.
***** CONCATENATE DAYS3 'TO' DAYS4 INTO FIELD3 SEPARATED BY SPACE.
***** CONCATENATE DAYS4 'TO' DAYS5 INTO FIELD4 SEPARATED BY SPACE.
***** CONCATENATE DAYS5 'TO' DAYS6 INTO FIELD5 SEPARATED BY SPACE.
***** CONCATENATE DAYS6 'TO' DAYS7 INTO FIELD6 SEPARATED BY SPACE.
***** CONCATENATE 'ABOVE' DAYS7 INTO FIELD7 SEPARATED BY SPACE.
***** ULINE.
***** FORMAT COLOR 4.
***** WRITE:/(10) 'SL.NO' RIGHT-JUSTIFIED,
***** (09) 'COMP. CODE',
***** (12) 'Cust CODE',
***** (20) 'Customer NAME',
***** (11) 'BUS.AREA',
***** (17) 'TOTAL' RIGHT-JUSTIFIED,
***** (17) 'Unadjusted cr.' RIGHT-JUSTIFIED,
***** (17) FIELD1 RIGHT-JUSTIFIED,
***** (17) FIELD2 RIGHT-JUSTIFIED,
***** (17) FIELD3 RIGHT-JUSTIFIED,
***** (17) FIELD4 RIGHT-JUSTIFIED,
***** (17) FIELD5 RIGHT-JUSTIFIED,
***** (17) FIELD6 RIGHT-JUSTIFIED,
***** (17) FIELD7 RIGHT-JUSTIFIED.
***** IF DTLS NE SPACE.
***** WRITE:/22(12) 'Posting Dt',
***** (20) 'Doc. No.',
***** (11) 'Billing Doc.'.
***** ENDIF.
*****
***** FORMAT COLOR OFF.
***** ULINE.
*****
***** SORT I_HBSID BY BUKRS KUNNR GSBER.
*****
***** LOOP AT ITAB_BSID.
***** ADD 1 TO SL_NO.
*****
*****
***** CLEAR I_KNA1.
***** READ TABLE I_KNA1 WITH KEY KUNNR = ITAB_BSID-KUNNR
***** BINARY SEARCH.
*****
***** FORMAT COLOR 7.
***** WRITE:/(10) SL_NO,
***** (09) ITAB_BSID-BUKRS,
***** (12) ITAB_BSID-KUNNR,
***** (20) I_KNA1-NAME1,
***** (10) ITAB_BSID-GSBER,
***** (17) ITAB_BSID-TOTAL RIGHT-JUSTIFIED,
***** (17) ITAB_BSID-TOT_ADJ_CR RIGHT-JUSTIFIED,
***** (17) ITAB_BSID-0_30 RIGHT-JUSTIFIED,
***** (17) ITAB_BSID-31_60 RIGHT-JUSTIFIED,
***** (17) ITAB_BSID-61_90 RIGHT-JUSTIFIED,
***** (17) ITAB_BSID-91_120 RIGHT-JUSTIFIED,
***** (17) ITAB_BSID-121_150 RIGHT-JUSTIFIED,
***** (17) ITAB_BSID-151_180 RIGHT-JUSTIFIED,
***** (17) ITAB_BSID-ABOVE_180 RIGHT-JUSTIFIED.
*****
***** FORMAT COLOR OFF.
***** IF DTLS NE SPACE.
***** WRITE : / ''.
***** LOOP AT I_HBSID WHERE BUKRS = ITAB_BSID-BUKRS AND
***** KUNNR = ITAB_BSID-KUNNR AND
***** GSBER = ITAB_BSID-GSBER.
*****
***** WRITE:/22(12) I_HBSID-BUDAT,
***** (20) I_HBSID-BELNR,
***** (10) I_HBSID-AWKEY,
***** (17) I_HBSID-TOTAL RIGHT-JUSTIFIED,
***** (17) I_HBSID-TOT_ADJ_CR RIGHT-JUSTIFIED,
***** (17) I_HBSID-0_30 RIGHT-JUSTIFIED,
***** (17) I_HBSID-31_60 RIGHT-JUSTIFIED,
***** (17) I_HBSID-61_90 RIGHT-JUSTIFIED,
***** (17) I_HBSID-91_120 RIGHT-JUSTIFIED,
***** (17) I_HBSID-121_150 RIGHT-JUSTIFIED,
***** (17) I_HBSID-151_180 RIGHT-JUSTIFIED,
***** (17) I_HBSID-ABOVE_180 RIGHT-JUSTIFIED.
***** ENDLOOP.
***** ENDIF.
***** ENDLOOP.
***** SKIP.
*****
***** ULINE.
*****
***** WRITE:/67(17) GR_TOTAL RIGHT-JUSTIFIED COLOR 6,
***** (17) GR_ADJ_CR RIGHT-JUSTIFIED COLOR 6,
***** (17) GR_0_30 RIGHT-JUSTIFIED COLOR 6,
***** (17) GR_31_60 RIGHT-JUSTIFIED COLOR 6,
***** (17) GR_61_90 RIGHT-JUSTIFIED COLOR 6,
***** (17) GR_91_120 RIGHT-JUSTIFIED COLOR 6,
***** (17) GR_121_150 RIGHT-JUSTIFIED COLOR 6,
***** (17) GR_151_180 RIGHT-JUSTIFIED COLOR 6,
***** (17) GR_ABOVE_180 RIGHT-JUSTIFIED COLOR 6.
*****
***** ULINE.
*****
***** ENDIF.
*****
*****ENDFORM. " display

FORM DISPLAY .

IF SY-LSIND = 1.

* TOP-OF-PAGE.
CLEAR SL_NO.
FORMAT COLOR 3.
WRITE : / ,
1 'Date : ', SY-DATUM,
20 'Time : ', SY-UZEIT,
60 TEXT-005.
FORMAT COLOR OFF.

CONCATENATE DAYS1 'TO' DAYS2 INTO FIELD1 SEPARATED BY SPACE.


CONCATENATE DAYS2 'TO' DAYS3 INTO FIELD2 SEPARATED BY SPACE.
CONCATENATE DAYS3 'TO' DAYS4 INTO FIELD3 SEPARATED BY SPACE.
CONCATENATE DAYS4 'TO' DAYS5 INTO FIELD4 SEPARATED BY SPACE.
CONCATENATE DAYS5 'TO' DAYS6 INTO FIELD5 SEPARATED BY SPACE.
CONCATENATE DAYS6 'TO' DAYS7 INTO FIELD6 SEPARATED BY SPACE.
CONCATENATE 'ABOVE' DAYS7 INTO FIELD7 SEPARATED BY SPACE.
ULINE.
FORMAT COLOR 4.
****************************Changed By Sumit Kumar 15/10/2015**********************
* WRITE:/(10) 'SL.NO' RIGHT-JUSTIFIED, "
* (09) 'COMP. CODE', "
WRITE:/(10) 'Sales_Area', " Sales Grp changed to Sales_Area
(14) 'Customer_Code', " Cust CODE changed to
Customer_Code
(35) 'Customer_Name', "Customer NAME Changed to
Customer_Name
***** (11) 'BUS.AREA',
(25) 'DepotCode', " BUS.AREA Changed to DepotCode
(17) ' Credit_Limit', "Credit Limit to Credit_Limit
(17) ' Credit_Days' RIGHT-JUSTIFIED, "Credit Days to Credit_Days
* (17) ' CD Group' RIGHT-JUSTIFIED,
* (17) 'TOTAL' RIGHT-JUSTIFIED, "
(17) 'Unadjusted' RIGHT-JUSTIFIED, "Unadjusted cr. to Unadjusted
* (17) FIELD1 RIGHT-JUSTIFIED, "0_30
* (17) FIELD2 RIGHT-JUSTIFIED, "31_60
* (17) FIELD3 RIGHT-JUSTIFIED, "61_90
* (17) FIELD4 RIGHT-JUSTIFIED, "91_120
* (17) FIELD5 RIGHT-JUSTIFIED, "121_150
* (17) FIELD6 RIGHT-JUSTIFIED, "151_180
* (17) FIELD7 RIGHT-JUSTIFIED, " Above 180

(17) '0_30' RIGHT-JUSTIFIED, "0_30


(17) '31_60' RIGHT-JUSTIFIED, "31_60
(17) '61_90' RIGHT-JUSTIFIED, "61_90
(17) '91_120' RIGHT-JUSTIFIED, "91_120
(17) '121_150' RIGHT-JUSTIFIED, "121_150
(17) '151_180' RIGHT-JUSTIFIED, "151_180
(17) 'Above 180' RIGHT-JUSTIFIED, " Above 180

* (17) 'Periodic Total' RIGHT-JUSTIFIED. "


(17) 'TOTAL' RIGHT-JUSTIFIED.
IF DTLS NE SPACE.
***** WRITE:/22(12) 'Posting Dt',
***** (20) 'Doc. No.',
***** (11) 'Billing Doc.'.
** 'Bline Date' and 'Assignment' fields added by Zubin on 16.07.2010
WRITE:/33(12) 'Posting Dt',
(20) 'Doc. No.',
(13) 'Billing Doc.',
(12) 'Bline Date',
(18) 'Assignment'.
ENDIF.

FORMAT COLOR OFF.


ULINE.

SORT I_HBSID BY BUKRS KUNNR GSBER.

LOOP AT ITAB_BSID.
ADD 1 TO SL_NO.

***** CLEAR LS_KNVV.


***** READ TABLE LT_KNVV INTO LS_KNVV WITH KEY KUNNR = ITAB_BSID-KUNNR BINARY
SEARCH.

CLEAR : I_KNA1 , LW_KLIMK , LW_DBEKR , LW_KONDA .


READ TABLE I_KNA1 WITH KEY KUNNR = ITAB_BSID-KUNNR
BINARY SEARCH.
SELECT KLIMK INTO LW_KLIMK FROM KNKK WHERE KUNNR = ITAB_BSID-KUNNR.
ENDSELECT.

SELECT DBEKR INTO LW_DBEKR FROM KNKK WHERE KUNNR = ITAB_BSID-KUNNR.


ENDSELECT.

SELECT KONDA INTO LW_KONDA FROM KNVV WHERE KUNNR = ITAB_BSID-KUNNR.


ENDSELECT.

FORMAT COLOR 7.
* WRITE:/(10) SL_NO,
* (09) ITAB_BSID-BUKRS,
***** (10) LS_KNVV-VKGRP,
WRITE:/(10) ITAB_BSID-VKGRP,
(14) ITAB_BSID-KUNNR,
(35) I_KNA1-NAME1,
** Changed by Zubin on 16.07.2010
***** (10) ITAB_BSID-GSBER,
(25) ITAB_BSID-GSBER,
(17) LW_KLIMK RIGHT-JUSTIFIED,
(17) LW_DBEKR RIGHT-JUSTIFIED,
* (17) LW_KONDA RIGHT-JUSTIFIED,
* (17) ITAB_BSID-TOTAL RIGHT-JUSTIFIED,
(17) ITAB_BSID-TOT_ADJ_CR RIGHT-JUSTIFIED,
(17) ITAB_BSID-0_30 RIGHT-JUSTIFIED,
(17) ITAB_BSID-31_60 RIGHT-JUSTIFIED,
(17) ITAB_BSID-61_90 RIGHT-JUSTIFIED,
(17) ITAB_BSID-91_120 RIGHT-JUSTIFIED,
(17) ITAB_BSID-121_150 RIGHT-JUSTIFIED,
(17) ITAB_BSID-151_180 RIGHT-JUSTIFIED,
(17) ITAB_BSID-ABOVE_180 RIGHT-JUSTIFIED,
* (17) ITAB_BSID-PERIOD_TOTAL RIGHT-JUSTIFIED.
(17) ITAB_BSID-TOTAL RIGHT-JUSTIFIED.

FORMAT COLOR OFF.


IF DTLS NE SPACE.
WRITE : / ''.
SORT I_HBSID BY ZFBDT . " changes made by cbp
LOOP AT I_HBSID WHERE BUKRS = ITAB_BSID-BUKRS AND
KUNNR = ITAB_BSID-KUNNR AND
GSBER = ITAB_BSID-GSBER.

***** WRITE:/22(12) I_HBSID-BUDAT,


WRITE:/33(12) I_HBSID-BUDAT,
(20) I_HBSID-BELNR,
(13) I_HBSID-AWKEY(10),
** 'ZFBDT' and 'ZUONR' Added by Zubin on 16.07.2010
(12) I_HBSID-ZFBDT,
(18) I_HBSID-ZUONR,
(17) '',
(17) '',
(17) '',
(17) I_HBSID-TOTAL RIGHT-JUSTIFIED,
(17) I_HBSID-TOT_ADJ_CR RIGHT-JUSTIFIED,
(17) I_HBSID-0_30 RIGHT-JUSTIFIED,
(17) I_HBSID-31_60 RIGHT-JUSTIFIED,
(17) I_HBSID-61_90 RIGHT-JUSTIFIED,
(17) I_HBSID-91_120 RIGHT-JUSTIFIED,
(17) I_HBSID-121_150 RIGHT-JUSTIFIED,
(17) I_HBSID-151_180 RIGHT-JUSTIFIED,
(17) I_HBSID-ABOVE_180 RIGHT-JUSTIFIED,
(17) I_HBSID-PERIOD_TOTAL RIGHT-JUSTIFIED.
ENDLOOP.
ENDIF.
ENDLOOP.
SKIP.

ULINE.

***** WRITE:/67(17) GR_TOTAL RIGHT-JUSTIFIED COLOR 6,


** Changed by Zubin on 16.07.2010
***** WRITE:/78(17) GR_TOTAL RIGHT-JUSTIFIED COLOR 6,
* WRITE:/167(17) GR_TOTAL RIGHT-JUSTIFIED COLOR 6,
WRITE:/127(17) GR_ADJ_CR RIGHT-JUSTIFIED COLOR 6,
(17) GR_0_30 RIGHT-JUSTIFIED COLOR 6,
(17) GR_31_60 RIGHT-JUSTIFIED COLOR 6,
(17) GR_61_90 RIGHT-JUSTIFIED COLOR 6,
(17) GR_91_120 RIGHT-JUSTIFIED COLOR 6,
(17) GR_121_150 RIGHT-JUSTIFIED COLOR 6,
(17) GR_151_180 RIGHT-JUSTIFIED COLOR 6,
(17) GR_ABOVE_180 RIGHT-JUSTIFIED COLOR 6,
* (17) GR_PERIOD_TOTAL RIGHT-JUSTIFIED COLOR 6.
(17) GR_TOTAL RIGHT-JUSTIFIED COLOR 6.

ULINE.

ENDIF.

ENDFORM. " display

*&---------------------------------------------------------------------*
*& Form display_initail
*&---------------------------------------------------------------------*

*****FORM DISPLAY_INITAIL .
***** CLEAR SL_NO.
*****
***** FORMAT COLOR 3.
***** WRITE : / ,
***** 1 'Date : ', SY-DATUM ,
***** 20 'Time : ', SY-UZEIT ,
***** 60 TEXT-005.
***** FORMAT COLOR OFF.
***** ULINE.
***** FORMAT COLOR 4.
***** WRITE:/(10) 'SL.NO' RIGHT-JUSTIFIED,
***** (09) 'COMP. CODE',
***** (12) 'Customer. CODE',
***** (20) 'Customer.NAME',
***** (10) 'BUS.AREA',
***** (22) 'TOTAL' RIGHT-JUSTIFIED.
***** FORMAT COLOR OFF.
***** ULINE.
***** LOOP AT ITAB_BSID.
***** ADD 1 TO SL_NO.
*****
*****
***** CLEAR I_KNA1.
***** READ TABLE I_KNA1 WITH KEY KUNNR = ITAB_BSID-KUNNR
***** BINARY SEARCH.
*****
***** WRITE:/(10) SL_NO,
***** (09) ITAB_BSID-BUKRS,
***** (12) ITAB_BSID-KUNNR,
***** (20) I_KNA1-NAME1,
***** (10) ITAB_BSID-GSBER,
***** (22) ITAB_BSID-TOTAL RIGHT-JUSTIFIED.
***** ENDLOOP.
***** ULINE.
***** WRITE:/67(22) GR_TOTAL RIGHT-JUSTIFIED COLOR 6.
***** ULINE.
*****ENDFORM. " display_initail

FORM DISPLAY_INITAIL .
"""""""""""""""""""""""" Commented By sumit Kumar 15/10/2015"""""""""""""""""""
CLEAR SL_NO.
FORMAT COLOR 3.
WRITE : / ,
1 'Date : ', SY-DATUM,
20 'Time : ', SY-UZEIT,
60 TEXT-005.
FORMAT COLOR OFF.
ULINE.
FORMAT COLOR 4.
****************************Changed By Sumit Kumar 15/10/2015**********************
* WRITE:/(10) 'SL.NO' RIGHT-JUSTIFIED, "
* (09) 'COMP. CODE', "
WRITE:/(10) 'Sales_Area', " Sales Grp changed to Sales_Area
(14) 'Customer_Code', " Cust CODE changed to
Customer_Code
(35) 'Customer_Name', "Customer NAME Changed to
Customer_Name
***** (11) 'BUS.AREA',
(25) 'DepotCode', " BUS.AREA Changed to DepotCode
(17) ' Credit_Limit', "Credit Limit to Credit_Limit
(17) ' Credit_Days' RIGHT-JUSTIFIED, "Credit Days to Credit_Days
* (17) ' CD Group' RIGHT-JUSTIFIED,
* (17) 'TOTAL' RIGHT-JUSTIFIED, "
(17) 'Unadjusted' RIGHT-JUSTIFIED, "Unadjusted cr. to Unadjusted
* (17) FIELD1 RIGHT-JUSTIFIED, "0_30
* (17) FIELD2 RIGHT-JUSTIFIED, "31_60
* (17) FIELD3 RIGHT-JUSTIFIED, "61_90
* (17) FIELD4 RIGHT-JUSTIFIED, "91_120
* (17) FIELD5 RIGHT-JUSTIFIED, "121_150
* (17) FIELD6 RIGHT-JUSTIFIED, "151_180
* (17) FIELD7 RIGHT-JUSTIFIED, " Above 180

(17) '0_30' RIGHT-JUSTIFIED, "0_30


(17) '31_60' RIGHT-JUSTIFIED, "31_60
(17) '61_90' RIGHT-JUSTIFIED, "61_90
(17) '91_120' RIGHT-JUSTIFIED, "91_120
(17) '121_150' RIGHT-JUSTIFIED, "121_150
(17) '151_180' RIGHT-JUSTIFIED, "151_180
(17) 'Above 180' RIGHT-JUSTIFIED, " Above 180

* (17) 'Periodic Total' RIGHT-JUSTIFIED. "


(17) 'TOTAL' RIGHT-JUSTIFIED.
IF DTLS NE SPACE.
***** WRITE:/22(12) 'Posting Dt',
***** (20) 'Doc. No.',
***** (11) 'Billing Doc.'.
** 'Bline Date' and 'Assignment' fields added by Zubin on 16.07.2010
WRITE:/33(12) 'Posting Dt',
(20) 'Doc. No.',
(13) 'Billing Doc.',
(12) 'Bline Date',
(18) 'Assignment'.
ENDIF.
FORMAT COLOR OFF.
ULINE.

SORT I_HBSID BY BUKRS KUNNR GSBER.

LOOP AT ITAB_BSID.
ADD 1 TO SL_NO.

***** CLEAR LS_KNVV.


***** READ TABLE LT_KNVV INTO LS_KNVV WITH KEY KUNNR = ITAB_BSID-KUNNR BINARY
SEARCH.

CLEAR : I_KNA1 , LW_KLIMK , LW_DBEKR , LW_KONDA .


READ TABLE I_KNA1 WITH KEY KUNNR = ITAB_BSID-KUNNR
BINARY SEARCH.
SELECT KLIMK INTO LW_KLIMK FROM KNKK WHERE KUNNR = ITAB_BSID-KUNNR.
ENDSELECT.

SELECT DBEKR INTO LW_DBEKR FROM KNKK WHERE KUNNR = ITAB_BSID-KUNNR.


ENDSELECT.

SELECT KONDA INTO LW_KONDA FROM KNVV WHERE KUNNR = ITAB_BSID-KUNNR.


ENDSELECT.

FORMAT COLOR 7.
* WRITE:/(10) SL_NO,
* (09) ITAB_BSID-BUKRS,
***** (10) LS_KNVV-VKGRP,
WRITE:/(10) ITAB_BSID-VKGRP,
(14) ITAB_BSID-KUNNR,
(35) I_KNA1-NAME1,
** Changed by Zubin on 16.07.2010
***** (10) ITAB_BSID-GSBER,
(25) ITAB_BSID-GSBER,
(17) LW_KLIMK RIGHT-JUSTIFIED,
(17) LW_DBEKR RIGHT-JUSTIFIED,
* (17) LW_KONDA RIGHT-JUSTIFIED,
* (17) ITAB_BSID-TOTAL RIGHT-JUSTIFIED,
(17) ITAB_BSID-TOT_ADJ_CR RIGHT-JUSTIFIED,
(17) ITAB_BSID-0_30 RIGHT-JUSTIFIED,
(17) ITAB_BSID-31_60 RIGHT-JUSTIFIED,
(17) ITAB_BSID-61_90 RIGHT-JUSTIFIED,
(17) ITAB_BSID-91_120 RIGHT-JUSTIFIED,
(17) ITAB_BSID-121_150 RIGHT-JUSTIFIED,
(17) ITAB_BSID-151_180 RIGHT-JUSTIFIED,
(17) ITAB_BSID-ABOVE_180 RIGHT-JUSTIFIED,
* (17) ITAB_BSID-PERIOD_TOTAL RIGHT-JUSTIFIED.
(17) ITAB_BSID-TOTAL RIGHT-JUSTIFIED.

FORMAT COLOR OFF.


IF DTLS NE SPACE.
WRITE : / ''.
SORT I_HBSID BY ZFBDT . " changes made by cbp
LOOP AT I_HBSID WHERE BUKRS = ITAB_BSID-BUKRS AND
KUNNR = ITAB_BSID-KUNNR AND
GSBER = ITAB_BSID-GSBER.

***** WRITE:/22(12) I_HBSID-BUDAT,


WRITE:/33(12) I_HBSID-BUDAT,
(20) I_HBSID-BELNR,
(13) I_HBSID-AWKEY(10),
** 'ZFBDT' and 'ZUONR' Added by Zubin on 16.07.2010
(12) I_HBSID-ZFBDT,
(18) I_HBSID-ZUONR,
(17) '',
(17) '',
(17) '',
(17) I_HBSID-TOTAL RIGHT-JUSTIFIED,
(17) I_HBSID-TOT_ADJ_CR RIGHT-JUSTIFIED,
(17) I_HBSID-0_30 RIGHT-JUSTIFIED,
(17) I_HBSID-31_60 RIGHT-JUSTIFIED,
(17) I_HBSID-61_90 RIGHT-JUSTIFIED,
(17) I_HBSID-91_120 RIGHT-JUSTIFIED,
(17) I_HBSID-121_150 RIGHT-JUSTIFIED,
(17) I_HBSID-151_180 RIGHT-JUSTIFIED,
(17) I_HBSID-ABOVE_180 RIGHT-JUSTIFIED,
(17) I_HBSID-PERIOD_TOTAL RIGHT-JUSTIFIED.
ENDLOOP.
ENDIF.
ENDLOOP.
SKIP.

ULINE.

***** WRITE:/67(17) GR_TOTAL RIGHT-JUSTIFIED COLOR 6,


** Changed by Zubin on 16.07.2010
***** WRITE:/78(17) GR_TOTAL RIGHT-JUSTIFIED COLOR 6,
* WRITE:/167(17) GR_TOTAL RIGHT-JUSTIFIED COLOR 6,
WRITE:/127(17) GR_ADJ_CR RIGHT-JUSTIFIED COLOR 6,
(17) GR_0_30 RIGHT-JUSTIFIED COLOR 6,
(17) GR_31_60 RIGHT-JUSTIFIED COLOR 6,
(17) GR_61_90 RIGHT-JUSTIFIED COLOR 6,
(17) GR_91_120 RIGHT-JUSTIFIED COLOR 6,
(17) GR_121_150 RIGHT-JUSTIFIED COLOR 6,
(17) GR_151_180 RIGHT-JUSTIFIED COLOR 6,
(17) GR_ABOVE_180 RIGHT-JUSTIFIED COLOR 6,
* (17) GR_PERIOD_TOTAL RIGHT-JUSTIFIED COLOR 6.
(17) GR_TOTAL RIGHT-JUSTIFIED COLOR 6.

ULINE.

* CLEAR SL_NO.
*
* FORMAT COLOR 3.
* WRITE : / ,
* 1 'Date : ', SY-DATUM ,
* 20 'Time : ', SY-UZEIT ,
* 60 TEXT-005.
* FORMAT COLOR OFF.
* ULINE.
* FORMAT COLOR 4.
* WRITE:/(10) 'SL.NO' RIGHT-JUSTIFIED,
* (09) 'COMP. CODE',
* (10) 'Sales Grp',
* (12) 'Customer. CODE',
* (20) 'Customer.NAME',
* (10) 'BUS.AREA',
* (22) 'TOTAL' RIGHT-JUSTIFIED.
* FORMAT COLOR OFF.
* ULINE.
* LOOP AT ITAB_BSID.
* ADD 1 TO SL_NO.
*
****** CLEAR LS_KNVV.
****** READ TABLE LT_KNVV INTO LS_KNVV WITH KEY KUNNR = ITAB_BSID-KUNNR BINARY
SEARCH.
*
* CLEAR I_KNA1.
* READ TABLE I_KNA1 WITH KEY KUNNR = ITAB_BSID-KUNNR
* BINARY SEARCH.
*
* WRITE:/(10) SL_NO,
* (09) ITAB_BSID-BUKRS,
****** (10) LS_KNVV-VKGRP,
* (10) ITAB_BSID-VKGRP,
* (12) ITAB_BSID-KUNNR,
* (20) I_KNA1-NAME1,
* (10) ITAB_BSID-GSBER,
* (22) ITAB_BSID-TOTAL RIGHT-JUSTIFIED.
* ENDLOOP.
* ULINE.
** WRITE:/67(22) GR_TOTAL RIGHT-JUSTIFIED COLOR 6.
* WRITE:/78(22) GR_TOTAL RIGHT-JUSTIFIED COLOR 6.
* ULINE.
ENDFORM. " display_initail

*&---------------------------------------------------------------------*
*& Form AUTH_CHECK_GSBER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM AUTH_CHECK_GSBER .
*&---------------------------------------------------------------------*
** Authorization check for Business Ares
*&---------------------------------------------------------------------*
TYPES : BEGIN OF TT_TGSB,
GSBER TYPE BSID-GSBER,
END OF TT_TGSB.

DATA : LT_TGSB TYPE SORTED TABLE OF TT_TGSB WITH UNIQUE KEY GSBER,
LS_TGSB TYPE TT_TGSB.

SELECT GSBER FROM TGSB


INTO TABLE LT_TGSB
WHERE GSBER IN GSBER.

LOOP AT LT_TGSB INTO LS_TGSB.


AUTHORITY-CHECK OBJECT 'F_BKPF_GSB'
ID 'GSBER' FIELD LS_TGSB-GSBER
ID 'ACTVT' FIELD GV_ACTVT.
IF SY-SUBRC <> 0.
MESSAGE E007(ZFI01) WITH LS_TGSB-GSBER.
ENDIF.
ENDLOOP.
ENDFORM. " AUTH_CHECK_GSBER

*&---------------------------------------------------------------------*
*& Form ageing_table_create
*&---------------------------------------------------------------------*
FORM AGEING_TABLE_CREATE .
* BREAK SPLABAP.
LOOP AT T_BSID.
IF T_BSID-SHKZG = 'H'.
T_BSID-DMBTR = T_BSID-DMBTR * -1. " 28.04.2010
I_BSID-TOT_ADJ_CR = T_BSID-DMBTR.
GR_ADJ_CR = GR_ADJ_CR + T_BSID-DMBTR.

ENDIF.

I_BSID-BUKRS = T_BSID-BUKRS.
I_BSID-KUNNR = T_BSID-KUNNR.
I_BSID-GSBER = T_BSID-GSBER.

CLEAR TEM_DAY.
* TEM_DAY = BUDAT - T_BSID-ZFBDT.

IF RAD1 = 'X'.
TEM_DAY = BUDAT - T_BSID-ZFBDT.
ELSE.
TEM_DAY = BUDAT - T_BSID-BUDAT.
ENDIF.
IF T_BSID-SHKZG = 'S'. "29.04.2010
IF TEM_DAY LT DAYS1.
I_BSID-0_30 = T_BSID-DMBTR.
GR_0_30 = GR_0_30 + T_BSID-DMBTR.
ELSEIF TEM_DAY GE DAYS1 AND TEM_DAY LE DAYS2.
I_BSID-0_30 = T_BSID-DMBTR.
GR_0_30 = GR_0_30 + T_BSID-DMBTR.
ELSEIF TEM_DAY GE DAYS2 AND TEM_DAY LE DAYS3.
I_BSID-31_60 = T_BSID-DMBTR.
GR_31_60 = GR_31_60 + T_BSID-DMBTR.
ELSEIF TEM_DAY GE DAYS3 AND TEM_DAY LE DAYS4.
I_BSID-61_90 = T_BSID-DMBTR.
GR_61_90 = GR_61_90 + T_BSID-DMBTR.
ELSEIF TEM_DAY GE DAYS4 AND TEM_DAY LE DAYS5.
I_BSID-91_120 = T_BSID-DMBTR.
GR_91_120 = GR_91_120 + T_BSID-DMBTR.
* ELSEIF tem_day BETWEEN 121 AND 150.
* i_BSID-121_150 = t_BSID-dmbtr.
* gr_121_150 = gr_121_150 + t_BSID-dmbtr.
* ELSEIF tem_day BETWEEN 151 AND 180.
* i_BSID-151_180 = t_BSID-dmbtr.
* gr_151_180 = gr_151_180 + t_BSID-dmbtr.
ELSEIF TEM_DAY GE DAYS5 AND TEM_DAY LE DAYS6.
I_BSID-121_150 = T_BSID-DMBTR.
GR_121_150 = GR_121_150 + T_BSID-DMBTR.
ELSEIF TEM_DAY GE DAYS6 AND TEM_DAY LE DAYS7.
I_BSID-151_180 = T_BSID-DMBTR.
GR_151_180 = GR_151_180 + T_BSID-DMBTR.
ELSEIF TEM_DAY GT DAYS7.
I_BSID-ABOVE_180 = T_BSID-DMBTR.
GR_ABOVE_180 = GR_ABOVE_180 + T_BSID-DMBTR.
ENDIF.
ENDIF. "29.04.2010

I_BSID-TOTAL = T_BSID-DMBTR.

GR_TOTAL = GR_TOTAL + T_BSID-DMBTR.

* IF T_BSID-SHKZG = 'H'.
* T_BSID-DMBTR = 0. " 28.04.2010
* ENDIF.

COLLECT I_BSID.

MOVE-CORRESPONDING I_BSID TO I_HBSID.


I_HBSID-BELNR = T_BSID-BELNR.
** ZFBDT and ZUONR added by Zubin on 16.07.2010
I_HBSID-ZFBDT = T_BSID-ZFBDT.
I_HBSID-ZUONR = T_BSID-ZUONR.
I_HBSID-GJAHR = T_BSID-GJAHR.

COLLECT I_HBSID.

CLEAR I_BSID.

ENDLOOP.
CLEAR I_BSID.
SORT T_BSID BY KUNNR ASCENDING BUDAT DESCENDING.

LOOP AT I_BSID WHERE TOTAL = '0'.


MOVE I_BSID-BUKRS TO ITAB_BSID-BUKRS.
MOVE I_BSID-KUNNR TO ITAB_BSID-KUNNR.
MOVE I_BSID-GSBER TO ITAB_BSID-GSBER.

COLLECT ITAB_BSID.
DELETE I_BSID.
CLEAR ITAB_BSID.
ENDLOOP.
CLEAR I_BSID.

LOOP AT T_BSID WHERE SHKZG = 'H'.


READ TABLE I_BSID WITH KEY KUNNR = T_BSID-KUNNR GSBER = T_BSID-GSBER.
IF SY-SUBRC = 0.
IF I_BSID-TOTAL < 0.
MOVE T_BSID TO ITAB_H.
ITAB_H-DMBTR = ITAB_H-DMBTR * -1.
APPEND ITAB_H.
ELSE.
CLEAR I_BSID.
ENDIF.
ENDIF.
ENDLOOP.

LOOP AT T_BSID WHERE SHKZG = 'S'.


READ TABLE I_BSID WITH KEY KUNNR = T_BSID-KUNNR GSBER = T_BSID-GSBER.
IF SY-SUBRC = 0.
IF I_BSID-TOTAL > 0.
MOVE T_BSID TO ITAB_S.
APPEND ITAB_S.
ELSE.
CLEAR I_BSID.
ENDIF.
ENDIF.
ENDLOOP.

***** CLEAR :
GR_0_30,GR_31_60,GR_61_90,GR_91_120,GR_121_150,GR_151_180,GR_ABOVE_180.

IF RAD1 = 'X'.
SORT ITAB_H BY KUNNR ASCENDING GSBER ASCENDING ZFBDT DESCENDING.
SORT ITAB_S BY KUNNR ASCENDING GSBER ASCENDING ZFBDT DESCENDING.
ELSE.
SORT ITAB_H BY KUNNR ASCENDING GSBER ASCENDING BUDAT DESCENDING.
SORT ITAB_S BY KUNNR ASCENDING GSBER ASCENDING BUDAT DESCENDING.
ENDIF.

*loop at I_HBSID

LOOP AT ITAB_H.
NEW_GSBER = ITAB_H-GSBER.
AT NEW KUNNR.
CLEAR : FLAG,LAST,I_BSID.
READ TABLE I_BSID WITH KEY KUNNR = ITAB_H-KUNNR GSBER = NEW_GSBER.
IF I_BSID-TOTAL < 0.
FLAG = 'X'.
***** REFVAL = I_BSID-TOTAL. "- ( I_BSID-TOT_ADJ_CR ). "29.04.2010
REFVAL = I_BSID-TOTAL - ( I_BSID-TOT_ADJ_CR ). "29.04.2010
ENDIF.
ENDAT.

IF NEW_GSBER <> OLD_GSBER.


CLEAR : REFVAL, LAST.
READ TABLE I_BSID WITH KEY KUNNR = ITAB_H-KUNNR GSBER = NEW_GSBER.
***** REFVAL = I_BSID-TOTAL. "- ( I_BSID-TOT_ADJ_CR ). "29.04.2010
REFVAL = I_BSID-TOTAL - ( I_BSID-TOT_ADJ_CR ). "29.04.2010
FLAG = 'X'.
ENDIF.

IF ( FLAG = 'X' AND LAST <> 'X' ).


ITAB_BSID-KUNNR = ITAB_H-KUNNR.
ITAB_BSID-BUKRS = ITAB_H-BUKRS.
ITAB_BSID-GSBER = ITAB_H-GSBER.
CLEAR TEM_DAY.
* TEM_DAY = BUDAT - ITAB_H-ZFBDT.

IF RAD1 = 'X'.
TEM_DAY = BUDAT - ITAB_H-ZFBDT.
ELSE.
TEM_DAY = BUDAT - ITAB_H-BUDAT.
ENDIF.

IF TEM_DAY LT DAYS1.
IF REFVAL < ITAB_H-DMBTR.
ITAB_BSID-0_30 = ITAB_H-DMBTR.
GR_0_30 = GR_0_30 + ITAB_H-DMBTR.
ELSE.
ITAB_BSID-0_30 = REFVAL.
GR_0_30 = GR_0_30 + REFVAL.
LAST = 'X'.
ENDIF.
ELSEIF TEM_DAY GE DAYS1 AND TEM_DAY LE DAYS2.
IF REFVAL < ITAB_H-DMBTR.
ITAB_BSID-0_30 = ITAB_H-DMBTR.
GR_0_30 = GR_0_30 + ITAB_H-DMBTR.
ELSE.
ITAB_BSID-0_30 = REFVAL.
GR_0_30 = GR_0_30 + REFVAL.
LAST = 'X'.
ENDIF.

ELSEIF TEM_DAY GE DAYS2 AND TEM_DAY LE DAYS3.


IF REFVAL < ITAB_H-DMBTR.
ITAB_BSID-31_60 = ITAB_H-DMBTR.
GR_31_60 = GR_31_60 + ITAB_H-DMBTR.
ELSE.
ITAB_BSID-31_60 = REFVAL.
GR_31_60 = GR_31_60 + REFVAL.
LAST = 'X'.
ENDIF.
ELSEIF TEM_DAY GE DAYS3 AND TEM_DAY LE DAYS4.
IF REFVAL < ITAB_H-DMBTR.
ITAB_BSID-61_90 = ITAB_H-DMBTR.
GR_61_90 = GR_61_90 + ITAB_H-DMBTR.
ELSE.
ITAB_BSID-61_90 = REFVAL.
GR_61_90 = GR_61_90 + REFVAL.
LAST = 'X'.
ENDIF.
ELSEIF TEM_DAY GE DAYS4 AND TEM_DAY LE DAYS5.
IF REFVAL < ITAB_H-DMBTR.
ITAB_BSID-91_120 = ITAB_H-DMBTR.
GR_91_120 = GR_91_120 + ITAB_H-DMBTR.
ELSE.
ITAB_BSID-91_120 = REFVAL.
GR_91_120 = GR_91_120 + REFVAL.
LAST = 'X'.
ENDIF.
ELSEIF TEM_DAY GE DAYS5 AND TEM_DAY LE DAYS6.
IF REFVAL < ITAB_H-DMBTR.
ITAB_BSID-121_150 = ITAB_H-DMBTR.
GR_121_150 = GR_121_150 + ITAB_H-DMBTR.
ELSE.
ITAB_BSID-121_150 = REFVAL.
GR_121_150 = GR_121_150 + REFVAL.
LAST = 'X'.
ENDIF.
ELSEIF TEM_DAY GE DAYS6 AND TEM_DAY LE DAYS7.
IF REFVAL < ITAB_H-DMBTR.
ITAB_BSID-151_180 = ITAB_H-DMBTR.
GR_151_180 = GR_151_180 + ITAB_H-DMBTR.
ELSE.
ITAB_BSID-151_180 = REFVAL.
GR_151_180 = GR_151_180 + REFVAL.
LAST = 'X'.
ENDIF.
ELSEIF TEM_DAY GT DAYS7.
IF REFVAL < ITAB_H-DMBTR.
ITAB_BSID-ABOVE_180 = ITAB_H-DMBTR.
GR_ABOVE_180 = GR_ABOVE_180 + ITAB_H-DMBTR.
ELSE.
ITAB_BSID-ABOVE_180 = REFVAL.
GR_ABOVE_180 = GR_ABOVE_180 + REFVAL.
LAST = 'X'.
ENDIF.
ENDIF.
IF LAST <> 'X'.
REFVAL = REFVAL - ITAB_H-DMBTR.
ELSE.
REFVAL = 0.
READ TABLE I_BSID WITH KEY KUNNR = ITAB_BSID-KUNNR GSBER = NEW_GSBER.
ITAB_BSID-TOTAL = I_BSID-TOTAL.
ITAB_BSID-TOT_ADJ_CR = I_BSID-TOT_ADJ_CR. "changed by kavita on 28.04.2010
ENDIF.

COLLECT ITAB_BSID.
CLEAR ITAB_BSID.

OLD_GSBER = ITAB_H-GSBER.

ENDIF.
ENDLOOP.

CLEAR : REFVAL,FLAG,NEW_GSBER,OLD_GSBER.

LOOP AT ITAB_S.
NEW_GSBER = ITAB_S-GSBER.
AT NEW KUNNR.
CLEAR : FLAG,LAST,I_BSID.
READ TABLE I_BSID WITH KEY KUNNR = ITAB_S-KUNNR GSBER = NEW_GSBER.
IF I_BSID-TOTAL > 0.
FLAG = 'X'.
REFVAL = I_BSID-TOTAL.
ENDIF.
ENDAT.
IF NEW_GSBER <> OLD_GSBER.
CLEAR : REFVAL, LAST.
READ TABLE I_BSID WITH KEY KUNNR = ITAB_S-KUNNR GSBER = NEW_GSBER.
REFVAL = I_BSID-TOTAL.
FLAG = 'X'.
ENDIF.
IF ( FLAG = 'X' AND LAST <> 'X' ).
ITAB_BSID-KUNNR = ITAB_S-KUNNR.
ITAB_BSID-BUKRS = ITAB_S-BUKRS.
ITAB_BSID-GSBER = ITAB_S-GSBER.
CLEAR TEM_DAY.
* TEM_DAY = BUDAT - ITAB_S-ZFBDT.
IF RAD1 = 'X'.
TEM_DAY = BUDAT - ITAB_S-ZFBDT.
ELSE.
TEM_DAY = BUDAT - ITAB_S-BUDAT.
ENDIF.
IF TEM_DAY LT DAYS1.
IF REFVAL > ITAB_S-DMBTR.
ITAB_BSID-0_30 = ITAB_S-DMBTR.
GR_0_30 = GR_0_30 + ITAB_S-DMBTR.
ELSE.
ITAB_BSID-0_30 = REFVAL.
GR_0_30 = GR_0_30 + REFVAL.
LAST = 'X'.
ENDIF.
ELSEIF TEM_DAY GE DAYS1 AND TEM_DAY LE DAYS2.
IF REFVAL > ITAB_S-DMBTR.
ITAB_BSID-0_30 = ITAB_S-DMBTR.
GR_0_30 = GR_0_30 + ITAB_S-DMBTR.
ELSE.
ITAB_BSID-0_30 = REFVAL.
GR_0_30 = GR_0_30 + REFVAL.
LAST = 'X'.
ENDIF.
ELSEIF TEM_DAY GE DAYS2 AND TEM_DAY LE DAYS3.
IF REFVAL > ITAB_S-DMBTR.
ITAB_BSID-31_60 = ITAB_S-DMBTR.
GR_31_60 = GR_31_60 + ITAB_S-DMBTR.
ELSE.
ITAB_BSID-31_60 = REFVAL.
GR_31_60 = GR_31_60 + REFVAL.
LAST = 'X'.
ENDIF.
ELSEIF TEM_DAY GE DAYS3 AND TEM_DAY LE DAYS4.
IF REFVAL > ITAB_S-DMBTR.
ITAB_BSID-61_90 = ITAB_S-DMBTR.
GR_61_90 = GR_61_90 + ITAB_S-DMBTR.
ELSE.
ITAB_BSID-61_90 = REFVAL.
GR_61_90 = GR_61_90 + REFVAL.
LAST = 'X'.
ENDIF.
ELSEIF TEM_DAY GE DAYS4 AND TEM_DAY LE DAYS5.
IF REFVAL > ITAB_S-DMBTR.
ITAB_BSID-91_120 = ITAB_S-DMBTR.
GR_91_120 = GR_91_120 + ITAB_S-DMBTR.
ELSE.
ITAB_BSID-91_120 = REFVAL.
GR_91_120 = GR_91_120 + REFVAL.
LAST = 'X'.
ENDIF.
ELSEIF TEM_DAY GE DAYS5 AND TEM_DAY LE DAYS6.
IF REFVAL > ITAB_S-DMBTR.
ITAB_BSID-121_150 = ITAB_S-DMBTR.
GR_121_150 = GR_121_150 + ITAB_S-DMBTR.
ELSE.
ITAB_BSID-121_150 = REFVAL.
GR_121_150 = GR_121_150 + REFVAL.
LAST = 'X'.
ENDIF.
ELSEIF TEM_DAY GE DAYS6 AND TEM_DAY LE DAYS7.
IF REFVAL > ITAB_S-DMBTR.
ITAB_BSID-151_180 = ITAB_S-DMBTR.
GR_151_180 = GR_151_180 + ITAB_S-DMBTR.
ELSE.
ITAB_BSID-151_180 = REFVAL.
GR_151_180 = GR_151_180 + REFVAL.
LAST = 'X'.
ENDIF.
ELSEIF TEM_DAY GT DAYS7.
IF REFVAL > ITAB_S-DMBTR.
ITAB_BSID-ABOVE_180 = ITAB_S-DMBTR.
GR_ABOVE_180 = GR_ABOVE_180 + ITAB_S-DMBTR.
ELSE.
ITAB_BSID-ABOVE_180 = REFVAL.
GR_ABOVE_180 = GR_ABOVE_180 + REFVAL.
LAST = 'X'.
ENDIF.
ENDIF.
IF LAST <> 'X'.
REFVAL = REFVAL - ITAB_S-DMBTR.
ELSE.
REFVAL = 0.
READ TABLE I_BSID WITH KEY KUNNR = ITAB_BSID-KUNNR GSBER = ITAB_BSID-KUNNR.
ITAB_BSID-TOTAL = I_BSID-TOTAL.
ENDIF.
COLLECT ITAB_BSID.
CLEAR ITAB_BSID.
OLD_GSBER = ITAB_S-GSBER.
ENDIF.
ENDLOOP.

SORT ITAB_BSID BY BUKRS KUNNR GSBER.


FREE CLUB_CUS.
CLUB_CUS[] = ITAB_BSID[].

SORT CLUB_CUS BY KUNNR.


DELETE ADJACENT DUPLICATES FROM CLUB_CUS COMPARING KUNNR.

FREE I_KNA1.

IF NOT CLUB_CUS[] IS INITIAL.

SELECT KUNNR NAME1 FROM KNA1 INTO TABLE I_KNA1


FOR ALL ENTRIES IN CLUB_CUS
WHERE KUNNR = CLUB_CUS-KUNNR.
SORT I_KNA1 BY KUNNR.

ENDIF.

IF NOT I_HBSID[] IS INITIAL.

SELECT * FROM BKPF INTO TABLE T_BKPF


FOR ALL ENTRIES IN I_HBSID
WHERE BUKRS = I_HBSID-BUKRS
AND BELNR = I_HBSID-BELNR.

LOOP AT T_BKPF.
READ TABLE I_HBSID WITH KEY BUKRS = T_BKPF-BUKRS BELNR = T_BKPF-BELNR GJAHR =
T_BKPF-GJAHR.
IF SY-SUBRC = 0.
* I_HBSID-XBLNR = T_BKPF-XBLNR.
I_HBSID-AWKEY = T_BKPF-AWKEY.
I_HBSID-BUDAT = T_BKPF-BUDAT.
MODIFY I_HBSID INDEX SY-TABIX.
ENDIF.
ENDLOOP.
ENDIF.

** Added by Zubin on 01.10.2010 (calculating totals as unexplainable issues


** exist in the logic for totals)
DATA ITAB_BSID_TMP LIKE ITAB_BSID.

CLEAR : GR_ADJ_CR, GR_0_30, GR_31_60, GR_61_90, GR_91_120, GR_121_150,


GR_151_180, GR_ABOVE_180,
GR_PERIOD_TOTAL.

LOOP AT ITAB_BSID.
I = SY-TABIX.

CLEAR LS_KNVV.
READ TABLE LT_KNVV INTO LS_KNVV WITH KEY KUNNR = ITAB_BSID-KUNNR BINARY SEARCH.
IF SY-SUBRC = 0.
ITAB_BSID-VKGRP = LS_KNVV-VKGRP.
ENDIF.

CLEAR : ITAB_BSID-TOT_ADJ_CR, ITAB_BSID-0_30, ITAB_BSID-31_60, ITAB_BSID-61_90,


ITAB_BSID-91_120,
ITAB_BSID-121_150, ITAB_BSID-151_180, ITAB_BSID-ABOVE_180.

ITAB_BSID_TMP = ITAB_BSID.

LOOP AT I_HBSID WHERE KUNNR = ITAB_BSID-KUNNR AND BUKRS = ITAB_BSID-BUKRS AND


GSBER = ITAB_BSID-GSBER.

ITAB_BSID-TOT_ADJ_CR = ITAB_BSID-TOT_ADJ_CR + I_HBSID-TOT_ADJ_CR.


GR_ADJ_CR = GR_ADJ_CR + I_HBSID-TOT_ADJ_CR.

IF I_HBSID-TOTAL > 0.
IF RAD1 = 'X'.
TEM_DAY = BUDAT - I_HBSID-ZFBDT.
ELSE.
TEM_DAY = BUDAT - I_HBSID-BUDAT.
ENDIF.

IF TEM_DAY LT DAYS1.
ITAB_BSID-0_30 = ITAB_BSID-0_30 + I_HBSID-0_30.
GR_0_30 = GR_0_30 + I_HBSID-0_30.
ELSEIF TEM_DAY GE DAYS1 AND TEM_DAY LE DAYS2.
ITAB_BSID-0_30 = ITAB_BSID-0_30 + I_HBSID-0_30.
GR_0_30 = GR_0_30 + I_HBSID-0_30.
ELSEIF TEM_DAY GE DAYS2 AND TEM_DAY LE DAYS3.
ITAB_BSID-31_60 = ITAB_BSID-31_60 + I_HBSID-31_60.
GR_31_60 = GR_31_60 + I_HBSID-31_60.
ELSEIF TEM_DAY GE DAYS3 AND TEM_DAY LE DAYS4.
ITAB_BSID-61_90 = ITAB_BSID-61_90 + I_HBSID-61_90.
GR_61_90 = GR_61_90 + I_HBSID-61_90.
ELSEIF TEM_DAY GE DAYS4 AND TEM_DAY LE DAYS5.
ITAB_BSID-91_120 = ITAB_BSID-91_120 + I_HBSID-91_120.
GR_91_120 = GR_91_120 + I_HBSID-91_120.
ELSEIF TEM_DAY GE DAYS5 AND TEM_DAY LE DAYS6.
ITAB_BSID-121_150 = ITAB_BSID-121_150 + I_HBSID-121_150.
GR_121_150 = GR_121_150 + I_HBSID-121_150.
ELSEIF TEM_DAY GE DAYS6 AND TEM_DAY LE DAYS7.
ITAB_BSID-151_180 = ITAB_BSID-151_180 + I_HBSID-151_180.
GR_151_180 = GR_151_180 + I_HBSID-151_180.
ELSEIF TEM_DAY GT DAYS7.
ITAB_BSID-ABOVE_180 = ITAB_BSID-ABOVE_180 + I_HBSID-ABOVE_180.
GR_ABOVE_180 = GR_ABOVE_180 + I_HBSID-ABOVE_180.
ENDIF.

I_HBSID-PERIOD_TOTAL = I_HBSID-0_30 + I_HBSID-31_60 + I_HBSID-61_90 +


I_HBSID-91_120 +
I_HBSID-121_150 + I_HBSID-151_180 + I_HBSID-
ABOVE_180.

ITAB_BSID-PERIOD_TOTAL = ITAB_BSID-0_30 + ITAB_BSID-31_60 + ITAB_BSID-61_90


+ ITAB_BSID-91_120 +
ITAB_BSID-121_150 + ITAB_BSID-151_180 + ITAB_BSID-
ABOVE_180.

MODIFY I_HBSID TRANSPORTING PERIOD_TOTAL.

MODIFY ITAB_BSID INDEX I TRANSPORTING TOT_ADJ_CR 0_30 31_60 61_90


91_120 121_150 151_180
ABOVE_180 VKGRP PERIOD_TOTAL.
ELSE.
MODIFY ITAB_BSID INDEX I TRANSPORTING TOT_ADJ_CR VKGRP PERIOD_TOTAL.
ENDIF.
ENDLOOP.

** Incase there are no line items, still we would like to update Sales Group
IF ITAB_BSID = ITAB_BSID_TMP.
MODIFY ITAB_BSID INDEX I TRANSPORTING VKGRP PERIOD_TOTAL.
ENDIF.

ENDLOOP.

SORT ITAB_BSID BY VKGRP KUNNR.

GR_PERIOD_TOTAL = GR_0_30 + GR_31_60 + GR_61_90 + GR_91_120 + GR_121_150 +


GR_151_180 + GR_ABOVE_180.

ENDFORM. " ageing_table_create

*&---------------------------------------------------------------------*
*& Form save_on_ftp
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM SAVE_ON_FTP.

WA_FTP-VKGRP = 'Sales_Area'.
WA_FTP-WRK_DELIM1 = '09'.
WA_FTP-KUNNR = 'Customer_Code'.
WA_FTP-WRK_DELIM2 = '09'.
WA_FTP-NAME = 'Customer_Name'.
WA_FTP-WRK_DELIM3 = '09'.
WA_FTP-GSBER = 'DepotCode'.
WA_FTP-WRK_DELIM4 = '09'.
WA_FTP-LW_KLIMK1 = 'Credit_Limit'.
WA_FTP-WRK_DELIM5 = '09'.
WA_FTP-LW_DBEKR1 = 'Credit_Days'.
WA_FTP-WRK_DELIM6 = '09'.
WA_FTP-TOT_ADJ_CR = 'Unadjusted'.
WA_FTP-WRK_DELIM7 = '09'.
WA_FTP-0_30 = '0_30'.
WA_FTP-WRK_DELIM8 = '09'.
WA_FTP-31_60 = '31_60'.
WA_FTP-WRK_DELIM9 = '09'.
WA_FTP-61_90 = '61_90'.
WA_FTP-WRK_DELIM10 = '09'.
WA_FTP-91_120 = '91_120'.
WA_FTP-WRK_DELIM11 = '09'.
WA_FTP-121_150 = '121_150'.
WA_FTP-WRK_DELIM12 = '09'.
WA_FTP-151_180 = '151_180'.
WA_FTP-WRK_DELIM13 = '09'.
WA_FTP-ABOVE_180 = 'Above180'.
WA_FTP-WRK_DELIM14 = '09'.
WA_FTP-TOTAL = 'Total'.

APPEND WA_FTP TO IT_FTP.


CLEAR: WA_FTP.
LOOP AT ITAB_BSID.

DATA : LW_FINAL2_TOTAL TYPE CHAR40 ,


LW_FINAL2_UNAJD TYPE CHAR40 ,
LW_FINAL2_FIELD0 TYPE CHAR40 ,
LW_FINAL2_FIELD1 TYPE CHAR40 ,
LW_FINAL2_FIELD2 TYPE CHAR40 ,
LW_FINAL2_FIELD3 TYPE CHAR40 ,
LW_FINAL2_FIELD4 TYPE CHAR40 ,
LW_FINAL2_FIELD5 TYPE CHAR40 ,
LW_FINAL2_FIELD6 TYPE CHAR40 ,
LW_FINAL2_FIELD7 TYPE CHAR40 .

CLEAR : I_KNA1 , LW_KLIMK , LW_DBEKR , LW_KONDA .


READ TABLE I_KNA1 WITH KEY KUNNR = ITAB_BSID-KUNNR
BINARY SEARCH.
SELECT KLIMK INTO LW_KLIMK FROM KNKK WHERE KUNNR = ITAB_BSID-KUNNR.
ENDSELECT.

SELECT DBEKR INTO LW_DBEKR FROM KNKK WHERE KUNNR = ITAB_BSID-KUNNR.


ENDSELECT.

SELECT KONDA INTO LW_KONDA FROM KNVV WHERE KUNNR = ITAB_BSID-KUNNR.


ENDSELECT.
* CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
* CHANGING
* VALUE = ITAB_BSID-TOT_ADJ_CR.
*
* CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
* CHANGING
* VALUE = ITAB_BSID-0_30.
*
* CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
* CHANGING
* VALUE = ITAB_BSID-31_60.
*
* CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
* CHANGING
* VALUE = ITAB_BSID-61_90.
*
* CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
* CHANGING
* VALUE = ITAB_BSID-91_120.
*
* CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
* CHANGING
* VALUE = ITAB_BSID-121_150.
*
* CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
* CHANGING
* VALUE = ITAB_BSID-151_180.
*
* CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
* CHANGING
* VALUE = ITAB_BSID-ABOVE_180.

WA_FTP-VKGRP = ITAB_BSID-VKGRP.
WA_FTP-WRK_DELIM1 = '09'.
WA_FTP-KUNNR = ITAB_BSID-KUNNR.
WA_FTP-WRK_DELIM2 = '09'.
WA_FTP-NAME = I_KNA1-NAME1.
WA_FTP-WRK_DELIM3 = '09'.
WA_FTP-GSBER = ITAB_BSID-GSBER.
WA_FTP-WRK_DELIM4 = '09'.
WA_FTP-LW_KLIMK1 = LW_KLIMK.
WA_FTP-WRK_DELIM5 = '09'.
WA_FTP-LW_DBEKR1 = LW_DBEKR.
WA_FTP-WRK_DELIM6 = '09'.
* WA_FTP-TOT_ADJ_CR = ITAB_BSID-TOT_ADJ_CR.
* WA_FTP-WRK_DELIM7 = '09'.
* WA_FTP-0_30 = ITAB_BSID-0_30.
* WA_FTP-WRK_DELIM8 = '09'.
* WA_FTP-31_60 = ITAB_BSID-31_60.
* WA_FTP-WRK_DELIM9 = '09'.
* WA_FTP-61_90 = ITAB_BSID-61_90.
* WA_FTP-WRK_DELIM10 = '09'.
* WA_FTP-91_120 = ITAB_BSID-91_120.
* WA_FTP-WRK_DELIM11 = '09'.
* WA_FTP-121_150 = ITAB_BSID-121_150.
* WA_FTP-WRK_DELIM12 = '09'.
* WA_FTP-151_180 = ITAB_BSID-151_180.
* WA_FTP-WRK_DELIM13 = '09'.
* WA_FTP-ABOVE_180 = ITAB_BSID-ABOVE_180.
* WA_FTP-WRK_DELIM14 = '09'.
* WA_FTP-TOTAL = ITAB_BSID-TOTAL.

* LW_FINAL2_PRE_TOTAL TYPE CHAR40 .

WRITE ITAB_BSID-TOTAL TO LW_FINAL2_TOTAL.


CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
CHANGING
VALUE = LW_FINAL2_TOTAL.
WA_FTP-TOTAL = LW_FINAL2_TOTAL.

WRITE ITAB_BSID-ABOVE_180 TO LW_FINAL2_FIELD7.


CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
CHANGING
VALUE = LW_FINAL2_FIELD7.
WA_FTP-ABOVE_180 = LW_FINAL2_FIELD7.
WA_FTP-WRK_DELIM14 = '09'.

WRITE ITAB_BSID-121_150 TO LW_FINAL2_FIELD6.


CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
CHANGING
VALUE = LW_FINAL2_FIELD6.
WA_FTP-121_150 = LW_FINAL2_FIELD6.
WA_FTP-WRK_DELIM12 = '09'.

WRITE ITAB_BSID-91_120 TO LW_FINAL2_FIELD5.


CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
CHANGING
VALUE = LW_FINAL2_FIELD5.
WA_FTP-91_120 = LW_FINAL2_FIELD5.
WA_FTP-WRK_DELIM11 = '09'.

WRITE ITAB_BSID-61_90 TO LW_FINAL2_FIELD4.


CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
CHANGING
VALUE = LW_FINAL2_FIELD4.
WA_FTP-61_90 = LW_FINAL2_FIELD4.
WA_FTP-WRK_DELIM10 = '09'.

WRITE ITAB_BSID-31_60 TO LW_FINAL2_FIELD3.


CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
CHANGING
VALUE = LW_FINAL2_FIELD3.
WA_FTP-31_60 = LW_FINAL2_FIELD3.
WA_FTP-WRK_DELIM9 = '09'.

WRITE ITAB_BSID-0_30 TO LW_FINAL2_FIELD2.


CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
CHANGING
VALUE = LW_FINAL2_FIELD2.
WA_FTP-0_30 = LW_FINAL2_FIELD2.
WA_FTP-WRK_DELIM8 = '09'.

WRITE ITAB_BSID-TOT_ADJ_CR TO LW_FINAL2_FIELD1.


CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
CHANGING
VALUE = LW_FINAL2_FIELD1.
WA_FTP-TOT_ADJ_CR = LW_FINAL2_FIELD1.
WA_FTP-WRK_DELIM7 = '09'.

WRITE ITAB_BSID-151_180 TO LW_FINAL2_FIELD0.


CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
CHANGING
VALUE = LW_FINAL2_FIELD0.
WA_FTP-151_180 = LW_FINAL2_FIELD0.
WA_FTP-WRK_DELIM13 = '09'.

APPEND WA_FTP TO IT_FTP.


CLEAR: WA_FTP.
ENDLOOP.

DATA: WRK_FILE TYPE CHAR200.


CONCATENATE 'SAPFTP\Corporate\' SY-MANDT '_1_' SY-DATUM '_' SY-UZEIT
'_FICUSTOMER_AGE.xls' INTO
WRK_FILE.
* CONCATENATE 'SAPFTP\Projects\Common Reports\zficustage\' SY-MANDT '_1_' SY-DATUM
'_' SY-UZEIT '_FICUSTOMER_AGE.xls' INTO
* WRK_FILE.

DATA: L_USER(30) TYPE C VALUE 'ftplogin', "user name of ftp server


L_PWD(30) TYPE C VALUE 'spl456', "password of ftp server
L_HOST(64) TYPE C VALUE 'ftp.shalimarpaints.in', "ip address of FTP
server
L_DEST LIKE RFCDES-RFCDEST VALUE 'SAPFTPA'."Background RFC destination
DATA: W_HDL TYPE I,
C_KEY TYPE I VALUE 26101957,
L_SLEN TYPE I.

SET EXTENDED CHECK OFF.


L_SLEN = STRLEN( L_PWD ).
CALL FUNCTION 'HTTP_SCRAMBLE'
EXPORTING
SOURCE = L_PWD
SOURCELEN = L_SLEN
KEY = C_KEY
IMPORTING
DESTINATION = L_PWD.
* To Connect to the Server using FTP
CALL FUNCTION 'FTP_CONNECT'
EXPORTING
USER = L_USER
PASSWORD = L_PWD
HOST = L_HOST
RFC_DESTINATION = L_DEST
IMPORTING
HANDLE = W_HDL
EXCEPTIONS
OTHERS = 1.

*FTP_R3_TO_SERVER:used to transfer the internal table data as a file to other


system in the character mode.
CALL FUNCTION 'FTP_R3_TO_SERVER'
EXPORTING
HANDLE = W_HDL
FNAME = WRK_FILE "file path of destination system
CHARACTER_MODE = 'C'
TABLES
TEXT = IT_FTP
EXCEPTIONS
TCPIP_ERROR = 1
COMMAND_ERROR = 2
DATA_ERROR = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4
RAISING INVALID_OUTPUT_FILE.
ENDIF.
*FTP_DISCONNECT: This is used to disconnect the connection between SAP and other
system.
* To disconnect the FTP
CALL FUNCTION 'FTP_DISCONNECT'
EXPORTING
HANDLE = W_HDL.
*RFC_CONNECTION_CLOSE:This is used to disconnect the RFC connection between SAP and
other system.
CALL FUNCTION 'RFC_CONNECTION_CLOSE'
EXPORTING
DESTINATION = L_DEST
EXCEPTIONS
OTHERS = 1.

ENDFORM. "save_on_ftp

You might also like