【博主SAP/ABAP交流群
53144545
】
之前做了一个
BP
模块的项目,
BP
即业务伙伴(
Business Partner
),t-code
是
BP
。该模块的主要功能是处理和保存业务伙伴信息,相对于SD等模块,没有很多业务流程,但在这个模块里运用了两种技术,
Business Data Toolset(
BDT)和
XO Framework(
XO),这两种技术包含了比较先进的软件设计思想,这篇文章的目的是对
BDT
和
XO的运用作一个归纳总结。
BDT
和
XO简介,这里不作详细解释,只是按照个人理解把要点说一下。
BDT可以理解为一种屏幕增强技术(只针对
Dynpro
),在传统模块里,屏幕增强只能在
SAP
预留的地方,而在
BDT
架构的模块里,每个屏幕都被分割成一个一个的子屏幕,每个子屏幕都可以通过后台配置替换成自定义的屏幕,当然相关的开发还是有不少,比如自定义屏幕和原来的标准屏幕的数据交互,但总体来说还是可以达到屏幕任意增强的效果。BDT有一系列相关的开发
t-code
,并且不同模块下
BDT的
t-code
都不同,比如
BUS3是
BP
模块
View
的后台配置。
XO是一种包含面向对象思想的开发框架(语法也都是
OO
的),在XO
架构里,应用层被分为
BO
(Business Object
),SO
(Segment Object
)和MO
(Memory Object
)。
BO
是业务对象,在
BP
模块下,一个BO就是一个
BP;SO
是块对象,比如银行信息,地址信息和身份信息等都是块对象,在业务上都是BO
的一部分;MO
是缓存对象(数据库表),每个
MO
都是对应着一张数据库表,每个MO
都属于一个
SO
,比如银行账号表和信用卡表都是银行信息的一部分。关系结构上,一个
BO
包含多个
SO
,一个
SO
包含多个
MO
。
XO的t-code
是
XO80。
BDT是如何结合
XO使用的。
BDT
是一个完整的开发框架,它包含了屏幕显示和数据处理这两块功能,而XO
只是数据处理。对于标准功能,
BDT已经有了固定的数据处理流程,比如业务逻辑校验和数据增改删等,这部分基本无法用
XO来代替改写了,而对于新开发的功能,比如自定义屏幕的数据存储逻辑和自定义逻辑校验,则可以使用
XO来代替原来
BDT
的数据处理方法。
使用XO
的优点。
之前说过,BDT是一个完整的开发框架,如果结合
XO
使用,无疑会增加开发难度,但是使用
XO有其优势所在,其中的一个比较小的好处是
XO里有一些方法是针对
BDT
开发的,比如
XO的
PAI
和
PBO方法,在自定义屏幕里用这些方法代替
BDT里的某些事件,开发起来会更方便。然后更大的一个好处是,XO起到了应用层统一的作用。应该有不少人遇到过此类问题,比如对屏幕上某个功能做逻辑增强,会不会对
BAPI
也生效?这个就涉及到软件设计了,拿
BP模块下的
BDT来说,
BDT屏幕和
BAPI的逻辑处理是分开的,也就是说是两套处理逻辑,如果在BDT某处作了个功能增强,就要相应的在
BAPI
这里也作相同的增强,才能保证屏幕输入和
BAPI
处理结果相同。而引入XO
后,可以把相关的一些校验逻辑都写在
XO
里,然后
BDT
和
BAPI
都调用
XO
,这样相同的逻辑只需要写一遍。实际上数据来源是多种多样的,比如前台(
GUI)屏幕输入,运行SE37输入参数,上传文件等,而且现在
SAP
也向Web
和多终端发展(比如
UI5
),所以应用层统一的思想是非常重要的。