‎2007 May 15 12:09 PM
hi
plz explain me while we r working with interactive alv what should u keep in mind.
means (in interactice report we r using the hide statemetn) what value we should capture.
and plz explain the below statemnt how exactly it works techinially.
means what is slis_selfield? and all.
FORM user_command1 USING w_ucomm LIKE sy-ucomm rs_selfield TYPE
slis_selfield.
‎2007 May 15 12:33 PM
hi prasad,
vijay here,
in alv case we use &IC1 instead of hide stmt in reports.
well this keyword acts as same as hide and this value stored in slis_selfield.
well use below code to check the working by jus use of your table.
&----
*& Report ZTRE_ALVHOTSPOT *
*& *
&----
*& *
*& *
&----
REPORT ZTRE_ALVHOTSPOT.
type-pools : slis.
TABLES : ZTRE_EMP ,ZTRE_LIB.
*
DATA : MY_LAYOUT TYPE DISVARIANT.
MY_LAYOUT-REPORT = SY-REPID.
DATA : ITAB LIKE ZTRE_EMP OCCURS 0 WITH HEADER LINE,
JTAB LIKE ZTRE_LIB OCCURS 0 WITH HEADER LINE.
DATA : P_FIELDCAT TYPE slis_t_fieldcat_alv,
H_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
SELTAB TYPE SLIS_SELFIELD.
PARAMETERS : ID TYPE ZTRE_EMP-EMPPID.
SELECT EMPPID ENAMES EMOBILE FROM ZTRE_EMP INTO CORRESPONDING FIELDS OF
TABLE ITAB.
***************************FIELDCATALOG*******************************
H_FIELDCAT-TABNAME = 'ITAB'.
H_FIELDCAT-FIELDNAME = 'EMPPID'.
H_FIELDCAT-JUST = 'C'.
H_FIELDCAT-SELTEXT_L = 'EMPID'.
H_FIELDCAT-HOTSPOT = 'X'.
APPEND H_FIELDCAT TO P_FIELDCAT.
CLEAR H_FIELDCAT.
H_FIELDCAT-TABNAME = 'ITAB'.
H_FIELDCAT-FIELDNAME = 'ENAMES'.
H_FIELDCAT-JUST = 'C'.
H_FIELDCAT-SELTEXT_L = 'NAMES'.
APPEND H_FIELDCAT TO P_FIELDCAT.
CLEAR H_FIELDCAT.
H_FIELDCAT-TABNAME = 'ITAB'.
H_FIELDCAT-FIELDNAME = 'EMOBILE'.
H_FIELDCAT-JUST = 'C'.
H_FIELDCAT-SELTEXT_L = 'MOBILE'.
APPEND H_FIELDCAT TO P_FIELDCAT.
CLEAR H_FIELDCAT.
H_FIELDCAT-TABNAME = 'JTAB'.
H_FIELDCAT-FIELDNAME = 'DEPTCODE'.
H_FIELDCAT-JUST = 'C'.
H_FIELDCAT-SELTEXT_L = 'DEPTCODE'.
APPEND H_FIELDCAT TO P_FIELDCAT.
CLEAR H_FIELDCAT.
H_FIELDCAT-TABNAME = 'JTAB'.
H_FIELDCAT-FIELDNAME = 'EMPBOOKS'.
H_FIELDCAT-JUST = 'C'.
H_FIELDCAT-SELTEXT_L = 'BOOKS'.
APPEND H_FIELDCAT TO P_FIELDCAT.
CLEAR H_FIELDCAT.
H_FIELDCAT-TABNAME = 'JTAB'.
H_FIELDCAT-FIELDNAME = 'AUTHOR'.
H_FIELDCAT-JUST = 'C'.
H_FIELDCAT-SELTEXT_L = 'AUTHOR'.
APPEND H_FIELDCAT TO P_FIELDCAT.
CLEAR H_FIELDCAT.
H_FIELDCAT-TABNAME = 'JTAB'.
H_FIELDCAT-FIELDNAME = 'EMPAD'.
H_FIELDCAT-JUST = 'C'.
H_FIELDCAT-SELTEXT_L = 'ADDRESS'.
APPEND H_FIELDCAT TO P_FIELDCAT.
CLEAR H_FIELDCAT.
********************************END OF FI**********************
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = 'ZTRE_ALVHOTSPOT'
I_CALLBACK_PF_STATUS_SET = ''
I_CALLBACK_USER_COMMAND = 'USER-COMMAND'
I_CALLBACK_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME = 'ZTRE_EMP'
I_BACKGROUND_ID = ' '
I_GRID_TITLE = 'INTERACTIVE LIST'
I_GRID_SETTINGS =
IS_LAYOUT =
IT_FIELDCAT = P_FIELDCAT
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = 'A'
IS_VARIANT = MY_LAYOUT
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
IT_ALV_GRAPHICS =
IT_HYPERLINK =
IT_ADD_FIELDCAT =
IT_EXCEPT_QINFO =
I_HTML_HEIGHT_TOP =
I_HTML_HEIGHT_END =
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 USING LT_UCOMM LIKE SY-UCOMM
LT_SELFIELD TYPE SLIS_SELFIELD.
IF LT_UCOMM = '&IC1'.
READ TABLE ITAB INDEX LT_SELFIELD-TABINDEX.
SELECT DEPTCODE EMPBOOKS EMPAD AUTHOR EMPAD FROM ZTRE_LIB INTO
CORRESPONDING FIELDS OF TABLE JTAB WHERE EMPPID = ITAB-EMPPID.
*PERFORM DISPLAY1.
ENDIF.
*ENDFORM.
&----
*& Form DISPLAY1
&----
text
----
--> p1 text
<-- p2 text
----
*FORM DISPLAY1 .
*CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = 'ZTRE_ALVHOTSPOT'
I_INTERNAL_TABNAME = 'JTAB'
I_STRUCTURE_NAME = 'ZTRE_LIB'
I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME =
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
CHANGING
CT_FIELDCAT = P_FIELDCAT
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3
.
*IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
*ENDIF.
*
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = 'ZTRE_ALVHOTSPOT'
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 = 'ZTRE-LIB'
I_BACKGROUND_ID = ' '
I_GRID_TITLE =
I_GRID_SETTINGS =
IS_LAYOUT =
IT_FIELDCAT = P_FIELDCAT
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = 'A'
IS_VARIANT = MY_LAYOUT
IT_EVENTS =
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 1
I_SCREEN_START_LINE = 1
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IT_ALV_GRAPHICS =
IT_HYPERLINK =
IT_ADD_FIELDCAT =
IT_EXCEPT_QINFO =
I_HTML_HEIGHT_TOP =
I_HTML_HEIGHT_END =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = JTAB
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. " DISPLAY1
thanks and regards
vijay dwivedi
rewards*
‎2007 May 15 12:35 PM
Hi naidu ,,
Plz find two level drill down ALV interactive program ,,
************************************************************************
--
************************************************************************
THIS DEFINES GLOBAL TYPES FOR ALV.
TYPE-POOLS: slis.
TRANSPARENT TABLES USED FOR DATA FETCHING
TABLES: ekko,ekpo,eket,lfa1,ekbe.
DATA : i_fieldcat TYPE slis_t_fieldcat_alv," FOR FIELDCATALOG
i2_fieldcat TYPE slis_t_fieldcat_alv,"FOR FIELDCATALOG 2
i3_fieldcat TYPE slis_t_fieldcat_alv, "FOR FIELDCATALOG 3
i_eventcat TYPE slis_t_event, "FOR EVENTCATALOG
i_layout TYPE slis_layout_alv, "FOR LAYOUT
i_sortinfo TYPE slis_t_sortinfo_alv. "FOR SORTING
VARIABLE FOR COUNT OF PO
DATA: n TYPE i ,
i TYPE i,
po_item TYPE ebelp,
v_count(1) VALUE 'N'.
*********************************************************************
--
*********************************************************************
--
TYPES: BEGIN OF t_lfa1,
lifnr TYPE lifnr, "VENDOR CODE
name1 TYPE name1_gp, "VENDOR NAME
END OF t_lfa1.
--
TYPES: BEGIN OF t_ekko,
ebeln TYPE ebeln, "PURCHASE ORDER NUMBER
lifnr TYPE elifn, "VENDOR CODE
c TYPE i, "PURCHASE ORDER COUNT
END OF t_ekko.
--
TYPES: BEGIN OF t_ekpo,
ebeln TYPE ebeln, "PURCHASE ORDER NUMBER
ebelp TYPE ebelp, "PURCHASE ORDER ITEM
menge TYPE bstmg, "PURCHASE ORDER QTY
END OF t_ekpo,
--
BEGIN OF t_eket,
ebeln TYPE ebeln, "PURCHASE ORDER NUMBER
ebelp TYPE ebelp, "PURCHASE ORDER ITEM
etenr TYPE eeten, "DELIVERY SCHEDULE LINE COUNTER
wemng TYPE weemg, "QUANTITY OF GOODS RECIEVED
END OF t_eket ,
*----
DATA DECLARATION FOR FINAL TABLE(FIRST
SCREEN)----
BEGIN OF t_tab,
lifnr TYPE elifn,
ebeln TYPE ebeln,
name1 TYPE name1_gp,
ebelp TYPE ebelp,
menge TYPE bstmg,
etenr TYPE eeten,
wemng TYPE weemg,
c TYPE i,
END OF t_tab.
--
TYPES: BEGIN OF t_vendor,
lifnr TYPE elifn,
ebeln TYPE ebeln,
ebelp TYPE ebelp,
menge TYPE bstmg,
wemng TYPE p,
END OF t_vendor,
--
BEGIN OF t_ekbe,
ebeln TYPE ebeln,
ebelp TYPE ebelp,
bwart TYPE bwart,
menge TYPE menge_d,
END OF t_ekbe.
*********************************************************************
--
*********************************************************************
DATA : wa_lfa1 TYPE t_lfa1,
wa_ekko TYPE t_ekko,
wa_ekpo TYPE t_ekpo,
wa_eket TYPE t_eket,
wa_tab TYPE t_tab,
wa_vendor TYPE t_vendor,
wa_ekbe TYPE t_ekbe,
wa_grn TYPE t_ekbe,
wa_full TYPE t_vendor.
*********************************************************************
--
*********************************************************************
DATA: it_lfa1 TYPE STANDARD TABLE OF t_lfa1 WITH HEADER LINE ,
it_ekko TYPE STANDARD TABLE OF t_ekko WITH HEADER LINE ,
it_ekpo TYPE STANDARD TABLE OF t_ekpo WITH HEADER LINE,
it_eket TYPE STANDARD TABLE OF t_eket WITH HEADER LINE,
it_tab TYPE STANDARD TABLE OF t_tab WITH HEADER LINE,
it_vendor TYPE STANDARD TABLE OF t_vendor WITH HEADER LINE,
it_ekbe TYPE STANDARD TABLE OF t_ekbe WITH HEADER LINE,
it_grn TYPE STANDARD TABLE OF t_ekbe WITH HEADER LINE,
it_full TYPE STANDARD TABLE OF t_vendor WITH HEADER LINE.
DATA: vendor TYPE elifn.
DATA: qty TYPE p,
c TYPE i.
*********************************************************************
--
**********************************************************************
SELECTION-SCREEN BEGIN OF BLOCK main WITH FRAME TITLE text-001.
SELECT-OPTIONS : s_lifnr FOR lfa1-lifnr OBLIGATORY.
SELECTION-SCREEN END OF BLOCK main.
*********************************************************************
--
*********************************************************************
AT SELECTION-SCREEN.
SELECT lifnr INTO (it_lfa1-lifnr) FROM lfa1 WHERE lifnr IN
s_lifnr.
ENDSELECT.
IF sy-subrc <> 0.
MESSAGE e001.
ENDIF.
*********************************************************************
--
*********************************************************************
START-OF-SELECTION.
FETCH RECORDS FROM THE DATABASE INTO THE INTERNAL TABLE.
PERFORM zf_select_it_tab.
PREPARE FIELDCATALOG FOR THE MAIN (1ST LIST) REPORT.
PERFORM zf_build_fieldcat USING i_fieldcat.
DEFINE EVENT TABLE
PERFORM build_eventcat USING i_eventcat.
DETERMINE THE SORTING SEQUENCE.
PERFORM build_sort USING i_sortinfo.
DISPLAY ALV GRID.
PERFORM zf_display_alv_list.
&----
*& Form ZF_SELECT_IT_TAB
&----
text
----
--> p1 text
<-- p2 text
----
*SELECTING DATA FROM IT_LFA1 TABLE
FORM zf_select_it_tab .
SELECT lifnr
name1
INTO TABLE it_lfa1
FROM lfa1
WHERE lifnr IN s_lifnr.
IF sy-subrc = 0.
SORT it_lfa1 BY lifnr.
ENDIF.
*SELECTING DATA FROM EKKO TABLE
IF NOT it_lfa1[] IS INITIAL.
SELECT
ebeln
lifnr
FROM ekko
INTO TABLE it_ekko
FOR ALL ENTRIES IN it_lfa1
WHERE lifnr = it_lfa1-lifnr.
IF sy-subrc = 0.
SORT it_ekko BY ebeln.
ENDIF.
ENDIF.
*SELECTING DATA FROM EKPO TABLE
IF NOT it_ekko[] IS INITIAL.
SELECT
ebeln
ebelp
menge
FROM ekpo
INTO TABLE it_ekpo
FOR ALL ENTRIES IN it_ekko
WHERE ebeln = it_ekko-ebeln.
IF sy-subrc = 0.
SORT it_ekpo BY ebeln ebelp.
ENDIF.
ENDIF.
*SELECTING DATA FROM EKET TABLE
IF NOT it_ekpo[] IS INITIAL.
SELECT
ebeln
ebelp
etenr
wemng
FROM eket
INTO TABLE it_eket
FOR ALL ENTRIES IN it_ekpo
WHERE ebeln = it_ekpo-ebeln
AND ebelp = it_ekpo-ebelp.
SORT it_eket BY ebeln ebelp etenr.
ENDIF.
*SELECTING DATA FROM EKBE TABLE
IF NOT it_eket[] IS INITIAL.
SELECT
ebeln
ebelp
bwart
menge
FROM ekbe
INTO TABLE it_ekbe
FOR ALL ENTRIES IN it_eket
WHERE ebelp = it_eket-ebelp
AND ebeln = it_eket-ebeln
AND bwart = '101'.
ENDIF.
*********************************************************
THIS BLOCK MOVES THE FIELDS FROM DIFFERENT *
TABLES(EKKO,LFA1,EKPO,EKET) INTO A FINAL TABLE IT_TAB *
*
*********************************************************
CLEAR wa_tab.
CLEAR it_tab.
LOOP AT it_lfa1 INTO wa_lfa1.
READ TABLE it_ekko INTO wa_ekko WITH KEY lifnr = wa_lfa1-lifnr
BINARY SEARCH.
READ TABLE it_lfa1 INTO wa_lfa1
WITH KEY lifnr = wa_lfa1-lifnr
BINARY SEARCH.
IF sy-subrc = 0.
MOVE: wa_lfa1-name1 TO wa_tab-name1.
MOVE: wa_lfa1-lifnr TO wa_tab-lifnr.
ENDIF.
APPEND wa_tab TO it_tab.
CLEAR : wa_tab,wa_lfa1.
ENDLOOP.
**READ FOR SECOND SCREEN
REFRESH it_full.
CLEAR : wa_full,
wa_eket,
wa_ekpo.
LOOP AT it_eket INTO wa_eket.
READ TABLE it_ekpo INTO wa_ekpo WITH KEY ebeln = wa_eket-ebeln
ebelp = wa_eket-ebelp
BINARY SEARCH.
IF sy-subrc = 0.
READ TABLE it_ekko INTO wa_ekko WITH KEY ebeln =
wa_ekpo-ebeln
BINARY SEARCH.
IF sy-subrc = 0.
READ TABLE it_lfa1 INTO wa_lfa1 WITH KEY lifnr = wa_ekko-lifnr
BINARY SEARCH.
IF sy-subrc = 0.
wa_full-ebelp = wa_ekpo-ebelp.
wa_full-menge = wa_ekpo-menge.
wa_full-lifnr = wa_lfa1-lifnr.
wa_full-ebeln = wa_ekko-ebeln.
wa_full-wemng = wa_eket-wemng.
ENDIF.
ENDIF.
ENDIF.
APPEND wa_full TO it_full.
CLEAR : wa_ekko,wa_ekpo,wa_eket,wa_full.
ENDLOOP.
COUNT OF PO
LOOP AT it_tab.
LOOP AT it_ekko WHERE lifnr = it_tab-lifnr.
c = c + 1.
ENDLOOP.
it_tab-c = c.
MODIFY it_tab TRANSPORTING c.
CLEAR c.
ENDLOOP.
ENDFORM. " ZF_SELECT_IT_TAB
&----
*& Form ZF_BUILD_FIELDCAT
&----
FIELD CATALOG FOR FIRST SCREEN
----
-->P_I_FIELDCAT text
----
FORM zf_build_fieldcat USING p_i_fieldcat TYPE slis_t_fieldcat_alv.
REFRESH p_i_fieldcat.
DATA: l_fieldcat TYPE slis_fieldcat_alv.
CLEAR l_fieldcat.
l_fieldcat-col_pos = '1'.
l_fieldcat-fieldname = 'LIFNR'.
l_fieldcat-tabname = 'IT_TAB'.
l_fieldcat-key = 'X'.
l_fieldcat-emphasize = 'C410'.
l_fieldcat-seltext_l = 'VENDOR CODE'.
l_fieldcat-outputlen = 20.
APPEND l_fieldcat TO p_i_fieldcat.
CLEAR l_fieldcat.
l_fieldcat-col_pos = '2'.
l_fieldcat-fieldname = 'NAME1'.
l_fieldcat-tabname = 'IT_TAB'.
l_fieldcat-emphasize = 'C410'.
l_fieldcat-seltext_l = 'VENDOR NAME'.
l_fieldcat-outputlen = 20.
APPEND l_fieldcat TO p_i_fieldcat.
CLEAR l_fieldcat.
l_fieldcat-col_pos = '3'.
l_fieldcat-fieldname = 'C'.
l_fieldcat-tabname = 'IT_TAB'.
l_fieldcat-emphasize = 'C410'.
l_fieldcat-seltext_l = 'PO COUNT'.
l_fieldcat-outputlen = 10.
APPEND l_fieldcat TO p_i_fieldcat.
ENDFORM. " ZF_BUILD_FIELDCAT
&----
*& Form ZF_DISPLAY_ALV_LIST
&----
CALLING FUNCTION FOR ALV GRID DISPLAY
----
--> p1 text
<-- p2 text
----
FORM zf_display_alv_list .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = 'Z8AS_SHADOW_ALV_INTERACTIVE'
i_callback_user_command = 'USER_COMMAND'
is_layout = i_layout
it_fieldcat = i_fieldcat
it_events = i_eventcat
TABLES
t_outtab = it_tab
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. " ZF_DISPLAY_ALV_LIST
&----
*& Form BUILD_SORT
&----
SORTING OUTPUT BY PURCHASE ORDER AND LINE ITEM
----
-->P_I_SORTINFO text
----
FORM build_sort USING p_i_sortinfo TYPE slis_t_sortinfo_alv.
REFRESH p_i_sortinfo.
DATA: l_sortinfo TYPE slis_sortinfo_alv.
CLEAR l_sortinfo.
l_sortinfo-spos = '1'.
l_sortinfo-fieldname = 'LIFNR'.
l_sortinfo-tabname = 'IT_VENDOR'.
l_sortinfo-up = 'X'.
l_sortinfo-group = 'UL'.
APPEND l_sortinfo TO p_i_sortinfo.
CLEAR l_sortinfo.
l_sortinfo-spos = '2'.
l_sortinfo-fieldname = 'EBELN'.
l_sortinfo-tabname = 'IT_VENDOR'.
l_sortinfo-up = 'X'.
l_sortinfo-group = 'UL'.
APPEND l_sortinfo TO p_i_sortinfo.
ENDFORM. " BUILD_SORT
&----
*& Form BUILD_EVENTCAT
&----
*
----
-->P_I_EVENTCAT text
----
FORM build_eventcat USING p_i_eventcat TYPE slis_t_event.
REFRESH p_i_eventcat.
DATA: i_event TYPE slis_alv_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = p_i_eventcat
EXCEPTIONS
list_type_wrong = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CLEAR i_event.
READ TABLE p_i_eventcat WITH KEY name = slis_ev_user_command INTO
i_event.
IF sy-subrc = 0.
MOVE 'USER_COMMAND' TO i_event-form.
APPEND i_event TO p_i_eventcat.
ENDIF.
ENDFORM. " BUILD_EVENTCAT
&----
*& FORM USER_COMMAND
&----
FORM user_command USING p_ucomm TYPE sy-ucomm
p_selfield TYPE slis_selfield.
CASE p_ucomm.
WHEN '&IC1'.
READ TABLE it_tab INTO wa_tab INDEX p_selfield-tabindex.
IF p_selfield-fieldname = 'LIFNR'.
vendor = p_selfield-value.
PERFORM zf_vendor_details.
PERFORM zf2_build_fieldcat USING i2_fieldcat.
PERFORM zf_display_grid.
ENDIF.
CLEAR p_selfield.
ENDCASE.
ENDFORM. " ZF_USER_COMMAND
&----
*& Form ZF_VENDOR_DETAILS
&----
THIS FORM IS USED FOR MOVING DATA FROM IT_TAB TO IT_VENDOR
----
--> p1 text
<-- p2 text
----
FORM zf_vendor_details .
CLEAR wa_ekko.
CLEAR it_ekko.
REFRESH it_vendor.
LOOP AT it_full INTO wa_full WHERE lifnr = vendor.
MOVE :
wa_full-lifnr TO wa_vendor-lifnr,
wa_full-ebeln TO wa_vendor-ebeln,
wa_full-ebelp TO wa_vendor-ebelp,
wa_full-menge TO wa_vendor-menge,
wa_full-wemng TO wa_vendor-wemng.
APPEND wa_vendor TO it_vendor.
CLEAR : wa_vendor.
ENDLOOP.
ENDFORM. " ZF_VENDOR_DETAILS
&----
*& Form ZF2_BUILD_FIELDCAT
&----
THIS FORM IS USED FOR CATALOG SCREEN 2
----
-->P_I_FIELDCAT text
----
FORM zf2_build_fieldcat USING p_i_fieldcat TYPE slis_t_fieldcat_alv.
REFRESH p_i_fieldcat.
DATA: l2_fieldcat TYPE slis_fieldcat_alv.
CLEAR l2_fieldcat.
l2_fieldcat-col_pos = '1'.
l2_fieldcat-fieldname = 'LIFNR'.
l2_fieldcat-tabname = 'IT_VENDOR'.
l2_fieldcat-key = 'X'.
l2_fieldcat-emphasize = 'C410'.
l2_fieldcat-seltext_l = 'VENDOR CODE'.
l2_fieldcat-outputlen = 20.
APPEND l2_fieldcat TO p_i_fieldcat.
CLEAR l2_fieldcat.
l2_fieldcat-col_pos = '2'.
l2_fieldcat-fieldname = 'EBELN'.
l2_fieldcat-tabname = 'IT_VENDOR'.
l2_fieldcat-key = 'X'.
l2_fieldcat-emphasize = 'C410'.
l2_fieldcat-seltext_l = 'PURCHASE ORDER NUMBER'.
l2_fieldcat-outputlen = 20.
APPEND l2_fieldcat TO p_i_fieldcat.
CLEAR l2_fieldcat.
l2_fieldcat-col_pos = '3'.
l2_fieldcat-fieldname = 'EBELP'.
l2_fieldcat-tabname = 'IT_VENDOR'.
l2_fieldcat-key = 'X'.
l2_fieldcat-emphasize = 'C710'.
l2_fieldcat-seltext_l = 'PO ITEM'.
l2_fieldcat-outputlen = 20.
APPEND l2_fieldcat TO p_i_fieldcat.
CLEAR l2_fieldcat.
l2_fieldcat-col_pos = '4'.
l2_fieldcat-fieldname = 'MENGE'.
l2_fieldcat-tabname = 'IT_VENDOR'.
l2_fieldcat-key = 'X'.
l2_fieldcat-emphasize = 'C410'.
l2_fieldcat-seltext_l = 'PO QTY'.
l2_fieldcat-outputlen = 20.
APPEND l2_fieldcat TO p_i_fieldcat.
CLEAR l2_fieldcat.
l2_fieldcat-col_pos = '5'.
l2_fieldcat-fieldname = 'WEMNG'.
l2_fieldcat-tabname = 'IT_VENDOR'.
l2_fieldcat-key = 'X'.
l2_fieldcat-emphasize = 'C450'.
l2_fieldcat-seltext_l = 'QTY RECIEVED'.
l2_fieldcat-outputlen = 20.
APPEND l2_fieldcat TO p_i_fieldcat.
CLEAR l2_fieldcat.
ENDFORM. "ZF2_BUILD_FIELDCAT
&----
*& Form ZF_DISPLAY_ALV_LIST
&----
text
----
--> p1 text
<-- p2 text
----
FORM zf_display_grid .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = 'Z8AS_SHADOW_ALV_INTERACTIVE'
I_CALLBACK_PF_STATUS_SET = ' '
i_callback_user_command = 'USER_COMMAND1'
it_fieldcat = i2_fieldcat
it_sort = i_sortinfo
IMPORTING
TABLES
t_outtab = it_vendor
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. "ZF_DISPLAY_GRID
&----
*& FORM USER_COMMAND1
&----
FORM user_command1 USING p_ucomm TYPE sy-ucomm
p_selfield TYPE slis_selfield.
CASE p_ucomm.
WHEN '&IC1'.
READ TABLE it_vendor INTO wa_vendor INDEX p_selfield-tabindex.
IF p_selfield-fieldname = 'WEMNG'.
po_item = wa_vendor-ebelp.
PERFORM zf_grn.
PERFORM zf3_build_fieldcat USING i3_fieldcat.
PERFORM zf1_display_grid.
ENDIF.
ENDCASE.
ENDFORM. " ZF_USER_COMMAND
&----
*& Form ZF3_BUILD_FIELDCAT
&----
FIELD CATALOG FOR THIRD SCREEN
----
-->P_I3_FIELDCAT text
----
FORM zf3_build_fieldcat USING p_i_fieldcat TYPE slis_t_fieldcat_alv
.
REFRESH p_i_fieldcat.
DATA: l3_fieldcat TYPE slis_fieldcat_alv.
CLEAR l3_fieldcat.
l3_fieldcat-col_pos = '1'.
l3_fieldcat-fieldname = 'EBELN'.
l3_fieldcat-tabname = 'IT_GRN'.
l3_fieldcat-key = 'X'.
l3_fieldcat-emphasize = 'C410'.
l3_fieldcat-seltext_l = 'P.O. NO'.
l3_fieldcat-outputlen = 20.
APPEND l3_fieldcat TO p_i_fieldcat.
CLEAR l3_fieldcat.
l3_fieldcat-col_pos = '2'.
l3_fieldcat-fieldname = 'EBELP'.
l3_fieldcat-tabname = 'IT_GRN'.
l3_fieldcat-key = 'X'.
l3_fieldcat-emphasize = 'C410'.
l3_fieldcat-seltext_l = 'P.O.ITEM'.
l3_fieldcat-outputlen = 20.
APPEND l3_fieldcat TO p_i_fieldcat.
CLEAR l3_fieldcat.
l3_fieldcat-col_pos = '3'.
l3_fieldcat-fieldname = 'BWART'.
l3_fieldcat-tabname = 'IT_GRN'.
l3_fieldcat-key = 'X'.
l3_fieldcat-emphasize = 'C410'.
l3_fieldcat-seltext_l = 'MOVEMENT TYPE'.
l3_fieldcat-outputlen = 20.
APPEND l3_fieldcat TO p_i_fieldcat.
CLEAR l3_fieldcat.
l3_fieldcat-col_pos = '4'.
l3_fieldcat-fieldname = 'MENGE'.
l3_fieldcat-tabname = 'IT_GRN'.
l3_fieldcat-key = 'X'.
l3_fieldcat-emphasize = 'C410'.
l3_fieldcat-seltext_l = 'GR QUANTITY'.
l3_fieldcat-outputlen = 20.
APPEND l3_fieldcat TO p_i_fieldcat.
CLEAR l3_fieldcat.
ENDFORM. " ZF3_BUILD_FIELDCAT
&----
*& Form ZF1_DISPLAY_GRID
&----
text
----
--> p1 text
<-- p2 text
----
FORM zf1_display_grid .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = 'Z8AS_SHADOW_ALV_INTERACTIVE'
it_fieldcat = i3_fieldcat
IMPORTING
TABLES
t_outtab = it_grn
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. " ZF1_DISPLAY_GRID
&----
*& Form ZF_GRN
&----
text
----
--> p1 text
<-- p2 text
----
FORM zf_grn .
CLEAR wa_eket .
CLEAR it_eket.
REFRESH it_grn.
LOOP AT it_vendor INTO wa_vendor WHERE ebelp = po_item.
IF sy-subrc = 0.
READ TABLE it_ekbe INTO wa_ekbe WITH KEY
ebeln = wa_vendor-ebeln
ebelp = wa_vendor-ebelp.
IF sy-subrc = 0.
IF wa_ekbe-bwart = '101'.
MOVE: wa_ekbe-ebeln TO wa_grn-ebeln,
wa_ekbe-ebelp TO wa_grn-ebelp,
wa_ekbe-bwart TO wa_grn-bwart,
wa_ekbe-menge TO wa_grn-menge.
APPEND wa_grn TO it_grn.
CLEAR wa_ekbe.
CLEAR wa_grn.
ELSE.
MESSAGE e001.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. " ZF_GRN
<i>Reward points if helpful.</i>
Regards,
Amber S
‎2007 May 15 12:36 PM
hi,
see if you are clicking matnr field and want to display material details for the clicked material number..
In your grid ALV you are suppose to give the FORM name under user_command parameter(else you can append in events internal table and pass to reuser_slvgrid) as per your quesry FORM NAME is user_command1.
FORM <b>USER_COMMAND1</b> USING <b>W_UCOMM</b> LIKE SY_UCOMM <b>RS_SELFIELD</b> TYPE slis_selfield.
this is called dynamically by the FM reuse_ALV** , (see we are not writing any perform for this)
Hope you know the logic in using SUBROUTINES..
user_command1 -
form name.
you are using parameter -- sy-ucomm (using parameter this is for system command for your function code ..)
in w_ucomm the Function code '&IC1' is saved when you double click on matnr,
else if you are using a button and clicked it then that relevant Function code of the button is saved..
rs_selfiled of type slis_selfield-- this contains the row whcih you have clicked (eg value ,name of the column etc)
dont forget to reward points
regards,
nazeer
Message was edited by:
nazeer shaik
‎2007 May 15 12:50 PM
Hi prasad,
HIDE dobj.
Effect
This statement stores - in the current list level - the content of the variable dobj together with the current list line whose line number is contained in sy-linno. The data type of the variables dobj must be flat and no field symbols can be specified that point to rows of internal tables, and no class attributes can be specified. The stored values can be read as follows:
For each user action in a displayed screen list that leads to a list result, all the row values stored using HIDE - that is, the row on which the screen cursor is positioned at the time of the event - are assigned to the respective variables.
If a list row of an arbitrary list level is read or modified using the statements READ LINE or MODIFY LINE, all the values of this row stored using HIDE are assigned to the respective variables.
The HIDE statement works independently of whether the list cursor was set. In particular, variables for empty list rows can be stored - that is, rows in which the list cursor was positioned using statements like SKIP.
The HIDE statement should be executed immediately at the statement that has set the list cursor in the row.
Outside of classes, constants and literals that cannot be read in list results and in the statement READ LINE can be specified for dobj outside of classes.
Example
Storing square numbers and cubic numbers for a list of numbers. The example shows that arbitrary variables can be stored independently of row content. In the real situation, one would more likely store only the number and execute the calculation, when required, in the the event block for AT LINE-SELECTION.
REPORT ...
DATA: square TYPE i,
cube TYPE i.
START-OF-SELECTION.
FORMAT HOTSPOT.
DO 10 TIMES.
square = sy-index ** 2.
cube = sy-index ** 3.
WRITE / sy-index.
HIDE: square, cube.
ENDDO.
AT LINE-SELECTION.
WRITE: square, cube.
hope this helps
regards