Need modifications in my alv
*& Report ZMM_STOCKDIFFERENCE
REPORT ZMM_STOCKDIFFERENCE.
Tables: marc,
mard. "Sales Document: Header Data
data : it_marc LIKE marc OCCURS 0 WITH HEADER LINE,
it_mard like mard OCCURS 0 WITH HEADER LINE.
type-pools: slis.
data:t_listheader type slis_t_listheader,
it_events type slis_t_event,
is_layout type slis_layout_alv,
is_layout1 type slis_layout_alv..
data:fieldcatalog type slis_t_fieldcat_alv with header line,
gd_tab_group type slis_t_sp_group_alv,
gd_layout type slis_layout_alv ,
i_repid like sy-repid.
i_repid = sy-repid.
Data: begin of itab occurs 0,
matnr like marc-matnr,
labst like mard-labst,
EISBE like marc-eisbe,
eislo like marc-eislo,
a type i,
b type i,
end of itab.
data : matr like marc-matnr.
data : index(2).
****************************************************************************************************New Selection Screen
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS : s_matnr type c RADIOBUTTON GROUP gp1 USER-COMMAND com DEFAULT 'X',
r_matnr TYPE c RADIOBUTTON GROUP gp1.
SELECT-OPTIONS : matr1 for marc-matnr MODIF ID g1 no INTERVALS no-EXTENSION..
SELECT-OPTIONS : matr2 FOR marc-matnr MODIF ID g2 .
SELECTION-SCREEN END OF BLOCK b1.
AT SELECTION-SCREEN OUTPUT.
IF s_matnr EQ 'X'.
LOOP AT SCREEN.
IF screen-group1 EQ 'G2'.
screen-active = 0.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ELSEIF r_matnr EQ 'X'.
LOOP AT SCREEN.
IF screen-group1 EQ 'G1'.
screen-active = 0.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDIF.
START-OF-SELECTION.
PERFORM clear.
PERFORM SELECT_DATA.
PERFORM display.
*& Form SELECT_DATA
FORM SELECT_DATA .
if s_matnr = 'X'.
SHIFT matr1 by 3 PLACES.
matr = matr1.
endif.
if r_matnr = 'X'.
SHIFT matr2 by 3 PLACES.
matr = matr2.
ENDIF.
if s_matnr = 'X'.
select * from marc into table it_marc where matnr = matr.
ELSEIF r_matnr = 'X'.
SELECT * from marc into table it_marc where matnr in matr2.
endif.
LOOP AT it_marc.
MOVE-CORRESPONDING it_marc to itab.
APPEND itab.
ENDLOOP.
Loop at itab.
select single labst
from mard
into itab-labst
where matnr = itab-matnr.
MODIFY itab.
Endloop.
LOOP AT itab.
itab-a = itab-labst - itab-eisbe.
itab-b = itab-labst - itab-eislo.
MODIFY itab.
ENDLOOP.
ENDFORM. " SELECT_DATA
FORM DISPLAY .
perform fill_layout.
perform list_header using t_listheader.
fieldcatalog-fieldname = 'MATNR'.
fieldcatalog-seltext_m = 'Material Number'.
fieldcatalog-outputlen = 15.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'LABST'.
fieldcatalog-seltext_m = 'Actual Stock'.
fieldcatalog-outputlen = 25.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'A'.
fieldcatalog-seltext_m = 'Difference to Safety Stock'.
fieldcatalog-outputlen = 38.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'B'.
fieldcatalog-seltext_m = 'Difference to Minimum Safety Stock'.
fieldcatalog-outputlen = 38.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
perform fill_events.
******************************************************************************CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
call function 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_callback_top_of_page = 'TOP_OF_PAGE'
is_layout = is_layout
it_fieldcat = fieldcatalog[]
i_default = 'X'
i_save = 'A'
it_events = it_events
TABLES
t_outtab = itab
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.
ENDFORM. " DISPLAY
form clear .
clear itab.
clear itab[].
endform. " CLEAR
form list_header using p_t_listheader type slis_t_listheader.
data : if_date TYPE string ,
ef_date TYPE string,
if_date1 type string,
ef_date1 type string.
IF s_matnr = 'X'.
if_date = matr.
ELSEIF r_matnr = 'X'.
shift matr2 by 3 PLACES.
if_date = matr2+0(18).
if_date1 = matr2+18(18).
shift if_date by 9 PLACES.
SHIFT if_date1 by 9 PLACES.
CONCATENATE if_date ' to ' if_date1 INTO if_date.
endif.
data : wa_listheader type slis_listheader.
clear wa_listheader.
wa_listheader-typ = 'H'.
wa_listheader-info = 'Stock Position'.
append wa_listheader to t_listheader.
clear wa_listheader.
wa_listheader-typ = 'S'.
wa_listheader-key = 'Material Code'.
wa_listheader-info = if_date .
append wa_listheader to t_listheader.
endform. " LIST_HEADER
form fill_events .
data : wa_event type slis_alv_event.
wa_event-name = 'TOP_OF_PAGE'.
wa_event-form = 'TOP_OF_PAGE'.
append wa_event to it_events.
clear wa_event.
endform. " FILL_EVENTS
form top_of_page.
call function 'REUSE_ALV_COMMENTARY_WRITE'
exporting
it_list_commentary = t_listheader
endform. "TOP_OF_PAGE
form fill_layout .
is_layout-zebra = 'X'.
endform. "fill_layout
Modifications required are:
1.In Header - material number is coming with 3 extra suffix zeroes. i dont want this.
2.In the first column material numbers are coming with 9 prefix zeroes. i dont want this too.
3.last column negative numbers' minus sign is coming after the number. it should come before the number
4.header column is not coming completely. for example: last column i gave is difference to minimum safety stock. but it is showing only difference to minimu
pls help me...i am a fresher...thanks in advance
REPORT ZMM_STOCKDIFFERENCE.
TABLES: MARC,
MARD. "Sales Document: Header Data
DATA : IT_MARC LIKE MARC OCCURS 0 WITH HEADER LINE,
IT_MARD LIKE MARD OCCURS 0 WITH HEADER LINE.
TYPE-POOLS: SLIS.
DATA:T_LISTHEADER TYPE SLIS_T_LISTHEADER,
IT_EVENTS TYPE SLIS_T_EVENT,
IS_LAYOUT TYPE SLIS_LAYOUT_ALV,
IS_LAYOUT1 TYPE SLIS_LAYOUT_ALV..
DATA:FIELDCATALOG TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
GD_TAB_GROUP TYPE SLIS_T_SP_GROUP_ALV,
GD_LAYOUT TYPE SLIS_LAYOUT_ALV ,
I_REPID LIKE SY-REPID.
I_REPID = SY-REPID.
DATA: BEGIN OF ITAB OCCURS 0,
MATNR LIKE MARC-MATNR,
LABST LIKE MARD-LABST,
EISBE LIKE MARC-EISBE,
EISLO LIKE MARC-EISLO,
A TYPE I,
B TYPE I,
END OF ITAB.
DATA : MATR LIKE MARC-MATNR.
DATA : INDEX(2).
****************************************************************************************************New Selection Screen
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETERS : S_MATNR TYPE C RADIOBUTTON GROUP GP1 USER-COMMAND COM DEFAULT 'X',
R_MATNR TYPE C RADIOBUTTON GROUP GP1.
SELECT-OPTIONS : MATR1 FOR MARC-MATNR MODIF ID G1 NO INTERVALS NO-EXTENSION..
SELECT-OPTIONS : MATR2 FOR MARC-MATNR MODIF ID G2 .
SELECTION-SCREEN END OF BLOCK B1.
AT SELECTION-SCREEN OUTPUT.
IF S_MATNR EQ 'X'.
LOOP AT SCREEN.
IF SCREEN-GROUP1 EQ 'G2'.
SCREEN-ACTIVE = 0.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ELSEIF R_MATNR EQ 'X'.
LOOP AT SCREEN.
IF SCREEN-GROUP1 EQ 'G1'.
SCREEN-ACTIVE = 0.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDIF.
START-OF-SELECTION.
PERFORM CLEAR.
PERFORM SELECT_DATA.
PERFORM DISPLAY.
*& Form SELECT_DATA
FORM SELECT_DATA .
IF S_MATNR = 'X'.
SHIFT MATR1 BY 3 PLACES.
MATR = MATR1.
ENDIF.
IF R_MATNR = 'X'.
SHIFT MATR2 BY 3 PLACES.
MATR = MATR2.
ENDIF.
IF S_MATNR = 'X'.
SELECT * FROM MARC INTO TABLE IT_MARC WHERE MATNR = MATR.
ELSEIF R_MATNR = 'X'.
SELECT * FROM MARC INTO TABLE IT_MARC WHERE MATNR IN MATR2.
ENDIF.
LOOP AT IT_MARC.
MOVE-CORRESPONDING IT_MARC TO ITAB.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
INPUT = ITAB-MATNR
IMPORTING
OUTPUT = ITAB-MATNR.
APPEND ITAB.
ENDLOOP.
LOOP AT ITAB.
SELECT SINGLE LABST
FROM MARD
INTO ITAB-LABST
WHERE MATNR = ITAB-MATNR.
MODIFY ITAB.
ENDLOOP.
LOOP AT ITAB.
ITAB-A = ITAB-LABST - ITAB-EISBE.
ITAB-B = ITAB-LABST - ITAB-EISLO.
MODIFY ITAB.
ENDLOOP.
ENDFORM. " SELECT_DATA
*& Form DISPLAY
text
FORM DISPLAY .
PERFORM FILL_LAYOUT.
PERFORM LIST_HEADER USING T_LISTHEADER.
FIELDCATALOG-FIELDNAME = 'MATNR'.
FIELDCATALOG-SELTEXT_M = 'Material Number'.
FIELDCATALOG-OUTPUTLEN = 15.
APPEND FIELDCATALOG TO FIELDCATALOG.
CLEAR FIELDCATALOG.
FIELDCATALOG-FIELDNAME = 'LABST'.
FIELDCATALOG-SELTEXT_M = 'Actual Stock'.
FIELDCATALOG-OUTPUTLEN = 25.
APPEND FIELDCATALOG TO FIELDCATALOG.
CLEAR FIELDCATALOG.
FIELDCATALOG-FIELDNAME = 'A'.
FIELDCATALOG-SELTEXT_M = 'Difference to Safety Stock'.
FIELDCATALOG-OUTPUTLEN = 38.
APPEND FIELDCATALOG TO FIELDCATALOG.
CLEAR FIELDCATALOG.
FIELDCATALOG-FIELDNAME = 'B'.
FIELDCATALOG-SELTEXT_L = 'Difference to Minimum Safety Stock'.
FIELDCATALOG-OUTPUTLEN = 38.
APPEND FIELDCATALOG TO FIELDCATALOG.
CLEAR FIELDCATALOG.
PERFORM FILL_EVENTS.
******************************************************************************CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
IS_LAYOUT = IS_LAYOUT
IT_FIELDCAT = FIELDCATALOG[]
I_DEFAULT = 'X'
I_SAVE = 'A'
IT_EVENTS = IT_EVENTS
TABLES
T_OUTTAB = ITAB
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.
ENDFORM. " DISPLAY
*& Form clear
text
FORM CLEAR .
CLEAR ITAB.
CLEAR ITAB[].
ENDFORM. " CLEAR
*& Form list_header
text
-->P_T_LISTHEADER text
FORM LIST_HEADER USING P_T_LISTHEADER TYPE SLIS_T_LISTHEADER.
DATA : IF_DATE TYPE STRING ,
EF_DATE TYPE STRING,
IF_DATE1 TYPE STRING,
EF_DATE1 TYPE STRING.
IF S_MATNR = 'X'.
IF_DATE = MATR.
ELSEIF R_MATNR = 'X'.
SHIFT MATR2 BY 3 PLACES.
IF_DATE = MATR2+0(18).
IF_DATE1 = MATR2+18(18).
SHIFT IF_DATE BY 9 PLACES.
SHIFT IF_DATE1 BY 9 PLACES.
CONCATENATE IF_DATE ' to ' IF_DATE1 INTO IF_DATE.
ENDIF.
DATA : WA_LISTHEADER TYPE SLIS_LISTHEADER.
CLEAR WA_LISTHEADER.
WA_LISTHEADER-TYP = 'H'.
WA_LISTHEADER-INFO = 'Stock Position'.
APPEND WA_LISTHEADER TO T_LISTHEADER.
CLEAR WA_LISTHEADER.
WA_LISTHEADER-TYP = 'S'.
WA_LISTHEADER-KEY = 'Material Code'.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
INPUT = IF_DATE
IMPORTING
OUTPUT = IF_DATE.
WA_LISTHEADER-INFO = IF_DATE .
APPEND WA_LISTHEADER TO T_LISTHEADER.
ENDFORM. " LIST_HEADER
*& Form fill_events
text
FORM FILL_EVENTS .
DATA : WA_EVENT TYPE SLIS_ALV_EVENT.
WA_EVENT-NAME = 'TOP_OF_PAGE'.
WA_EVENT-FORM = 'TOP_OF_PAGE'.
APPEND WA_EVENT TO IT_EVENTS.
CLEAR WA_EVENT.
ENDFORM. " FILL_EVENTS
*& Form top_of_page
text
FORM TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = T_LISTHEADER.
ENDFORM. "TOP_OF_PAGE
*& Form fill_layout
text
FORM FILL_LAYOUT .
IS_LAYOUT-ZEBRA = 'X'.
ENDFORM. "fill_layout
Similar Messages
-
Need to download the ALV blocked output in to excel sheet
I have a requirement where there is a need to download the Alv block output to excel sheet. when i click on excel button which is on output only header block data is coming in excel sheet.but i need both header block and item block data into excel.
Hi,
create a pushbutton on the toolbar,
whenever user clicks the pushbutton,
call the fm gui_download for 2 times
for the first time,
append = ' ',
and for second time.
append = 'X'.
check this thread.
Re: How to download multiple ALV Container data on a screen to a single Excel?
Regards.
R K. -
Hi all,
I need to create an ALV using OO approach in which the user should change,insert,delete and save the values which should be reflected in the internal table also.
Can u guys supply me with a sample program so i can refer it.Hello Sharan,
Please refer to program BCALV_GRID_EDIT for your requirement.
Hope this helps and please don't forget to reward points.
Cheers,
Sougata.
p.s. if your Dev client has no flight model data already, first run program SAPBC_DATA_GENERATOR to create flight model data in your client.
Edited by: Sougata Chatterjee on Jun 4, 2008 4:13 PM -
Displaying W message on selction screen and on enter need to go to ALV liso
Dear All,
I have a requirement where i get my data in end-of-selection evenet after that i do some calculation / validation and i display the warning message .
But i need to display the warning on selction screen and on enetr need to go to ALV list , how to make it ?
RegardsWHy on the selection screen?
I just do
message 'my error text' type 'I' display like 'E',
which results in a pop-up (if user has settings that way), and then allows seamless proceed to next step upon acceptance of the message. -
Need to display two ALV GRIDs in a single screen
Hi,
I have a question, i'm using version 4.6. I want to display 2 ALVs in a single screen or by calling.
Step 1 : The internal table (which holds the data for the ALVs has to be populated before calling ALV1 or ALV2)
Step 2 : Display In a single report
ALV1 report (Editable ,Has to be a GRID)
ALV2 report (Non Editable, Has to be a GRID)
(or)
Step 1 : The internal table (which holds the data for the ALVs has to be populated before calling ALV1 or ALV2)
Step 2 :
ALV1 report (Editable ,Has to be a GRID, with a custom button to call ALV2 hiding the ALV1 ie not visible to user)
ALV2 report (Non Editable ,Has to be a GRID, with a custom button to call ALV1 hiding the ALV2 ie not visible to user)
Please help me <b><REMOVED BY MODERATOR></b>
Message was edited by:
Alvaro Tejada GalindoHi
ABAP List Viewer
Simple ALV report
http://www.sapgenie.com/abap/controls/alvgrid.htm
http://wiki.ittoolbox.com/index.php/Code:Ultimate_ALV_table_toolbox
ALV
1. Please give me general info on ALV.
http://www.sapfans.com/forums/viewtopic.php?t=58286
http://www.sapfans.com/forums/viewtopic.php?t=76490
http://www.sapfans.com/forums/viewtopic.php?t=20591
http://www.sapfans.com/forums/viewtopic.php?t=66305 - this one discusses which way should you use - ABAP Objects calls or simple function modules.
2. How do I program double click in ALV?
http://www.sapfans.com/forums/viewtopic.php?t=11601
http://www.sapfans.com/forums/viewtopic.php?t=23010
Check the program in the following link:
http://sap-img.com/abap/display-secondary-list-using-alv-grid.htm
3. How do I add subtotals (I have problem to add them)...
http://www.sapfans.com/forums/viewtopic.php?t=20386
http://www.sapfans.com/forums/viewtopic.php?t=85191
http://www.sapfans.com/forums/viewtopic.php?t=88401
http://www.sapfans.com/forums/viewtopic.php?t=17335
http://www.sapdevelopment.co.uk/reporting/alv/alvgrid_basic.htm
4. How to add list heading like top-of-page in ABAP lists?
http://www.sapfans.com/forums/viewtopic.php?t=58775
http://www.sapfans.com/forums/viewtopic.php?t=60550
http://www.sapfans.com/forums/viewtopic.php?t=16629
5. How to print page number / total number of pages X/XX in ALV?
http://www.sapfans.com/forums/viewtopic.php?t=29597 (no direct solution)
6. ALV printing problems. The favourite is: The first page shows the number of records selected but I don't need this.
http://www.sapfans.com/forums/viewtopic.php?t=64320
http://www.sapfans.com/forums/viewtopic.php?t=44477
7. How can I set the cell color in ALV?
http://www.sapfans.com/forums/viewtopic.php?t=52107
8. How do I print a logo/graphics in ALV?
http://www.sapfans.com/forums/viewtopic.php?t=81149
http://www.sapfans.com/forums/viewtopic.php?t=35498
http://www.sapfans.com/forums/viewtopic.php?t=5013
9. How do I create and use input-enabled fields in ALV?
http://www.sapfans.com/forums/viewtopic.php?t=84933
http://www.sapfans.com/forums/viewtopic.php?t=69878
10. How can I use ALV for reports that are going to be run in background?
http://www.sapfans.com/forums/viewtopic.php?t=83243
http://www.sapfans.com/forums/viewtopic.php?t=19224
11. How can I display an icon in ALV? (Common requirement is traffic light icon).
http://www.sapfans.com/forums/viewtopic.php?t=79424
http://www.sapfans.com/forums/viewtopic.php?t=24512
12. How can I display a checkbox in ALV?
http://www.sapfans.com/forums/viewtopic.php?t=88376
http://www.sapfans.com/forums/viewtopic.php?t=40968
http://www.sapfans.com/forums/viewtopic.php?t=6919
13. Top-of-page in ALV
selection-screen and top-of-page in ALV
14. ALV Group Heading
http://www.sap-img.com/fu037.htm
How to add list heading like top-of-page in ABAP lists?
http://www.sapfans.com/forums/viewtopic.php?t=58775
http://www.sapfans.com/forums/viewtopic.php?t=60550
http://www.sapfans.com/forums/viewtopic.php?t=16629
15. ALV output to PDF conversion
It has an example code for PDF Conversion.
http://www.erpgenie.com/abap/code/abap51.htm
converting the output of alv in pdf
Go thru these programs they may help u to try on some hands on
ALV Demo program
BCALV_DEMO_HTML
BCALV_FULLSCREEN_DEMO ALV Demo: Fullscreen Mode
BCALV_FULLSCREEN_DEMO_CLASSIC ALV demo: Fullscreen mode
BCALV_GRID_DEMO Simple ALV Control Call Demo Program
BCALV_TREE_DEMO Demo for ALV tree control
BCALV_TREE_SIMPLE_DEMO
BC_ALV_DEMO_HTML_D0100
The common features of report are column alignment, sorting, filtering, subtotals, totals etc. To implement these, a lot of coding and logic is to be put. To avoid that we can use a concept called ABAP List Viewer (ALV).
This helps us to implement all the features mentioned very effectively.
Using ALV, We can have three types of reports:
1. Simple Report
2. Block Report
3. Hierarchical Sequential Report
There are some function modules which will enable to produce the above reports without much effort.
All the definitions of internal tables, structures and constants are declared in a type-pool called SLIS.
1. SIMPLE REPORT.
The important function modules are
a. Reuse_alv_list_display
b. Reuse_alv_fieldcatalog_merge
c. Reuse_alv_events_get
d. Reuse_alv_commentary_write
e. Reuse_alv_grid_display
A. REUSE_ALV_LIST_DISPLAY : This is the function module which prints the data.
The important parameters are :
I. Export :
i. I_callback_program : report id
ii. I_callback_pf_status_set : routine where a user can set his own pf status or change the functionality of the existing pf status
iii. I_callback_user_command : routine where the function codes are handled
iv. I_structure name : name of the dictionary table
v. Is_layout : structure to set the layout of the report
vi. It_fieldcat : internal table with the list of all fields and their attributes which are to be printed (this table can be populated automatically by the function module REUSE_ALV_FIELDCATALOG_MERGE
vii. It_events : internal table with a list of all possible events of ALV and their corresponding form names.
II. Tables :
i. t_outtab : internal table with the data to be output
B. REUSE_ALV_FIELDCATALOG_MERGE : This function module is used to populate a fieldcatalog which is essential to display the data in ALV. If the output data is from a single dictionary table and all the columns are selected, then we need not exclusively create the field catalog. Its enough to mention the table name as a parameter(I_structure name) in the REUSE_ALV_LIST_DISPLAY. But in other cases we need to create it.
The Important Parameters are :
I. Export :
i. I_program_name : report id
ii. I_internal_tabname : the internal output table
iii. I_inclname : include or the report name where all the dynamic forms are handled.
II Changing
ct_fieldcat : an internal table with the type SLIS_T_FIELDCAT_ALV which is
declared in the type pool SLIS.
C. REUSE_ALV_EVENTS_GET : Returns table of possible events for a list type
Parameters :
I. Import :
Et_Events : The event table is returned with all possible CALLBACK events
for the specified list type (column 'NAME'). For events to be processed by Callback, their 'FORM' field must be filled. If the field is initialized, the event is ignored. The entry can be read from the event table, the field 'FORM' filled and the entry modified using constants from the type pool SALV.
II. Export :
I_List_type :
0 = simple list REUSE_ALV_LIST_DISPLAY
1 = hierarchcal-sequential list REUSE_ALV_HIERSEQ_LIST_DISPLAY
2 = simple block list REUSE_ALV_BLOCK_LIST_APPEND
3 = hierarchical-sequential block list
REUSE_ALV_BLOCK_LIST_HS_APPEND
D. REUSE_ALV_COMMENTARY_WRITE : This is used in the Top-of-page event to print the headings and other comments for the list.
Parameters :
I. it_list_commentary : internal table with the headings of the type slis_t_listheader.
This internal table has three fields :
Typ : H header, S selection , A - action
Key : only when typ is S.
Info : the text to be printed
E. REUSE_ALV_GRID_DISPLAY : A new function in 4.6 version, to display the results in grid rather than as a preview.
Parameters : same as reuse_alv_list_display
This is an example for simple list.
2. BLOCK REPORT
This is used to have multiple lists continuously.
The important functions used in this report are:
A. REUSE_ALV_BLOCK_LIST_INIT
B. REUSE_ALV_BLOCK_LIST_APPEND
C. REUSE_ALV_BLOCK_LIST_HS_APPEND
D. REUSE_ALV_BLOCK_LIST_DISPLAY
A. REUSE_ALV_BLOCK_LIST_INIT
Parameters:
I. I_CALLBACK_PROGRAM
II. I_CALLBACK_PF_STATUS_SET
III. I_CALLBACK_USER_COMMAND
This function module is used to set the default gui status etc.
B. REUSE_ALV_BLOCK_LIST_APPEND
Parameters :
Export :
I. is_layout : layout settings for block
II. it_fieldcat : field catalog
III. i_tabname : internal table name with output data
IV. it_events : internal table with all possible events
Tables :
i. t_outtab : internal table with output data.
This function module adds the data to the block.
Repeat this function for all the different blocks to be displayed one after the other.
C. REUSE_ALV_BLOCK_LIST_HS_APPEND
This function module is used for hierarchical sequential blocks.
D. REUSE_ALV_BLOCK_LIST_DISPLAY
Parameters : All the parameters are optional.
This function module display the list with data appended by the above function.
Here the functions REUSE_ALV_FIELDCATALOG_MERGE, REUSE_ALV_EVENTS_GET, REUSE_ALV_COMMENTARY_WRITE can be used.
3. Hierarchical reports :
Hierarchical sequential list output.
The function module is
A. REUSE_ALV_HIERSEQ_LIST_DISPLAY
Parameters:
I. Export:
i. I_CALLBACK_PROGRAM
ii. I_CALLBACK_PF_STATUS_SET
iii. I_CALLBACK_USER_COMMAND
iv. IS_LAYOUT
v. IT_FIELDCAT
vi. IT_EVENTS
vii. i_tabname_header : Name of the internal table in the program containing the
output data of the highest hierarchy level.
viii. i_tabname_item : Name of the internal table in the program containing the
output data of the lowest hierarchy level.
ix. is_keyinfo : This structure contains the header and item table field
names which link the two tables (shared key).
II. Tables
i. t_outtab_header : Header table with data to be output
ii. t_outtab_item : Name of the internal table in the program containing the
output data of the lowest hierarchy level.
slis_t_fieldcat_alv : This internal table contains the field attributes. This internal table can be populated automatically by using REUSE_ALV_FIELDCATALOG_MERGE.
Important Attributes :
A. col_pos : position of the column
B. fieldname : internal fieldname
C. tabname : internal table name
D. ref_fieldname : fieldname (dictionary)
E. ref_tabname : table (dictionary)
F. key(1) : column with key-color
G. icon(1) : icon
H. symbol(1) : symbol
I. checkbox(1) : checkbox
J. just(1) : (R)ight (L)eft (C)ent.
K. do_sum(1) : sum up
L. no_out(1) : (O)blig.(X)no out
M. outputlen : output length
N. seltext_l : long key word
O. seltext_m : middle key word
P. seltext_s : short key word
Q. reptext_ddic : heading (ddic)
R. ddictxt(1) : (S)hort (M)iddle (L)ong
S. datatype : datatype
T. hotspot(1) : hotspot
Regards
Anji -
Need Help in Interactive ALV Report
Hi guru's,
I need sample code of Interactive ALV when on selecting an particular field, it should open an another ALV windows or pop-up window. Please help me and points will be rewarded for the right code.
Regards
Rajiv Christopherhi,
may b it will b helpful 2 u.
INTERACTIVE ALV
REPORT Z50651_ALV_INTERACTIVE MESSAGE-ID ZMSG_50651
LINE-SIZE 100
LINE-COUNT 60
NO STANDARD PAGE HEADING.
******************TABLES DECLARATION*****************
TABLES : VBAP,MARA.
*****************TYPE POOLS**************************
TYPE-POOLS : SLIS.
****************INTERNAL TABLES**********************
DATA : BEGIN OF IT_VBAP OCCURS 0,
VBELN LIKE VBAP-VBELN, "SALES DOCUMENT
POSNR LIKE VBAP-POSNR, "SALES DOCUMENT ITEM
MATNR LIKE VBAP-MATNR, "MATERIAL NUMBER
END OF IT_VBAP.
****************TEMPORARY VARIABLES******************
DATA : V_VBELN LIKE VBAP-VBELN."SALES DOCUMENT
DATA : V_MTART LIKE MARA-MTART. "MATERIAL TYPE
*****************FIELD CATALOG***********************
DATA : IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
****************LAYOUT*******************************
DATA : WA_LAYOUT TYPE SLIS_LAYOUT_ALV.
***************VARIANT*******************************
DATA : G_VARIANT LIKE DISVARIANT.
****************SAVE*********************************
DATA : G_SAVE(1) TYPE C.
*****************EVENTS******************************
DATA : XS_EVENTS TYPE SLIS_ALV_EVENT,
G_EVENTS TYPE SLIS_T_EVENT.
******************PF STATUS**************************
DATA : PF_STATUS TYPE SLIS_FORMNAME VALUE 'SET_PF_STATUS'.
******************USER COMMAND************************
DATA : USER_COMMAND TYPE SLIS_FORMNAME VALUE 'SET_USER_COMMAND',
R_UCOMM LIKE SY-UCOMM.
****************SELECTION SCREEN************************
SELECT-OPTIONS : S_VBELN FOR VBAP-VBELN.
***************AT SELECTION SCREEN*********************
AT SELECTION-SCREEN.
PERFORM VALIDATE.
**************START-OF-SELECTION**************************
START-OF-SELECTION.
PERFORM GET_DETAILS.
PERFORM FIELDCAT.
PERFORM LAYOUT.
PERFORM VARIANT.
PERFORM SAVE.
PERFORM EVENTS.
PERFORM ALV_DISPLAY.
*********************FORMS*******************************************
*& Form validate
text
--> p1 text
<-- p2 text
FORM VALIDATE .
SELECT SINGLE VBELN
FROM VBAP
INTO V_VBELN
WHERE VBELN IN S_VBELN.
IF SY-SUBRC <> 0.
MESSAGE E000 WITH 'enter valid vbeln'.
ENDIF.
ENDFORM. " validate
*& Form get_details
text
--> p1 text
<-- p2 text
FORM GET_DETAILS .
SELECT VBELN
POSNR
MATNR
FROM VBAP
INTO TABLE IT_VBAP
WHERE VBELN IN S_VBELN.
IF SY-SUBRC <> 0.
MESSAGE E000 WITH 'no details found'.
ENDIF.
ENDFORM. " get_details
*& Form fieldcat
text
--> p1 text
<-- p2 text
FORM FIELDCAT .
WA_FIELDCAT-TABNAME = 'IT_VBAP'.
WA_FIELDCAT-FIELDNAME = 'VBELN'.
WA_FIELDCAT-OUTPUTLEN = 10.
WA_FIELDCAT-SELTEXT_L = 'SALES DOC'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'IT_VBAP'.
WA_FIELDCAT-FIELDNAME = 'POSNR'.
WA_FIELDCAT-OUTPUTLEN = 6.
WA_FIELDCAT-SELTEXT_L = 'ITEM'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'IT_VBAP'.
WA_FIELDCAT-FIELDNAME = 'MATNR'.
WA_FIELDCAT-OUTPUTLEN = 18.
WA_FIELDCAT-SELTEXT_L = 'MATERIAL NO'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
ENDFORM. " fieldcat
*& Form LAYOUT
text
--> p1 text
<-- p2 text
FORM LAYOUT .
WA_LAYOUT-ZEBRA = 'X'.
ENDFORM. " LAYOUT
*& Form VARIANT
text
--> p1 text
<-- p2 text
FORM VARIANT .
CLEAR G_VARIANT.
G_VARIANT-REPORT = SY-REPID.
ENDFORM. " VARIANT
*& Form SAVE
text
--> p1 text
<-- p2 text
FORM SAVE .
CLEAR G_SAVE.
G_SAVE = 'A'.
ENDFORM. " SAVE
*& Form EVENTS
text
--> p1 text
<-- p2 text
FORM EVENTS .
CLEAR XS_EVENTS.
XS_EVENTS-NAME = SLIS_EV_TOP_OF_PAGE.
XS_EVENTS-FORM = 'TOP_OF_PAGE'.
APPEND XS_EVENTS TO G_EVENTS.
ENDFORM. " EVENTS
*& Form TOP_OF_PAGE
text
FORM TOP_OF_PAGE.
WRITE :/ ' INTELLI GROUP'.
ENDFORM. "TOP_OF_PAGE
*& Form ALV_DISPLAY
text
--> p1 text
<-- p2 text
FORM ALV_DISPLAY .
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = PF_STATUS
I_CALLBACK_USER_COMMAND = USER_COMMAND
I_STRUCTURE_NAME =
IS_LAYOUT = WA_LAYOUT
IT_FIELDCAT = IT_FIELDCAT
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = G_SAVE
IS_VARIANT = G_VARIANT
IT_EVENTS = G_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
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = IT_VBAP
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.
ENDFORM. " ALV_DISPLAY
*& Form SET_PF_STATUS
text
FORM SET_PF_STATUS USING EXTAB TYPE SLIS_T_EXTAB.
SET PF-STATUS 'Z50651_PFSTATUS' EXCLUDING EXTAB.
ENDFORM. "SET_PF_STATUS
*& Form SET_USER_COMMAND
text
FORM SET_USER_COMMAND USING R_UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
CASE R_UCOMM.
WHEN 'DC'.
READ TABLE IT_VBAP INDEX RS_SELFIELD-TABINDEX.
IF SY-SUBRC = 0.
SELECT SINGLE MTART
FROM MARA
INTO V_MTART
WHERE MATNR = IT_VBAP-MATNR.
IF SY-SUBRC 0.
MESSAGE E000 WITH 'NO MATERIAL DESCRIPTION FOR SELECTED MATERIAL NO'.
ELSE.
WRITE :/ 'MATERIAL NO :',IT_VBAP-MATNR.
WRITE :/ 'MATERIAL TYPE :' , V_MTART.
ENDIF.
ENDIF.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'EXIT'.
LEAVE TO SCREEN 0.
WHEN 'CLOSE'.
CALL TRANSACTION 'SE38'.
ENDCASE.
ENDFORM. "SET_USER_COMMAND
Reward if useful... -
Need help in interactive alv list
hi,
i need document and simple Example prog for interactive alv list.If anybody have it kindly help me..
thanks in advance,
Kavitha.hi,
Jus copy and paste the following code in SE38.
*& This is an Interactive ALV report, where on line slection we can see
*& the secondry list
REPORT ZZ_22038_22098_002 NO STANDARD PAGE HEADING LINE-SIZE 650
MESSAGE-ID ZZ_9838 .
TYPE-POOLS: SLIS.
*type declaration for values from ekko
TYPES: BEGIN OF I_EKKO,
EBELN LIKE EKKO-EBELN,
AEDAT LIKE EKKO-AEDAT,
BUKRS LIKE EKKO-BUKRS,
BSART LIKE EKKO-BSART,
LIFNR LIKE EKKO-LIFNR,
END OF I_EKKO.
DATA: IT_EKKO TYPE STANDARD TABLE OF I_EKKO INITIAL SIZE 0,
WA_EKKO TYPE I_EKKO.
*type declaration for values from ekpo
TYPES: BEGIN OF I_EKPO,
EBELN LIKE EKPO-EBELN,
EBELP LIKE EKPO-EBELP,
MATNR LIKE EKPO-MATNR,
MENGE LIKE EKPO-MENGE,
MEINS LIKE EKPO-MEINS,
NETPR LIKE EKPO-NETPR,
END OF I_EKPO.
DATA: IT_EKPO TYPE STANDARD TABLE OF I_EKPO INITIAL SIZE 0,
WA_EKPO TYPE I_EKPO .
*variable for Report ID
DATA: V_REPID LIKE SY-REPID .
*declaration for fieldcatalog
DATA: I_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
DATA: IT_LISTHEADER TYPE SLIS_T_LISTHEADER.
declaration for events table where user comand or set PF status will
be defined
DATA: V_EVENTS TYPE SLIS_T_EVENT,
WA_EVENT TYPE SLIS_ALV_EVENT.
declartion for layout
DATA: ALV_LAYOUT TYPE SLIS_LAYOUT_ALV.
declaration for variant(type of display we want)
DATA: I_VARIANT TYPE DISVARIANT,
I_VARIANT1 TYPE DISVARIANT,
I_SAVE(1) TYPE C.
*PARAMETERS : p_var TYPE disvariant-variant.
*Title displayed when the alv list is displayed
DATA: I_TITLE_EKKO TYPE LVC_TITLE VALUE 'FIRST LIST DISPLAYED'.
DATA: I_TITLE_EKPO TYPE LVC_TITLE VALUE 'SECONDRY LIST DISPLAYED'.
INITIALIZATION.
V_REPID = SY-REPID.
PERFORM BUILD_FIELDCATLOG.
PERFORM EVENT_CALL.
PERFORM POPULATE_EVENT.
START-OF-SELECTION.
PERFORM DATA_RETRIEVAL.
PERFORM BUILD_LISTHEADER USING IT_LISTHEADER.
PERFORM DISPLAY_ALV_REPORT.
*& Form BUILD_FIELDCATLOG
Fieldcatalog has all the field details from ekko
FORM BUILD_FIELDCATLOG.
WA_FIELDCAT-TABNAME = 'IT_EKKO'.
WA_FIELDCAT-FIELDNAME = 'EBELN'.
WA_FIELDCAT-SELTEXT_M = 'PO NO.'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'IT_EKKO'.
WA_FIELDCAT-FIELDNAME = 'AEDAT'.
WA_FIELDCAT-SELTEXT_M = 'DATE.'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'IT_EKKO'.
WA_FIELDCAT-FIELDNAME = 'BUKRS'.
WA_FIELDCAT-SELTEXT_M = 'COMPANY CODE'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'IT_EKKO'.
WA_FIELDCAT-FIELDNAME = 'BUKRS'.
WA_FIELDCAT-SELTEXT_M = 'DOCMENT TYPE'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'IT_EKKO'.
WA_FIELDCAT-FIELDNAME = 'LIFNR'.
WA_FIELDCAT-NO_OUT = 'X'.
WA_FIELDCAT-SELTEXT_M = 'VENDOR CODE'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
ENDFORM. "BUILD_FIELDCATLOG
*& Form EVENT_CALL
we get all events - TOP OF PAGE or USER COMMAND in table v_events
FORM EVENT_CALL.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = V_EVENTS
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. "EVENT_CALL
*& Form POPULATE_EVENT
Events populated for TOP OF PAGE & USER COMAND
FORM POPULATE_EVENT.
READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.
IF SY-SUBRC EQ 0.
WA_EVENT-FORM = 'TOP_OF_PAGE'.
MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
WA_EVENT-FORM.
ENDIF.
READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'USER_COMMAND'.
IF SY-SUBRC EQ 0.
WA_EVENT-FORM = 'USER_COMMAND'.
MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
WA_EVENT-NAME.
ENDIF.
ENDFORM. "POPULATE_EVENT
*& Form data_retrieval
retreiving values from the database table ekko
FORM DATA_RETRIEVAL.
SELECT EBELN AEDAT BUKRS BSART LIFNR FROM EKKO INTO TABLE IT_EKKO.
ENDFORM. "data_retrieval
*& Form bUild_listheader
text
-->I_LISTHEADEtext
FORM BUILD_LISTHEADER USING I_LISTHEADER TYPE SLIS_T_LISTHEADER.
DATA HLINE TYPE SLIS_LISTHEADER.
HLINE-INFO = 'this is my first alv pgm'.
HLINE-TYP = 'H'.
ENDFORM. "build_listheader
*& Form display_alv_report
text
FORM DISPLAY_ALV_REPORT.
V_REPID = SY-REPID.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = V_REPID
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
I_GRID_TITLE = I_TITLE_EKKO
IT_FIELDCAT = I_FIELDCAT[]
I_SAVE = 'A'
IT_EVENTS = V_EVENTS
TABLES
T_OUTTAB = IT_EKKO
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. "display_alv_report
*& Form TOP_OF_PAGE
text
FORM TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = IT_LISTHEADER
ENDFORM. "TOP_OF_PAGE
*& Form USER_COMMAND
text
-->R_UCOMM text
-->, text
-->RS_SLEFIELDtext
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
CASE R_UCOMM.
WHEN '&IC1'.
READ TABLE IT_EKKO INTO WA_EKKO INDEX RS_SELFIELD-TABINDEX.
PERFORM BUILD_FIELDCATLOG_EKPO.
PERFORM EVENT_CALL_EKPO.
PERFORM POPULATE_EVENT_EKPO.
PERFORM DATA_RETRIEVAL_EKPO.
PERFORM BUILD_LISTHEADER_EKPO USING IT_LISTHEADER.
PERFORM DISPLAY_ALV_EKPO.
ENDCASE.
ENDFORM. "user_command
*& Form BUILD_FIELDCATLOG_EKPO
text
FORM BUILD_FIELDCATLOG_EKPO.
WA_FIELDCAT-TABNAME = 'IT_EKPO'.
WA_FIELDCAT-FIELDNAME = 'EBELN'.
WA_FIELDCAT-SELTEXT_M = 'PO NO.'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'IT_EKPO'.
WA_FIELDCAT-FIELDNAME = 'EBELP'.
WA_FIELDCAT-SELTEXT_M = 'LINE NO'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'I_EKPO'.
WA_FIELDCAT-FIELDNAME = 'MATNR'.
WA_FIELDCAT-SELTEXT_M = 'MATERIAL NO.'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'I_EKPO'.
WA_FIELDCAT-FIELDNAME = 'MENGE'.
WA_FIELDCAT-SELTEXT_M = 'QUANTITY'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'I_EKPO'.
WA_FIELDCAT-FIELDNAME = 'MEINS'.
WA_FIELDCAT-SELTEXT_M = 'UOM'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'I_EKPO'.
WA_FIELDCAT-FIELDNAME = 'NETPR'.
WA_FIELDCAT-SELTEXT_M = 'PRICE'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
ENDFORM. "BUILD_FIELDCATLOG_EKPO
*& Form event_call_ekpo
we get all events - TOP OF PAGE or USER COMMAND in table v_events
FORM EVENT_CALL_EKPO.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = V_EVENTS
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. "event_call_ekpo
*& Form POPULATE_EVENT
Events populated for TOP OF PAGE & USER COMAND
FORM POPULATE_EVENT_EKPO.
READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.
IF SY-SUBRC EQ 0.
WA_EVENT-FORM = 'TOP_OF_PAGE'.
MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
WA_EVENT-FORM.
ENDIF.
ENDFORM. "POPULATE_EVENT
*& Form TOP_OF_PAGE
text
FORM F_TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = IT_LISTHEADER
ENDFORM. "TOP_OF_PAGE
*& Form USER_COMMAND
text
-->R_UCOMM text
-->, text
-->RS_SLEFIELDtext
*retreiving values from the database table ekko
FORM DATA_RETRIEVAL_EKPO.
SELECT EBELN EBELP MATNR MENGE MEINS NETPR FROM EKPO INTO TABLE IT_EKPO.
ENDFORM.
FORM BUILD_LISTHEADER_EKPO USING I_LISTHEADER TYPE SLIS_T_LISTHEADER.
DATA: HLINE1 TYPE SLIS_LISTHEADER.
HLINE1-TYP = 'H'.
HLINE1-INFO = 'CHECKING PGM'.
ENDFORM.
FORM DISPLAY_ALV_EKPO.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = V_REPID
I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
I_GRID_TITLE = I_TITLE_EKPO
IT_FIELDCAT = I_FIELDCAT[]
I_SAVE = 'A'
IT_EVENTS = V_EVENTS
TABLES
T_OUTTAB = IT_EKPO
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.
ENDFORM.
Another program..............
TABLES : LFA1,KNA1.
DATA ITAB LIKE LFA1 OCCURS 0 WITH HEADER LINE.
DATA ITAB1 LIKE KNA1 OCCURS 0 WITH HEADER LINE.
SELECTION-SCREEN BEGIN OF BLOCK B WITH FRAME TITLE T.
SELECT-OPTIONS LIFNR FOR LFA1-LIFNR.
SELECTION-SCREEN END OF BLOCK B.
INITIALIZATION .
T = 'VENDOR DETAILS'.
AT SELECTION-SCREEN OUTPUT.
LIFNR-LOW = '1000'.
LIFNR-HIGH = '4000'.
APPEND LIFNR.
START-OF-SELECTION.
SELECT * FROM LFA1 INTO ITAB WHERE LIFNR IN LIFNR.
APPEND ITAB.
ENDSELECT.
LOOP AT ITAB.
FORMAT COLOR 6 INVERSE ON.
WRITE : /2 SY-VLINE,4 ITAB-LAND1,7 SY-VLINE,9 ITAB-NAME1,44 SY-VLINE,46
ITAB-ORT01,60 SY-VLINE.
HIDE ITAB-ORT01.
ENDLOOP.
FORMAT COLOR OFF.
TOP-OF-PAGE.
WRITE : / 'VENDOR DETAILS'.
ULINE AT /(70).
SKIP.
END-OF-PAGE.
AT LINE-SELECTION.
CASE SY-LSIND.
WHEN 1.
SELECT * FROM KNA1 INTO TABLE ITAB1 WHERE ORT01 = ITAB-ORT01.
LOOP AT ITAB1.
FORMAT COLOR 6 INVERSE ON.
WRITE : /2 SY-VLINE,4 ITAB1-LAND1,7 SY-VLINE,9 ITAB1-NAME1,44 SY-VLINE,
46 ITAB1-ORT01,60 SY-VLINE.
FORMAT COLOR OFF.
ENDLOOP.
ENDCASE.
TOP-OF-PAGE DURING LINE-SELECTION.
CASE SY-LSIND.
WHEN 1.
WRITE : / 'VENDOR DETAILS'.
ULINE AT /(70).
SKIP.
FORMAT COLOR 6 INVERSE ON.
WRITE : /2 SY-VLINE,4 'LAND',7 SY-VLINE,9 'NAME',44 SY-VLINE,46
'CITY',60 SY-VLINE.
FORMAT COLOR OFF.
WHEN 2.
WRITE : / 'ANOTHER VENDOR DETAILS'.
FORMAT COLOR 6 INVERSE ON.
WRITE : /2 SY-VLINE,4 'LAND',7 SY-VLINE,9 'NAME',44 SY-VLINE,46
'CITY',60 SY-VLINE.
FORMAT COLOR OFF.
endcase.
END-OF-SELECTION.
feel free to ask your clarifications.
Senthil kumar -
I need simple example for alv grid
hi
i need code for simple example for alv grid.
thanks.hi bharat,
this is report with most of the functionality.
report zus_alv_demo_grid .
tables: ekko.
type-pools: slis.
types: begin of t_ekko,
ebeln type ekpo-ebeln,
ebelp type ekpo-ebelp,
statu type ekpo-statu,
aedat type ekpo-aedat,
matnr type ekpo-matnr,
menge type ekpo-menge,
meins type ekpo-meins,
netpr type ekpo-netpr,
peinh type ekpo-peinh,
line_color(4) type c, "Used to store row color
end of t_ekko.
data: it_ekko type standard table of t_ekko initial size 0,
wa_ekko type t_ekko.
*ALV data declarations
data: fieldcatalog type slis_t_fieldcat_alv with header line,
gd_tab_group type slis_t_sp_group_alv,
gd_layout type slis_layout_alv,
gd_repid like sy-repid.
Data declaration for EVENT and PRINT PARAMETER.
data: gt_events type slis_t_event,
gd_prntparams type slis_print_alv.
data declaration for sorting.
data : it_sortcat type slis_sortinfo_alv occurs 1,
wa_sort like line of it_sortcat.
data : i_list_comments type slis_t_listheader.
start-of-selection.
perform data_retrieval.
perform user_command.
perform build_fieldcatalog.
perform build_layout.
perform build_events.
perform build_print_params.
perform build_sortcat.
perform display_alv_report.
end-of-selection.
*TOP-OF-PAGE.
PERFORM top-of-page.
end-of-page.
*& Form build_fieldcatalog
text
--> p1 text
<-- p2 text
form build_fieldcatalog.
fieldcatalog-fieldname = 'EBELN'.
fieldcatalog-seltext_m = 'Purchase Order'.
fieldcatalog-col_pos = 0.
fieldcatalog-outputlen = 10.
fieldcatalog-emphasize = 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'EBELP'.
fieldcatalog-seltext_m = 'PO Item'.
fieldcatalog-col_pos = 1.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'STATU'.
fieldcatalog-seltext_m = 'Status'.
fieldcatalog-col_pos = 2.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'AEDAT'.
fieldcatalog-seltext_m = 'Item change date'.
fieldcatalog-col_pos = 3.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'MATNR'.
fieldcatalog-seltext_m = 'Material Number'.
fieldcatalog-col_pos = 4.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'MENGE'.
fieldcatalog-seltext_m = 'PO quantity'.
fieldcatalog-col_pos = 5.
fieldcatalog-do_sum = 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'MEINS'.
fieldcatalog-seltext_m = 'Order Unit'.
fieldcatalog-col_pos = 6.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'NETPR'.
fieldcatalog-seltext_m = 'Net Price'.
fieldcatalog-col_pos = 7.
fieldcatalog-outputlen = 15.
fieldcatalog-datatype = 'CURR'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'PEINH'.
fieldcatalog-seltext_m = 'Price Unit'.
fieldcatalog-col_pos = 8.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
endform. " build_fieldcatalog
*& Form build_layout
text
--> p1 text
<-- p2 text
form build_layout.
gd_layout-no_input = 'X'.
gd_layout-colwidth_optimize = 'X'.
gd_layout-totals_text = 'Totals'(201).
Set layout field for row attributes(i.e. color)
gd_layout-info_fieldname = 'LINE_COLOR'.
gd_layout-totals_only = 'X'.
gd_layout-f2code = 'DISP'. "Sets fcode for
*when double
"click(press f2)*
gd_layout-group_change_edit = 'X'.
gd_layout-header_text = 'helllllo'.
endform. " build_layout
*& Form data_retrieval
text
--> p1 text
<-- p2 text
form data_retrieval.
data: ld_color(1) type c.
select ebeln ebelp statu aedat matnr menge meins netpr
peinh from ekpo into table it_ekko.
*Populate field with color attributes
loop at it_ekko into wa_ekko.
Populate color variable with colour properties
Char 1 = C (This is a color property)
Char 2 = 3 (Color codes: 1 - 7)
Char 3 = Intensified on/off ( 1 or 0 )
Char 4 = Inverse display on/off ( 1 or 0 )
i.e. wa_ekko-line_color = 'C410'
ld_color = ld_color + 1.
Only 7 colours so need to reset color value
if ld_color = 8.
ld_color = 1.
endif.
concatenate 'C' ld_color '10' into wa_ekko-line_color.
wa_ekko-line_color = 'C410'.
modify it_ekko from wa_ekko.
endloop.
endform. " data_retrieval
*& Form display_alv_report
text
--> p1 text
<-- p2 text
form display_alv_report.
gd_repid = sy-repid.
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
i_callback_program = gd_repid
is_layout = gd_layout
i_callback_top_of_page = 'TOP-OF-PAGE'
i_callback_user_command = 'USER_COMMAND'
i_callback_pf_status_set = 'SET_PF_STATUS'
it_event = gt_events
is_print = gd_prntparams
it_fieldcat = fieldcatalog[]
it_sort = it_sortcat
i_save = 'X'
tables
t_outtab = it_ekko
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.
endform. " DISPLAY_ALV_REPORT
*& Form user_command
text
--> p1 text
<-- p2 text
*& Form top-of-page
text
--> p1 text
<-- p2 text
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 = 'EKKO Table 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 = 'GANESH_LOGO'.
endform. " top-of-page
FORM user_command *
--> R_UCOMM *
--> RS_SELFIELD *
form user_command using r_ucomm like sy-ucomm
rs_selfield type slis_selfield.
case r_ucomm.
when '&IC1'.
if rs_selfield-fieldname = 'EBELN'.
read table it_ekko into wa_ekko index rs_selfield-tabindex.
set parameter id 'BES' field wa_ekko-ebeln.
call transaction 'ME23N' and skip first screen.
endif.
when 'ULHAS'.
if rs_selfield-fieldname = 'EBELN'.
read table it_ekko into wa_ekko index rs_selfield-tabindex.
set parameter id 'BES' field wa_ekko-ebeln.
call transaction 'ME23N' and skip first screen.
endif.
endcase.
endform.
FORM set_pf_status *
--> RT_EXTAB *
form set_pf_status using rt_extab type slis_t_extab.
set pf-status 'ZNEWSTATUS'.
endform.
*& Form build_events
text
--> p1 text
<-- p2 text
form build_events.
data: ls_event type slis_alv_event.
call function 'REUSE_ALV_EVENTS_GET'
exporting
i_list_type = 0
importing
et_events = gt_events[]
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.
read table gt_events with key name = slis_ev_end_of_page
into ls_event.
if sy-subrc = 0.
move 'END_OF_PAGE' to ls_event-form.
append ls_event to gt_events.
endif.
read table gt_events with key name = slis_ev_end_of_list
into ls_event.
if sy-subrc = 0.
move 'END_OF_LIST' to ls_event-form.
append ls_event to gt_events.
endif.
endform. " build_events
*& Form build_print_params
text
--> p1 text
<-- p2 text
form build_print_params.
gd_prntparams-reserve_lines = '3'. "Lines reserved for footer
gd_prntparams-no_coverpage = 'X'.
endform. " build_print_params
FORM END_OF_PAGE *
form end_of_page.
data: listwidth type i,
ld_pagepos(10) type c,
ld_page(10) type c.
write: sy-uline(50).
skip. write:/40 'Page:', sy-pagno .
endform.
FORM END_OF_LIST *
form end_of_list.
data: listwidth type i,
ld_pagepos(10) type c,
ld_page(10) type c.
skip. write:/40 'Page:', sy-pagno .
endform.
*& Form build_sortcat
text
--> p1 text
<-- p2 text
form build_sortcat.
wa_sort-spos = 1.
wa_sort-fieldname = 'EBELN'.
append wa_sort to it_sortcat.
wa_sort-spos = 2.
wa_sort-fieldname = 'EBELP'.
append wa_sort to it_sortcat.
endform. " build_sortcat
Rewards if helpfull
regards
vijay dwivedi -
PF Status Modification in Blacl ALV
Hi All,
In one of our requirements we need all the Standard Menus and Functions of the Output Status of an ALV.
But we want the Download to Local File to behave differently. Instead of an Usual Download we would like the EXcel with the Prepopulated data (Same as in Output Display of ALV) to OPEN up and then the User can SAVE it to any desired location.
I have copied the Status using the SE41 and the set the PF status in my Program.I have used the Parameter I_CALLBACK_PF_STATUS_SET in the FM - REUSE_ALV_BLOCK_LIST_INIT. The Routine sets the PF Status.
And the PF status is correct.But in the Menu I have Changed the FUnction Code of LOcal Downloa d'%PC' to '%PA' to point to my New USER_COMMAND (Subroutine).
But on execution of the Function Code in output the USER_COMMAND Form Routine is not getting Called.But the Other Codes (which were copied from the Standard PF Status) is working Fine.
How Do I make my NEW FUNCTION CODE WORK ?What are the steps I need to do?
Thanks in Advance.
ArunavaHi,
First of all try removing '%' in your function code and see whether it works..normally function codes starting with '%' are system function codes..
If that does not work then check whether your callback program is properly filled while calling REUSE_ALV_BLOCK_LIST_INIT and make sure the GUI Status you see is really the one you created. Put a break-point in your callback_pf_status_set routine and check.
If it is fine till this point then check whether the events table that you are filling and passing to REUSE_ALV_BLOCK_LIST_APPEND fm calls is properly filled.
Like,
t_events-name = slis_ev_user_command.
t_events-form = 'USER_COMMAND'.
APPEND t_events.
Hope this helps..
Sri -
Need sample prog for ALV reporting
Hi All,
I need some sample ALV programs, Please mail docs to below
avinavpratapsinghDOTseATmail.com
Thanks n Rgds,
KaliHi,
check link.
link:[https://www.sdn.sap.com/irj/scn/wiki?path=/display/snippets/sampleALVHEIRARCHYreportprogram]
link:[www.blogcatalog.com/blogs/all-sap-abap-programming/posts/tag/abap%20alv%20reports%20sample%20codes/ ]
hope it'll help.
Regards,
Sneha. -
Need to send my ALV report via Email.
hi
I have this ALV report. I know I can go up to the toolbar and email the report manually to the user. But I am looking for a code to do that automatically. meaning When I run the report in the selection screen i will provide the email address and the report after its ran it should also email that (when its done manually it sends the attachment as an PDF, which i have no problem with) report as PDF.
Please help me with the code i need to use..
I tried with the following but the program crashes
CALL FUNCTION 'RFC_MAIL' DESTINATION 'LOCAL_EXEC'
EXPORTING USER = '[email protected]'
TABLES MAIL = REC.You can output the report to a spool and then convert the spool to PDF using standard FM <b>CONVERT_ABAPSPOOLJOB_2_PDF</b>. Then use FM <b>SO_DOCUMENT_SEND_API1</b> to attach the pdf data in an outgoing email.
Here is the sample codes:
*& Report ZEMAILPDF *
*& Converts spool request into PDF document and emails it to *
*& recipicant. *
*& Execution *
*& This program can be run in background or online and a spool request *
*& will still be created *
REPORT zemailpdf.
PARAMETER: p_email1 LIKE somlreci1-receiver
DEFAULT '[email protected]',
p_sender LIKE somlreci1-receiver
DEFAULT ''[email protected]'',
p_delspl AS CHECKBOX,
p_online no-display.
*DATA DECLARATION
DATA: gd_recsize TYPE i.
* Spool IDs
TYPES: BEGIN OF t_tbtcp.
INCLUDE STRUCTURE tbtcp.
TYPES: END OF t_tbtcp.
DATA: it_tbtcp TYPE STANDARD TABLE OF t_tbtcp INITIAL SIZE 0,
wa_tbtcp TYPE t_tbtcp.
* Job Runtime Parameters
DATA: gd_eventid LIKE tbtcm-eventid,
gd_eventparm LIKE tbtcm-eventparm,
gd_external_program_active LIKE tbtcm-xpgactive,
gd_jobcount LIKE tbtcm-jobcount,
gd_jobname LIKE tbtcm-jobname,
gd_stepcount LIKE tbtcm-stepcount,
gd_error TYPE sy-subrc,
gd_reciever TYPE sy-subrc.
DATA: w_recsize TYPE i,
w_spool_nr like sy-spono.
* %_print LIKE pri_params.
DATA: gd_subject LIKE sodocchgi1-obj_descr,
it_mess_bod LIKE solisti1 OCCURS 0 WITH HEADER LINE,
it_mess_att LIKE solisti1 OCCURS 0 WITH HEADER LINE,
gd_sender_type LIKE soextreci1-adr_typ,
gd_attachment_desc TYPE so_obj_nam,
gd_attachment_name TYPE so_obj_des.
* Spool to PDF conversions
DATA: gd_spool_nr LIKE tsp01-rqident,
gd_destination LIKE rlgrap-filename,
gd_bytecount LIKE tst01-dsize,
gd_buffer TYPE string.
* Binary store for PDF
DATA: BEGIN OF it_pdf_output OCCURS 0.
INCLUDE STRUCTURE tline.
DATA: END OF it_pdf_output.
CONSTANTS: c_dev LIKE sy-sysid VALUE 'DEV',
c_no(1) TYPE c VALUE ' ',
c_device(4) TYPE c VALUE 'LOCL'.
*START-OF-SELECTION.
START-OF-SELECTION.
* Write statement to represent report output. Spool request is created
* if write statement is executed in background. This could also be an
* ALV grid which would be converted to PDF without any extra effort
WRITE 'Hello World'.
new-page.
commit work.
new-page print off.
If p_online = 'X'.
* Processing performed when program calls itself when run online
gd_spool_nr = sy-spono.
EXPORT gd_spool_nr TO MEMORY ID 'SPOOLTOPDF'.
EXIT.
endif.
IF sy-batch EQ 'X'.
PERFORM get_job_details.
PERFORM obtain_spool_id.
ELSE.
gd_spool_nr = sy-spono.
* If executed online, it submits a program to perform the write statements
* instructing it to create a spool request, this could be another program
* which just performs the write statements and then exports sy-spono
* to memory. But in this example it calls itself passing X to parameter
* p_online, which takes it down an alternative procesing path.
submit ZSPOOLTOPDF2
with p_online = 'X'
to sap-spool
spool parameters %_print
* archive parameters %_print
without spool dynpro
and return.
ENDIF.
* Get spool id from program called above
IMPORT gd_spool_nr FROM MEMORY ID 'SPOOLTOPDF'.
PERFORM convert_spool_to_pdf.
PERFORM process_email.
if p_delspl EQ 'X'.
PERFORM delete_spool.
endif.
IF sy-sysid = c_dev.
wait up to 5 seconds.
SUBMIT rsconn01 WITH mode = 'INT'
WITH output = 'X'
AND RETURN.
ENDIF.
* FORM obtain_spool_id *
FORM obtain_spool_id.
CHECK NOT ( gd_jobname IS INITIAL ).
CHECK NOT ( gd_jobcount IS INITIAL ).
SELECT * FROM tbtcp
INTO TABLE it_tbtcp
WHERE jobname = gd_jobname
AND jobcount = gd_jobcount
AND stepcount = gd_stepcount
AND listident <> '0000000000'
ORDER BY jobname
jobcount
stepcount.
READ TABLE it_tbtcp INTO wa_tbtcp INDEX 1.
IF sy-subrc = 0.
message s004(zdd) with gd_spool_nr.
gd_spool_nr = wa_tbtcp-listident.
MESSAGE s004(zdd) WITH gd_spool_nr.
ELSE.
MESSAGE s005(zdd).
ENDIF.
ENDFORM.
* FORM get_job_details *
FORM get_job_details.
* Get current job details
CALL FUNCTION 'GET_JOB_RUNTIME_INFO'
IMPORTING
eventid = gd_eventid
eventparm = gd_eventparm
external_program_active = gd_external_program_active
jobcount = gd_jobcount
jobname = gd_jobname
stepcount = gd_stepcount
EXCEPTIONS
no_runtime_info = 1
OTHERS = 2.
ENDFORM.
* FORM convert_spool_to_pdf *
FORM convert_spool_to_pdf.
CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
EXPORTING
src_spoolid = gd_spool_nr
no_dialog = c_no
dst_device = c_device
IMPORTING
pdf_bytecount = gd_bytecount
TABLES
pdf = it_pdf_output
EXCEPTIONS
err_no_abap_spooljob = 1
err_no_spooljob = 2
err_no_permission = 3
err_conv_not_possible = 4
err_bad_destdevice = 5
user_cancelled = 6
err_spoolerror = 7
err_temseerror = 8
err_btcjob_open_failed = 9
err_btcjob_submit_failed = 10
err_btcjob_close_failed = 11
OTHERS = 12.
CHECK sy-subrc = 0.
* Transfer the 132-long strings to 255-long strings
LOOP AT it_pdf_output.
TRANSLATE it_pdf_output USING ' ~'.
CONCATENATE gd_buffer it_pdf_output INTO gd_buffer.
ENDLOOP.
TRANSLATE gd_buffer USING '~ '.
DO.
it_mess_att = gd_buffer.
APPEND it_mess_att.
SHIFT gd_buffer LEFT BY 255 PLACES.
IF gd_buffer IS INITIAL.
EXIT.
ENDIF.
ENDDO.
ENDFORM.
* FORM process_email *
FORM process_email.
DESCRIBE TABLE it_mess_att LINES gd_recsize.
CHECK gd_recsize > 0.
PERFORM send_email USING p_email1.
* perform send_email using p_email2.
ENDFORM.
* FORM send_email *
* --> p_email *
FORM send_email USING p_email.
CHECK NOT ( p_email IS INITIAL ).
REFRESH it_mess_bod.
* Default subject matter
gd_subject = 'Subject'.
gd_attachment_desc = 'Attachname'.
* CONCATENATE 'attach_name' ' ' INTO gd_attachment_name.
it_mess_bod = 'Message Body text, line 1'.
APPEND it_mess_bod.
it_mess_bod = 'Message Body text, line 2...'.
APPEND it_mess_bod.
* If no sender specified - default blank
IF p_sender EQ space.
gd_sender_type = space.
ELSE.
gd_sender_type = 'INT'.
ENDIF.
* Send file by email as .xls speadsheet
PERFORM send_file_as_email_attachment
tables it_mess_bod
it_mess_att
using p_email
'Example .xls documnet attachment'
'PDF'
gd_attachment_name
gd_attachment_desc
p_sender
gd_sender_type
changing gd_error
gd_reciever.
ENDFORM.
* FORM delete_spool *
FORM delete_spool.
DATA: ld_spool_nr TYPE tsp01_sp0r-rqid_char.
ld_spool_nr = gd_spool_nr.
CHECK p_delspl <> c_no.
CALL FUNCTION 'RSPO_R_RDELETE_SPOOLREQ'
EXPORTING
spoolid = ld_spool_nr.
ENDFORM.
*& Form SEND_FILE_AS_EMAIL_ATTACHMENT
* Send email
FORM send_file_as_email_attachment tables it_message
it_attach
using p_email
p_mtitle
p_format
p_filename
p_attdescription
p_sender_address
p_sender_addres_type
changing p_error
p_reciever.
DATA: ld_error TYPE sy-subrc,
ld_reciever TYPE sy-subrc,
ld_mtitle LIKE sodocchgi1-obj_descr,
ld_email LIKE somlreci1-receiver,
ld_format TYPE so_obj_tp ,
ld_attdescription TYPE so_obj_nam ,
ld_attfilename TYPE so_obj_des ,
ld_sender_address LIKE soextreci1-receiver,
ld_sender_address_type LIKE soextreci1-adr_typ,
ld_receiver LIKE sy-subrc.
data: t_packing_list like sopcklsti1 occurs 0 with header line,
t_contents like solisti1 occurs 0 with header line,
t_receivers like somlreci1 occurs 0 with header line,
t_attachment like solisti1 occurs 0 with header line,
t_object_header like solisti1 occurs 0 with header line,
w_cnt type i,
w_sent_all(1) type c,
w_doc_data like sodocchgi1.
ld_email = p_email.
ld_mtitle = p_mtitle.
ld_format = p_format.
ld_attdescription = p_attdescription.
ld_attfilename = p_filename.
ld_sender_address = p_sender_address.
ld_sender_address_type = p_sender_addres_type.
* Fill the document data.
w_doc_data-doc_size = 1.
* Populate the subject/generic message attributes
w_doc_data-obj_langu = sy-langu.
w_doc_data-obj_name = 'SAPRPT'.
w_doc_data-obj_descr = ld_mtitle .
w_doc_data-sensitivty = 'F'.
* Fill the document data and get size of attachment
CLEAR w_doc_data.
READ TABLE it_attach INDEX w_cnt.
w_doc_data-doc_size =
( w_cnt - 1 ) * 255 + STRLEN( it_attach ).
w_doc_data-obj_langu = sy-langu.
w_doc_data-obj_name = 'SAPRPT'.
w_doc_data-obj_descr = ld_mtitle.
w_doc_data-sensitivty = 'F'.
CLEAR t_attachment.
REFRESH t_attachment.
t_attachment[] = it_attach[].
* Describe the body of the message
CLEAR t_packing_list.
REFRESH t_packing_list.
t_packing_list-transf_bin = space.
t_packing_list-head_start = 1.
t_packing_list-head_num = 0.
t_packing_list-body_start = 1.
DESCRIBE TABLE it_message LINES t_packing_list-body_num.
t_packing_list-doc_type = 'RAW'.
APPEND t_packing_list.
* Create attachment notification
t_packing_list-transf_bin = 'X'.
t_packing_list-head_start = 1.
t_packing_list-head_num = 1.
t_packing_list-body_start = 1.
DESCRIBE TABLE t_attachment LINES t_packing_list-body_num.
t_packing_list-doc_type = ld_format.
t_packing_list-obj_descr = ld_attdescription.
t_packing_list-obj_name = ld_attfilename.
t_packing_list-doc_size = t_packing_list-body_num * 255.
APPEND t_packing_list.
* Add the recipients email address
CLEAR t_receivers.
REFRESH t_receivers.
t_receivers-receiver = ld_email.
t_receivers-rec_type = 'U'.
t_receivers-com_type = 'INT'.
t_receivers-notif_del = 'X'.
t_receivers-notif_ndel = 'X'.
APPEND t_receivers.
CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
EXPORTING
document_data = w_doc_data
put_in_outbox = 'X'
sender_address = ld_sender_address
sender_address_type = ld_sender_address_type
commit_work = 'X'
IMPORTING
sent_to_all = w_sent_all
TABLES
packing_list = t_packing_list
contents_bin = t_attachment
contents_txt = it_message
receivers = t_receivers
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
document_type_not_exist = 3
operation_no_authorization = 4
parameter_error = 5
x_error = 6
enqueue_error = 7
OTHERS = 8.
* Populate zerror return code
ld_error = sy-subrc.
* Populate zreceiver return code
LOOP AT t_receivers.
ld_receiver = t_receivers-retrn_code.
ENDLOOP.
ENDFORM.
<i><b>**** Points are always welcome ****</b></i> -
I need model program for alv grid control
hi all,
i need example program and detailed description of alv grid control . what is the features of alv grid control over normal alv.Hi,
Check out the below sample code.I have pasted even the include programs, u can copy the program.
SAP-User : BWR2KOR *
Author (name) : Bharadwaja R *
Created on/in : 07.02.2006 *
Description : Report for Listing IDOC-Informations for the given *
segment on the selection screen *
Changes: - for each change: add chapter *
- changes get a changes number (ascending) *
- source code has to be marked with SAP-user-name *
change date and number *
Change number : *
Enhance/Change numer: 90xxxx (900001-909999) -> /RB11/YBF_MODIF *
SAP-User : *
Author (name) : *
Created on/in : *
Reason for the change: *
REPORT Y16S_VIEW_IDOC_CONTENT LINE-SIZE 230
NO STANDARD PAGE HEADING.
Data declarations
INCLUDE Y16S_VIEW_IDOC_CONTENT_D01I.
Selection screen
INCLUDE Y16S_VIEW_IDOC_CONTENT_S01I.
Events
INCLUDE Y16S_VIEW_IDOC_CONTENT_E01I.
Routines for program
INCLUDE Y16S_VIEW_IDOC_CONTENT_F01I.
START-OF-SELECTION.
Get the fieldcatalog
PERFORM get_fcat.
**Method for getting the reference for the structure
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING it_fieldcatalog = g_t_fieldcat
IMPORTING ep_table = dref.
**Passing the reference of the structure to field-symbol of type table
ASSIGN dref->* TO .
Fill IDoc data
PERFORM fill_data.
Display ALV
perform display_grid.
INCLUDE Y16S_VIEW_IDOC_CONTENT_D01I *
Data declaration : Tables used *
TABLES : edidd, "Data record (IDoc)
edidc, "Control record (IDoc)
edid4, "IDoc Data Records from 4.0 onwards
dd03d, "Dynpro fields for table fields
edsappl, "EDI: IDoc Segment Application Structure
int_seg, "Data record details display
dd03l, "Table Fields
edisegment. "IDoc Development : IDoc Segment
Name of segment
DATA : g_f_segment LIKE dntab-tabname.
*--Data Declaration.
FIELD-SYMBOLS : TYPE ANY.
DATA : BEGIN OF g_t_edid OCCURS 0,
docnum LIKE edid4-docnum,
segnum LIKE edid4-segnum,
sdata LIKE edid4-sdata,
END OF g_t_edid.
*DATA : g_t_edid LIKE edid4 OCCURS 0 WITH HEADER LINE.
DATA : BEGIN OF g_t_edidc OCCURS 0,
docnum LIKE edidc-docnum,
credat LIKE edidc-credat,
mestyp LIKE edidc-mestyp,
END OF g_t_edidc.
DATA : BEGIN OF g_t_appl OCCURS 0,
fieldname LIKE edsappl-fieldname,
END OF g_t_appl.
DATA : g_v_tabix LIKE sy-tabix.
ALV Declarations
*Declaration of type groups
TYPE-POOLS :
slis. "Globale Typen für generische Listbausteine
DATA: g_f_okcode LIKE sy-ucomm,
g_container TYPE scrfname VALUE 'G_C_ALV',
grid1 TYPE REF TO cl_gui_alv_grid,
g_custom_container TYPE REF TO cl_gui_custom_container.
FIELD-SYMBOLS: .
Class
CLASS: g_cl_event DEFINITION DEFERRED.
Alv Grid Constants
DATA : g_c_handle(4) TYPE c VALUE '0100',
g_c_save(1) TYPE c VALUE 'A',
g_c_exit(4) TYPE c VALUE 'EXIT'.
DATA: g_v_layout TYPE lvc_s_layo,
g_f_print TYPE lvc_s_prnt,
g_f_variant TYPE disvariant,
g_v_recv TYPE REF TO g_cl_event.
CONSTANTS : gc_ucomm_sel_criteria(12) VALUE 'SEL_CRITERIA'.
CLASS G_Cl_EVENT DEFINITION
Class to handle GRID Events *
CLASS g_cl_event DEFINITION.
PUBLIC SECTION.
METHODS:
constructor IMPORTING value(grid_name) TYPE REF TO
cl_gui_alv_grid,
handle_toolbar
FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING e_object e_interactive,
handle_user_command
FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm.
PRIVATE SECTION.
DATA: g_v_alv TYPE REF TO cl_gui_alv_grid.
ENDCLASS. "g_cl_event DEFINITION
CLASS g_cl_events IMPLEMENTATION
Class to handle GRID Events *
CLASS g_cl_event IMPLEMENTATION.
Handling methods
METHOD constructor.
g_v_alv = grid_name.
ENDMETHOD. "constructor
Tool bar
METHOD handle_toolbar.
CONSTANTS:
lc_quickinfo_sel_criteria(111) VALUE 'Show Selection Criteria'.
DATA:
l_toolbar TYPE stb_button.
CLEAR l_toolbar.
MOVE 0 TO l_toolbar-butn_type.
MOVE gc_ucomm_sel_criteria TO l_toolbar-function.
MOVE icon_select_with_condition TO l_toolbar-icon.
MOVE lc_quickinfo_sel_criteria TO l_toolbar-quickinfo.
MOVE space TO l_toolbar-disabled.
APPEND l_toolbar TO e_object->mt_toolbar.
ENDMETHOD. "handle_toolbar
User Command
METHOD handle_user_command.
CASE e_ucomm.
When Exit button is used
WHEN 'EXIT'.
PERFORM exit_program.
WHEN OTHERS.
ENDCASE.
ENDMETHOD. "handle_user_command
ENDCLASS. "g_cl_event IMPLEMENTATION
INCLUDE Y16S_VIEW_IDOC_CONTENT_S01I *
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
Creation Date of IDoc
SELECT-OPTIONS : s_date FOR edidc-credat.
IDoc Number
SELECT-OPTIONS : s_idocnm FOR edidc-docnum.
Basic IDoc type
SELECT-OPTIONS : s_idoctp FOR edidc-idoctp.
*Message type
SELECT-OPTIONS : s_mestyp FOR edidc-mestyp.
Segment name
PARAMETERS : p_segnam LIKE edisegment-segtyp OBLIGATORY.
Field name
SELECT-OPTIONS : s_fldnam FOR dd03d-fieldname NO INTERVALS.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME.
Field name
PARAMETERS : p_fldnam LIKE dd03d-fieldname.
Field contents of a field of an IDoc segment
SELECT-OPTIONS : s_fldval FOR int_seg-string.
SELECTION-SCREEN END OF BLOCK b2.
INCLUDE Y16S_VIEW_IDOC_CONTENT_E01I *
Check for IDoc number on selection screen
AT SELECTION-SCREEN ON s_idocnm.
IF NOT s_idocnm IS INITIAL.
Data fetch : Control record (IDoc)
SELECT COUNT( * ) FROM edidc
WHERE docnum IN s_idocnm.
IF sy-subrc NE 0.
MESSAGE e429(mo).
ENDIF.
ELSE.
message for required entry.
MESSAGE e055(00).
ENDIF.
Check for segment name on selection screen
AT SELECTION-SCREEN ON p_segnam.
Check segment name is an input on selection screen
IF NOT p_segnam IS INITIAL.
Data fetch : Table Fields
SELECT SINGLE * FROM dd03l
WHERE tabname EQ p_segnam.
IF sy-subrc NE 0.
MESSAGE e429(mo).
ENDIF.
ENDIF.
F4 help for fieldname
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_fldnam-low.
DATA : l_rc LIKE sy-subrc.
Check segment name on selection screen is not empty
IF NOT p_segnam IS INITIAL.
PERFORM get_f4help USING l_rc.
IF l_rc = 0.
Fill the selected field name
READ TABLE g_t_appl INDEX g_v_tabix.
CHECK sy-subrc = 0.
s_fldnam-low = g_t_appl-fieldname.
s_fldnam-sign = 'I'.
s_fldnam-option = 'EQ'.
APPEND s_fldnam.
ENDIF.
ENDIF.
Check for field name on selection screen
AT SELECTION-SCREEN ON s_fldnam.
IF NOT p_fldnam IS INITIAL.
Data fetch : Table Fields
SELECT SINGLE * FROM dd03l
WHERE tabname EQ p_segnam
AND fieldname IN s_fldnam.
IF sy-subrc NE 0.
MESSAGE e429(mo).
ENDIF.
ENDIF.
F4 help for fieldname
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fldnam.
DATA : l_rc LIKE sy-subrc.
Check segment name on selection screen is not empty
IF NOT p_segnam IS INITIAL.
F4 Help for fieldname
PERFORM get_f4help USING l_rc.
IF l_rc = 0.
Fill the selected field name
READ TABLE g_t_appl INDEX g_v_tabix.
CHECK sy-subrc = 0.
p_fldnam = g_t_appl-fieldname.
ENDIF.
ENDIF.
Check for field name on selection screen
AT SELECTION-SCREEN ON p_fldnam.
IF NOT p_fldnam IS INITIAL.
Data fetch : Table Fields
SELECT SINGLE * FROM dd03l
WHERE tabname EQ p_segnam
AND fieldname EQ p_fldnam.
IF sy-subrc NE 0.
MESSAGE e429(mo).
ENDIF.
ENDIF.
Check for field name on selection screen
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_fldval-low.
Check field name is an input on selection screen
IF NOT p_fldnam IS INITIAL.
Get the domain values as F4 help
PERFORM get_domain_value.
ENDIF.
*Check for Message type on selection screen
AT SELECTION-SCREEN ON s_mestyp.
IF NOT s_mestyp IS INITIAL.
Data fetch : Logical message types
SELECT COUNT( * ) FROM edmsg
WHERE msgtyp IN s_mestyp.
IF sy-subrc NE 0.
MESSAGE e429(mo).
ENDIF.
ENDIF.
*Check for Basic type on selection screen
AT SELECTION-SCREEN ON s_idoctp.
IF NOT s_idoctp IS INITIAL.
Data fetch : Basic types
SELECT COUNT( * ) FROM edbas
WHERE idoctyp IN s_idoctp.
IF sy-subrc NE 0.
MESSAGE e429(mo).
ENDIF.
ENDIF.
*& Form GET_F4HELP
text
-->P_L_RC text
FORM get_f4help USING p_l_rc LIKE sy-subrc.
DATA : l_v_segment LIKE edsappl-segtyp.
DATA : l_t_help_value LIKE help_value OCCURS 0 WITH HEADER LINE.
Segment name
l_v_segment = p_segnam.
Data fetch : EDI: IDoc Segment Application Structure
SELECT pos fieldname FROM edsappl
INTO CORRESPONDING FIELDS OF TABLE g_t_appl
WHERE segtyp = l_v_segment
ORDER BY pos.
Popup having data
CALL FUNCTION 'POPUP_WITH_TABLE_DISPLAY'
EXPORTING
endpos_col = 110
endpos_row = 16
startpos_col = 90
startpos_row = 1
titletext = text-001
IMPORTING
choise = g_v_tabix
TABLES
valuetab = g_t_appl
EXCEPTIONS
break_off = 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.
Return code
p_l_rc = sy-subrc.
ENDFORM. " GET_F4HELP
*& Form GET_DOMAIN_VALUE
text
-->P_L_RC text
FORM get_domain_value.
DD: Domain header with text
DATA : l_s_dd01v LIKE dd01v.
Value table
DATA : l_v_valuetab LIKE l_s_dd01v-entitytab.
RFC Table Read: Description of Fields to Retrieve
DATA : l_t_db_fld LIKE rfc_db_fld OCCURS 0 WITH HEADER LINE.
RFC Table Read: Select Options / WHERE Clause
DATA : l_t_options LIKE rfc_db_opt OCCURS 0 WITH HEADER LINE.
Table with a 512 byte field
DATA : l_t_valuetab LIKE tab512 OCCURS 0 WITH HEADER LINE.
*Data Dictionary access routines
CALL FUNCTION 'G_DOMAIN_READ'
EXPORTING
domain = p_fldnam
langu = sy-langu
IMPORTING
domain_attr = l_s_dd01v
EXCEPTIONS
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.
l_v_valuetab = l_s_dd01v-entitytab.
l_t_db_fld-fieldname = p_fldnam.
APPEND l_t_db_fld.
External access to R/3 tables via RFC
CALL FUNCTION 'RFC_READ_TABLE'
EXPORTING
query_table = l_v_valuetab
DELIMITER = ' '
NO_DATA = ' '
ROWSKIPS = 0
ROWCOUNT = 0
TABLES
options = l_t_options
fields = l_t_db_fld
data = l_t_valuetab
EXCEPTIONS
table_not_available = 1
table_without_data = 2
option_not_valid = 3
field_not_valid = 4
not_authorized = 5
data_buffer_exceeded = 6
OTHERS = 7
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 g_v_tabix.
IF NOT l_t_valuetab[] IS INITIAL.
Popup having data
CALL FUNCTION 'POPUP_WITH_TABLE_DISPLAY'
EXPORTING
endpos_col = 110
endpos_row = 16
startpos_col = 90
startpos_row = 1
titletext = text-001
IMPORTING
choise = g_v_tabix
TABLES
valuetab = l_t_valuetab
EXCEPTIONS
break_off = 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.
READ TABLE l_t_valuetab INDEX g_v_tabix.
CHECK sy-subrc = 0.
Fill the select-options of Fieldvalue
s_fldval-low = l_t_valuetab-wa.
s_fldval-sign = 'I'.
s_fldval-option = 'EQ'.
APPEND s_fldval.
ENDIF.
ENDFORM. " GET_DOMAIN_VALUE
INCLUDE Y16S_VIEW_IDOC_CONTENT_F01I *
*& Module STATUS_0100 OUTPUT
ALV grid output
MODULE status_0100 OUTPUT.
*set the screen elements
SET PF-STATUS 'MAIN100'.
SET TITLEBAR 'TITLE100'.
*instantiation
IF g_custom_container IS INITIAL.
g_v_layout-zebra = 'X'.
g_v_layout-sel_mode = 'A'.
Create custom container
CREATE OBJECT g_custom_container
EXPORTING container_name = g_container.
Create ALV grid
CREATE OBJECT grid1
EXPORTING i_parent = g_custom_container.
CREATE OBJECT g_v_recv EXPORTING grid_name = grid1.
Display ALV grid
CALL METHOD grid1->set_table_for_first_display
EXPORTING
i_save = g_c_save
is_layout = g_v_layout
is_print = g_f_print
is_variant = g_f_variant
CHANGING
it_fieldcatalog = g_t_fieldcat
it_outtab = refresh_table_display.
ENDIF.
User command
SET HANDLER g_v_recv->handle_user_command FOR grid1.
CALL METHOD grid1->set_toolbar_interactive.
ENDMODULE. " STATUS_0100 OUTPUT
*& Module USER_COMMAND_0100 INPUT
User actions on grid
MODULE user_command_0100 INPUT.
Dispatch the okcode
CALL METHOD cl_gui_cfw=>dispatch.
CASE g_f_okcode.
WHEN g_c_exit.
PERFORM exit_program.
WHEN OTHERS.
*do nothing
ENDCASE.
CLEAR g_f_okcode.
ENDMODULE. " USER_COMMAND_0100 INPUT
*& Form EXIT_PROGRAM
Exit from the Grid
--> p1 text
<-- p2 text
FORM exit_program.
Container for Custom Controls in the Screen Area
CALL METHOD g_custom_container->free.
*Control Framework Basic Class
CALL METHOD cl_gui_cfw=>flush.
Call the selection screen
SET SCREEN 0.
LEAVE SCREEN.
ENDFORM. " EXIT_PROGRAM
*& Form GET_FCAT
Field catalog fill
--> p1 text
<-- p2 text
FORM get_fcat.
*Segment details regarding fields
PERFORM get_segment_details.
Populate the Fieldcatalog
PERFORM fill_fieldcat.
IF g_f_variant-variant IS INITIAL.
Get the default variant
g_f_repid = sy-repid.
CLEAR : g_f_variant.
g_f_variant-report = g_f_repid.
g_r_x_variant = g_f_variant.
Get default variant
CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
EXPORTING
i_save = g_c_save
CHANGING
cs_variant = g_r_x_variant
EXCEPTIONS
not_found = 2.
g_f_variant = g_r_x_variant.
g_f_variant-variant = 'X'.
ENDIF.
ENDFORM. " GET_FCAT
*& Form FILL_DATA
Fill the output internal table
--> p1 text
<-- p2 text
FORM fill_data.
FIELD-SYMBOLS TYPE ANY.
DATA : l_rc LIKE sy-subrc.
*Get the IDoc data
PERFORM get_data.
LOOP AT g_t_edid.
*Check for filtering the values
IF ( NOT ( p_fldnam IS INITIAL AND s_fldval[] IS INITIAL ) ).
Field value check
PERFORM check_fieldvalue USING l_rc.
IF l_rc NE 0.
CONTINUE.
ENDIF.
ENDIF.
ASSIGN LOCAL COPY OF g_t_edid TO .
ENDLOOP.
ENDFORM. " FILL_DATA
*& Form DISPLAY_GRID
Display ALV grid
--> p1 text
<-- p2 text
FORM display_grid.
Call ALV grid
CALL SCREEN 100.
ENDFORM. " DISPLAY_GRID
*& Form CHECK_FIELDVALUE
Check the fieldvalue
-->P_L_RC text
FORM check_fieldvalue USING p_l_rc LIKE sy-subrc.
Segment data
ASSIGN g_t_edid-sdata TO CASTING TYPE (p_segnam).
Segment fields
LOOP AT g_t_segment WHERE fieldname = p_fldnam.
ASSIGN COMPONENT g_t_segment-fieldname
OF STRUCTURE IN s_fldval.
p_l_rc = 0.
ELSE.
p_l_rc = 4.
ENDIF.
ENDLOOP.
ENDFORM. " CHECK_FIELDVALUE
*& Form GET_DATA
Get the IDoc data
--> p1 text
<-- p2 text
FORM get_data.
*Clear the header line of the internal table
CLEAR : g_t_edid,
g_t_edidc.
Clear the body of the internal table
REFRESH : g_t_edid,
g_t_edidc.
*Data fetch : Control record (IDoc)
SELECT docnum credat mestyp FROM edidc
INTO TABLE g_t_edidc
WHERE docnum IN s_idocnm AND
credat IN s_date AND
mestyp IN s_mestyp AND
idoctp IN s_idoctp.
*Date/Message type if not initial
IF ( ( NOT ( s_date[] IS INITIAL ) )
OR ( NOT ( s_mestyp[] IS INITIAL ) )
OR ( NOT ( s_idoctp[] IS INITIAL ) ) ).
Check the control record of the IDoc
PERFORM check_control_data.
ELSE.
Data fetch : IDoc Data Records from 4.0 onwards
SELECT docnum segnum sdata FROM edid4 INTO TABLE g_t_edid
WHERE docnum IN s_idocnm AND
segnam EQ p_segnam.
ENDIF.
ENDFORM. " GET_DATA
*& Form CHECK_CONTROL_DATA
Check the control data of IDoc
--> p1 text
<-- p2 text
FORM check_control_data.
CHECK NOT g_t_edidc[] IS INITIAL.
Data fetch : IDoc Data Records from 4.0 onwards
SELECT docnum segnum sdata FROM edid4 INTO TABLE g_t_edid
WHERE docnum IN s_idocnm AND
segnam EQ p_segnam.
LOOP AT g_t_edid.
READ TABLE g_t_edidc WITH KEY docnum = g_t_edid-docnum.
*Check for the correct MT
IF sy-subrc = 0.
CONTINUE.
ELSE.
*Delete, if unsuccessful
DELETE g_t_edid.
ENDIF.
ENDLOOP.
ENDFORM. " CHECK_CONTROL_DATA
*& Form GET_SEGMENT_DETAILS
Segment details regarding fields
--> p1 text
<-- p2 text
FORM get_segment_details.
Segment name
g_f_segment = p_segnam.
CALL FUNCTION 'NAMETAB_GET'
EXPORTING
langu = sy-langu
tabname = g_f_segment
TABLES
nametab = g_t_segment
EXCEPTIONS
internal_error = 1
table_has_no_fields = 2
table_not_activ = 3
no_texts_found = 4
OTHERS = 5.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " GET_SEGMENT_DETAILS
*& Form FILL_FIELDCAT
Populate the Fieldcatalog
--> p1 text
<-- p2 text
FORM fill_fieldcat.
DATA : lv_pos TYPE i.
IDoc number in the catalog
lv_pos = 1.
g_r_fieldcat-fieldname = 'DOCNUM'.
g_r_fieldcat-ref_table = 'EDID4'.
g_r_fieldcat-ref_field = 'DOCNUM'.
g_r_fieldcat-key = 'X'.
g_r_fieldcat-col_pos = lv_pos.
g_r_fieldcat-outputlen = '10'.
APPEND g_r_fieldcat TO g_t_fieldcat.
Segment number in the catalog
ADD 1 TO lv_pos.
g_r_fieldcat-fieldname = 'SEGNUM'.
g_r_fieldcat-ref_table = 'EDID4'.
g_r_fieldcat-ref_field = 'SEGNUM'.
g_r_fieldcat-key = 'X'.
g_r_fieldcat-col_pos = lv_pos.
g_r_fieldcat-outputlen = '10'.
g_r_fieldcat-colddictxt = 'X'.
g_r_fieldcat-reptext = text-002.
APPEND g_r_fieldcat TO g_t_fieldcat.
**Populating fieldcatalog with segment field
LOOP AT g_t_segment .
ADD 1 TO lv_pos.
CLEAR g_r_fieldcat.
g_r_fieldcat-fieldname = g_t_segment-fieldname .
g_r_fieldcat-ref_table = p_segnam.
g_r_fieldcat-ref_field = g_t_segment-fieldname .
g_r_fieldcat-key = 'X'.
g_r_fieldcat-col_pos = lv_pos.
g_r_fieldcat-outputlen = '10'.
Check for given fields on the selection screen
IF NOT g_t_segment-fieldname IN s_fldnam.
g_r_fieldcat-no_out = 'X'.
ENDIF.
*Column text
IF g_t_segment-fieldtext IS INITIAL.
*Get the DDIC texts for columns
PERFORM get_ddic_texts.
ENDIF.
APPEND g_r_fieldcat TO g_t_fieldcat.
ENDLOOP.
ENDFORM. " FILL_FIELDCAT
*& Form GET_DDIC_TEXTS
Get the DDIC texts
--> p1 text
<-- p2 text
FORM get_ddic_texts.
DATA : l_f_descr TYPE string.
Get the texts for the data element
CALL FUNCTION 'TB_DATAELEMENT_GET_TEXTS'
EXPORTING
name = g_t_segment-fieldname
IMPORTING
description = l_f_descr
LENGTH_FIELD =
LENGTH_HEADER =
LENGTH_LONG =
LENGTH_MIDDLE =
LENGTH_SHORT =
TEXT_HEADER =
TEXT_LONG =
TEXT_MIDDLE =
TEXT_SHORT =
EXCEPTIONS
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.
*Add DDIC text..
g_r_fieldcat-colddictxt = 'X'.
g_r_fieldcat-reptext = l_f_descr.
ENDFORM. " GET_DDIC_TEXTS -
Need to help in alv grid graph
Hi All,
I made alv grid report.I put graph button in screen using pf status(&graph).
Now when I execute the report output come and my graph button is also working fine.But when I click
the graph button, the graph shows defalut column wise.Now I right click on graph and select chart type and then select LINES wise then graph shows LINES wise. Can we do default LINES wise so that
when I click on graph button then it should come LINES wise default.
Thanks,
RakeshHI,
You can do this using the FM GFW_PRES_SHOW
Check the sample program : DEMO_GFW_PRES_SHOW.
For more infomation:
refer to links:
Re: How to plot graph in ALV?
http://help.sap.com/saphelp_erp2005/helpdata/en/7e/daf830b46411d2961200a0c9308b1f/frameset.htm
hope this infromation helps you.
Thanks! -
How to read modifed data in ALV List
Hi,
I have one input enabled field in my ALV list. User can modify the values of that field. How i can get what are all the records are modified by the user.
Thanks
stallinHi,
Try this code...
REPORT ZTEST_EDIT_ALV .
*Data Declaration
DATA: BEGIN OF T_EKKO,
EBELN TYPE EKPO-EBELN,
EBELP TYPE EKPO-EBELP,
* FLAG TYPE C,
* HANDLE_STYLE TYPE LVC_T_STYL,
END OF T_EKKO.
DATA: GD_REPID LIKE SY-REPID, "Exists
REF_GRID TYPE REF TO CL_GUI_ALV_GRID. "new
DATA: BEGIN OF IT_EKKO OCCURS 0.
INCLUDE STRUCTURE T_EKKO.
DATA: END OF IT_EKKO.
DATA: BEGIN OF IT_BACKUP OCCURS 0.
INCLUDE STRUCTURE T_EKKO.
DATA: END OF IT_BACKUP.
*ALV data declarations
TYPE-POOLS: SLIS. "ALV Declarations
DATA: FIELDCATALOG TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
GD_LAYOUT TYPE SLIS_LAYOUT_ALV.
*Start-of-selection.
START-OF-SELECTION.
PERFORM DATA_RETRIEVAL.
PERFORM BUILD_FIELDCATALOG.
PERFORM BUILD_LAYOUT.
IT_BACKUP[] = IT_EKKO[].
PERFORM DISPLAY_ALV_REPORT.
*& Form build_fieldcatalog
* text
FORM BUILD_FIELDCATALOG.
REFRESH FIELDCATALOG.
CLEAR FIELDCATALOG.
FIELDCATALOG-FIELDNAME = 'EBELN'.
FIELDCATALOG-SELTEXT_M = 'Purchase Order'.
FIELDCATALOG-INPUT = 'X'.
FIELDCATALOG-EDIT = 'X'.
FIELDCATALOG-COL_POS = 2.
APPEND FIELDCATALOG.
CLEAR FIELDCATALOG.
FIELDCATALOG-FIELDNAME = 'EBELP'.
FIELDCATALOG-SELTEXT_M = 'PO Item'.
FIELDCATALOG-COL_POS = 3.
APPEND FIELDCATALOG.
CLEAR FIELDCATALOG.
ENDFORM. " BUILD_FIELDCATALOG
*& Form BUILD_LAYOUT
* Build layout for ALV grid report
FORM BUILD_LAYOUT.
"Permet d'ajuster les colonnes au text
* gd_layout-colwidth_optimize = 'X'.
* GD_LAYOUT-TOTALS_TEXT = 'Totals'(201).
* gd_layout-box_fieldname = 'SELECT'.
* gd_layout-box_tabname = 'IT_EKKO'.
ENDFORM. " BUILD_LAYOUT
*& Form DISPLAY_ALV_REPORT
* Display report using ALV grid
FORM DISPLAY_ALV_REPORT .
GD_REPID = SY-REPID.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = GD_REPID
* i_callback_top_of_page = 'TOP-OF-PAGE'
I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
* i_grid_title = 'My Title'
IS_LAYOUT = GD_LAYOUT
IT_FIELDCAT = FIELDCATALOG[]
TABLES
T_OUTTAB = IT_EKKO
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
WRITE:/ SY-SUBRC.
ENDIF.
ENDFORM. " DISPLAY_ALV_REPORT
*& Form DATA_RETRIEVAL
* Retrieve data form EKPO table and populate itab it_ekko
FORM DATA_RETRIEVAL.
SELECT EBELN EBELP
UP TO 10 ROWS
FROM EKPO
INTO CORRESPONDING FIELDS OF TABLE IT_EKKO.
ENDFORM. " DATA_RETRIEVAL
* FORM SET_PF_STATUS *
FORM SET_PF_STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB.
SET PF-STATUS 'STANDARD_FULLSCREEN1' EXCLUDING RT_EXTAB.
ENDFORM. "set_pf_status
*& Form user_command
* text
* -->R_UCOMM text
* -->RS_SELFIELDtext
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
*then insert the following code in your USER_COMMAND routine...
<b> IF REF_GRID IS INITIAL.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
E_GRID = REF_GRID.
ENDIF.
IF NOT REF_GRID IS INITIAL.
CALL METHOD REF_GRID->CHECK_CHANGED_DATA
ENDIF.</b>*modify
CASE R_UCOMM.
WHEN '&IC1'.
CHECK RS_SELFIELD-TABINDEX > 0.
IF RS_SELFIELD-VALUE EQ '6000000001'.
CALL TRANSACTION 'ZTEST'.
ENDIF.
WHEN 'REFRESH'.
READ TABLE IT_EKKO INDEX RS_SELFIELD-TABINDEX.
IF SY-SUBRC = 0.
READ TABLE IT_BACKUP INDEX RS_SELFIELD-TABINDEX.
IF SY-SUBRC = 0.
IF IT_EKKO <> IT_BACKUP.
* then do your check
ENDIF.
ENDIF.
ENDIF.
PERFORM DATA_RETRIEVAL.
RS_SELFIELD-REFRESH = 'X'.
ENDCASE.
ENDFORM. "user_command
Regards
vijay -
Do I need to do anything different with the client or is it a server setting that needs modification
I have a Flex based application which is using Flash Media Server (FMS) server (version 4.0) for live video streaming between two users (i.e. a one to one teleconferencing service). This streaming is one-to-one, as defined by business rules, so that no third person can join a teleconference. Either person can start the video stream via a browser-based Flex client and communication gets established once the second user joins. Validation for connecting the streams of the two users is implemented on the FMS server (as server side scripting defined in main.asc). I am facing three critical problems with our teleconferencing solution.
1.Often times, full communication can not be established between the two users. One user can not usually see or hear the other user. There is a client side 'refresh' button that when clicked, attempts to establish a connection via the server side script. This sometimes works. Before implementing our current server side script, I tried establishing a stream by using methods found here: http://forums.adobe.com/thread/905613
I think the method below may work as it would give me an array of subscribers to the stream.
getLiveStreamStats(appInst:String, stream:String) : Object
But the problem is that server returns the following:
<result>
<level>error</level>
<code>Admin.API.MethodNotAllowed</code>
<description>getlivestreams - Method not allowed!</description>
<timestamp>8/7/2012 10:05:38 AM</timestamp>
</result>Srr20 wrote:
I bought a new iPad two days back. After moving all my stuff from iPad 2, I realized that the camera shutter is not opening . Is it a configuration issue or do I need to do anything to get it opertional
Try a Hard Reset. Hold ON/OFF Button and Home Button at the same time until it reboots and Apple Logo appears, let go of buttons.
Mybe that will do it...
Maybe you are looking for
-
My Windows Vista is Not Working
I was using my Vista side of my iMac a few days ago when i was prompted to install an update now every time I click on the icon I get an Error message saying that parallels has quit unexpectedly I hit the RELAUNCH button but it just comes back to the
-
How can we get the value of the key field in a custom data model using governance API?
Dear Team, How can we get the value of the key field in a custom data model, to be used for manipulation of the change request fields using governance API? Any kind of help would be sincerely appreciated. Thanks & Regards, Tushar.
-
Update to Ipod software version 1.2 - internet connection issue?
Keep getting the message that ITunes could not contact ipod update server because I am not connected to the internet - but there is an adsl connection online all the time. Any ideas? Dell Dimension Windows XP Dell Dimension Windows XP
-
Hello, I created a JFileChooser (meCreateChooser) which shows up when the user clicks on a JMenuItem. The user has to type a name for his file and the program checks to see if that name already exists. If the typed file name already exists, the progr
-
Error 2324 when installing new version
Got the following error when installing new version. The installer has encountered an unexpected error. This may indicate a problem with this package. The error code is 2324 Also Tried to uninstall after this so I could install fro