hi experts,
i have made one report,but wen i execute this report for a full fiscal year n for all customers then it gives an runtime error of LOW MEMORY SPACE.plz tell how cud i recover from this error.m sendin u code of my report.plz do the needful.
&----
*& Report ZCUSTOMER_BAL
*&
&----
*&
*&
&----
REPORT ZCUSTOMER_BAL.
TYPE-POOLS : SLIS .
*Table Decleration.
TABLES : BSID,KNA1,T001,BKPF,TVZBT,TVFKT,VBRK,ADRC,T005T,VBRP,BSAD,T171T,KNVP.
*Input Parameter Decleration for selection
SELECTION-SCREEN: BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETERS : P_BUKRS LIKE BSID-BUKRS OBLIGATORY DEFAULT 'CP01'.
SELECT-OPTIONS : S_DATE FOR BKPF-BUDAT NO-EXTENSION.
SELECTION-SCREEN: END OF BLOCK B1 .
SELECTION-SCREEN: BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-002.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETER : CHECK1 RADIOBUTTON GROUP RAD1 DEFAULT 'X' USER-COMMAND ABC.
SELECTION-SCREEN COMMENT 3(16) TEXT-003.
SELECT-OPTIONS : S_KUNNR FOR BSAD-KUNNR MODIF ID CU .
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETER :CHECK5 RADIOBUTTON GROUP RAD1.
SELECTION-SCREEN COMMENT 3(16) TEXT-004.
SELECT-OPTIONS : REGIO FOR T171T-BZIRK MODIF ID RE.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETER : CHECK3 RADIOBUTTON GROUP RAD1.
SELECTION-SCREEN COMMENT 3(16) TEXT-005.
SELECT-OPTIONS : KUNNSO FOR KNA1-KUNNR MODIF ID SO.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETER : CHECK4 RADIOBUTTON GROUP RAD1 .
SELECTION-SCREEN COMMENT 3(16) TEXT-006.
SELECT-OPTIONS : KUNNAM FOR KNA1-KUNNR MODIF ID AM.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETER : CHECK2 RADIOBUTTON GROUP RAD1.
SELECTION-SCREEN COMMENT 3(16) TEXT-007.
SELECT-OPTIONS : KUNNRM FOR KNA1-KUNNR MODIF ID RM.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN: END OF BLOCK B2 .
IF CHECK2 = 'X' OR CHECK3 = 'X' OR CHECK4 = 'X'.
MESSAGE I008(ZMSG).
EXIT.
ENDIF.
Internal Table TOP-OF-PAGE commentary
DATA: IT_COMMENTARY TYPE SLIS_T_LISTHEADER.
Work Area TOP-OF-PAGE commentary
DATA: WA_COMMENTARY TYPE SLIS_LISTHEADER.
data :gd_repid like sy-repid.
gd_repid = sy-repid.
DATA: IT_FCAT TYPE SLIS_T_FIELDCAT_ALV.
DATA : WA_FCAT TYPE SLIS_FIELDCAT_ALV,WBUKRS LIKE BSID-BUKRS,
WBELNR LIKE BKPF-BELNR,
WBUDAT LIKE BKPF-BUDAT.
.
DATA: BEGIN OF ITAB_BSID OCCURS 0,
KUNNR LIKE BSID-KUNNR,
BUKRS LIKE BSID-BUKRS,
BELNR LIKE BSID-BELNR,
GJAHR LIKE BSID-GJAHR,
BUZEI LIKE BSID-BUZEI,
SHKZG LIKE BSID-SHKZG,
VALUT LIKE BSID-ZFBDT,
SGTXT LIKE BSID-SGTXT,
ZFBDT LIKE BSID-ZFBDT,
ZUONR LIKE BSID-ZUONR,
DMBTR LIKE BSID-DMBTR,
PSWSL LIKE BSID-PSWSL,
ZTERM LIKE BSID-ZTERM,
VBELN LIKE BSID-VBELN,
VTEXT LIKE TVZBT-VTEXT,
VTEXT1 LIKE TVFKT-VTEXT,
NAME1 LIKE LFA1-NAME1,
BUDAT LIKE BKPF-BUDAT,
D_DMBTR LIKE BSID-DMBTR,
S_DMBTR LIKE BSID-DMBTR,
VORGN LIKE BSEG-VORGN,
WERKS LIKE BSEG-WERKS,
NAMESO LIKE KNA1-NAME1,
NAMEAM LIKE KNA1-NAME1,
NAMERM LIKE KNA1-NAME1,
END OF ITAB_BSID.
DATA: BEGIN OF ITAB_BSAD OCCURS 0,
KUNNR LIKE BSAD-KUNNR,
BUKRS LIKE BSAD-BUKRS,
BELNR LIKE BSAD-BELNR,
GJAHR LIKE BSAD-GJAHR,
BUZEI LIKE BSAD-BUZEI,
SHKZG LIKE BSAD-SHKZG,
VALUT LIKE BSAD-ZFBDT,
SGTXT LIKE BSAD-SGTXT,
ZFBDT LIKE BSAD-ZFBDT,
ZUONR LIKE BSAD-ZUONR,
DMBTR LIKE BSAD-DMBTR,
PSWSL LIKE BSAD-PSWSL,
ZTERM LIKE BSAD-ZTERM,
VBELN LIKE BSAD-VBELN,
VTEXT LIKE TVZBT-VTEXT,
VTEXT1 LIKE TVFKT-VTEXT,
NAME1 LIKE LFA1-NAME1,
BUDAT LIKE BKPF-BUDAT,
D_DMBTR LIKE BSAD-DMBTR,
S_DMBTR LIKE BSAD-DMBTR,
VORGN LIKE BSEG-VORGN,
WERKS LIKE BSEG-WERKS,
NAMESO LIKE KNA1-NAME1,
NAMEAM LIKE KNA1-NAME1,
NAMERM LIKE KNA1-NAME1,
END OF ITAB_BSAD.
DATA: BEGIN OF ITAB OCCURS 0,
KUNNR LIKE BSID-KUNNR,
BELNR LIKE BSID-BELNR,
BUKRS LIKE BSID-BUKRS,
GJAHR LIKE BSID-GJAHR,
BUZEI LIKE BSID-BUZEI,
SHKZG LIKE BSID-SHKZG,
VALUT LIKE BSID-ZFBDT,
SGTXT(70) TYPE C,
ZFBDT LIKE BSID-ZFBDT,
ZUONR LIKE BSID-ZUONR,
DMBTR LIKE BSID-DMBTR,
PSWSL LIKE BSID-PSWSL,
ZTERM LIKE BSID-ZTERM,
VBELN LIKE BSID-VBELN,
VTEXT LIKE TVZBT-VTEXT,
VTEXT1(70) TYPE C,
NAME1 LIKE LFA1-NAME1,
BUDAT LIKE BKPF-BUDAT,
D_DMBTR LIKE BSID-DMBTR,
S_DMBTR LIKE BSID-DMBTR,
VORGN LIKE BSEG-VORGN,
WERKS LIKE BSEG-WERKS,
NAMESO LIKE KNA1-NAME1,
NAMEAM LIKE KNA1-NAME1,
NAMERM LIKE KNA1-NAME1,
END OF ITAB.
DATA: BEGIN OF FC OCCURS 0,
BELNR LIKE BSID-BELNR,
KUNNR LIKE BSID-KUNNR,
BUKRS LIKE BSID-BUKRS,
GJAHR LIKE BSID-GJAHR,
BUZEI LIKE BSID-BUZEI,
SHKZG LIKE BSID-SHKZG,
VALUT LIKE BSID-ZFBDT,
SGTXT(70) TYPE C,
ZFBDT LIKE BSID-ZFBDT,
ZUONR LIKE BSID-ZUONR,
DMBTR LIKE BSID-DMBTR,
PSWSL LIKE BSID-PSWSL,
ZTERM LIKE BSID-ZTERM,
VBELN LIKE BSID-VBELN,
VTEXT LIKE TVZBT-VTEXT,
VTEXT1(70) TYPE C,
NAME1 LIKE LFA1-NAME1,
BUDAT LIKE BKPF-BUDAT,
D_DMBTR LIKE BSID-DMBTR,
S_DMBTR LIKE BSID-DMBTR,
VORGN LIKE BSEG-VORGN,
WERKS LIKE BSEG-WERKS,
NAMESO LIKE KNA1-NAME1,
NAMEAM LIKE KNA1-NAME1,
NAMERM LIKE KNA1-NAME1,
END OF FC.
DATA: BEGIN OF ITABO OCCURS 0,
KUNNR LIKE BSID-KUNNR,
BELNR LIKE BSID-BELNR,
SHKZG LIKE BSID-SHKZG,
DMBTR LIKE BSID-DMBTR,
D_DMBTR LIKE BSID-DMBTR,
S_DMBTR LIKE BSID-DMBTR,
END OF ITABO.
DATA: BEGIN OF ITABF OCCURS 0,
KUNNR LIKE BSID-KUNNR,
BELNR LIKE BSID-BELNR,
SHKZG LIKE BSID-SHKZG,
DMBTR LIKE BSID-DMBTR,
D_DMBTR LIKE BSID-DMBTR,
S_DMBTR LIKE BSID-DMBTR,
END OF ITABF.
DATA: BEGIN OF KUNNSO_ITAB OCCURS 0,
KUNN2 LIKE KNA1-KUNNR,
NAME1 LIKE KNA1-NAME1,
END OF KUNNSO_ITAB.
DATA : BEGIN OF CUSTOMER OCCURS 0,
KUNNR LIKE KNA1-KUNNR,
NAME1 LIKE KNA1-NAME1,
KUNN2 LIKE KNVP-KUNN2,
NAMESO LIKE KNA1-NAME1,
NAMEAM LIKE KNA1-NAME1,
NAMERM LIKE KNA1-NAME1,
END OF CUSTOMER.
DATA : BEGIN OF IT_NAME OCCURS 0,
KUNNR LIKE KNA1-KUNNR,
NAMESO LIKE KNA1-NAME1,
NAMEAM LIKE KNA1-NAME1,
NAMERM LIKE KNA1-NAME1,
END OF IT_NAME.
DATA: BEGIN OF ITABO_BSID OCCURS 0,
KUNNR LIKE BSID-KUNNR,
BELNR LIKE BSID-BELNR,
SHKZG LIKE BSID-SHKZG,
DMBTR LIKE BSID-DMBTR,
D_DMBTR LIKE BSID-DMBTR,
S_DMBTR LIKE BSID-DMBTR,
END OF ITABO_BSID.
DATA: BEGIN OF ITABO_BSAD OCCURS 0,
KUNNR LIKE BSID-KUNNR,
BELNR LIKE BSID-BELNR,
SHKZG LIKE BSID-SHKZG,
DMBTR LIKE BSID-DMBTR,
D_DMBTR LIKE BSID-DMBTR,
S_DMBTR LIKE BSID-DMBTR,
END OF ITABO_BSAD.
DATA : BEGIN OF FINAL OCCURS 0,
DMBTR LIKE BSID-DMBTR,
KUNNR LIKE BSID-KUNNR,
KOART LIKE BSID-KOART,
SHKZG LIKE BSID-SHKZG,
BLDAT LIKE BKPF-BLDAT,
NAME LIKE KNA1-NAME1,
ORT01 LIKE KNA1-ORT01,
OPEN LIKE BSID-DMBTR,
CR_DR1(4) TYPE C,
CREDIT LIKE BSID-DMBTR,
DEBIT LIKE BSID-DMBTR,
AMOUNT LIKE BSID-DMBTR,
CR_DR(4) TYPE C,
NAMESO LIKE KNA1-NAME1,
NAMEAM LIKE KNA1-NAME1,
NAMERM LIKE KNA1-NAME1,
END OF FINAL.
CONSTANTS : C_D VALUE 'D',
C_F VALUE 'F',
C_H VALUE 'H'.
DATA : BEGIN OF ITAB_DET OCCURS 0,
MATNR LIKE VBRP-MATNR,
ARKTX LIKE VBRP-ARKTX,
FKIMG LIKE VBRP-FKIMG,
NETWR LIKE VBRP-NETWR,
END OF ITAB_DET.
RANGE DECLARATION **********
RANGES: R_BELNR FOR BKPF-BELNR,
R_BUZEI FOR BSID-BUZEI.
**************************************
*Data Decleration
DATA : TOTAL LIKE BSID-DMBTR,
TOTAL1 LIKE BSID-DMBTR,
TOTAL_F LIKE BSID-DMBTR,
TOTAL_FN LIKE BSID-DMBTR,
TOTAL_D LIKE BSID-DMBTR,
TOTAL_DF LIKE BSID-DMBTR,
TOTAL_S LIKE BSID-DMBTR,
TOTAL_SF LIKE BSID-DMBTR,
AUGRU LIKE VBAK-AUGRU,
VVORGN LIKE BSEG-VORGN,
VBELNR LIKE BSID-BELNR,
VKOART LIKE BSEG-KOART,
VKUNNR LIKE BSID-KUNNR,
VBUZEI LIKE BSID-BUZEI,
VTEXT1 LIKE BSID-SGTXT,
VTEXT2 LIKE BSID-SGTXT,
VTEXT3 LIKE BSID-SGTXT,
VTEXT4 LIKE BSID-SGTXT,
VTEXT TYPE C LENGTH 70,
VVBTYP LIKE VBRK-VBTYP,
VFKART LIKE VBRK-FKART,
F_YEAR(4) TYPE C,
DR_CR(2) TYPE C,
DR_CRO(2) TYPE C,
CLBAL LIKE BSID-DMBTR,
TOTAL_FO LIKE BSID-DMBTR,
N(2) TYPE C VALUE 1,
POS LIKE SY-TABIX,
CVAL LIKE BSID-DMBTR,
DVAL LIKE BSID-DMBTR,
VAL LIKE BSID-DMBTR,
DATE LIKE BKPF-BUDAT,
VBELNR_O LIKE BSID-BELNR,
POS_O LIKE SY-TABIX,
CVAL_O LIKE BSID-DMBTR,
DVAL_O LIKE BSID-DMBTR,
VAL_O LIKE BSID-DMBTR,
FVAL LIKE BSID-DMBTR,
FVAL_O LIKE BSID-DMBTR,
FINAL_OP LIKE BSID-DMBTR,
FINAL_CLO LIKE BSID-DMBTR,
DATE_O LIKE BKPF-BUDAT,
VBELN LIKE VBAK-VBELN,
BEZEI LIKE TVAUT-BEZEI,
WNAME1 LIKE KNA1-NAME1,
LOVE LIKE BSID-DMBTR,
CITY LIKE KNA1-ORT01,
KUNN2 LIKE KNA1-KUNNR.
.
DATA : EYEAR LIKE BKPF-GJAHR,DEL LIKE SY-SUBRC..
*CONSTANTS : C_F VALUE 'F'.
DATA : PAGENO LIKE SY-PAGNO.
AT SELECTION-SCREEN ON S_DATE.
IF S_DATE-LOW IS INITIAL.
MESSAGE E002(Z2) WITH 'Please Enter Posting Start Date'.
ENDIF.
IF S_DATE-HIGH IS INITIAL.
MESSAGE E002(Z2) WITH 'Please Enter Posting End Date'.
ENDIF.
AT SELECTION-SCREEN ON P_BUKRS.
SELECT SINGLE BUKRS FROM T001 INTO T001 WHERE
BUKRS = P_BUKRS.
IF SY-SUBRC NE 0.
MESSAGE E038(ZI) WITH P_BUKRS.
ENDIF.
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF CHECK1 = 'X'.
IF SCREEN-GROUP1 = 'RE' OR SCREEN-GROUP1 = 'SO' OR SCREEN-GROUP1 = 'AM' OR SCREEN-GROUP1 = 'RM'.
SCREEN-INPUT = 0.
ENDIF.
IF SCREEN-GROUP1 = 'CU'.
FREE: KUNNRM, REGIO, KUNNAM, KUNNSO .
SCREEN-INPUT = 1.
ENDIF.
ELSEIF CHECK5 = 'X'.
IF SCREEN-GROUP1 = 'CU' OR SCREEN-GROUP1 = 'SO' OR SCREEN-GROUP1 = 'AM' OR SCREEN-GROUP1 = 'RM'.
SCREEN-INPUT = 0.
ENDIF.
IF SCREEN-GROUP1 = 'RE'.
FREE: KUNNRM, S_KUNNR, KUNNAM, KUNNSO .
SCREEN-INPUT = 1.
ENDIF.
ELSEIF CHECK3 = 'X'.
IF SCREEN-GROUP1 = 'RE' OR SCREEN-GROUP1 = 'CU' OR SCREEN-GROUP1 = 'AM' OR SCREEN-GROUP1 = 'RM'..
SCREEN-INPUT = 0.
ENDIF.
IF SCREEN-GROUP1 = 'SO'.
FREE: S_KUNNR , REGIO , KUNNAM , KUNNRM .
SCREEN-INPUT = 1.
ENDIF.
ELSEIF CHECK4 = 'X'.
IF SCREEN-GROUP1 = 'RE' OR SCREEN-GROUP1 = 'CU' OR SCREEN-GROUP1 = 'SO' OR SCREEN-GROUP1 = 'RM'..
SCREEN-INPUT = 0.
ENDIF.
IF SCREEN-GROUP1 = 'AM'.
FREE: S_KUNNR , REGIO , KUNNRM , KUNNSO .
SCREEN-INPUT = 1.
ENDIF.
ELSEIF CHECK2 = 'X'.
IF SCREEN-GROUP1 = 'RE' OR SCREEN-GROUP1 = 'CU' OR SCREEN-GROUP1 = 'SO' OR SCREEN-GROUP1 = 'AM'..
SCREEN-INPUT = 0.
ENDIF.
IF SCREEN-GROUP1 = 'RM'.
FREE: S_KUNNR , REGIO , KUNNAM , KUNNSO .
SCREEN-INPUT = 1.
ENDIF.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
*******************SEARCH HELP ON SALE OFFICER*****************************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR KUNNSO-LOW.
FREE KUNNSO_ITAB.
SELECT * INTO CORRESPONDING FIELDS OF TABLE KUNNSO_ITAB
FROM KNA1 AS A INNER JOIN KNVP AS B ON A~KUNNR = B~KUNN2
WHERE
B~KUNN2 IN KUNNSO
AND
PARVW = 'ZA'.
DELETE ADJACENT DUPLICATES FROM KUNNSO_ITAB.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'KUNN2'
DYNPPROG = SY-REPID
DYNPNR = SY-DYNNR
DYNPROFIELD = 'KUNNSO'
VALUE_ORG = 'S'
TABLES
VALUE_TAB = KUNNSO_ITAB.
IF SY-SUBRC <> 0.
ENDIF.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR KUNNSO-HIGH.
FREE KUNNSO_ITAB.
SELECT * INTO CORRESPONDING FIELDS OF TABLE KUNNSO_ITAB
FROM KNA1 AS A INNER JOIN KNVP AS B ON AKUNNR = BKUNN2
WHERE
B~KUNN2 IN KUNNSO
AND
PARVW = 'ZA'.
DELETE ADJACENT DUPLICATES FROM KUNNSO_ITAB.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'KUNN2'
DYNPPROG = SY-REPID
DYNPNR = SY-DYNNR
DYNPROFIELD = 'KUNNSO'
VALUE_ORG = 'S'
TABLES
VALUE_TAB = KUNNSO_ITAB.
IF SY-SUBRC <> 0.
ENDIF.
*******************SEARCH HELP ON AREA MANAGER*****************************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR KUNNAM-LOW.
FREE KUNNSO_ITAB.
SELECT * INTO CORRESPONDING FIELDS OF TABLE KUNNSO_ITAB
FROM KNA1 AS A INNER JOIN KNVP AS B ON A~KUNNR = B~KUNN2
WHERE
PARVW = 'ZB'.
DELETE ADJACENT DUPLICATES FROM KUNNSO_ITAB.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'KUNN2'
DYNPPROG = SY-REPID
DYNPNR = SY-DYNNR
DYNPROFIELD = 'KUNNAM'
VALUE_ORG = 'S'
TABLES
VALUE_TAB = KUNNSO_ITAB.
IF SY-SUBRC <> 0.
ENDIF.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR KUNNAM-HIGH.
FREE KUNNSO_ITAB.
SELECT * INTO CORRESPONDING FIELDS OF TABLE KUNNSO_ITAB
FROM KNA1 AS A INNER JOIN KNVP AS B ON AKUNNR = BKUNN2
WHERE
PARVW = 'ZB'.
DELETE ADJACENT DUPLICATES FROM KUNNSO_ITAB.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'KUNN2'
DYNPPROG = SY-REPID
DYNPNR = SY-DYNNR
DYNPROFIELD = 'KUNNAM'
VALUE_ORG = 'S'
TABLES
VALUE_TAB = KUNNSO_ITAB.
IF SY-SUBRC <> 0.
ENDIF.
*******************SEARCH HELP ON REGIONAL MANAGER*****************************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR KUNNRM-LOW.
FREE KUNNSO_ITAB.
SELECT * INTO CORRESPONDING FIELDS OF TABLE KUNNSO_ITAB
FROM KNA1 AS A INNER JOIN KNVP AS B ON A~KUNNR = B~KUNN2
WHERE
PARVW = 'ZC'.
DELETE ADJACENT DUPLICATES FROM KUNNSO_ITAB.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'KUNN2'
DYNPPROG = SY-REPID
DYNPNR = SY-DYNNR
DYNPROFIELD = 'KUNNRM'
VALUE_ORG = 'S'
TABLES
VALUE_TAB = KUNNSO_ITAB.
IF SY-SUBRC <> 0.
ENDIF.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR KUNNRM-HIGH.
FREE KUNNSO_ITAB.
SELECT * INTO CORRESPONDING FIELDS OF TABLE KUNNSO_ITAB
FROM KNA1 AS A INNER JOIN KNVP AS B ON AKUNNR = BKUNN2
WHERE
PARVW = 'ZC'.
DELETE ADJACENT DUPLICATES FROM KUNNSO_ITAB.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'KUNN2'
DYNPPROG = SY-REPID
DYNPNR = SY-DYNNR
DYNPROFIELD = 'KUNNAM'
VALUE_ORG = 'S'
TABLES
VALUE_TAB = KUNNSO_ITAB.
IF SY-SUBRC <> 0.
ENDIF.
INITIALIZATION.
DATA : YEAR TYPE GJAHR,
YEAR1 TYPE GJAHR.
CALL FUNCTION 'FTI_FISCAL_YEAR_MONTH_GET'
EXPORTING
I_BUKRS = 'CP01'
I_BUDAT = SY-DATUM
IMPORTING
E_GJAHR = YEAR.
CONCATENATE YEAR '04' '01' INTO S_DATE-LOW.
S_DATE-HIGH = SY-DATUM.
S_DATE-SIGN = 'I'.
S_DATE-OPTION = 'BT'.
APPEND S_DATE.
START-OF-SELECTION.
PERFORM GET_DATA.
PERFORM OUTPUT.
END-OF-SELECTION.
&----
*& Form GET_DATA
&----
text
----
FORM GET_DATA .
IF CHECK1 = 'X'.
SELECT KUNNR INTO CORRESPONDING FIELDS OF TABLE CUSTOMER
FROM KNA1 WHERE KUNNR IN S_KUNNR.
CLEAR DEL.
DEL = SY-SUBRC .
DELETE ADJACENT DUPLICATES FROM CUSTOMER.
IF DEL = 0.
LOOP AT CUSTOMER.
SELECT SINGLE ANAME1 INTO CUSTOMER-NAMESO FROM KNA1 AS A INNER JOIN KNVP AS B ON AKUNNR = B~KUNN2
WHERE BKUNNR = CUSTOMER-KUNNR AND BPARVW = 'ZA'.
SELECT SINGLE ANAME1 INTO CUSTOMER-NAMEAM FROM KNA1 AS A INNER JOIN KNVP AS B ON AKUNNR = B~KUNN2
WHERE BKUNNR = CUSTOMER-KUNNR AND BPARVW = 'ZB'.
SELECT SINGLE ANAME1 INTO CUSTOMER-NAMERM FROM KNA1 AS A INNER JOIN KNVP AS B ON AKUNNR = B~KUNN2
WHERE BKUNNR = CUSTOMER-KUNNR AND BPARVW = 'ZC'.
MODIFY CUSTOMER INDEX SY-TABIX.
CLEAR CUSTOMER.
ENDLOOP.
SELECT ABELNR ABUDAT AGJAHR BKUNNR BSHKZG BDMBTR INTO CORRESPONDING FIELDS OF TABLE ITABO_BSID
FROM BKPF AS A INNER JOIN BSID AS B ON ABELNR = BBELNR AND AGJAHR EQ BGJAHR
AND AMANDT = BMANDT AND ABUKRS = BBUKRS
WHERE A~BUDAT < S_DATE-LOW
AND A~BUKRS EQ P_BUKRS
AND ( BUMSKZ EQ SPACE OR BUMSKZ EQ 'A')
AND B~ZUMSK EQ SPACE
AND B~KUNNR IN S_KUNNR .
SELECT ABELNR ABUDAT AGJAHR BKUNNR BSHKZG BDMBTR INTO CORRESPONDING FIELDS OF TABLE ITABO_BSAD
FROM BKPF AS A INNER JOIN BSAD AS B ON ABELNR = BBELNR
AND AGJAHR EQ BGJAHR
AND AMANDT = BMANDT AND ABUKRS = BBUKRS
WHERE A~BUDAT < S_DATE-LOW
AND A~BUKRS EQ P_BUKRS
AND ( BUMSKZ EQ SPACE OR BUMSKZ EQ 'A')
AND B~ZUMSK EQ SPACE
AND B~KUNNR IN S_KUNNR .
LOOP AT CUSTOMER.
SELECT ABELNR ABUDAT AGJAHR BKUNNR BBUZEI BSHKZG BSGTXT BZFBDT BZUONR BDMBTR BPSWSL BZTERM B~VBELN
INTO CORRESPONDING FIELDS OF ITAB_BSID
FROM BKPF AS A INNER JOIN BSID AS B ON ABELNR = BBELNR AND AGJAHR EQ BGJAHR
AND AMANDT = BMANDT AND ABUKRS = BBUKRS
FOR ALL ENTRIES IN CUSTOMER
WHERE A~BUDAT IN S_DATE
AND A~BUKRS EQ P_BUKRS
AND ( BUMSKZ EQ SPACE OR BUMSKZ EQ 'A')
AND B~KUNNR IN S_KUNNR.
AND B~KUNNR = CUSTOMER-KUNNR.
ITAB_BSID-NAMESO = CUSTOMER-NAMESO.
ITAB_BSID-NAMEAM = CUSTOMER-NAMEAM.
ITAB_BSID-NAMERM = CUSTOMER-NAMERM.
APPEND ITAB_BSID.
CLEAR ITAB_BSID.
ENDSELECT.
SELECT ABELNR ABUDAT AGJAHR BKUNNR BBUZEI BSHKZG BSGTXT BZFBDT BZUONR BDMBTR BPSWSL BZTERM B~VBELN
INTO CORRESPONDING FIELDS OF ITAB_BSAD
FROM BKPF AS A INNER JOIN BSAD AS B ON ABELNR = BBELNR AND AGJAHR EQ BGJAHR
AND AMANDT = BMANDT AND ABUKRS = BBUKRS
WHERE A~BUDAT IN S_DATE
AND A~BUKRS EQ P_BUKRS
AND ( BUMSKZ EQ SPACE OR BUMSKZ EQ 'A')
AND B~ZUMSK EQ SPACE
AND B~KUNNR IN S_KUNNR.
AND B~KUNNR = CUSTOMER-KUNNR.
ITAB_BSAD-NAMESO = CUSTOMER-NAMESO.
ITAB_BSAD-NAMEAM = CUSTOMER-NAMEAM.
ITAB_BSAD-NAMERM = CUSTOMER-NAMERM.
APPEND ITAB_BSAD.
CLEAR ITAB_BSAD.
ENDSELECT.
ENDLOOP.
ENDIF.
ELSEIF CHECK5 = 'X'.
FREE CUSTOMER.
SELECT * INTO CORRESPONDING FIELDS OF TABLE CUSTOMER
FROM KNA1 AS A INNER JOIN KNVP AS B ON AKUNNR = BKUNN2
WHERE A~REGIO IN REGIO.
SELECT KUNNR INTO CORRESPONDING FIELDS OF TABLE CUSTOMER FROM KNA1 WHERE REGIO IN REGIO.
CLEAR DEL.
DEL = SY-SUBRC .
DELETE ADJACENT DUPLICATES FROM CUSTOMER.
IF DEL = 0.
LOOP AT CUSTOMER.
SELECT SINGLE ANAME1 BKUNNR INTO (IT_NAME-NAMESO, IT_NAME-KUNNR) FROM KNA1 AS A INNER JOIN KNVP AS B ON AKUNNR = BKUNN2
WHERE BKUNNR = CUSTOMER-KUNNR AND BKUNN2 = CUSTOMER-KUNN2 AND B~PARVW = 'ZA'.
SELECT SINGLE ANAME1 INTO CUSTOMER-NAMESO FROM KNA1 AS A INNER JOIN KNVP AS B ON AKUNNR = B~KUNN2
WHERE BKUNNR = CUSTOMER-KUNNR AND BPARVW = 'ZA'.
SELECT SINGLE ANAME1 INTO CUSTOMER-NAMEAM FROM KNA1 AS A INNER JOIN KNVP AS B ON AKUNNR = B~KUNN2
WHERE BKUNNR = CUSTOMER-KUNNR AND BPARVW = 'ZB'.
SELECT SINGLE ANAME1 INTO CUSTOMER-NAMERM FROM KNA1 AS A INNER JOIN KNVP AS B ON AKUNNR = B~KUNN2
WHERE BKUNNR = CUSTOMER-KUNNR AND BPARVW = 'ZC'.
MODIFY CUSTOMER INDEX SY-TABIX.
CLEAR CUSTOMER.
ENDLOOP.
SELECT ABELNR ABUDAT AGJAHR BKUNNR BBUZEI BSHKZG BSGTXT BBLDAT BZUONR BDMBTR BPSWSL BZTERM B~VBELN
INTO CORRESPONDING FIELDS OF TABLE ITABO_BSID
FROM BKPF AS A INNER JOIN BSID AS B ON ABELNR = BBELNR AND AGJAHR EQ BGJAHR
AND AMANDT = BMANDT AND ABUKRS = BBUKRS
FOR ALL ENTRIES IN CUSTOMER
WHERE A~BUDAT < S_DATE-LOW
AND A~BUKRS EQ P_BUKRS
AND ( BUMSKZ EQ SPACE OR BUMSKZ EQ 'A')
AND B~KUNNR EQ CUSTOMER-KUNNR.
SELECT ABELNR ABUDAT AGJAHR BKUNNR BBUZEI BSHKZG BSGTXT BBLDAT BZUONR BDMBTR BPSWSL BZTERM B~VBELN
INTO CORRESPONDING FIELDS OF TABLE ITABO_BSAD
FROM BKPF AS A INNER JOIN BSAD AS B ON ABELNR = BBELNR AND AGJAHR EQ BGJAHR
AND AMANDT = BMANDT AND ABUKRS = BBUKRS
FOR ALL ENTRIES IN CUSTOMER
WHERE A~BUDAT < S_DATE-LOW
AND A~BUKRS EQ P_BUKRS
AND ( BUMSKZ EQ SPACE OR BUMSKZ EQ 'A')
AND B~KUNNR EQ CUSTOMER-KUNNR.
LOOP AT CUSTOMER.
SELECT ABELNR ABUDAT AGJAHR BKUNNR BBUZEI BSHKZG BSGTXT BZFBDT BZUONR BDMBTR BPSWSL BZTERM B~VBELN
INTO CORRESPONDING FIELDS OF ITAB_BSID
FROM BKPF AS A INNER JOIN BSID AS B ON ABELNR = BBELNR AND AGJAHR EQ BGJAHR
AND AMANDT = BMANDT AND ABUKRS = BBUKRS
FOR ALL ENTRIES IN CUSTOMER
WHERE A~BUDAT IN S_DATE
AND A~BUKRS EQ P_BUKRS
AND ( BUMSKZ EQ SPACE OR BUMSKZ EQ 'A')
AND B~KUNNR EQ CUSTOMER-KUNNR.
ITAB_BSID-NAMESO = CUSTOMER-NAMESO.
ITAB_BSID-NAMEAM = CUSTOMER-NAMEAM.
ITAB_BSID-NAMERM = CUSTOMER-NAMERM.
APPEND ITAB_BSID.
CLEAR ITAB_BSID.
ENDSELECT.
SELECT ABELNR ABUDAT AGJAHR BKUNNR BBUZEI BSHKZG BSGTXT BZFBDT BZUONR BDMBTR BPSWSL BZTERM B~VBELN
INTO CORRESPONDING FIELDS OF ITAB_BSAD
FROM BKPF AS A INNER JOIN BSAD AS B ON ABELNR = BBELNR AND AGJAHR EQ BGJAHR
AND AMANDT = BMANDT AND ABUKRS = BBUKRS
FOR ALL ENTRIES IN CUSTOMER
WHERE A~BUDAT IN S_DATE
AND A~BUKRS EQ P_BUKRS
AND ( BUMSKZ EQ SPACE OR BUMSKZ EQ 'A')
AND B~ZUMSK EQ SPACE
AND B~KUNNR EQ CUSTOMER-KUNNR.
ITAB_BSAD-NAMESO = CUSTOMER-NAMESO.
ITAB_BSAD-NAMEAM = CUSTOMER-NAMEAM.
ITAB_BSAD-NAMERM = CUSTOMER-NAMERM.
APPEND ITAB_BSAD.
CLEAR ITAB_BSAD.
ENDSELECT.
ENDLOOP.
ENDIF.
ELSEIF CHECK3 = 'X'.
SELECT ANAME1 BKUNNR B~KUNN2 INTO CORRESPONDING FIELDS OF TABLE CUSTOMER
FROM KNA1 AS A INNER JOIN KNVP AS B ON AKUNNR = BKUNN2
WHERE B~KUNN2 IN KUNNSO
AND B~PARVW = 'ZA'.
CLEAR DEL.
DEL = SY-SUBRC .
SORT CUSTOMER BY KUNNR.
DELETE ADJACENT DUPLICATES FROM CUSTOMER.
IF DEL = 0.
CLEAR CUSTOMER.
LOOP AT CUSTOMER.
SELECT SINGLE ANAME1 BKUNNR INTO (IT_NAME-NAMESO, IT_NAME-KUNNR) FROM KNA1 AS A INNER JOIN KNVP AS B ON AKUNNR = BKUNN2
WHERE BKUNNR = CUSTOMER-KUNNR AND BKUNN2 = CUSTOMER-KUNN2 AND B~PARVW = 'ZA'.
SELECT SINGLE ANAME1 INTO CUSTOMER-NAMESO FROM KNA1 AS A INNER JOIN KNVP AS B ON AKUNNR = B~KUNN2
WHERE BKUNNR = CUSTOMER-KUNNR AND BKUNN2 = CUSTOMER-KUNN2 AND B~PARVW = 'ZA'.
SELECT SINGLE ANAME1 INTO CUSTOMER-NAMEAM FROM KNA1 AS A INNER JOIN KNVP AS B ON AKUNNR = B~KUNN2
WHERE BKUNNR = CUSTOMER-KUNNR AND BPARVW = 'ZB'.
SELECT SINGLE ANAME1 INTO CUSTOMER-NAMERM FROM KNA1 AS A INNER JOIN KNVP AS B ON AKUNNR = B~KUNN2
WHERE BKUNNR = CUSTOMER-KUNNR AND BPARVW = 'ZC'.
MODIFY CUSTOMER INDEX SY-TABIX.
CLEAR CUSTOMER.
ENDLOOP.
SELECT ABELNR ABUDAT AGJAHR BKUNNR BBUZEI BSHKZG BSGTXT BBLDAT BZUONR BDMBTR BPSWSL BZTERM B~VBELN
INTO CORRESPONDING FIELDS OF TABLE ITABO_BSID
FROM BKPF AS A INNER JOIN BSID AS B ON ABELNR = BBELNR AND AGJAHR EQ BGJAHR
AND AMANDT = BMANDT AND ABUKRS = BBUKRS
FOR ALL ENTRIES IN CUSTOMER
WHERE A~BUDAT < S_DATE-LOW
AND A~BUKRS EQ P_BUKRS
AND ( BUMSKZ EQ SPACE OR BUMSKZ EQ 'A')
AND B~KUNNR EQ CUSTOMER-KUNNR.
SELECT ABELNR ABUDAT AGJAHR BKUNNR BBUZEI BSHKZG BSGTXT BBLDAT BZUONR BDMBTR BPSWSL BZTERM B~VBELN
INTO CORRESPONDING FIELDS OF TABLE ITABO_BSAD
FROM BKPF AS A INNER JOIN BSAD AS B ON ABELNR = BBELNR AND AGJAHR EQ BGJAHR
AND AMANDT = BMANDT AND ABUKRS = BBUKRS
FOR ALL ENTRIES IN CUSTOMER
WHERE A~BUDAT < S_DATE-LOW
AND A~BUKRS EQ P_BUKRS
AND ( BUMSKZ EQ SPACE OR BUMSKZ EQ 'A')
AND B~KUNNR EQ CUSTOMER-KUNNR.
LOOP AT CUSTOMER.
SELECT ABELNR ABUDAT AGJAHR BKUNNR BBUZEI BSHKZG BSGTXT BZFBDT BZUONR BDMBTR BPSWSL BZTERM B~VBELN
INTO CORRESPONDING FIELDS OF ITAB_BSID
FROM BKPF AS A INNER JOIN BSID AS B ON ABELNR = BBELNR AND AGJAHR EQ BGJAHR
AND AMANDT = BMANDT AND ABUKRS = BBUKRS
FOR ALL ENTRIES IN CUSTOMER
WHERE A~BUDAT IN S_DATE
AND A~BUKRS EQ P_BUKRS
AND ( BUMSKZ EQ SPACE OR BUMSKZ EQ 'A')
AND B~KUNNR EQ CUSTOMER-KUNNR.
ITAB_BSID-NAMESO = CUSTOMER-NAMESO.
ITAB_BSID-NAMEAM = CUSTOMER-NAMEAM.
ITAB_BSID-NAMERM = CUSTOMER-NAMERM.
APPEND ITAB_BSID.
CLEAR ITAB_BSID.
ENDSELECT.
SELECT ABELNR ABUDAT AGJAHR BKUNNR BBUZEI BSHKZG BSGTXT BZFBDT BZUONR BDMBTR BPSWSL BZTERM B~VBELN
INTO CORRESPONDING FIELDS OF ITAB_BSAD
FROM BKPF AS A INNER JOIN BSAD AS B ON ABELNR = BBELNR AND AGJAHR EQ BGJAHR
AND AMANDT = BMANDT AND ABUKRS = BBUKRS
FOR ALL ENTRIES IN CUSTOMER
WHERE A~BUDAT IN S_DATE
AND A~BUKRS EQ P_BUKRS
AND ( BUMSKZ EQ SPACE OR BUMSKZ EQ 'A')
AND B~ZUMSK EQ SPACE
AND B~KUNNR EQ CUSTOMER-KUNNR.
ITAB_BSAD-NAMESO = CUSTOMER-NAMESO.
ITAB_BSAD-NAMEAM = CUSTOMER-NAMEAM.
ITAB_BSAD-NAMERM = CUSTOMER-NAMERM.
APPEND ITAB_BSAD.
CLEAR ITAB_BSAD.
ENDSELECT.
ENDLOOP.
ENDIF.
ELSEIF CHECK4 = 'X'.
SELECT ANAME1 BKUNNR B~KUNN2 INTO CORRESPONDING FIELDS OF TABLE CUSTOMER
FROM KNA1 AS A INNER JOIN KNVP AS B ON AKUNNR = BKUNN2
WHERE B~KUNN2 IN KUNNAM
AND B~PARVW = 'ZB'.
CLEAR DEL.
DEL = SY-SUBRC .
SORT CUSTOMER BY KUNNR.
DELETE ADJACENT DUPLICATES FROM CUSTOMER.
IF DEL = 0.
CLEAR CUSTOMER.
LOOP AT CUSTOMER.
SELECT SINGLE ANAME1 BKUNNR INTO (IT_NAME-NAMESO, IT_NAME-KUNNR) FROM KNA1 AS A INNER JOIN KNVP AS B ON AKUNNR = BKUNN2
WHERE BKUNNR = CUSTOMER-KUNNR AND BKUNN2 = CUSTOMER-KUNN2 AND B~PARVW = 'ZA'.
SELECT SINGLE ANAME1 INTO CUSTOMER-NAMESO FROM KNA1 AS A INNER JOIN KNVP AS B ON AKUNNR = B~KUNN2
WHERE BKUNNR = CUSTOMER-KUNNR AND BPARVW = 'ZA'.
SELECT SINGLE ANAME1 INTO CUSTOMER-NAMEAM FROM KNA1 AS A INNER JOIN KNVP AS B ON AKUNNR = B~KUNN2
WHERE BKUNNR = CUSTOMER-KUNNR AND BKUNN2 = CUSTOMER-KUNN2 AND B~PARVW = 'ZB'.
SELECT SINGLE ANAME1 INTO CUSTOMER-NAMERM FROM KNA1 AS A INNER JOIN KNVP AS B ON AKUNNR = B~KUNN2
WHERE BKUNNR = CUSTOMER-KUNNR AND BPARVW = 'ZC'.
MODIFY CUSTOMER INDEX SY-TABIX.
CLEAR CUSTOMER.
ENDLOOP.
SELECT ABELNR ABUDAT AGJAHR BKUNNR BBUZEI BSHKZG BSGTXT BBLDAT BZUONR BDMBTR BPSWSL BZTERM B~VBELN
INTO CORRESPONDING FIELDS OF TABLE ITABO_BSID
FROM BKPF AS A INNER JOIN BSID AS B ON ABELNR = BBELNR AND AGJAHR EQ BGJAHR
AND AMANDT = BMANDT AND ABUKRS = BBUKRS
FOR ALL ENTRIES IN CUSTOMER
WHERE A~BUDAT < S_DATE-LOW
AND A~BUKRS EQ P_BUKRS
AND ( BUMSKZ EQ SPACE OR BUMSKZ EQ 'A')
AND B~KUNNR EQ CUSTOMER-KUNNR.
SELECT ABELNR ABUDAT AGJAHR BKUNNR BBUZEI BSHKZG BSGTXT BBLDAT BZUONR BDMBTR BPSWSL BZTERM B~VBELN
INTO CORRESPONDING FIELDS OF TABLE ITABO_BSAD
FROM BKPF AS A INNER JOIN BSAD AS B ON ABELNR = BBELNR AND AGJAHR EQ BGJAHR
AND AMANDT = BMANDT AND ABUKRS = BBUKRS
FOR ALL ENTRIES IN CUSTOMER
WHERE A~BUDAT < S_DATE-LOW
AND A~BUKRS EQ P_BUKRS
AND ( BUMSKZ EQ SPACE OR BUMSKZ EQ 'A')
AND B~KUNNR EQ CUSTOMER-KUNNR.
LOOP AT CUSTOMER.
SELECT ABELNR ABUDAT AGJAHR BKUNNR BBUZEI BSHKZG BSGTXT BZFBDT BZUONR BDMBTR BPSWSL BZTERM B~VBELN
INTO CORRESPONDING FIELDS OF ITAB_BSID
FROM BKPF AS A INNER JOIN BSID AS B ON ABELNR = BBELNR AND AGJAHR EQ BGJAHR
AND AMANDT = BMANDT AND ABUKRS = BBUKRS
FOR ALL ENTRIES IN CUSTOMER
WHERE A~BUDAT IN S_DATE
AND A~BUKRS EQ P_BUKRS
AND ( BUMSKZ EQ SPACE OR BUMSKZ EQ 'A')
AND B~KUNNR EQ CUSTOMER-KUNNR.
ITAB_BSID-NAMESO = CUSTOMER-NAMESO.
ITAB_BSID-NAMEAM = CUSTOMER-NAMEAM.
ITAB_BSID-NAMERM = CUSTOMER-NAMERM.
APPEND ITAB_BSID.
CLEAR ITAB_BSID.
ENDSELECT.
SELECT ABELNR ABUDAT AGJAHR BKUNNR BBUZEI BSHKZG BSGTXT BZFBDT BZUONR BDMBTR BPSWSL BZTERM B~VBELN
INTO CORRESPONDING FIELDS OF ITAB_BSAD
FROM BKPF AS A INNER JOIN BSAD AS B ON ABELNR = BBELNR AND AGJAHR EQ BGJAHR
AND AMANDT = BMANDT AND ABUKRS = BBUKRS
FOR ALL ENTRIES IN CUSTOMER
WHERE A~BUDAT IN S_DATE
AND A~BUKRS EQ P_BUKRS
AND ( BUMSKZ EQ SPACE OR BUMSKZ EQ 'A')
AND B~ZUMSK EQ SPACE
AND B~KUNNR EQ CUSTOMER-KUNNR.
ITAB_BSAD-NAMESO = CUSTOMER-NAMESO.
ITAB_BSAD-NAMEAM = CUSTOMER-NAMEAM.
ITAB_BSAD-NAMERM = CUSTOMER-NAMERM.
APPEND ITAB_BSAD.
CLEAR ITAB_BSAD.
ENDSELECT.
ENDLOOP.
ENDIF.
ELSEIF CHECK2 = 'X'.
SELECT ANAME1 BKUNNR B~KUNN2 INTO CORRESPONDING FIELDS OF TABLE CUSTOMER
FROM KNA1 AS A INNER JOIN KNVP AS B ON AKUNNR = BKUNN2
WHERE B~KUNN2 IN KUNNRM
AND B~PARVW = 'ZC'.
CLEAR DEL.
DEL = SY-SUBRC .
SORT CUSTOMER BY KUNNR.
DELETE ADJACENT DUPLICATES FROM CUSTOMER.
IF DEL = 0.
CLEAR CUSTOMER.
LOOP AT CUSTOMER.
SELECT SINGLE ANAME1 BKUNNR INTO (IT_NAME-NAMESO, IT_NAME-KUNNR) FROM KNA1 AS A INNER JOIN KNVP AS B ON AKUNNR = BKUNN2
WHERE BKUNNR = CUSTOMER-KUNNR AND BKUNN2 = CUSTOMER-KUNN2 AND B~PARVW = 'ZA'.
SELECT SINGLE ANAME1 INTO CUSTOMER-NAMESO FROM KNA1 AS A INNER JOIN KNVP AS B ON AKUNNR = B~KUNN2
WHERE BKUNNR = CUSTOMER-KUNNR AND BPARVW = 'ZA'.
SELECT SINGLE ANAME1 INTO CUSTOMER-NAMEAM FROM KNA1 AS A INNER JOIN KNVP AS B ON AKUNNR = B~KUNN2
WHERE BKUNNR = CUSTOMER-KUNNR AND BPARVW = 'ZB'.
SELECT SINGLE ANAME1 INTO CUSTOMER-NAMERM FROM KNA1 AS A INNER JOIN KNVP AS B ON AKUNNR = B~KUNN2
WHERE BKUNNR = CUSTOMER-KUNNR AND BKUNN2 = CUSTOMER-KUNN2 AND B~PARVW = 'ZC'.
MODIFY CUSTOMER INDEX SY-TABIX.
CLEAR CUSTOMER.
ENDLOOP.
SELECT ABELNR ABUDAT AGJAHR BKUNNR BBUZEI BSHKZG BSGTXT BBLDAT BZUONR BDMBTR BPSWSL BZTERM B~VBELN
INTO CORRESPONDING FIELDS OF TABLE ITABO_BSID
FROM BKPF AS A INNER JOIN BSID AS B ON ABELNR = BBELNR AND AGJAHR EQ BGJAHR
AND AMANDT = BMANDT AND ABUKRS = BBUKRS
FOR ALL ENTRIES IN CUSTOMER
WHERE A~BUDAT < S_DATE-LOW
AND A~BUKRS EQ P_BUKRS
AND ( BUMSKZ EQ SPACE OR BUMSKZ EQ 'A')
AND B~KUNNR EQ CUSTOMER-KUNNR.
SELECT ABELNR ABUDAT AGJAHR BKUNNR BBUZEI BSHKZG BSGTXT BBLDAT BZUONR BDMBTR BPSWSL BZTERM B~VBELN
INTO CORRESPONDING FIELDS OF TABLE ITABO_BSAD
FROM BKPF AS A INNER JOIN BSAD AS B ON ABELNR = BBELNR AND AGJAHR EQ BGJAHR
AND AMANDT = BMANDT AND ABUKRS = BBUKRS
FOR ALL ENTRIES IN CUSTOMER
WHERE A~BUDAT < S_DATE-LOW
AND A~BUKRS EQ P_BUKRS
AND ( BUMSKZ EQ SPACE OR BUMSKZ EQ 'A')
AND B~KUNNR EQ CUSTOMER-KUNNR.
LOOP AT CUSTOMER.
SELECT ABELNR ABUDAT AGJAHR BKUNNR BBUZEI BSHKZG BSGTXT BZFBDT BZUONR BDMBTR BPSWSL BZTERM B~VBELN
INTO CORRESPONDING FIELDS OF ITAB_BSID
FROM BKPF AS A INNER JOIN BSID AS B ON ABELNR = BBELNR AND AGJAHR EQ BGJAHR
AND AMANDT = BMANDT AND ABUKRS = BBUKRS
FOR ALL ENTRIES IN CUSTOMER
WHERE A~BUDAT IN S_DATE
AND A~BUKRS EQ P_BUKRS
AND ( BUMSKZ EQ SPACE OR BUMSKZ EQ 'A')
AND B~KUNNR EQ CUSTOMER-KUNNR.
ITAB_BSID-NAMESO = CUSTOMER-NAMESO.
ITAB_BSID-NAMEAM = CUSTOMER-NAMEAM.
ITAB_BSID-NAMERM = CUSTOMER-NAMERM.
APPEND ITAB_BSID.
CLEAR ITAB_BSID.
ENDSELECT.
SELECT ABELNR ABUDAT AGJAHR BKUNNR BBUZEI BSHKZG BSGTXT BZFBDT BZUONR BDMBTR BPSWSL BZTERM B~VBELN
INTO CORRESPONDING FIELDS OF ITAB_BSAD
FROM BKPF AS A INNER JOIN BSAD AS B ON ABELNR = BBELNR AND AGJAHR EQ BGJAHR
AND AMANDT = BMANDT AND ABUKRS = BBUKRS
FOR ALL ENTRIES IN CUSTOMER
WHERE A~BUDAT IN S_DATE
AND A~BUKRS EQ P_BUKRS
AND ( BUMSKZ EQ SPACE OR BUMSKZ EQ 'A')
AND B~ZUMSK EQ SPACE
AND B~KUNNR EQ CUSTOMER-KUNNR.
ITAB_BSAD-NAMESO = CUSTOMER-NAMESO.
ITAB_BSAD-NAMEAM = CUSTOMER-NAMEAM.
ITAB_BSAD-NAMERM = CUSTOMER-NAMERM.
APPEND ITAB_BSAD.
CLEAR ITAB_BSAD.
ENDSELECT.
ENDLOOP.
ENDIF.
ENDIF.
***************************************************************************
LOOP AT ITABO_BSID.
MOVE-CORRESPONDING ITABO_BSID TO ITABO.
APPEND ITABO.
ENDLOOP.
LOOP AT ITABO_BSAD.
MOVE-CORRESPONDING ITABO_BSAD TO ITABO.
APPEND ITABO.
ENDLOOP.
SORT ITABO BY BELNR.
LOOP AT ITABO.
IF ITABO-SHKZG = 'H'.
ITABO-S_DMBTR = ITABO-DMBTR.
ELSE.
ITABO-D_DMBTR = ITABO-DMBTR.
ENDIF.
MODIFY ITABO INDEX SY-TABIX.
CLEAR ITABO.
ENDLOOP.
LOOP AT ITAB_BSID.
MOVE-CORRESPONDING ITAB_BSID TO ITAB.
APPEND ITAB.
ENDLOOP.
LOOP AT ITAB_BSAD.
MOVE-CORRESPONDING ITAB_BSAD TO ITAB.
APPEND ITAB.
ENDLOOP.
****************************************************************************************************************
SORT ITABO BY KUNNR .
LOOP AT ITABO.
TOTAL_FO = TOTAL_FO + ( ITABO-D_DMBTR - ITABO-S_DMBTR ).
MOVE-CORRESPONDING ITABO TO ITABF.
MOVE TOTAL_FO TO ITABF-D_DMBTR.
AT END OF KUNNR.
APPEND ITABF.
CLEAR TOTAL_FO.
ENDAT.
CLEAR ITABO.
ENDLOOP.
REFRESH ITABO.
CLEAR TOTAL_FO.
LOOP AT ITAB.
IF ITAB-SHKZG = C_H.
ITAB-DMBTR = 0 - ITAB-DMBTR .
ENDIF.
MODIFY ITAB.
ENDLOOP.
SORT ITAB BY KUNNR BELNR.
LOOP AT ITAB.
TOTAL_FO = TOTAL_FO + ITAB-DMBTR.
MOVE-CORRESPONDING ITAB TO FC.
MOVE TOTAL_FO TO FC-DMBTR.
AT END OF BELNR.
APPEND FC.
CLEAR TOTAL_FO.
ENDAT.
CLEAR ITAB.
ENDLOOP.
REFRESH ITAB.
LOOP AT FC.
MOVE-CORRESPONDING FC TO ITAB.
APPEND ITAB.
CLEAR FC.
ENDLOOP..
REFRESH FC.
LOOP AT ITAB.
IF ITAB-DMBTR < 0.
ITAB-S_DMBTR = ITAB-DMBTR * -1.
ELSE.
ITAB-D_DMBTR = ITAB-DMBTR.
ENDIF.
MODIFY ITAB INDEX SY-TABIX.
ENDLOOP.
DELETE ITAB WHERE S_DMBTR = 0 AND D_DMBTR = 0.
SORT CUSTOMER BY KUNNR .
SORT ITAB BY BUDAT.
LOOP AT CUSTOMER.
READ TABLE ITABF WITH KEY KUNNR = CUSTOMER-KUNNR.
IF SY-SUBRC = 0.
LOVE = ITABF-D_DMBTR.
ELSE.
CLEAR ITABF.
ENDIF.
SELECT SINGLE NAME1 ORT01 FROM KNA1 INTO (WNAME1, CITY) WHERE KUNNR = CUSTOMER-KUNNR.
LOOP AT ITAB WHERE KUNNR = CUSTOMER-KUNNR.
MOVE-CORRESPONDING ITAB TO FINAL.
TOTAL_FO = TOTAL_FO + ITAB-S_DMBTR .
FINAL_CLO = FINAL_CLO + ITAB-D_DMBTR .
CLBAL = FINAL_CLO - TOTAL_FO + ITABF-D_DMBTR.
ENDLOOP.
IF SY-SUBRC NE 0.
CLBAL = ITABF-D_DMBTR.
MOVE ITABF-D_DMBTR TO FINAL-OPEN.
ENDIF.
MOVE CUSTOMER-KUNNR TO FINAL-KUNNR.
MOVE WNAME1 TO FINAL-NAME .
MOVE CITY TO FINAL-ORT01 .
MOVE LOVE TO FINAL-OPEN.
MOVE TOTAL_FO TO FINAL-CREDIT.
MOVE FINAL_CLO TO FINAL-DEBIT.
MOVE CLBAL TO FINAL-AMOUNT.
IF CLBAL > 0.
FINAL-CR_DR = 'DR'.
ELSE.
FINAL-CR_DR = 'CR'.
ENDIF.
AT END OF KUNNR.
FORMAT COLOR 1 ON.
WRITE :/ SY-VLINE,035 ' CLOSING BALANCE AS ON' , S_DATE-HIGH,141 CLBAL,SY-VLINE, (5) DR_CR,166 SY-VLINE.
FORMAT COLOR OFF.
WRITE :/001(170) SY-ULINE.
WRITE : /120 'Page No = ' , PAGENO .
IF FINAL-CREDIT NE '0.00' OR FINAL-DEBIT NE '0.00' OR FINAL-OPEN NE '0.00'.
IF FINAL-AMOUNT < 0.
FINAL-AMOUNT = FINAL-AMOUNT * -1.
ENDIF.
IF FINAL-OPEN < 0.
FINAL-CR_DR1 = 'CR'.
FINAL-OPEN = FINAL-OPEN * -1.
ELSE.
FINAL-CR_DR1 = 'DR'.
ENDIF.
APPEND FINAL.
ENDIF.
CLEAR : CLBAL , FINAL_CLO ,FINAL_OP ,TOTAL_FO , PAGENO , ITABF ,LOVE.
ENDAT.
ENDLOOP.
ENDFORM. "GET_DATA
PERFORM OUTPUT.
&----
*& Form OUTPUT
&----
text
----
FORM OUTPUT .
WA_FCAT-FIELDNAME = 'KUNNR'.
WA_FCAT-SELTEXT_M = 'CUSTOMER'.
WA_FCAT-COL_POS = 1.
WA_FCAT-OUTPUTLEN = 10.
APPEND WA_FCAT TO IT_FCAT.
WA_FCAT-FIELDNAME = 'NAME'.
WA_FCAT-SELTEXT_M = 'CUSTOMER NAME'.
WA_FCAT-COL_POS = 2.
WA_FCAT-OUTPUTLEN = 30.
APPEND WA_FCAT TO IT_FCAT.
WA_FCAT-FIELDNAME = 'ORT01'.
WA_FCAT-SELTEXT_M = 'CITY'.
WA_FCAT-COL_POS = 3.
WA_FCAT-OUTPUTLEN = 15.
APPEND WA_FCAT TO IT_FCAT.
WA_FCAT-FIELDNAME = 'OPEN'.
WA_FCAT-SELTEXT_M = 'OPENING BALANCE'.
WA_FCAT-COL_POS = 4.
WA_FCAT-OUTPUTLEN = 15.
APPEND WA_FCAT TO IT_FCAT.
WA_FCAT-FIELDNAME = 'CR_DR1'.
WA_FCAT-SELTEXT_M = 'CR/DR'.
WA_FCAT-COL_POS = 5.
WA_FCAT-OUTPUTLEN = 6.
APPEND WA_FCAT TO IT_FCAT.
WA_FCAT-FIELDNAME = 'CREDIT'.
WA_FCAT-SELTEXT_M = 'CREDIT AMOUNT'.
WA_FCAT-COL_POS = 6.
WA_FCAT-OUTPUTLEN = 16.
APPEND WA_FCAT TO IT_FCAT.
WA_FCAT-FIELDNAME = 'DEBIT'.
WA_FCAT-SELTEXT_M = 'DEBIT AMOUNT'.
WA_FCAT-COL_POS = 7.
WA_FCAT-OUTPUTLEN = 16.
APPEND WA_FCAT TO IT_FCAT.
WA_FCAT-FIELDNAME = 'AMOUNT'.
WA_FCAT-SELTEXT_M = 'TOTAL AMOUNT'.
WA_FCAT-COL_POS = 8.
WA_FCAT-OUTPUTLEN = 16.
APPEND WA_FCAT TO IT_FCAT.
WA_FCAT-FIELDNAME = 'CR_DR'.
WA_FCAT-SELTEXT_M = 'CR/DR'.
WA_FCAT-COL_POS = 9.
WA_FCAT-OUTPUTLEN = 6.
APPEND WA_FCAT TO IT_FCAT.
WA_FCAT-FIELDNAME = 'NAMESO'.
WA_FCAT-SELTEXT_M = 'SALES OFFICER'.
WA_FCAT-COL_POS = 10.
WA_FCAT-OUTPUTLEN = 30.
APPEND WA_FCAT TO IT_FCAT.
WA_FCAT-FIELDNAME = 'NAMEAM'.
WA_FCAT-SELTEXT_M = 'AREA MANAGER'.
WA_FCAT-COL_POS = 11.
WA_FCAT-OUTPUTLEN = 30.
APPEND WA_FCAT TO IT_FCAT.
WA_FCAT-FIELDNAME = 'NAMERM'.
WA_FCAT-SELTEXT_M = 'REGIONAL MANAGER'.
WA_FCAT-COL_POS = 12.
WA_FCAT-OUTPUTLEN = 30.
APPEND WA_FCAT TO IT_FCAT.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = 'ZCUSTOMER_BAL'
I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
IT_FIELDCAT = IT_FCAT
I_DEFAULT = 'X'
I_SAVE = 'X'
IS_VARIANT = SY-REPID
TABLES
T_OUTTAB = FINAL[].
FREE ITAB.
APPEND WA_FCAT TO IT_FCAT.
ENDFORM.
&----
*& Form TOP-OF-PAGE
&----
For Top of page
----
FORM TOP_OF_PAGE. "#EC CALLED
WBUKRS = P_BUKRS.
*ALV Header declarations
data: t_header type slis_t_listheader,
wa_header type slis_listheader,
t_line like wa_header-info,
ld_lines type i,
ld_linesc(10) type c.
Title
IF WBUKRS = 'CP01' .
wa_header-typ = 'H'.
wa_header-info = 'C R Y S T A L P H O S P H A T E S L T D .'.
append wa_header to t_header.
clear wa_header.
ELSEIF WBUKRS = 'JB01' .
wa_header-typ = 'H'.
wa_header-info = 'J A I B H A R A T C R O P C H E M P V T L T D .'.
append wa_header to t_header.
clear wa_header.
ENDIF.
Date
wa_header-typ = 'S'.
wa_header-key = 'FROM: '.
CONCATENATE S_DATE-LOW+6(2) '.'
S_DATE-LOW+4(2) '.'
S_DATE-LOW(4) ' ' ' TO: ' S_DATE-HIGH6(2) '.' S_DATE-HIGH4(2) '.' S_DATE-HIGH(4)
INTO wa_header-info. "DATE
append wa_header to t_header.
clear: wa_header.
wa_header-typ = 'S'.
wa_header-key = 'Printed on: '.
CONCATENATE sy-datum+6(2) '.'
sy-datum+4(2) '.'
sy-datum(4) ' ' ' Time: ' Sy-uzeit(2) ':' Sy-uzeit2(2) ':' Sy-uzeit4(2)
INTO wa_header-info. "DATE
append wa_header to t_header.
clear: wa_header.
call function 'REUSE_ALV_COMMENTARY_WRITE'
exporting
it_list_commentary = t_header.
i_logo = 'Z_LOGO'.
ENDFORM.
" OUTPUT
regards,
raman