abap - 为什么不显示 ALV 列表的某些列的值?
问题描述
我正在尝试创建具有列表显示的 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.
解决方案
在简单的 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.
推荐阅读
- postgresql - 由于计划时间小于执行时间,如何减少查询的执行时间?
- postgresql - 如何计算Postgresql中的结果数量忽略一对多连接
- java - Primefaces:操作(-Listener)完成后更新
- c# - 如何使默认 TreeView (System.Windows.Controls) 具有与 RadTreeView (telerik) 相同的样式?
- tensorflow - 使用 ssd_inception_v2 训练不同的分辨率
- hdfs - 使用 Impala 在 HDFS 中查询 Parquet 文件
- python - 如何检查日期是否在周范围内?
- git - 撤消导致我正在合并的分支上的工作丢失的合并提交
- python - 关于为什么这两种方法有不同结果的 Python 不可散列类型 dict 问题
- c - 如何检查字符串匹配格式“printf like - %d/...”