Abap 为什么ALV列表的某些列不显示值?

Abap 为什么ALV列表的某些列不显示值?,abap,Abap,我正在尝试创建一个带有列表显示的ALV报告,但输出列表中没有显示某些内容。我创建了一个经典报告和一个带有网格显示的ALV报告,我成功了。但是这个列表显示产生了一个问题 我已经包含了重用\u ALV\u LIST\u DISPLAY函数,其中包含了正确的内部表名。我已调试,所有数据都正确地进入最终的内部表,但未显示在输出列表中: 这是我的代码(请注意,飞行演示数据将通过程序SAPBC_数据_生成器生成一次): 编辑:我看到你们两个已经在评论中解决了这个问题 正如Sandra所写,您可以尝试使用c

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

我已经包含了
重用\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.