用键循环遍历动态哈希表

2020-08-17 12:44发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)你好 我正在研究实现IF_RS...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好

我正在研究实现IF_RSPLFA_SRVTYPE_IMP_EXEC_REF(参考数据计划)的自定义计划功能类型。

实现类的EXECUTE方法具有I_TH_REF_DATA TYPE HASHED TABLE作为"导入"参数。 该表实际上包括我的参考数据。 该表的结构是在运行时根据聚合级别的结构动态定义的。 它包含构成聚合级别的所有特征和关键数据。

为避免对表进行全面扫描,我想使用某种"部分"键(仅包含有限的一组特征)遍历该表。 产品协助建议如下:

 DATA spfli_tab类型哈希表
 OF SPFLI
 使用唯一键primary_key
 成分carrid connid
 使用非唯一排序键city_from_to
 组件城市从城市到
 使用非唯一排序键city_to_from
 组件从城市到城市。

 循环至spfli_tab分配使用密钥city_from_to。

但是。 不适用于我的任务,因为表I_TH_REF_DATA是在计划引擎内部定义的,我无法控制其结构(包括键)。

我事先知道聚合级别的结构,并且想使用一个包含0FISCPER,0CURRENCY,ZSCOPE和ZVERSION特性的键进行循环。 我需要类似的东西

在I_TH_REF_DATA分配处循环使用关键组件'0FISCPER''0CURRENCY''ZSCOPE''ZVERSION'

但是,似乎ABAP语法没有为此提供

请告知,如何遍历动态哈希表以避免全表扫描?

谢谢

Val

8条回答
jovirus
2020-08-17 13:40

如果要在表上创建索引,但由于此输入表是通用类型的,并且您知道要定义的组件名称,则不能 键(您确定这些组件将永远存在),并且您知道该表是标准表或排序表,因此建议您静态定义一个临时内部表,其中一个组件是与表中行对应的表索引 输入表,从输入表对其进行初始化,然后使用此临时表的顺序来访问输入表的行。

示例:

 TYPES:BTYIN ty_temp_table,
           0 FISCPER TYPE ...
           0货币类型...
           ZSCOPE类型...
           ZVERSION TYPE ...
           TABIX TYPE sytabix,
         结束ty_temp_table,
         tt_temp_table ty_temp_table的类型排序表
              使用非唯一键0FISCPER,0CURRENCY,ZSCOPE,ZVERSION。

 temp_table = VALUE#(
     FOR  IN 索引INTO i_th_line_tabix
     (值#(基本对应#()tabix = i_th_line_tabix))。

 将temp_table引用到数据中(temp_line)
       0FISCPER = ...
         AND 0货币= ...
         AND ZSCOPE = ...
         AND ZVERSION = ...
    =  [temp_line-> tabix]。
   ... 

一周热门 更多>