2007 Sep 30 8:48 PM
hi all,
i had requirement like when ever i give the material in input field,
dynamically i am calling event data_changed, where it triggers
data_changed event.
By that the material details should display int other output fields .
but it is not happening with this code , will anybody help me in this issue.
REPORT zspot_test1 .
TABLES : makt.
----
CLASS : LCL_EVENT_HAND
----
........ *
----
CLASS : lcl_event_handler DEFINITION.
PUBLIC SECTION.
METHODS : data_change FOR EVENT data_changed
OF cl_gui_alv_grid IMPORTING er_data_changed.
ENDCLASS.
----
CLASS : LCL_EVENT_HAND
----
........ *
----
CLASS : lcl_event_handler IMPLEMENTATION.
METHOD : data_change.
DATA: ls_good TYPE lvc_s_modi, gv_matnr TYPE matnr.
LOOP AT er_data_changed->mt_good_cells INTO ls_good.
CASE ls_good-fieldname.
WHEN'GV_MATNR'.
IF NOT gv_matnr IS INITIAL.
SELECT SINGLE * FROM makt INTO makt WHERE matnr = gv_matnr.
ENDIF.
ENDCASE.
ENDLOOP..
ENDMETHOD.
ENDCLASS.
DATA : ev1 TYPE REF TO lcl_event_handler.
START-OF-SELECTION.
CREATE OBJECT ev1.
SET HANDLER ev1->data_change FOR ALL INSTANCES.
END-OF-SELECTION.
CALL SCREEN 100.
&----
*& Module USER_COMMAND_0100 INPUT
&----
text
----
MODULE user_command_0100 INPUT.
DATA : okcode TYPE syucomm, gv_matnr TYPE matnr.
*if not gv_matnr is initial.
CASE okcode.
WHEN 'ENTE'.
SELECT SINGLE * FROM makt .
WHEN 'SAVE'.
LEAVE TO SCREEN 0.
ENDCASE.
*endif.
ENDMODULE. " USER_COMMAND_0100 INPU
&----
*& Module STATUS_0100 OUTPUT
&----
text
----
MODULE status_0100 OUTPUT.
SET PF-STATUS 'MAIN100'.
SET TITLEBAR 'Materials'
its urgent please.. let me know anyone
ENDMODULE. " STATUS_0100 OUTPUT
hi all,
i had requirement like when ever i give the material in input field,
dynamically i am calling event data_changed, where it triggers
data_changed event.
By that the material details should display int other output fields .
but it is not happening with this code , will anybody help me in this issue.
REPORT zspot_test1 .
TABLES : makt.
----
CLASS : LCL_EVENT_HAND
----
........ *
----
CLASS : lcl_event_handler DEFINITION.
PUBLIC SECTION.
METHODS : data_change FOR EVENT data_changed
OF cl_gui_alv_grid IMPORTING er_data_changed.
ENDCLASS.
----
CLASS : LCL_EVENT_HAND
----
........ *
----
CLASS : lcl_event_handler IMPLEMENTATION.
METHOD : data_change.
DATA: ls_good TYPE lvc_s_modi, gv_matnr TYPE matnr.
LOOP AT er_data_changed->mt_good_cells INTO ls_good.
CASE ls_good-fieldname.
WHEN'GV_MATNR'.
IF NOT gv_matnr IS INITIAL.
SELECT SINGLE * FROM makt INTO makt WHERE matnr = gv_matnr.
ENDIF.
ENDCASE.
ENDLOOP..
ENDMETHOD.
ENDCLASS.
DATA : ev1 TYPE REF TO lcl_event_handler.
START-OF-SELECTION.
CREATE OBJECT ev1.
SET HANDLER ev1->data_change FOR ALL INSTANCES.
END-OF-SELECTION.
CALL SCREEN 100.
&----
*& Module USER_COMMAND_0100 INPUT
&----
text
----
MODULE user_command_0100 INPUT.
DATA : okcode TYPE syucomm, gv_matnr TYPE matnr.
*if not gv_matnr is initial.
CASE okcode.
WHEN 'ENTE'.
SELECT SINGLE * FROM makt .
WHEN 'SAVE'.
LEAVE TO SCREEN 0.
ENDCASE.
*endif.
ENDMODULE. " USER_COMMAND_0100 INPU
&----
*& Module STATUS_0100 OUTPUT
&----
text
----
MODULE status_0100 OUTPUT.
SET PF-STATUS 'MAIN100'.
SET TITLEBAR 'Materials'
its urgent please.. let me know anyone
ENDMODULE. " STATUS_0100 OUTPUT
2007 Oct 01 7:42 AM
Hi Madhavi,
You have to call the method CHECK_CHANGED_DATA of class CL_GUI_ALV_GRID for triggering the event DATA_CHANGED.
Try calling the method. This will help u in solving your problem.
2007 Oct 02 4:38 AM
Hello
Perhaps the following sample report <b>ZUS_SDN_ALVGRID_EDITABLE_3</b> may be useful.
*&---------------------------------------------------------------------*
*& Report ZUS_SDN_ALVGRID_EDITABLE_3
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zus_sdn_alvgrid_editable_3.
TYPE-POOLS: abap.
DATA:
gd_repid TYPE syrepid,
gd_okcode TYPE ui_func,
*
gs_layout TYPE lvc_s_layo,
gt_fcat TYPE lvc_t_fcat,
go_docking TYPE REF TO cl_gui_docking_container,
go_grid TYPE REF TO cl_gui_alv_grid.
TYPES: BEGIN OF ty_s_outtab.
INCLUDE TYPE makt AS data.
TYPES: celltab TYPE lvc_t_styl.
TYPES: END OF ty_s_outtab.
DATA:
gs_outtab TYPE ty_s_outtab,
gt_outtab TYPE STANDARD TABLE OF ty_s_outtab
WITH DEFAULT KEY.
*---------------------------------------------------------------------*
* 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
DATA:
ld_idx TYPE i,
ls_outtab LIKE LINE OF gt_outtab.
" perform REFRESH_LIST. " update ALV list here or at PAI
* Trigger PAI -> refresh ALV list
CALL METHOD cl_gui_cfw=>set_new_ok_code('REFRESH' ).
ENDMETHOD. "handle_data_changed
ENDCLASS. "lcl_eventhandler IMPLEMENTATION
START-OF-SELECTION.
DO 10 TIMES.
APPEND INITIAL LINE TO gt_outtab.
ENDDO.
* 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.
* Build fieldcatalog
PERFORM build_fieldcatalog.
PERFORM set_layout.
SET HANDLER:
lcl_eventhandler=>handle_data_changed FOR go_grid.
* Display data
CALL METHOD go_grid->set_table_for_first_display
EXPORTING
is_layout = gs_layout
CHANGING
it_outtab = gt_outtab
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'.
* Flow logic (no elements on screen):
* 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'.
** CALL METHOD go_grid1->refresh_table_display
*** EXPORTING
*** IS_STABLE =
*** I_SOFT_REFRESH =
** EXCEPTIONS
** FINISHED = 1
** others = 2
** .
** IF sy-subrc <> 0.
*** MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*** WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
** ENDIF.
ENDMODULE. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
TRANSLATE gd_okcode TO UPPER CASE.
* Fetch changes on ALV grid
go_grid->check_changed_data( ).
CASE gd_okcode.
WHEN 'BACK' OR
'END' OR
'CANC'.
SET SCREEN 0. LEAVE SCREEN.
WHEN OTHERS.
ENDCASE.
PERFORM refresh_list.
CALL METHOD go_grid->refresh_table_display
* EXPORTING
* IS_STABLE =
* I_SOFT_REFRESH =
EXCEPTIONS
finished = 1
OTHERS = 2.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CLEAR: gd_okcode.
ENDMODULE. " USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
*& Form BUILD_FIELDCATALOG_KNB1
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM build_fieldcatalog .
* define local data
DATA:
ls_fcat TYPE lvc_s_fcat.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
* I_BUFFER_ACTIVE =
i_structure_name = 'MAKT'
* 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 = 'MATNR' ).
ls_fcat-edit = abap_true.
MODIFY gt_fcat FROM ls_fcat.
ENDLOOP.
ENDFORM. " BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
*& Form SET_LAYOUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM set_layout .
CLEAR: gs_layout.
gs_layout-cwidth_opt = abap_true.
gs_layout-zebra = abap_true.
gs_layout-stylefname = 'CELLTAB'.
ENDFORM. " SET_LAYOUT
*&---------------------------------------------------------------------*
*& Form HANDLE_CHANGED_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM handle_changed_data .
lcl_eventhandler=>handle_data_changed( sender = go_grid ).
ENDFORM. " HANDLE_CHANGED_DATA
*&---------------------------------------------------------------------*
*& Form REFRESH_LIST
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM refresh_list .
* define local data
DATA:
ld_idx TYPE i,
ls_outtab LIKE LINE OF gt_outtab.
LOOP AT gt_outtab INTO ls_outtab.
ld_idx = syst-tabix.
IF ( ls_outtab-matnr IS INITIAL ).
CLEAR: ls_outtab-spras,
ls_outtab-maktx,
ls_outtab-maktg.
ELSE.
SELECT SINGLE * FROM makt INTO ls_outtab-data
WHERE matnr = ls_outtab-matnr
AND spras = syst-langu.
IF ( syst-subrc NE 0 ).
CLEAR: ls_outtab.
ENDIF.
ENDIF.
MODIFY gt_outtab FROM ls_outtab INDEX ld_idx.
ENDLOOP.
ENDFORM. " REFRESH_LISTRegards
Uwe
2007 Oct 02 3:48 PM
hi
good
go through this link,hope this ll help you to solve your problem
http://www.abap4.it/download/ALV.pdf
thanks
mrutyun^
2007 Oct 03 1:43 PM
hi mruthyun,
you have send me a document for Grid,
where as i need the data changed for a particular field in
screen ( not in Grid).
regards,
Madhavi
2007 Oct 03 1:46 PM
hi Uwe,
you have send me a program for Grid,
where as i need the data changed for a particular field in
screen ( not in Grid).
regards,
Madhavi
2007 Oct 03 2:13 PM
Hi Uwe,
Just i saw the answer which is related to my problem, where you have replied for someones question.
But still i am not able to analyse it .
will you please explain me detailed .
how to check DATA_CHANGED for cells ( at cell level).
please its urgent
2007 Oct 03 2:20 PM
Hello Madhavi
The sample report BCALV_EDIT_02 shows how to "Define ready-for-input status at cell level". For details please refer to the documentation at the beginning of the report coding.
The crucial points are shown below:
*§1.Extend your output table for a field, e.g., CELLTAB, that holds
* information about the edit status of each cell for the
* corresponding row (the table type is SORTED!).
DATA: BEGIN OF gt_outtab occurs 0. "with header line
include structure sflight.
DATA: celltab type LVC_T_STYL.
DATA: END OF gt_outtab.*§3.Provide the fieldname of the celltab field by using field
* STYLEFNAME of the layout structure.
gs_layout-stylefname = 'CELLTAB'.
* set substate of editable cells to deactivated
CALL METHOD grid1->set_ready_for_input
EXPORTING i_ready_for_input = 0.
CALL METHOD grid1->set_table_for_first_display
EXPORTING i_structure_name = 'SFLIGHT'
is_layout = gs_layout
CHANGING it_outtab = gt_outtab[].*§2.After selecting data, set edit status for each row in a loop
* according to field SEATSMAX.
LOOP AT gt_outtab.
l_index = sy-tabix.
refresh lt_celltab.
if gt_outtab-seatsmax ge 300.
perform fill_celltab using 'RW'
changing lt_celltab.
else.
perform fill_celltab using 'RO'
changing lt_celltab.
endif.
*§2c.Copy your celltab to the celltab of the current row of gt_outtab.
INSERT LINES OF lt_celltab INTO TABLE gt_outtab-celltab.
MODIFY gt_outtab INDEX l_index.
ENDLOOP.*&---------------------------------------------------------------------*
*& Form FILL_CELLTAB
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_PT_CELLTAB text
*----------------------------------------------------------------------*
FORM fill_celltab using value(p_mode)
CHANGING pt_celltab TYPE lvc_t_styl.
DATA: ls_celltab TYPE lvc_s_styl,
l_mode type raw4.
* This forms sets the style of column 'PRICE' editable
* according to 'p_mode' and the rest to read only either way.
IF p_mode EQ 'RW'.
*§2a.Use attribute CL_GUI_ALV_GRID=>MC_STYLE_ENABLED to set a cell
* to status "editable".
l_mode = cl_gui_alv_grid=>mc_style_enabled.
ELSE. "p_mode eq 'RO'
*§2b.Use attribute CL_GUI_ALV_GRID=>MC_STYLE_DISABLED to set a cell
* to status "non-editable".
l_mode = cl_gui_alv_grid=>mc_style_disabled.
ENDIF.
ls_celltab-fieldname = 'CARRID'.
ls_celltab-style = cl_gui_alv_grid=>mc_style_disabled.
INSERT ls_celltab INTO TABLE pt_celltab.
ls_celltab-fieldname = 'CONNID'.
ls_celltab-style = cl_gui_alv_grid=>mc_style_disabled.
INSERT ls_celltab INTO TABLE pt_celltab.
ls_celltab-fieldname = 'FLDATE'.
ls_celltab-style = cl_gui_alv_grid=>mc_style_disabled.
INSERT ls_celltab INTO TABLE pt_celltab.
ls_celltab-fieldname = 'PRICE'.
ls_celltab-style = l_mode.
INSERT ls_celltab INTO TABLE pt_celltab.
ls_celltab-fieldname = 'CURRENCY'.
ls_celltab-style = cl_gui_alv_grid=>mc_style_disabled.
INSERT ls_celltab INTO TABLE pt_celltab.
ls_celltab-fieldname = 'PLANETYPE'.
ls_celltab-style = cl_gui_alv_grid=>mc_style_disabled.
INSERT ls_celltab INTO TABLE pt_celltab.
ls_celltab-fieldname = 'SEATSMAX'.
ls_celltab-style = cl_gui_alv_grid=>mc_style_disabled.
INSERT ls_celltab INTO TABLE pt_celltab.
ls_celltab-fieldname = 'SEATSOCC'.
ls_celltab-style = cl_gui_alv_grid=>mc_style_disabled.
INSERT ls_celltab INTO TABLE pt_celltab.
ls_celltab-fieldname = 'PAYMENTSUM'.
ls_celltab-style = cl_gui_alv_grid=>mc_style_disabled.
INSERT ls_celltab INTO TABLE pt_celltab. " !!! LVC_T_STYL is SORTED table type
ENDFORM. " FILL_CELLTABPlease note that the field CELLTAB (of GT_OUTTAB) needs not to be known in the fieldcatalog. However, you have to "register" this as layout option (gs_layout-stylefname = 'CELLTAB').
Regards
Uwe
2007 Oct 03 4:57 PM
Hi Uwe,
i am displaying the screen with material in edit mode with f4 help.
i need to select the data from f4 and have to check the data have to be in f4 .
just checking, as i am new to ABAP methods i understand the scenario for grid in BCALV_GRID_03.
Here i need for only one input field .
pls let me know it
regards,
Madhavi
2007 Oct 03 9:24 PM
Hello Madhavi
Please excuse that I have misunderstood your question which is partly due to an incomplete problem description.
To catch and validate F4 help values have a look at the following variant of my sample report
ZUS_SDN_ALVGRID_EDITABLE_3
.BCALV_TEST_GRID_F4_HELP
contains many samples dealing with F4 handling in ALV programming.*&---------------------------------------------------------------------*
*& Report ZUS_SDN_ALVGRID_EDITABLE_3
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zus_sdn_alvgrid_editable_3.
TYPE-POOLS: abap.
DATA:
gd_repid TYPE syrepid,
gd_okcode TYPE ui_func,
*
gs_layout TYPE lvc_s_layo,
gt_fcat TYPE lvc_t_fcat,
go_docking TYPE REF TO cl_gui_docking_container,
go_grid TYPE REF TO cl_gui_alv_grid.
TYPES: BEGIN OF ty_s_outtab.
INCLUDE TYPE makt AS data.
TYPES: celltab TYPE lvc_t_styl.
TYPES: END OF ty_s_outtab.
DATA:
gs_outtab TYPE ty_s_outtab,
gt_outtab TYPE STANDARD TABLE OF ty_s_outtab
WITH DEFAULT KEY.
*---------------------------------------------------------------------*
* 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,
handle_onf4
FOR EVENT onf4 OF cl_gui_alv_grid
IMPORTING
e_fieldname
e_fieldvalue
es_row_no
er_event_data
et_bad_cells
e_display
sender.
ENDCLASS. "lcl_eventhandler DEFINITION
*---------------------------------------------------------------------*
* CLASS lcl_eventhandler IMPLEMENTATION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_eventhandler IMPLEMENTATION.
METHOD handle_onf4.
BREAK-POINT.
ENDMETHOD. "handle_onf4
METHOD handle_data_changed.
* define local data
DATA:
ld_idx TYPE i,
ls_outtab LIKE LINE OF gt_outtab.
IF ( e_onf4_after = abap_true ).
BREAK-POINT.
" Do check, calculations, etc.
* Trigger PAI -> refresh ALV list
CALL METHOD cl_gui_cfw=>set_new_ok_code('REFRESH' ).
ENDIF.
ENDMETHOD. "handle_data_changed
ENDCLASS. "lcl_eventhandler IMPLEMENTATION
START-OF-SELECTION.
DO 10 TIMES.
APPEND INITIAL LINE TO gt_outtab.
ENDDO.
* 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.
* Build fieldcatalog
PERFORM build_fieldcatalog.
PERFORM set_layout.
SET HANDLER:
lcl_eventhandler=>handle_data_changed FOR go_grid,
lcl_eventhandler=>handle_onf4 FOR go_grid.
PERFORM register_f4help.
* Display data
CALL METHOD go_grid->set_table_for_first_display
EXPORTING
is_layout = gs_layout
CHANGING
it_outtab = gt_outtab
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'.
* Flow logic (no elements on screen):
* 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'.
** CALL METHOD go_grid1->refresh_table_display
*** EXPORTING
*** IS_STABLE =
*** I_SOFT_REFRESH =
** EXCEPTIONS
** FINISHED = 1
** others = 2
** .
** IF sy-subrc <> 0.
*** MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*** WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
** ENDIF.
ENDMODULE. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
TRANSLATE gd_okcode TO UPPER CASE.
* Fetch changes on ALV grid
go_grid->check_changed_data( ).
CASE gd_okcode.
WHEN 'BACK' OR
'END' OR
'CANC'.
SET SCREEN 0. LEAVE SCREEN.
WHEN 'REFRESH'.
PERFORM refresh_list.
CALL METHOD go_grid->refresh_table_display
* EXPORTING
* IS_STABLE =
* I_SOFT_REFRESH =
EXCEPTIONS
finished = 1
OTHERS = 2.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
WHEN OTHERS.
ENDCASE.
CLEAR: gd_okcode.
ENDMODULE. " USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
*& Form BUILD_FIELDCATALOG_KNB1
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM build_fieldcatalog .
* define local data
DATA:
ls_fcat TYPE lvc_s_fcat.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
* I_BUFFER_ACTIVE =
i_structure_name = 'MAKT'
* 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 = 'MATNR' ).
ls_fcat-edit = abap_true.
MODIFY gt_fcat FROM ls_fcat.
ENDLOOP.
ENDFORM. " BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
*& Form SET_LAYOUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM set_layout .
CLEAR: gs_layout.
gs_layout-cwidth_opt = abap_true.
gs_layout-zebra = abap_true.
gs_layout-stylefname = 'CELLTAB'.
ENDFORM. " SET_LAYOUT
*&---------------------------------------------------------------------*
*& Form HANDLE_CHANGED_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM handle_changed_data .
lcl_eventhandler=>handle_data_changed( sender = go_grid ).
ENDFORM. " HANDLE_CHANGED_DATA
*&---------------------------------------------------------------------*
*& Form REFRESH_LIST
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM refresh_list .
* define local data
DATA:
ld_idx TYPE i,
ls_outtab LIKE LINE OF gt_outtab.
LOOP AT gt_outtab INTO ls_outtab.
ld_idx = syst-tabix.
IF ( ls_outtab-matnr IS INITIAL ).
CLEAR: ls_outtab-spras,
ls_outtab-maktx,
ls_outtab-maktg.
ELSE.
SELECT SINGLE * FROM makt INTO ls_outtab-data
WHERE matnr = ls_outtab-matnr
AND spras = syst-langu.
IF ( syst-subrc NE 0 ).
CLEAR: ls_outtab.
ENDIF.
ENDIF.
MODIFY gt_outtab FROM ls_outtab INDEX ld_idx.
ENDLOOP.
ENDFORM. " REFRESH_LIST
*&---------------------------------------------------------------------*
*& Form REGISTER_F4HELP
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM register_f4help .
* define local data
* data for event handling
DATA:
ls_f4 TYPE lvc_s_f4,
lt_f4 TYPE lvc_t_f4.
*§1 register f4-help, if a user-defined one should be used.
*§7a set parameter getbefore if you want to use values entered
* before raising event on_f4.
*§7b set parameter chngeafter if you want to use the values entered via
* f4 to manipulate other values of your table.
CLEAR: ls_f4.
ls_f4-fieldname = 'MATNR'.
ls_f4-register = 'X'.
** ls_f4-getbefore = check_be. "§7a
ls_f4-chngeafter = abap_true. "§7b
APPEND ls_f4 TO lt_f4.
CALL METHOD go_grid->register_f4_for_fields
EXPORTING
it_f4 = lt_f4.
ENDFORM. " REGISTER_F4HELPRegards
Uwe
2007 Oct 04 10:50 AM
you are explaning on Grid,
But where as i need for only one screen field.
even for that i am defining and implmenting but where i need to set handler to trigger the event
| User | Count |
|---|---|
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |