应付账款业务单位逻辑 2 - 专家例程

昨天说了再往下来看,其实有一点我觉得不应该。
为啥在最底层数据获取那里搞了这么多逻辑。

不合理啊。
不管了,下一层,数据准备层,被弄了个export routine。

例程就是用来帮助定义复杂的转换规则的。
从下面这个图就一眼看出来了。
在这里插入图片描述
其实例程就是本地的ABAP类,包括预定义的定义区域和实现区域。
类这个东西么,我都忘了哈哈哈。反正是有定义,有方法,然后有什么global定义,private定义啥的。C语言的时候学的。类的实例是对象。

这个ABAP的类么,就那么个意思。装了一些定义的数据类型,还有操作的传值的函数。就是说我有这些东西要用,然后要这么个用法。

入栈和出栈的参数类型,例程(ABAP方法)的文字说明都存储在定义区域。实体在实现区域。

开始例程

开始例程呢,是转换开始的时候,每个数据包都走一遍开始例程。开始历程用跟source的结构一样的表来存输入输出参数。这里又有一个我不能明晰的概念:结构和表。。。
反正表是照着这个结构来定义的。
开始例程就是用来执行初步的计算的,一般来改掉这个包里的数据,或者删掉一些数据。以遍后续执行其他操作。

字段例程

这个就是对于关键值或者特性字段,直接在转换上定义一个routine,输入输出值得在selected fields里面先加上。这个我之前写过。

结束例程

这个和开始差不多,也会有个跟target的结构一样的表,来储存输入输出参数,一般都是后处理了。删除不需要的数据,执行数据检查,或者和前一篇一样,从别的表join下数据来。

专家例程

特殊情况下适用的。标准例程如果可以实现,干啥要用专家例程。
有了专家例程,就看不到转换规则拉的线了,就是都是你写的。系统会给你删掉你的线。
在这里插入图片描述
如果创建转换后,你选了export routine,然后就会跳出来个对话框,告诉你是否要删掉转换,就是默认连好的线。
在这里插入图片描述
进到这个expert routine我就懵了,这是啥玩意啊。啥也没有就直接procedure了。
在这里插入图片描述
这个Procedure我知道是程序的意思。怎么直接类进来就给我展示程序了呢,不应该是一大串代码么,然后包括定义和实现么?

procedure

procedure是用脚本写的一个小程序,一般是SQL脚本?我真是不知道。
我依稀记得有个stored procedure,是个存储结构,也就是个可以复用的SQL脚本。保存在数据字典里,那不就跟结构很像,不行了,我脑子不够用了,要晕了。

那这个procedure是啥?是HANA数据库的小过程?我真是不知道该怎么翻译这个词。

AMDP

我刚才看到这个词,是ABAP managed database procedure.
ABAP来管的,管个啥啊?是存在ABAP repository里,并且由ABAP传输来传输的。所以叫个AMDP。
具体咱也不知道,说啥就是啥吧。
反正意思就是,这个AMDP的实现呢,是以HANA SQL 脚本语言来写的,在HANA数据库上执行的。
然后是HANA数据库上推荐的ABAP代码优化模式之一,下推到HANA。
说的牛哄哄的。

那它具体咋实现呢?原话是这么说的:
AMDP is implemented as method of a global ABAP class.

嗯,行吧。
可是我还是不知道这玩意怎么弄的。

AMDP开发环境

这个开发,我真是以前没听过。唉,经验少。
现在我知道了,这个只在基于Eclipse的开发环境中才能开发,不是在se24那边弄。那就是在HANA studio咯,我来看看:
在这里插入图片描述
说是这个ABAP Development Tools.
我看了下我装了这个。
在HANA Studio里面还真能打开。
在这里插入图片描述
但是这个在se24里面也是能看见的。打开了也就是这个样子,和双击专家例程一样的。
在这里插入图片描述
根据之前那段英文,就是说AMDP是作为ABAP global class的一个方法来实现的。那这个global class我没看见啊。代码里面我只看到了一个interfaces 我不懂是啥玩意的。
而且上面这个图,也是这个接口 。
在这里插入图片描述
这个接口和类又是啥意思啊?

这个global class,哦~难道他俩是一个意思?Class/Interface 这个标题这里,难道暗示了这个?
这个类,包含了这个接口 : IF_AMDP_MARKER_HDB 这是AMDP类?

行吧,这个就是AMDP类。
来看看method:
在这里插入图片描述
这里也还挺规范的,写了谁开发的,开发的功能。
BY Database Procedure就说明了是个AMDP method
FOR 说明了AMDP运行的数据库系统,HDB就是HANA database
LANGUAGE就说明了数据库执行语言,这里是SQL
OPTIONS 只能READ-ONLY。数据库表给存储过程就只能读。
有时候还有个USING 就是用的哪个透明表或数据字典视图。
在这里插入图片描述
大型SQL语句现场。数据库是HANA Database。
这个上层实现的逻辑呢,是因为它这个值有两个currency货币。
一个是本地货币,一个是凭证货币。
它先把值用两个select语句分隔开,分别配上不同的货币单位。
然后再union下。
在这里插入图片描述

但是看了这个程序,我还是不懂。。。😂
我不懂它这个逻辑,我就只看到把所有的source分成货币类型是00和10的两部分,然后再Union。
这是什么鬼逻辑。

不管了,我来执行下看看:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
乱写两条
在这里插入图片描述
执行一下
在这里插入图片描述
得到四条
在这里插入图片描述
行吧,就是这个逻辑😂在这里插入图片描述
后续有空再看。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaomici

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值