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

如何删除动态内表中segment列值为空的行?

动态内表删除SEGMENT列值为空行的解决方案

你的代码问题出在DATA(ls_dyn_table) = dy_table这行——dy_table是数据引用对象,不是结构体,没法直接用-segment访问字段。要处理动态内表的字段,得用字段符号动态绑定的方式来操作。

修正后的代码如下:

DATA:
  dy_table          TYPE REF TO data.

FIELD-SYMBOLS:
  <dyn_table>  TYPE STANDARD TABLE,
  <fs_row>     TYPE any,
  <fs_segment> TYPE any.

IF ID = '1234'.
  me->method_that_import_desired_table( IMPORTING et_table = dy_table ).
  ASSIGN dy_table->* TO <dyn_table>.

  LOOP AT <dyn_table> ASSIGNING <fs_row>.
    " 动态绑定当前行的SEGMENT字段到字段符号
    ASSIGN COMPONENT 'SEGMENT' OF STRUCTURE <fs_row> TO <fs_segment>.
    " 检查字段绑定是否成功(避免内表无SEGMENT列的情况)
    IF sy-subrc = 0 AND <fs_segment> IS INITIAL.
      " 删除当前行
      DELETE <dyn_table> INDEX sy-tabix.
    ENDIF.
  ENDLOOP.
ENDIF.

关键说明:

  • 循环动态内表时,用ASSIGNING <fs_row>获取当前行的字段符号,这是动态行的正确访问方式。
  • 通过ASSIGN COMPONENT 'SEGMENT' OF STRUCTURE <fs_row> TO <fs_segment>,动态将当前行的SEGMENT字段绑定到<fs_segment>,这样就能判断其值是否为空。
  • 加入sy-subrc检查,防止内表中不存在SEGMENT列时触发错误。
  • 用DELETE <dyn_table> INDEX sy-tabix直接删除当前行,实现过滤效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 12:52:38