ABAP 新增定价例程

为了实现一些特殊的定价计算规则,需要新增定价例程,可通过Tcode VOFM选择菜单中 公式—> 定价值 查看所有例程或者新增例程。

示例新增一个例程编号945,用于计算采购订单单价,双击该行可进入源代码编辑,需留意采购订单对应SAP标准程序 SAPLV61A 是非固定点算术,所以要留意金额的小数位数,代码如下:

FORM FRM_KONDI_WERT_945.
*{   INSERT         ESDK930660                                        1
** 按照百万英热*百万英热单价/采购订单数量得出采购订单单价
*   DATA: ls_komv TYPE komv,
*         lv_zpb1 TYPE komv-kwert,
*         lv_zpb2 TYPE komv-kwert.
*
** 读取条件类型ZPB1(百万英热)金额
*  READ TABLE xkomv INTO ls_komv WITH KEY kschl = 'ZPB1'.
*  IF sy-subrc = 0.
*    lv_zpb1 = ls_komv-kwert.
*  ENDIF.
*
** 读取ZPB2(百万英热单价)金额
*  READ TABLE xkomv INTO ls_komv WITH KEY kschl = 'ZPB2'.
*  IF sy-subrc = 0.
*    lv_zpb2 = ls_komv-kwert.
*  ENDIF.
*
** 订单单价 = 百万英热 * 百万英热单价 / 采购订单数量
*  IF   lv_zpb1 IS NOT INITIAL
*   AND lv_zpb2 IS NOT INITIAL
*   AND komp-mglme IS NOT INITIAL.
*    TRY.
*        xkomv-kpein = 10000.
*        xkomv-kbetr = lv_zpb1 * lv_zpb2 * xkomv-kpein * 10 / komp-mglme.
*        xkwert = xkomv-kbetr * komp-mglme / xkomv-kpein / 1000.
*      CATCH cx_sy_arithmetic_overflow.
*    ENDTRY.
*  ENDIF.

  IF komp-zzbtu is not initial and komp-zzbutp is not initial.
    TRY.
        data:l_kbetr type p length 16 DECIMALS 14.

        l_kbetr = komp-zzbtu * komp-zzbutp.
        xkomv-kpein = 1.

        CALL FUNCTION 'ROUND'
          EXPORTING
            decimals       = 2
            input          = l_kbetr
            sign           = 'X'
          IMPORTING
            output         = xkomv-kbetr
          EXCEPTIONS
            input_invalid = 1
            overflow      = 2
            type_invalid  = 3
            OTHERS         = 4.

       xkwert = xkomv-kbetr.
      CATCH cx_root.

    ENDTRY.
  ENDIF.
*}   INSERT
ENDFORM.

然后就可以在 SPRO—>物料管理—>采购—>条件—>定义价格确认流程—>设置计算方案 - 采购 将例程编号填入条件类型为PBXX那行的条件金额备选计算例程。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值