天天看点

解析SBO单据对象

在SBO中,有一类业务对象特别引人注目,也是SBO的核心所在,就是Document对象,我称之为单据对象(可能同主流翻译称呼不相符,但是我没有看到类似的资料,好像称为凭证,也不算准确吧,在此就将就用此“单据”称谓吧)。

单据对象包括:销售发票(OINV)、销售贷项凭证(ORIN)、销售交货(ODLN)、销售退货(ORDN)、销售订单(ORDR)、采购发票(OPCH)、销售贷项凭证(ORPC)、采购交货(OPDN)、采购退货(ORPD)、采购订单(OPOR)、销售报价(OQUT)以及单据修正等。从上述业务对象看,单据对象包含了SBO的核心业务,所以研究单据对象的结构对于SBO维护与开发来说是必需的。

经过对单据业务服务的跟踪和分析,我们发现,单据对象一般由四部分组成:单据信息部分、单据项目列表、业务附加费列表以及业务代扣税列表。

单据信息部分是主体部分,记录业务开展时刻的周围环境信息,比如单据编号(docEntry)、单据号码(docNum)、业务日期(docDate)、业务伙伴(cardCode、cardName、Address)、业务类型(objType)、单据币类金额、付款方式等等,单据信息部分对应的数据表多以O开头,比如销售发票(OINV)、销售贷项凭证(ORIN)、销售交货(ODLN)、销售退货(ORDN)、销售订单(ORDR)、采购发票(OPCH)、销售贷项凭证(ORPC)、采购交货(OPDN)、采购退货(ORPD)、采购订单(OPOR)、销售报价(OQUT)。单据信息表示单据对象的主体部分,单据编号(docEntry)是提领单据项目、附加费和代扣税列表的主键,一般的,在单据业务提交时通过单据序列号业务对象获得指定单据业务对应的单据编号,作为单据信息表、单据项目数据表、业务附加费数据表和业务代扣税业务表的关联主键值。

单据项目列表,在SAP中称为凭证行,描述了单据业务对象的项目清单,包括了每个项目在单据中所载的位置(行号:LineNum)、项目代码(ItemCode)、项目名称(Dcription)、数量(Quantity)、价格(Price)、金额(LineTotal)、仓库(whsCode)、优惠、货币、币类价值、项目包装等物理信息等信息,单据项目列表的数据表名称一般同单据信息数据表名称很关联,往往去掉主表的第一个字母,在后面的加上一个1,比如:销售发票(INV1)、销售贷项凭证(RIN1)、销售交货(DLN1)、销售退货(RDN1)、销售订单(RDR1)、采购发票(PCH1)、销售贷项凭证(RPC1)、采购交货(PDN1)、采购退货(RPD1)、采购订单(POR1)、销售报价(QUT1)。单据项目列表用于描述单据业务对应的项目清单。

很多时候,单据项目列表对应单据信息表就算完事,事实上,很多供应链管理软件也是这么设计的。但是在SBO中对每个单据的项目还有更加细致的描述,包括:单据项目附加费信息、单据项目的代扣税信息、单据项目的序列号信息和单据项目的批号信息。

这很好理解,既然单据对象描述了单据附加费和单据代扣税,那么这些费用和税费是如何分摊的,也应该有所描述。而这些描述最恰当的方式就是对应每种单据项目记录其对应的附加费和代扣税,单据项目的附加费、代扣税行汇总的和就应该是单据对应的附加费和代扣税。需要指出,单据业务中的一个项目可能对应着多种类型的附加费和代扣税,比如附加费可能包括:运费、管理费、装卸费、送货上门费等等多种不同的费用类型。这些深入的单据项目信息的确需要记录,这就是为什么在每个单据项目要对应着附加费和代扣税的明细记录,而单据项目同单据项目附加费和代扣税之间又应该通过单据编号(docEntry)和物料编号(ItemCode)复合主键关联。单据项目附加费和代扣税数据表名很类似单据项目表(通常是单据信息表后面加上一个序号数字,或者延续单据项目表的序号累加)。

对于那些商品采用了序列号管理的业务,为了结算、商品管理上的需要,当然需要记录每种单据业务中每个项目对应商品的序列号或者批号,这样才有可能进行更为精细更为周到的批号和序列号管理,比如对于食品、商品、药品之类的对于批号比较敏感的商品,比如对手机、计算机之类的对序列号比较敏感的数据,都应该这样细致的管理。商品/物料的序列号和批号的管理分别对应数据表OSRI、SRI1和OIBT、IBT1,前者记录了物料序列号或者批号的整体信息(多是在商品入库时声称:如订货入库、调拨入库、退货入库等),包括所在仓位、业务伙伴、当前状态等信息;后者记录了物料序列号和批号的交易信息,类似物料发生变化的交易日志(入、出、退、转移等)。

通过对单据项目列表的分析,就很容易理解单据附加费列表和业务代扣税项目了,也就不再赘述了。

新增、修改单据业务到底需要通过怎样的结构来进行处理呢,本人编写的SBO 2005B维护和开发助手在“业务对象的XML构架”和“DI服务调用的XML构架”中给出了结构描述。

本文转自foresun  51CTO博客,原文链接:http://blog.51cto.com/foresun/40496,如需转载请自行联系原作者

继续阅读