使用CL_SALV将一个容器数据传递并读取到Split容器中的另一个容器

2020-08-31 15:56发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


亲爱的

我们有一个需要在单个屏幕上显示多个ALV的要求。 用户将从第一个网格中选择行项目,并从第四个网格中选择少量项目。 根据从两个容器中选择的项目,创建订单。

我们在第一个容器上有一个按钮,单击后,我们使用以下代码识别从容器1中选择的项目。

lr_selections1 = o_salv_table4-> get_selections()。
lt_rows1 = lr_selections1-> get_selected_rows()。

类似地,我们只想读取仅在第一个容器中按下按钮时在第四个容器中选择的数据。 由于实例不同,第四个容器选择的数据在第一个容器中不可见。

附加文档具有我们期望的示例输出。

是否可以读取其他容器中的容器数据?

任何人都可以分享有关实现相同想法的想法吗?

PS:我们有另一种方法,我们在第一个屏幕上显示3个网格,在提交后在另一个屏幕上显示第四个网格。 但是,我们希望在一个ALV屏幕上显示4个网格,以便用户能够一次查看完整的详细信息。

谢谢。

(114.5 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


亲爱的

我们有一个需要在单个屏幕上显示多个ALV的要求。 用户将从第一个网格中选择行项目,并从第四个网格中选择少量项目。 根据从两个容器中选择的项目,创建订单。

我们在第一个容器上有一个按钮,单击后,我们使用以下代码识别从容器1中选择的项目。

lr_selections1 = o_salv_table4-> get_selections()。
lt_rows1 = lr_selections1-> get_selected_rows()。

类似地,我们只想读取仅在第一个容器中按下按钮时在第四个容器中选择的数据。 由于实例不同,第四个容器选择的数据在第一个容器中不可见。

附加文档具有我们期望的示例输出。

是否可以读取其他容器中的容器数据?

任何人都可以分享有关实现相同想法的想法吗?

PS:我们有另一种方法,我们在第一个屏幕上显示3个网格,在提交后在另一个屏幕上显示第四个网格。 但是,我们希望在一个ALV屏幕上显示4个网格,以便用户能够一次查看完整的详细信息。

谢谢。

(114.5 kB)
付费偷看设置
发送
5条回答
亦是此间程序员
1楼-- · 2020-08-31 16:42

亲爱的桑德拉,

感谢您的回复。 我们已经尝试了您建议的选项,但很遗憾没有解决。

Doze时光
2楼-- · 2020-08-31 16:37

当然可以。 我不明白您遇到了什么问题。

例如:当在第一个容器中按下按钮时,引发一个自定义事件,该事件在您的主控制器应用程序中具有一个方法处理程序(启动4 ALV网格),然后从第4个ALV网格中选择线。

"在一个ALV屏幕上有4个网格"? 您是说"一个屏幕上有4个ALV网格"?

lukcy2020
3楼-- · 2020-08-31 16:33

尊敬的Gourab,

感谢您的回复。

目前,我们已经有了另一种方法。

由于需要进行返工,因此我将按照建议的方法进行工作并保持发布状态。

谢谢。

梦想连接
4楼-- · 2020-08-31 16:34

您好,Karthik,

正如桑德拉所言,这是完全可能的。

您是否使用类CL_GUI_ALV_GRID和CL_GUI_CUSTOM_CONTAINER创建表和容器的实例? 如果是这样,您应该能够使用以下方法获得选择:CL_GUI_ALV_GRID-> GET_SELECTED_ROWS(IMPORTING et_index_rows = DATA(lt_index_rows1))。 从屏幕上的任何ALV ..

另外,请确保已使用正确的布局选择参数(" lvc_s_layo-sel_mode")实例化了ALV,否则他不知道选择了哪些行。

kr

检查此示例代码,从这两个ALV中获取选定的行:

报告ztest_yr。
 数据:
   go_alv_container1类型参考cl_gui_custom_container,
   go_alv_grid1类型参考cl_gui_alv_grid,
   go_alv_container2类型参考cl_gui_custom_container,
   go_alv_grid2类型参考cl_gui_alv_grid,
   gt_table1 zbc_int4的类型表,
   gt_table2 TYPE_TABLE OF zbc_char20,
   gs_table1 TYPE zbc_int4,
   gs_table2 TYPE zbc_char20。
 gs_table1-int4 = 1。
 将gs_table1附加到gt_table1。
 gs_table1-int4 = 2。
 将gs_table1附加到gt_table1。
 gs_table1-int4 = 3。
 将gs_table1附加到gt_table1。
 gs_table2-char20 ='a'。
 将gs_table2附加到gt_table2。
 gs_table2-char20 ='b'。
 将gs_table2附加到gt_table2。
 gs_table2-char20 ='c'。
 将gs_table2附加到gt_table2。

 致电1100。

 * -------------------------------------------------  --------------------- *
 ***包含ZTEST_YR_PAI。
 * -------------------------------------------------  --------------------- *
 *&------------------------------------------------  --------------------- *
 *&模块USER_COMMAND_1100 INPUT
 *&------------------------------------------------  --------------------- *
 *文字
 * -------------------------------------------------  --------------------- *
 模组user_command_1100 INPUT。
   如果是sy-ucomm EQ'PRESS'。
     go_alv_grid1-> get_selected_rows(IMPORTING et_index_rows = DATA(lt_index_rows1))。
     go_alv_grid2-> get_selected_rows(IMPORTING et_index_rows = DATA(lt_index_rows2))。
   万一。
 ENDMODULE。
 * -------------------------------------------------  --------------------- *
 ***包含ZTEST_YR_PBO。
 * -------------------------------------------------  --------------------- *
 *&------------------------------------------------  --------------------- *
 *&模块STATUS_1100输出
 *&------------------------------------------------  --------------------- *
 *&
 *&------------------------------------------------  --------------------- *
 MODULE status_1100输出。
   数据:
       ls_layout类型lvc_s_layo。
     ls_layout-sel_mode ='D'。
     ls_layout-info_fname ='LINECOLOR'。
   "创建容器对象
     创建对象go_alv_container1
       出口
         container_name ='CONTAINER1'。
     "创建网格对象
     创建对象go_alv_grid1
       出口
         i_parent = go_alv_container1。
     go_alv_grid1-> set_table_for_first_display(导出
                                                   is_layout = ls_layout
                                                   i_structure_name ='ZBC_INT4'
                                                改变
                                                  it_outtab = gt_table1)。
     "创建容器对象
     创建对象go_alv_container2
       出口
         container_name ='CONTAINER2'。
     "创建网格对象
     创建对象go_alv_grid2
       出口
         i_parent = go_alv_container2。
     go_alv_grid2-> set_table_for_first_display(导出
                                                   is_layout = ls_layout
                                                   i_structure_name ='ZBC_CHAR20'
                                                改变
                                                  it_outtab = gt_table2)。
 ENDMODULE。
 
SAP小黑
5楼-- · 2020-08-31 16:29

我相信可以使用" CL_ALV_GRID_DISPLAY"。 您需要做的是,在ALV1中按下按钮时,您必须在ALV4的对象上调用" CHECK_CHANGED_DATA"方法。 然后,如果您读取选定的行,则可以从ALV4读取选定的行。 我找不到使用" CL_SALV_TABLE"的类似可能性。 我相信我们无法使用" CL_ALV_TABLE"来做同样的事情。

谢谢

古拉布

一周热门 更多>