点击此处---> 群内免费提供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
如果具有多个条件映射,则通常不能使用脚本逻辑来执行数据传输。 使用脚本逻辑,您只能有很少的条件-映射到单个属性中。
对于多个条件,您必须使用映射表编写自定义逻辑badi。
由于目标利润中心是整数值,因此您可以使用模型来存储映射数据
首先-奇怪的是看到标注名称以" Z"开头的维度-使得其可读性降低。
第二个-请使用一些excel示例表的屏幕快照说明所需的映射,以了解您的要求。
我想是这样的:(
好吧,让我们 尝试简化事情并使用正确的措辞:
维度zm_cust的属性int_ext具有2个可能的值:int和ext。 根据此属性,您要选择目标zm_profitctr正确的语法为:
*当zm_cust.int_ext
*是分机
* rec(... zm_profitctr = xxxx)
*是整数
* rec(...)
* rec(...)
*结束时间
要使用zcs_unit,请使用:
zcs_unit = zm_profitctr.cons_unit
我是用iPad写的Ps,很难张贴详细的代码:)
好,现在很清楚。 阅读我的最终答案。
[zm_cust] .Properties(" int_ext")-错误的语法,请看我的代码!
对于zcs_unit,请对源模型中某些未使用的尺寸(例如zm_prod)使用* rename_dim。
然后您可以编写zm_prod = zm_profitctr.cons_unit
请阅读有关目标_app的帮助
一周热门 更多>