使用* destination_app将多维模型从源模型映射到目标模型中的一维

2020-09-14 13:57发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)你好 我们面临的问题是将源...

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

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


你好

我们面临的问题是将源模型从四个维度映射到目标模型中的一个维度。

场景是:

我们有2种不同的计划模型-一种用于产品,销售渠道,客户和其他级别的预算,另一种用于ECCS头寸的预算。

在模型1中完成计划后,应将数据转移到模型2中。 因此,销售渠道,销售子渠道,关键人物和产品的每个组合都映射到ECCS位置(很多组合)。

模型1的尺寸

zm_channel(销售渠道)

zm_currency

zm_cust

zm_datasrc

zm_inputyear

zm_keyfig

zm_prod(产品)

zm_profitctr

zm_subchannel(销售子渠道)

zm_time

zm_vers(版本)

模型2的尺寸

zcs_item(eccs位置)

zcs_partner(合作伙伴公司)

zcs_time

zcs_unit(法律实体)

zcs_version

zcurr

z_input_year

我的第一种方法是在逻辑脚本中进行映射,因为我不确定这种组合是否可以在转换/转换文件中使用。

这是我到目前为止所做的:

我创建了一个数据管理器软件包,其中包含针对模型一的每个维度的提示。 如果执行了程序包,则会启动该逻辑脚本:

_______________________________

* XDIM_MEMBERSET ZM_CHANNEL =%ZM_CHANNEL_SET%
* XDIM_MEMBERSET ZM_CURRENCY =%ZM_INPUTYEAR_SET%
* XDIM_MEMBERSET ZM_CUST =%ZM_CUST_SET%
* XDIM_MEMBERTYZEAR_%M * TYM_TYBER%ZEAR_%
* XDIM_MEMBERSET ZM_PROD =%ZM_PROD_SET%
* XDIM_MEMBERSET ZM_PROFITCTR =%ZM_PROFITCTR_SET%
* XDIM_MEMBERSET ZM_SUBCHANNEL =%ZM_SUBCHANNEL_SET%
* XDIM_MEM%SET%Z

//我创建了此变量,因为zm_profitctr的属性cons_unit必须在目标模型中为zcs_unit
* select(%UNIT%,CONS_UNIT,ZM_PROFITCTR,ID <>"")

* DESTINATION_APP =核心

* SKIP_DIM = ZM_DATASRC
* SKIP_DIM = ZM_CUST
* SKIP_DIM = ZM_CHANNEL
* SKIP_DIM = ZM_SUBCHANNEL
* SKIP_DIM = ZM_PROD
* SKIP_DIM = ZM_KEYFIG

* ADD_DIM ZCS_PARTNER = partner_1
* ADD_DIM ZCS_UNIT =%UNIT%

* RENAME_DIM ZM_CURRENCY = ZCURR
* RENAME_DIM ZM_INPUTYEAR = Z_INPUT_YEAR
* RENAME_DIM ZM_TIME = ZCS_TIME

* RENAME_DIM ZM_VERS = ZCS_VERSION

//zm_profitctr与zcs_item不同,但是我不知道有任何其他解决方案可以让我告诉rec语句应该是目标zcs_item

* RENAME_DIM ZM_PROFITCTR = ZCS_ITEM

**当zm_channel
* IS频道_1
*当zm_subchannel
* IS子频道_1
*当zm_prod
* IS产品_1
*当zm_keyfig
* IS keyfigure_1
*当zm_cust
* IS customer_1
* rec(EXPRESSION =%VALUE%,ZM_PROFITCTR = 12345)
* rec(EXPRESSION =%VALUE %,ZM_PROFITCTR = 54321)
* IS客户_2
* rec(EXPRESSION =%VALUE%,ZM_PROFITCTR = 54321)
* ENDWHEN
* ENDWHEN
* ENDWHEN
* ENDWHEN
* ENDWHEN

* COMMIT


这仅用于测试两个模型之间的传输。 如果我使用zm_cust客户_1执行数据管理器包,则将传输数据。 但是会生成3条记录。 这是我不明白的。 即使我

* IS客户_1
* rec(EXPRESSION =%VALUE%,ZM_PROFITCTR = 12345)
* rec(EXPRESSION =%VALUE%,ZM_PROFITCTR = 54321)

在语句中

用zm_cust customer_1执行脚本,将生成一条记录。 因此,当zm_cust为customer_2 ...时,脚本总是跳入应执行的部分。

如果这在下一步中可行,我想替换

*当zm_cust
* IS客户_1
* rec(EXPRESSION =%VALUE%,ZM_PROFITCTR = 12345)
* rec(EXPRESSION =%VALUE%,ZM_PROFITCTR = 54321)
* IS customer_2
* rec(EXPRESSION =%VALUE%,ZM_PROFITCTR = 54321)

作者

*当[zm_cust] .Properties(" int_ext")
* IS int
* rec(EXPRESSION =%VALUE%,ZM_PROFITCTR = 12345)
* rec(EXPRESSION =%VALUE%,ZM_PROFITCTR = 54321)
* IS ext
* rec(EXPRESSION =%VALUE%,ZM_PROFITCTR = 54321)

这样,完整的映射就不​​会那么复杂了。

由于我是脚本逻辑的初学者,并且完整的映射将具有或多或少的1k组合(而且我不知道对性能的影响),因此,更容易使用的方法将受到赞赏。

我有编程和数据库经验,但是没有调试器或更多

透明度(或脚本逻辑经验:)),这确实很耗时:D

欢呼

Tobi