使用功能模块的提取器-区分INIT DELTA和FULL吗?

2020-08-19 00:44发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)使用RSAX_BIW_GET_D...

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

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


使用RSAX_BIW_GET_DATA_SIMPLE作为模板,我创建了一个新的自定义提取器来加载新的自定义多维数据集。 提取器按宣传的方式工作。 但是,我想根据我通过InfoPackage执行的负载的"类型"在提取器中做出一些逻辑决策。 通过负载的"类型",我指的是初始化vs.增量vs.满负载。

我已经查看了ISU-Utilities的标准交付提取器中使用的其他一些功能模块(即使用功能模块MDEX_MATERIAL_MD的提取器0MATERIAL_ATTR)。 在查看此功能模块时,逻辑似乎利用类型组SBIWA中参数I_UPDMODE中的值来确定通过InfoPackage执行的负载类型。 这是我为此FM看到的值:

  • 更新模式允许的值:

常量:SBIWA_C_UPDMODE_FULL TYPE SBIWA_S_INTERFACE-UPDMODE

值'F',

SBIWA_C_UPDMODE_DELTA类型SBIWA_S_INTERFACE-UPDMODE

VALUE'D',

SBIWA_C_UPDMODE_INIT类型SBIWA_S_INTERFACE-UPDMODE

VALUE'I',

SBIWA_C_UPDMODE_REPEAT TYPE SBIWA_S_INTERFACE-UPDMODE

VALUE'R',

SBIWA_C_UPDMODE_DELTAINIT类型SBIWA_S_INTERFACE-UPDMODE

VALUE'C'。

在我的提取器功能模块的"导入"选项卡中,我输入了具有关联类型SBIWA_S_INTERFACE-UPDMODE的I_UPDMODE。 但是,在Debug中运行提取程序时,没有任何内容传递给I_UPDMODE。

有什么我想念的吗? 或者-还有其他方法可以使程序中的负载类型区分吗?

3条回答
悻福寶寶
2020-08-19 01:07

丹尼斯

非常感谢您的快速回复。

我上午在调试模式下工作,测试了您提供的代码。

在我的程序中,紧随声明之后的第一行逻辑就是这个。 请记住,您在此处阅读的注释是模板程序提供的注释-我没有对其进行修改。:

  • 初始化模式(通过SAPI首次调用)或数据传输模式*

**(以下通话)?*

如果i_initflag = sbiwa_c_flag_on。

我在调试模式下同时运行了INIT加载和DELTA加载。 在这两种情况下,当执行第一行代码时,i_intflag ='X'和sbiwa_c_flag_on ='X'。 换句话说,至少在程序中,使用这些标志的INIT和DELTA之间似乎没有区别。

然后我在程序的下一行之前直接设置第二个断点。 这是我开始从源系统获取记录之前的代码行。

  • 第一个数据包-> OPEN CURSOR *

如果s_counter_datapakid = 0。

这时,对于INIT和DELTA,i_intflag =空白,而sbiwa_c_flag_on ='X'。 再次-使用这些标志的INIT和DELTA之间没有区别。

我假设要使用这些标志来区分INIT加载和DELTA加载,i_initflag应该仅在INIT加载期间='X'。 我的程序似乎并非如此。

另外,如果我由于要处理的大数据量以及执行任务的机会窗口有限,而在几天之内没有进行多次INIT InfoPackage加载,则区分FULL和DELTA的技术将非常有效。 在我们的生产环境中加载。 不过,这很正常,因为在此讨论中,我将不会执行FULL加载。 但是,这对于将来的项目来说是一个很好的逻辑。 所以谢谢你。

为什么要考虑这些标志没有保存您期望用来区分INIT和DELTA的值? 如果您需要,我可以为您提供更多代码。

克里斯

一周热门 更多>