我对此很陌生。我目前正在为我的工作学习abap,但我遇到了一个我似乎无法解决的问题。我将如何去创建一个函数模块,它接受任何类型的内部表并将其写入屏幕?我正在寻找一个非常通用的解决方案,可以使用任何类型的内部表作为输入。
问问题
3658 次
3 回答
8
这正是 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( ).
于 2013-07-12T13:27:41.743 回答
1
对于行类型仅为平面数据对象的表,这将是最简单的方法,取自This SAP Development Guide的第 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.
一种更强大的方法是使用包含运行时类型服务的自省,这是一组允许您自省数据对象细节的类。这将为您提供 vwegert 提到的详细信息。一个更好的选择是将它放在 ALV 网格中。
于 2013-07-12T13:26:50.023 回答
0
这是可能的,但你必须考虑很多事情:
- 列宽,动态调整列大小
- 货币字段/带单位的字段
- 多语言环境中的日期格式
- 表可能包含任意数据,包括嵌套表
考虑到所有因素,这不是一项微不足道的任务。这最好留给现有的组件。
于 2013-07-12T08:06:14.737 回答