‎2007 May 27 10:38 AM
hi
can any one tall me a simple program
to display alv grid using classes so that i may
understand the flow of alv grid using classes.
‎2007 May 27 10:39 AM
‎2007 May 27 10:28 PM
Hello Azra
I have posted several simplified ALV reports within the <i>ABAP Objects</i> forum (search for <b>ZUS_SDN</b>). Below you will find a few examples.
The following sample report show customer data ("Header"; KNB1) in the first ALV list and sales areas ("Detail"; KNVV) for the selected customer in the second ALV list.
*&---------------------------------------------------------------------*
*& Report ZUS_SDN_TWO_ALV_GRIDS
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zus_sdn_two_alv_grids.
DATA:
gd_okcode TYPE ui_func,
*
go_docking TYPE REF TO cl_gui_docking_container,
go_splitter TYPE REF TO cl_gui_splitter_container,
go_cell_top TYPE REF TO cl_gui_container,
go_cell_bottom TYPE REF TO cl_gui_container,
go_grid1 TYPE REF TO cl_gui_alv_grid,
go_grid2 TYPE REF TO cl_gui_alv_grid,
gs_layout TYPE lvc_s_layo.
DATA:
gt_knb1 TYPE STANDARD TABLE OF knb1,
gt_knvv TYPE STANDARD TABLE OF knvv.
*---------------------------------------------------------------------*
* CLASS lcl_eventhandler DEFINITION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_eventhandler DEFINITION.
PUBLIC SECTION.
CLASS-METHODS:
handle_double_click FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING
e_row
e_column
es_row_no
sender.
ENDCLASS. "lcl_eventhandler DEFINITION
*---------------------------------------------------------------------*
* CLASS lcl_eventhandler IMPLEMENTATION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_eventhandler IMPLEMENTATION.
METHOD handle_double_click.
* define local data
DATA:
ls_knb1 TYPE knb1.
CHECK ( sender = go_grid1 ).
READ TABLE gt_knb1 INTO ls_knb1 INDEX e_row-index.
CHECK ( ls_knb1-kunnr IS NOT INITIAL ).
CALL METHOD go_grid1->set_current_cell_via_id
EXPORTING
* IS_ROW_ID =
* IS_COLUMN_ID =
is_row_no = es_row_no.
* Triggers PAI of the dynpro with the specified ok-code
CALL METHOD cl_gui_cfw=>set_new_ok_code( 'DETAIL' ).
ENDMETHOD. "handle_double_click
ENDCLASS. "lcl_eventhandler IMPLEMENTATION
START-OF-SELECTION.
SELECT * FROM knb1 INTO TABLE gt_knb1
WHERE bukrs = '1000'.
* 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 splitter container
CREATE OBJECT go_splitter
EXPORTING
parent = go_docking
rows = 2
columns = 1
* NO_AUTODEF_PROGID_DYNNR =
* NAME =
EXCEPTIONS
cntl_error = 1
cntl_system_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.
* Get cell container
CALL METHOD go_splitter->get_container
EXPORTING
row = 1
column = 1
RECEIVING
container = go_cell_top.
CALL METHOD go_splitter->get_container
EXPORTING
row = 2
column = 1
RECEIVING
container = go_cell_bottom.
* Create ALV grids
CREATE OBJECT go_grid1
EXPORTING
i_parent = go_cell_top
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.
* Set event handler
SET HANDLER: lcl_eventhandler=>handle_double_click FOR go_grid1.
CREATE OBJECT go_grid2
EXPORTING
i_parent = go_cell_bottom
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.
* Display data
gs_layout-grid_title = 'Customers'.
CALL METHOD go_grid1->set_table_for_first_display
EXPORTING
i_structure_name = 'KNB1'
is_layout = gs_layout
CHANGING
it_outtab = gt_knb1
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.
gs_layout-grid_title = 'Customers Details (Sales Areas)'.
CALL METHOD go_grid2->set_table_for_first_display
EXPORTING
i_structure_name = 'KNVV'
is_layout = gs_layout
CHANGING
it_outtab = gt_knvv " empty !!!
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
CALL METHOD go_docking->link
EXPORTING
repid = syst-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.
* NOTE: dynpro does not contain any elements
CALL SCREEN '0100'.
* Flow logic of dynpro (does not contain any dynpro elements):
*
*PROCESS BEFORE OUTPUT.
* MODULE STATUS_0100.
**
*PROCESS AFTER INPUT.
* MODULE USER_COMMAND_0100.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS 'STATUS_0100'. " contains push button "DETAIL"
* SET TITLEBAR 'xxx'.
* Refresh display of detail ALV list
CALL METHOD go_grid2->refresh_table_display
* EXPORTING
* IS_STABLE =
* I_SOFT_REFRESH =
EXCEPTIONS
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.
ENDMODULE. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
CASE gd_okcode.
WHEN 'BACK' OR
'END' OR
'CANC'.
SET SCREEN 0. LEAVE SCREEN.
* User has pushed button "Display Details"
WHEN 'DETAIL'.
PERFORM entry_show_details.
WHEN OTHERS.
ENDCASE.
CLEAR: gd_okcode.
ENDMODULE. " USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
*& Form ENTRY_SHOW_DETAILS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM entry_show_details .
* define local data
DATA:
ld_row TYPE i,
ls_knb1 TYPE knb1.
CALL METHOD go_grid1->get_current_cell
IMPORTING
e_row = ld_row.
READ TABLE gt_knb1 INTO ls_knb1 INDEX ld_row.
CHECK ( syst-subrc = 0 ).
SELECT * FROM knvv INTO TABLE gt_knvv
WHERE kunnr = ls_knb1-kunnr.
ENDFORM. " ENTRY_SHOW_DETAILS
Simply drill down the ALV list by double-clicking. The flow logic of the dynpro is shown below. The dynpro does not contain any elements.
PROCESS BEFORE OUTPUT.
MODULE STATUS_0100.
*
PROCESS AFTER INPUT.
MODULE USER_COMMAND_0100.
*&---------------------------------------------------------------------*
*& Report ZUS_SDN_THREE_ALV_GRIDS
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zus_sdn_three_alv_grids.
DATA:
gd_okcode TYPE ui_func,
*
go_docking TYPE REF TO cl_gui_docking_container,
go_splitter TYPE REF TO cl_gui_splitter_container,
go_splitter_2 TYPE REF TO cl_gui_splitter_container,
go_cell_top TYPE REF TO cl_gui_container,
go_cell_bottom TYPE REF TO cl_gui_container,
go_cell_left TYPE REF TO cl_gui_container,
go_cell_right TYPE REF TO cl_gui_container,
go_grid1 TYPE REF TO cl_gui_alv_grid,
go_grid2 TYPE REF TO cl_gui_alv_grid,
go_grid3 TYPE REF TO cl_gui_alv_grid.
DATA:
gt_knb1 TYPE STANDARD TABLE OF knb1,
gt_vbak TYPE STANDARD TABLE OF vbak,
gt_vbap TYPE STANDARD TABLE OF vbap.
PARAMETERS:
p_bukrs TYPE bukrs DEFAULT '1000'.
*---------------------------------------------------------------------*
* CLASS lcl_eventhandler DEFINITION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_eventhandler DEFINITION.
PUBLIC SECTION.
CLASS-METHODS:
handle_double_click FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING
e_row
e_column
es_row_no
sender.
ENDCLASS. "lcl_eventhandler DEFINITION
*---------------------------------------------------------------------*
* CLASS lcl_eventhandler IMPLEMENTATION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_eventhandler IMPLEMENTATION.
METHOD handle_double_click.
* define local data
DATA:
ls_knb1 TYPE knb1,
ls_vbak TYPE vbak,
ls_vbap TYPE vbap.
CASE sender.
WHEN go_grid1.
READ TABLE gt_knb1 INTO ls_knb1 INDEX e_row-index.
CHECK ( ls_knb1-kunnr IS NOT INITIAL ).
CALL METHOD go_grid1->set_current_cell_via_id
EXPORTING
* IS_ROW_ID =
* IS_COLUMN_ID =
is_row_no = es_row_no.
* Triggers PAI of the dynpro with the specified ok-code
CALL METHOD cl_gui_cfw=>set_new_ok_code( 'ORDERS' ).
WHEN go_grid2.
READ TABLE gt_vbak INTO ls_vbak INDEX e_row-index.
CHECK ( ls_vbak-vbeln IS NOT INITIAL ).
CALL METHOD go_grid1->set_current_cell_via_id
EXPORTING
* IS_ROW_ID =
* IS_COLUMN_ID =
is_row_no = es_row_no.
* Triggers PAI of the dynpro with the specified ok-code
CALL METHOD cl_gui_cfw=>set_new_ok_code( 'ORDER_DETAILS' ).
WHEN go_grid3.
READ TABLE gt_vbap INTO ls_vbap INDEX e_row-index.
CHECK ( ls_vbap-matnr IS NOT INITIAL ).
SET PARAMETER ID 'MAT' FIELD ls_vbap-matnr.
CALL TRANSACTION 'MM02' AND SKIP FIRST SCREEN.
WHEN OTHERS.
RETURN.
ENDCASE.
ENDMETHOD. "handle_double_click
ENDCLASS. "lcl_eventhandler IMPLEMENTATION
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 splitter container
CREATE OBJECT go_splitter
EXPORTING
parent = go_docking
rows = 1
columns = 2
* NO_AUTODEF_PROGID_DYNNR =
* NAME =
EXCEPTIONS
cntl_error = 1
cntl_system_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.
* Get cell container
CALL METHOD go_splitter->get_container
EXPORTING
row = 1
column = 1
RECEIVING
container = go_cell_left.
CALL METHOD go_splitter->get_container
EXPORTING
row = 1
column = 2
RECEIVING
container = go_cell_right.
* Create 2nd splitter container
CREATE OBJECT go_splitter_2
EXPORTING
parent = go_cell_left
rows = 2
columns = 1
* NO_AUTODEF_PROGID_DYNNR =
* NAME =
EXCEPTIONS
cntl_error = 1
cntl_system_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.
* Get cell container
CALL METHOD go_splitter_2->get_container
EXPORTING
row = 1
column = 1
RECEIVING
container = go_cell_top.
CALL METHOD go_splitter_2->get_container
EXPORTING
row = 2
column = 1
RECEIVING
container = go_cell_bottom.
* Create ALV grids
CREATE OBJECT go_grid1
EXPORTING
i_parent = go_cell_top
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.
CREATE OBJECT go_grid2
EXPORTING
i_parent = go_cell_bottom
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.
CREATE OBJECT go_grid3
EXPORTING
i_parent = go_cell_right
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.
* Set event handler
SET HANDLER: lcl_eventhandler=>handle_double_click FOR go_grid1.
SET HANDLER: lcl_eventhandler=>handle_double_click FOR go_grid2.
SET HANDLER: lcl_eventhandler=>handle_double_click FOR go_grid3.
* Display data
CALL METHOD go_grid1->set_table_for_first_display
EXPORTING
i_structure_name = 'KNB1'
CHANGING
it_outtab = gt_knb1
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.
REFRESH: gt_vbak.
CALL METHOD go_grid2->set_table_for_first_display
EXPORTING
i_structure_name = 'VBAK'
CHANGING
it_outtab = gt_vbak " empty !!!
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.
REFRESH: gt_vbap.
CALL METHOD go_grid3->set_table_for_first_display
EXPORTING
i_structure_name = 'VBAP'
CHANGING
it_outtab = gt_vbap " empty !!!
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
CALL METHOD go_docking->link
EXPORTING
repid = syst-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.
* NOTE: dynpro does not contain any elements
CALL SCREEN '0100'.
* Flow logic of dynpro:
*
*PROCESS BEFORE OUTPUT.
* MODULE STATUS_0100.
**
*PROCESS AFTER INPUT.
* MODULE USER_COMMAND_0100.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS 'STATUS_0100'. " contains push button "ORDERS"
* SET TITLEBAR 'xxx'.
* Refresh display of detail ALV list
CALL METHOD go_grid2->refresh_table_display
* EXPORTING
* IS_STABLE =
* I_SOFT_REFRESH =
EXCEPTIONS
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 display of detail ALV list
CALL METHOD go_grid3->refresh_table_display
* EXPORTING
* IS_STABLE =
* I_SOFT_REFRESH =
EXCEPTIONS
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.
ENDMODULE. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
CASE gd_okcode.
WHEN 'BACK' OR
'END' OR
'CANC'.
SET SCREEN 0. LEAVE SCREEN.
* User has pushed button "Display Orders"
WHEN 'ORDERS'.
PERFORM customer_show_orders.
WHEN 'ORDER_DETAILS'.
PERFORM order_show_details.
WHEN OTHERS.
ENDCASE.
CLEAR: gd_okcode.
ENDMODULE. " USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
*& Form CUSTOMER_SHOW_ORDERS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM customer_show_orders .
* define local data
DATA:
ld_row TYPE i,
ls_knb1 TYPE knb1.
CALL METHOD go_grid1->get_current_cell
IMPORTING
e_row = ld_row.
READ TABLE gt_knb1 INTO ls_knb1 INDEX ld_row.
CHECK ( syst-subrc = 0 ).
SELECT * FROM vbak INTO TABLE gt_vbak
WHERE kunnr = ls_knb1-kunnr.
REFRESH: gt_vbap.
ENDFORM. " CUSTOMER_SHOW_ORDERS
*&---------------------------------------------------------------------*
*& Form ORDER_SHOW_DETAILS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM order_show_details .
* define local data
DATA:
ld_row TYPE i,
ls_vbak TYPE vbak.
CALL METHOD go_grid1->get_current_cell
IMPORTING
e_row = ld_row.
READ TABLE gt_vbak INTO ls_vbak INDEX ld_row.
CHECK ( syst-subrc = 0 ).
SELECT * FROM vbap INTO TABLE gt_vbap
WHERE vbeln = ls_vbak-vbeln.
ENDFORM. " ORDER_SHOW_DETAILS
The context menus are always dynamically generated. Thus, when you right-click on something this raises event CONTEXT_MENU_REQUEST and when you choose a function this raises event USER_COMMAND (the naming of the events is somewhat special for CL_GUI_ALV_GRID).
The following sample report shows how to code a context menu. Instead of dynamically adding the functions to an existing context menu it is also possible to use a static context menu corresponding to a GUI status object.
*&---------------------------------------------------------------------*
*& Report ZUS_SDN_ALVGRID_EVENTS_CTXMENU
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZUS_SDN_ALVGRID_EVENTS_CTXMENU.
DATA:
gd_okcode TYPE ui_func,
*
gt_fcat TYPE lvc_t_fcat,
go_docking TYPE REF TO cl_gui_docking_container,
go_grid1 TYPE REF TO cl_gui_alv_grid.
DATA:
gt_knb1 TYPE STANDARD TABLE OF knb1.
PARAMETERS:
p_bukrs TYPE bukrs DEFAULT '2000' OBLIGATORY.
*---------------------------------------------------------------------*
* CLASS lcl_eventhandler DEFINITION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_eventhandler DEFINITION.
PUBLIC SECTION.
CLASS-DATA:
ms_row TYPE lvc_s_row.
CLASS-METHODS:
handle_context_menu_request
FOR EVENT context_menu_request OF cl_gui_alv_grid
IMPORTING
e_object " type ref to cl_ctmenu
sender,
handle_user_command
FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING
e_ucomm
sender.
ENDCLASS. "lcl_eventhandler DEFINITION
*---------------------------------------------------------------------*
* CLASS lcl_eventhandler IMPLEMENTATION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_eventhandler IMPLEMENTATION.
METHOD handle_user_command.
* define local data
DATA:
ls_knb1 TYPE knb1,
ls_col_id TYPE lvc_s_col.
CHECK ( e_ucomm = 'XD03' ).
READ TABLE gt_knb1 INTO ls_knb1 INDEX ms_row-index.
CHECK ( ls_knb1-kunnr IS NOT INITIAL ).
SET PARAMETER ID 'KUN' FIELD ls_knb1-kunnr.
SET PARAMETER ID 'BUK' FIELD ls_knb1-bukrs.
CALL TRANSACTION 'XD03' AND SKIP FIRST SCREEN.
ENDMETHOD. "handle_user_command
METHOD handle_context_menu_request.
* define local data
DATA:
lt_rows TYPE lvc_t_row.
CLEAR: ms_row.
CALL METHOD go_grid1->get_selected_rows
IMPORTING
et_index_rows = lt_rows.
READ TABLE lt_rows INTO ms_row INDEX 1.
e_object->add_separator( ).
CALL METHOD e_object->add_function
EXPORTING
fcode = 'XD03'
text = 'Display Customer'
* ICON =
* FTYPE =
* DISABLED =
* HIDDEN =
* CHECKED =
* ACCELERATOR =
.
ENDMETHOD. "handle_context_menu_request
ENDCLASS. "lcl_eventhandler IMPLEMENTATION
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_grid1
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.
* Set event handler
SET HANDLER:
lcl_eventhandler=>handle_user_command FOR go_grid1,
lcl_eventhandler=>handle_context_menu_request for go_grid1.
* Build fieldcatalog and set hotspot for field KUNNR
PERFORM build_fieldcatalog_knb1.
* Display data
CALL METHOD go_grid1->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
CALL METHOD go_docking->link
EXPORTING
repid = syst-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'.
* NOTE: no dynpro elements on screen. Flow logic as shown below:
*PROCESS BEFORE OUTPUT.
* MODULE STATUS_0100.
**
*PROCESS AFTER INPUT.
* MODULE USER_COMMAND_0100.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS 'STATUS_0100'.
* SET TITLEBAR 'xxx'.
ENDMODULE. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
CASE gd_okcode.
WHEN 'BACK' OR
'END' OR
'CANC'.
SET SCREEN 0. LEAVE SCREEN.
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 = 'KUNNR' OR
* fieldname = 'ERNAM' ).
* ls_fcat-hotspot = abap_true.
* MODIFY gt_fcat FROM ls_fcat.
* ENDLOOP.
ENDFORM. " BUILD_FIELDCATALOG_KNB1Regards
Uwe
‎2007 Dec 07 7:13 AM
Hi,
Can you please help me in getting two ALV's on the same screen side by side.
‎2007 Dec 07 7:22 AM
Hello Satish
You can take the sample report ZUS_SDN_TWO_ALV_GRIDS as shown above. Simply make the following changes in order to display the two ALV lists left/right instead of top/bottom:
DATA:
...
" go_cell_top TYPE REF TO cl_gui_container,
" go_cell_bottom TYPE REF TO cl_gui_container,
go_cell_left TYPE REF TO cl_gui_container,
go_cell_right TYPE REF TO cl_gui_container,
...
" NOTE: not really necessary but increases readability of the report
* Create splitter container
CREATE OBJECT go_splitter
EXPORTING
parent = go_docking
" rows = 2
" columns = 1 " top / bottom
rows = 1
columns = 2 " left / right
EXCEPTIONS
cntl_error = 1
cntl_system_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.
* Get cell container
CALL METHOD go_splitter->get_container
EXPORTING
row = 1
column = 1
RECEIVING
container = go_cell_left.
CALL METHOD go_splitter->get_container
EXPORTING
" row = 2
" column = 1 " top / bottom
row = 1
column = 2 " left / right
RECEIVING
container = go_cell_right.That's all.
Regards,
Uwe
‎2007 May 28 4:36 AM
Hi Azra,
Here`s a good document on ALV Tutorial which would serve all ur needs.
<b>PLease pass BCALV* in se 38 and you will find many standard reports for ALV using class.</b>
http://help.sap.com/saphelp_erp2004/helpdata/en/ff/4649a6f17411d2b486006094192fe3/content.htm
http://help.sap.com/saphelp_nw04s/helpdata/en/43/8d75856536267fe10000000a1553f7/content.htm
http://help.sap.com/saphelp_erp2004/helpdata/en/22/a3f5fed2fe11d2b467006094192fe3/content.htm
<b>Regards,
Jackie..</b>
‎2007 May 28 9:29 AM
Hi frnd,
Just go to SE38
type BCALV* - do F4 - u wll get lots of program to refer.
If u want to see only OO ALV display releted Programs
type BCALV_GRID* and do F4
reward ,
If helps..
‎2007 May 28 11:36 AM
Check out this:
SALV_DEMO_TABLE_REAL_SIMPLE.
Using the class CL_SALV_TABLE you can create an ALV OO display with two instructions:
For example:
DATA: lr_my_ref_to_table TYPE REF TO cl_salv_table.cl_salv_table=>factory(
IMPORTING r_salv_table = lr_my_ref_to_table
EXPORTING t_table = <your_table_to_display> ).An then call the display method of your instance:
lr_my_ref_to_table->display( )..
And that's it.
Hope this helps,
Roby.
‎2007 May 28 12:02 PM
Hello Azra,
Please see the following program.
REPORT zindra_alv1.
&----
Global data definitions for ALV
&----
&----
Object reference
&----
ALV Grid instance reference
DATA: gr_alvgrid TYPE REF TO cl_gui_alv_grid,
Custom container instance reference
gr_ccontainer TYPE REF TO cl_gui_custom_container.
&----
Internal Table
&----
Field catalog table
DATA: gt_fieldcat TYPE lvc_t_fcat,
Internal table holding list data
gt_list TYPE STANDARD TABLE OF sflight.
&----
Work area
&----
Layout structure
DATA: gs_layout TYPE lvc_s_layo,
Field catalog structure
gs_fcat TYPE lvc_s_fcat.
&----
Variables
&----
DATA: ok_code TYPE sy-ucomm,
save_ok TYPE sy-ucomm,
Name of the custom control added on the screen
gv_custom_control_name TYPE scrfname VALUE 'CC_ALV'.
&----
Calling the screen where ALV output is displayed
&----
CALL SCREEN 100.
&----
*& Module STATUS_0100 OUTPUT
&----
PBO
----
MODULE status_0100 OUTPUT.
PF Status
SET PF-STATUS 'MENU'.
ALV display
PERFORM display_alv.
ENDMODULE. " STATUS_0100 OUTPUT
&----
*& Module USER_COMMAND_0100 INPUT
&----
PAI
----
MODULE user_command_0100 INPUT.
save_ok = ok_code.
CLEAR ok_code.
IF save_ok EQ 'EXIT'.
LEAVE PROGRAM.
ENDIF.
ENDMODULE. " USER_COMMAND_0100 INPUT
&----
*& Form display_alv
&----
ALV display
----
FORM display_alv.
PERFORM get_data.
PERFORM create_alv.
ENDFORM. " display_alv
&----
*& Form get_data
&----
Fetch data to be displayed in the list
----
FORM get_data.
SELECT * FROM sflight
INTO TABLE gt_list.
ENDFORM. " get_data
&----
*& Form create_alv
&----
Create and set or Refresh ALV
----
FORM create_alv.
Checking whether an instance of the container (or ALV Grid) exists.
IF gr_alvgrid IS INITIAL.
If not, creating and setting ALV for the first display.
Creating custom container instance
CREATE OBJECT gr_ccontainer
EXPORTING
container_name = gv_custom_control_name
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
OTHERS = 6.
Creating ALV Grid instance
CREATE OBJECT gr_alvgrid
EXPORTING
i_parent = gr_ccontainer
EXCEPTIONS
error_cntl_create = 1
error_cntl_init = 2
error_cntl_link = 3
error_dp_create = 4
OTHERS = 5.
Preparing field catalog.
PERFORM prepare_field_catalog CHANGING gt_fieldcat.
Preparing layout structure
PERFORM prepare_layout CHANGING gs_layout.
Method to display ALV grid
CALL METHOD gr_alvgrid->set_table_for_first_display
EXPORTING
is_layout = gs_layout
CHANGING
it_outtab = gt_list
it_fieldcatalog = gt_fieldcat
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4.
ELSE.
If an instance of the container (or ALV Grid) exists, refreshing it.
CALL METHOD gr_alvgrid->refresh_table_display
EXCEPTIONS
finished = 1
OTHERS = 2.
ENDIF.
ENDFORM. " create_alv
&----
*& Form prepare_field_catalog
&----
Subroutine to populate field catalog
----
<--P_GT_FIELDCAT Table to describe the field catalog
----
FORM prepare_field_catalog CHANGING p_gt_fieldcat TYPE lvc_t_fcat.
Generating the field catalog semi automatically
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'SFLIGHT'
CHANGING
ct_fieldcat = p_gt_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
LOOP AT p_gt_fieldcat INTO gs_fcat.
CASE gs_fcat-fieldname.
WHEN 'CARRID'.
gs_fcat-outputlen = '10'.
gs_fcat-coltext = 'Airline Carrier ID'.
MODIFY p_gt_fieldcat FROM gs_fcat.
WHEN 'FLDATE'.
gs_fcat-just = 'C'.
gs_fcat-hotspot = 'X'.
MODIFY p_gt_fieldcat FROM gs_fcat.
ENDCASE.
ENDLOOP.
ENDFORM. " prepare_field_catalog
&----
*& Form prepare_layout
&----
Preparing layout structure
----
<--P_GS_LAYOUT Layout structure
----
FORM prepare_layout CHANGING p_gs_layout TYPE lvc_s_layo.
p_gs_layout-zebra = 'X' .
p_gs_layout-grid_title = 'Flight Info System'.
p_gs_layout-smalltitle = 'X'.
ENDFORM. " prepare_layout
You can also refer to following URL for very useful info.
Award points if useful.
Regards
Indrajit.
‎2007 May 29 5:31 AM
Hello Azra,
Check out the code below
PROGRAM ZSAC_DBCLK_ALVOO MESSAGE-ID ZSAC_PUR_MSG.
type-pools : slis.
CONSTANTS : C_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'.
DATA: gt_outtab type table of ZSAC_EDIT, wa_gt_outtab like line of gt_outtab.
tables :
ekko, "Purchasing Document Header
ekpo. "Purchasing Document Item
**********************FOR EDITABLE ALV**********************
DATA :g_grid TYPE REF TO cl_gui_alv_grid,
g_custom_container TYPE REF TO cl_gui_custom_container,
gs_layout TYPE lvc_s_layo,
g_max type i value 100,
gte_fieldcat type lvc_t_fcat,
gse_fieldcat like line of gte_fieldcat.
**********************FOR DOCKING CONTAINER LEFT**********************
DATA : dock_left type ref to cl_gui_docking_container,
sd_container type ref to cl_gui_custom_container,
s_grid_dock_left type ref to cl_gui_alv_grid.
***********************FOR DOCKING CONTAINER RIGHT**********************
*
*
*DATA : dock_right type ref to cl_gui_docking_container,
sd_container type ref to cl_gui_custom_container,
s_grid_dock_right type ref to cl_gui_alv_grid.
DATA : s_container type ref to cl_gui_custom_container,
s_grid type ref to cl_gui_alv_grid,
gt_fieldcat type lvc_t_fcat,
gs_fieldcat like line of gt_fieldcat.
DATA : s_container1 type ref to cl_gui_custom_container,
s_grid1 type ref to cl_gui_alv_grid,
gt_fieldcat1 type lvc_t_fcat,
gs_fieldcat1 like line of gt_fieldcat1.
TYPES : BEGIN OF IT_EKKO_STRUCT,
ebeln TYPE ekko-ebeln, "Purchasing Document Number
bukrs TYPE ekko-bukrs, "Company Code
END OF IT_EKKO_STRUCT.
DATA : IT_EKKO TYPE TABLE OF IT_EKKO_STRUCT,
IT_EKKO_WA LIKE LINE OF IT_EKKO.
DATA: ok_code TYPE sy-ucomm ,
TXT_PURDOC LIKE ekpo-ebeln.
TYPES : BEGIN OF IT_EKPO_STRUCT,
ebeln TYPE ekpo-ebeln,
ebelp TYPE ekpo-ebelp,
matnr TYPE ekpo-matnr,
werks TYPE ekpo-werks,
kunnr TYPE ekpo-kunnr,
bukrs TYPE ekko-bukrs,
END OF IT_EKPO_STRUCT.
DATA : IT_EKPO TYPE TABLE OF IT_EKPO_STRUCT,
IT_EKPO_WA LIKE LINE OF IT_EKPO.
*----
*
CLASS Z_MAIN DEFINITION
*----
*
*
*----
*
CLASS Z_MAIN DEFINITION.
PUBLIC SECTION.
METHODS : SELECTION , FIRSTDIS ,SECONDDIS , DOCKING ,EDITABLE_ALV.
METHODS on_dblclick FOR EVENT double_click OF cl_gui_alv_grid IMPORTING e_row.
METHODS handle_dbclk
FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING e_row.
ENDCLASS. "Z_MAIN DEFINITION
*----
*
CLASS Z_MAIN IMPLEMENTATION
*----
*
*
*----
*
CLASS Z_MAIN IMPLEMENTATION.
METHOD FOR SELECTING RECORDS *******************
METHOD SELECTION.
SELECT ebeln ebelp matnr werks kunnr
FROM EKPO
INTO CORRESPONDING FIELDS OF TABLE IT_EKPO
WHERE ebeln = TXT_PURDOC.
SELECT ebeln bukrs
FROM ekko
INTO CORRESPONDING FIELDS OF TABLE it_ekko
WHERE ebeln = TXT_PURDOC.
ENDMETHOD. "SELECTION
DISPLAYING FIRST ALV GRID *******************
METHOD FIRSTDIS.
PERFORM fld_cat.
IF s_container is INITIAL.
CREATE OBJECT s_container
EXPORTING container_name = 'SS_CONTAINER'.
CREATE OBJECT s_grid
EXPORTING i_parent = s_container.
CALL METHOD s_grid->set_table_for_first_display
CHANGING
it_outtab = it_ekko
it_fieldcatalog = gt_fieldcat.
ENDIF.
ENDMETHOD. "FIRSTDIS
DISPLAYING SECOND ALV GRID *******************
METHOD SECONDDIS.
PERFORM fld_cat1.
IF s_container1 is INITIAL.
CREATE OBJECT s_container1
EXPORTING container_name = 'SP_CONTAINER'.
CREATE OBJECT s_grid1
EXPORTING i_parent = s_container1.
CALL METHOD s_grid1->set_table_for_first_display
CHANGING
it_outtab = it_ekpo
it_fieldcatalog = gt_fieldcat1.
ENDIF.
ENDMETHOD. "SECONDDIS
DOUBLE CLICK EVENTS *******************
METHOD on_dblclick.
READ TABLE it_ekko INDEX e_row INTO it_ekko_wa.
LEAVE TO SCREEN 0400.
ENDMETHOD. "on_dblclick
DISPLAYING DOCKING CONTAINER *******************
METHOD DOCKING.
SELECT ebeln ebelp matnr werks kunnr
FROM EKPO
INTO CORRESPONDING FIELDS OF TABLE IT_EKPO.
WHERE ebeln = TXT_PURDOC.
SELECT ebeln bukrs
FROM ekko
INTO CORRESPONDING FIELDS OF TABLE it_ekko.
WHERE ebeln = TXT_PURDOC.
PERFORM fld_cat.
IF sd_container is INITIAL.
CREATE OBJECT sd_container
EXPORTING
container_name = 'SS_DOCK'
EXCEPTIONS
OTHERS = 1.
ENDIF.
IF dock_left is INITIAL.
CREATE OBJECT dock_left
EXPORTING side = cl_gui_docking_container=>dock_at_left
ratio = 25.
ENDIF.
CREATE OBJECT s_grid_dock_left
EXPORTING i_parent = dock_left.
CALL METHOD s_grid_dock_left->set_table_for_first_display
CHANGING
it_outtab = it_ekpo
it_fieldcatalog = gt_fieldcat.
ENDMETHOD. "DOCKING
********************EDITABLE ALV METHOD ***********
METHOD EDITABLE_ALV.
IF g_custom_container IS INITIAL.
CREATE OBJECT g_custom_container
EXPORTING container_name = 'ALV_EDIT'.
CREATE OBJECT g_grid
EXPORTING i_parent = g_custom_container.
*§1.Set status of all cells to editable using the layout structure.
gs_layout-edit = 'X'.
select * from ZSAC_EDIT into table gt_outtab up to g_max rows.
CALL METHOD g_grid->set_table_for_first_display
EXPORTING i_structure_name = 'zsac_edit'
is_layout = gs_layout
i_bypassing_buffer = space
is_variant = ws_f_grid_disvar
i_save = ws_c_grid_save
CHANGING it_outtab = gt_outtab.
CALL METHOD g_grid->set_ready_for_input
EXPORTING
i_ready_for_input = 1.
ENDIF.
ENDMETHOD. "EDITABLE_ALV
METHOD handle_dbclk.
READ TABLE it_ekko INDEX e_row INTO it_ekko_wa.
ENDMETHOD. "handle_hotspot_click
ENDCLASS. "Z_MAIN IMPLEMENTATION
*&----
*
*& Module STATUS_0100 OUTPUT
*&----
*
text
*----
*
MODULE STATUS_0100 OUTPUT.
ENDMODULE. " STATUS_0100 OUTPUT
*&----
*
*& Module USER_COMMAND_0100 INPUT
*&----
*
text
*----
*
MODULE USER_COMMAND_0100 INPUT.
DATA : obj1 type ref to Z_MAIN.
CREATE OBJECT : obj1.
CALL METHOD obj1->SELECTION.
CASE SY-UCOMM.
WHEN 'SEARCH'.
LEAVE TO SCREEN 0300.
WHEN 'EDIT'.
LEAVE TO SCREEN 0600.
WHEN 'DOCK'.
LEAVE TO SCREEN 0500.
WHEN 'TREE'.
LEAVE TO SCREEN 0700.
WHEN 'CANCEL'.
LEAVE PROGRAM.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
*&----
*
*& Module STATUS_0300 OUTPUT
*&----
*
text
*----
*
MODULE STATUS_0300 OUTPUT.
SET PF-STATUS 'ALV1'.
CALL METHOD obj1->FIRSTDIS.
SET HANDLER obj1->on_dblclick FOR s_grid.
ENDMODULE. " STATUS_0300 OUTPUT
*&----
*
*& Form fld_cat
*&----
*
text
*----
*
FORM fld_cat.
gs_fieldcat-fieldname = 'EBELN'.
gs_fieldcat-tabname = 'IT_EKKO'.
gs_fieldcat-reptext = 'Purchasing Document'.
gs_fieldcat-outputlen = 20.
APPEND gs_fieldcat TO gt_fieldcat.
CLEAR gs_fieldcat.
gs_fieldcat-fieldname = 'BUKRS'.
gs_fieldcat-tabname = 'IT_EKKO'.
gs_fieldcat-reptext = 'Company Code'.
gs_fieldcat-outputlen = 20.
APPEND gs_fieldcat TO gt_fieldcat.
CLEAR gs_fieldcat.
ENDFORM. "fld_cat
*&----
*
*& Form fld_cat1
*&----
*
text
*----
*
FORM fld_cat1.
gs_fieldcat1-fieldname = 'EBELN'.
gs_fieldcat1-tabname = 'IT_EKPO'.
gs_fieldcat1-reptext = 'Purchasing Document'.
gs_fieldcat1-outputlen = 20.
APPEND gs_fieldcat1 TO gt_fieldcat1.
CLEAR gs_fieldcat1.
gs_fieldcat1-fieldname = 'EBELP'.
gs_fieldcat1-tabname = 'IT_EKPO'.
gs_fieldcat1-reptext = 'Item Number'.
gs_fieldcat1-outputlen = 20.
APPEND gs_fieldcat1 TO gt_fieldcat1.
CLEAR gs_fieldcat1.
gs_fieldcat1-fieldname = 'WERKS'.
gs_fieldcat1-tabname = 'IT_EKPO'.
gs_fieldcat1-reptext = 'Plant'.
gs_fieldcat1-outputlen = 20.
APPEND gs_fieldcat1 TO gt_fieldcat1.
CLEAR gs_fieldcat1.
ENDFORM. "fld_cat1
*&----
*
*& Module STATUS_0400 OUTPUT
*&----
*
text
*----
*
MODULE STATUS_0400 OUTPUT.
SET PF-STATUS 'ALV2'.
CALL METHOD obj1->SECONDDIS.
ENDMODULE. " STATUS_0400 OUTPUT
*&----
*
*& Module USER_COMMAND_0300 INPUT
*&----
*
text
*----
*
MODULE USER_COMMAND_0300 INPUT.
*
ENDMODULE. " USER_COMMAND_0300 INPUT
*&----
*
*& Module USER_COMMAND_0400 INPUT
*&----
*
text
*----
*
MODULE USER_COMMAND_0400 INPUT.
ENDMODULE. " USER_COMMAND_0400 INPUT
*&----
*
*& Module STATUS_0500 OUTPUT
*&----
*
text
*----
*
MODULE STATUS_0500 OUTPUT.
SET PF-STATUS 'DOCKINGCONTAINER'.
CALL METHOD obj1->DOCKING.
SET HANDLER obj1->handle_dbclk FOR s_grid_dock_left.
ENDMODULE. " STATUS_0500 OUTPUT
*&----
*
*& Form handle_double_click
*&----
*
text
*----
*
-->IS_ROW_NO text
-->I_COLUMN_ID text
*----
*
FORM handle_double_click USING is_row_no TYPE lvc_s_roid
i_column_id TYPE lvc_s_col.
READ TABLE it_ekko INTO it_ekko_wa INDEX is_row_no-row_id.
ENDFORM. "handle_double_click
*&----
*
*& Module STATUS_0600 OUTPUT
*&----
*
text
*----
*
MODULE STATUS_0600 OUTPUT.
SET PF-STATUS 'EDITALV'.
CALL METHOD obj1->EDITABLE_ALV.
ENDMODULE. " STATUS_0600 OUTPUT
*&----
*
*& Module USER_COMMAND_0600 INPUT
*&----
*
text
*----
*
MODULE USER_COMMAND_0600 INPUT.
case sy-ucomm.
WHEN 'SAVE'.
call method g_grid->check_changed_data.
UPDATE zsac_edit FROM TABLE gt_outtab.
ENDCASE.
ENDMODULE. " USER_COMMAND_0600 INPUT
*&----
*
*& Form EDIT_FIELDCAT
*&----
*
text
*----
*
FORM EDIT_FIELDCAT.
gse_fieldcat-fieldname = 'ZEMPID'.
gse_fieldcat-tabname = 'ZSAC_EDIT'.
gse_fieldcat-edit = 'X'.
gse_fieldcat-reptext = 'Employee id'.
gse_fieldcat-outputlen = 20.
APPEND gse_fieldcat TO gte_fieldcat.
CLEAR gse_fieldcat.
gse_fieldcat-fieldname = 'ZPROJNAME'.
gse_fieldcat-tabname = 'ZSAC_EDIT'.
gse_fieldcat-edit = 'X'.
gse_fieldcat-reptext = 'Project Name'.
gse_fieldcat-outputlen = 20.
APPEND gse_fieldcat TO gte_fieldcat.
CLEAR gse_fieldcat.
gse_fieldcat-fieldname = 'ZEMPNAME'.
gse_fieldcat-tabname = 'ZSAC_EDIT'.
gse_fieldcat-edit = 'X'.
gse_fieldcat-reptext = 'Employee Name'.
gse_fieldcat-outputlen = 20.
APPEND gse_fieldcat TO gte_fieldcat.
CLEAR gse_fieldcat.
gse_fieldcat-fieldname = 'ZEMPDES'.
gse_fieldcat-tabname = 'ZSAC_EDIT'.
gse_fieldcat-edit = 'X'.
gse_fieldcat-reptext = 'Employee Designation'.
gse_fieldcat-outputlen = 20.
APPEND gse_fieldcat TO gte_fieldcat.
CLEAR gse_fieldcat.
ENDFORM. "EDIT_FIELDCAT
*&----
*
*& Module STATUS_0700 OUTPUT
*&----
*
text
*----
*
MODULE STATUS_0700 OUTPUT.
SET PF-STATUS 'xxxxxxxx'.
ENDMODULE. " STATUS_0700 OUTPUT
Reward points if helpful 🙂
Thanks,
Sachin