前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >想学FM系列(17)-SAP FM模块:预算结构(8)-预算结构增强扩展使用

想学FM系列(17)-SAP FM模块:预算结构(8)-预算结构增强扩展使用

作者头像
SAP最佳业务实践
发布2018-03-28 16:05:49
2K0
发布2018-03-28 16:05:49
举报

3.2.3 预算结构增强扩展使用

预算结构提供了预算地址、记账地址、索引预算地址的生成功能,在实际使用当中可能存在预算地址、记账地址的特殊检查,或是预算地址派生规则功能不满足需求的时候,可以使用预算结构的增强来达到满足用户需求的目标。

3.2.3.1 预算地址派生规则的BADI增强

SAP提供了BADI:FMBS_VALID_ADDRESS来供用户使用进行增强。其提供以下功能:

1)FMBS_VALID_ADDRESS~VALIDATE_BO,来增强预算地址的有效性检查,用户可以扩展在方法中加入自己的逻辑代码来实现。

2)FMBS_VALID_ADDRESS~VALIDATE_PO,来增强记账地址的有效性检查,用户可以扩展在方法中加入自己的逻辑代码来实现。

3)FMBS_VALID_ADDRESS~FILL_ADDRESS_SUPPL,来增强预算地址派生规则的数据源填写,用户可以写入自己的逻辑代码来实现。比如前面讲到的派生规则的例子中,提出了基金中心和承诺项目都是不定深度的层次结构,我们如何完成推导呢。可以按照如下方法来:

①分析:要满足基金中心、承诺项目不定深度层次结构情况下其上级的预算是否存在,首先需一个成功找到预算的标识,其次是返回预算存在的上级的承诺项目和基金中心值。那最少给预算源三个字段:

  • ZZB_FUNDSCTR 上层基金中心
  • ZZB_CMMTITEM 上层承诺项目
  • ZZB_CHECK 预算存在标识(成功为X)

在该方法的CHANGING 类型参数中C_S_ADDRESS_SUPPL其TYPE结构为FMBS_S_BSAC_ADDRESS_SUPPL见下图

双击显示结构FMBS_S_BSAC_ADDRESS_SUPPL,如下

其其中预留了给用户自定义推展结构CI_FMBS_S_BSAC_ADDRESS_SUPPL,因此只需要把前面分析的三个字段扩展进去并激活,如下

②实施该BADI(TCODE:SE19来实施),为方法FILL_ADDRESS_SUPPL写入自己的代码逻辑。

基本逻辑如下:

  • 第一步:根据记账地址源中的基金中心和承诺项目数据调用函数FMHIE_GET_BUDGET_ATTRIBUTES来取预算地址等于记账地址是否有预算,取成功则标识ZZB_CHECK=X,ZZB_FUNDSCTR为原记账地址的基金中心,ZZB_CMMTITEM为原地址当中的承诺项目。
  • 第二步:如果第一步不成功,则调用FMDT_READ_HIER_CMMT_ITEM来取上一级承诺项目,再用函数FMHIE_GET_BUDGET_ATTRIBUTES取上一级承诺项目(注其他账户分配要素不变)的预算,不成功则循环这一过程,直到根节点承诺项目。成功则标识ZZB_CHECK=X,ZZB_FUNDSCTR为当前的基金中心,ZZB_CMMTITEM为上一级承诺项目。
  • 第三步:如果第二步不成功,则调用函FMDT_READ_HIER_FUNDS_CTR取基金中心的上一级,然后以上一级基金中心为当前基金中心重复第二步过程,不成功则循环这一过程,直到根节点基金中心。成功则标识ZZB_CHECK=X,ZZB_FUNDSCTR为上一级基金中心,ZZB_CMMTITEM为第二步过程中的承诺项目。
  • 第四步:如果前三步都不成功,则标识ZZB_CHECK为空,ZZB_FUNDSCTR为空,ZZB_CMMTITEM为空,代表没能取得基金中心、承诺项目层次结构向上的预算存在。

参考伪代码:想学FM系列:预算地址派生案例的伪代码

完成上述开发后,就可以在预算地址的派生规则里进行使用了,例如建分配规则即可

条件:

定义

承诺项目再建一个分配规则,同上这个类似。

3.2.3.2 预算地址派生规则中用到的HELP_FIELDS字段推展

在建派生规则过程中,如果使用了比较复杂的推导规则,例如后一步是建立在前几步结果作为条件基础时,可能会出现辅助用于推导的HELP FILED字段不够用了,这个时候,SAP提供了可以推展用户定义的HELP FIELD. 预算地址派生用到的HELP_FIELDS结构为FMBS_S_BSAC_HELP_FIELDS,它预留了给用户推展的结构CI_FMBS_S_BSAC_HELP_FIELDS,用户只需扩展定义并激活它即可,见下图:

然后在预算派生地址规则的维护界面中,可以看到用户自定义扩展的字段,见下图

思考一下,能不能在推导规则当中使用用户自己开发的函数,类似使用SAP提供的标准函数?

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-04-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SAP最佳业务实践 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档