BW顾问进阶:BW建模例程-开始,转换,结束例程详解,使用套路,实战场景示例

本文不涉及具体abap语法,只是讲个大概,abap上B站看看视频,足以应对BW大多数使用场景了

(后面有新的经验会慢慢在这个里面补充,有兴趣可以收藏一下)

转换过程:BW的转换过程,可以理解成一系列存储过程,数据从数据源或是来源模型,经过DTP执行触发,会经历如下过程。

数据来源(数据源或来源模型)---执行DTP(触发上数,DTP可设置筛选条件)---source_package(开始例程处理source_package数据)---转换---result_packge(结束例程处理result_packge数据)---转换结束

场景解说及示例:

开始例程

执行次数:转换开始时,执行一次

使用场景:

1.用于对source_package的过滤,减少source_package的数据量,提高之后转换,结束例程处理的效率。

2.逻辑较为复杂,需要先在source_package对来源数据进行逻辑处理,再进入之后的转换,结束例程处理。

示例:

删除不符合条件的数据,进行过滤,在开始例程里更为灵活,可对筛选条件进行一些逻辑判断

 一般套路:1.定义内表,取数据库表需要用到的数据插入内表

                   2.套用loop at source_package assigning <SOURCE_FIELDS>.

                             。。。。。。。。

                             endloop.

                     进行逻辑判断,处理,能应付百分之八九十场景

转换例程

执行次数:一条条执行,有多少数据执行多少次

使用场景:简单的逻辑处理,如日期的截取,加减乘除等

(本人习惯,较为复杂的在开始或结束例程处理,转换例程是多次执行,千万不要涉及select数据库表等操作,会把数据库跑死)

示例:

如图,已经是我在转换过程中做的比较复杂的逻辑了,对单条数据处理判断取值 

结束例程

执行次数:转换结束时,执行一次

使用场景:个人习惯,如果逻辑在开始例程和结束例程里做,效率一样,都在结束例程里处理复杂逻辑,因为是经历过开始例程,转换例程的,数据取得更方便,处理复杂逻辑更顺手。

示例:

使用套路跟开始例程差不多,就是指针换成RESULT_PACKAGE,一样能应付百分之八九十场景

注意点及个人经验:

1.千万别在转换例程select 数据库表,不然容易丢工作!因为转换例程会执行多次的。读个大表随随便便跑死生产环境。

2.做过滤,在结束例程也不是不可以,但多在开始例程处理,会提高转换效率

3.能用二分法就用二分法,性能提高的不是一点点

4.如果不是全量上数,写例程读取数据,增量可能会有问题,要多考虑,是不是可以做到主数据里,而不是用例程读表。

以上,大多个人经验,如有问题欢迎纠错。


版权声明:本文为weixin_45362398原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。