Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

runtime error

Former Member
0 Likes
974

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

7 REPLIES 7
Read only

Former Member
0 Likes
899

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á

Read only

Former Member
0 Likes
899

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

Read only

peter_ruiz2
Active Contributor
0 Likes
899

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

Read only

Former Member
0 Likes
899

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

Read only

former_member182354
Contributor
0 Likes
899

Hi Raman,

Ask your Basis consultant to check the System performance and take appropriate actions to increase the system performance.

Raghav

Read only

Former Member
0 Likes
899

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.

Read only

Former Member
0 Likes
899

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 )