大家打开sqlserver的查询分析器,打开SBO的一个公司数据库,查找一个存储过程:SBO_SP_TransactionNotification 
它就是让我们得以控制SBO的魅力所在!
ALTER  proc SBO_SP_TransactionNotification 
@object_type nvarchar(25),                                 -- SBO Object Type
@transaction_type nchar(1),                        -- [A]dd, pdate, [D]elete, [C]ancel, C[L]ose
@num_of_cols_in_key int,
@list_of_key_cols_tab_del nvarchar(255),
@list_of_cols_val_tab_del nvarchar(255)
AS
begin
-- Return values
declare @error  int                                -- Result (0 for no error)
declare @error_message nvarchar (200)                 -- Error string to be displayed
select @error = 0
select @error_message = N'Ok'
--------------------------------------------------------------------------------------------------------------------------------
--        ADD        YOUR        CODE        HERE
--------------------------------------------------------------------------------------------------------------------------------
-- Select the return values
select @error, @error_message
end
这个存储过程的作用就是任何一个SBO对象操作完程前都会调用它一次。以便我们加入我们的逻辑控制来实现一些客户的特殊要求。
我们来看一下他的参数:
第一个参数:@object_type 是SBO对象的编号。如何获得这个编号呢?进入SBO系统,单击“视图”-》“系统信息”,然后“主菜单”-》“模块”-》打开你想用的模块,例如“收货采购订单”,等等。以“收货采购订单”为例,将鼠标放到供应商的输入框,从SBO消息栏里获取信息“Form=143,Item=4,Variable=1,OPDN,CardCode”,其中OPDN就是主表,启动查询分析器,在查询里输入"select ObjType from OPDN",得到的值就是@object_type,本例中是20,至此得到SBO对象的编号。 每一个对象执行Add, pdate, [D]elete, [C]ancel, C[L]ose操作时都会把操作的对象编号在这个参数中传入,我们只要判断该参数即可实现对不同的对象的不同的控制。我后边会给大家提供一些练习。
第二个参数:@transaction_type nchar(1),                        -- [A]dd, pdate, [D]elete, [C]ancel, C[L]ose
当在SBO系统中执行了添加操作,例如添加了一个物料主数据,@object_type的值就等于4,@transaction_type的值就等于'A' 。
第三个参数:@num_of_cols_in_key,对象关键字段的数目。例如物料主数据的关键字段是物料编码,他只有一个关键字,所以该值等于1。
第四个参数:@list_of_key_cols_tab_del  代表该对象的关键字段的字段名字,例如物料主数据就是Itemcode,单据就是Docentry.
第五个参数:@list_of_key_cols_tab_del  代表关键字段的值。这时已非常重要的参数。我再次说明一点,经过我测试,SBO的对象再添加修改时会现在数据库里操作完成,然后调用该存储过程。所以我们就靠这个字段来作为验证控制我们的逻辑的入口之一了。
   在以上介绍的五个参数之中,最重要的就是@object_type,@transaction_type,@list_of_cols_val_tab_del这三个参数。大家一定要明白他们的含义!
内部的两个重要控制参数:
@error ,好了,揭示了这么多,就数他最重要了。计算机世界的0和1就让他体现的淋漓尽致了。当我么给它赋值为零的时候,SBO的流程继续运行。一旦我们给他赋值为1,好了,效果出现了,你在sbo中操作的对象就再也不能完成它的操作了!牛!就是这个牛的地方可以让我们收拾SBO任何的对象,可以按客户的心花让SBO尽情的怒放。
当然我们经过我们自己的逻辑,把 @error =1,不然SBO按自己的逻辑继续下去了,总也得在SBO中给出个提示把,就像B1的状态栏的提示一样,那您就要动用@error_message这个参数了。200个字符尽情地表述您的一肚子逻辑的解释吧,幽默也好,冷冰冰也罢!