ABAP调用POPUP_WITH_TABLE_DISPLAY弹窗展示表格部分列缺失问题问询
解决方案
你现在使用的POPUP_WITH_TABLE_DISPLAY是SAP早期的老旧弹窗函数,存在两个原生限制导致列显示不全:
- 弹窗可展示的总列宽由
ENDPOS_COL - STARTPOS_COL决定,你当前设置的ENDPOS_COL = 100,总可用宽度只有90个字符,你的自定义表所有字段总宽度超过了该值,因此后续列被截断 - 该函数本身最多支持展示约10列数据,不支持横向滚动,字段数量超过限制后也会自动省略后续列
方案1:快速调整现有参数(仅适用于字段总宽度不大的场景)
直接放大ENDPOS_COL的参数值,比如调整到255(该函数支持的最大列宽值),也可以同步调大ENDPOS_ROW展示更多行数据,示例修改后的调用代码:
DATA: t_interview TYPE TABLE OF ZBS_HR_I0001. CASE sy-ucomm. WHEN 'DISP'. SELECT * FROM ZBS_HR_I0001 INTO TABLE t_interview. CALL FUNCTION 'POPUP_WITH_TABLE_DISPLAY' EXPORTING ENDPOS_COL = 255 " 放大列宽上限 ENDPOS_ROW = 20 " 可调大展示更多行 STARTPOS_COL = 1 STARTPOS_ROW = 1 TITLETEXT = 'Interview Table' TABLES VALUETAB = t_interview EXCEPTIONS BREAK_OFF = 1 OTHERS = 2.
如果调整后还是无法展示所有列,说明字段数量或总宽度超出了该函数的上限,需要换用方案2。
方案2:更换为ALV弹窗函数(推荐,支持全部字段展示、横向/纵向滚动)
使用SAP标准ALV弹窗函数REUSE_ALV_POPUP_TO_SELECT,可以完整展示自定义表的所有字段,还支持自定义字段属性,示例代码如下:
DATA: t_interview TYPE TABLE OF ZBS_HR_I0001, gs_layout TYPE slis_layout_alv. CASE sy-ucomm. WHEN 'DISP'. SELECT * FROM ZBS_HR_I0001 INTO TABLE t_interview. gs_layout-zebra = 'X'. " 可选:开启斑马纹提高可读性 CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT' EXPORTING i_title = 'Interview Table' i_scroll_to_sel = 'X' i_tabname = 'T_INTERVIEW' i_structure_name = 'ZBS_HR_I0001' " 直接参考自定义表结构自动生成字段目录 is_layout = gs_layout TABLES t_outtab = t_interview EXCEPTIONS program_error = 1 OTHERS = 2.
该方案支持横向滚动查看所有列,还可以按需调整字段显示顺序、宽度、是否可编辑等属性,完全适配自定义表的全部展示需求。
内容的提问来源于stack exchange,提问作者hekean1339
相关产品推荐
相关产品推荐

