点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,
我无法通过RTTS技术获得表键。 我使用以下代码:
DATA:the_table TYPE REF TO数据。 创建数据the_table TYPE TABLE OF('MARA')。 数据类型说明TYPE REF到cl_abap_tabledescr。 类型说明?= cl_abap_tabledescr => describe_by_data_ref(the_table)。 数据键类型为abap_table_keydescr_tab。 键= typedescription-> get_keys()。
它总是返回完整列表字段,不仅是我不想要的主键。
我还尝试了从静态内部表中检测键,但是得到了相同的结果。
数据:itab像mara的OCCURS 0,带有标题行, lt_tabdescr类型TYPE abap_keydescr_tab, ref_table_descr类型参考cl_abap_tabledescr。 ref_table_descr?= cl_abap_typedescr => describe_by_data(itab [])。 lt_tabdescr [] = ref_table_descr-> key []。
通过 describe_by_name()检测关键字段也不起作用。
有什么建议吗? 系统版本为SAP ECC 7.40 SP09
好吧,正如 Horst Keller 在评论中所建议的,您可以使用类CL_ABAP_STRUCTDESCR的get_ddic_field_list方法。
并通过KEYFLAG字段值过滤返回表:-)例如:
您应该将其作为答案:)
您正在混淆数据库的主键 表MARA和内部表的主键完全不同。
在您的情况下,您已经创建了带有默认主键的标准内部表(因为您尚未定义任何内容),该表由结构(MARA)的所有初始字段组成,直到第一个非字符类型 字段(排除)。
如果要特定的键字段,请使用DATA ... TABLE OF ... WITH [NON-] UNIQUE KEY field1 field2,或CREATE DATA ... TABLE OF ... WITH [NON-] UNIQUE KEY(动态 字段列表)。
有关更多信息,请参阅ABAP文档。
PS:请忘记过时的符号OCCURS和WITH HEADER LINE。
一周热门 更多>