理论教育 更新规则中的开始例程实施步骤详解

更新规则中的开始例程实施步骤详解

时间:2023-05-30 理论教育 版权反馈
【摘要】:“创建开始例程”按钮位于规则明细的正上方,如图5-68所示。首先,需要在更新规则中创建特性的例程,只需单击关键指标上的“类”图标,如图5-69所示。第2部分也是程序的主题部分,系统的默认名称是compute_key_field。

更新规则中的开始例程实施步骤详解

1.更新规则中的开始例程

与传输规则中的开始例程类似,在更新规则中,也可以定义开始例程,对数据进行预处理。“创建开始例程”按钮位于规则明细的正上方,如图5-68所示。

978-7-111-50218-0-Chapter05-169.jpg

图5-68 “创建开始例程”按钮

单击“创建开始例程”按钮,系统将自动产生如下代码段。

978-7-111-50218-0-Chapter05-170.jpg

978-7-111-50218-0-Chapter05-171.jpg

可以看到程序的结构构成如下:

第1部分是全局变量声明,此处声明的全局变量在更新规则的所有地方都可见。

第2部分是数据包结构的定义,DATA_PACKAGE_STRUCTURE包含了通信结构的所有字段,加上一个RECNO字段。RECNO字段对应数据源PSA数据包中的记录编号,因此在开始例程中可以不使用SY-TABIX。

第3部分也是程序的主题部分,系统的默认名称是STARTUP。主体部分同样包含一个ABORT参数,与之前传输规则中的ABORT参数不一样的是,如果给ABORT赋值“非0”,则整个上载过程将会被停止。

示例:更新规则中的开始例程代码如下。

978-7-111-50218-0-Chapter05-172.jpg

978-7-111-50218-0-Chapter05-173.jpg

2.特性的例程

在更新规则中的特性例程编写和在传输规则中的特性例程编写大致相同,只是在具体的参数上略有差别,另外,在传输规则上的变更将对一整条记录产生影响,但是在更新规则中可以针对单独的关键指标进行例程编写,而不影响其他关键指标对于某个特性的更新。

首先,需要在更新规则中创建特性的例程,只需单击关键指标上的“类”图标,如图5-69所示。

978-7-111-50218-0-Chapter05-174.jpg

图5-69 更新规则中的“类”

其次,在“销售数量”关键指标上单击“类”后,在系统弹出的对话框中,选择“特征”标签页,如图5-70所示。单击具体特性的“方法”按钮,进入“更改源”对话框,选中“例程”单选按钮进行更新,如图5-71所示。

978-7-111-50218-0-Chapter05-175.jpg

图5-70 “特征”标签页

978-7-111-50218-0-Chapter05-176.jpg

图5-71 选中“例程”单选按钮

最后,单击例程后面的创建图标978-7-111-50218-0-Chapter05-177.jpg,系统会弹出例程的文本描述框让用户输入,这里输入“根据物料号确定物料组”,如图5-72所示。

978-7-111-50218-0-Chapter05-178.jpg

图5-72 输入例程的文本描述

此时,进入例程的编写界面,更新规则特性例程系统生成的标准代码如下。

978-7-111-50218-0-Chapter05-179.jpg

978-7-111-50218-0-Chapter05-180.jpg

与传输规则中的代码不同的是,本处不需要选择用于派生目标的源字段,而是包括了整个通信结构。

可以看到程序的结构构成如下:

第1部分是全局变量声明,之前在开始例程中定义的变量在此处也能看到。

第2部分也是程序的主题部分,系统的默认名称是compute_key_field。主体部分除了包含一个ABORT参数外,还包含了一个RETURNCODE参数。当RETURNCODE赋值“非0”时,当前记录的目标字段(这里是物料组)就不会被更新;而当ABORT被赋值“非0”时,整个数据上载过程将被终止。

示例:更新规则中的特性例程代码如下。

978-7-111-50218-0-Chapter05-181.jpg

978-7-111-50218-0-Chapter05-182.jpg

编辑完毕后,保存例程并退出,确定新的规则后,系统将出现如图5-73所示的提示信息。

978-7-111-50218-0-Chapter05-183.jpg

图5-73 SAP系统提示信息

该提示信息提示我们是否将新的特性的更新规则传输到所有的关键指标中,如果此时只是需要对“销售数量”进行这样的更改,那么就单击“否”按钮;如果对于所有的关键指标都需要应用该例程,则单击“是”按钮。

3.关键指标的例程

关键指标的例程实施和特性的例程实施几乎一样,唯一不同的是,在关键指标的规则定义中有两个复选框可以勾选,一个是“返回表格”,另一个是“例程中的单位计算”,如图5-74所示。(www.daowen.com)

如果我们希望直接使用来源中的单位进行更新,那么只需在“例程的单位”后的可选单位中选择一项即可,如选择“货币名称代码”,则在其下的“源单位”中,将会出现我们所选的单位信息,如图5-75所示。

如果勾选了“例程中的单位计算”复选框,那么“返回表格”复选框和其下的单位计算信息都会被隐藏起来,因为此时所有的规则都将在例程中进行定义,如图5-76所示。

978-7-111-50218-0-Chapter05-184.jpg

图5-74 关键指标的规则细节

978-7-111-50218-0-Chapter05-185.jpg

图5-75 “货币名称代码”的单位信息

978-7-111-50218-0-Chapter05-186.jpg

图5-76 选择更新方法为带单位计算的“例程”

本节将先讲解使用源单位更新目标单位的情况,后续章节再对单位转换进行详细讲解。

以上步骤进行完毕后,单击例程创建按钮,系统进入例程文本信息输入界面,这里输入“根据销售数量、销售金额确定销售价格信息”,如图5-77所示。

978-7-111-50218-0-Chapter05-187.jpg

图5-77 输入例程文本描述

单击“编辑器”按钮进入例程编辑界面,系统自动生成的标准代码如下:

978-7-111-50218-0-Chapter05-188.jpg

978-7-111-50218-0-Chapter05-189.jpg

可以看到,程序的结构与之前的特性例程一样,均由变量定义和程序主体部分构成,只需在程序的主体部分加上我们需要的代码,并更新参数result的值即可。

示例:更新规则中的关键指标例程代码如下。

978-7-111-50218-0-Chapter05-190.jpg

4.单位的转换例程

在BW系统中,很多时候需要对单位进行处理,例如,对于大型集团企业而言,可能有子公司或分公司位于海外,因此凭证的记账货币可能不同于国内的货币,如HKD、USD、EUR、JPY等,因此常常需要按照一定的规则对货币或单位进行转换。

BW本身提供了在报表上进行单位转换的功能,但是更新规则本身的目的就是为了报表服务,我们有时可能直接就需要得到最终的结果,然后存储在系统中,以提高报表运行的性能。

以下是几个常用的函数,在项目中经常会用到,这里举例说明。

示例:将外币转换为本位币,代码如下。

978-7-111-50218-0-Chapter05-191.jpg

示例:将本位币转换为外币,代码如下。

978-7-111-50218-0-Chapter05-192.jpg

示例:单位和基本单位之间的转换,代码如下。

978-7-111-50218-0-Chapter05-193.jpg

5.返回表格的例程

返回表格的例程和其他所有的例程都有所区别,因为只有这一个地方我们能按照目标的结构返回数据记录,并且直接计算目标(信息块)的结果。

如果选择“返回表格”的方式对关键指标进行处理,则所有的逻辑,包括指标的计算以及单位的处理都将在返回表中进行。和创建例程一样,勾选“返回表格”复选框后,单击创建按钮,如图5-78所示。

978-7-111-50218-0-Chapter05-194.jpg

图5-78 “返回表格”例程

此时,系统会弹出对话框,提示对返回表格例程的文本描述进行输入,这里输入“根据DSO ZODS90收到的库存记录计算库龄”,如图5-79所示。

单击“编辑器”按钮,进入例程编辑界面,系统自动生成的标准代码如下。

978-7-111-50218-0-Chapter05-195.jpg

图5-79 输入例程文本描述

978-7-111-50218-0-Chapter05-196.jpg

我们可以看到程序的结构和之前的关键指标例程一样,都由变量定义和程序主体部分构成。除了经常见到的参数MONITOR、COMM_STRUCTURE、RECORD_NO、RECORD_ALL、SOURCE_SYSTEM以及控制参数RETURNCODE、ABORT外,这里增加了两个参数,即RESULT_TABLE代替了RESULT,ICUBE_VALUES结构包含了需要派生出的最终结果的结构。

根据读取ZODS90中物料库存数量计算出的当前库存的库龄分布,代码如下。

978-7-111-50218-0-Chapter05-197.jpg

978-7-111-50218-0-Chapter05-198.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈