日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SAP CDS view自学教程之六:如何在CDS view里消费table function

發布時間:2023/12/19 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SAP CDS view自学教程之六:如何在CDS view里消费table function 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Let’s try to resolve one real issue now. What we want to achieve is: in CRM we need a CDS view which returns the service order guid together with its Sold-to Party information, “Title” ( Mr. ) and “Name” ( blGMOUTH ).

The title and Name information are stored on table BUT000, while Service order transactional information is maintained in tableCRMD_PARTNER, which has a field PARTNER_NO ( CHAR32 ) linking to table BUT000’s PARTNER_GUID ( RAW16 ).


It is not allowed to do join on these two fields since their data type are not equal. This question is asked via this SCN thread: ABAP CDS View: join tables on columns of different type.

As suggested in the Correction Answer, this issue could be resolved by using CDS Table Function. Here below are the detail steps.

(1) Create a new table function

@ClientDependent: true @AccessControl.authorizationCheck: #NOT_REQUIRED define table function ztf_BP_DETAILwith parameters @Environment.systemField: #CLIENTclnt:abap.clntreturns { client:s_mandt;partner_guid:BU_PARTNER_GUID;partset_guid:CRMT_OBJECT_GUID;partner_no: CRMT_PARTNER_NO;bp_guid: BU_PARTNER_GUID;title:AD_TITLE;name: BU_NAME1TX;}implemented by methodzcl_amdp_bp_detail=>crmd_partner_but000;

With keyword “with parameters”, the client parameters is defined which works as the importing parameters for the ABAP class method zcl_amdp_bp_detail=>crmd_partner_but000. The keywords “returns” defines available fields which could be consumed by other CDS entities.

For further information about AMDP ( ABAP Managed Database Procedure ), please refer to this document Implement and consume your first ABAP Managed Database Procedure on HANA or this blog An example of AMDP( ABAP Managed Database Procedure ) in 740.

(2) Create a new AMDP implementation

Create a new ABAP class zcl_amdp_bp_detail by copying the following source code:

CLASS zcl_amdp_bp_detail DEFINITIONPUBLICFINALCREATE PUBLIC .PUBLIC SECTION.INTERFACES if_amdp_marker_hdb.CLASS-METHODS crmd_partner_but000 FOR TABLE FUNCTION ztf_bp_Detail.PROTECTED SECTION.PRIVATE SECTION. ENDCLASS. CLASS zcl_amdp_bp_detail IMPLEMENTATION. METHOD crmd_partner_but000BY DATABASE FUNCTION FOR HDBLANGUAGE SQLSCRIPTOPTIONS READ-ONLYUSING crmd_partner but000.RETURN SELECT sc.client as client,sc.partner_guid as partner_guid,sc.guid as partset_guid,sc.partner_no as partner_no,sp.partner_guid as bp_guid,sp.title as title,sp.name1_text as nameFROM crmd_partner AS scINNER JOIN but000 AS sp ON sc.client = sp.client ANDsc.partner_no = sp.partner_guidWHERE sc.client = :clnt ANDsc.partner_fct = '00000001'ORDER BY sc.client;ENDMETHOD. ENDCLASS.

Here in line 30 the two columns of CRMD_PARTNER and BUT000 are joined. The importing parameter is used in SQLScript source code by adding a “:” before the variable name. The hard code “00000001” means the constant value for partner function “Sold-to Party”.

(3) Consume the created table function in CDS view

@AbapCatalog.sqlViewName: 'zcpartner' @AbapCatalog.compiler.compareFilter: true @AccessControl.authorizationCheck: #CHECK @EndUserText.label: 'partner detail' define view Z_c_partner as select from crmd_orderadm_h inner join crmd_link as _link on crmd_orderadm_h.guid = _link.guid_hi and _link.objtype_hi = '05'and _link.objtype_set = '07' inner join ztf_bp_detail( clnt: '001') as _bp on _link.guid_set = _bp.partset_guid {key crmd_orderadm_h.guid,--_link.objtype_hi as header_type,--_link.objtype_set as item_type,_bp.bp_guid,_bp.partner_no,_bp.name,case _bp.titlewhen '0001' then 'Ms.'when '0002' then 'Mr.'when '0003' then 'Company'when '0004' then 'Mr and Mrs'else 'Unknown'end as title }

Please note that the created table function in step1 could be directly consumed just as a normal CDS view, see example in line 8.
Since the table function declares client as parameter, so when consumed, I put the current client id 001 into it. The fields defined as the returning parameters in table function could be used in consuming view.

(4) Test the whole solution
Click F8 on the view z_c_partner, check whether data previews as expected.

or you can also check against single data record, by clicking “SQL Console”, maintain the SQL and click Run:

The same test could also easily be done on ABAP side:


要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":

總結

以上是生活随笔為你收集整理的SAP CDS view自学教程之六:如何在CDS view里消费table function的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。