我正在尝试创建带有列表显示的ALV报告,但是某些内容未显示在输出列表中。我创建了经典报告和带有网格显示的ALV报告,并获得了成功。但是,此列表显示产生了问题。
我包含了REUSE_ALV_LIST_DISPLAY
函数,并带有正确的内部表名称。我已经调试,所有数据都正确地进入了最终的内部表,但未显示在输出列表中:
这是我的代码(请注意,飞行演示数据将通过程序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.
答案 0 :(得分:2)
在简单的ALV表中,您不必填充字段目录的组件TABNAME
。 TABNAME
仅对于由两个表输出的层次顺序列表(例如功能模块REUSE_ALV_HIERSEQ_LIST_DISPLAY
)才需要。
如果您忽略它,或者为所有列提供相同的值(任何值),则会得到正确的输出:
具有更正的代码:
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>