You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ALV List部分列值无法显示的原因排查求助

解决ALV列表显示无内容的问题

嘿,我瞅了你的代码,立刻就发现问题出在哪儿了——字段目录里的tabname参数设置错了!

为啥会显示不出内容?

你用关联查询把数据塞进了it_f这个内表,这个内表是用DATA(it_f)直接声明的匿名结构,它的字段不属于SCARR或SPFLI任何一个表,就是独立的字段而已。但你在字段目录里把tabname分别写成了SCARR和SPFLI,ALV会顺着这个表名去找对应的字段,结果在输出内表it_f里根本找不到属于SCARR的CARRID和属于SPFLI的CONNID,自然就啥都显示不出来了。

你调试的时候内表数据是对的,但ALV匹配字段靠的是tabname + fieldname这对组合,组合不对,就等于找不到字段,内容当然出不来。

改完就能跑的代码

把字段目录里的tabname删掉就行,直接保留fieldname让ALV自己匹配内表字段:

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( 
  ( fieldname = 'CARRID' 
    seltext_l = 'Carrier code' 
    col_pos = 1 
    outputlen = 20 ) 
  ( 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.

额外小技巧

如果你怕手动写字段目录出错,也可以用REUSE_ALV_FIELDCATALOG_MERGE函数自动生成,不过这种联合查询的结果,可能需要手动补充第二个表的字段,比如:

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 TYPE slis_t_fieldcat_alv.

" 先自动生成SCARR表的字段目录
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
  EXPORTING
    i_structure_name = 'SCARR'
  CHANGING
    ct_fieldcat      = it_fcat.

" 手动补充CONNID的字段信息
APPEND VALUE slis_fieldcat_alv(
  fieldname = 'CONNID'
  seltext_l = 'Connection ID'
  col_pos = 2
  outputlen = 20
) TO it_fcat.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
  EXPORTING
    it_fieldcat = it_fcat
  TABLES
    t_outtab = it_f.

不过对你现在的场景来说,直接删掉tabname是最快解决问题的办法~


内容的提问来源于stack exchange,提问作者Rupali Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:24:23