我正在开发一个显示和编辑ALV的报告。
我设置了PF-状态,添加了一个“进程”按钮。当按下此按钮时,应检索并处理用户在ALV中引入的内容。
我就是这样建立我的ALV的:
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid "program name
i_callback_user_command = 'USER_COMMAND' "user command subroutine name
i_callback_pf_status_set = 'SUB_PF_STATUS'
it_fieldcat = it_fieldcat
i_save = 'X'
TABLES
t_outtab = it_input
EXCEPTIONS
program_error = 1
OTHERS = 2.然而,我这样做的方式,检索是空的。我该如何解决这个问题?
下面是我的代码片段,当涉及到'Process‘时。
IF r_ucomm EQ '&PROC'.
LOOP AT it_input INTO ls_input.
PERFORM process_data USING ls_input.
ENDLOOP.
ENDIF.发布于 2018-12-25 23:35:40
获取ALV网格实例之后,运行其方法'check_changed_data',如下所示。
DATA lo_grid TYPE REF TO cl_gui_alv_grid.
IF r_ucomm EQ '&PROC'.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = lo_grid.
IF lo_grid IS NOT INITIAL.
lo_grid->check_changed_data( ).
ENDIF.
LOOP AT it_input INTO ls_input.
PERFORM process_data USING ls_input.
ENDLOOP.
ENDIF.您可以使用'set_table_for_first_display‘方法直接创建ALV网格,而不需要函数模块'REUSE_ALV_GRID_DISPLAY’。
DATA go_grid TYPE REF TO cl_gui_alv_grid.
CREATE OBJECT go_grid
EXPORTING
i_parent = cl_gui_custom_container=>default_screen.
go_grid->set_table_for_first_display(
CHANGING
it_outtab = it_input
it_fieldcatalog = it_fieldcat ).
...
IF r_ucomm EQ '&PROC'.
go_grid->check_changed_data( ).
LOOP AT it_input INTO ls_input.
PERFORM process_data USING ls_input.
ENDLOOP.
ENDIF.发布于 2018-12-20 05:31:34
请删除行刷新it_input。,这是删除it_input的内容,因此检索是空的。您可以使用下面的代码而不需要刷新it_input
IF r_ucomm EQ '&PROC'.
LOOP AT it_input INTO ls_input.
PERFORM process_data USING ls_input.
ENDLOOP.
ENDIF.https://stackoverflow.com/questions/53855339
复制相似问题