源 数据带来的一些信息,有些我们不要。有些要和其他数据结合。
这里就要根据语义来做转换。转换和DTP是成对出现的。从源到目标的转换,基本是这样的:
中间的例程就是本地的ABAP类,预定义了定义区和实现区。生成历程后,代码就作为方法嵌入到转换程序的本地类里 。
对于开始例程而言,都是对于每个数据包来执行的。
把过程分解开来,就是开始历程它会有个数据源结构的表,先把数据放到内存里,然后进行处理。
对于这个专家历程,一般都是临时使用。如果有标准例程能实现,咱也不用专家例程 ,毕竟要写message发送给monitor。还怪麻烦的。而且你建专家例程的话,你之前拖拉的转换规则就被系统删除了。专家例程里面的源的导航属性你用不了。
对于DSO的目标,转换中的值数据默认是覆盖的聚集类型 。也就是MOVE。
这个如果要变成累加得自己改。
开始例程的参数
开始例程就是预处理,删掉一些不用的数据啦。
开始例程的参数如下:
importing: request: 请求号
datapakid: 包号
exporting:monitor: 用户定义的监控表 ,由行结构MONITOR_REC填充
changing:SOURCE_PACKAGE:这个是例程的inbound字段结构。
rasing:CX_RSROUT_ABORT:如果一个这个类型的例外被触发,系统会终结整个加载进程。终止的请求会在监控器里被高亮显示,系统停止处理当前包。这样好看具体的错误。
结束例程的参数
结束例程处理转换后的数据。删掉不再需要更新的数据。。或对数据值进行填充更改。
importing: request: 请求号
datapakid: 包号
exporting:monitor: 用户定义的监控表 ,由行结构MONITOR_REC填充
changing:RESULT_PACKAGE:这个是转换处理过后的数据。
rasing:CX_RSROUT_ABORT:如果一个这个类型的例外被触发,系统会终结整个加载进程。终止的请求会在监控器里被高亮显示,系统停止处理当前包。这样好看具体的错误。
未完,待续