虽然SAP B1有强大的存储过程控制功能,但经测试在单据打印时是无法触发存储过程的,由于客户强烈要求无奈之下用了触发器来完成该功能(据说添加触发器在升级系统时会报错,所以升级时可能需要将触发器删掉)。

系统配置
1、添加自定义字段:U_PrintNum 打印次数;
2、添加用户界面模板(9.1以后新功能)将“打印次数”移至单据中并将其设置为不可编辑(以防用户手动修改打印次数的值)。

添加触发器

CREATE TRIGGER ORDR_COMF_NUM ON ORDR /*向ORDR表添加触发器,如需向其他单据添加“打印次数显示”功能请修改ORDR至对应的表名即可。/

AFTER UPDATE

AS

BEGIN
    /*本触发器用于记录销售订单打印次数,
      要使用此功能需先添加自定义字段“U_PrintNum”用来记录单据打印次数
      当[Printed]的值更新为“Y”时
      更新销售订单上自定义字段“打印次数”加一,
      [Printed]的值设置为“N”
    */
    IF UPDATE([Printed])    /*如果更新的是Printed字段*/
        BEGIN
            UPDATE  T0
            SET     T0.U_PrintNum = ISNULL(T0.U_PrintNum, 0) + 1 ,
                    T0.Printed = 'N'
            FROM    ORDR T0
            WHERE   T0.DocEntry = ( SELECT  DocEntry
                                    FROM    Inserted    /*Inserted 表是SQL内部表用于存储INSERT和UPDATE语句所影响的行的副本。*/
                                  )
        END
END

效果图如下:
WechatIMG348.png

发表评论