SO增强 修改SO状态

如果SO金额超出指定金额,需要审批,通过标准的配置实现SO的审批功能,然后通过增强检查so的金额,控制是否需要审批。

MV45AFZZ - FORM USEREXIT_READ_DOCUMENT

FORM USEREXIT_READ_DOCUMENT.
* { INSERT
data: lv_netwr TYPE vbak-netwr,
lv_total type p DECIMALS 2 VALUE ‘50000.00’.
IF vbak-waerk NE ‘CNY’.
DATA:lw_return TYPE bapiret1,
lw_rate TYPE bapi1093_0.

CALL FUNCTION ‘BAPI_EXCHANGERATE_GETDETAIL’
EXPORTING
rate_type = ‘M’
from_curr = vbak-waerk
to_currncy = ‘CNY’
date = sy-datum
IMPORTING
exch_rate = lw_rate
return = lw_return.

IF lw_rate-from_factor <> 0.
lv_netwr = vbak-netwr * lw_rate-exch_rate / lw_rate-from_factor.
ELSE.
lv_netwr = vbak-netwr * lw_rate-exch_rate.
ENDIF.
ELSE.
lv_netwr = vbak-netwr.
ENDIF.

" if lv_netwr lt 50000. " 这里不能比较,达不到预期结果,定义一个变量,赋值50000.00,与netwr相同类型 p(8) decimals 2.
if lv_netwr lt lv_total
data: l_objnr type vbak-objnr,
l_objnr2 type vbak-objnr.

"select single objnr into l_objnr from vbak where vbeln = vbak-vbeln.
l_objnr = ‘VB’ && vbak-vbeln && ‘000000’.
select single objnr into l_objnr2 from jest where objnr = l_objnr and stat = ‘E0002’.

if l_objnr2 = ‘’.
CALL FUNCTION ‘I_CHANGE_STATUS’
EXPORTING
objnr = l_objnr
estat_inactive = ‘E0001’
estat_active = ‘E0002’
STSMA = ‘SO_1’
EXCEPTIONS
CANNOT_UPDATE = 1
OTHERS = 2
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
endif.
endif.

*} INSERT

ENDFORM.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

竹影卿心

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

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

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

打赏作者

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

抵扣说明:

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

余额充值