我可以在ABAP CD视图中创建一个GUID吗?



我在ABAP CDS视图中加入了一个表格,并希望每行创建一个唯一的GUID。这可能吗?

类似:

select from my_view as a
  inner join my_view as b
    on a.ContextKey = b.ContextKey and
       a.DbKey != b.DbKey
{
    key sysuuid as MAPPING_ID,
    a.SomeField AS A,
    b.SomeField AS B
}

我不知道CD中的任何UUID功能。您需要使用CDS Table FunctionAMDP

您的Table Function视图。

define table function ZP_TF_TEST
with parameters @Environment.systemField: #CLIENT mandt : mandt
returns
{
    mandt : mandt;
    ID    : uuid;
    A     : type_a; 
    B     : type_b;
}
implemented by method zcl_tf_test=>get_data;

您的CDS视图。

define view ZZ_TF_TEST as select from ZP_TF_TEST( mandt : $session.client )
{
   key ID,
       A,
       B,
}

您的AMDP类。

CLASS zcl_tf_test DEFINITION PUBLIC FINAL CREATE PUBLIC .
PUBLIC SECTION.
INTERFACES if_amdp_marker_hdb .
CLASS-METHODS get_data
    FOR TABLE FUNCTION ZP_TF_TEST.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.

实现方法get_data并使用从虚拟

选择sysuuid
METHOD get_data BY DATABASE FUNCTION FOR HDB LANGUAGE SQLSCRIPT OPTIONS READ-ONLY USING my_table.
    RETURN SELECT 
                 a.mandt,
                 ( SELECT sysuuid FROM dummy  ) as id,
                 a.SomeField AS A,
                 b.SomeField AS B
               from my_table as a inner join my_table as b
                     on a.ContextKey = b.ContextKey and a.DbKey != b.DbKey
               where a.mandt= :mandt;
ENDMETHOD.

相关内容

  • 没有找到相关文章

最新更新