想学FM系列(11)-SAP FM模块:预算结构(2)-预算结构配置-定义预算地址派生策略

3.2.1 预算结构的配置

1)定义预算地址的派生策略

新建完成后,可以点击 “放大镜”,进行预算地址派生规则的详细配置

点击 “新增”,可以增加相应推导步骤。这里暂时不讲如何使用派生规则,由于派生规则在FM大量的使用,其非常重要,因此后面会单独用一节来讲派生规则的使用。这里简单讲一个案例的配置:指定的公司代码的记账地址需根据承诺项目来找对应的预算是否存在,如果不存在就找上一级承诺项目,依次类推。假设承诺项目层次结构变式为非标的ZZZ,其最深为3,那推导规则如下:

0001:根据基金中心找公司代码并将公司代码放入USERSTRING1

注意目标字段到USERSTRING1(这是一个推导使用结构过程中的用户变量,由SAP提供,如果不够用,可以推展增强结构的,后面会讲)。

目的:取出基金中心的公司代码,作为后继推导步骤执行的条件。

注:方式可以由多种,这里用的是功能函数来取的。

0002:初始化读取预算地址是成功标志USERSTRING2

执行条件:

USERSTRING1的值在0001步时取值基金中心的公司代码,这里用作条件判断。

清空读取预算地址是成功标志USERSTRING2,为后面读取成功设置标示做准备。

0003:将记账地址的承诺项目传给USERCMMTITEM为初始值

条件:同第0002条件一样

分配:

目标字段字段USERCMMTITEM,采用覆盖式分配。

0004:取记账地址是否在预算的标识放入USERSTRING2

条件:

USERSTRING1的值在0001步时取值基金中心的公司代码,这里用作条件判断,下同。

定义:

① 函数功能函数FMHIE_GET_BUDGET_ATTRIBUTES调用的传入参数LDNR,被设置了为9F,这里设置9F的目的是为了取预算是否存在,在付款预算中的分类账为9F(后续会讲到)。

② 传入参数CMMTITEM对应值来自HELP_FIELDS~USERCMMTITEM,即0003步取的承诺项目值。

③ 输出能参数BUDGET_EXISTS,在这里代表的意思是指预算存在,它输出值为:X。

④ 功能函数FMHIE_GET_BUDGET_ATTRIBUTES的输出参数BUDGET_EXISTS的值采用覆盖式赋值给USERSTRING2,然后USERSTRING2的值如果为X,代表取成功了。反之没有取成功,为下一步取承诺项目的上一级做准备。

0005:预算地址没有取成功取上一级承诺项目=>USERCMMTITEM.

执行条件

USERSTRING2由上一步0004传过来的,这里的不等于X 就代表取上一步取预算不成功。

① CIVARNT传入参数为承诺项目的层次变式,前面的承诺项目结构层次的配置当中自定义了ZZZ备用的层次结构。

② 将之前的承诺项目HELP_FIELDS~USERCMMTITEM值为作参数CMMT_ITEM的传入值

③ 将取出的承诺项目上一级用覆盖方式再给HELP_FIELDS~USERCMMTITEM承诺项目,作为下一步再找预算地址的依据。

0006:重复定义一次0004步的定义

0007:重定义义一次0005步的定义

0008:重复定义一次0004步的定义

0009:重定义义一次0005步的定义。

注意到这一步,一共定义取了三次预算地址,假设

承诺项目层次结构深度最大为三,那么就代表这三次一定会取到了根节点。

0010:将9F预算类别中有预算的上一级承诺项目覆值给目标预算地址中承诺项目。

条件:

USERSTRING2 = X,代表了,成功的取出了9F当中的预算。

分配:

① 源字段为之前步骤中成功取出有预算地址的HELP_FIELDS~USERCMMTITEM

② 目标字段BO_ADDRESS~CMMTITEM,采用覆盖方式分配的值的预算地址中的承诺项目字段。

完成整个定义应如下:

现在可以进行测试了,测试前设定:

承诺项目结构层次如下:

预算如下:

测试结果:

推导前

推导后结果

推导日志见下

看完上面这个例子,可以休息一会,顺便考虑下同样的业务需求,如果承诺项目和基金中心的结构层次深度都是不定,怎么办呢?SAP的派生规则功能太变态,其配置可移置性实在不强,因为每个公司需求不一样,配置就要完全重新弄。

未完待续...

原文发布于微信公众号 - SAP最佳业务实践(sztunxi)

原文发表时间:2017-03-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏双十二技术哥

组件化实践详解(一)

具体实施一项技术项目之前我们会首先确定对应的目标,之后的行动计划都会朝着目标一步步靠拢。

672
来自专栏云飞学编程

Python爬虫,用第三方库解决下载网页中文本的问题

还在辛辛苦苦的查找网页规律,写正则或者其他方式去匹配文本内容吗?还在纠结怎么去除小说网站的其他字符吗?

1203
来自专栏Ryan Miao

如何优化coding

如何优化coding 前言 最近一直在做修改bug工作,修改bug花费时间最多的不是如何解决问题而是怎样快速读懂代码。如果代码写的好的,不用debug就可以一眼...

4107
来自专栏芋道源码1024

Dubbo 源码解析 —— Cluster

前言 今天是小长假的倒数第二天,本来国庆是要加班四天的,后来因为要有事要回家才得以幸免,但是后天上班之后都要搬砖搬到手脱皮是必须的了.但是再忙每周一篇源码解析...

3695
来自专栏机器之心

入门 | 始于Jupyter Notebooks:一份全面的初学者实用指南

2927
来自专栏陈树义

JVM技术周报第2期

JVM技术周报分享JVM技术交流群的讨论内容,由群内成员整理归纳而成。如果你有兴趣入群讨论,请关注「Java技术精选」公众号,通过右下角菜单「入群交流」加我好友...

992
来自专栏Java后端技术栈

【面试题】2018年最全Java面试通关秘籍第五套!

注:本文是从众多面试者的面试经验中整理而来,其中不少是本人出的一些题目,网络资源众多,如有雷同,纯属巧合!禁止一切形式的碰瓷行为!未经允许禁止一切形式的转载和复...

1651
来自专栏Linyb极客之路

编码习惯之异常处理

对于大型IT系统,最怕的事情第一是系统出现了异常我不知道,等问题闹大了用户投诉了才知道出问题了。第二就是出了问题之后无法找到出错原因。针对这2个问题,说说我们项...

3009
来自专栏linux驱动个人学习

SPI通讯协议

一、SPI概述 SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口。SPI,是一种高速的,全双工,同步的通...

4227
来自专栏大数据和云计算技术

Codegen技术学习

Codegen在spark中的应用 除了前面查询优化中讲到逻辑优化器之外,Spark在1.5版本中引入了比较大的一个动作就是DataFrame执行后端的优化,引...

5775

扫码关注云+社区

领取腾讯云代金券