图1.0.2.3-1表示有5种方式可以建立推导的步骤,下面一一举例介绍这5种推导的玩法. 1).Derivation rule.
如图1.0.2.3-3,这是一个derivation rule的例子:表示的是是如果Sales office = 3100(双击进去图1.0.2.3-3 对应图1.0.2.3-3-[3]的KMVKBU字段),则Region的值是EUROPE(对应的CO-PA字段是图4-[4]自定义的特征WW099), 也就是将Sales Office根据条件推导为Sales region,这个比较简单. 前面已经强调过自定义特征WW099有check table,所以这里推导的Region值必须在KES1中维护.现在用户应明白为什么要check table,很简单,就是防止不合理的随意数据进入CO-PA而已. *在维护Derivation rule后, 可做个很简单的测试,就是FB50手工选择一在PA传输结构中定义的费用科目记一笔帐,成本对象选择PSG,在PSG中输入sales office 3100后, 然后按Derivation按钮看是否Region EUROPE能否带出,If OK,表示改推导规则成功! 2).Table loopup 在Table lookup中,可使用多条件,如图1.0.2.3.-4,以为销售办公室和销售组推导为例,新建Table lookup后输入table KNVV. 图1.0.2.3-4 在表格查询(Table look)中 3).Move 直接根据条件从一个COPA特征字段或SAP字段给另一个COPA特征字段赋值,如图1.0.1.2.3-4,[1]move名,[2]Production name,源字段,[3]目标字段是自定义的特征WW003,[4]赋予整个值给目标字段,[5]ARTNR的值从第11字段开始取后5个字符赋予部分值给WW003.
这个Move推导表示,将源字段Production 图name([2])第11位起取5个字符到目标->自定义的1.0.2.3.-6 特征WW003([5]), 可以直接Move整个源字段到给目标字段([4]),还可选择相关条件([6]),表示符合条件的记录Move才生效. 4).Clear
不贴图了,其实就是将一个特征值内容给清空.
图1.0.2.3.-5 5).Enhancement 有几种情况下使用增强我觉得比较合适,第一逻辑相当复杂,既然是自定义程序,就应该能满足这个原则:凡是SAP里面有的东西,它就是躲到天涯海角都一定能抓到.第二推导行次过多而这些行次逻辑类似,比如一系统涉及成百上千Sales office的推导,如果用Table lookup那不知道要多少行,第三,用于做特征的组织字段变更比较频繁,这样可以使用增强,然后自定义一配置表格,如果发生变更,只要SE16|SM30维护相应表格就行,不要去维护推导又重新生成传输请求,特别是在大集成的Server,这点非常重要,我负责过一跨国公司的维护,一般我都极力赞同这种方法. 依旧以销售办事处和销售组的派生为实例,步骤如下. Step I:建立增强(Tcoede:CMOD). 图1.0.2.3.-7 如图1.0.2.3-7,增强项目ZCOPA001包含增强COPA0001,本来一般的增强是可以直接在SMOD激活增强就可以,不一定需要CMOD建立一个项目,但是这个增强需要建立项目. Step II.建立推导增强(Tcode:KEDR) 图1.0.2.3-8-[1]:源文本可以看到增强的源代码. 图1.0.2.3-8-[2]:增强的名称 .
图1.0.2.3.-8 图1.0.2.3-8-[3][4]:一定要选择源字段,将源字段作为增强的条件输入从而获得目标字段内容. 图1.0.2.3-8-[5]:选择满足什么大条件下才执行该增强,实际上增强程序本身就可以限制条件 Step III.准备主数据
SE16:V_TVBUR->维护销售办公室 SE16:V_TVKGR->维护销售组 OVXM:给销售范围分配销售办公室 OVXJ:给销售办公室分配销售组
XD02:将销售办公室和销售组分配到客户销售主数据中. Step IV:参考增强代码
COPA0001-> EXIT_SAPLKEDRCOPA_001函数包含ZXKKEU1. 增强程序ZXKKEU11程序示例代码如下:
*\*\*\ IMPORTING
*\ VALUE(I_OPERATING_CONCERN) LIKE TKEB-ERKRS *\ VALUE(I_DERIVATION_DATE) LIKE SY-DATUM *\ VALUE(I_STEP_ID) LIKE TKEDRS-STEPID
*\ VALUE(I_COPA_ITEM)
*\ VALUE(I_GLOBAL) LIKE KEDRCOPA STRUCTURE KEDRCOPA *\ EXPORTING
*\ REFERENCE(E_COPA_ITEM) *\ REFERENCE(E_GLOBAL) *\ REFERENCE(E_EXIT_IS_ACTIVE) *\ REFERENCE(E_FAILED) *\ EXCEPTIONS
*\ DERIVATION_FAILED
**\*输入参数: *KNDNR:Customer
*BUKRS:Company code(读取KNVV销售主数据可不需要) *VKORG:Sales Org.
*VTWEG:Distribution Channel *SPART:Division *输出参数:
*VKBUR:Sales Office *VKGRP:Sales Group
DATA : ST_COPA_ITEM LIKE CE1SINO . DATA: BEGIN OF ST_WA_VK,
VKBUR LIKE KNVV-VKBUR , VKGRP LIKE KNVV-VKGRP , END OF ST_WA_VK .
CASE I_OPERATING_CONCERN . WHEN 'STOC' .
CLEAR :ST_WA_VK , ST_COPA_ITEM . ST_COPA_ITEM = I_COPA_ITEM .
SELECT SINGLE VKBUR VKGRP INTO ST_WA_VK FROM KNVV WHERE KUNNR = ST_COPA_ITEM-KNDNR AND VKORG = ST_COPA_ITEM-VKORG AND VTWEG = ST_COPA_ITEM-VTWEG AND SPART = ST_COPA_ITEM-SPART .
ST_COPA_ITEM-VKBUR = ST_WA_VK-VKBUR . ST_COPA_ITEM-VKGRP = ST_WA_VK-VKGRP . E_COPA_ITEM = ST_COPA_ITEM. ENDCASE. 这段代码非常简单,稍微解释一番, I_COPA_ITEM是输入参数,注意这段输入参数只包含图1.0.2.3-8-[3]定义的源字段,将I_COPA_ITEM赋给临时的ST_COPA_ITEM,使用它的目的是ST_COPA_ITEM做为一Work area可以更好赋值,然后再将增强修改后ST_COPA_ITEM赋给输出参数 E_COPA_ITEM. Step V.测试增强效果 图1.0.2.3.-9 如图1.0.2.3-9,在KEI1中设置科目400001000的PA传输结构,FB50手工记帐,选择PSG做成本对象,手工记帐是更便于分析推导结果, 然后输入客户,公司代码,销售组织,分销渠道,部门5个条件,可以在增强处设置断点,看是否能正确从客户主数据中获取销售办事处和销售组.
图1.0.2.3-9-[2]:客户主数据Sales area截图.
图1.0.2.3-9-[3][4]:输入5个条件然后按图1.0.2.3-9-[4]的派生就能从客户主数据中带出销售办事处和销售组. 推导小结: 1.在特征推导中,不要企图对值字段进行赋值,否则会有错误,关于值字段的推导在值字段评估增强中编写(Tcode:KE4U),同样在值字段增强中不要企图更改特征内容一样会导致错误. 2.最近在狂整BW&BCS,在BCS的源数据基础的数据将合并数据加载到合并数据基础中采用的映射(Mapping)原理和这类推导规则的思想基本相同,倒是,在BW的更新规则做成这样table lookup,Move拖拖拽拽多方便.,只要长了手的这种细活都能做, 哎,写BW的这些哥们完全应该向搞Co-PA推导这段程序的哥们多学习学习,方便用户. 4.4.2.4 值字段评估 It is necessary to decide to what record types (F, A, B, C, and 0-9) and at what points (known as points of valuation) each valuation strategy should apply. Likewise, if a strategy is to be applied to planning data, the relevant planning version must be specified (this is all configuration). The various valuation techniques populate the value fields in different ways:
相关推荐: