当前位置:   article > 正文

TABLE functions_table function和spreadsheets

table function和spreadsheets

Core data services指,HANA CDS和ABAP CDS

HANA CDS只支持HANA数据库,ABAP CDS理论上支持多种数据库,所以,ABAP CDS阉割了一些功能。导致某些场景,无法直接使用ABAP CDS解决。需要使用一种变通的方法,即通过ABAP Managed Database Procedures (AMDP)创建ABAP CDS Table Function

下面的例子就是一个简单的TABLE functions 例子

1: 打开eclipse ,创建一个新的Core Data Services -> Data Definition

选择define table function with parameters

2: 编辑生成的实体:字段 方法

@EndUserText.label: 'TABLE FUNCTION'

define table function YDEMO_TABLE_FUNCTION

with parameters p_carrid : abap.char(5)

returns {

  client       : abap.clnt;

  carrid       : abap.string;

  connid_arr   : abap.string;

}

implemented by method  ZCL_SPFLI_DEMO_CDS=>GET_connid;

3: 创建类:ZCL_SPFLI_DEMO_CDS

增加:IF_AMDP_MARKER_HDB接口,ABAP类转换为AMDP类,并且允许在类的方法内写存储过程

4:类实施代码

  红色为新增代码,其他为自动生成

  • BY DATABASE FUNCTION: 会将方法标记为table function,还有一个选项是通过 BY DATABASE PROCEDURE标记为存储过程.
  • FOR HDB: 设定数据库类型为HDB (HANA数据库).
  • LANGUAGE SQLSCRIPT: HANA数据库存储的语言.
  • OPTIONS READ-ONLY: 存储过程内不允许修改数据.
  • USING: 定义table function中消费的数据库表、视图或者存储过程。在本例中,只访问SPFLI 视图.

CLASS zcl_spfli_demo_cds DEFINITION

  PUBLIC

  FINAL

  CREATE PUBLIC .

  PUBLIC SECTION.

    INTERFACES if_amdp_marker_hdb .

   

    CLASS-METHODS:

      get_connid FOR TABLE FUNCTION YDEMO_TABLE_FUNCTION.

  PROTECTED SECTION.

  PRIVATE SECTION.

ENDCLASS.

CLASS zcl_spfli_demo_cds IMPLEMENTATION.

 METHOD get_connid

 BY DATABASE FUNCTION

    FOR HDB

    LANGUAGE SQLSCRIPT

    OPTIONS READ-ONLY

    USING SPFLI.

   

    it_connid =

      SELECT DISTINCT

             SPFLI.mandt    as client,

             SPFLI.carrid   as carrid,

             SPFLI.connid   as connid             

          FROM SPFLI

          WHERE CARRID = p_carrid;

    RETURN

      SELECT client,

             carrid,

             STRING_AGG(connid, ', ' ORDER BY connid) as connid_arr

        FROM :it_connid

       GROUP BY client,

                carrid;

 endmethod.

ENDCLASS.

5:测试结果  STRING_AGG 串起connid字段

参考:Concatenate multiple records in a single field using ABAP CDS Table Function

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/761847
推荐阅读