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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

关于SAP Fiori Smart Template开发的一些实际例子

發布時間:2023/12/19 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于SAP Fiori Smart Template开发的一些实际例子 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

下圖是我用SAP Fiori Smart Template開發出來的UI。

SAP標準的用List report template做的reference application: https://sapui5.netweaver.ondemand.com/test-resources/sap/suite/ui/generic/template/demokit/demokit.html?responderOn=true&demoApp=products

Smart template是基于元數據驅動的開發,大部分時候不需要書寫前端JavaScript代碼。

我要創建一個view,從Service order guid拿到它的ship to party信息。后臺的表我都找好了。

CRMD_PARTNER的partner_no 字段類型是CHAR32,而我要join的BUT000的partner_guid類型是RAW16.

這兩個field technical類型確實不一樣,但是在ABAP里CHAR32和RAW16是等價的。我理解這樣設計的原因是CDS view要support所有的DB,而不僅僅是ABAP。所以報錯。

這種情況下有沒有其他的辦法可以繞過這個錯呢?換其他的field來做join肯定不能接受,因為CRMD_PARTNER上只有partner_no這個CHAR32的字段保存了正確的信息。

或者CDS 語法里有沒有做類型轉換的keyword?我也再繼續google一下。
這個人遇到的問題和我一樣:

專家回復了, 不支持。只有用CDS table function。原因也很簡單,要支持所有的DB platform。

CDS 里有CAST的關鍵字,但是專家confirm了不能走類型這條路,因為無法保證這個類型轉換在所有DB platform上都工作。

我2013年12月曾經研究過AMDP,這條路可以走通。只是當時沒試過如何在CDS view里consume這個生成的procedure。
我現在正在試。

http://scn.sap.com/community/abap/blog/2013/12/10/an-example-of-amdp-abap-managed-database-procedure-in-740

大方向是這樣的哈,CDS可以很容易的調用Table function(跟調用CDSview一樣),然后table function具體的實現是通過AMDP實現的。
比如下面這個。

define table function ZI_DSO_TFwith parameters@Environment.systemField: #CLIENTp_client : abap.clnt,p_rblsrollingaveragemonths : abap.int1,p_revnrollingaveragemonths : abap.int1,p_todaydate : abap.char( 8 ),p_displaycurrency : abap.char( 5 ),p_exchangeratetype : abap.char( 4 ) returns {Client : abap.clnt;CompanyCode : abap.char( 4 );Customer : abap.char( 10 );CalendarYear : abap.numc( 4 ) ;CalendarMonth : abap.numc( 2 ); CompanyCodeCurrency : abap.cuky( 5 );FinancialAccountType : abap.char( 1 );ExchangeRateType : abap.char( 4 );CustomerCountry : abap.char( 3 );CustomerRegion : abap.char( 3 );AccountingClerk : abap.char( 2 );CustomerBasicAuthorizationGrp : abap.char( 4 );DurationUnit : abap.unit( 3 );ChartofAccounts : abap.char( 4 );ReconciliationAccount : abap.char( 10 );DisplayCurrency : abap.cuky( 5 ); DebitAmtInDisplayCrcy : abap.curr( 23, 2 );CalendarYearMonth : abap.char( 6 );} implemented by methodZCL_MM_DSO_TF=>tf_test2;Implementation of table function: CLASS ZCL_MM_DSO_TF DEFINITIONPUBLICFINALCREATE PUBLIC .PUBLIC SECTION.INTERFACES if_amdp_marker_hdb.CLASS-METHODS tf_test2FOR TABLE FUNCTION ZI_DSO_TF.PROTECTED SECTION.PRIVATE SECTION. ENDCLASS.CLASS ZCL_MM_DSO_TF IMPLEMENTATION.METHOD tf_test2 BY DATABASE FUNCTIONFOR HDB LANGUAGE SQLSCRIPTOPTIONS READ-ONLYUSING P_DSO12icustomerfis paddressfis ifidebtorfidata ificompanycode.returnselect"P_DSO12"."MANDT" AS "CLIENT","P_DSO12"."COMPANYCODE","P_DSO12"."CUSTOMER","P_DSO12"."CALENDARYEAR","P_DSO12"."CALENDARMONTH","P_DSO12"."COMPANYCODECURRENCY","P_DSO12"."FINANCIALACCOUNTTYPE",( :p_exchangeratetype ) AS "EXCHANGERATETYPE","=A1"."COUNTRY" AS "CUSTOMERCOUNTRY","=A1"."REGION" AS "CUSTOMERREGION","=A2"."ACCOUNTINGCLERK" AS "ACCOUNTINGCLERK","=A2"."AUTHORIZATIONGROUP" AS "CUSTOMERBASICAUTHORIZATIONGRP","P_DSO12"."DURATIONUNIT","=A3"."CHARTOFACCOUNTS" AS "CHARTOFACCOUNTS","=A2"."RECONCILIATIONACCOUNT" AS "RECONCILIATIONACCOUNT",( :p_displaycurrency ) AS "DISPLAYCURRENCY",convert_currency( "AMOUNT" => "P_DSO12"."DEBITAMOUNTINCOMPANYCODECRCY","SOURCE_UNIT" => "P_DSO12"."COMPANYCODECURRENCY","TARGET_UNIT" => :p_displaycurrency,"REFERENCE_DATE" => "P_DSO12"."ROLLINGAVERAGEMONTHENDDATEDATS","CONVERSION_TYPE" => :p_exchangeratetype,"CLIENT" => :p_client,"ERROR_HANDLING" => N'FAIL_ON_ERROR',"SCHEMA" => ::CURRENT_OBJECT_SCHEMA,"ACCURACY" => N'highest',"LOOKUP" => N'regular',"OPTIONS" => N'ALLOW_PRECISION_LOSS',"STEPS" => 'convert,shift_back,shift,round' )as "DEBITAMTINDISPLAYCRCY","P_DSO12"."CALENDARYEARMONTH" as "CALENDARYEARMONTH"FROM( ( ("P_DSO12"( :P_RBLSROLLINGAVERAGEMONTHS,:p_revnrollingaveragemonths,:p_todaydate ) "P_DSO12"LEFT OUTER JOIN "ICUSTOMERFIS" "=A0" ON ( "P_DSO12"."MANDT" = "=A0"."MANDT"AND "=A0"."CUSTOMER" = "P_DSO12"."CUSTOMER" ) )LEFT OUTER many TO one JOIN "PADDRESSFIS" "=A1" ON ( "P_DSO12"."MANDT" = "=A1"."MANDT"AND "=A0"."ADDRESSID" = "=A1"."ADDRESSID" ) )LEFT OUTER many TO one JOIN "IFIDEBTORFIDATA" "=A2" ON ( "=A2"."COMPANYCODE" = "P_DSO12"."COMPANYCODE"AND "=A2"."CUSTOMER" = "P_DSO12"."CUSTOMER"AND "P_DSO12"."MANDT" = "=A2"."MANDT" ) )LEFT OUTER many TO one JOIN "IFICOMPANYCODE" "=A3" ON ( "P_DSO12"."MANDT" = "=A3"."MANDT"AND "=A3"."COMPANYCODE" = "P_DSO12"."COMPANYCODE" )WHERE NOT ( "P_DSO12"."CALENDARYEARMONTH" IS NULL )AND NOT ( "P_DSO12"."CALENDARYEARMONTH" IS NULL );ENDMETHOD.ENDCLASS.

我自己做了一個,已經跑通了。

總結

以上是生活随笔為你收集整理的关于SAP Fiori Smart Template开发的一些实际例子的全部內容,希望文章能夠幫你解決所遇到的問題。

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