显示具有不同表内容和结构的ALV

2020-09-15 19:35发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好, ...

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

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


大家好,

我正在使用cl_salv类通过在模块池程序中创建自定义容器和网格来显示alv。

我第一次显示,ALV数据显示完美。 如果同一内部表上的数据发生更改,则同一内部表将被更新(我使用了refresh_table和set_table_for_first_display)。

但是第二次我试图在同一网格中显示具有不同结构的另一个表。 这次,它会转储说以前的地址不再有效,这是正确的,因为内部表结构已更改。

有没有办法使用相同的容器和网格但条件不同来显示两个不同的内部表?

6条回答
huskylover
2020-09-15 20:36

要做的是在调用ALV时更改字段目录。 像这样:

PBO:

 MODULE STATUS_0100输出。
  设置PF状态"屏幕"。

  创建对象R_CONTAINER
  出口
  CONTAINER_NAME ='CONTAINER'。
  创建对象R_GRID
  出口
  I_PARENT = R_CONTAINER。
  呼叫方法R_GRID-> SET_TABLE_FOR_FIRST_DISPLAY
  出口
  I_STRUCTURE_NAME ='SFLIGHT'
  改变
  IT_OUTTAB = T_SFLIGHT。
 ENDMODULE。  "处理程序输出

切换:

 MODULE USER_COMMAND_0100输入。
  案例SY-UCOMM。
  当"返回"时。
  离开屏幕0。
  当"切换"时。
  通话功能'LVC_FIELDCATALOG_MERGE'
  出口
  I_STRUCTURE_NAME ='SPFLI'
  改变
  CT_FIELDCAT = T_FCAT
  例外情况
  INCONSISTENT_INTERFACE = 1
  PROGRAM_ERROR = 2
  其他= 3。
  如果SY-SUBRC <> 0。
 *在这里实施适当的错误处理
  万一。

  呼叫方法R_GRID-> SET_TABLE_FOR_FIRST_DISPLAY
  改变
  IT_FIELDCATALOG = T_FCAT
  IT_OUTTAB = T_SPFLI。
  结束。
 ENDMODULE。  " user_command_0100输入

在这里,我使用DDIC结构填充数据,但您也可以使用相同的方法创建结构。

一周热门 更多>