我对此很陌生。我目前正在为我的工作学习abap,我有一个问题似乎无法解决。我该如何创建一个函数模块来获取任何类型的内部表并将其写入屏幕?我正在寻找一个非常通用的解决方案,可以使用任何类型的内部表作为输入。
这正是SAP开发ALV(ABAP列表查看器)的原因。显示任何(非嵌套)表的最短方法之一如下。
DATA: go_alv TYPE REF TO cl_salv_table.
CALL METHOD cl_salv_table=>factory
IMPORTING
r_salv_table = go_alv
CHANGING
t_table = itab.
go_alv->display( ).
对于行类型仅为平面数据对象的表,这将是最简单的方法,摘自本SAP开发指南第33页。
FIELD-SYMBOLS: <row> TYPE ANY,
<comp> TYPE ANY.
LOOP AT itab INTO <row>.
DO.
ASSIGN COMPONENT sy-index OF STRUCTURE <row> TO <wa_comp>.
IF sy-subrc <> 0.
SKIP.
EXIT.
ENDIF.
WRITE <wa_comp>.
ENDDO.
ENDLOOP.
一种更健壮的方法是使用包含运行时类型服务的内省,这是一组类,允许您内省数据对象的详细信息。这将为您提供vwegt提到的细节。一个更好的选择是把它放在ALV电网中。
这是可能的,但你必须考虑很多事情:
- 列宽,动态调整列大小
- 货币字段/带单位的字段
- 多语言环境中的日期格式
- 表可以包含任意数据,包括嵌套表
综合考虑,这不是一项微不足道的任务。这最好留给现有组件。