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

2020-08-31 15:56发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)亲爱的 我们有一个需要在单个屏...

         点击此处--->   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条回答
梦想连接
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。
 

一周热门 更多>