Application Development 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: 

Print contents in the last page.

Former Member
0 Kudos

Dear all,

I am writing an ABAP program for a report. I have to print some text contents at the end of the page.

How do i do that?

TIA,

sinthu

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi again,

1. For end-of-page to fire,

2. the REPORT statement is VERY IMPORTANT.

3. report abc line-count 10(2).

(2) means reserve 2 lines for footer

so that end-of-page event can write something.

regards,

amit m.

12 REPLIES 12

Former Member
0 Kudos

Use the END-OF-PAGE event.

What ever you want to write at the end of each page, write under the END-OF-PAGE key word and your problem should be solved.

Regards,

Ravi

Note : Please close the thread if the issue is resolved and mark all the helpful answres

Message was edited by: Ravikumar Allampallam

Former Member
0 Kudos

HI sinthu,

1. like this.

2. Just copy paste in new program

report abc <b>line-count 10(2).</b>

*----


do 50 times.

write 😕 sy-index.

enddo.

end-of-page.

write 😕 'end of page'.

3. *----


Important thing is :

<b>line-count 10(2).</b>

In that more important is

(2).

(2) means = reserve 2 lines for footer.

4. If we don't specify (2),

end-of-page event won't fire.

regards,

amit m.

Former Member
0 Kudos

Hai Sinthu

End-of-page.

Write:/ sy-uline(75).

Write:/ ‘This is end of page:’,sy-pagno.

Write:/ sy-uline(75).

This event is used for concluding part of List.

End-of-selection.

Write:/ ‘This is end of the Report’.

If we need some portion of the output (like

column headings) to appear in all the pages,

then we use this event.

Top-of-page.

Write:/ ‘Carrier’,10 ‘Connection’ 20 ‘Date’.

If there is no external output statement before

‘Top-of-page’ event, then this event will not

work.

Once the cursor reaches the last line of the

page, automatically this event will be triggered.

Report Zxxx line-count 25(3).

In this case line numbers 23, 24 and 25 are

reserved for footer.

Once the cursor reaches 23rd line, this event

will be triggered.

Thanks & regards

Sreeni

Former Member
0 Kudos

HI

GOOD

YOU HAVE NOT MENTIONED WHAT KIND OF REPORT YOU R WRITING WHEATHER ITS A NORMAL REPORT OR ALV REPORT.

ANY WAY IF YOU ARE WRITING A NORMAL REPORT THAN YOU TRY THIS OUT

REPORT ZMMCHGHISTORY NO STANDARD PAGE HEADING

LINE-SIZE 195 LINE-COUNT 60.

  • Change doc listing

  • Grouped into 3 chg types: 1. Part revision 2. Price change 3. Others

TABLES:

CDHDR, CDPOS, MARA, MAKT, MARD.

FIELD-GROUPS: HEADER.

DATA: BEGIN OF CHGDOC OCCURS 50.

INCLUDE STRUCTURE CDRED.

DATA: END OF CHGDOC.

DATA:

CHGTYPE(1),

PLANT(4),

MATNR1 LIKE CHGDOC-OBJECTID.

SELECT-OPTIONS:

XMATNR FOR CDHDR-OBJECTID, "Material

XUDATE FOR CDHDR-UDATE, "Change Date

XUNAME FOR CDHDR-USERNAME, "User Name

XTCODE FOR CDHDR-TCODE, "Transaction Code

XWERKS FOR MARD-WERKS. "Plants

SELECTION-SCREEN SKIP.

*Filter change type

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

PARAMETERS : XCHG1 AS CHECKBOX DEFAULT 'X',

XCHG2 AS CHECKBOX DEFAULT 'X',

XCHG3 AS CHECKBOX DEFAULT 'X'.

SELECTION-SCREEN END OF BLOCK CHG0.

START-OF-SELECTION.

INSERT:

CHGDOC-OBJECTID "Material

CHGTYPE "Change type

PLANT

CHGDOC-CHANGENR

CHGDOC-USERNAME

CHGDOC-UDATE

CHGDOC-TCODE

CHGDOC-TABNAME

CHGDOC-TABKEY

CHGDOC-CHNGIND

CHGDOC-FNAME

CHGDOC-FTEXT

CHGDOC-TEXTART

CHGDOC-OUTLEN

CHGDOC-F_OLD

CHGDOC-F_NEW

INTO HEADER.

SELECT * FROM MARA WHERE MATNR IN XMATNR.

MATNR1 = MARA-MATNR.

CALL FUNCTION 'CHANGEDOCUMENT_READ'

EXPORTING

  • ARCHIVE_HANDLE = 0

  • CHANGENUMBER = ' '

  • DATE_OF_CHANGE = '00000000'

OBJECTCLASS = 'MATERIAL'

OBJECTID = MATNR1

  • TABLEKEY = ' '

  • TABLENAME = ' '

  • TIME_OF_CHANGE = '000000'

  • USERNAME = ' '

  • LOCAL_TIME = ' '

TABLES

EDITPOS = CHGDOC

EXCEPTIONS

NO_POSITION_FOUND = 1

WRONG_ACCESS_TO_ARCHIVE = 2

TIME_ZONE_CONVERSION_ERROR = 3

OTHERS = 4.

LOOP AT CHGDOC.

CHECK: CHGDOC-UDATE IN XUDATE,

CHGDOC-USERNAME IN XUNAME,

CHGDOC-TCODE IN XTCODE.

  • Chg type: 1. Part revision, 2. Price change, 3. Others

CASE CHGDOC-TCODE.

WHEN 'MM01' OR 'MM02' OR 'MM03'. CHGTYPE = '1'.

WHEN 'MR21'. CHGTYPE = '2'.

WHEN OTHERS. CHGTYPE = '3'.

ENDCASE.

  • Filter chg type

IF ( CHGTYPE = '1' AND XCHG1 <> 'X' ) OR

( CHGTYPE = '2' AND XCHG2 <> 'X' ) OR

( CHGTYPE = '3' AND XCHG3 <> 'X' ).

CONTINUE.

ENDIF.

  • Plant is a substring of tabkey

PLANT = CHGDOC-TABKEY+21(4).

IF NOT ( XWERKS IS INITIAL ) AND NOT ( PLANT IS INITIAL ).

CHECK PLANT IN XWERKS.

ENDIF.

EXTRACT HEADER.

ENDLOOP.

ENDSELECT.

END-OF-SELECTION.

SORT.

LOOP.

  • Material

AT NEW CHGDOC-OBJECTID.

SELECT SINGLE * FROM MAKT WHERE MATNR = CHGDOC-OBJECTID.

FORMAT INTENSIFIED ON.

SKIP. SKIP.

WRITE:/' *** Material:', (18) CHGDOC-OBJECTID, MAKT-MAKTX.

ENDAT.

  • Change type

AT NEW CHGTYPE.

FORMAT INTENSIFIED ON.

SKIP.

CASE CHGTYPE.

WHEN '1'. WRITE:/ ' ** Change type: PARTS REVISION'.

WHEN '2'. WRITE:/ ' ** Change type: PRICE CHANGE'.

WHEN '3'. WRITE:/ ' ** Change type: OTHERS'.

ENDCASE.

SKIP.

ENDAT.

SHIFT CHGDOC-F_OLD LEFT DELETING LEADING SPACE.

SHIFT CHGDOC-F_NEW LEFT DELETING LEADING SPACE.

FORMAT INTENSIFIED OFF.

WRITE:

/ PLANT UNDER 'Plant',

(50) CHGDOC-FTEXT UNDER 'Field',

(45) CHGDOC-F_OLD UNDER 'Old value',

(45) CHGDOC-F_NEW UNDER 'New value'.

AT NEW CHGDOC-CHANGENR.

FORMAT INTENSIFIED OFF.

WRITE:

CHGDOC-CHANGENR UNDER 'Change doc',

CHGDOC-TCODE UNDER 'Tcod',

CHGDOC-USERNAME UNDER 'User name ',

CHGDOC-UDATE UNDER 'Date ' DD/MM/YY.

ENDAT.

AT END OF CHGDOC-OBJECTID.

SKIP.

ULINE.

SKIP.

ENDAT.

ENDLOOP.

TOP-OF-PAGE.

WRITE: / SY-DATUM, SY-UZEIT,

50 'ABC PTE LTD',

100 'page', SY-PAGNO,

/ SY-REPID,

48 'Change Documents Report',

100 SY-UNAME.

SKIP.

ULINE.

WRITE:/3

'Change doc',

'Tcod',

'User name ',

'Date ',

'Plant',

(50) 'Field',

(45) 'Old value',

(45) 'New value'.

ULINE.

THANKS

MRUTYUN

Former Member
0 Kudos

hi mrutyun,

i am using ordinary report. In the example u have given, there is no end-of-page event.

Former Member
0 Kudos

Hi Sreeni,

I have ofcourse used the end-of-page event.But its not getting printed.

I have started like this..

REPORT ZFIARRLEDG1

NO STANDARD PAGE HEADING LINE-SIZE 152

LINE-COUNT 65(20)

MESSAGE-ID FR.

and in the later part,

after top-of-page event,

i have written the end-of-page event as follows

**********************************************************************

  • END OF PAGE

**********************************************************************

END-OF-PAGE.

WRITE:'Dear Sir,'.

WRITE:/15 'Confirmation of Balance'.

Kindly advice

sinthu

0 Kudos

Hi again,

1. To print something at the end of page,

We need to atleast

print something on the page

<b>, so that the page is full,</b>

and end-of-page event gets fired.

(if the page is blank, then it won't get fired)

2. In your example,

just add the few lines.

3.

REPORT ZFIARRLEDG1

NO STANDARD PAGE HEADING LINE-SIZE 152

LINE-COUNT 65(20)

MESSAGE-ID FR.

**********************************************************************

  • END OF PAGE

**********************************************************************

<b>do 50 times.

write 😕 sy-index.

enddo..</b>

END-OF-PAGE.

WRITE:'Dear Sir,'.

WRITE:/15 'Confirmation of Balance'.

regards,

amit m.

Former Member
0 Kudos

Hi amit,

I have added some codes.... here is the code ..

************************************************************************

  • SELECTION-SCREEN

***********************************************************************

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

SELECT-OPTIONS : S_AKONT FOR KNB1-AKONT OBLIGATORY.

PARAMETERS : P_BUKRS LIKE T001-BUKRS OBLIGATORY.

" COMPANY CODE

SELECT-OPTIONS : S_GSBER FOR TGSBT-GSBER OBLIGATORY, " BUSINESS AREA

S_BUDAT FOR BSID-BUDAT OBLIGATORY, " POSTING DATE

S_KUNNR FOR KNB1-KUNNR OBLIGATORY, " CUSTOMER NUMBER

S_UMSKZ FOR T074U-UMSKZ. " Special GL

"indicators

SELECTION-SCREEN END OF BLOCK B1.

                      • Begin Of Authorization**********************

AT SELECTION-SCREEN.

AUTHORITY-CHECK OBJECT 'Z_FI_REP_N'

ID 'BUKRS' FIELD P_BUKRS

ID 'ACTVT' FIELD '03'.

IF SY-SUBRC <> 0.

MESSAGE E001(ZAUT) WITH P_BUKRS.

ENDIF.

LOOP AT S_AKONT.

AUTHORITY-CHECK OBJECT 'Z_FI_REP_N'

ID 'BEGRU' FIELD S_AKONT-LOW

ID 'ACTVT' FIELD '03'.

IF SY-SUBRC <> 0.

MESSAGE E001(ZAUT) WITH S_AKONT-LOW .

ENDIF.

IF S_AKONT-HIGH <> SPACE.

AUTHORITY-CHECK OBJECT 'Z_FI_REP_N'

ID 'BEGRU' FIELD S_AKONT-HIGH

ID 'ACTVT' FIELD '03'.

IF SY-SUBRC <> 0.

MESSAGE E001(ZAUT) WITH S_AKONT-HIGH .

ENDIF.

ENDIF.

ENDLOOP.

LOOP AT S_GSBER.

AUTHORITY-CHECK OBJECT 'Z_FI_REP_N'

ID 'GSBER' FIELD S_GSBER-LOW

ID 'ACTVT' FIELD '03'.

IF SY-SUBRC <> 0.

MESSAGE E001(ZAUT) WITH S_GSBER-LOW .

ENDIF.

IF S_GSBER-HIGH <> SPACE.

AUTHORITY-CHECK OBJECT 'Z_FI_REP_N'

ID 'GSBER' FIELD S_GSBER-HIGH

ID 'ACTVT' FIELD '03'.

IF SY-SUBRC <> 0.

MESSAGE E001(ZAUT) WITH S_GSBER-HIGH .

ENDIF.

ENDIF.

ENDLOOP.

                          • End of Authorization*********************

***********************************************************************

  • SELECTION SCREEN VALIDATION

***********************************************************************

AT SELECTION-SCREEN ON S_AKONT.

IF NOT S_AKONT-LOW IS INITIAL.

SELECT SINGLE SAKNR FROM SKAT INTO SKAT-SAKNR

WHERE SAKNR = S_AKONT-LOW.

IF SY-SUBRC <> 0.

MESSAGE E999 WITH 'Reconciliation Account' S_AKONT-LOW

'does not exist'.

ENDIF.

ENDIF.

IF NOT S_AKONT-HIGH IS INITIAL.

SELECT SINGLE SAKNR FROM SKAT INTO SKAT-SAKNR

WHERE SAKNR = S_AKONT-HIGH.

IF SY-SUBRC <> 0.

MESSAGE E999 WITH 'Reconciliation Account' S_AKONT-HIGH

'does not exist'.

ENDIF.

ENDIF.

AT SELECTION-SCREEN ON S_KUNNR.

IF NOT S_KUNNR-LOW IS INITIAL.

SELECT SINGLE KUNNR FROM KNB1 INTO KNB1-KUNNR

WHERE AKONT IN S_AKONT

AND KUNNR = S_KUNNR-LOW.

IF SY-SUBRC <> 0.

MESSAGE E317 WITH S_KUNNR-LOW.

ENDIF.

ENDIF.

IF NOT S_KUNNR-HIGH IS INITIAL.

IF S_KUNNR-HIGH < S_KUNNR-LOW.

MESSAGE E381.

ENDIF.

SELECT SINGLE KUNNR FROM KNB1 INTO KNB1-KUNNR

WHERE AKONT IN S_AKONT

AND KUNNR = S_KUNNR-HIGH.

IF SY-SUBRC <> 0.

MESSAGE E317 WITH S_KUNNR-HIGH.

ENDIF.

ENDIF.

***********************************************************************

  • START OF SELECTION

***********************************************************************

START-OF-SELECTION.

P_KOART = 'D'.

LOOP AT S_UMSKZ.

IF S_UMSKZ-SIGN = 'E'.

S_UMSKZ-LOW = ' '.

S_UMSKZ-HIGH = ' '.

MODIFY S_UMSKZ INDEX SY-TABIX.

ENDIF.

ENDLOOP.

PERFORM GET_BKPF_BSEG_DATA.

PERFORM PROCESS_DISPLAY_DATA.

END-OF-SELECTION.

**********************************************************************

  • TOT OF PAGE

**********************************************************************

TOP-OF-PAGE.

FORMAT COLOR OFF INTENSIFIED OFF.

SELECT SINGLE BUTXT

FROM T001

INTO WA_BUTXT

WHERE BUKRS = P_BUKRS.

  • FORMAT COLOR COL_NORMAL INTENSIFIED OFF.

WRITE : / WA_BUTXT .

SELECT SINGLE VWERK

FROM KNVV

INTO WA_VWERK

WHERE KUNNR IN S_KUNNR.

SELECT SINGLE NAME1

FROM T001W

INTO WA_PNAME

WHERE WERKS EQ WA_VWERK.

PERFORM GET_SUP_PLANT.

WRITE: / WA_PNAME,

/ WA_NAME, / WA_NAME2 , / WA_NAME3,/ WA_NAME4, /

WA_CITY,/ WA_PSTLZ, /1(152) SY-ULINE.

*SKIP 1.

*ULINE AT (152).

WRITE : / 'Statement of Accounts', 100 'Page No : ', SY-PAGNO.

  • 100 'Page No : ', SY-PAGNO.

IF S_BUDAT-HIGH = '00000000'.

S_BUDAT-HIGH = S_BUDAT-LOW.

ENDIF.

FORMAT COLOR OFF INTENSIFIED OFF.

  • FORMAT COLOR COL_NORMAL INTENSIFIED OFF.

WRITE : / 'From :', S_BUDAT-LOW, 'TO', S_BUDAT-HIGH ,100 'Date : ',

SY-DATUM, /1(152) SY-ULINE .

  • 100 'Date : ', SY-DATUM.

FORMAT COLOR OFF INTENSIFIED OFF.

**********************************************************************

  • END OF PAGE

**********************************************************************

END-OF-PAGE.

WRITE:'Dear Sir,'.

WRITE:/15 'Confirmation of Balance'.

************************************************************************

*INCLUDE ZFIGRIDISP.

************************************************************************

  • FORM GET_BKPF_BSEG_DATA

************************************************************************

FORM GET_BKPF_BSEG_DATA.

************************************************************************

*INCLUDE ZFIGENDOCS.

************************************************************************

  • DATA : I_FYV1 LIKE T009-PERIV.

*Commented by Sinthu

  • CALL FUNCTION 'CCODE_GET_FISCAL_YEAR_VARIANT'

  • EXPORTING

  • COMPANY_CODE = P_BUKRS

  • IMPORTING

  • FISCAL_YEAR_VARIANT = I_FYV1

  • EXCEPTIONS

  • COMPANY_CODE_NOT_FOUND = 1

  • OTHERS = 2.

  • IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

  • ENDIF.

*CALL FUNCTION 'GM_GET_FISCAL_YEAR'

  • EXPORTING

  • I_DATE = S_BUDAT-LOW

  • I_FYV = I_FYV1

  • IMPORTING

  • E_FY = DATE1

  • EXCEPTIONS

  • FISCAL_YEAR_DOES_NOT_EXIST = 1

  • NOT_DEFINED_FOR_DATE = 2

  • OTHERS = 3

  • .

*IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

*ENDIF.

  • CLEAR DATE1.

  • CALL FUNCTION 'ME_DETERMINE_GJAHR'

  • EXPORTING

    • I_BSTYP =

  • I_BEDAT = S_BUDAT-LOW

  • I_PERIV = I_FYV1

  • IMPORTING

    • E_H_MONAT =

  • E_H_GJAHR = DATE1

    • E_H_DATUM =

.

  • End comment - sinthu

*******************************************************************

  • CUSTOMER CALCULATION

*******************************************************************

SELECT BUKRS BELNR GJAHR BLART

BLDAT BUDAT XBLNR BKTXT

WAERS KURSF XREVERSAL

INTO TABLE IT_BKPF

FROM BKPF

WHERE BUKRS = P_BUKRS

AND BUDAT IN S_BUDAT

AND BLART <> 'ZC' AND BLART <> 'ZV' AND BLART <> 'DA' AND

BLART <> 'AB'

AND BSTAT = ' '.

SELECT VBELN VBTYP

INTO TABLE IT_VBRK

FROM VBRK

FOR ALL ENTRIES IN IT_BKPF

WHERE VBELN = IT_BKPF-BELNR.

SORT IT_BKPF BY BUDAT.

IF P_KOART = 'D'.

IF S_UMSKZ <> ' '.

SELECT BUKRS BELNR GJAHR AUGBL

KOART UMSKZ SHKZG GSBER

DMBTR WRBTR ZUONR SGTXT

KOSTL VBELN SAKNR HKONT

KUNNR LIFNR REBZG

INTO TABLE IT_BSEG

FROM BSEG

WHERE BUKRS = P_BUKRS

AND GSBER IN S_GSBER

  • AND UMSKZ IN S_UMSKZ

AND ( UMSKZ = '' OR UMSKZ IN S_UMSKZ )

AND KUNNR IN S_KUNNR

AND KOART = P_KOART.

  • AND GJAHR = DATE1.

ELSE.

SELECT BUKRS BELNR GJAHR AUGBL

KOART UMSKZ SHKZG GSBER

DMBTR WRBTR ZUONR SGTXT

KOSTL VBELN SAKNR HKONT

KUNNR LIFNR REBZG

INTO TABLE IT_BSEG

FROM BSEG

WHERE BUKRS = P_BUKRS

AND GSBER IN S_GSBER

AND ( UMSKZ = ' ' )

  • OR UMSKZ IN S_UMSKZ )

AND KUNNR IN S_KUNNR

AND KOART = P_KOART.

  • AND GJAHR = DATE1.

ENDIF.

SORT IT_BKPF BY BELNR.

SORT IT_BSEG BY BELNR.

LOOP AT IT_BSEG.

CNT = SY-TABIX.

READ TABLE IT_BKPF

WITH KEY BELNR = IT_BSEG-BELNR

BINARY SEARCH.

IF SY-SUBRC NE 0.

DELETE IT_BSEG INDEX CNT.

CLEAR IT_BSEG.

ENDIF.

ENDLOOP. " END OF IT_BSIK

ENDIF.

                                    • OPENING BALANCE CALCULATION************

SELECT BELNR

FROM BKPF

INTO TABLE IT_BKPF_OPEN_BAL

WHERE BUKRS = P_BUKRS

AND BUDAT < S_BUDAT-LOW

  • AND GJAHR = DATE1

AND BLART <> 'ZC' AND BLART <> 'ZV' AND BLART <> 'DA' AND

BLART <> 'AB'

AND BSTAT = ' '.

****************end of ZFIGENDOCS***************************

ENDFORM. "GET_BKPF_BSEG_DATA

**************************************************************

  • FORM PROCESS_DISPLAY_DATA.

**************************************************************

FORM PROCESS_DISPLAY_DATA.

SELECT GSBER INTO TABLE IT_TGSBT

FROM TGSBT

WHERE GSBER IN S_GSBER.

SELECT KUNNR INTO TABLE IT_KNB1

FROM KNB1

WHERE KUNNR IN S_KUNNR

AND AKONT IN S_AKONT.

LOOP AT IT_TGSBT.

LOOP AT IT_KNB1.

IT_BA_CUST_COMB-GSBER = IT_TGSBT-GSBER.

IT_BA_CUST_COMB-KUNNR = IT_KNB1-KUNNR.

APPEND IT_BA_CUST_COMB.

ENDLOOP. " END OF IT_KNB1

ENDLOOP. " END OF IT_TGSBT

DELETE ADJACENT DUPLICATES FROM IT_BA_CUST_COMB.

SORT IT_BA_CUST_COMB BY KUNNR.

IF NOT IT_BA_CUST_COMB[] IS INITIAL.

LOOP AT IT_BA_CUST_COMB.

COUNTR1 = COUNTR1 + 1.

IF S_UMSKZ <> ''.

SELECT BELNR SHKZG DMBTR

INTO TABLE IT_BSEG_OPEN_BAL

FROM BSEG

WHERE BUKRS = P_BUKRS

AND GSBER = IT_BA_CUST_COMB-GSBER

  • AND UMSKZ IN S_UMSKZ

AND ( UMSKZ = ' ' OR UMSKZ IN S_UMSKZ )

AND KUNNR = IT_BA_CUST_COMB-KUNNR

AND KOART = P_KOART.

  • AND GJAHR = DATE1.

ELSE.

SELECT BELNR SHKZG DMBTR

INTO TABLE IT_BSEG_OPEN_BAL

FROM BSEG

WHERE BUKRS = P_BUKRS

AND GSBER = IT_BA_CUST_COMB-GSBER

AND ( UMSKZ = ' ' )

  • OR UMSKZ IN S_UMSKZ )

AND KUNNR = IT_BA_CUST_COMB-KUNNR

AND KOART = P_KOART.

  • AND GJAHR = DATE1.

ENDIF.

SORT IT_BKPF_OPEN_BAL BY BELNR.

SORT IT_BSEG_OPEN_BAL BY BELNR.

LOOP AT IT_BSEG_OPEN_BAL.

CNT = SY-TABIX.

READ TABLE IT_BKPF_OPEN_BAL

WITH KEY BELNR = IT_BSEG_OPEN_BAL-BELNR

BINARY SEARCH.

IF SY-SUBRC <> 0.

DELETE IT_BSEG_OPEN_BAL INDEX CNT.

CLEAR IT_BSEG_OPEN_BAL.

ENDIF.

ENDLOOP. " END IT_BSEG_OPEN_BAL

PREV_YR_BAL = 0. " TO BE ADDED LATER ......

OPEN_BAL = PREV_YR_BAL.

LOOP AT IT_BSEG_OPEN_BAL.

IF IT_BSEG_OPEN_BAL-SHKZG = 'S'.

OPEN_BAL = OPEN_BAL + IT_BSEG_OPEN_BAL-DMBTR.

ELSE.

OPEN_BAL = OPEN_BAL - IT_BSEG_OPEN_BAL-DMBTR.

ENDIF.

ENDLOOP. " END OF IT_BSEG_OPEN_BAL

  • IF OPEN_BAL <> 0. " LATER CHECK CLOSING BAL = 0...

SELECT SINGLE NAME1 INTO WA_NAME1 FROM KNA1

WHERE KUNNR = IT_BA_CUST_COMB-KUNNR.

SELECT SINGLE GTEXT INTO WA_GTEXT FROM TGSBT

WHERE GSBER = IT_BA_CUST_COMB-GSBER.

LOOP AT IT_BSEG WHERE GSBER = IT_BA_CUST_COMB-GSBER

AND KUNNR = IT_BA_CUST_COMB-KUNNR.

IT_LINE_ITEMS-BELNR = IT_BSEG-BELNR.

IT_LINE_ITEMS-UMSKZ = IT_BSEG-UMSKZ.

IT_LINE_ITEMS-SHKZG = IT_BSEG-SHKZG.

IT_LINE_ITEMS-DMBTR = IT_BSEG-DMBTR.

IT_LINE_ITEMS-SGTXT = IT_BSEG-SGTXT.

IT_LINE_ITEMS-XBLNR = IT_BSEG-ZUONR.

IT_LINE_ITEMS-ZUONR = IT_BSEG-ZUONR.

APPEND IT_LINE_ITEMS.

ENDLOOP. " END OF IT_BSEG

SORT IT_BKPF BY BELNR.

CLOSE_BAL = OPEN_BAL.

LOOP AT IT_LINE_ITEMS.

CNT1 = SY-TABIX.

MONCR = 0. MONDR = 0.

READ TABLE IT_BKPF

WITH KEY BELNR = IT_LINE_ITEMS-BELNR

BINARY SEARCH.

IT_LINE_ITEMS-BUKRS = IT_BKPF-BUKRS.

IT_LINE_ITEMS-BUDAT = IT_BKPF-BUDAT.

IT_LINE_ITEMS-BLDAT = IT_BKPF-BLDAT.

IT_LINE_ITEMS-BLART = IT_BKPF-BLART.

IF IT_BKPF-BLART = 'ZS' AND IT_BKPF-BLART = 'ZT'.

SELECT SINGLE * FROM ZFIH0004

WHERE KUNNR = IT_BA_CUST_COMB-KUNNR

AND ZGROUP = IT_BKPF-XBLNR

AND SCH10_PRSC = IT_LINE_ITEMS-ZUONR

AND BUKRS = IT_BKPF-BUKRS.

IF SY-SUBRC = 0.

IT_LINE_ITEMS-BLDAT = ZFIH0004-BLDAT.

ENDIF.

ENDIF.

IF IT_LINE_ITEMS-BLART <> 'ZS' AND IT_LINE_ITEMS-BLART <> 'DZ'

AND IT_LINE_ITEMS-BLART <> 'ZT'.

IT_LINE_ITEMS-XBLNR = IT_BKPF-XBLNR.

ENDIF.

SELECT SINGLE LTEXT FROM T003T

INTO IT_LINE_ITEMS-LTEXT

WHERE BLART = IT_LINE_ITEMS-BLART

AND SPRAS = 'E'.

READ TABLE IT_VBRK

WITH KEY VBELN = IT_LINE_ITEMS-BELNR.

IF SY-SUBRC = 0.

IF IT_LINE_ITEMS-BLART = 'RV'.

IF IT_VBRK-VBTYP = 'M'.

IT_LINE_ITEMS-LTEXT = 'Invoice'.

ELSEIF IT_VBRK-VBTYP = 'N'.

IT_LINE_ITEMS-LTEXT = 'Invoice Cancellation'.

ELSEIF IT_VBRK-VBTYP = 'O'.

IT_LINE_ITEMS-LTEXT = 'Credit Note'.

ELSEIF IT_VBRK-VBTYP = 'P'.

IT_LINE_ITEMS-LTEXT = 'Debit Note'.

ENDIF.

ENDIF.

ENDIF.

SELECT SINGLE LTEXT FROM T074T

INTO IT_LINE_ITEMS-SGLTX

WHERE SHBKZ = IT_LINE_ITEMS-UMSKZ

AND SPRAS = 'E'

AND KOART = P_KOART.

IT_LINE_ITEMS-DAMNT = 0.

IT_LINE_ITEMS-CAMNT = 0.

IF IT_LINE_ITEMS-SHKZG = 'S'.

  • AND IT_LINE_ITEMS-BLART <> 'ZC'

  • AND IT_LINE_ITEMS-BLART <> 'DA'

  • AND IT_LINE_ITEMS-BLART <> 'ZV'.

IT_LINE_ITEMS-DAMNT = IT_LINE_ITEMS-DMBTR.

CLOSE_BAL = CLOSE_BAL + IT_LINE_ITEMS-DMBTR.

ELSE.

  • IF IT_LINE_ITEMS-BLART <> 'ZC' AND IT_LINE_ITEMS-BLART <> 'DA'

  • AND IT_LINE_ITEMS-BLART <> 'ZV'.

*

IT_LINE_ITEMS-CAMNT = IT_LINE_ITEMS-DMBTR.

CLOSE_BAL = CLOSE_BAL - IT_LINE_ITEMS-DMBTR.

ENDIF.

  • ENDIF.

MODIFY IT_LINE_ITEMS INDEX CNT1.

ENDLOOP.

SORT IT_LINE_ITEMS BY BELNR DMBTR.

*******************MODIFICATION**********

*LOOP AT IT_LINE_ITEMS.

*

*IF IT_LINE_ITEMS-BELNR = CLRDOC AND IT_LINE_ITEMS-DMBTR = CLRAMT.

*

  • DELETE IT_LINE_ITEMS WHERE BELNR = CLRDOC AND DMBTR = CLRAMT.

*

*ENDIF.

*

*CLRDOC = IT_LINE_ITEMS-BELNR.

*CLRAMT = IT_LINE_ITEMS-DMBTR.

*

*ENDLOOP.

*

CLRDOC = 0. CLRAMT = 0.

CNT = 0.

LOOP AT IT_LINE_ITEMS.

IT_LINEITEMS_DUP-CBELNR = IT_LINE_ITEMS-BELNR.

IT_LINEITEMS_DUP-CDMBTR = IT_LINE_ITEMS-DMBTR.

IT_LINEITEMS_DUP-CSHKZG = IT_LINE_ITEMS-SHKZG.

APPEND IT_LINEITEMS_DUP.

ENDLOOP.

LOOP AT IT_LINE_ITEMS.

*CNT = SY-TABIX.

LOOP AT IT_LINEITEMS_DUP WHERE CBELNR = IT_LINE_ITEMS-BELNR.

IF IT_LINEITEMS_DUP-CSHKZG = 'S'.

CLRAMT = CLRAMT + IT_LINEITEMS_DUP-CDMBTR.

ELSEIF IT_LINEITEMS_DUP-CSHKZG = 'H'.

CLRAMT = CLRAMT - IT_LINEITEMS_DUP-CDMBTR.

ENDIF.

ENDLOOP.

IF CLRAMT = 0.

DELETE IT_LINE_ITEMS WHERE BELNR = IT_LINEITEMS_DUP-CBELNR.

ENDIF.

CLRAMT = 0.

ENDLOOP.

****************MODIFICATION***********

SORT IT_LINE_ITEMS BY BUDAT BELNR.

IF OPEN_BAL = 0 AND CLOSE_BAL = 0 AND IT_LINE_ITEMS[] IS INITIAL.

COUNTR2 = COUNTR2 + 1.

  • CONTINUE.

ELSE.

AT NEW KUNNR.

NEW-PAGE.

ENDAT.

CLEAR G_FL.

  • SKIP 1.

CLEAR: WA_NAME,WA_NAME2,WA_NAME3,WA_NAME4,WA_CITY,WA_PSTLZ.

SELECT SINGLE NAME1 NAME2 ORT01 PSTLZ

FROM KNA1

INTO (WA_NAME01,WA_NAME21,WA_CITY1,WA_PSTLZ1)

WHERE KUNNR IN S_KUNNR.

WRITE : / 'Customer Account : ', IT_BA_CUST_COMB-KUNNR,

100 'Business Code : ', IT_BA_CUST_COMB-GSBER,

/ WA_NAME01, 100 'Business Area : ', WA_GTEXT,

/ WA_NAME21,/ WA_CITY1,/ WA_PSTLZ1.

SKIP 1.

G_FL = 'X'.

  • SKIP 1.

ULINE AT (152).

FORMAT COLOR COL_HEADING INTENSIFIED.

WRITE 😕 SY-VLINE NO-GAP, 'Doc.Date',

12 SY-VLINE NO-GAP, 'Doc.No.',

23 SY-VLINE NO-GAP, 'Ref.Doc.No.',

37 SY-VLINE NO-GAP, 'Ref.Doc.Date',

49 SY-VLINE NO-GAP, 'Ref.Doc.Name',

  • 70 SY-VLINE NO-GAP, 'Advances/Deposits',

70 SY-VLINE NO-GAP, 'Description',

95 SY-VLINE NO-GAP, ' Debit' RIGHT-JUSTIFIED,

120 SY-VLINE NO-GAP, ' Credit' RIGHT-JUSTIFIED,

136 SY-VLINE NO-GAP, ' Balance' RIGHT-JUSTIFIED,

152 SY-VLINE NO-GAP.

ULINE AT (152).

FORMAT COLOR OFF INTENSIFIED OFF.

FORMAT COLOR COL_TOTAL INTENSIFIED OFF.

IF OPEN_BAL >= 0.

WRITE : / SY-VLINE NO-GAP,

70 SY-VLINE NO-GAP, 'OPENING BALANCE',

95 SY-VLINE NO-GAP, OPEN_BAL NO-GAP,

120 SY-VLINE NO-GAP,

136 SY-VLINE NO-GAP,

152 SY-VLINE NO-GAP.

ELSE.

WRITE : / SY-VLINE NO-GAP,

70 SY-VLINE NO-GAP, 'OPENING BALANCE',

95 SY-VLINE NO-GAP,

120 SY-VLINE NO-GAP, OPEN_BAL NO-GAP,

136 SY-VLINE NO-GAP,

152 SY-VLINE NO-GAP.

ENDIF.

FORMAT COLOR COL_TOTAL INTENSIFIED OFF.

ULINE AT (152).

LOOP AT IT_LINE_ITEMS.

  • WHERE BLART NE 'ZC'

  • AND BLART NE 'DA'

  • AND BLART NE 'ZV'.

**************MODIFICATIONS**************

IF MON = 0.

MON = IT_LINE_ITEMS-BUDAT+4.

MONTOT = OPEN_BAL.

ENDIF.

IF MON <> IT_LINE_ITEMS-BUDAT+4(2).

MONTOT = MONTOT + MONDR - MONCR.

ULINE AT (152).

FORMAT COLOR COL_TOTAL INTENSIFIED OFF.

WRITE 😕 SY-VLINE NO-GAP,

70 SY-VLINE NO-GAP, 'MONTH TOTAL',

95 SY-VLINE NO-GAP, MONDR,

120 SY-VLINE NO-GAP, MONCR,

136 SY-VLINE NO-GAP,

152 SY-VLINE NO-GAP.

  • ULINE AT (152).

IF MONTOT >= 0.

WRITE 😕 SY-VLINE NO-GAP,

70 SY-VLINE NO-GAP, 'MONTH CLOSING BALANCE',

95 SY-VLINE NO-GAP, MONTOT,

120 SY-VLINE NO-GAP,

136 SY-VLINE NO-GAP,

152 SY-VLINE NO-GAP.

ELSE.

WRITE 😕 SY-VLINE NO-GAP,

70 SY-VLINE NO-GAP, 'MONTH CLOSING BALANCE',

95 SY-VLINE NO-GAP,

120 SY-VLINE NO-GAP, MONTOT,

136 SY-VLINE NO-GAP,

152 SY-VLINE NO-GAP.

ENDIF.

FORMAT COLOR COL_TOTAL INTENSIFIED OFF.

  • ULINE AT (152).

MON = IT_LINE_ITEMS-BUDAT+4.

MONDR = 0. MONCR = 0.

ENDIF.

IF IT_LINE_ITEMS-SHKZG = 'S'.

MONDR = MONDR + IT_LINE_ITEMS-DMBTR.

ELSE.

MONCR = MONCR + IT_LINE_ITEMS-DMBTR.

ENDIF.

IF IT_LINE_ITEMS-SGTXT = ' '.

PERFORM SUB_GET_TEXT.

ENDIF.

*************************************************

  • ULINE AT (152).

FORMAT COLOR COL_NORMAL INTENSIFIED.

FORMAT COLOR COL_BACKGROUND INTENSIFIED OFF.

IF IT_LINE_ITEMS-DAMNT = 0.

WRITE 😕 SY-VLINE NO-GAP, IT_LINE_ITEMS-BUDAT NO-GAP,

12 SY-VLINE NO-GAP, IT_LINE_ITEMS-BELNR NO-GAP,

23 SY-VLINE NO-GAP, IT_LINE_ITEMS-XBLNR NO-GAP,

37 SY-VLINE NO-GAP, IT_LINE_ITEMS-BLDAT NO-GAP,

49 SY-VLINE NO-GAP, IT_LINE_ITEMS-LTEXT NO-GAP,

70 SY-VLINE NO-GAP, 71(23) IT_LINE_ITEMS-SGTXT

NO-GAP,

95 SY-VLINE NO-GAP,

120 SY-VLINE NO-GAP, IT_LINE_ITEMS-CAMNT NO-GAP,

136 SY-VLINE NO-GAP,

152 SY-VLINE NO-GAP.

ELSEIF IT_LINE_ITEMS-CAMNT = 0.

WRITE 😕 SY-VLINE NO-GAP, IT_LINE_ITEMS-BUDAT NO-GAP,

12 SY-VLINE NO-GAP, IT_LINE_ITEMS-BELNR NO-GAP,

23 SY-VLINE NO-GAP, IT_LINE_ITEMS-XBLNR NO-GAP,

37 SY-VLINE NO-GAP, IT_LINE_ITEMS-BLDAT NO-GAP,

49 SY-VLINE NO-GAP, IT_LINE_ITEMS-LTEXT NO-GAP,

70 SY-VLINE NO-GAP, 71(23) IT_LINE_ITEMS-SGTXT NO-GAP,

95 SY-VLINE NO-GAP, IT_LINE_ITEMS-DAMNT NO-GAP,

120 SY-VLINE NO-GAP,

136 SY-VLINE NO-GAP,

152 SY-VLINE NO-GAP.

ELSE.

WRITE 😕 SY-VLINE NO-GAP, IT_LINE_ITEMS-BUDAT NO-GAP,

12 SY-VLINE NO-GAP, IT_LINE_ITEMS-BELNR NO-GAP,

23 SY-VLINE NO-GAP, IT_LINE_ITEMS-XBLNR NO-GAP,

37 SY-VLINE NO-GAP, IT_LINE_ITEMS-BLDAT NO-GAP,

49 SY-VLINE NO-GAP, IT_LINE_ITEMS-LTEXT NO-GAP,

70 SY-VLINE NO-GAP, 71(23) IT_LINE_ITEMS-SGTXT NO-GAP,

95 SY-VLINE NO-GAP, IT_LINE_ITEMS-DAMNT NO-GAP,

120 SY-VLINE NO-GAP, IT_LINE_ITEMS-CAMNT NO-GAP,

136 SY-VLINE NO-GAP,

152 SY-VLINE NO-GAP.

ENDIF.

IT_LINE_ITEMS-SGLTX = ''.

ENDLOOP.

MONTOT = MONTOT + MONDR - MONCR.

ULINE AT (152).

FORMAT COLOR COL_TOTAL INTENSIFIED OFF.

WRITE 😕 SY-VLINE NO-GAP,

70 SY-VLINE NO-GAP, 'MONTH TOTAL',

95 SY-VLINE NO-GAP, MONDR,

120 SY-VLINE NO-GAP, MONCR,

136 SY-VLINE NO-GAP,

152 SY-VLINE NO-GAP.

  • ULINE AT (152).

IF MONTOT >= 0.

WRITE 😕 SY-VLINE NO-GAP,

70 SY-VLINE NO-GAP, 'MONTH CLOSING BALANCE',

95 SY-VLINE NO-GAP, MONTOT,

120 SY-VLINE NO-GAP,

136 SY-VLINE NO-GAP,

152 SY-VLINE NO-GAP.

ELSE.

WRITE 😕 SY-VLINE NO-GAP,

70 SY-VLINE NO-GAP, 'MONTH CLOSING BALANCE',

95 SY-VLINE NO-GAP,

120 SY-VLINE NO-GAP, MONTOT,

136 SY-VLINE NO-GAP,

152 SY-VLINE NO-GAP.

ENDIF.

FORMAT COLOR COL_TOTAL INTENSIFIED OFF.

ULINE AT (152).

MONCR = 0. MONDR = 0.

FORMAT COLOR COL_NORMAL INTENSIFIED OFF.

FORMAT COLOR COL_TOTAL INTENSIFIED.

IF CLOSE_BAL >= 0.

WRITE : / SY-VLINE NO-GAP,

70 SY-VLINE NO-GAP, 'CLOSING BALANCE',

95 SY-VLINE NO-GAP, CLOSE_BAL NO-GAP,

120 SY-VLINE NO-GAP,

136 SY-VLINE NO-GAP,

152 SY-VLINE NO-GAP.

ELSE.

WRITE : / SY-VLINE NO-GAP,

70 SY-VLINE NO-GAP, 'CLOSING BALANCE',

95 SY-VLINE NO-GAP,

120 SY-VLINE NO-GAP, CLOSE_BAL NO-GAP,

136 SY-VLINE NO-GAP,

152 SY-VLINE NO-GAP.

ENDIF.

ULINE AT (152).

MON = 0. MONTOT = 0.

MONDR = 0. MONCR = 0.

ENDIF.

FORMAT COLOR COL_TOTAL INTENSIFIED OFF.

FORMAT COLOR COL_BACKGROUND INTENSIFIED OFF.

*****MODIFICATION ON 13.08.2005***

CLEAR IT_LINE_ITEMS.

REFRESH IT_LINE_ITEMS.

CLEAR OPEN_BAL.

CLEAR CLOSE_BAL.

******END OF MODIFICATION****

FREE OPEN_BAL.

FREE CLOSE_BAL.

FREE IT_LINE_ITEMS.

  • IF G_FL = 'X'.

  • AT END OF KUNNR.

  • NEW-PAGE.

  • ENDAT.

  • CLEAR G_FL.

  • SKIP 1.

*

  • ENDIF.

ENDLOOP.

ENDIF. " ENDIF OF NOT INITIAL IT_BA_CUST_COMB.

***********MODIFICATION**********

IF COUNTR1 = COUNTR2.

WRITE : /20 '********** NO DATA SELECTED **********'.

ENDIF.

********END OF MODIFICATION********

IF IT_BA_CUST_COMB[] IS INITIAL.

WRITE : /20 '********** NO DATA SELECTED **********'.

ENDIF.

ENDFORM. "PROCESS_DISPLAY_DATA

&----


*& Form sub_get_text

&----


  • text

----


FORM SUB_GET_TEXT .

*select single * from vbak where vbeln = it_vbrk-aubel.

DATA: L_VBELN LIKE THEAD-TDNAME.

SELECT SINGLE AUBEL FROM VBRP INTO VBRP-AUBEL WHERE VBELN =

IT_LINE_ITEMS-BELNR.

L_VBELN = VBRP-AUBEL..

  • l_vbeln = it_vbrk-aubel.

CALL FUNCTION 'READ_TEXT'

EXPORTING

CLIENT = SY-MANDT

ID = '0001'

LANGUAGE = SY-LANGU

NAME = L_VBELN

OBJECT = 'VBBK'

  • ARCHIVE_HANDLE = 0

  • LOCAL_CAT = ' '

  • IMPORTING

  • HEADER =

TABLES

LINES = IT_TEXT

EXCEPTIONS

ID = 1

LANGUAGE = 2

NAME = 3

NOT_FOUND = 4

OBJECT = 5

REFERENCE_CHECK = 6

WRONG_ACCESS_TO_ARCHIVE = 7

OTHERS = 8

.

IF SY-SUBRC <> 0.

REFRESH: IT_TEXT.

CLEAR: IT_TEXT.

ENDIF.

LOOP AT IT_TEXT.

IT_LINE_ITEMS-SGTXT = IT_TEXT-TDLINE.

ENDLOOP.

ENDFORM. "sub_get_text

&----


*& Form GET_SUP_PLANT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM GET_SUP_PLANT .

CALL FUNCTION 'PIA_CSO_PLANT_ADDRESS_READ'

EXPORTING

PI_PLANT = WA_VWERK

IMPORTING

PE_PLADDR = IT_PLANT

  • PE_RETURN1 =

.

APPEND IT_PLANT.

LOOP AT IT_PLANT.

WA_NAME = IT_PLANT-NAME.

WA_NAME2 = IT_PLANT-NAME_2.

WA_NAME3 = IT_PLANT-NAME_3.

WA_NAME4 = IT_PLANT-NAME_4.

WA_CITY = IT_PLANT-CITY.

WA_PSTLZ = IT_PLANT-POSTL_COD1.

ENDLOOP.

ENDFORM. " GET_SUP_PLANT

Former Member
0 Kudos

Hi again,

1. For end-of-page to fire,

2. the REPORT statement is VERY IMPORTANT.

3. report abc line-count 10(2).

(2) means reserve 2 lines for footer

so that end-of-page event can write something.

regards,

amit m.

0 Kudos

Hi amit,

If the output of the report goes more than one page, then how will i print it on the last page alone.

I have used 65 lines and in that 5 lines for end of page.

65(5).

How will this work ???

0 Kudos

If you want it to be printed only on last page, you should use END-OF-LIST event.

Regards,

Ravi

Note : Please mark all the helpful answers

0 Kudos

Hi again,

End-of-page is working .

In another report(ordinary report), i need to print some contents only in the last page. How will I do that?

Ravi was telling abt end-of-list. But it gives me an error saying that end-of-list is not expected.

Any help?

-sinthu