SAP B1 用存储过程控制生产收货(收货数量+已完成数量不能大于计划数量)

软件环境:SAP business One 9.2 (PL10)

解决方案:修改后台数据库的存储过程(SBO_SP_TransactionNotification),添加控制单据操作的业务逻辑代码,代码如下:

--生产收货,收货数量加已完成数量不能大于计划数量。注:OWOR中的CmpltQty实际为输入的收货数量加上原来的完成数量

if(@object_type='59')
begin
 IF @transaction_type IN('A','U')
 begin

declare @itemcode  varchar(20)
declare @BaseRef  varchar(20)
declare @Quantity  numeric(19,6)
declare @recnum  numeric(19,6)

DECLARE YOUCURNAME CURSOR  FOR SELECT T1.BaseRef,T1.ItemCode,ISNULL(T1.Quantity,0) from OIGN T0 INNER JOIN IGN1 T1 ON T0.DocEntry = T1.DocEntry WHERE T1.DocEntry=@list_of_cols_val_tab_del
                OPEN YOUCURNAME
                fetch next from YOUCURNAME into @BaseRef,@itemcode,@Quantity
                while @@fetch_status<>-1
                    begin
                        SET @recnum = (SELECT (T1.CmpltQty-T1.PlannedQty) as recnum from OWOR T1 WHERE T1.ItemCode= @itemcode AND T1.DocNum=@BaseRef)
                        if(@recnum > 0)
                        BEGIN
                        set @error=1
                        set @error_message=N'收货数量不能大于计划数量'
                        END  
                    
                    -----您要执行的操作写在这里
                    fetch next from YOUCURNAME into @BaseRef,@itemcode,@Quantity
                    END
                
                close YOUCURNAME
                deallocate YOUCURNAME

  end
end

最后,感谢“博客园”的博主“mingxiu”的思路和源码,原文出处:https://www.cnblogs.com/sapb1/p/5435367.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值