‎2006 Sep 18 10:15 AM
hai
can any one give some frequently used alv function codes for interctie display
thanking u
regards
murali
‎2006 Sep 18 10:18 AM
Hi Murali,
please find the attached code. hope it helps you....
report zptest_alv1.
**TABLES DECLN
tables: vbrk,vbrp,t001.
type-pools: slis.
type-pools: icon.
***DATA DECLN.
data: v_vbeln like vbrk-vbeln,
v_matnr like vbrp-matnr.
constants: c_user_command type slis_formname value 'F_USER_COMMAND',
c_pf_status type slis_formname value 'F_SET_PF_STATUS'.
**ALV RELATED TABLES.
*--Field Catalog
data: it_fieldcat type standard table of
slis_fieldcat_alv with header line,
it_fieldcat1 type standard table of
slis_fieldcat_alv with header line ,
wa_fieldcat type slis_fieldcat_alv,
*--Layout
wa_layout type slis_layout_alv,
*--Sort
it_sort type slis_t_sortinfo_alv,
wa_sort type slis_sortinfo_alv ,
**-Structure for excluding function codes
wa_extab type slis_extab,
**-To hold function codes to be excluded in ALV toolbar
it_extab type slis_t_extab.
***INTERNAL TABLE DECLN.
data: begin of it_vbrk occurs 0,
vbeln like vbrk-vbeln,
waerk like vbrk-waerk,
vkorg like vbrk-vkorg,
fkdat like vbrk-fkdat,
bukrs like vbrk-bukrs,
netwr like vbrk-netwr,
end of it_vbrk.
data: begin of itab occurs 0,
vbeln like vbrp-vbeln,
posnr like vbrp-posnr,
fkimg like vbrp-fkimg,
vrkme like vbrp-vrkme,
netwr like vbrp-netwr,
matnr like vbrp-matnr,
arktx like vbrp-arktx,
end of itab.
data: it_vbrp like itab occurs 0 with header line.
***selection screen.
selection-screen: begin of block b1 with frame title text-001.
select-options: s_vbeln for vbrk-vbeln,
s_fkdat for vbrk-fkdat obligatory,
s_matnr for vbrp-matnr.
selection-screen: end of block b1.
**INITIALIZATION.
initialization.
s_fkdat-low = sy-datum - 200.
s_fkdat-high = sy-datum.
append s_fkdat.
***AT SELECTION-SCREEN.
at selection-screen.
if not s_vbeln is initial.
select single vbeln from vbrk
into v_vbeln
where vbeln in s_vbeln.
if sy-subrc <> 0.
message e001(zz2).
endif.
endif.
if not s_matnr is initial.
select single matnr from mara
into v_matnr
where matnr in s_matnr.
if sy-subrc <> 0.
message e001(zz2).
endif.
endif.
***START-OF-SELECTION.
start-of-selection.
perform get_data_vbrk.
perform get_data_vbrp.
***END-OF-SELECTION.
end-of-selection.
*--Sort the Output Fields
perform sort_fields.
*--Build Field catalog for the Output fields
perform get_field_catalog.
***MODIFY LAYOUT.
perform modify_layout.
*--Display ALV output
perform list_disp tables it_vbrk
using c_user_command.
&----
*& Form GET_DATA_VBRK
&----
text
----
--> p1 text
<-- p2 text
----
form get_data_vbrk.
select vbeln
waerk
vkorg
fkdat
bukrs
netwr
into table it_vbrk
from vbrk
where vbeln in s_vbeln
and fkdat in s_fkdat.
endform. " GET_DATA
&----
*& Form GET_DATA_VBRP
&----
text
----
--> p1 text
<-- p2 text
----
form get_data_vbrp .
SELECT VBELN
POSNR
FKIMG
VRKME
NETWR
MATNR
ARKTX
FROM VBRP
INTO TABLE IT_VBRP
FOR ALL ENTRIES IN IT_VBRK
WHERE VBELN = IT_VBRK-VBELN.
select vbeln
posnr
fkimg
vrkme
netwr
matnr
arktx
from vbrp
into table itab
for all entries in it_vbrk
where vbeln = it_vbrk-vbeln.
endform. " GET_DATA_VBRP
&----
*& Form GET_FIELD_CATALOG
&----
text
----
--> p1 text
<-- p2 text
----
form get_field_catalog .
call function 'REUSE_ALV_FIELDCATALOG_MERGE'
exporting
i_program_name = sy-repid
i_internal_tabname = 'IT_VBRK'
i_inclname = sy-repid
changing
ct_fieldcat = it_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.
endform. " GET_FIELD_CATALOG
&----
*& Form SORT_FIELDS
&----
text
----
--> p1 text
<-- p2 text
----
form sort_fields .
clear wa_sort.
wa_sort-spos = '01'.
wa_sort-fieldname = 'VBELN' .
wa_sort-tabname = 'IT_VBRK'.
wa_sort-up = 'X'.
append wa_sort to it_sort.
clear wa_sort.
wa_sort-spos = '02'.
wa_sort-fieldname = 'POSNR' .
wa_sort-tabname = 'IT_VBRP'.
wa_sort-up = 'X'.
append wa_sort to it_sort.
endform. " SORT_FIELDS
&----
*& Form MODIFY_LAYOUT
&----
text
----
--> p1 text
<-- p2 text
----
form modify_layout .
wa_layout-default_item = 'X'.
wa_layout-zebra = 'X'.
wa_layout-expand_fieldname = 'EXPAND'.
wa_layout-colwidth_optimize = 'X'.
endform. " MODIFY_LAYOUT
&----
*& Form LIST_DISP
&----
text
----
--> p1 text
<-- p2 text
----
form list_disp tables p_it_vbrk
using p_user_command type slis_formname.
*CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = 'POPUP'
I_CALLBACK_USER_COMMAND = 'HANDLE_USER_COMMAND'
IS_LAYOUT = WA_LAYOUT
IT_FIELDCAT = IT_FIELDCAT[]
IT_EXCLUDING = IT_EXTAB[]
TABLES
T_OUTTAB = IT_VBRK
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.
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
i_callback_program = sy-repid
i_callback_pf_status_set = 'POPUP'
i_callback_user_command = 'HANDLE_USER_COMMAND'
is_layout = wa_layout
it_fieldcat = it_fieldcat[]
tables
t_outtab = p_it_vbrk
exceptions
program_error = 1
others = 2.
endform. " LIST_DISP
&----
*& Form POPUP
&----
text
----
-->P_EXTAB text
----
form popup using it_extab type slis_t_extab.
*- Pf status
set pf-status 'POPUP'.
endform. " POPUP
&----
*& Form F_USER_COMMAND
&----
form handle_user_command using r_ucomm like sy-ucomm
rs_selfield type slis_selfield.
case r_ucomm.
when '&IC1'.
clear it_fieldcat1[].
clear it_vbrp[].
if rs_selfield-fieldname = 'VBELN'.
read table it_vbrk index rs_selfield-tabindex.
loop at itab where vbeln = it_vbrk-vbeln.
move-corresponding itab to it_vbrp.
append it_vbrp.
endloop.
perform interactive_report.
endif.
endcase.
endform. "HANDLE_USER_COMMAND
&----
*& Form INTERACTIVE_REPORT
&----
text
----
--> p1 text
<-- p2 text
----
form interactive_report .
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = SY-REPID
I_INTERNAL_TABNAME = 'ITAB'
I_INCLNAME = SY-REPID
CHANGING
CT_FIELDCAT = IT_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.
wa_fieldcat-fieldname = 'VBELN'.
wa_fieldcat-seltext_l = 'BILLING DOC'.
wa_fieldcat-tabname = 'IT_VBRP'.
wa_fieldcat-col_pos = 1.
append wa_fieldcat to it_fieldcat1.
clear wa_fieldcat.
wa_fieldcat-fieldname = 'POSNR'.
wa_fieldcat-seltext_l = 'ITEM'.
wa_fieldcat-tabname = 'IT_VBRP'.
wa_fieldcat-col_pos = 2.
append wa_fieldcat to it_fieldcat1.
clear wa_fieldcat.
wa_fieldcat-fieldname = 'FKIMG'.
wa_fieldcat-seltext_m = 'INV QTY'.
wa_fieldcat-tabname = 'IT_VBRP'.
wa_fieldcat-col_pos = 3.
append wa_fieldcat to it_fieldcat1.
clear wa_fieldcat.
wa_fieldcat-fieldname = 'VRKME'.
wa_fieldcat-seltext_m = 'SALES UNIT'.
wa_fieldcat-tabname = 'IT_VBRP'.
wa_fieldcat-col_pos = 4.
append wa_fieldcat to it_fieldcat1.
clear wa_fieldcat.
wa_fieldcat-fieldname = 'NETWR'.
wa_fieldcat-seltext_m = 'NET PRICE'.
wa_fieldcat-tabname = 'IT_VBRP'.
wa_fieldcat-do_sum = 'X'.
wa_fieldcat-col_pos = 5.
append wa_fieldcat to it_fieldcat1.
clear wa_fieldcat.
wa_fieldcat-fieldname = 'MATNR'.
wa_fieldcat-seltext_m = 'MATERIAL'.
wa_fieldcat-tabname = 'IT_VBRP'.
wa_fieldcat-col_pos = 6.
append wa_fieldcat to it_fieldcat1.
clear wa_fieldcat.
wa_fieldcat-fieldname = 'ARKTX'.
wa_fieldcat-seltext_m = 'SALES ORDER'.
wa_fieldcat-tabname = 'IT_VBRP'.
wa_fieldcat-col_pos = 7.
append wa_fieldcat to it_fieldcat1.
clear wa_fieldcat.
*CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
IS_LAYOUT = WA_LAYOUT
IT_FIELDCAT = IT_FIELDCAT1[]
IT_SORT = IT_SORT
TABLES
T_OUTTAB = IT_VBRP
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
*
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
i_callback_program = sy-repid
is_layout = wa_layout
it_fieldcat = it_fieldcat1[]
tables
t_outtab = it_vbrp
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. " INTERACTIVE_REPORT
Madhavi
‎2006 Sep 18 10:20 AM
Hi,
For interactive ALV. u have to use to pass
USER-COMMAND name to the grid_display func module.
Then u have to create subroutine with user command name that u have passed to the func module.
Regards
Divakar
‎2006 Sep 18 10:21 AM
Hi Murali,
Try this simple interactive..
TYPE-POOLS: SLIS.
DATA: BEGIN OF IT_OUTPUT OCCURS 0,
VAR1(8) TYPE N,
VAR2(10),
VAR3 TYPE I,
END OF IT_OUTPUT.
DATA: IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
IT_CAT TYPE SLIS_T_FIELDCAT_ALV,
T_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
IT_SORT TYPE SLIS_T_SORTINFO_ALV,
T_SORT TYPE SLIS_SORTINFO_ALV,
IT_EVENT TYPE SLIS_T_EVENT, " Events
T_EVENT TYPE SLIS_ALV_EVENT,
IT_VARIANT LIKE DISVARIANT, " To store Variant
IT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER,
V_REPID LIKE SY-REPID.
INITIALIZATION.
V_REPID = SY-REPID.
START-OF-SELECTION.
PERFORM GET_DATA.
PERFORM SORT_FIELDS.
PERFORM FILL_FIELDCAT.
PERFORM GET_EVENTS.
PERFORM FILL_LIST_TOP_OF_PAGE.
PERFORM DISPLAY_ALV.
&----
*& Form GET_DATA
&----
text
----
--> p1 text
<-- p2 text
----
FORM GET_DATA.
*-- Fill it_output here
ENDFORM. " GET_DATA
&----
*& Form fill_fieldcat
&----
text
----
--> p1 text
<-- p2 text
----
FORM FILL_FIELDCAT.
PERFORM FILL_FIELDS USING: 'IT_OUTPUT' 'VAR1' 'Variable 1' ' ',
'IT_OUTPUT' 'VAR2' 'Variable 2' ' ',
'IT_OUTPUT' 'VAR3' 'Variable 3' 'X'.
ENDFORM. " fill_fieldcat
&----
*& Form fill_fields
&----
text
----
-->P_0146 text
-->P_0147 text
-->P_0148 text
-->P_0149 text
----
FORM FILL_FIELDS USING VALUE(TABNAME) TYPE SLIS_TABNAME
VALUE(FIELDNAME) TYPE SLIS_FIELDNAME
VALUE(SELTEXT_M) LIKE DD03P-SCRTEXT_M
VALUE(DO_SUM) TYPE C.
T_FIELDCAT-TABNAME = TABNAME.
T_FIELDCAT-FIELDNAME = FIELDNAME.
T_FIELDCAT-SELTEXT_M = SELTEXT_M.
IF DO_SUM = 'X'.
T_FIELDCAT-DATATYPE = 'CURR'.
ENDIF.
T_FIELDCAT-DO_SUM = DO_SUM.
APPEND T_FIELDCAT TO IT_FIELDCAT.
CLEAR T_FIELDCAT.
ENDFORM. " fill_fields
&----
*& Form GET_EVENTS
&----
text
----
--> p1 text
<-- p2 text
----
FORM GET_EVENTS.
T_EVENT-NAME = 'TOP_OF_PAGE'.
T_EVENT-FORM = 'FRM_TOP_OF_PAGE'.
APPEND T_EVENT TO IT_EVENT.
CLEAR T_EVENT.
T_EVENT-NAME = 'USER_COMMAND'.
T_EVENT-FORM = 'FRM_USER_COMMAND'.
APPEND T_EVENT TO IT_EVENT.
CLEAR T_EVENT.
ENDFORM. " GET_EVENTS
&----
*& Form FRM_TOP_OF_PAGE
&----
text
----
--> p1 text
<-- p2 text
----
FORM FRM_TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = IT_LIST_TOP_OF_PAGE.
I_LOGO =
I_END_OF_LIST_GRID =
ENDFORM. " FRM_TOP_OF_PAGE
&----
*& Form fill_list_top_of_page
&----
text
----
--> p1 text
<-- p2 text
----
FORM FILL_LIST_TOP_OF_PAGE.
DATA : LS_LINE TYPE SLIS_LISTHEADER. " line
LS_LINE-TYP = 'H'.
LS_LINE-KEY = 'Header: '.
LS_LINE-INFO = 'This is header 1'.
APPEND LS_LINE TO IT_LIST_TOP_OF_PAGE.
LS_LINE-TYP = 'S'.
LS_LINE-KEY = 'Selection 1: '.
LS_LINE-INFO = 'This is selection 1'.
APPEND LS_LINE TO IT_LIST_TOP_OF_PAGE.
LS_LINE-TYP = 'S'.
LS_LINE-KEY = 'Selection 2: '.
LS_LINE-INFO = 'This is Selection 2'.
APPEND LS_LINE TO IT_LIST_TOP_OF_PAGE.
ENDFORM. " fill_list_top_of_page
&----
*& Form display_alv
&----
text
----
--> p1 text
<-- p2 text
----
FORM DISPLAY_ALV.
DATA: V_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'.
IT_VARIANT-REPORT = V_REPID.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = V_REPID
I_CALLBACK_USER_COMMAND = V_USER_COMMAND
IT_FIELDCAT = IT_FIELDCAT[]
IT_SORT = IT_SORT[]
IS_VARIANT = IT_VARIANT
IT_EVENTS = IT_EVENT[]
TABLES
T_OUTTAB = IT_OUTPUT
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
&----
*& Form SORT_FIELDS
&----
text
----
--> p1 text
<-- p2 text
----
FORM SORT_FIELDS.
T_SORT-FIELDNAME = 'VAR1'.
T_SORT-TABNAME = 'IT_OUTPUT'.
T_SORT-SPOS = 1.
T_SORT-UP = 'X'.
T_SORT-SUBTOT = 'X'.
APPEND T_SORT TO IT_SORT.
CLEAR T_SORT.
ENDFORM. " SORT_FIELDS
&----
*& Form FRM_USER_COMMAND
&----
text
----
--> p1 text
<-- p2 text
----
FORM FRM_USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD .
clear : it_output, it_output[].
CONCATENATE R_UCOMM RS_SELFIELD-FIELDNAME INTO IT_OUTPUT-VAR2
SEPARATED BY '+'.
APPEND IT_OUTPUT.
CLEAR IT_OUTPUT.
IT_OUTput-VAR2 = 'CANDY'.
APPEND IT_OUTPUT.
CLEAR IT_OUTPUT.
IT_OUTput-VAR2 = 'CHICCHU'.
APPEND IT_OUTPUT.
CLEAR IT_OUTPUT.
PERFORM DISPLAY_USER_COMMAND.
CLEAR :IT_CAT,
IT_CAT[].
CLEAR V_REPID.
V_REPID = SY-REPID.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = V_REPID
I_INTERNAL_TABNAME = 'IT_OUTPUT'
I_INCLNAME = V_REPID
CHANGING
CT_FIELDCAT = IT_CAT
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = V_REPID
IT_FIELDCAT = IT_CAT
TABLES
T_OUTTAB = IT_OUTPUT
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. " FRM_USER_COMMAND