SAP 采购订单审批策略的出口设置(任何修改都触发重新审批)

业务应用场景:

业务单位要求部分采购订单,不管做任何修改(不管金额改大改小)都触发重新审批订单。

解决思路:

首先在SAP的配置中只能实现订单改大重新触发审批策略。

这部分配置有很多的配置资料可以查阅:

主要的配置路径为: SPRO--物料管理--采购--采购订单--采购订单的下达过程--定义采购订单的审批过程--发布标识

 主要配置内容

可变性:1--6有不同的控制属性,一般情况下为6.

%值更改:控制多少的变化值(变大),会重新触发审批,如果为空则任何变化都会触发审批。

 SAP标准的配置是无法控制订单金额改小的策略变化,当订单变小的时候后台配置是无法重新触发审批策略的。

这时候需要出口来进行控制:

出口程序为:ZXM06U22

出口代码如下:

E_CEKKO = I_CEKKO .  "
DATA : C_FLAG TYPE C .
DATA : WA_BEKPO   TYPE BEKPO,
           WA_CEKKO   TYPE CEKKO,
           W_RESET(1) TYPE C VALUE ' '.
DATA EXCH_RATE  LIKE  BAPI1093_0 .
DATA V_VALUE LIKE WA_CEKKO-GNETW .    "用来获取审批策略中的临界金额
CLEAR W_RESET .
CASE E_CEKKO-EKGRP .
  WHEN  'A01'.   "根据采购组判断需要执行出口的采购订单
    CLEAR C_FLAG .
      C_FLAG = 'X' .
    ENDIF.
    IF C_FLAG = 'X' .
      CLEAR WA_CEKKO .
      IF SY-TCODE EQ 'ME22N' OR SY-TCODE EQ 'ME22'.
        WA_CEKKO = I_CEKKO .
        IMPORT WA_CEKKO = WA_CEKKO FROM MEMORY ID 'ZREL_COST'.
        IF SY-SUBRC NE 0 .
          EXPORT WA_CEKKO = WA_CEKKO TO MEMORY ID 'ZREL_COST'.
        ENDIF .
      ENDIF .
      IF ( SY-TCODE EQ 'ME22N' OR SY-TCODE EQ 'ME22' )
           AND SY-UCOMM EQ 'MESAVE' OR SY-UCOMM EQ 'MECHECKDOC'.
*Import/Export the origninal values.
*Check if the limit is passed .
        CLEAR W_RESET .
        IF I_CEKKO-GNETW NE WA_CEKKO-GNETW .   "只要金额发生变化,则设置变化标识
          W_RESET = 'X' .
        ENDIF.
*IF limit passed - reset the value to high limit beyond tolerance.
        IF W_RESET = 'X'.
          CLEAR EXCH_RATE   .
          CALL FUNCTION 'BAPI_EXCHANGERATE_GETDETAIL'   "获取汇率
            EXPORTING
              RATE_TYPE  = 'M'
              FROM_CURR  = 'USD'
              TO_CURRNCY = 'RMB'
              DATE       = SY-DATUM
            IMPORTING
              EXCH_RATE  = EXCH_RATE
*             RETURN     =
            .
          CLEAR V_VALUE .
          IF WA_CEKKO-WAERS = 'USD'.     "设置审批策略临界值(超过临界值系统的审批策略不一样)
            IF EXCH_RATE-EXCH_RATE NE 0 .
              V_VALUE = 500000 / EXCH_RATE-EXCH_RATE .
            ELSE .
              V_VALUE = 0 .
            ENDIF .
          ELSE .
            V_VALUE = 500000 .
          ENDIF .
          IF I_CEKKO-GNETW GE 0 AND I_CEKKO-GNETW LT V_VALUE .  " 根据不同的审批策略,有不同的变化量,小于临界值时,只要判断金额小于临界值一点点就一定可以出发重新审批策略
            E_CEKKO-GNETW = V_VALUE - 1.
          ELSEIF WA_CEKKO-GNETW GE V_VALUE .  " 大于50万
*            E_CEKKO-GNETW = V_VALUE + 100000 .
            E_CEKKO-GNETW = E_CEKKO-GNETW * '2' + 100000.  " 如果订单金额比较大,需要较大的差异才能满足策略变化的变化量
          ENDIF .
        ENDIF .
      ENDIF .
    ENDIF .
*  when ''.
  WHEN OTHERS.
ENDCASE.
 

 

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李威威wiwi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值