‎2008 Jul 17 6:13 AM
what is interactive ALV can anybody send a sample code regarding this
‎2008 Jul 17 6:15 AM
hi,
Plz refer to the link.
http://www.sap-img.com/abap/an-interactive-alv-report.htm
Regards
Sumit Agarwal
‎2008 Jul 17 6:15 AM
Hi,
INTERACTIVE ALV is the ALV verssion of list. Initialy the basic ALV is shown. ON double click to any of its row, you will get the Secondary ALV.
THE code for them are generaly bulky, so i am giving only one here. If you want to study more then Go to
saptutorial.com -> Tutorials--> ALV.
you will lot of them.
Check the code
REPORT ZALV_OOINTERACTIVE.*Class definition for handling double click
CLASS event_class DEFINITION DEFERRED.*Internal table and work area declarations for dd02l and dd03l
DATA : it_dd02l TYPE TABLE OF dd02l,
wa_dd02l TYPE dd02l,
it_dd03l TYPE TABLE OF dd03l,
wa_dd03l TYPE dd03l.*data declarations for ALV Main list
DATA : ty_lay1 TYPE lvc_s_layo,
it_fieldcat TYPE lvc_t_fcat ,
ty_fieldcat TYPE lvc_s_fcat ,
c_alv1 TYPE REF TO cl_gui_alv_grid,
c_cont1 TYPE REF TO cl_gui_custom_container,
event_receiver TYPE REF TO event_class.*data declarations for ALV Interactive listDATA : ty_lay2 TYPE lvc_s_layo,
it_fcat TYPE lvc_t_fcat ,
ty_fcat TYPE lvc_s_fcat ,
c_alv2 TYPE REF TO cl_gui_alv_grid,
c_cont2 TYPE REF TO cl_gui_custom_container.
**Select options for multiple values and NOT ranges
SELECT-OPTIONS : s_table FOR wa_dd02l-tabname NO INTERVALS.
Initialization event
INITIALIZATION.*Start of selection event
START-OF-SELECTION.*fetch data into table and field characteristics
PERFORM fetch_data.*ALV display for output
PERFORM alv_output.&----
*& Form FETCH_DATA
&----
text
----
--> p1 text
<-- p2 text
----
FORM fetch_data .*Select the table details
SELECT * FROM dd02l INTO CORRESPONDING FIELDS OF TABLE it_dd02l
WHERE tabname IN s_table
AND tabclass = 'TRANSP'.
ENDFORM. " FETCH_DATA----
PUBLIC SECTION. METHODS:
handle_double_click
FOR EVENT double_click OF cl_gui_alv_grid IMPORTING e_row .ENDCLASS. "lcl_event_receiver DEFINITION
----
----
READ TABLE it_dd02l INDEX e_row-index INTO ls_dd02l.* *Select the field details of the selected table
SELECT * FROM dd03l INTO CORRESPONDING FIELDS OF TABLE it_dd03l
WHERE tabname EQ ls_dd02l-tabname.
*calling the ALV containing the field values
CALL SCREEN 101. ENDMETHOD. "handle_double_clickENDCLASS. "lcl_event_receiver IMPLEMENTATION&----
*MODULE pbo_100 OUTPUT.
*set pf-status 'XXX'.
*set titlebar 'XXX'.
ENDMODULE. " PBO_100 OUTPUT
&----
*& Module alv_100 OUTPUT
&----
IF c_cont1 IS INITIAL.*Creating object of container
CREATE OBJECT c_cont1
EXPORTING
container_name = 'CCONT'.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.*Creating object of alv
CREATE OBJECT c_alv1
EXPORTING
i_parent = c_cont1.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.*alv layout
PERFORM alv_100_layout.*alv field catalogue
PERFORM alv_100_fieldcat.*Displaying the ALV grid
CALL METHOD c_alv1->set_table_for_first_display
EXPORTING
is_layout = ty_lay1
CHANGING
it_outtab = it_dd02l[]
it_fieldcatalog = it_fieldcat. IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.*Create object of the event class and setting handler for double click
CREATE OBJECT event_receiver.
SET HANDLER event_receiver->handle_double_click FOR c_alv1. ENDIF.ENDMODULE. " ALV_100 OUTPUT&----
*MODULE pai_100 INPUT.
ENDMODULE. " pai_100 INPUT----
SET PF-STATUS 'XXX'.
SET TITLEBAR 'XXX'.
ENDMODULE. " PBO_101 INPUT----
MODULE alv_101 OUTPUT.
*Check if the Custom container exists.
IF c_cont2 IS INITIAL.*Creating container object
CREATE OBJECT c_cont2
EXPORTING
container_name = 'CDCONT'.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.*creating ALV grid for interactive list
CREATE OBJECT c_alv2
EXPORTING
i_parent = c_cont2.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.*ALV layout
PERFORM alv_101_layout.*ALV fieldcatalogue
PERFORM alv_101_fieldcat.*Sorting the output by field position
SORT it_dd03l BY position.*ALV for display field details
CALL METHOD c_alv2->set_table_for_first_display
EXPORTING
is_layout = ty_lay2
CHANGING
it_outtab = it_dd03l[]
it_fieldcatalog = it_fcat.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF. ENDIF.ENDMODULE. " ALV_101 OUTPUT
&----
*MODULE pai_101 INPUT.ENDMODULE. " PAI_101 INPUT
&----
*& Form ALV_OUTPUT
&----
text
----
--> p1 text
<-- p2 text
----
FORM alv_output .
CALL SCREEN 100.ENDFORM. " ALV_OUTPUT
&----
*& Form ALV_100_LAYOUT
&----
text
----
--> p1 text
<-- p2 text
----
FORM alv_100_layout . ty_lay1-grid_title = 'TABLES'.
ty_lay1-zebra = 'X'.
ty_lay1-no_toolbar = 'X'.ENDFORM. " ALV_100_LAYOUT
&----
*& Form ALV_100_FIELDCAT
&----
text
----
--> p1 text
<-- p2 text
----
FORM alv_100_fieldcat .
CLEAR ty_fieldcat.
ty_fieldcat-row_pos = 1.
ty_fieldcat-col_pos = 1.
ty_fieldcat-fieldname = 'TABNAME'.
ty_fieldcat-tabname = 'GT_DD02L'.
ty_fieldcat-coltext = 'TableName'.
ty_fieldcat-outputlen = 10.
APPEND ty_fieldcat TO it_fieldcat.
CLEAR ty_fieldcat. ty_fieldcat-row_pos = 1.
ty_fieldcat-col_pos = 2.
ty_fieldcat-fieldname = 'TABCLASS'.
ty_fieldcat-tabname = 'GT_DD02L'.
ty_fieldcat-coltext = 'CATEGORY'.
ty_fieldcat-outputlen = 10.
APPEND ty_fieldcat TO it_fieldcat.
CLEAR ty_fieldcat. ty_fieldcat-row_pos = 1.
ty_fieldcat-col_pos = 3.
ty_fieldcat-fieldname = 'AS4USER'.
ty_fieldcat-tabname = 'GT_DD02L'.
ty_fieldcat-coltext = 'CREATED'.
ty_fieldcat-outputlen = 10.
APPEND ty_fieldcat TO it_fieldcat.
CLEAR ty_fieldcat. ty_fieldcat-row_pos = 1.
ty_fieldcat-col_pos = 4.
ty_fieldcat-fieldname = 'AS4DATE'.
ty_fieldcat-tabname = 'GT_DD02L'.
ty_fieldcat-coltext = 'DATE'.
ty_fieldcat-outputlen = 10.
APPEND ty_fieldcat TO it_fieldcat.
CLEAR ty_fieldcat.
ty_fieldcat-row_pos = 1.
ty_fieldcat-col_pos = 5.
ty_fieldcat-fieldname = 'AS4TIME'.
ty_fieldcat-tabname = 'GT_DD02L'.
ty_fieldcat-coltext = 'TIME'.
ty_fieldcat-outputlen = 10.
APPEND ty_fieldcat TO it_fieldcat.
CLEAR ty_fieldcat. ty_fieldcat-row_pos = 1.
ty_fieldcat-col_pos = 6.
ty_fieldcat-fieldname = 'CONTFLAG'.
ty_fieldcat-tabname = 'GT_DD02L'.
ty_fieldcat-coltext = 'Delivery Class'.
ty_fieldcat-outputlen = 15.
APPEND ty_fieldcat TO it_fieldcat.
CLEAR ty_fieldcat.ENDFORM. " ALV_100_FIELDCAT
&----
*& Form ALV_101_LAYOUT
&----
text
----
--> p1 text
<-- p2 text
----
FORM alv_101_layout . ty_lay2-grid_title = 'FIELDS'.
ty_lay2-zebra = 'X'.
ty_lay2-no_toolbar = 'X'.ENDFORM. " ALV_101_LAYOUT
&----
*& Form ALV_101_FIELDCAT
&----
text
----
--> p1 text
<-- p2 text
----
FORM alv_101_fieldcat . REFRESH it_fieldcat.
REFRESH it_fcat.
CLEAR ty_fcat. ty_fcat-row_pos = 1.
ty_fcat-col_pos = 1.
ty_fcat-fieldname = 'FIELDNAME'.
ty_fcat-tabname = 'GT_DD03L'.
ty_fcat-coltext = 'Fieldname'.
ty_fcat-outputlen = 10.
APPEND ty_fcat TO it_fcat.
ty_fcat-row_pos = 1.
ty_fcat-col_pos = 2.
ty_fcat-fieldname = 'CHECKTABLE'.
ty_fcat-tabname = 'GT_DD03L'.
ty_fcat-coltext = 'CHECKTABLE'.
ty_fcat-outputlen = 10.
APPEND ty_fcat TO it_fcat. ty_fcat-row_pos = 1.
ty_fcat-col_pos = 3.
ty_fcat-fieldname = 'KEYFLAG'.
ty_fcat-tabname = 'GT_DD03L'.
ty_fcat-coltext = 'Key Flag'.
ty_fcat-outputlen = 10.
APPEND ty_fcat TO it_fcat.ENDFORM. " ALV_101_FIELDCAT
Regards,
anirban
‎2008 Jul 17 6:16 AM
Try sample program for Interactive ALV.
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
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.
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_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
I_GRID_TITLE = I_TITLE_EKKO
I_GRID_SETTINGS =
IS_LAYOUT = ALV_LAYOUT
IT_FIELDCAT = I_FIELDCAT[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
i_default = 'ZLAY1'
I_SAVE = 'A'
is_variant = i_variant
IT_EVENTS = V_EVENTS
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 TOP_OF_PAGE
&----
text
----
FORM TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = IT_LISTHEADER
i_logo =
I_END_OF_LIST_GRID =
.
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
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.
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
i_logo =
I_END_OF_LIST_GRID =
.
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_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = V_REPID
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = 'F_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 = I_TITLE_EKPO
I_GRID_SETTINGS =
IS_LAYOUT =
IT_FIELDCAT = I_FIELDCAT[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT =
I_SAVE = 'A'
IS_VARIANT =
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.
‎2008 Jul 17 6:18 AM
Hi Gopal,
Check this link ..
[Interactive program In ALV|http://saptechnical.com/Tutorials/ALV/Interactive/demo.htm]
If Found Help Full Do Reward.
Regards.
Eshwar.
‎2008 Jul 17 6:18 AM
Hi buddy,
here is a wonderful code for ineractive ALV.. you will get a wide idea about this.......
REPORT yh_alvtreedemo1.TYPE-POOLS : fibs,stree.
TYPE-POOLS:slis.
DATA : t_node TYPE snodetext.DATA : it_node LIKE TABLE OF t_node,
wa_node LIKE t_node.DATA: t_fieldcat TYPE slis_t_fieldcat_alv,
fs_fieldcat TYPE slis_fieldcat_alv.DATA:w_repid LIKE sy-repid.*Internal Table declarations
DATA: BEGIN OF fs_scarr,
carrid LIKE scarr-carrid,
END OF fs_scarr.DATA:BEGIN OF fs_spfli,
carrid LIKE spfli-carrid,
connid LIKE spfli-connid,
END OF fs_spfli.DATA:BEGIN OF fs_sflight,
carrid LIKE sflight-carrid,
connid LIKE sflight-connid,
fldate LIKE sflight-fldate,
END OF fs_sflight.DATA:BEGIN OF fs_sbook,
carrid LIKE sbook-carrid,
connid LIKE sbook-connid,
fldate LIKE sbook-fldate,
bookid LIKE sbook-bookid,
END OF fs_sbook.DATA:t_scarr LIKE TABLE OF fs_scarr,
t_spfli LIKE TABLE OF fs_spfli,
t_sflight LIKE TABLE OF fs_sflight,
t_sbook LIKE TABLE OF fs_sbook.START-OF-SELECTION. PERFORM get_data.
PERFORM build_tree.
PERFORM display_tree.&----
*& Form get_data
&----
FROM scarr
INTO TABLE t_scarr. SELECT carrid
connid
FROM spfli
INTO TABLE t_spfli
FOR ALL ENTRIES IN t_scarr
WHERE carrid EQ t_scarr-carrid.ENDFORM. " get_data
&----
*& Form build_tree
&----
CLEAR: it_node,
wa_node. SORT: t_scarr BY carrid,
t_spfli BY carrid connid,
t_sflight BY carrid connid fldate,
t_sbook BY carrid connid fldate bookid. wa_node-type = 'T'.
wa_node-name = 'Flight Details'.
wa_node-tlevel = '01'.
wa_node-nlength = '15'.
wa_node-color = '4'.
wa_node-text = 'Flight'.
wa_node-tlength ='20'.
wa_node-tcolor = 3.
APPEND wa_node TO it_node.
CLEAR wa_node. LOOP AT t_scarr INTO fs_scarr. wa_node-type = 'P'.
wa_node-name = 'CARRID'.
wa_node-tlevel = '02'.
wa_node-nlength = '8'.
wa_node-color = '1'.
wa_node-text = fs_scarr-carrid.
wa_node-tlength ='20'.
wa_node-tcolor = 4.
APPEND wa_node TO it_node.
CLEAR wa_node. LOOP AT t_spfli INTO fs_spfli WHERE carrid EQ fs_scarr-carrid. wa_node-type = 'P'.
wa_node-name = 'CONNID'.
wa_node-tlevel = '03'.
wa_node-nlength = '8'.
wa_node-color = '1'.
wa_node-text = fs_spfli-connid.
wa_node-tlength ='20'.
wa_node-tcolor = 4.
APPEND wa_node TO it_node.
CLEAR wa_node. ENDLOOP.
ENDLOOP.
ENDFORM. " build_tree
&----
*& Form display_tree
&----
CALL FUNCTION 'RS_TREE_CONSTRUCT'
TABLES
nodetab = it_node. w_repid = sy-repid. CALL FUNCTION 'RS_TREE_LIST_DISPLAY'
EXPORTING
callback_program = w_repid
callback_user_command = 'USER_COMMAND'
callback_gui_status = 'SET_PF'.
ENDFORM. " display_tree
&----
*& Form pick
&----
-->COMMAND text
-->NODE text
----
USING pv_command TYPE c
CHANGING pv_exit TYPE c
pv_list_refresh TYPE c. pv_list_refresh = 'X'. IF pt_nodes-tlevel = '03'. CLEAR t_fieldcat[]. SELECT carrid
connid
fldate
FROM sflight
INTO TABLE t_sflight
WHERE connid EQ pt_nodes-text. fs_fieldcat-col_pos = 1.
fs_fieldcat-fieldname = 'CARRID'.
fs_fieldcat-seltext_m = 'Airlinecarrier'.
fs_fieldcat-key = 'X'.
fs_fieldcat-hotspot = 'X'.
APPEND fs_fieldcat TO t_fieldcat.
CLEAR fs_fieldcat. fs_fieldcat-col_pos = 2.
fs_fieldcat-fieldname = 'CONNID'.
fs_fieldcat-seltext_m = 'Connection No'.
fs_fieldcat-key = 'X'.
fs_fieldcat-hotspot = 'X'.
APPEND fs_fieldcat TO t_fieldcat.
CLEAR fs_fieldcat. fs_fieldcat-col_pos = 3.
fs_fieldcat-fieldname = 'FLDATE'.
fs_fieldcat-seltext_m = 'Flight Date'.
fs_fieldcat-key = 'X'.
fs_fieldcat-hotspot = 'X'.
APPEND fs_fieldcat TO t_fieldcat.
CLEAR fs_fieldcat. w_repid = sy-repid. CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = w_repid
it_fieldcat = t_fieldcat[]
TABLES
t_outtab = t_sflight.
ENDIF.
ENDFORM. "pick&----
*& Form set_pf
&----
text
----
FORM set_pf.
SET PF-STATUS 'MYPF'.
ENDFORM. "set_pf
‎2008 Jul 17 6:20 AM
HI Gopal,
Check these following links:
http://www.abapprogramming.net/2007/11/alv-interactive-report-sample-code.html
http://www.abapprogramming.net/2007/11/abap-multiple-interactive-report-sample_12.html
http://www.abapprogramming.net/2007/11/alv-layout-display-sample-code.html
Hope this helps you,
Regards,
Chandra Sekhar
‎2008 Jul 17 6:22 AM
hi try this ...it is intractive alv using funtion module ...
Interactive alv through funtions having commentary write option
&----
*& Report ZVRPSALV
*&
&----
*&
*&
&----
REPORT ZVRPSALV .
INCLUDE ZVRPSALV_TOP.
INCLUDE ZVRPSALV_MAIN.
INCLUDE ZVRPSALV_FORM.
&----
*& Include ZVRPSALV_TOP
&----
*********************************************************************
*TYPE-POOL DECLARATION
*********************************************************************
TYPE-POOLS : SLIS .
*********************************************************************
*TYPES DECLARATION
*********************************************************************
TYPES: BEGIN OF TYPE_ITAB, " TYPE FOR MAIN INTERNAL TABLE
VBELN TYPE VBAK-VBELN, " SALES DOC
AUDAT TYPE VBAK-AUDAT, " DOCUMENT DATE
VBTYP TYPE VBAK-VBTYP, " DOC CAT
AUART(4) TYPE C," TYPE VBAK-AUART, "SALES DOC
NETWR TYPE VBAK-NETWR, "NET VALUE
WAERK TYPE VBAK-WAERK, " DOC CURRENCY
VKORG TYPE VBAK-VKORG, "SALES ORG
VTWEG TYPE VBAK-VTWEG, "DISTRIBUTION CHANNEL
VKGRP TYPE VBAK-VKGRP, "SALES GROUP
KUNNR TYPE KNA1-KUNNR, "CUST NO
NAME1 TYPE KNA1-NAME1, "CUST NAME
POSNR TYPE VBAP-POSNR, " LINE ITEM NO.
MATNR TYPE VBAP-MATNR, " MATERIAL NO.
MATKL TYPE VBAP-MATKL, " MAT GROUP
ARKTX TYPE VBAP-ARKTX, " DISCRIPTION
PSTYV TYPE VBAP-PSTYV, " ITEM CAT
SPART TYPE VBAP-SPART, " DIVISION
GSBER TYPE VBAP-GSBER, " BUSINESS AREA
KWMENG TYPE VBAP-KWMENG, " ORDER QYT
END OF TYPE_ITAB.
TYPES: BEGIN OF TYPE_ITAB1, " TYPE FOR MAIN INTERNAL TABLE
POSNR TYPE VBAP-POSNR, " LINE ITEM NO.
MATNR TYPE VBAP-MATNR, " MATERIAL NO.
MATKL TYPE VBAP-MATKL, " MAT GROUP
ARKTX TYPE VBAP-ARKTX, " DISCRIPTION
PSTYV TYPE VBAP-PSTYV, " ITEM CAT
SPART TYPE VBAP-SPART, " DIVISION
GSBER TYPE VBAP-GSBER, " BUSINESS AREA
KWMENG TYPE VBAP-KWMENG, " ORDER QYT
END OF TYPE_ITAB1.
*********************************************************************
*DECLARATION OF INTERNAL TABLES
*********************************************************************
DATA: T_ITAB TYPE STANDARD TABLE OF TYPE_ITAB WITH HEADER LINE. " INTERNAL TABLE FOR COLLECTING WHOLE DATA
DATA: T_ITAB1 TYPE STANDARD TABLE OF TYPE_ITAB1 WITH HEADER LINE. " INTERNAL TABLE FOR COLLECTING WHOLE DATA FOR SECONDRY LIST
DATA: WA_FCAT TYPE SLIS_FIELDCAT_ALV. " FIELD CATALOG WORK AREA FOR FIRST GRID DISPLAY .
DATA: T_FCAT TYPE SLIS_T_FIELDCAT_ALV . " FIELD CATALOG FOR FIRST GRID DISPLAY .
DATA: WA_FCAT1 TYPE SLIS_FIELDCAT_ALV. " FIELD CATALOG WORK AREA FOR SECOND GRID DISPLAY .
DATA: T_FCAT1 TYPE SLIS_T_FIELDCAT_ALV . " FIELD CATALOG FOR SECOND GRID DISPLAY .
DATA: V_VBELN LIKE VBAK-VBELN. " VRAIBLE FOR SELECTION CRITERIA.
DATA: REPID LIKE SY-REPID . " VARIABLE FOR STORING PROGRAM NAME.
&----
*& Include ZVRPSALV_MAIN
&----
START-OF-SELECTION.
REPID = SY-REPID .
PERFORM ZVRPSALV_FIELDCAT USING : 'T_ITAB' 'VBELN' 'ORD NO' 10 ,
'T_ITAB' 'AUDAT' 'DOC DATE' 8 ,
'T_ITAB' 'VBTYP' 'DOC CAT' 7 ,
'T_ITAB' 'AUART' 'DOC TYP' 7 ,
'T_ITAB' 'NETWR' 'NET VAL' 18 ,
'T_ITAB' 'WAERK' 'DOC CUR' 5 ,
'T_ITAB' 'VKORG' 'SAL ORG' 7 ,
'T_ITAB' 'VTWEG' 'DIS CH' 5 ,
'T_ITAB' 'VKGRP' 'DIV' 2 ,
'T_ITAB' 'SPART' 'SAL GRP' 7 ,
'T_ITAB' 'KUNNR' 'SAL GRP' 10 ,
'T_ITAB' 'NAME1' 'NAME' 30 .
PERFORM ZVRPSALV_FIELDCAT1 USING : 'T_ITAB1' 'POSNR' 'ITEM' 6 ,
'T_ITAB1' 'MATNR' 'MATERIA ' 18,
'T_ITAB1' 'MATKL' 'MAT GROUP' 9,
'T_ITAB1' 'ARKTX' 'DESCRIPTION' 20 ,
'T_ITAB1' 'PSTYV' 'I_CAT ' 4,
'T_ITAB1' 'SPART' 'DIV' 4,
'T_ITAB1' 'GSBER' 'B_AREA' 6,
'T_ITAB1' 'KWMENG' 'ORD_QUNT' 23 .
PERFORM ZVRPSALV_GRIDDISPLAY1 .
&----
*& Include ZVRPSALV_FORM
&----
&----
*& Form ZVRPSALV_FIELDCAT
&----
text
----
--> p1 text
<-- p2 text
----
FORM ZVRPSALV_FIELDCAT USING TNAME TYPE C
FNAME TYPE slis_fieldname
SELTEXT TYPE dd03p-scrtext_l
OPLEN TYPE dd03p-outputlen .
WA_FCAT-TABNAME = TNAME .
WA_FCAT-FIELDNAME = FNAME .
WA_FCAT-SELTEXT_L = SELTEXT .
WA_FCAT-OUTPUTLEN = OPLEN .
APPEND WA_FCAT TO T_FCAT .
ENDFORM. " ZVRPSALV_FIELDCAT
&----
*& Form ZVRPSALV_FIELDCAT1
&----
text
----
-->P_0189 text
-->P_0190 text
-->P_0191 text
-->P_6 text
----
FORM ZVRPSALV_FIELDCAT1 USING TNAME TYPE C
FNAME TYPE slis_fieldname
SELTEXT TYPE dd03p-scrtext_l
OPLEN TYPE dd03p-outputlen .
WA_FCAT1-TABNAME = TNAME .
WA_FCAT1-FIELDNAME = FNAME .
WA_FCAT1-SELTEXT_L = SELTEXT .
WA_FCAT1-OUTPUTLEN = OPLEN .
APPEND WA_FCAT1 TO T_FCAT1 .
ENDFORM. " ZVRPSALV_FIELDCAT1
&----
*& Form ZVRPSALV_GRIDDISPLAY1
&----
text
----
--> p1 text
<-- p2 text
----
FORM ZVRPSALV_GRIDDISPLAY1 .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = REPID
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = 'DISPLAY_DOCUMENT '
I_CALLBACK_TOP_OF_PAGE =
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE = 'BASIC LIST'
I_GRID_SETTINGS =
IS_LAYOUT =
IT_FIELDCAT = T_FCAT
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
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 = T_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. " ZVRPSALV_GRIDDISPLAY1
*SUBROTINE FOR DISPLAYING THE SECONDRY ALV GRID.
FORM DISPLAY_DOCUMENT USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
IF RS_SELFIELD-FIELDNAME = 'VBELN'.
READ TABLE T_ITAB INDEX RS_SELFIELD-TABINDEX .
V_VBELN = T_ITAB-VBELN.
LOOP AT T_ITAB WHERE VBELN = V_VBELN.
Move: T_ITAB-POSNR to T_ITAB1-POSNR ,
T_ITAB-MATNR to T_ITAB1-MATNR ,
T_ITAB-MATKL to T_ITAB1-MATKL,
T_ITAB-ARKTX to T_ITAB1-ARKTX ,
T_ITAB-PSTYV to T_ITAB1-PSTYV ,
T_ITAB-SPART to T_ITAB1-SPART ,
T_ITAB-GSBER to T_ITAB1-GSBER ,
T_ITAB-KWMENG to T_ITAB1-KWMENG .
Append T_ITAB1.
ENDLOOP.
ENDIF.
FUNTION FOR GRID DISPLAY
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = ' '
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_CALLBACK_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE = ' Secondry List '
I_GRID_SETTINGS =
IS_LAYOUT =
IT_FIELDCAT = T_FCAT1
TABLES
T_OUTTAB = T_ITAB1
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.
REFRESH T_ITAB1.
ENDFORM.
Enjoy ....:-)
Regards.
Priyank Dixit
‎2008 Jul 17 6:27 AM
Hi gopal,
&----
*& Report ZAlv
*&
&----
*&
*&
&----
REPORT ZAlv.
TYPE-POOLS : SLIS.
TABLES : KNA1,VBAK.
DATA : BEGIN OF ITAB OCCURS 0 ,
KUNNR LIKE KNA1-KUNNR,
NAME1 LIKE KNA1-NAME1,
LAND1 LIKE KNA1-LAND1,
ORT01 LIKE KNA1-ORT01,
END OF ITAB.
DATA : BEGIN OF JTAB OCCURS 0,
VBELN LIKE VBAK-VBELN ,
ERNAM LIKE VBAK-ERNAM ,
ERDAT LIKE VBAK-ERDAT,
KUNNR LIKE VBAK-KUNNR,
END OF JTAB .
DATA : BEGIN OF JTAB1 OCCURS 0,
VBELN LIKE VBAK-VBELN ,
ERNAM LIKE VBAK-ERNAM ,
ERDAT LIKE VBAK-ERDAT,
KUNNR LIKE VBAK-KUNNR,
END OF JTAB1.
DATA : V_REPID LIKE SY-REPID,
V_LAYOUT TYPE SLIS_LAYOUT_ALV,
V_EVENTS TYPE SLIS_T_EVENT,
V_PRINT TYPE SLIS_PRINT_ALV,
L_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
DATA : FIELD1 TYPE SLIS_FIELDCAT_ALV.
DATA : FIELDCAT1 TYPE SLIS_T_FIELDCAT_ALV.
DATA : FIELDCAT2 TYPE SLIS_T_FIELDCAT_ALV.
SELECT-OPTIONS : CNO FOR KNA1-KUNNR.
START-OF-SELECTION.
V_REPID = SY-REPID .
SELECT KUNNR NAME1 LAND1 ORT01 FROM KNA1 INTO CORRESPONDING FIELDS OF
TABLE ITAB WHERE KUNNR IN CNO .
SELECT VBELN ERNAM ERDAT KUNNR FROM VBAK INTO CORRESPONDING FIELDS OF
TABLE JTAB FOR ALL ENTRIES IN ITAB WHERE KUNNR = ITAB-KUNNR.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = V_REPID
I_INTERNAL_TABNAME = 'ITAB'
I_STRUCTURE_NAME =
I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = V_REPID
I_BYPASSING_BUFFER = 'X'
I_BUFFER_ACTIVE = ' '
CHANGING
CT_FIELDCAT = FIELDCAT1
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.
LOOP AT FIELDCAT1 INTO l_fieldcat.
CASE l_fieldcat-fieldname.
WHEN 'KUNNR'.
l_fieldcaT-hotspot = 'X'.
MODIFY FIELDCAT1 FROM l_fieldcat.
ENDCASE.
ENDLOOP.
*
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = 'X'
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = V_REPID
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
I_STRUCTURE_NAME =
IS_LAYOUT =
IT_FIELDCAT = FIELDCAT1
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
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
IR_SALV_LIST_ADAPTER =
IT_EXCEPT_QINFO =
I_SUPPRESS_EMPTY_DATA = ABAP_FALSE
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
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.
&----
*& Form user_command
&----
text
----
-->R_UCOMM text
-->RS_SELFIELD text
----
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
IF RS_SELFIELD-FIELDNAME EQ 'KUNNR'.
CASE R_UCOMM.
WHEN '&IC1'.
READ TABLE ITAB INDEX RS_SELFIELD-TABINDEX.
REFRESH JTAB1.
CLEAR JTAB1.
LOOP AT JTAB WHERE KUNNR = ITAB-KUNNR.
APPEND JTAB TO JTAB1.
ENDLOOP.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = V_REPID
I_INTERNAL_TABNAME = 'JTAB1'
I_STRUCTURE_NAME =
I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = V_REPID
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
CHANGING
CT_FIELDCAT = FIELDCAT2
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_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = 'X'
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = V_REPID
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_STRUCTURE_NAME =
IS_LAYOUT =
IT_FIELDCAT = FIELDCAT2
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = 'A'
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
IR_SALV_LIST_ADAPTER =
IT_EXCEPT_QINFO =
I_SUPPRESS_EMPTY_DATA = ABAP_FALSE
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = JTAB1
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.
ENDCASE.
ENDIF.
ENDFORM. "user_command
Regards,
Sravanthi
‎2008 Jul 17 6:38 AM
Hi gopal,
Interactive report means an output list which displays basic details & allow user to interact, so that a new list is populated based on user-selection. With interactive list, the user can actively control data retrieval and display during the session.
In interactive ALV .by using ALV we can display in Grid as well as list format.
Output format will be good . Sorting,Filtering facilities are provided by itself.We can have column headings also.
Following is the code that u can use for interactive ALV. Hope this will be helpful for u :-
REPORT NAME(starting with z) NO STANDARD PAGE HEADING
LINE-SIZE 650
MESSAGE-ID name(put name of ur choice ).
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
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.
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_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
I_GRID_TITLE = I_TITLE_EKKO
I_GRID_SETTINGS =
IS_LAYOUT = ALV_LAYOUT
IT_FIELDCAT = I_FIELDCAT[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
i_default = 'ZLAY1'
I_SAVE = 'A'
is_variant = i_variant
IT_EVENTS = V_EVENTS
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 TOP_OF_PAGE
&----
text
-
FORM TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = IT_LISTHEADER
i_logo =
I_END_OF_LIST_GRID =
.
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
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.
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
i_logo =
I_END_OF_LIST_GRID =
.
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_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = V_REPID
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = 'F_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 = I_TITLE_EKPO
I_GRID_SETTINGS =
IS_LAYOUT =
IT_FIELDCAT = I_FIELDCAT[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT =
I_SAVE = 'A'
IS_VARIANT =
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.
reward if u find it useful.
regards
saurabh
‎2008 Jul 17 7:38 AM
Hi frnd.
try this very few line of code
REPORT ZPRI_ALV8.
type-pools : slis .
data: v_repid like sy-repid .
data: itab like mara occurs 0 with header line .
data: itab1 like makt occurs 0 with header line .
break devuser .
select * from mara into table itab .
v_repid = sy-repid .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = v_repid
I_CALLBACK_USER_COMMAND = 'DISPLAY_DOCUMENT '
I_STRUCTURE_NAME = 'mara'
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.
**for Displaying Secondry list
FORM DISPLAY_DOCUMENT USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
IF RS_SELFIELD-FIELDNAME = 'MATNR'.
READ TABLE ITAB INDEX RS_SELFIELD-TABINDEX .
select * from makt into table itab1 where matnr = itab-matnr .
IF SY-SUBRC = 0 .
ENDIF .
*
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_STRUCTURE_NAME = 'makt'
TABLES
T_OUTTAB = ITAB1
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
endif.
ENDFORM.
‎2008 Jul 17 7:43 AM
Hi,
Refer to the following link for reference code.
http://saptechnical.com/Tutorials/ALV/SimpleIALV/Program.htm
Regards,
Jaya vani
‎2008 Jul 17 7:54 AM
ALV
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).
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.
Code snippet
report zalvreport1.
class zclass_floc definition deferred. "for event handling.
tables : iflo,klah,kssk.
types: begin of zalv6,
tplnr like iflo-tplnr,
pltxt like iflo-pltxt,
invnr like iflo-invnr,
objnr like iflo-objnr,
erdat like iflo-erdat,
fltyp like iflo-fltyp,
iwerk like iflo-iwerk,
class like klah-class,
clint like kssk-clint,
end of zalv6.
*tables : z98442empl.
*TYPES: BEGIN OF ztable,
empid LIKE z98442empl-empid,
location LIKE z98442empl-location,
pu like z98442empl-pu,
END OF ztable.
*
*DATA : itab TYPE STANDARD TABLE OF ztable.
*DATA : wa_itab TYPE ztable.
data : begin of itab1 occurs 0 ,
tplnr like kssk-objek,
clint like kssk-clint,
end of itab1.
data : begin of itab3 occurs 0 ,
class like klah-class,
clint like kssk-clint,
end of itab3.
data : itab type standard table of zalv6.
data : wa_itab type zalv6.
data : wa_itab1 like line of itab1.
data : wa_itab3 like line of itab3.
data : ok_code like sy-ucomm,
g_alvgrid type ref to cl_gui_alv_grid,
g_custom_control type scrfname value 'F_LOC',
g_container type ref to cl_gui_custom_container,
g_fieldcat type lvc_t_fcat,
e_row type lvc_s_row,
e_column type lvc_s_col,
e_row_number type lvc_s_roid.
--
class zclass_floc definition .
public section .
class-methods : handle_double_click
for event double_click of cl_gui_alv_grid
importing e_row e_column ,
handle_print_top_of_list
for event print_top_of_list of cl_gui_alv_grid .
endclass . "zclass_floc DEFINITION
*DATA : g_event_handler TYPE REF TO zclass_floc.
--
class zclass_floc implementation .
method handle_double_click .
perform handle_double_click using e_row e_column e_row_number .
endmethod . "handle_double_click
method handle_print_top_of_list .
perform top_of_page .
endmethod . "handle_print_top_of_list
endclass . "zclass_floc IMPLEMENTATION
--
selection-screen begin of block b1 with frame title text-t01.
parameters: p_fltyp like iflo-fltyp ,
p_tplnr like iflo-tplnr obligatory ,
p_objnr like iflo-objnr .
selection-screen end of block b1.
*SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-t01.
*PARAMETERS: p_empid LIKE z98442empl-empid obligatory.
SELECTION-SCREEN END OF BLOCK b1.
*
--
at selection-screen .
--
start-of-selection.
data : tplnr type iflo-tplnr,
spras type iflo-spras.
call function 'ENQUEUE_EZIFLO'
exporting
mode_iflo = 'X'
mandt = sy-mandt
tplnr = tplnr
spras = spras
X_TPLNR = ' '
X_SPRAS = ' '
_SCOPE = '2'
_WAIT = ' '
_COLLECT = ' '
exceptions
foreign_lock = 1
system_failure = 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.
break-point.
perform fetchdata.
.
call function 'DEQUEUE_EZIFLO'
exporting
mode_iflo = 'X'
mandt = sy-mandt
tplnr = tplnr
spras = spras
X_TPLNR = ' '
X_SPRAS = ' '
_SCOPE = '3'
_SYNCHRON = ' '
_COLLECT = ' '
.
end-of-selection.
perform display_alv.
--
call screen 100.
&----
*& Form FETCHDATA
&----
text
----
form fetchdata.
break-point.
select tplnr
pltxt
invnr
objnr
erdat
fltyp
iwerk from iflo
into corresponding fields of table itab
where tplnr eq p_tplnr.
*select empid
*location
*pu from z98442empl
*INTO CORRESPONDING FIELDS OF TABLE itab where empid EQ p_empid.
select objek
clint from kssk
appending table itab1
where objek eq p_tplnr.
select class
clint from klah
into table itab3
for all entries in itab1
where clint = itab1-clint.
loop at itab into wa_itab.
read table itab1 into wa_itab1 with key tplnr = wa_itab-tplnr.
read table itab3 into wa_itab3 with key clint = wa_itab1-clint.
wa_itab-class = wa_itab3-class.
wa_itab-clint = wa_itab3-clint.
modify itab from wa_itab.
endloop.
if sy-subrc ne 0.
message 'no values found for the specified key. Press any key to exit' type 'E' .
leave program.
endif.
endform. "fetchdata
&----
*& Module display_alv OUTPUT
&----
text
----
module display_alv output.
endmodule. "display_alv OUTPUT
&----
*& Form display_alv
&----
text
----
form display_alv.
set pf-status 'FLOC'.
set titlebar '100'.
if g_alvgrid is initial.
--
create object g_container
exporting
container_name = g_custom_control.
--
create object g_alvgrid
exporting
i_parent = g_container.
--
perform prepare_field_catalog changing g_fieldcat .
--
CREATE OBJECT g_event_handler.
--
call method g_alvgrid->set_table_for_first_display
exporting
i_structure_name = 'ZALV6'
i_structure_name = 'Ztable'
changing
it_outtab = itab
it_fieldcatalog = g_fieldcat.
ELSE.
call method g_alvgrid->refresh_table_display
exceptions
finished = 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.
--
set handler zclass_floc=>handle_double_click for g_alvgrid.
set handler zclass_floc=>handle_print_top_of_list for g_alvgrid.
endif.
endform. "display_alv
&----
*& Form PREPARE_FIELD_CATALOG
&----
text
----
form prepare_field_catalog changing g_fieldcat type lvc_t_fcat.
data : ls_fcat type lvc_s_fcat .
ls_fcat-fieldname = 'TPLNR'.
ls_fcat-ref_table = 'ZALV6'.
ls_fcat-coltext = 'functional location '.
append ls_fcat to g_fieldcat.
ls_fcat-fieldname = 'PLTXT'.
ls_fcat-ref_table = 'ZALV6'.
ls_fcat-coltext = 'functional location description'.
append ls_fcat to g_fieldcat.
ls_fcat-fieldname = 'INVNR'.
ls_fcat-ref_table = 'ZALV6'.
ls_fcat-coltext = 'inventory number '.
append ls_fcat to g_fieldcat.
ls_fcat-fieldname = 'OBJNR'.
ls_fcat-ref_table = 'ZALV6'.
ls_fcat-coltext = 'object number'.
append ls_fcat to g_fieldcat.
ls_fcat-fieldname = 'ERDAT'.
ls_fcat-ref_table = 'ZALV6'.
ls_fcat-coltext = 'Creation Date '.
append ls_fcat to g_fieldcat.
ls_fcat-fieldname = 'FLTYP'.
ls_fcat-ref_table = 'ZALV6'.
ls_fcat-coltext = 'Functional Location Category '.
append ls_fcat to g_fieldcat.
ls_fcat-fieldname = 'IWERK'.
ls_fcat-ref_table = 'ZALV6'.
ls_fcat-coltext = 'Maintenance planning plant '.
append ls_fcat to g_fieldcat.
ls_fcat-fieldname = 'CLASS'.
ls_fcat-ref_table = 'ZALV6'.
ls_fcat-coltext = 'Class name '.
append ls_fcat to g_fieldcat.
ls_fcat-fieldname = 'CLINT'.
ls_fcat-ref_table = 'ZALV6'.
ls_fcat-coltext = 'Internal class number '.
append ls_fcat to g_fieldcat.
ls_fcat-fieldname = 'empid'.
ls_fcat-ref_table = 'Ztable'.
ls_fcat-coltext = 'Maintenance planning plant '.
APPEND ls_fcat TO g_fieldcat.
*
ls_fcat-fieldname = 'location'.
ls_fcat-ref_table = 'Ztable'.
ls_fcat-coltext = 'Class name '.
APPEND ls_fcat TO g_fieldcat.
*
ls_fcat-fieldname = 'pu'.
ls_fcat-ref_table = 'Ztable'.
ls_fcat-coltext = 'Internal class number '.
APPEND ls_fcat TO g_fieldcat.
*
*
*
endform. "prepare_field_catalog
&----
*& Module DISPLAY_ALV INPUT
&----
text
----
module display_alv input.
case ok_code.
when 'EXIT'.
leave program.
when others.
call screen 100.
endcase.
clear ok_code.
endmodule. "display_alv INPUT
&----
*& Form EXIT
&----
text
----
--> p1 text
<-- p2 text
----
form exit .
call screen 100.
endform. "EXIT
&----
*& Form handle_double_click
&----
text
----
form handle_double_click using e_row type lvc_s_row
e_column type lvc_s_col
e_row_number type lvc_s_roid.
data : itab5 type zalv6.
DATA : itab5 TYPE ztable.
*
read table itab into itab5 index e_row-index.
if sy-subrc = 0 and e_column-fieldname eq 'TPLNR' .
READ TABLE itab INTO itab5 INDEX e_row-index.
IF sy-subrc = 0 AND e_column-fieldname EQ 'empid' .
set parameter id 'FLD' field itab5-tplnr.
SET PARAMETER ID 'FLD' FIELD itab5-empid.
call transaction 'ZALVSCRIPT_98341' and skip first screen .
endif.
endform. "handle_double_click
&----
*& Form top_of_page
&----
text
----
form top_of_page .
write : / ' FUNCTIONAL LOCATION DETAILS :'.
endform. "top_of_page
--
reward points if helpful plz
regards
palak