解析SBO单据对象

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介:
在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,如需转载请自行联系原作者
相关文章
|
1月前
|
存储 编译器 C语言
C++类与对象深度解析(一):从抽象到实践的全面入门指南
C++类与对象深度解析(一):从抽象到实践的全面入门指南
49 8
|
1月前
|
Python
深入解析 Python 中的对象创建与初始化:__new__ 与 __init__ 方法
深入解析 Python 中的对象创建与初始化:__new__ 与 __init__ 方法
19 1
|
2月前
|
设计模式 存储 人工智能
深度解析Unity游戏开发:从零构建可扩展与可维护的游戏架构,让你的游戏项目在模块化设计、脚本对象运用及状态模式处理中焕发新生,实现高效迭代与团队协作的完美平衡之路
【9月更文挑战第1天】游戏开发中的架构设计是项目成功的关键。良好的架构能提升开发效率并确保项目的长期可维护性和可扩展性。在使用Unity引擎时,合理的架构尤为重要。本文探讨了如何在Unity中实现可扩展且易维护的游戏架构,包括模块化设计、使用脚本对象管理数据、应用设计模式(如状态模式)及采用MVC/MVVM架构模式。通过这些方法,可以显著提高开发效率和游戏质量。例如,模块化设计将游戏拆分为独立模块。
185 3
|
2月前
|
JavaScript 前端开发 API
Javaweb之javascript的BOM对象的详细解析
BOM为Web开发提供了强大的API,允许开发者与浏览器进行深入的交互。合理使用BOM中的对象和方法,可以极大地增强Web应用的功能性和用户体验。需要注意的是,BOM的某些特征可能会在不同浏览器中表现不一致,因此在开发过程中需要进行仔细的测试和兼容性处理。通过掌握BOM,开发者能够制作出更丰富、更动态、更交互性的JavaWeb应用。
31 1
|
3月前
|
存储 JavaScript 前端开发
一文带你深度解析:JavaScript中对象与数组的威力究竟有多大?
一文带你深度解析:JavaScript中对象与数组的威力究竟有多大?
|
6月前
|
存储 算法 Java
滚雪球学Java(42):探索对象的奥秘:解析Java中的Object类
【5月更文挑战第17天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
55 2
滚雪球学Java(42):探索对象的奥秘:解析Java中的Object类
|
5月前
|
消息中间件 监控 安全
深入解析Linux命令ipcmk:IPC对象管理新视角
`ipcmk`非标准Linux命令,假设的IPC对象创建工具,用于演示如何管理消息队列、信号量和共享内存。虽无此命令,但理解其概念有助于掌握IPC管理。例如,创建命名消息队列`my_mq`,最大1000消息,可模拟使用`ipcmk -t mq -n my_mq -q 1000`。实际操作中,应根据需求选择合适IPC机制,设置安全权限,监控使用并及时清理。
|
5月前
|
存储 缓存 Java
Java对象内存布局深度解析
Java对象内存布局深度解析
|
5月前
|
缓存 Java 数据库连接
解析Hibernate与JPA:Java对象的数据库化之旅
【6月更文挑战第25天】在Java企业开发中,Hibernate和JPA提供优雅的数据持久化方案。Hibernate是JPA规范的强大ORM实现,简化对象与数据库映射。配置环境后,通过@Entity注解定义实体类映射表,如`User`类映射"users"表。利用JPA的EntityManager执行查询和更新,如JPQL查询及对象更新。事务管理和性能优化是关键,确保数据完整性和应用性能。本文揭示了Hibernate与JPA的最佳实践,助开发者从容应对数据持久化。
46 0
|
6月前
|
SQL Java 数据库连接
深度解析MyBatis核心:探寻其核心对象的精妙设计
深度解析MyBatis核心:探寻其核心对象的精妙设计
105 1
深度解析MyBatis核心:探寻其核心对象的精妙设计

推荐镜像

更多
下一篇
无影云桌面