通过引用表类型声明ABAP内表时,能否保留原表类型的主键?
ABAP引用表类型声明内表时的主键继承问题
可以,通过引用表类型声明内表时,默认会保留被引用类型的主键定义,无需显式指定内表组件。
具体场景说明
引用透明表类型
当基于ABAP透明表声明内表时,内表会自动继承透明表的主键字段作为自身主键。默认主键为非唯一,若需使用唯一主键,可显式指定WITH UNIQUE KEY PRIMARY KEY。
示例代码:" 自动继承MARA表的主键MATNR,默认非唯一主键 DATA gt_mara TYPE STANDARD TABLE OF mara. " 显式指定继承透明表的唯一主键 DATA gt_mara_unique TYPE STANDARD TABLE OF mara WITH UNIQUE KEY PRIMARY KEY.引用自定义表类型
若先定义了带主键的自定义表类型,后续基于该类型声明内表时,会完全继承其主键规则(包括键字段、唯一性、表类别对应的主键特性)。
示例代码:" 定义结构体类型 TYPES: BEGIN OF ty_employee, emp_id TYPE i, emp_name TYPE string, END OF ty_employee. " 定义带唯一主键的排序表类型 TYPES: ty_emp_tab TYPE SORTED TABLE OF ty_employee WITH UNIQUE KEY emp_id. " 声明内表,自动继承ty_emp_tab的唯一主键emp_id DATA gt_employees TYPE ty_emp_tab.
注意事项
如果声明内表时显式指定了主键(如WITH KEY emp_name),则会覆盖被引用表类型的原有主键定义,不再继承原主键。
内容的提问来源于stack exchange,提问作者Cutter
相关产品推荐
相关产品推荐

