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

Why values are not displayed for some columns of an ALV List?

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

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

这是我的代码(注意飞行演示数据是通过程序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.

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

正如 Sandra 所写,您可以尝试使用 cl_salv_table。它应该是这样的:

  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 table 中,您不必填写字段目录的组件 TABNAMETABNAME 只需要 hierarchical-sequential 列表(例如功能模块 REUSE_ALV_HIERSEQ_LIST_DISPLAY),它们是两个 table 的输出。

如果您省略它,或者如果您为所有列赋予相同的值(任何值),您将得到正确的输出:

更正后的代码:

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.