这里我们做ADT来创建
场景介绍:把hana中的一个底表,创建成ABAP的 CDS VIEW ,在把CDS VIEW 生成 OData 服务。
一、创建CDS Table Function
红框内根据自身情况填写
选择 Define Table Function with Parameters 创建 Data Definition
完整代码,定义 结构
@EndUserText.label: '财务报表生成ODATA'
define table function ZDDF_AUTHDATA
returns {MANDT: abap.clnt;GSMC : abap.char( 400 );GSDM : abap.char( 400 );CWDATE: abap.dats;ZYYWLR: abap.fltp;JZCSYL: abap.fltp;KCFJCX: abap.fltp;ZYYWSRZZ: abap.fltp;JLRZZL: abap.fltp;JZCZZL: abap.fltp;YSZKZZL: abap.fltp;YSZKZZTS:abap.fltp;CHZZTS:abap.fltp;GDZCZZL: abap.fltp;
}
implemented by method zamdp_authdata_002=>GET_ENTITY_SET;
二、创建AMDP
完整代码,定义取数逻辑, return 后边跟的sql 代码 是查询的 HANA 数据库对象表,
注意 AMDT中的 zamdp_authdata_002 是上一步中定义过关联
implemented by method zamdp_authdata_002=>GET_ENTITY_SET;
class zamdp_authdata_002 definitionpublicfinalcreate public .public section.interfaces: IF_AMDP_MARKER_HDB.class-methods:GET_ENTITY_SETfor table function ZDDF_AUTHDATA.protected section.private section.
endclass.class zamdp_authdata_002 implementation.
method GET_ENTITY_SET by database functionfor hdb language sqlscriptoptions read-only.returnSELECT'100' as MANDT,"GSMC" AS GSMC,"GSDM" AS GSDM,TO_VARCHAR ("CWDATE", 'YYYYMMDD') AS CWDATE,"ZYYWLR","JZCSYL","KCFJCX","ZYYWSRZZ","JLRZZL","JZCZZL","YSZKZZL","YSZKZZTS","CHZZTS","GDZCZZL"FROM "_SYS_BIC"."ZAUTHDATA001";endmethod.
endclass.
三、创建 CDS View Entity
完整代码 注意:@OData.publish: true 这行是标记该CDS VIEW 可发布成OData服务,
这里注意 必须要指定 KEY ,不然,激活会不成功。
@EndUserText.label: 'CDS View Entity'
@OData.publish: true
define view entity ZDD_AUTHDATA as
select from ZDDF_AUTHDATA as AUT
{@EndUserText.label: '公司名称'key AUT.GSMC,@EndUserText.label: '公司代码'key AUT.GSDM,@EndUserText.label: '报表日期'key AUT.CWDATE,@EndUserText.label: '主营业务利润(元)'AUT.ZYYWLR,@EndUserText.label: '净资产收益率(%)'AUT.JZCSYL,@EndUserText.label: '扣除非经常性损益后的净利润(元)'AUT.KCFJCX,@EndUserText.label: '主营业务收入增长率(%)'AUT.ZYYWSRZZ,@EndUserText.label: '净利润增长率(%)'AUT.JLRZZL,@EndUserText.label: '净资产增长率(%)'AUT.JZCZZL,@EndUserText.label: '应收账款周转率(次)'AUT.YSZKZZL,@EndUserText.label: '应收账款周转天数(天)'AUT.YSZKZZTS,@EndUserText.label: '存货周转天数(天)'AUT.CHZZTS,@EndUserText.label: '固定资产周转率(次)'AUT.GDZCZZL
}
四、管理服务(添加生成OData服务)
管理服务(事务码 /N/IWFND/MAINT_SERVICE )
![](https://img-blog.csdnimg.cn/direct/34155fe2d1fa4b11b97c9c246ef6faa9.png)
五、测试服务
/sap/opu/odata/sap/ZDD_AUTHDATA_CDS/ZDD_AUTHDATA?$top=10&$skip=10
由于底表有21万条数据,需要分页执行OData
元数据