繁体   English   中英

从可编辑的 ALV 中检索内容

[英]Retrieve content from editable ALV

我正在开发一个显示和可编辑 ALV 的报告。

我设置了 PF-STATUS,添加了一个“处理”按钮。 当这个按钮被按下时,用户在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.

但是,按照我这样做的方式,检索是空的。 我怎么解决这个问题?

下面我有一个关于“流程”的代码片段。

IF r_ucomm EQ '&PROC'.

 LOOP AT it_input INTO ls_input.
   PERFORM process_data USING ls_input.
 ENDLOOP.

ENDIF.

获取 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.

请删除行REFRESH it_input。 这是删除 it_input 的内容,因此检索为空。 您可以在没有REFRESH it_input 的情况下使用以下代码

IF r_ucomm EQ '&PROC'.

 LOOP AT it_input INTO ls_input.
   PERFORM process_data USING ls_input.
 ENDLOOP.

ENDIF.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM