‎2008 Jun 02 8:35 AM
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
‎2008 Jun 02 8:44 AM
Hi!
You might check out the short dump, (ST22 transaction), at which part of your program makes it stop.
There must be a lot of memory consumption.
You might delete some unneccesary internal tables.
Or you can use more restriction in your selects, to make the internal tables smaller.
Regards
Tamá
‎2008 Jun 02 8:48 AM
Hi Raman,
1. Try to avoid SELECT statements inside the loop, instead you can use FOR ALL ENTRIES addition to the select.
2.Dont use into corresponding fields of table itab in the select statement.
3.Ask your Basis consultant to extend the memory size while retrieving data from database.
Rgds,
Bujji
‎2008 Jun 02 8:54 AM
hi raman,
try not to use select statements inside a LOOP-ENDLOOP. extract the records that you need to modify into an internal table and then do the processing on the internal table.
when updating table records, you can update table records by batch using an internal table using the following:
UPDATE <table> FROM TABLE <i_tab>.
MODIFY <table> FROM TABLE <i_tab>.
regards,
Peter
‎2008 Jun 02 8:56 AM
Hi,
1. First analyze the runtime error, U can find the row no or prg.line no. where run time error occured.
2. May be one of ur internal table loop form never ending loop.
3. May be , when comparing or moving values from one field to another data type mismatch could be occured.
Reward points, if useful
Regards,
s.senthil kumar
‎2008 Jun 02 8:56 AM
Hi Raman,
Ask your Basis consultant to check the System performance and take appropriate actions to increase the system performance.
Raghav
‎2008 Jun 02 8:57 AM
Hi Raman.
As i saw from fast glance...
First of all try to avoid select/endselect statement(better use enternal tables).
For better performance while looping do assign to field-symbol,it allows you do your changes without modify command.
Try to avoid using select(even it's single) in loops(read prefered).
Also you can use "IN" in your selects,it's also will make your program to run better.
You can use transaction st05 to see how much memory takes each select.
Regards
Yossi.
‎2008 Jun 02 9:41 AM
You have to refresh unneccesary internal tables.
Refresh internal tables as its used.
use statement Refresh: itab_name[].
If it is not helpful then it bis some basis settings where we can define maximum entries can be stored in internal table( 4 Lacs )