2007 May 08 8:34 AM
Hi,
I have to generate a ALV list for a report.
The output screen must be such that just above the alv list I have to display the name of the report with the date and time.
How should I do it?
Please help.
Thanks,
Sandeep.
2007 May 08 8:40 AM
Hi Sandeep,
Use top of page event of ALV.
build a list header and pass it to FM <b>'REUSE_ALV_COMMENTARY_WRITE'</b>
Refer this code.
FORM build_listheader USING p_it_listheader TYPE slis_t_listheader.
DATA: itab_listheader TYPE slis_listheader.
REFRESH p_it_listheader.
CLEAR itab_listheader.
itab_listheader-typ = 'H'.
itab_listheader-info = Sy-repid.
APPEND itab_listheader TO p_it_listheader.
CLEAR itab_listheader.
itab_listheader-typ = 'H'.
itab_listheader-info = sy-datum.
APPEND itab_listheader TO p_it_listheader.
CLEAR itab_listheader.
itab_listheader-typ = 'H'.
itab_listheader-info = sy-time.
APPEND itab_listheader TO p_it_listheader.
ENDFORM. " BUILD_LISTHEADER
form BUILD_EVENTCAT using p_i_eventcat TYPE SLIS_T_EVENT.
DATA: I_EVENT TYPE SLIS_ALV_EVENT.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = P_I_EVENTCAT
EXCEPTIONS
LIST_TYPE_WRONG = 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.
CLEAR I_EVENT.
read table p_i_eventcat with key name = slis_ev_top_of_page into I_event.
if sy-subrc = 0.
move 'TOP_OF_PAGE' to I_event-form.
append I_event to p_i_eventcat.
endif.
FORM top_of_page .
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = it_listheader
i_logo = 'ENJOYSAP_LOGO'
I_END_OF_LIST_GRID =
.
ENDFORM. " TOP_OF_PAGE
Reward points if helpful.
Regards,
Hemant
Hi Sandeep,
Use top of page event of ALV.
build a list header and pass it to FM <b>'REUSE_ALV_COMMENTARY_WRITE'</b>
Refer this code.
FORM build_listheader USING p_it_listheader TYPE slis_t_listheader.
DATA: itab_listheader TYPE slis_listheader.
REFRESH p_it_listheader.
CLEAR itab_listheader.
itab_listheader-typ = 'H'.
itab_listheader-info = Sy-repid.
APPEND itab_listheader TO p_it_listheader.
CLEAR itab_listheader.
itab_listheader-typ = 'H'.
itab_listheader-info = sy-datum.
APPEND itab_listheader TO p_it_listheader.
CLEAR itab_listheader.
itab_listheader-typ = 'H'.
itab_listheader-info = sy-time.
APPEND itab_listheader TO p_it_listheader.
ENDFORM. " BUILD_LISTHEADER
form BUILD_EVENTCAT using p_i_eventcat TYPE SLIS_T_EVENT.
DATA: I_EVENT TYPE SLIS_ALV_EVENT.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = P_I_EVENTCAT
EXCEPTIONS
LIST_TYPE_WRONG = 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.
CLEAR I_EVENT.
read table p_i_eventcat with key name = slis_ev_top_of_page into I_event.
if sy-subrc = 0.
move 'TOP_OF_PAGE' to I_event-form.
append I_event to p_i_eventcat.
endif.
FORM top_of_page .
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = it_listheader
i_logo = 'ENJOYSAP_LOGO'
I_END_OF_LIST_GRID =
.
ENDFORM. " TOP_OF_PAGE
Reward points if helpful.
Regards,
Hemant
2007 May 08 8:36 AM
Hi,
For ALV display you can use FM reuse_alv_grid_display
and to print at the top use top-of-page event.
Asha
2007 May 08 8:37 AM
Hi Sandeep,
<b>Good check the following examples
You have to use REUSE_ALV_COMMENTRY_WRITE function module
&----
*& Report Y_TOP_PAGE *
*& *
&----
*& *
*& *
&----
REPORT y_top_page .
TABLES : mara.
TYPE-POOLS: slis.
DATA : w_repid LIKE sy-repid.
w_repid = sy-repid.
DATA : BEGIN OF it_mara OCCURS 0,
matnr LIKE mara-matnr,
END OF it_mara.
*layout
DATA: wa_layout TYPE SLIS_LAYOUT_ALV.
*field catalog
DATA: it_fieldcat_wrt_off TYPE slis_t_fieldcat_alv,
wa_fieldcat_wrt_off TYPE slis_fieldcat_alv.
START-OF-SELECTION.
SELECT matnr FROM mara INTO CORRESPONDING FIELDS OF TABLE it_mara.
END-OF-SELECTION.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = w_repid
I_INTERNAL_TABNAME = 'IT_MARA'
i_structure_name = 'IT_MARA'
I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = w_repid
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
CHANGING
ct_fieldcat = it_fieldcat_wrt_off[]
EXCEPTIONS
inconsistent_interface = 1
program_error = 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.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = w_repid
i_callback_top_of_page = 'TOP-OF-PAGE'
is_layout = wa_layout
it_fieldcat = it_fieldcat_wrt_off
TABLES
t_outtab = it_mara
EXCEPTIONS
program_error = 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.
----
Form TOP-OF-PAGE *
----
ALV Report Header *
----
FORM top-of-page.
*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
wa_header-typ = 'H'.
wa_header-info = 'CHANDU REPORT'.
APPEND wa_header TO t_header.
CLEAR wa_header.
Date
wa_header-typ = 'S'.
wa_header-key = 'Date: '.
CONCATENATE sy-datum+6(2) '.'
sy-datum+4(2) '.'
sy-datum(4) INTO wa_header-info. "todays date
APPEND wa_header TO t_header.
CLEAR: wa_header.
Total No. of Records Selected
describe table it_ekko lines ld_lines.
ld_linesc = ld_lines.
concatenate 'Total No. of Records Selected: ' ld_linesc
into t_line separated by space.
wa_header-typ = 'A'.
wa_header-info = t_line.
append wa_header to t_header.
clear: wa_header, t_line.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = t_header.
i_logo = 'Z_LOGO'.
ENDFORM. "top-of-page
Example 2
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.</b>
Good luck and thanks
AK
2007 May 08 8:37 AM
try using write statements directly! it should work!
write : 'Title text' , sy-datum, sy-uzeit.
2007 May 08 8:38 AM
HI you can simply copy the paste and leanr using debuuging it...
type-pools : slis.
data fs_flight type YCHVIEW_FLUGTERM.
data :
t_flight like standard table
of fs_flight
initial size 0,
t_list_complementary type SLIS_T_LISTHEADER.
data :
t_events type SLIS_T_EVENT,
t_sort type SLIS_T_SORTINFO_ALV,
w_sort type slis_sortinfo_alv,
w_event type slis_alv_event,
w_carrid type spfli-carrid,
fs_list type SLIS_LISTHEADER,
w_prog type sy-repid value sy-repid.
select *
from YCHVIEW_FLUGTERM
into table t_flight.
Populating the list complementary table...
fs_list-typ = 'H'.
fs_list-info = 'Flight details'.
append fs_list to t_list_complementary.
*Populating the events table.....
w_event-name = 'TOP_OF_PAGE'.
w_event-form = 'TOP_PAGE'.
append w_event to t_events.
Populating the sort table...
w_sort-fieldname = 'CONNID'.
w_sort-up = 'X'.
w_sort-group = ''.
append w_sort to t_sort.
call function 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = w_prog
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_CALLBACK_TOP_OF_PAGE = 'TOP_PAGE'
I_STRUCTURE_NAME = 'YCHVIEW_FLUGTERM'
I_BACKGROUND_ID = ' '
I_GRID_TITLE = 'Flight Details'
I_GRID_SETTINGS =
IS_LAYOUT =
IT_SORT = t_sort
IT_EVENTS = t_events
tables
t_outtab = t_flight
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
if sy-subrc <> 0.
endif.
form top_page.
call function 'REUSE_ALV_COMMENTARY_WRITE'
exporting
it_list_commentary = t_list_complementary
I_LOGO = 'ENJOYSAP_LOGO'
I_END_OF_LIST_GRID =
I_ALV_FORM =
.
endform.
Example: 2check this simple program.
REPORT ZBHALV_LIST.
TABLES:MARA.
SELECT-OPTIONS: MATNR FOR MARA-MATNR.
DATA:BEGIN OF ITAB OCCURS 0,
MATNR LIKE MARA-MATNR,
ERSDA LIKE MARA-ERSDA,
MTART LIKE MARA-MTART,
MBRSH LIKE MARA-MBRSH,
END OF ITAB.
SELECT * FROM MARA INTO CORRESPONDING FIELDS OF TABLE ITAB WHERE MATNR
IN MATNR.
TYPE-POOLS SLIS.
DATA:FCAT TYPE slis_t_fieldcat_alv.
DATA:LAYOUT TYPE slis_layout_alv.
DATA:EVE TYPE slis_t_event WITH HEADER LINE.
DATA:HEAD TYPE slis_t_listheader WITH HEADER LINE.
DATA:SORT TYPE slis_t_sortinfo_alv WITH HEADER LINE.
SORT-UP = 'X'.
SORT-SPOS = 1.
SORT-FIELDNAME = 'ERSDA'.
SORT-tabname = 'MARA'.
APPEND SORT.
SORT-SPOS = 2.
SORT-FIELDNAME = 'MTART'.
SORT-tabname = 'MARA'.
APPEND SORT.
EVE-NAME = 'TOP_OF_PAGE'.
EVE-FORM = 'TOPOFPAGE'.
APPEND EVE.
EVE-NAME = 'TOP_OF_LIST'.
EVE-FORM = 'TOPOFLIST'.
APPEND EVE.
EVE-NAME = 'END_OF_LIST'.
EVE-FORM = 'ENDOFLIST'.
APPEND EVE.
LAYOUT-ZEBRA = 'X'.
LAYOUT-no_hline = 'X'.
LAYOUT-NO_VLINE = 'X'.
LAYOUT-window_titlebar = 'MATERIAL DETAILS'.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = SY-REPID
I_INTERNAL_TABNAME = 'ITAB'
I_STRUCTURE_NAME =
I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = SY-REPID
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
CHANGING
CT_FIELDCAT = FCAT
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 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.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
IS_LAYOUT = LAYOUT
IT_FIELDCAT = FCAT
IT_SORT = SORT[]
IT_EVENTS = EVE[]
TABLES
T_OUTTAB = ITAB .
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
FORM TOPOFPAGE.
REFRESH HEAD.
HEAD-TYP = 'H'.
HEAD-INFO = 'MATERIALS'.
APPEND HEAD.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = HEAD[]
I_LOGO =
I_END_OF_LIST_GRID =
.
ENDFORM.
FORM TOPOFLIST.
REFRESH HEAD.
HEAD-TYP = 'H'.
HEAD-INFO = 'MATERIALS-LISTTOP'.
APPEND HEAD.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = HEAD[]
I_LOGO =
I_END_OF_LIST_GRID =
.
ENDFORM.
FORM ENDOFLIST.
REFRESH HEAD.
HEAD-TYP = 'H'.
HEAD-INFO = 'MATERIALS-LISTEND'.
APPEND HEAD.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = HEAD[]
I_LOGO =
I_END_OF_LIST_GRID =
.
ENDFORM.
Example 2:
check this simple program.
REPORT ZBHALV_LIST.
TABLES:MARA.
SELECT-OPTIONS: MATNR FOR MARA-MATNR.
DATA:BEGIN OF ITAB OCCURS 0,
MATNR LIKE MARA-MATNR,
ERSDA LIKE MARA-ERSDA,
MTART LIKE MARA-MTART,
MBRSH LIKE MARA-MBRSH,
END OF ITAB.
SELECT * FROM MARA INTO CORRESPONDING FIELDS OF TABLE ITAB WHERE MATNR
IN MATNR.
TYPE-POOLS SLIS.
DATA:FCAT TYPE slis_t_fieldcat_alv.
DATA:LAYOUT TYPE slis_layout_alv.
DATA:EVE TYPE slis_t_event WITH HEADER LINE.
DATA:HEAD TYPE slis_t_listheader WITH HEADER LINE.
DATA:SORT TYPE slis_t_sortinfo_alv WITH HEADER LINE.
SORT-UP = 'X'.
SORT-SPOS = 1.
SORT-FIELDNAME = 'ERSDA'.
SORT-tabname = 'MARA'.
APPEND SORT.
SORT-SPOS = 2.
SORT-FIELDNAME = 'MTART'.
SORT-tabname = 'MARA'.
APPEND SORT.
EVE-NAME = 'TOP_OF_PAGE'.
EVE-FORM = 'TOPOFPAGE'.
APPEND EVE.
EVE-NAME = 'TOP_OF_LIST'.
EVE-FORM = 'TOPOFLIST'.
APPEND EVE.
EVE-NAME = 'END_OF_LIST'.
EVE-FORM = 'ENDOFLIST'.
APPEND EVE.
LAYOUT-ZEBRA = 'X'.
LAYOUT-no_hline = 'X'.
LAYOUT-NO_VLINE = 'X'.
LAYOUT-window_titlebar = 'MATERIAL DETAILS'.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = SY-REPID
I_INTERNAL_TABNAME = 'ITAB'
I_STRUCTURE_NAME =
I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = SY-REPID
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
CHANGING
CT_FIELDCAT = FCAT
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 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.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
IS_LAYOUT = LAYOUT
IT_FIELDCAT = FCAT
IT_SORT = SORT[]
IT_EVENTS = EVE[]
TABLES
T_OUTTAB = ITAB .
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
FORM TOPOFPAGE.
REFRESH HEAD.
HEAD-TYP = 'H'.
HEAD-INFO = 'MATERIALS'.
APPEND HEAD.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = HEAD[]
I_LOGO =
I_END_OF_LIST_GRID =
.
ENDFORM.
FORM TOPOFLIST.
REFRESH HEAD.
HEAD-TYP = 'H'.
HEAD-INFO = 'MATERIALS-LISTTOP'.
APPEND HEAD.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = HEAD[]
I_LOGO =
I_END_OF_LIST_GRID =
.
ENDFORM.
FORM ENDOFLIST.
REFRESH HEAD.
HEAD-TYP = 'H'.
HEAD-INFO = 'MATERIALS-LISTEND'.
APPEND HEAD.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = HEAD[]
I_LOGO =
I_END_OF_LIST_GRID =
.
ENDFORM.
Regards,
Jayant
2007 May 08 8:39 AM
hi
u can use reuse_alv_commentary_write
which is used to write the header information.
pass the internal table containing the data to be displayed/
2007 May 08 8:40 AM
What you are saying that is basically a part of TOp-OF-PAGE ....
Please check that particular form in the code I have posted earlier, if you have already done the coding for the reast ...for that you have to also write the code for getting the evets..for that look at form 'USER COMMAND'.
Regards,
Jayant
2007 May 08 8:40 AM
Hi Sandeep,
Use top of page event of ALV.
build a list header and pass it to FM <b>'REUSE_ALV_COMMENTARY_WRITE'</b>
Refer this code.
FORM build_listheader USING p_it_listheader TYPE slis_t_listheader.
DATA: itab_listheader TYPE slis_listheader.
REFRESH p_it_listheader.
CLEAR itab_listheader.
itab_listheader-typ = 'H'.
itab_listheader-info = Sy-repid.
APPEND itab_listheader TO p_it_listheader.
CLEAR itab_listheader.
itab_listheader-typ = 'H'.
itab_listheader-info = sy-datum.
APPEND itab_listheader TO p_it_listheader.
CLEAR itab_listheader.
itab_listheader-typ = 'H'.
itab_listheader-info = sy-time.
APPEND itab_listheader TO p_it_listheader.
ENDFORM. " BUILD_LISTHEADER
form BUILD_EVENTCAT using p_i_eventcat TYPE SLIS_T_EVENT.
DATA: I_EVENT TYPE SLIS_ALV_EVENT.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = P_I_EVENTCAT
EXCEPTIONS
LIST_TYPE_WRONG = 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.
CLEAR I_EVENT.
read table p_i_eventcat with key name = slis_ev_top_of_page into I_event.
if sy-subrc = 0.
move 'TOP_OF_PAGE' to I_event-form.
append I_event to p_i_eventcat.
endif.
FORM top_of_page .
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = it_listheader
i_logo = 'ENJOYSAP_LOGO'
I_END_OF_LIST_GRID =
.
ENDFORM. " TOP_OF_PAGE
Reward points if helpful.
Regards,
Hemant
2007 May 08 9:00 AM
hi,
report ztest.
tables : mara,marc.
type-pools : slis,icon.
data : gd_repid type sy-repid.
data : d_fieldcat type slis_t_fieldcat_alv,
d_fieldcat_wa type slis_fieldcat_alv.
data : t_header type slis_t_listheader,
wa_header type slis_listheader,
linecount(10) type c,
line(10) type c.
data : gd_layout type slis_layout_alv.
perform fieldcat.
perform layout.
form layout.
gd_layout-edit = 'X'.
gd_layout-zebra = 'X'.
endform.
perform set_pf_status using rt_extab type slis_t_extab.
set pf-status 'NEW'.
endform.
form top_of_page.
wa_header-typ = 'H'.
wa_header-info = 'ALV Report'.
append wa_header to t_header.
clear wa_header.
wa_header-typ = 'S'.
wa_header-key = 'Date :'
concatenate Sy-datum+6(2) '.'
sy-datum+4(2) '.'
sy-datum(4) into wa_header-info.
append wa_header to t_header.
clear wa_header.
wa_header-typ = 'S'.
wa_header-key = 'Time :'
concatenate Sy-uzeit(2)'.'
sy-uzeit+2(2) '.'
sy-uzeit+4(2) into wa_header-info.
append wa_header to t_header.
clear wa_header.
describe table itab_final lines line.
wa_header-typ ='A'.
linecount = line.
concatenate 'THe total no of records are:' linecount into wa_header-info seperated by space.
append wa_header to t_header.
clear wa_header.
Call Function REUSE_WRITE_COMMENTRY_LINE.
header = t_header.
endform.
reward if helpful.
2007 Dec 18 9:15 AM
THIS IS A SIMPLE CODE.ONLY REMEBER TO CHANGE THE NAME OG CALL BACK PROGRAM IN REUSE_ALV_GRID_DISPLAY TO YOUR PROGRAM NAME.
U WILL FIND EVERYTHING IN THIS CODE.
also am sending documentation of how to create logo
Upload Logo for REUSE_ALV_COMMENTARY_WRITE
For those who wish to upload and use a picture in your ALV ABAP reports.
Steps for uploading Logo :-:
1. Go to the transaction OAER
2. Enter the class name as 'PICTURES'
3. Enter the class type as 'OT' (other objects)
4. Enter the object key as the name of the logo you wish to give this object name then
has to be passed in the program in the field i_logo = 'SAP LOGO'
5. Execute
6. Then in the new screen (below) select Standard doc. types in bottom window
Click on the Screen icon
Now, it will ask for the file path where you have to upload the logo
Search for the logo from your PC.
7. Now you can use this logo in REUSE_ALV_COMMENTARY_WRITE
&----
*& Report ZSOD2
*& This is a report of Sales Document with ALV Display.
*& Also No of records selected along with Date and Time is displayed.
*& Code for display of LOGO and sorting of a particular field also.
&----
*&Created by Rahul Bhat on 31-07-2007.
*&
&----
REPORT ZSOD2.
--
TYPE-POOLS : SLIS .
----
--
c_x VALUE 'X' .
----
.
--
TABLES : VBAK,VBAP.
----
--
DATA : fieldcat TYPE slis_fieldcat_alv OCCURS 0 WITH HEADER LINE.
--
DATA: IT_sortcat type slis_sortinfo_alv occurs 1,
wa_sort like line of IT_sortcat.
--
DATA : COL_POS TYPE I .
*DATA : v_cntr TYPE i VALUE IS INITIAL ,
v_pcnt TYPE i VALUE 1 ,
v_totl TYPE p DECIMALS 6 VALUE IS INITIAL,
a LIKE sy-ucomm .
*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS :VBELN FOR VBAK-VBELN ,
S_ERDAT FOR VBAK-ERDAT ,
S_SPART FOR VBAK-SPART .
SELECTION-SCREEN END OF BLOCK B1 .
DATA :BEGIN OF IVBAK OCCURS 0 ,
VBELN LIKE VBAK-VBELN ,
ERDAT LIKE VBAK-ERDAT ,
ERNAM TYPE VBAK-ERNAM ,
ERZET TYPE VBAK-ERZET ,
SPART TYPE VBAK-SPART ,
TRVOG TYPE VBAK-TRVOG ,
END OF IVBAK .
DATA :BEGIN OF IVBAP OCCURS 0 ,
VBELN LIKE VBAP-VBELN ,
ERDAT LIKE VBAP-ERDAT ,
POSNR LIKE VBAP-POSNR ,
MATNR LIKE VBAP-MATNR ,
MATWA LIKE VBAP-MATWA ,
CHARG LIKE VBAP-CHARG ,
KWMENG LIKE VBAP-KWMENG ,
NETWR LIKE VBAP-NETWR ,
END OF IVBAP .
*----
&----There is no need to define structures of 2 tables as above.Instead we can use INNER JOIN.This coding has been done in ZTRIALS&----
*&--
*----
START-OF-SELECTION .
----
*From here we can use inner join and comment the below SELECT statments.
*The inner join statment will be as follows.
SELECT VKVBTYP VPVBELN VPPOSNR VPMATNR VPMATWA VPCHARG VPKWMENG VPNETWR ""vp-initial for VBAP
INTO CORRESPONDING FIELDS OF TABLE ITAB FROM VBAP AS VP ""vk-initial for VBAK
INNER JOIN VBAK AS VK ON VKVBELN = VPVBELN
WHERE VK~VBELN IN VBELN.
----
.
----
SELECT * FROM VBAK INTO CORRESPONDING FIELDS OF TABLE IVBAK WHERE VBELN IN VBELN AND ERDAT IN S_ERDAT.
IF SY-SUBRC <> 0 . """"Always use a SY_SUBRC check after select statment.
MESSAGE i000(zmm) . """"Message for DATA NOT FOUND.
ELSE .
SELECT VBELN ERDAT POSNR MATNR MATWA CHARG KWMENG NETWR INTO CORRESPONDING FIELDS OF
TABLE IVBAP FROM VBAP FOR ALL ENTRIES IN IVBAK
WHERE VBELN EQ IVBAK-VBELN AND
SPART IN S_SPART .
ENDIF .
----
*CALL FUNCTION 'POPUP_TO_DECIDE_INFO'
EXPORTING
DEFAULTOPTION = 'Y'
TEXTLINE1 = 'ARE YOU SURE?'
TEXTLINE2 = 'GO BACK '
TITEL = 'POPUP'
START_COLUMN = 25
START_ROW = 6
IMPORTING
ANSWER =
.
&--
ADD 1 TO COL_POS . """"If we add 1 more column of VBTYP it will result in a dump as we are passing IVBAP.
FIELDCAT-COL_POS = COL_POS . """"So to avoid this we can use INNER JOIN statment.
FIELDCAT-FIELDNAME = 'VBELN' .
FIELDCAT-TABNAME = 'FIELDCAT' .
FIELDCAT-SELTEXT_L = 'SALES ORDER' .
FIELDCAT-FIX_COLUMN = 'X' .
FIELDCAT-OUTPUTLEN = 15 .
FIELDCAT-DO_SUM = 'X' .
APPEND FIELDCAT .
CLEAR FIELDCAT .
ADD 1 TO COL_POS .
FIELDCAT-COL_POS = COL_POS .
FIELDCAT-FIELDNAME = 'MATNR' .
FIELDCAT-TABNAME = 'FIELDCAT' .
FIELDCAT-SELTEXT_L = 'MATERIAL NO.' .
FIELDCAT-FIX_COLUMN = 'X' .
FIELDCAT-OUTPUTLEN = 16 .
FIELDCAT-KEY(1) = 'MATNR' .
APPEND FIELDCAT .
CLEAR FIELDCAT .
ADD 1 TO COL_POS .
FIELDCAT-COL_POS = COL_POS .
FIELDCAT-FIELDNAME = 'ERDAT' .
FIELDCAT-TABNAME = 'FIELDCAT' .
FIELDCAT-SELTEXT_L = 'RECORD DATE' .
FIELDCAT-FIX_COLUMN = 'X' .
FIELDCAT-OUTPUTLEN = 16 .
APPEND FIELDCAT .
CLEAR FIELDCAT .
ADD 1 TO COL_POS .
FIELDCAT-COL_POS = COL_POS .
FIELDCAT-FIELDNAME = 'POSNR' .
FIELDCAT-TABNAME = 'FIELDCAT' .
FIELDCAT-SELTEXT_L = 'ITEM' .
FIELDCAT-FIX_COLUMN = 'X' .
FIELDCAT-OUTPUTLEN = 5 .
APPEND FIELDCAT .
CLEAR FIELDCAT .
ADD 1 TO COL_POS .
FIELDCAT-COL_POS = COL_POS .
FIELDCAT-FIELDNAME = 'MATWA' .
FIELDCAT-TABNAME = 'FIELDCAT' .
FIELDCAT-SELTEXT_L = 'MATERIAL ENT' .
FIELDCAT-FIX_COLUMN = 'X' .
FIELDCAT-OUTPUTLEN = 15 .
APPEND FIELDCAT .
CLEAR FIELDCAT .
ADD 1 TO COL_POS .
FIELDCAT-COL_POS = COL_POS .
FIELDCAT-FIELDNAME = 'CHARG' .
FIELDCAT-TABNAME = 'FIELDCAT' .
FIELDCAT-SELTEXT_L = 'BATCH.NO' .
FIELDCAT-FIX_COLUMN = 'X' .
FIELDCAT-OUTPUTLEN = 10 .
APPEND FIELDCAT .
CLEAR FIELDCAT .
ADD 1 TO COL_POS .
LOOP AT IVBAP.
AT END OF VBELN.
FIELDCAT-COL_POS = COL_POS .
FIELDCAT-FIELDNAME = 'KWMENG' .
FIELDCAT-TABNAME = 'FIELDCAT' .
FIELDCAT-SELTEXT_L = 'CUMULATIVE ORDER QUANTITY IN SALES UNITS'.
FIELDCAT-FIX_COLUMN = 'X' .
FIELDCAT-OUTPUTLEN = 42 .
FIELDCAT-SUBTOT = 'X' .
FIELDCAT-DO_SUM = 'X' . """"FOR CALCULATING THE SUM DIRECTLY
APPEND FIELDCAT .
CLEAR FIELDCAT .
ENDAT.
ENDLOOP.
ADD 1 TO COL_POS .
FIELDCAT-COL_POS = COL_POS .
FIELDCAT-FIELDNAME = 'NETWR' .
FIELDCAT-TABNAME = 'FIELDCAT' .
FIELDCAT-SELTEXT_L = 'NET VALUE IN DOCUMENT CURRENCY' . """"OF THE ORDER ITEM IN DOCUMENT CURRENCY.
FIELDCAT-FIX_COLUMN = 'X' .
FIELDCAT-OUTPUTLEN = 35 .
FIELDCAT-DO_SUM = 'X' . """"FOR CALCULATING THE SUM DIRECTLY
APPEND FIELDCAT .
CLEAR FIELDCAT .
&--
&--
*PERFORM SHOW_PROGRESS.
&----
&--
--
PERFORM BUILD_SORTCAT.
&----
&--
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = 'ZSOD2'
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE = 'AVAILABLE DATA FOR SELECTED SALES DOCUMENT'
I_GRID_SETTINGS =
IS_LAYOUT =
IT_FIELDCAT = FIELDCAT[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT = IT_SORTCAT "INTERNAL TABLE PASSED FOR SORTING
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = 'X'
IS_VARIANT =
IT_EVENTS =
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
I_HTML_HEIGHT_TOP = 0
I_HTML_HEIGHT_END = 0
IT_ALV_GRAPHICS =
IT_HYPERLINK =
IT_ADD_FIELDCAT =
IT_EXCEPT_QINFO =
IR_SALV_FULLSCREEN_ADAPTER =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = IVBAP[]
EXCEPTIONS
PROGRAM_ERROR = 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 .
--
--
--
FORM TOP_OF_PAGE .
*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
WA_HEADER-TYP = 'H' .
WA_HEADER-INFO = 'Sales Document' .
append WA_HEADER to T_HEADER .
CLEAR WA_HEADER .
DATE
WA_HEADER-TYP = 'S' .
WA_HEADER-KEY = 'Date: ' .
CONCATENATE SY-DATUM+6(2) '.'
SY-DATUM+4(2) '.'
SY-DATUM(4) into WA_HEADER-INFO."todays date
append WA_HEADER to T_HEADER .
clear: WA_HEADER .
TOTAL NO.OF RECORDS SELECTED :
DESCRIBE TABLE IVBAP LINES LD_LINES .
LD_LINESC = LD_LINES .
CONCATENATE 'Total Number of Records Selected: ' LD_LINESC
INTO T_LINE SEPARATED BY SPACE .
WA_HEADER-TYP = 'A' .
WA_HEADER-INFO = t_line .
APPEND WA_HEADER to T_HEADER .
clear: WA_HEADER, T_LINE .
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' """"TO DISPLAY STATMENTS WRITTEN ABOVE.
EXPORTING
IT_LIST_COMMENTARY = T_HEADER
I_LOGO = 'SAP LOGO' .""""SAP LOGO ON SCREEN.
ENDFORM .
--
&--
&----
&--
--
FORM BUILD_SORTCAT .
WA_SORT-SPOS = 1.
WA_SORT-FIELDNAME = 'VBELN' . """"FIELD NAME FOR WHICH ALL ITS CORRESPONDING RECORDS SHOULD BE DISPLAYED
wa_sort-SUBTOT = 'X' . """"subtotals any totals column by this field
gd_sortcat-tabname
APPEND WA_SORT TO IT_SORTCAT .
wa_sort-spos = 2 .
wa_sort-fieldname = 'EBELP' .
gd_sortcat-tabname
APPEND wa_sort TO it_sortcat .
ENDFORM .
--
&------------------------------------------------------------------
**& Form show_progress (PROGRESS BAR)
*&----
text
*----
--> p1 text
<-- p2 text
*----
*FORM show_progress .
(a) Testing
DATA: c(3) TYPE c VALUE IS INITIAL.
*
v_pcnt = v_cntr * v_totl.
c = v_pcnt.
CONCATENATE 'Processing.... ' c '%' INTO a.
*
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
percentage = v_pcnt
text = a.
*
v_cntr = v_cntr + 1.
*ENDFORM. " show_progress.
.
*--
| User | Count |
|---|---|
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |