时间相关的层次结构和消除

2020-09-19 07:29发布

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

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


尊敬的专家,

我们面临淘汰中具有时间依赖性的层次结构的问题。 我将KEYDATE包含在DM软件包中,以使用户有机会选择用于IC消除的层次版本。 我还调整了要考虑的KEYDATE的相关过程链。 此步骤正常工作,并且将传递KEYDATE。 DM包的结果行:

 SELECTION_KEYDATE = 20190101 

尽管如此,执行消除程序US_ELIM的被调用脚本逻辑根本不考虑KEYDATE。 它始终使用当前系统日期作为KEYDATE。 我找到了一个SAP注释(2254535),其中指出KEYDATE必须包含在要考虑的脚本逻辑中。 它还说脚本逻辑期望KEYDATE的格式为:

 KEYDATE = YYYYMMDD 

所以我在脚本逻辑中输入了以下代码:

 * RUN_PROGRAM US_ELIM
 CATEGORY =%CATEGORY_SET%
 货币= EUR,CHF
 TID_RA =%TIME_SET%
 OTHER = [PRCTR =%PRCTR_SET%]
 关键日期= 20190101
 * ENDRUN_PROGRAM 

以上程序按预期运行,并且已正确消除。

问题是我无法在脚本逻辑中使KEYDATE动态化:

 KEYDATE =%KEYDATE%

执行此操作后,系统会立即忽略KEYDATE设置,而是使用当前的KEYDATE。 对于SAP注释以及KEYDATE的预期格式,这是可以理解的。 但是我需要在脚本逻辑中使KEYDATE动态化,以便使用户能够在DM包中进行设置。

你们中有人遇到过这样的问题,并且知道如何解决吗?

先谢谢您

Karsten

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

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


尊敬的专家,

我们面临淘汰中具有时间依赖性的层次结构的问题。 我将KEYDATE包含在DM软件包中,以使用户有机会选择用于IC消除的层次版本。 我还调整了要考虑的KEYDATE的相关过程链。 此步骤正常工作,并且将传递KEYDATE。 DM包的结果行:

 SELECTION_KEYDATE = 20190101 

尽管如此,执行消除程序US_ELIM的被调用脚本逻辑根本不考虑KEYDATE。 它始终使用当前系统日期作为KEYDATE。 我找到了一个SAP注释(2254535),其中指出KEYDATE必须包含在要考虑的脚本逻辑中。 它还说脚本逻辑期望KEYDATE的格式为:

 KEYDATE = YYYYMMDD 

所以我在脚本逻辑中输入了以下代码:

 * RUN_PROGRAM US_ELIM
 CATEGORY =%CATEGORY_SET%
 货币= EUR,CHF
 TID_RA =%TIME_SET%
 OTHER = [PRCTR =%PRCTR_SET%]
 关键日期= 20190101
 * ENDRUN_PROGRAM 

以上程序按预期运行,并且已正确消除。

问题是我无法在脚本逻辑中使KEYDATE动态化:

 KEYDATE =%KEYDATE%

执行此操作后,系统会立即忽略KEYDATE设置,而是使用当前的KEYDATE。 对于SAP注释以及KEYDATE的预期格式,这是可以理解的。 但是我需要在脚本逻辑中使KEYDATE动态化,以便使用户能够在DM包中进行设置。

你们中有人遇到过这样的问题,并且知道如何解决吗?

先谢谢您

Karsten

付费偷看设置
发送
8条回答
悻福寶寶
1楼 · 2020-09-19 08:08.采纳回答

如果此脚本运行正常:

 * RUN_PROGRAM US_ELIM
 CATEGORY =%CATEGORY_SET%
 货币= EUR,CHF
 TID_RA =%TIME_SET%
 OTHER = [PRCTR =%PRCTR_SET%]
 关键日期= 20190101
 * ENDRUN_PROGRAM 

您可以在高级DM脚本中使用REPLACEPARAM传递KeyDate:

 PROMPT(SELECT,%SELECTION%,,"请进行选择...","%ENTITY_DIM%,%CATEGORY_DIM%,%TIME_DIM%",0)
 PROMPT(KEYDATE,%KD%,"关键日期",0)
 INFO(%EQU%,=)
 INFO(%TAB%,;)
 任务(/CPMB/IC_ELIMINATION_LOGIC,TAB,%TAB%)
 任务(/CPMB/IC_ELIMINATION_LOGIC,EQU,%EQU%)
 任务(/CPMB/IC_ELIMINATION_LOGIC,REPLACEPARAM,KD%EQU %% KD%)
 任务(/CPMB/IC_ELIMINATION_LOGIC,SUSER,%USER%)
 任务(/CPMB/IC_ELIMINATION_LOGIC,SAPPSET,%APPSET%)
 任务(/CPMB/IC_ELIMINATION_LOGIC,SAPP,%APP%)
 任务(/CPMB/IC_ELIMINATION_LOGIC,SELECTION,%SELECTION%)
 任务(/CPMB/IC_ELIMINATION_LOGIC,LOGICFILENAME,ICELIM.LGF)

然后在脚本中可以使用$ KD $变量:

 * RUN_PROGRAM US_ELIM
 CATEGORY =%CATEGORY_SET%
 货币= EUR,CHF
 TID_RA =%TIME_SET%
 OTHER = [PRCTR =%PRCTR_SET%]
 KEYDATE = $ KD $
 * ENDRUN_PROGRAM 

无法测试(我在当前系统中未启用TDH),但可以正常工作。

顺便说一句,它将仅将KeyDate传递给US_ELIM,如果此脚本中有其他逻辑,则还需要TASK KEYDATE。

昵称总是被占用
2楼-- · 2020-09-19 07:52

嗨,瓦迪姆,

您的方法很好-非常有用。

有趣的是,我已经尝试了在DM脚本中使用标准系统变量" Selection_Keydate"实现这种方式。 所以我的脚本看起来像:

任务(/CPMB/IC_ELIMINATION_LOGIC,REPLACEPARAM,KEYDATE%EQU %% SELECTION_KEYDATE%)

然后,我在脚本逻辑中提到:

 KEYDATE = $ SELECTION_KEYDATE $ 

这种方法根本行不通。 但是,如上所述,使用自定义变量%KD%的方法效果很好。 奇怪的行为。

现在,我只剩下一个问题了。 使用您的DM脚本,我会看到两个提示输入KEYDATE的提示。 请查看下面的屏幕。

第一次选择蒙版:

第二选择框:

有没有一种方法可以将选择减少到一个KEYDATE输入? 另一个奇怪的行为是,您不能在选择窗口中将KEYDATE保留为标准。 完成此操作后,由于尚未定义KD,因此DM程序包将失败。

先谢谢您

Karsten

一周热门 更多>