繁体   English   中英

如何读取和打印通用内部表?

[英]How do I read and print a generic internal table?

我对此很陌生。 我目前正在为我的工作学习 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.

更健壮的方法是使用包含运行时类型服务的内省,这是一组让您内省数据对象细节的类。 这将为您提供 vwegert 提到的详细信息。 更好的选择是将它放在 ALV 网格中。

这是可能的,但你必须考虑很多事情:

  • 列宽,动态调整列大小
  • 货币字段/带单位的字段
  • 多语言环境中的日期格式
  • 表可能包含任意数据,包括嵌套表

考虑到所有因素,这不是一项微不足道的任务。 这最好留给现有的组件

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM