抱歉这个极其简单的问题,我似乎无法在绑定到
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( ).
程序运行并返回,但没有任何反应。
我在网上查看过,所有示例都类似于上面的代码(示例此处和此处)
感谢您的帮助。
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( ).