05-23-2006 7:24 AM
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
05-23-2006 8:00 AM
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.
05-23-2006 7:26 AM
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
05-23-2006 7:27 AM
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.
05-23-2006 7:28 AM
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
05-23-2006 7:30 AM
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
05-23-2006 7:35 AM
hi mrutyun,
i am using ordinary report. In the example u have given, there is no end-of-page event.
05-23-2006 7:37 AM
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
05-23-2006 7:39 AM
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.
05-23-2006 7:49 AM
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
05-23-2006 8:00 AM
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.
05-23-2006 8:05 AM
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 ???
05-23-2006 8:09 AM
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
05-23-2006 8:17 AM
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