目标:
    库房管理人员只能依据采购订单和退货单才能办理收货。
 
具体操作:
    打开“收货采购订单”的界面后,选择好供应商后,必须点选“复制从”,然后选择“采购订单”或“退货”等。
    如果通过tab键调出物料清单,选择后,输入数量,然后按“添加”,提示“添加后不能修改”,然后在左下角的SAP消息栏提示“必须基于采购订单或退货单才能收货!”,不能成功添加。
 
实现方法:
打开sqlserver的查询分析器,打开SBO的一个公司数据库,查找一个存储过程:SBO_SP_TransactionNotification。将里面的内容换成:
 
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'
declare @aaa nvarchar (200)                  --用于存放判断字段baseline
--------------------------------------------------------------------------------------------------------------------------------
--        ADD        YOUR        CODE        HERE
if  @object_type='20'--ePurchaseDeliveryNote
begin
    if @transaction_type='A'  
    begin
      select @aaa =baseline from Pdn1 where DocEntry = @list_of_cols_val_tab_del

      if @aaa is Null
      begin
      set @error=1
      set @error_message='必须基于采购订单或退货单才能收货!'
      end
    end
 end
 
--------------------------------------------------------------------------------------------------------------------------------
-- Select the return values
select @error, @error_message
end
 
无需写脚本。具体操作如下:
打开收货采购,然后打开表格设置。
然后把物料编号,和物料描述的活动都取消。
录入人员就不能通过tab选择物料,只能选择复制从。