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

是否可通过表类型声明语法排除参考结构中的指定组件?

解决方案

方案1:ABAP 7.40及以上最简实现

直接在定义结构时通过INCLUDE STRUCTURE的EXCEPT参数排除指定字段,无需枚举所有需要的字段,原结构更新时新内表会自动同步除PRUEF外的所有字段:

* 首先定义排除PRUEF后的结构类型
TYPES: BEGIN OF ty_sel2,
         INCLUDE STRUCTURE zqmqnewslist EXCEPT PRUEF.
TYPES: END OF ty_sel2.
* 声明全局内表gt_sel2
DATA: gt_sel2 TYPE STANDARD TABLE OF ty_sel2 WITH EMPTY KEY.

方案2:ABAP 7.40以下版本兼容实现

如果系统版本不支持EXCEPT参数,可以通过RTTS动态创建符合要求的内表:

DATA: lo_structdescr TYPE REF TO cl_abap_structdescr,
      lt_components  TYPE abap_component_tab,
      lo_tabledescr  TYPE REF TO cl_abap_tabledescr,
      gt_sel2        TYPE REF TO data.
FIELD-SYMBOLS: <gt_sel2> TYPE STANDARD TABLE.

* 获取原结构zqmqnewslist的所有字段信息
lo_structdescr ?= cl_abap_structdescr=>describe_by_name( 'ZQMQNEWSLIST' ).
lt_components = lo_structdescr->get_components( ).

* 删除不需要的PRUEF字段
DELETE lt_components WHERE name = 'PRUEF'.

* 生成新的表类型并创建内表
lo_structdescr = cl_abap_structdescr=>create( lt_components ).
lo_tabledescr = cl_abap_tabledescr=>create( 
  p_line_type = lo_structdescr 
  p_table_kind = cl_abap_tabledescr=>tablekind_std 
  p_key = VALUE #( ) 
).
CREATE DATA gt_sel2 TYPE HANDLE lo_tabledescr.
ASSIGN gt_sel2->* TO <gt_sel2>.

后续操作直接使用字段符号<gt_sel2>即可。

数据迁移提示

如果需要把原结构类型的内表数据同步到gt_sel2,7.40及以上版本可直接用CORRESPONDING自动匹配同名字段,无需手动写映射逻辑:

<gt_sel2> = CORRESPONDING #( gt_original_zqmqnewslist ).

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 18:27:01