‎2008 Feb 05 1:36 PM
Hi ,
Can u please tell how to edit rows in ALV grid using objects
And how to capture that value
Thanks
Sunitha
‎2008 Feb 05 1:39 PM
Hi,
I have added one Sample program pls check it.
INCLUDE .
TABLES: lfa1, lfb1, ekko, ekpo.
TYPE-POOLS: slis.
DATA: ok_code LIKE sy-ucomm,
g_container TYPE scrfname VALUE 'CONTAINER',
grid1 TYPE REF TO cl_gui_alv_grid,
g_custom_container TYPE REF TO cl_gui_custom_container.
DATA: repname LIKE sy-repid.
DATA: t_disvariant TYPE TABLE OF disvariant WITH HEADER LINE.
DATA: t_fieldtab TYPE lvc_t_fcat.
DATA: t_layout TYPE lvc_s_layo.
DATA: gs_toolbar TYPE stb_button.
DATA: t_rows TYPE lvc_t_row WITH HEADER LINE.
*----
-
TABLA DE DATOS
*----
-
DATA: BEGIN OF ti_acred OCCURS 0,
bukrs LIKE lfb1-bukrs,
lifnr LIKE lfa1-lifnr,
land1 LIKE lfa1-land1,
name1 LIKE lfa1-name1,
ort01 LIKE lfa1-ort01,
pstlz LIKE lfa1-pstlz,
regio LIKE lfa1-regio,
sortl LIKE lfa1-sortl,
stras LIKE lfa1-stras,
adrnr LIKE lfa1-adrnr,
END OF ti_acred.
DATA i_salida LIKE ti_acred OCCURS 0.
DATA: d_bukrs LIKE t001-bukrs.
DATA container.
DATA save VALUE 'X'.
-
-
-
-
Pantalla de Selección -
-
-
-
SELECTION-SCREEN BEGIN OF BLOCK bloq1 WITH FRAME TITLE text-001.
SELECT-OPTIONS : lifnr FOR lfa1-lifnr,
bukrs FOR lfb1-bukrs.
SELECTION-SCREEN END OF BLOCK bloq1.
SELECTION-SCREEN BEGIN OF BLOCK bloq3 WITH FRAME TITLE text-003.
PARAMETERS: p_alvasg TYPE slis_vari. " Disposición ALV
SELECTION-SCREEN END OF BLOCK bloq3.
****************************************************************
LOCAL CLASSES: Definition
****************************************************************
*===============================================================
class lcl_event_receiver: local class to
define and handle own functions.
*
Definition:
~~~~~~~~~~~
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
CLASS-METHODS:
handle_toolbar
FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING e_object e_interactive,
handle_menu_button
FOR EVENT menu_button OF cl_gui_alv_grid
IMPORTING e_object e_ucomm,
handle_user_command
FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm.
PRIVATE SECTION.
ENDCLASS.
*
lcl_event_receiver (Definition)
*===============================================================
****************************************************************
LOCAL CLASSES: Implementation
****************************************************************
*===============================================================
class lcl_event_receiver (Implementation)
*
*
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD handle_toolbar.
§ 2.At event TOOLBAR define a toolbar element of type 1 by using
event paramenter E_OBJECT. Remember its function code.
*.......
Part I: Define a menu button including a function code that
is evaluated in 'handle_MENU_BUTTON
*.......
*...................
append a menu with default button (Type 1)
The function code of the default button is the same as
the one for the menu.
If the user klicks on the default button ALV raises
directly event BEFORE_USER_COMMAND
(then USER_COMMAND, AFTER_USER_COMMAND).
If the user klicks on the menu button ALV raises event MENU_BUTTON.
CLEAR gs_toolbar.
MOVE 'MODIFY' TO gs_toolbar-function.
--> This function code is evaluated in 'handle_menu_button'
MOVE icon_change TO gs_toolbar-icon.
MOVE 'Modificar' TO gs_toolbar-quickinfo.
MOVE 0 TO gs_toolbar-butn_type.
MOVE space TO gs_toolbar-disabled.
APPEND gs_toolbar TO e_object->mt_toolbar.
ENDMETHOD.
*----
-
METHOD handle_menu_button.
§ 3.At event MENU_BUTTON query your function code and define a
menu in the same way as a context menu.
*..........
Part II: Evaluate 'e_ucomm' to see which menu button of the toolbar
has been clicked on.
Define then the corresponding menu.
The menu contains function codes that are evaluated
in 'handle_user_command'.
*...........
query e_ucomm to find out which menu button has been clicked on
IF e_ucomm = 'MODIFY'.
CALL METHOD e_object->add_function
EXPORTING fcode = 'MODIFY'
text = 'Modificar'. "modificar
§ 3a.) choose a default function and define the same function code
as used for the menu.
CALL METHOD e_object->add_function
EXPORTING fcode = 'DECISION'
text = 'Decisión de empleo'. "Decisión
"de empleo
*
ENDIF.
ENDMETHOD.
*----
-
METHOD handle_user_command.
§ 4.At event USER_COMMAND query the function code of each function
defined in step 3.
*.........
Part III : Evaluate user command to invoke the corresponding
function.
*.........
DATA: lt_rows TYPE lvc_t_row.
get selected row
CALL METHOD grid1->get_selected_rows
IMPORTING et_index_rows = lt_rows.
CALL METHOD cl_gui_cfw=>flush.
IF sy-subrc NE 0.
add your handling, for example
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = repname
txt2 = sy-subrc
txt1 = 'Error in Flush'(500).
ENDIF.
go to other table
CASE e_ucomm.
WHEN 'DECISION'.
REFRESH T_ROWS.
PERFORM SELECCION_LINEAS_DECISION TABLES lt_rows.
WHEN 'MODIFY'.
REFRESH t_rows.
PERFORM SELECCION_LINEAS_modify TABLES lt_rows.
CALL SCREEN 200.
ENDCASE.
ENDMETHOD. "handle_user_command
ENDCLASS.
*
lcl_event_receiver (Implementation)
*===================================================================
************************************************************************
-
-
-
-
INITIALIZATION -
-
-
-
INITIALIZATION.
repname = sy-repid.
PERFORM initialize_fieldcat.
PERFORM initializa_layout.
-
-
-
-
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_alv -
-
-
-
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_alvasg.
PERFORM alvl_value_request USING p_alvasg ' '.
-
-
-
-
START-OF-SELECTION -
-
-
-
START-OF-SELECTION.
PERFORM obtener_datos.
-
-
-
-
END-OF-SELECTION -
-
-
-
END-OF-SELECTION.
CALL SCREEN 9010.
-
-
-
-
Subrutinas -
-
-
-
-
-
Form obtener_datos
-
-
FORM obtener_datos.
REFRESH ti_acred.
CLEAR ti_acred.
SELECT * INTO CORRESPONDING FIELDS OF TABLE ti_acred
FROM lfa1
WHERE lifnr IN lifnr.
LOOP AT ti_acred.
SELECT SINGLE bukrs INTO ti_acred-bukrs FROM lfb1
WHERE lifnr = ti_acred-lifnr.
MODIFY ti_acred.
ENDLOOP.
i_salida] = ti_acred[.
ENDFORM.
-
-
MODULE PBO OUTPUT *
-
-
MODULE status_9010 OUTPUT.
DATA it_toolbar_excluding TYPE ui_func.
SET PF-STATUS 'EMPRESA'.
CLEAR g_custom_container.
IF g_custom_container IS INITIAL.
CREATE OBJECT g_custom_container
EXPORTING container_name = g_container.
CREATE OBJECT grid1
EXPORTING i_parent = g_custom_container.
CALL METHOD grid1->set_table_for_first_display
EXPORTING i_structure_name = 'I_SALIDA'
is_variant = t_disvariant
i_save = save
I_DEFAULT = ' '
is_layout = t_layout
CHANGING it_outtab = i_salida
it_fieldcatalog = t_fieldtab.
SET HANDLER lcl_event_receiver=>handle_user_command
lcl_event_receiver=>handle_menu_button
lcl_event_receiver=>handle_toolbar FOR ALL INSTANCES.
CALL METHOD grid1->set_toolbar_interactive.
ELSE.
CALL METHOD grid1->refresh_table_display.
ENDIF.
ENDMODULE.
*----
-
Module EXIT INPUT
*----
-
MODULE exit INPUT.
REFRESH i_salida.
CLEAR i_salida.
SET SCREEN 0.
LEAVE SCREEN.
ENDMODULE. " EXIT INPUT
-
-
Form initialize_fieldcat
-
-
FORM initialize_fieldcat.
DATA: l_fieldcat TYPE lvc_t_fcat WITH HEADER LINE.
REFRESH t_fieldtab.
*
o Catálogo de Campos
CLEAR l_fieldcat.
l_fieldcat-tabname = 'I_SALIDA'.
l_fieldcat-fix_column = 'X'.
l_fieldcat-no_out = 'O'.
l_fieldcat-key = 'X'.
l_fieldcat-ref_field = 'BUKRS'.
l_fieldcat-ref_table = 'LFB1'.
l_fieldcat-fieldname = 'BUKRS'.
APPEND l_fieldcat TO t_fieldtab.
CLEAR l_fieldcat.
l_fieldcat-tabname = 'I_SALIDA'.
l_fieldcat-fix_column = 'X'.
l_fieldcat-no_out = 'O'.
l_fieldcat-key = 'X'.
l_fieldcat-ref_field = 'LIFNR'.
l_fieldcat-ref_table = 'LFA1'.
l_fieldcat-fieldname = 'LIFNR'.
APPEND l_fieldcat TO t_fieldtab.
CLEAR l_fieldcat.
l_fieldcat-tabname = 'I_SALIDA'.
l_fieldcat-fix_column = 'X'.
l_fieldcat-no_out = 'O'.
l_fieldcat-edit = 'X'.
l_fieldcat-ref_field = 'NAME1'.
l_fieldcat-ref_table = 'LFA1'.
l_fieldcat-fieldname = 'NAME1'.
APPEND l_fieldcat TO t_fieldtab.
CLEAR l_fieldcat.
l_fieldcat-tabname = 'I_SALIDA'.
l_fieldcat-fix_column = 'X'.
l_fieldcat-no_out = 'O'.
l_fieldcat-edit = 'X'.
l_fieldcat-ref_field = 'LAND1'.
l_fieldcat-ref_table = 'LFA1'.
l_fieldcat-fieldname = 'LAND1'.
APPEND l_fieldcat TO t_fieldtab.
CLEAR l_fieldcat.
l_fieldcat-tabname = 'I_SALIDA'.
l_fieldcat-fix_column = 'X'.
l_fieldcat-no_out = 'O'.
l_fieldcat-edit = 'X'.
l_fieldcat-ref_field = 'ORT01'.
l_fieldcat-ref_table = 'LFA1'.
l_fieldcat-fieldname = 'ORT01'.
APPEND l_fieldcat TO t_fieldtab.
CLEAR l_fieldcat.
l_fieldcat-tabname = 'I_SALIDA'.
l_fieldcat-fix_column = 'X'.
l_fieldcat-no_out = 'O'.
l_fieldcat-edit = 'X'.
l_fieldcat-ref_field = 'PSTLZ'.
l_fieldcat-ref_table = 'LFA1'.
l_fieldcat-fieldname = 'PSTLZ'.
APPEND l_fieldcat TO t_fieldtab.
CLEAR l_fieldcat.
l_fieldcat-tabname = 'I_SALIDA'.
l_fieldcat-fix_column = 'X'.
l_fieldcat-no_out = 'O'.
l_fieldcat-edit = 'X'.
l_fieldcat-ref_field = 'REGIO'.
l_fieldcat-ref_table = 'LFA1'.
l_fieldcat-fieldname = 'REGIO'.
APPEND l_fieldcat TO t_fieldtab.
CLEAR l_fieldcat.
l_fieldcat-tabname = 'I_SALIDA'.
l_fieldcat-fix_column = 'X'.
l_fieldcat-no_out = 'O'.
l_fieldcat-edit = 'X'.
l_fieldcat-ref_field = 'SORTL'.
l_fieldcat-ref_table = 'LFA1'.
l_fieldcat-fieldname = 'SORTL'.
APPEND l_fieldcat TO t_fieldtab.
CLEAR l_fieldcat.
l_fieldcat-tabname = 'I_SALIDA'.
l_fieldcat-fix_column = 'X'.
l_fieldcat-no_out = 'O'.
l_fieldcat-edit = 'X'.
l_fieldcat-ref_field = 'STRAS'.
l_fieldcat-ref_table = 'LFA1'.
l_fieldcat-fieldname = 'STRAS'.
APPEND l_fieldcat TO t_fieldtab.
CLEAR l_fieldcat.
l_fieldcat-tabname = 'I_SALIDA'.
l_fieldcat-fix_column = 'X'.
l_fieldcat-no_out = 'O'.
l_fieldcat-key = 'X'.
l_fieldcat-ref_field = 'ADRNR'.
l_fieldcat-ref_table = 'LFA1'.
l_fieldcat-fieldname = 'ADRNR'.
APPEND l_fieldcat TO t_fieldtab.
ENDFORM. " initialize_fieldcat
-
-
Form initializa_layout
-
-
FORM initializa_layout.
t_layout-zebra = 'X'.
t_layout-cwidth_opt = 'X'.
t_layout-no_toolbar = 'X'.
T_LAYOUT-EDIT = 'X'.
T_LAYOUT-DETAILINIT = 'X'.
T_LAYOUT-CWIDTH_OPT = 'X'.
T_LAYOUT-TOTALS_BEF = 'X'.
T_LAYOUT-NUMC_TOTAL = 'X'.
ENDFORM. " initializa_layout
-
-
Module USER_COMMAND_9010 INPUT
-
-
MODULE user_command_9010 INPUT.
CASE sy-ucomm.
WHEN 'SAVE'.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
TITLEBAR = ' '
DIAGNOSE_OBJECT = ' '
text_question = 'Pulsaste SAVE'
TEXT_BUTTON_1 = 'Ja'(001)
ICON_BUTTON_1 = ' '
TEXT_BUTTON_2 = 'Nein'(002)
ICON_BUTTON_2 = ' '
DEFAULT_BUTTON = '1'
DISPLAY_CANCEL_BUTTON = 'X'
USERDEFINED_F1_HELP = ' '
START_COLUMN = 25
START_ROW = 6
POPUP_TYPE =
IMPORTING
ANSWER =
TABLES
PARAMETER =
EXCEPTIONS
TEXT_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.
ENDCASE.
ENDMODULE. " USER_COMMAND_9010 INPUT
-
-
Form alvl_value_request
-
-
FORM alvl_value_request USING pi_alv
value(p_0158).
DATA: l_disvariant TYPE disvariant.
Wertehilfe
l_disvariant-report = sy-cprog.
l_disvariant-report(1) = 'A'.
l_disvariant-variant = pi_alv.
l_disvariant-log_group = p_0158.
CALL FUNCTION 'LVC_VARIANT_SAVE_LOAD'
EXPORTING
i_save_load = 'F'
i_tabname = '1'
CHANGING
cs_variant = l_disvariant
EXCEPTIONS
OTHERS = 1.
IF sy-subrc = 0.
pi_alv = l_disvariant-variant.
ELSE.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " ALVL_VALUE_REQUEST.
cheers,
hema.
‎2008 Feb 05 1:40 PM
‎2008 Feb 05 1:40 PM
Hi,
Have a look at program BCALV_EDIT_05,
In that program checkbox are made as editable field....
‎2008 Feb 05 1:40 PM
HI, also chk this.
Program BCALV_EDIT_01 will provide a simple ALV Grid editing example.
Additional examples can also be found in BCALV_EDIT_02,3,4...
Check this sample report
&----
*& Report ZALVGRID_EDITABLE
*&
*& Description: editable ALV -> ENTER jumps to next row
&----
*& Dynpro flow logic: no screen elements, ok_code = GD_OKCODE
PROCESS BEFORE OUTPUT.
*
o MODULE STATUS_0100.
***
PROCESS AFTER INPUT.
*
o MODULE USER_COMMAND_0100.
**
*&
&----
REPORT zalvgrid_editable.
DATA:
gd_repid TYPE syst-repid,
gd_okcode TYPE ui_func,
*
gt_fcat TYPE lvc_t_fcat,
go_docking TYPE REF TO cl_gui_docking_container,
go_grid TYPE REF TO cl_gui_alv_grid.
DATA:
gt_knb1 TYPE STANDARD TABLE OF knb1.
----
CLASS lcl_eventhandler DEFINITION
----
*
----
CLASS lcl_eventhandler DEFINITION.
PUBLIC SECTION.
CLASS-METHODS:
handle_data_changed
FOR EVENT data_changed OF cl_gui_alv_grid
IMPORTING
er_data_changed
e_onf4
e_onf4_before
e_onf4_after
e_ucomm
sender.
ENDCLASS. "lcl_eventhandler DEFINITION
----
CLASS lcl_eventhandler IMPLEMENTATION
----
*
----
CLASS lcl_eventhandler IMPLEMENTATION.
METHOD handle_data_changed.
define local data
cl_gui_cfw=>set_new_ok_code( 'NEXT_ROW' ). " not possible on 4.6c
CALL METHOD cl_gui_cfw=>set_new_ok_code
EXPORTING
new_code = 'NEXT_ROW'
IMPORTING
RC =
.
" Triggers PAI of dynpro with ok_code = 'NEXT_ROW'
ENDMETHOD. "handle_data_changed
ENDCLASS. "lcl_eventhandler IMPLEMENTATION
PARAMETERS:
p_bukrs TYPE bukrs DEFAULT '2000' OBLIGATORY.
START-OF-SELECTION.
SELECT * FROM knb1 INTO TABLE gt_knb1
WHERE bukrs = p_bukrs.
Create docking container
CREATE OBJECT go_docking
EXPORTING
parent = cl_gui_container=>screen0
ratio = 90
EXCEPTIONS
OTHERS = 6.
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 ALV grid
CREATE OBJECT go_grid
EXPORTING
i_parent = go_docking
EXCEPTIONS
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.
" Triggers event DATA_CHANGED when ENTER is pushed
CALL METHOD go_grid->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_enter
EXCEPTIONS
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.
SET HANDLER:
lcl_eventhandler=>handle_data_changed FOR go_grid.
Build fieldcatalog and set hotspot for field KUNNR
PERFORM build_fieldcatalog_knb1.
Display data
CALL METHOD go_grid->set_table_for_first_display
CHANGING
it_outtab = gt_knb1
it_fieldcatalog = gt_fcat
EXCEPTIONS
OTHERS = 4.
IF sy-subrc 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
Link the docking container to the target dynpro
gd_repid = syst-repid.
CALL METHOD go_docking->link
EXPORTING
repid = gd_repid
dynnr = '0100'
CONTAINER =
EXCEPTIONS
OTHERS = 4.
IF sy-subrc 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ok-code field = GD_OKCODE
CALL SCREEN '0100'.
END-OF-SELECTION.
&----
*& Module STATUS_0100 OUTPUT
&----
text
----
MODULE status_0100 OUTPUT.
SET PF-STATUS 'STATUS_0100'.
SET TITLEBAR 'xxx'.
CALL METHOD go_grid1->refresh_table_display
*
o
+ EXPORTING
+ IS_STABLE =
+ I_SOFT_REFRESH =
o EXCEPTIONS
o FINISHED = 1
o others = 2
o .
o IF sy-subrc 0.
+ MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
+ WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
o ENDIF.
ENDMODULE. " STATUS_0100 OUTPUT
&----
*& Module USER_COMMAND_0100 INPUT
&----
text
----
MODULE user_command_0100 INPUT.
go_grid->check_changed_data( ).
CASE gd_okcode.
WHEN 'BACK' OR
'END' OR
'CANC'.
SET SCREEN 0. LEAVE SCREEN.
" NOTE: ENTER button alone works apparently only if the cursor
" is placed within the command window (left-upper corner)
WHEN 'ENTER' OR
'NEXT_ROW'.
PERFORM set_cursor_next_row.
WHEN OTHERS.
ENDCASE.
CLEAR: gd_okcode.
ENDMODULE. " USER_COMMAND_0100 INPUT
&----
*& Form BUILD_FIELDCATALOG_KNB1
&----
text
----
--> p1 text
<-- p2 text
----
FORM build_fieldcatalog_knb1 .
define local data
DATA:
ls_fcat TYPE lvc_s_fcat.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
I_BUFFER_ACTIVE =
i_structure_name = 'KNB1'
I_CLIENT_NEVER_DISPLAY = 'X'
I_BYPASSING_BUFFER =
I_INTERNAL_TABNAME =
CHANGING
ct_fieldcat = gt_fcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
LOOP AT gt_fcat INTO ls_fcat
WHERE ( fieldname = 'ZUAWA' ).
ls_fcat-edit = abap_true.
ls_fcat-col_opt = abap_true.
MODIFY gt_fcat FROM ls_fcat.
ENDLOOP.
ENDFORM. " BUILD_FIELDCATALOG_KNB1
&----
*& Form SET_CURSOR_NEXT_ROW
&----
text
----
--> p1 text
<-- p2 text
----
FORM set_cursor_next_row .
define local data
DATA:
ls_row TYPE lvc_s_row,
ls_col TYPE lvc_s_col.
CALL METHOD go_grid->get_current_cell
IMPORTING
E_ROW =
E_VALUE =
E_COL =
es_row_id = ls_row
es_col_id = ls_col
ES_ROW_NO =
.
ADD 1 TO ls_row-index. " next row
CALL METHOD go_grid->set_current_cell_via_id
EXPORTING
is_row_id = ls_row
is_column_id = ls_col
IS_ROW_NO =
.
ENDFORM. " SET_CURSOR_NEXT_ROW
Check these links
Editable ALV using OOABAP
hope this helps.
cheers,
Hema.
‎2008 Feb 05 2:07 PM
hi
good
REPORT zbcalv_grid_test .
CLASS :cl_gui_alv_grid DEFINITION LOAD,
cl_gui_custom_container DEFINITION LOAD.
DATA: BEGIN OF itab OCCURS 0,
matnr TYPE mara-matnr,
mtart TYPE mara-mtart,
END OF itab.
***SCREEN VARIABLE
DATA: ok_code LIKE sy-ucomm,
gv_valid(1) TYPE c.
*****ALV DATA DECLARATION
DATA : gs_layout TYPE lvc_s_layo,
container TYPE REF TO cl_gui_custom_container,
g_grid TYPE REF TO cl_gui_alv_grid.
**************START-OF-SELECTION*********
START-OF-SELECTION.
CALL SCREEN 1000.
&----
*& Module STATUS_1000 OUTPUT
&----
text
-
MODULE status_1000 OUTPUT.
SET PF-STATUS 'STATUS1'.
SET TITLEBAR 'xxx'.
SELECT matnr mtart
FROM mara UP TO 10 ROWS
INTO TABLE itab.
IF sy-subrc = 0.
CREATE OBJECT container
EXPORTING
PARENT =
container_name = 'CONTAINER'
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
OTHERS = 6.
gs_layout-cwidth_opt = 'X'.
CREATE OBJECT g_grid
EXPORTING
I_SHELLSTYLE = 0
I_LIFETIME =
i_parent = container
I_APPL_EVENTS = space
I_PARENTDBG =
I_APPLOGPARENT =
I_GRAPHICSPARENT =
I_NAME =
EXCEPTIONS
error_cntl_create = 1
error_cntl_init = 2
error_cntl_link = 3
error_dp_create = 4
OTHERS = 5.
CALL METHOD g_grid->set_table_for_first_display
EXPORTING
I_BUFFER_ACTIVE =
I_BYPASSING_BUFFER =
I_CONSISTENCY_CHECK =
i_structure_name = 'MARA'
IS_VARIANT =
I_SAVE =
I_DEFAULT = 'X'
is_layout = gs_layout
IS_PRINT =
IT_SPECIAL_GROUPS =
IT_TOOLBAR_EXCLUDING =
IT_HYPERLINK =
IT_ALV_GRAPHICS =
IT_EXCEPT_QINFO =
CHANGING
it_outtab = itab[]
IT_FIELDCATALOG = T_FIELDCAT
IT_SORT =
IT_FILTER =
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4.
ENDIF.
ENDMODULE. " STATUS_1000 OUTPUT
&----
*& Module USER_COMMAND_1000 INPUT
&----
text
-
module USER_COMMAND_1000 input.
***USER INTERATION ON SCREEN 100
CASE ok_code.
WHEN '&F03'.
LEAVE program.
WHEN OTHERS.
LEAVE TO SCREEN 0.
ENDCASE.
endmodule. " USER_COMMAND_1000 INPUT
thanks
mrutyun^