点击此处---> 群内免费提供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。
有什么我想念的吗? 或者-还有其他方法可以使程序中的负载类型区分吗?
确定Delta还是Init所需要做的全部工作是:
然后,确定是Full还是Delta(这恰好是确定创建日期或更改日期的delta):
丹尼斯
非常感谢您的快速回复。
我上午在调试模式下工作,测试了您提供的代码。
在我的程序中,紧随声明之后的第一行逻辑就是这个。 请记住,您在此处阅读的注释是模板程序提供的注释-我没有对其进行修改。:
初始化模式(通过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的值? 如果您需要,我可以为您提供更多代码。
克里斯
嗨。 有什么答案吗? 您能否告诉我是否找到了INIT/DELTA的运行时间指示器?
一周热门 更多>