GET_SELECTED_ROWS第二次不工作

2020-09-03 11:42发布

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

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


你好

我已经看到许多关于相同问题,但没有解决方案对我有用。

问题:GET_SELECTED_ROWS第一次触发按钮时返回所选索引,但是即使刷新内部表和网格后第二次也不返回任何值。

即使设置 SEL_MODE 对我也不起作用。

致电9000屏幕。
 MODULE STATUS_9000输出。
  将PF状态设置为"状态"。
  如果MATRL_R ='X'。
  设置标题栏"标题"。
  其他。
  设置标题栏" TITLE1"。
  万一。
  创建对象容器
  出口
  CONTAINER_NAME ='CCONTAINER'。
  创建对象分割器
  出口
  父母=集装箱
  行= 2
  栏= 1。
  呼叫方法分割-> GET_CONTAINER
  出口
  行= 1
  栏= 1
  接收
  CONTAINER = CONTAINER_1。
  呼叫方法分割-> GET_CONTAINER
  出口
  行= 2
  栏= 1
  接收
  CONTAINER = CONTAINER_2。
  创建对象网格1
  出口
  I_PARENT = CONTAINER_1。
  创建对象网格2
  出口
  I_PARENT = CONTAINER_2。
  如果MATRL_R ='X'。
  执行M_OO。
  其他。
  执行S_OO。
  万一。
 ENDMODULE。

 模组USER_COMMAND_9000输入。
  案例SY-UCOMM。
  当"返回"时。
  离开屏幕0。
  当"取消"时。
  离开程序。
  当"退出"时。
  离开屏幕0。
  当"显示"时。
  如果MATRL_R ='X'。
  执行LINE_MATERIAL。
  呼叫方法GRID2-> REFRESH_TABLE_DISPLAY
  出口
  I_SOFT_REFRESH ='X'。
  其他。
  执行LINE_SALES。
  呼叫方法GRID1-> REFRESH_TABLE_DISPLAY
  出口
  I_SOFT_REFRESH ='X'。
  万一。
  清除SY-UCOMM。
  结束。
 ENDMODULE。
 表格M_OO。
  GS_LAYOUT-GRID_TITLE ='材料报告'。
 * gs_layout-SEL_MODE ='A'。
  呼叫方法GRID1-> SET_TABLE_FOR_FIRST_DISPLAY
  出口
  IS_LAYOUT = GS_LAYOUT
  改变
  IT_OUTTAB = IT_FINAL
  IT_FIELDCATALOG = IT_FCAT。
 ENDFORM。
 表格S_OO。
  GS_LAYOUT-GRID_TITLE ='销售报告'。
 * gs_layout-SEL_MODE ='A'。
  呼叫方法GRID1-> SET_TABLE_FOR_FIRST_DISPLAY
  出口
  IS_LAYOUT = GS_LAYOUT
  改变
  IT_FIELDCATALOG = IT_FCAT1
  IT_OUTTAB = IT_VBAK。
 ENDFORM。
呼叫方法GRID1-> GET_SELECTED_ROWS
  输入
  ET_INDEX_ROWS =行。
  环行成WA_ROWS。
  将表IT_MARA读入WA_MARA INDEX WA_ROWS-INDEX。
  WA_FINAL-MATNR = WA_MARA-MATNR。
  WA_FINAL-ERSDA = WA_MARA-ERSDA。
  WA_FINAL-ERNAM = WA_MARA-ERNAM。
  WA_FINAL-LAEDA = WA_MARA-LAEDA。
  WA_FINAL-MTART = WA_MARA-MTART。
  WA_FINAL-MATKL = WA_MARA-MATKL。
  WA_FINAL-MEINS = WA_MARA-MEINS。
  使用键MATNR = WA_FINAL-MATNR将表IT_MARD读入WA_MARD。
  WA_FINAL-LGORT = WA_MARD-LGORT。
  WA_FINAL-WERKS = WA_MARD-WERKS。
  将WA_FINAL附加到IT_FINAL。
 ENDLOOP。

完整代码

请参考 full-code.txt

谢谢

full-code.txt (14.8 kB)

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

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


你好

我已经看到许多关于相同问题,但没有解决方案对我有用。

问题:GET_SELECTED_ROWS第一次触发按钮时返回所选索引,但是即使刷新内部表和网格后第二次也不返回任何值。

即使设置 SEL_MODE 对我也不起作用。

致电9000屏幕。
 MODULE STATUS_9000输出。
  将PF状态设置为"状态"。
  如果MATRL_R ='X'。
  设置标题栏"标题"。
  其他。
  设置标题栏" TITLE1"。
  万一。
  创建对象容器
  出口
  CONTAINER_NAME ='CCONTAINER'。
  创建对象分割器
  出口
  父母=集装箱
  行= 2
  栏= 1。
  呼叫方法分割-> GET_CONTAINER
  出口
  行= 1
  栏= 1
  接收
  CONTAINER = CONTAINER_1。
  呼叫方法分割-> GET_CONTAINER
  出口
  行= 2
  栏= 1
  接收
  CONTAINER = CONTAINER_2。
  创建对象网格1
  出口
  I_PARENT = CONTAINER_1。
  创建对象网格2
  出口
  I_PARENT = CONTAINER_2。
  如果MATRL_R ='X'。
  执行M_OO。
  其他。
  执行S_OO。
  万一。
 ENDMODULE。

 模组USER_COMMAND_9000输入。
  案例SY-UCOMM。
  当"返回"时。
  离开屏幕0。
  当"取消"时。
  离开程序。
  当"退出"时。
  离开屏幕0。
  当"显示"时。
  如果MATRL_R ='X'。
  执行LINE_MATERIAL。
  呼叫方法GRID2-> REFRESH_TABLE_DISPLAY
  出口
  I_SOFT_REFRESH ='X'。
  其他。
  执行LINE_SALES。
  呼叫方法GRID1-> REFRESH_TABLE_DISPLAY
  出口
  I_SOFT_REFRESH ='X'。
  万一。
  清除SY-UCOMM。
  结束。
 ENDMODULE。
 表格M_OO。
  GS_LAYOUT-GRID_TITLE ='材料报告'。
 * gs_layout-SEL_MODE ='A'。
  呼叫方法GRID1-> SET_TABLE_FOR_FIRST_DISPLAY
  出口
  IS_LAYOUT = GS_LAYOUT
  改变
  IT_OUTTAB = IT_FINAL
  IT_FIELDCATALOG = IT_FCAT。
 ENDFORM。
 表格S_OO。
  GS_LAYOUT-GRID_TITLE ='销售报告'。
 * gs_layout-SEL_MODE ='A'。
  呼叫方法GRID1-> SET_TABLE_FOR_FIRST_DISPLAY
  出口
  IS_LAYOUT = GS_LAYOUT
  改变
  IT_FIELDCATALOG = IT_FCAT1
  IT_OUTTAB = IT_VBAK。
 ENDFORM。
呼叫方法GRID1-> GET_SELECTED_ROWS
  输入
  ET_INDEX_ROWS =行。
  环行成WA_ROWS。
  将表IT_MARA读入WA_MARA INDEX WA_ROWS-INDEX。
  WA_FINAL-MATNR = WA_MARA-MATNR。
  WA_FINAL-ERSDA = WA_MARA-ERSDA。
  WA_FINAL-ERNAM = WA_MARA-ERNAM。
  WA_FINAL-LAEDA = WA_MARA-LAEDA。
  WA_FINAL-MTART = WA_MARA-MTART。
  WA_FINAL-MATKL = WA_MARA-MATKL。
  WA_FINAL-MEINS = WA_MARA-MEINS。
  使用键MATNR = WA_FINAL-MATNR将表IT_MARD读入WA_MARD。
  WA_FINAL-LGORT = WA_MARD-LGORT。
  WA_FINAL-WERKS = WA_MARD-WERKS。
  将WA_FINAL附加到IT_FINAL。
 ENDLOOP。

完整代码

请参考 full-code.txt

谢谢

full-code.txt (14.8 kB)
付费偷看设置
发送
9条回答
微wx笑
1楼 · 2020-09-03 12:04.采纳回答

首先更正您的代码,不需要一次又一次地创建相同的对象引用(容器和网格),仅在初始/不活动时才创建。

  • 在方法调用后检查异常/返回代码
  • 如果不想依赖PAI/PBO周期和隐式调用,请使用调用方法cl_gui_cfw => flush。
天桥码农
2楼-- · 2020-09-03 11:59

感谢您回答 chandrashekhar chitme

据我所知,您已添加:

  • 调用方法cl_gui_cfw =>刷新。
  • gs_layout-SEL_MODE ='D'。
  • 和一个内部表IT_FINAL2。

但是第二次不起作用:(

callcenter油条
3楼-- · 2020-09-03 11:55

您的代码包含将GRID1用于GRID2的错误,反之亦然。

请注意,不建议使用ET_INDEX_ROWS, 您应该按照文档使用ET_ROW_NO(但仍然可以使用)。

+可以执行雷蒙德的建议。

大简至美
4楼-- · 2020-09-03 12:08

对我来说,代码可以正常工作,而且我每次都能得到值 所选行数的时间

此致

Chitme

lukcy2020
5楼-- · 2020-09-03 12:04

如果您将CL_SALV_TABLE类与自定义容器一起使用,则必须调用方法

GET_METADATA,然后才能访问所选行aso

哎,真难
6楼-- · 2020-09-03 11:58

chandrashekhar chitme

非常抱歉,我忘了取消注释。 :P

有效。 非常感谢。

DafaDDDa
7楼-- · 2020-09-03 12:13

->您无需一次又一次地创建相同的对象引用(容器和网格),只需在初始/不活动时创建

谢谢,它成功了。

如果GRID1初始且GRID2初始。
 

一周热门 更多>