如何在绑定到 cl_gui_container=>default_screen 的拆分容器中显示 SALV

问题描述 投票:0回答:1

抱歉这个极其简单的问题,我似乎无法在绑定到

cl_gui_container=>default_screen
的拆分容器中显示 SALV 表。

最少代码:

DATA: lo_salv_table type ref to cl_salv_table,
      lo_splitter   type ref to cl_gui_splitter_container.

  SELECT * FROM SFLIGHT UP TO 200 ROWS INTO TABLE @data(sflight).

  lo_splitter = new cl_gui_splitter_container(
    parent                  = cl_gui_container=>default_screen
    rows                    = 1
    columns                 = 2
  ).

  cl_salv_table=>factory( EXPORTING r_container   = lo_splitter->get_container(
                                                      row    = 1
                                                      column = 1
                                                    )
                          IMPORTING r_salv_table  = lo_salv_table
                          CHANGING t_table        = sflight ).

  lo_salv_table->display( ).

程序运行并返回,但没有任何反应。

我在网上查看过,所有示例都类似于上面的代码(示例此处和此处

感谢您的帮助。

controls abap alv dynpro
1个回答
0
投票
仅当屏幕处理处于活动状态时才使用

cl_gui_container=>default_screen
。默认情况下,如果您运行可执行程序,则它处于非活动状态,直到您运行
CALL SCREEN
CALL SELECTION-SCREEN
或选择屏幕 1000 的隐式调用。

使用选择屏幕更容易,因为它通过 ABAP 语句

PARAMETERS
SELECT-OPTIONS
完全嵌入到 ABAP 语言中。

因此,添加两行

PARAMETERS dummy
AT SELECTION-SCREEN OUTPUT
足以显示控件:

REPORT.
PARAMETERS dummy.             " <=========
AT SELECTION-SCREEN OUTPUT.   " <=========
DATA: lo_salv_table type ref to cl_salv_table,
      lo_splitter   type ref to cl_gui_splitter_container.

  SELECT * FROM SFLIGHT UP TO 200 ROWS INTO TABLE @data(sflight).

  lo_splitter = new cl_gui_splitter_container(
    parent                  = cl_gui_container=>default_screen
    rows                    = 1
    columns                 = 2
  ).

  cl_salv_table=>factory( EXPORTING r_container   = lo_splitter->get_container(
                                                      row    = 1
                                                      column = 1
                                                    )
                          IMPORTING r_salv_table  = lo_salv_table
                          CHANGING t_table        = sflight ).

  lo_salv_table->display( ).

结果: CL_SALV_TABLE in CL_GUI_SPLITTER_CONTAINER

注意:另请参阅如何共享可以通过简单复制、粘贴和运行来运行的控制框架演示?

© www.soinside.com 2019 - 2024. All rights reserved.