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,来增强预算地址派生规则的数据源填写,用户可以写入自己的逻辑代码来实现。比如前面讲到的派生规则的例子中,提出了基金中心和承诺项目都是不定深度的层次结构,我们如何完成推导呢。可以按照如下方法来:
①分析:要满足基金中心、承诺项目不定深度层次结构情况下其上级的预算是否存在,首先需一个成功找到预算的标识,其次是返回预算存在的上级的承诺项目和基金中心值。那最少给预算源三个字段:
在该方法的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写入自己的代码逻辑。
基本逻辑如下:
参考伪代码:想学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提供的标准函数?