为什么不显示 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 中,您不必填写字段目录的组件 TABNAME
。 TABNAME
只需要 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.
我正在尝试创建一个带有列表显示的 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 中,您不必填写字段目录的组件 TABNAME
。 TABNAME
只需要 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.