设为首页 收藏本站
查看: 800|回复: 0

[经验分享] SAP由2005B升级至2007B对收款的影响

[复制链接]

尚未签到

发表于 2015-9-21 11:35:42 | 显示全部楼层 |阅读模式
  曾在一个项目中,使用B1内置的存储过程监控收款动作,如果针对于特定订单所做的收款总额符合指定条件后而进行相应的操作.我们知道在B1中,收款的ObjectType是24,因此,我们设定的条件是@ObjectType='24' AND @TransactionType='A'.
  代码如下:

DSC0000.gif DSC0001.gif Code
/*****************************************************
  预收款达到超过预收款比例的,自动更新为已批准。
  收款达到全款,自动更新为已批准。
*****************************************************/
DECLARE @PaymentCode NVARCHAR(255)
DECLARE @OrderDocNum NVARCHAR(255)
DECLARE @OrderPaymentCount NUMERIC(19,6)
DECLARE @SubsistProportion NUMERIC(19,6)
DECLARE @OrderDocTotal NUMERIC(19,6)
IF @object_type='24' AND @transaction_type='A'
BEGIN
    SET @PaymentCode=@list_of_cols_val_tab_del
    SET @OrderDocNum=(SELECT CounterRef FROM ORCT WHERE DocEntry=@PaymentCode)
    SET @OrderPaymentCount=(SELECT SUM(NoDocSum) AS Total FROM ORCT WHERE CounterRef=@OrderDocNum)
    SET @CardCode=(SELECT CardCode FROM ORDR WHERE DocNum=@OrderDocNum)
    SET @SubsistProportion=(SELECT U_SubsistProportion FROM OCRD WHERE CardCode=@CardCode)
    SET @SubsistProportion=@SubsistProportion/100
    SET @OrderDocTotal=(SELECT DocTotal FROM ORDR WHERE DocNum=@OrderDocNum)
    SET @CardGroupCode=(SELECT GroupCode FROM OCRD WHERE CardCode=@CardCode)  
    -- 判断条件为预收款总金额大于订单总额*预收款比例并且客户组类型为'部分预付款'  
    IF @OrderPaymentCount>=@SubsistProportion*@OrderDocTotal AND @CardGroupCode='103'
    BEGIN
        UPDATE ORDR SET Confirmed='Y' WHERE DocNum=@OrderDocNum
        --SELECT @error_message=@OrderDocNum+'->'
    END
    -- 判断条件为收款达到订单总额并且客户组类型为'现款现结'
    IF @OrderPaymentCount>=@OrderDocTotal AND @CardGroupCode='100'
    BEGIN
        UPDATE ORDR SET Confirmed='Y' WHERE DocNum=@OrderDocNum
        --SELECT @error_message=@OrderDocNum+'->'
    END
END  
  但是,在升级至2007之后,我们发现,在做收款时,这段代码始终没有执行,我们使用存储过程返回的对象代码变成了30,而30则应该是日记账分录的ObjectType.但是,通过我们对存储过程的全程跟踪,我们发现:
  2009-4-8 14:27:58;INFO;company is: B1Plus_Demo Message is: dbName:B1Plus_Demo oType:30 xType:A nofc:1 cols:TransId vals:5
2009-4-8 14:27:58;INFO;company is: B1Plus_Demo Message is: dbName:B1Plus_Demo oType:241 xType:A nofc:1 cols:CFTId vals:4
  当用户做收款时,在2007B版本中,会同时产生两条数据,第一条30是日记账分录,第二条241是2005B中所不具备的对象,在2007B中,表示现金流行项目,而在2005B中的24收款对象,则没有再使用.为此调整了代码,尽管最终也解决了问题,但仍然对此调整感到不解.新的代码如下:

Code
/*****************************************************
  预收款达到超过预收款比例的,自动更新为已批准。
  收款达到全款,自动更新为已批准。
  
  2009.04.08
  由于升级至2007,收款时对象不再使用24,而是使用30(日记
  账分录)和241(现金流相关行),因此调整代码.
*****************************************************/
DECLARE @JDTCode NVARCHAR(255)
DECLARE @TransType NVARCHAR(255)
DECLARE @PaymentCode NVARCHAR(255)
DECLARE @OrderDocNum NVARCHAR(255)
DECLARE @OrderPaymentCount NUMERIC(19,6)
DECLARE @SubsistProportion NUMERIC(19,6)
DECLARE @OrderDocTotal NUMERIC(19,6)
--select @error=1
select @error_message='@object_type: '+@object_type
IF @object_type='30' AND @transaction_type='A'
BEGIN
    SET @JDTCode=@list_of_cols_val_tab_del
    SET @TransType=(SELECT TransType FROM OJDT WHERE TransID=@JDTCode)
    IF(@TransType='24')
    BEGIN
        SET @PaymentCode=(SELECT BaseRef FROM OJDT WHERE TransID=@JDTCode)
        SET @OrderDocNum=(SELECT CounterRef FROM ORCT WHERE DocEntry=@PaymentCode)
        SET @OrderPaymentCount=(SELECT SUM(NoDocSum) AS Total FROM ORCT WHERE CounterRef=@OrderDocNum)
        SET @CardCode=(SELECT CardCode FROM ORDR WHERE DocNum=@OrderDocNum)
        SET @SubsistProportion=(SELECT U_SubsistProportion FROM OCRD WHERE CardCode=@CardCode)
        SET @SubsistProportion=@SubsistProportion/100
        SET @OrderDocTotal=(SELECT DocTotal FROM ORDR WHERE DocNum=@OrderDocNum)
        SET @CardGroupCode=(SELECT GroupCode FROM OCRD WHERE CardCode=@CardCode)  
        -- 判断条件为预收款总金额大于订单总额*预收款比例并且客户组类型为'部分预付款'  
        IF @OrderPaymentCount>=@SubsistProportion*@OrderDocTotal AND @CardGroupCode='103'
        BEGIN
            UPDATE ORDR SET Confirmed='Y' WHERE DocNum=@OrderDocNum
        END
        -- 判断条件为收款达到订单总额并且客户组类型为'现款现结'
        IF @OrderPaymentCount>=@OrderDocTotal AND @CardGroupCode='100'
        BEGIN
            UPDATE ORDR SET Confirmed='Y' WHERE DocNum=@OrderDocNum
        END
    END
END

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-116697-1-1.html 上篇帖子: sap 归档(ARCHIVE) 下篇帖子: SAP BW 邮件发送监控策略
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表