3

我对此很陌生。我目前正在为我的工作学习abap,但我遇到了一个我似乎无法解决的问题。我将如何去创建一个函数模块,它接受任何类型的内部表并将其写入屏幕?我正在寻找一个非常通用的解决方案,可以使用任何类型的内部表作为输入。

4

3 回答 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 回答