4.1 派生策略推导规则步骤类型
派生策略推导规则的使用是通过一步建一个规则,由一个或多个步骤一起来实现推导。前面步骤的结果可以提供给后面步骤使用,比如前一步结果可以作为后一步的条件、推导依据等。SAP派生策略推导规则的步骤主要提供了以下类型:初始化、分配、派生规则、表格查询、功能模块、增强(注:不是所有的推导规则都提供这么多的步骤类型)。
4.1.1 初始化
初始化:将推导过程中的某一字段数据(可以是源数据,也可以是辅助数据,还可以是目标数据)进行初始清空。往往将不需要的目标数据去掉,或是将规则执行条件、推导依据进行初始化,为后面步骤赋有效值做准备。定义如下:
选项卡“条件”:本步骤执行的条件。满足条件,本步骤方可执行,如图4.1.1-1所示。
名称:指定条件判断比较的字段,用户根据实际情况来决定用哪个字段值来作为判断条件。
①明细:单击图4.1.1-1中按钮,查看如图4.1.1-2所示。
整个字段内容:按指定字段(名称列)的整个字段内容进行比较。
部分字段内容:按指字字段的部分内容进行比较,需要定义部分内容的开始位置和长度。起始字符位置(从0开始):指定部分内容的开始位置。字符数:指定内容的长度。功能相当于SubString函数。
在图4.1.1-2中定义完成后,单击按钮返回。如果定义了部分字段内容,返回到前一界面时,会在“描述”列中标明字段的位置如:“+1(1)公司代码”,前面的“+1(1)”代表的就是部分内容的开始位置和长度。比如模糊匹配值的判断就是字段,通过判断前面固定位长的值等于固定值即可。
②操作:提供比较判断的符号。
③值:同字段进行判断比较的值。
④链接:多个行的条件判断的逻辑运算,两种:AND和OR。
注:其他类型的条件设定与这里一样,后面不再重复。
选项卡“定义”:
①字段:指定要清空并初始化的字段。
②单击按钮打开明细定义,如图4.1.1-3所示。
图4.1.1-1
图4.1.1-2
图4.1.1-3
在图4.1.1-4中指定要清除的内容是整个字段,还是部分字段内容。如果是部分字段,在“起始字符位置(从0开始)”指定开始位置,在“字符数”指定长度。
图4.1.1-4
4.1.2 分配
分配:推导过程中给某一字段赋值,如同A=B一样赋值。字段可以是源数据,也可以是辅助数据,还可以是目标数据。设置如图4.1.2-1所示。
图4.1.2-1
①源字段:指定目标字段的值来自于哪一个字段,例如字段:基金中心=成本中心。可以单击来定义明细,如图4.1.2-2所示。
图4.1.2-2
(1)允许初始值:勾选时,代表此源字段的值为空时,运行分配的赋值,反之不运行。
(2)明细:
整个字段内容:代表将整个字段的内容赋值给目标字段。
部分字段内容:将字段的一部分内容赋值给目标字段。
②常数:将目标字段指定为一个具体的常数,例如:基金中心=280001。
③目标字段:指定要被赋值的字段。
④单击:可以指定被赋值的目标字段的明细设定,如图4.1.2-3所示。
图4.1.2-3
注:在赋值操作的明细设定中,必须根据自己使用的情况正确设定,否则可能会产生不正确的结果。例如在操作FI记账时,根据成本中心和基金中心在界面录入数据来执行派生情况,见表4.1.2-1。
表4.1.2-1
一个简单的A=B一样的赋值,搞出这么多名堂,可见实施PSM-FM模块确实挺复杂的。一个非常小且不容易让人注意的地方,一不小心会造成错误的结果,但顾问自己可能还不知道原因。
4.1.3 表格查询
表格查询,相当于使用一个SQL语句查询一个SAP中存在的表格,然后把表格查询结果中的其他字段数据赋值给推导过程中的字段,同时根据其执行情况,提供一个“属性”来选择系统响应。需要注意的是,在使用表格查询时,限制查询传入的条件为表格的KEY字段,不能随意使用表格字段作为条件来进行查询,这限制了表格查询的使用。前面讲到的取基金中心的公司代码,当时我们用了函数来取,其实在这里也可以用表格查询来取(主数据表FMFCTR),如图4.1.3-1所示。
图4.1.3-1
在选创建表格查询时,会要求录入要查询的表格(包含数据库表格、视图),按<Enter>键进入下一步。
选项卡“定义”的配置如图4.1.3-2所示。
图4.1.3-2
①表查询的源字段:指要查询表格的KEY字段值来源,来源可以为推导过程中的各个字段,也可定义为常数,单击“明细”列所在的按钮,可以进行明细的设置,如图4.1.3-3所示。
②表字段到目标字段的分配:将查询结果表格中的字段赋值给推导过程中的字段。这里的例子是取公司代码放在辅助字段USERTEMP1,把基金中心上的基金放在目标字段FUND中。单击明细列所在按钮,可以进行明细设置,其类同前面讲的步骤类型“分配”图4.1.2-2中的赋值明细设定。
图4.1.3-3
选项卡“属性”的配置如图4.1.3-4所示。
图4.1.3-4
①满足本步骤执行条件,执行后,没有找到表格中相应的数据,系统提示报错。
②不满足本步骤执行条件,报错。
③满足本步骤执行条件,执行后,找到表格中相应的数据,结束派生策略规则的执行,后面的步骤不再执行。
④满足本步骤执行条件,执行后,不管执行的结果如何就结束派生策略规则的执行,后面的步骤不再执行。
⑤不满足本步骤执行条件就结束派生策略规则的执行,后面的步骤不再执行。
注:通常只有在有明确要求下才会选择系统的响应,使用时一定要小心,尤其是后面三个选项,对派生策略规则的步骤执行有很大影响。
4.1.4 派生规则
派生规则简单来讲就是通过枚举条件的值来推导出目标字段的值。比如已知一个变量作为条件,枚举变量值为V1、V2……,再枚举出目标变量对等值为T1、T2……,非常像程序开发语言中的CAS EWHEN语句。扩大一点来说,已知变量和目标变量可以是单个变量,也可以是变量矩阵(多个变量形成的值矩阵)。同样,在系统中派生规则也提供一个“属性”选项卡用来选择系统响应。例如,通过WBS派生出基金计划程序(注:在定义此步前,需调用函数FMDT_CONVERSION_WBS_INT_TO_EXT将WBS内部转换为外部编码,此例是将WBS内码转为外码放在字段ZZ_EX_WBS中),如图4.1.4-1。
选项卡“定义”如图4.1.4-1所示。
图4.1.4-1
①源字段:需要枚举条件字段,可以是多个字段。
②目标字段:需要枚举目标字段,可以是多个字段。
选项卡“属性”如图4.1.4-2所示。
图4.1.4-2
①~⑤与步骤类型“表格查询”中的“属性”图4.1.3-4中①~⑤的意义是一样的,这里不再重述。
⑥允许有效期条目维护:勾选后,代表本步骤的派生规则在维护录入枚举值时,可以设定其有效的开始日期。
规则值:定义完成后,可以单击按钮录入枚举规则条目值,如图4.1.4-3所示。
图4.1.4-3
①单击此按钮,可把源字段按照起始范围方式录入。
②录入源字段的值。
③录入目标字段的值。
最终结果在源记账数据中,当WBS为X-IDES-STD-46A~X-IDES-STD-46B时,基金计划程序派生出来为2800-2017-01。
通过例子,很自然地想到由会计科目推导出承诺项目、由成本中心推导出基金中心、由CO中的广义成本对象推导出基金中心等,并进一步思考通过会计科目、成本中心、资产编号、广义的成本对象等其主数据上的相关字段值来推导出基金中心、承诺项目、基金、基金计划程序等账户分配要素。
4.1.5 增强
增强,是派生规则步骤类型中的一种特殊步骤,它是在推导过程中加入一个增强代码点,用户可在此加入自己的逻辑代码,来实现用户逻辑推导后的目标数据,往往在现有派生步骤类型不能正确推导出或推导过程太复杂时才会使用到。注意:不是所有的派生策略规则推导都提供增强步骤类型。
选项卡“定义”如图4.1.5-1所示。
图4.1.5-1
①源字段:定义要传到增强代码中的源字段。定义后该字段的值会传到增强程序中,没有定义的字段,其值不会传入到增强程序中。
②目标字段:定义增强程序要输出的字段。定义该字段后,在增强程序通过逻辑计算后,可以将该字段的值输出返回到推导步骤中的目标字段里,没有定义的字段,其值不会返回到推导步骤中。
选项卡“属性”如图4.1.5-2所示。
图4.1.5-2
①~⑤与步骤类型“表格查询”中的“属性”图4.1.3-4中①~⑤的意义是一样的,这里不再重述。
⑥用户定义的步骤标识:可以为增强步骤指定一个用户标识,此标识值用在增强程序中,通过此标识作为条件代表此步骤,然后可以写出相应的逻辑代码,可参见下面的代码例子。
代码:单击图4.1.5-1中的按钮,可进行增强代码的编写。需要注意,在编写代码前,需要把增强步骤类型使用的增强出口组件SAPLFMDT激活(事务码CMOD),激活后可以看到该组件是状态绿灯。如果为红灯,则表示增强组件没有激活。激活出口组件后,在其出口函数EXIT_SAPLFMDT_001的包含文件ZXFMDTU01中写入相应代码,如图4.1.5-3所示。
图4.1.5-3
4.1.6 功能模块
在推导步骤过程中调用一个功能函数,将源数据字段值传入功能函数的参数值,再把功能函数执行后的结果数据值传出到目标字段。
在选择新建步骤类型为功能函数后,会弹出一个对话框要求选择使用的函数,如图4.1.6-1所示。
图4.1.6-1
图4.1.6-1中,单击按钮或<Enter>键进入步骤的详细定义。
选项卡“定义”如图4.1.6-2所示。
图4.1.6-2
①源字段:定义功能函数传入参数的字段值来源字段。
②目标字段:定义功能函数传出参数字段输出到目标字段。
备注:SAP系统在派生策略里预提供了大量可能在推导过程中用到的函数,这里列一部分供参考,见表4.1.6-1。
表4.1.6-1
(续)
经过研究,SAP系统可以支持用户自己编写的功能函数,有兴趣的可以自行深入研究一下,这里不再深入讲解,如图4.1.6-3所示。
图4.1.6-3
既然SAP系统支持用户自定义的函数调用,那么有没有增强类型的步骤已经不重要了,完全可以用自定义的函数来替代增强类型步骤。