SBO中的一个极具震撼力的的流程控制功能详细分析.docx
- 文档编号:4081301
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:10
- 大小:20.99KB
SBO中的一个极具震撼力的的流程控制功能详细分析.docx
《SBO中的一个极具震撼力的的流程控制功能详细分析.docx》由会员分享,可在线阅读,更多相关《SBO中的一个极具震撼力的的流程控制功能详细分析.docx(10页珍藏版)》请在冰豆网上搜索。
SBO中的一个极具震撼力的的流程控制功能详细分析
SBO中的一个极具震撼力的的流程控制功能详细分析
2007-05-2819:
32:
43
在我开发的项目过程中,许多客户和顾咨询向我提出了许许多多的功能需求。
但我在分析研究了这些需求后发觉许多的需求我们顾咨询均能够解决。
专门是流程操纵方面的需求。
我把这方面的一些粗浅看法整理出来,供大伙儿分享。
一、各种顾咨询在项目实施过程中显现过的看是需要研发解决的需求
1、如何操纵不同的销售人员只能修改自己治理的客户的数据?
2、如何操纵不同的销售人员只能录入修改自己的销售订单?
3、如何给sbo的任何单据(我那个地点强调任何单据,包括销售订单,销售发货单、发票、采购订单、采购收货单、采购发票、财务凭证、库存转储等等)加上自己的逻辑验证操纵(例如不填某一个字段不用许sbo添加到数据库)
4、如何在各种单据或主数据添加修改过程中加上自己想要的功能?
往常这些需求一样差不多上顾咨询要求研发人员来参与协同工作来解决。
我们现在要讨论的确实是这些咨询题统统不再研发,顾咨询可轻松搞定。
所以这要求顾咨询要具备一些基础知识。
二、顾咨询要解决这些咨询题要具备的基础知识
1、sql的知识。
我一直认为,一个ERP软件顾咨询高手对SQL必须的差不多素养。
他能够让你为所欲为从那个充满金矿的ERP数据海洋里找到你想要的金子。
我认为有志于成为ERP软件顾咨询高手的朋友在此付出一点时刻和金钞票是绝对值得的!
它是打开我们懂得ERP软件内核的金钥匙,也是会让我们终生受益的一种技能。
不管我们从事的是哪一个ERP系统的顾咨询工作!
2、SBO对象的概念与规则。
所以,我觉得您在读这篇杂论前要有坚持读下去的意志。
尽管这看起来是有点枯燥乏味。
但这点乏味的知识会给您带来无穷的想象力!
SBO的DI对象,针对顾咨询通俗点简单点讲就像物料主数据、客户主数据、销售订单、采购订单等等这些SBO里的东东。
他们在SBO系统里都有一个编号,就像我们都有一个名字一样用于唯独识别。
例如物料主数据的编号是:
4。
具体清单如下:
MemberValue
oChartOfAccounts1
oBusinessPartners2
oBanks3
oItems4
oVatGroups5
oPriceLists6
oSpecialPrices7
oItemProperties8
oUsers12
oInvoices13
oCreditNotes14
oDeliveryNotes15
oReturns16
oOrders17
oPurchaseInvoices18
oPurchaseCreditNotes19
oPurchaseDeliveryNotes20
oPurchaseReturns21
oPurchaseOrders22
oQuotations23
oIncomingPayments24
oJournalVouchers28
oJournalEntries30
oStockTakings31
oContacts33
oCreditCards36
oCurrencyCodes37
oPaymentTermsTypes40
oBankPages42
oManufacturers43
oVendorPayments46
oLandedCostsCodes48
oShippingTypes49
oLengthMeasures50
oWeightMeasures51
oItemGroups52
oSalesPersons53
oCustomsGroups56
oChecksforPayment57
oInventoryGenEntry59
oInventoryGenExit60
oWarehouses64
oCommissionGroups65
oProductTrees66
oStockTransfer67
oWorkOrders68
oCreditPaymentMethods70
oCreditCardPayments71
oAlternateCatNum73
oBudget77
oBudgetDistribution78
oMessages81
oBudgetScenarios91
oSalesOpportunities97
oUserDefaultGroups93
oSalesStages101
oActivityTypes103
oActivityLocations104
oDrafts112
oDeductionTaxHierarchies116
oDeductionTaxGroups117
oAdditionalExpenses125
oSalesTaxAuthorities126
oSalesTaxAuthoritiesTypes127
oSalesTaxCodes128
oQueryCategories134
oFactoringIndicators138
oPaymentsDrafts140
oAccountSegmentations142
oAccountSegmentationCategories143
oWarehouseLocations144
oForms1099145
oInventoryCycles146
oWizardPaymentMethods147
oBPPriorities150
oDunningLetters151
oUserFields152
oUserTables153
oPickLists156
oPaymentRunExport158
oUserQueries160
oMaterialRevaluation162
oCorrectionPurchaseInvoice163
oCorrectionPurchaseInvoiceReversal164
oCorrectionInvoice165
oCorrectionInvoiceReversal166
oContractTemplates170
oEmployeesInfo171
oCustomerEquipmentCards176
oWithholdingTaxCodes178
oBillOfExchangeTransactions182
oKnowledgeBaseSolutions189
oServiceContracts190
oServiceCalls191
oUserKeys193
oQueue194
oSalesForecast198
oTerritories200
oIndustries201
oProductionOrders202
oPackagesTypes205
oUserObjectsMD206
oTeams211
oRelationships212
oUserPermissionTree214
oActivityStatus217
oChooseFromList218
oFormattedSearches219
oAttachments2221
oUserLanguages223
oMultiLanguageTranslations224
oDynamicSystemStrings229
oHouseBankAccounts231
oBusinessPlaces247
oLocalEra250
oSalesTaxInvoice280
oPurchaseTaxInvoice281
BoRecordset300
BoBridge305
oNotaFiscalUsage260
oNotaFiscalCFOP258
oNotaFiscalCST259
oClosingDateProcedure261
oBusinessPartnerGroups10
oBPFiscalRegistryID278
三、关键的储备过程语法:
大伙儿打开sqlserver的查询分析器,打开SBO的一个公司数据库,查找一个储备过程:
SBO_SP_TransactionNotification
它确实是让我们得以操纵SBO的魅力所在!
ALTERprocSBO_SP_TransactionNotification
@object_typenvarchar(25),--SBOObjectType
@transaction_typenchar
(1),--[A]dd,[U]pdate,[D]elete,[C]ancel,C[L]ose
@num_of_cols_in_keyint,
@list_of_key_cols_tab_delnvarchar(255),
@list_of_cols_val_tab_delnvarchar(255)
AS
begin
--Returnvalues
declare@errorint--Result(0fornoerror)
declare@error_messagenvarchar(200)--Errorstringtobedisplayed
select@error=0
select@error_message=N'Ok'
--------------------------------------------------------------------------------------------------------------------------------
--ADDYOURCODEHERE
--------------------------------------------------------------------------------------------------------------------------------
--Selectthereturnvalues
select@error,@error_message
end
那个储备过程的作用确实是任何一个SBO对象操作完程前都会调用它一次。
以便我们加入我们的逻辑操纵来实现一些客户的专门要求。
我们来看一下他的参数:
第一个参数:
@object_type这确实是我们上边讨论的SBO对象的编号。
每一个对象执行Add,[U]pdate,[D]elete,[C]ancel,C[L]ose操作时都会把操作的对象编号在那个参数中传入,我们只要判定该参数即可实现对不同的对象的不同的操纵。
我后边会给大伙儿提供一些练习。
第二个参数:
@transaction_typenchar
(1),--[A]dd,[U]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_cols_val_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个字符尽情地表述您的一肚子逻辑的讲明吧,幽默也好,冷冰冰也罢!
好了我们讲明过了那个储备过程的架构,那我接下来看看它的威力。
看看SBO的牛皮吹得力量能不能把鸡蛋吹成气球!
四、几个小例子
第一个例子:
我们就测试一下物料主数据,并看一下这几个参数。
在查询分析器打开该储备过程,让其处于编辑状态,要认真找,SBO的储备过程密密麻麻一大堆,看起来确实头疼,对一个顾咨询来讲。
但研发人员也许不如此认为。
研发人员对代码的好奇心永久是无止境的。
我就曾经把SBO的储备过程一个接一个的读了个遍。
管他加密的不加密的。
读了会有收成的!
呵呵。
也让咱看看SAP的牛人们使用什么样的代码来操作那个世界的企业用户的数据的!
ALTERprocSBO_SP_TransactionNotification
@object_typenvarchar(25),--SBOObjectType
@transaction_typenchar
(1),--[A]dd,[U]pdate,[D]elete,[C]ancel,C[L]ose
@num_of_cols_in_keyint,
@list_of_key_cols_tab_delnvarchar(255),
@list_of_cols_val_tab_delnvarchar(255)
AS
begin
--Returnvalues
declare@errorint--Result(0fornoerror)
declare@error_messagenvarchar(200)--Errorstringtobedisplayed
declare@aaanvarchar(100)--WLJtest
select@error=0
select@error_message=N'Ok'
--------------------------------------------------------------------------------------------------------------------------------
--ADDYOURCODEHERE
if@object_type='4'--items
begin
if@transaction_type='A'
begin
select@aaa=itemnamefromoitmwhereitemcode=@list_of_cols_val_tab_del
if@aaa='Test'
begin
set@error=1
set@error_message='物料主数据描述不能等于Test!
'+@aaa+'--'+@list_of_key_cols_tab_del+'--'+@list_of_cols_val_tab_del+'--'+cast(@num_of_cols_in_keyasnvarchar(20))
end
end
elseif@transaction_type='D'
begin
set@error=1
set@error_message='不承诺小小孩瞎删除!
'+@list_of_key_cols_tab_del+'--'+@list_of_cols_val_tab_del+'--'+cast(@num_of_cols_in_keyasnvarchar(20))
end
end
--------------------------------------------------------------------------------------------------------------------------------
--Selectthereturnvalues
select@error,@error_message
end
在那个例子里,我们第一对添加的物料主数据判定其描述是否等于“Test”如果是,那就不让它添加,关于物料主数据则不承诺删除。
大伙儿注意分析各参数的内容。
我在那个例子里把各个参数的值也传递到SBO的消息提示里边,如此大伙儿学习分析方便!
第二个例子:
上边的例子我们测试验证了主数据,我们下边来看一下单据。
ALTERprocSBO_SP_TransactionNotification
@object_typenvarchar(25),--SBOObjectType
@transaction_typenchar
(1),--[A]dd,[U]pdate,[D]elete,[C]ancel,C[L]ose
@num_of_cols_in_keyint,
@list_of_key_cols_tab_delnvarchar(255),
@list_of_cols_val_tab_delnvarchar(255)
AS
begin
--Returnvalues
declare@errorint--Result(0fornoerror)
declare@error_messagenvarchar(200)--Errorstringtobedisplayed
declare@aaanvarchar(100)--WLJtest
select@error=0
select@error_message=N'Ok'
--------------------------------------------------------------------------------------------------------------------------------
--ADDYOURCODEHERE
if@object_type='17'--salseorder
begin
if@transaction_type='A'
begin
set@error=1
set@error_message='添加出错提示!
'+@list_of_key_cols_tab_del+'--'+@list_of_cols_val_tab_del+'--'+cast(@num_of_cols_in_keyasnvarchar(20))
end
elseif@transaction_type='U'
begin
set@error=1
set@error_message='更新出错提示!
'+@list_of_key_cols_tab_del+'--'+@list_of_cols_val_tab_del+'--'+cast(@num_of_cols_in_keyasnvarchar(20))
end
end
--------------------------------------------------------------------------------------------------------------------------------
--Selectthereturnvalues
select@error,@error_message
end
所以那个例子我写得简单,只是测试在销售订单添加或更新的时候强不承诺添加或更新。
大伙儿能够按照自己的逻辑来实际处理。
我那个地点只是给大伙儿提供一个思路。
整合,所以我们实际工作中不可能只对一个对象操作,有可能对专门多对象同时验证,那就把上边的合起来即可,即能够对物料主数据操纵也能够对销售订单操纵。
我给大伙儿写了个小架构供大伙儿参考使用。
ALTERprocSBO_SP_TransactionNotification
@object_typenvarchar(25),--SBOObjectType
@transaction_typenchar
(1),--[A]dd,[U]pdate,[D]elete,[C]ancel,C[L]ose
@num_of_cols_in_keyint,
@list_of_key_cols_tab_delnvarchar(255),
@list_of_cols_val_tab_delnvarchar(255)
AS
begin
--Returnvalues
declare@errorint--Result(0fornoerror)
declare@error_messagenvarchar(200)--Errorstringtobedisplayed
select@error=0
select@error_message=N'Ok'
declare@aaanvarchar(100)
if@object_type='2'--BusinessPartners
begin
if@transaction_type='A'
begin
set@error=1
set@error_message='添加出错提示!
'+@list_of_key_cols_tab_del+'--'+@list_of_cols_val_tab_del+'--'+cast(@num_of_cols_in_keyasnvarchar(20))
end
end
elseif@object_type='4'--items
begin
if@transaction_type='A'
begin
select@aaa=itemnamefromoitmwhereitemcode=@list_of_cols_val_tab_del
if@aaa='Test'
begin
set@error=1
set@error_message='添加出错提示!
'+@aaa+'--'+@list_of_key_cols_tab_del+'--'+@list_of_cols_val_tab_del+'--'+cast(@num_of_cols_in_keyasn
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SBO 中的 一个 震撼力 流程 控制 功能 详细 分析