为什么没有为ALV列表的某些列显示值?

时间:2019-06-19 11:40:20

标签: sap abap

我正在尝试创建带有列表显示的ALV报告,但是某些内容未显示在输出列表中。我创建了经典报告和带有网格显示的ALV报告,并获得了成功。但是,此列表显示产生了问题。

我包含了REUSE_ALV_LIST_DISPLAY函数,并带有正确的内部表名称。我已经调试,所有数据都正确地进入了最终的内部表,但未显示在输出列表中:

enter image description here

这是我的代码(请注意,飞行演示数据将通过程序SAPBC_DATA_GENERATOR一次生成):

REPORT ztest.

SELECT scarr~carrid, spfli~connid
  FROM scarr INNER JOIN spfli ON scarr~carrid = spfli~carrid
  INTO TABLE @DATA(it_f).

DATA(it_fcat) = VALUE slis_t_fieldcat_alv(
  ( tabname   = 'SCARR'
    fieldname = 'CARRID'
    seltext_l = 'Carrier code'
    col_pos   = 1
    outputlen = 20 )
  ( tabname   = 'SPFLI'
    fieldname = 'CONNID'
    seltext_l = 'Connection ID'
    col_pos   = 2
    outputlen = 20 ) ).

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
  EXPORTING
    it_fieldcat = it_fcat
  TABLES
    t_outtab    = it_f.

2 个答案:

答案 0 :(得分:2)

在简单的ALV表中,您不必填充字段目录的组件TABNAMETABNAME仅对于由两个表输出的层次顺序列表(例如功能模块REUSE_ALV_HIERSEQ_LIST_DISPLAY)才需要。

如果您忽略它,或者为所有列提供相同的值(任何值),则会得到正确的输出:

enter image description here

具有更正的代码:

SELECT scarr~carrid, spfli~connid
  FROM scarr INNER JOIN spfli ON scarr~carrid = spfli~carrid
  INTO TABLE @DATA(it_f).

DATA(it_fcat) = VALUE slis_t_fieldcat_alv(
  ( " do not fill TABNAME // tabname   = 'SCARR'
    fieldname = 'CARRID'
    seltext_l = 'Carrier code'
    col_pos   = 1
    outputlen = 20 )
  ( " do not fill TABNAME // tabname   = 'SPFLI'
    fieldname = 'CONNID'
    seltext_l = 'Connection ID'
    col_pos   = 2
    outputlen = 20 ) ).

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
  EXPORTING
    it_fieldcat = it_fcat
  TABLES
    t_outtab    = it_f.

答案 1 :(得分:-2)

编辑:我看到你们两个已经在注释中解决了这个问题。

正如Sandra所写,您可以尝试使用cl_salv_table。它应该看起来像这样:

<changeSet id="project1">
    <sqlFile encoding="utf8" path="abc.sql"/>
</changeSet>
<changeSet id="project2" author="akshay">
    <sqlFile encoding="utf8" path="xyz.sql"/>
</changeSet>