AMDP开发-概述
一、AMDP简介
1、用于管理数据库的存储过程,有效的整合ABAP Programing language,development tools,and ABAP Lifecycle Management(ABAP生命周期管理)。
2、主要通过ABAP里面的ABAP Class和ABAP interface来实现,而其中的数据库存储过程和参数是通过ABAP Methods来实现的。
3、处理逻辑则是通过SQLScript来实现的,会生成到底层的hana数据库的存储过程。
二、开发环境
1、存储过程的开发环境,一般也就是ABAP的开发用户就可以了,并不需要HAHA数据的用户,然后AMDP的框架负责去与底层数据去做相应的连接和处理,他可以自动去创建相应的数据库的存储过程。同时里面的方法也有相应的语法的检查,然后里面的定义的参数可以使用ABAP里面的类型,也可以使用DDIC里面的数据类型。
2、集成进了ABAP的一个生命周期,他可以和其他的ABAP对象很容易的做一个同步已经传输相应的对象到其他系统里面。也可以做一些增强,可以在相应的类里面需要使用相应的接口(if_amdp_marker_hdb),说明这个类是基于AMDP的一个类。
3、它支持的VULUE、IMPORTING、EXPORTING、CHANGING
等相应的参数。在写方法时,还需要使用一个特定的关键词,如BY DATABASE PROCEDURE FOR HDB LANGUAGE SQLSCRIPT.如果在方法中使用READ-ONLY告诉我们这个方法只用去读取数据。
4、在相应的AMDP方法被执行的时候,如果相应的语法或者数据问题等,会有相应的错误,错误的类如下
5、处理逻辑在METHOD和ENDMETHOD之间写对应的逻辑,在ABAP中定义和使用的方法入下
6、注意咋AMDP中的SQL需要写集团这个参数,因为在AMDP中不会自动做集团的区分。同时在调用这个类方法时需要使用try… catch…endtry来捕获这个的异常。在AMDP中也可以做debug来测试数据。
7、在AMDP中一个特定的方法,用于处理选择屏幕上的select-options,有一个CL_SHDB_SELTAB=>COMBINE_SELTABS将这个添加生成一个字符串,然后用在sql中用在where条件中
8、在AMDP中的BADI不支持filters,同时在使用AMDP的时候一定要勾上BADI的选项