SAP工具箱 通用条件/加点率配置

前言

SAP的定价体系的大致设计思路

  • 通过配置生成条件表

  • 通过存取顺序关联条件表

  • 通过定价方案把相关条件类型关联起来

  • 条件类型按顺序读取条件表,找到为止

  • 定价方案中允许通过备选计算类型增强条件的金额

  • 备选计算类型最终确定条件的金额.

项目中对定价的增强一般在备选计算类型使用的例程中写相应的代码

本文主要介绍在定价值的例程中使用通用定价/加点率配置表获取定价或加点率

为了行文方便, 后文把定价/加点率统称加点率.

定价相关界面

  • 图一是事务代码VOFM 进入定价值例程的路径

  • 图二是定价值例程维护界面

  • 图三是例程的代码内容示例(因为例程主程序没有设置固定点计算,带有小数的数字乘除会放大金额,最佳解决方法是调用固定点计算的函数,在函数中写增强代码.)

  • 图四是定价方案中备选计算类型中应用定价值例程

  • 图五是程序(/函数组)属性中的固定点计算, 这个标记会影响程序中小数的乘除结果.

3550659516b66cea0c5affb624d9ab77.png

图一

67764bc66b0a8e4cb0bf009aa5c8ef1f.png

图二

78ce957f5696cc9fcea2afb733516ccd.png

图三

cd5de90b85f8982073fa6ad293366238.png

图四

34a5c2468c41f76c920819adace22c3a.png

图五

业务需求

业务人员可能对定价提示如下的需求.

  • 基本需求

  • 进阶需求

01

基本需求

比如用户可能会提如下定价需求: 在成本价的基础上加3个百分点作为销售订单的价格

这个需求相对简单, 通过标准配置就能实现:

  • 定义加点率条件表(百分比条件).

  • 定义加点率条件类型(可以理解为正向折扣)

  • 定价方案中加入成本价与加点率条件类型 ,

  • 定价方案中累计成本价金额与加点率金额作为销售金额

02

进阶需求

进(变)阶(态)需求

从最近10天的平均采购价与成本价(加税加3个点)中二者取其高,再加6个百分点.

这个定价需求几乎无法通过标准配置实现了. 只能考虑使用定价增强实现(使用定价值例程)

这个需求中的加点率的获取有多种方式

加点率获取的方式

  • 代码中写死加点率: 弊端毋庸置疑,业务如果相调整加点率,必须找开发修改代码.

  • 按业务需求定义配置表

  • 使用通用加点率配置表

01

按业务需求定义配置表

一般情况下,业务需求不同,加点率的配置表也会不同

比如业务需要按地点设置加点率

可以定义一个配置表 地点作为主键 加点率作为属性. 在定价例程中读取该配置表,获取加点率

弊端:

如果业务需求在不同的定价中使用不同的维度定义加点率. 则需要为每个维度定义一个加点率配置表.

如果业务需求调整,从地点调整为地点+类目 .则需要调整配置表,同时调整代码.

03

使用通用加点率配置表

那么有没有可能设计一个通用配置表,一劳永逸的解决这个问题呢?

回答是肯定的. 

通用加点率配置

通用加点率配置表的思路来源于灵活的业务加点率需求(业务需求不断的改变加点率逻辑),尝试通过一个配置表解决所有定价中获取加点率或定价的需求.

01

配置路径

配置路径如下图所示.配置帮助中详细解释了配置的注意点及配置实例,同时字段帮助中进一步解释了每个字段的用法.

00c289c14d534d5f75e82e602b3653ee.png

02

配置表

ZTCOND_JDLID/ ZTCOND_JDLIDT 维护加点率ID/文本

bb0b2737a93aa89fa7150e4f98476507.png

ZTCOND_JDL 条件表通用加点率(在条件计算类中获取加点率使用)

2ee29244c9a15266b24aac3abff70305.png

03

字段介绍

JDLID

加点率ID:用于识别加点率的使用场景

TABNAME

表名(限制条件字段来源表). 目前支持来自条件中的常用结构KOMK/KOMP/XKOMV及常用主数据表 MARA/T001W/LFA1/KNA1

如果需要其它字段

  • 可以扩展配置表范围 

  • 可以增强KOMP字段

dc55068dd7fdaf5a472bea5750adfdee.png

FNAME

字段名(获取加点率限制的字段名)

8a1c0881a4420ac91d9ecf77bdc23945.png

FVALUE

字段值限制. 

通过特定字段的值和配置的值限制是否匹配,确定该行是否通过.

支持四种值限制方式

1. 单值   示例  A

2. 多个单值: 多个单值通过逗号分隔 示例  A,B,C

3. 通配符: A*,B,CD*

解析成

解析成 SIGN = 'I' OPTION = 'EQ' LOW = 'A' HIGH = ''

       SIGN = 'I' OPTION = 'CP' LOW = 'B*' HIGH = ''

       SIGN = 'I' OPTION = 'CP' LOW = 'CD*' HIGH = ''

4. 复杂设置:

示例 I/EQ/A,I/CP/B*,E/BT/C/D

解析成 SIGN = 'I' OPTION = 'EQ' LOW = 'A' HIGH = ''

       SIGN = 'I' OPTION = 'CP' LOW = 'B*' HIGH = ''

       SIGN = 'E' OPTION = 'BT' LOW = 'C' HIGH = 'D'

e36265f1dda00ad2737f16a951a21e57.png

JDLGP

限制条件分组

f0a4f76700e81d55c7c20ada89e9b262.png

CONDJDL

加点率(%)

DATAB开始生效日期

维护条件的生效开始日期, 如果没有维护,视同为不限制

fbde17f971474c789ac37e2a56d5dae4.png

DATBI有效截至日期

维护条件的有效截至日期, 如果没有维护,视同为不限制日期

66831fb4459da9048708cb85f7855b75.png

04

获取加点率的类

ZCL_COND

e7c80a8db67b5e50bfa288d964bdc29d.png

通用加点率使用

配置前最好查看一下配置帮助文档,及每个字段的帮助文档,了解一下配置的注意事项. 

01

加点率ID

为一个业务场景定义一个加点率ID,可以把加点率ID理解成系统中的条件类型. 

977e3858f5f9c57af27503158a80110c.png

02

配置加点率

为加点率ID配置特定命中条件,值,有效日期.

命中条件由 表名/字段名/字段值限制构成, 字段值限制维护方式详见FVALUE 的帮助文档

注意事项: 

  • 同一个分组的加点率,有效日期最好维护成一致(优先使用第一行的加点率,每行的日期联合命中条件字段生效)

  • 有层级的加点率获取通过分组编号的顺序实现,尽量给高优先级的条件组合定义小的分组编号

  • 分组编号最好采用10或100进制. 以便后续插入高优先级命中条件

e8858c525a6066f77b9265b570fb940b.png

03

获取加点率

在代码中调用类获取加点率

传入加点率ID ,和定价例程中允许访问的工作区( KOMK,KOMP, XKOMV ). 即可获取加点率

 DATA(lv_jdl) = zcl_cond=>get_jdl( iv_jdlid = 'J0002' is_komk = komk is_komp = komp is_xkomv = xkomv ).

a41f5abf61335c27bee4a5c4e7613b91.png

总结

通用加点率配置尝试通过一个配置表实现所有的加点率/定价的获取逻辑.

局限于配置中允许的表

  • KOMK     定价通讯抬头

  • KOMP     定价通讯项目

  • XKOMV   定价通讯-条件记录

  • MARA     商品主数据

  • T001W    地点主数据

  • LFA1       供应商主数据

  • KNA1       客户主数据

可以使用这些表中的任意字段组合配置加点率的获取,一劳永逸的解决了加点率(/定价)的配置及获取逻辑.

这个配置表也可以作为一个通用条件表来使用. 但是考虑通用条件表可能会基于商品编码等属性维护,数据量较大, 还是应用标准方案创建特定条件表合理一些.

对于较低数据量的条件,可以使用这个配置表实现.

THE

END

约定

如果你对这篇文章感兴趣,请帮忙点赞,在看,分享.       

    (如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程. 越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.)

b33ddd44152bed1c673e5ffae20bc2f7.png

公众号 : syjf1976_abap

          ABAP开发技巧

微信号 : 392077

请微信联系管理员: 

syjf1976 

sharry_xlp  

Yannick_Duan 

申请进入公众号讨论群提问或者参与话题讨论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值