Abap 为什么ALV列表的某些列不显示值?
我正在尝试创建一个带有列表显示的ALV报告,但输出列表中没有显示某些内容。我创建了一个经典报告和一个带有网格显示的ALV报告,我成功了。但是这个列表显示产生了一个问题 我已经包含了Abap 为什么ALV列表的某些列不显示值?,abap,Abap,我正在尝试创建一个带有列表显示的ALV报告,但输出列表中没有显示某些内容。我创建了一个经典报告和一个带有网格显示的ALV报告,我成功了。但是这个列表显示产生了一个问题 我已经包含了重用\u ALV\u LIST\u DISPLAY函数,其中包含了正确的内部表名。我已调试,所有数据都正确地进入最终的内部表,但未显示在输出列表中: 这是我的代码(请注意,飞行演示数据将通过程序SAPBC_数据_生成器生成一次): 编辑:我看到你们两个已经在评论中解决了这个问题 正如Sandra所写,您可以尝试使用c
重用\u ALV\u LIST\u DISPLAY
函数,其中包含了正确的内部表名。我已调试,所有数据都正确地进入最终的内部表,但未显示在输出列表中:
这是我的代码(请注意,飞行演示数据将通过程序SAPBC_数据_生成器
生成一次):
编辑:我看到你们两个已经在评论中解决了这个问题 正如Sandra所写,您可以尝试使用cl_salv_表。应该是这样的:
cl_salv_table=>factory(
* EXPORTING
* list_display = if_salv_c_bool_sap=>true
* r_container =
* container_name =
IMPORTING
r_salv_table = DATA(lr_alv)
CHANGING
t_table = it_f
).
lr_alv->display( ).
在一个简单的ALV表中,您不必填写字段目录的组件
TABNAME
<代码>选项卡名称仅用于作为两个表输出的分层顺序列表(例如,功能模块重用\u ALV\u HIERSEQ\u LIST\u 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.
似乎所有TABNAME='ZINT_PRS_MST'的列都有这个问题,甚至“First name”显示了一个奇怪的值(可能是因为它看起来像一个键ALV列)。你试过改变它吗?顺便问一下,为什么不在列表模式下使用class
CL\u SALV\u表
,以避免定义ALV目录?谢谢sandra。现在的情况是,我在abap是一个彻头彻尾的傻瓜,我不知道该怎么做。你能给我引路吗。谢谢。网上有很多例子,包括对SAP演示程序的引用。我在列表模式下使用了类CL_SALV_表,它很有效。非常感谢你。但我的问题是为什么重用ALV列表显示功能模块不起作用。除了CL_SALV_表之外,我还提供了一个你没有看到的重要线索,我猜。不过,我可以把它移到一个答案上来。我认为它没有回答问题(“为什么ALV列表的某些列不显示值?”),正如OP所说。请记住,stackoverflow不是一个帮助论坛,它是一个问答论坛(cf Tour and help)。如果人们寻求个人帮助,那么SCN论坛就是最好的选择。所以。。。下次我是否应该复制您的评论(您建议使用cl_salv_表和OP asks代码)并将我的添加到您的评论中?也谢谢你的回复。可悲的是,我不习惯在互联网上发布内容。我的观点是:至少提及一次cl_salv_table
是很重要的(并且仅作为评论),因为OP使用了一种过时的技术,但无需多提,互联网包含了大量的工作示例,不需要重复,万一出现问题,OP可能会针对cl_salv_表提出一个新问题。如果你觉得自己的问题(或任何评论)没有附加价值,你甚至可以删除它(我过去已经这样做了,因为我自己的答案和评论)。谢谢你的时间和答案:)
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.