首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在用户输入后读取ALV更改?

在用户输入后读取ALV更改?
EN

Stack Overflow用户
提问于 2019-02-19 17:53:43
回答 2查看 3.6K关注 0票数 0

我得到了一个报告,它通过ALV网格输出我内部表格的数据。输出本身由一些信息和每行的两个复选框组成。如果需要,用户可以选中这些框,现在我需要重新读取表,以便了解选中了哪些框。根据两个框中的哪一个被选中,相应的行将在以后进行不同的处理。

我已经尝试了get_actual_view方法(我不知道如何使用)和get_selected_rows方法(它似乎获取用户选择的行的索引,但不获取其内容)。

在用户选中复选框(并按下按钮继续,这将触发报告中的编码以读取数据、处理数据并将其写回网格)之后,如何读取表?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-20 18:54:48

您需要调用CL_GUI_ALV_GRIDCHECK_CHANGED_DATA方法将输入从ALV网格传输到内部表(它适用于ALV中的所有类型的输入字段,即不限于复选框)。

最小示例(在CHECK_CHANGED_DATA之前/之后添加断点,运行程序,编辑一些数据,例如smoker复选框,并查看输入如何反映到内部表中;注意:如果演示表SBOOK为空,则运行程序SAPBC_DATA_GENERATOR) -它使用ABAP7.40和+进行编译:

代码语言:javascript
运行
复制
REPORT.
DATA go_alv TYPE REF TO cl_gui_alv_grid.
DATA gt_sbook TYPE TABLE OF sbook.

PARAMETERS dummy.

AT SELECTION-SCREEN OUTPUT.
  DATA: lt_fcat TYPE lvc_t_fcat,
        ls_fcat TYPE lvc_s_fcat.
  IF go_alv IS NOT BOUND.
    CREATE OBJECT go_alv
      EXPORTING
        i_parent = cl_gui_container=>screen0.
    SELECT * FROM sbook UP TO 100 ROWS INTO TABLE gt_sbook.
    lt_fcat = CORRESPONDING #( CAST cl_abap_structdescr(
          cl_abap_structdescr=>describe_by_name( 'SBOOK' ) )->get_ddic_field_list( ) ).
    ls_fcat-checkbox = abap_true.
    MODIFY lt_fcat FROM ls_fcat TRANSPORTING checkbox WHERE fieldname = 'SMOKER'.
    go_alv->set_table_for_first_display(
        EXPORTING
          is_layout        = VALUE #( edit = 'X' )
        CHANGING
          it_fieldcatalog  = lt_fcat
          it_outtab        = gt_sbook ).
  ENDIF.

AT SELECTION-SCREEN ON EXIT-COMMAND.
  go_alv->check_changed_data( ). " <=== transfer screen data to GT_SBOOK
  go_alv->free( ).
票数 1
EN

Stack Overflow用户

发布于 2019-02-19 19:12:56

最好的方法是使用CL_GUI_ALV_GRID.在ALV中显示输出

对于ALV网格中的更改,

您必须注册event DATA_CHANGED,并将在数据更改的情况下帮助您编写代码。

对于选定的行,您必须在itab中创建复选框字段,以帮助您驱动选定的行。

如果要将屏幕更改传输到itab,则必须在PAI event中调用check_changed_data方法将更改从屏幕传输到itab。

在某些情况下,如果您想知道行内容的任何更改,则必须再创建一个长度为1的字段data_change字符类型。如果itab的内容有更改,您可以在适当的事件中标记此字段。

致以敬意,

奥马尔·阿卜杜拉

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54763326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档