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

简介: 下图是我用SAP Fiori Smart Template开发出来的UI。

image.png

image.png

image.png

image.png

专家回复了, 不支持。只有用CDS table function。原因也很简单,要支持所有的DB platform。

image.png

CDS 里有CAST的关键字,但是专家confirm了不能走类型这条路,因为无法保证这个类型转换在所有DB platform上都工作。

image.png

我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_TF
  with parameters
      @Environment.systemField: #CLIENT
      p_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 method
  ZCL_MM_DSO_TF=>tf_test2;
Implementation of table function:
CLASS ZCL_MM_DSO_TF DEFINITION
  PUBLIC
  FINAL
  CREATE PUBLIC .
  PUBLIC SECTION.
    INTERFACES if_amdp_marker_hdb.
    CLASS-METHODS tf_test2
        FOR TABLE FUNCTION ZI_DSO_TF.
  PROTECTED SECTION.
  PRIVATE SECTION.
ENDCLASS.
CLASS ZCL_MM_DSO_TF IMPLEMENTATION.
  METHOD tf_test2 BY DATABASE FUNCTION
                    FOR HDB LANGUAGE SQLSCRIPT
                    OPTIONS READ-ONLY
                    USING P_DSO12
                    icustomerfis paddressfis ifidebtorfidata ificompanycode
                    .
    return
    select
     "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.

我自己做了一个,已经跑通了。

image.png


相关文章
|
5月前
|
数据库 API
启用SAP Fiori之前的一些注意事项
启用SAP Fiori之前的一些注意事项
|
5月前
|
Linux 开发工具 开发者
关于 SAP HANA 开发那些事
关于 SAP HANA 开发那些事
|
5月前
|
JavaScript 前端开发
试读版:如何找出 SAP 标准 Fiori 应用某个按钮点击后执行的 JavaScript 源代码
试读版:如何找出 SAP 标准 Fiori 应用某个按钮点击后执行的 JavaScript 源代码
SAP UI5 Link 控件的使用方法介绍 - 后续学习 Fiori Elements Smart Link 的基础试读版
SAP UI5 Link 控件的使用方法介绍 - 后续学习 Fiori Elements Smart Link 的基础试读版
|
5月前
|
UED
什么是 SAP Fiori 的 Technical Catalog 和 Business Catalog
什么是 SAP Fiori 的 Technical Catalog 和 Business Catalog
|
5月前
|
前端开发 UED
SAP Fiori 到底指什么
SAP Fiori 到底指什么
|
5月前
|
前端开发 搜索推荐 开发者
SAP UI5 sap.m.Column 控件的 minScreenWidth 属性介绍
SAP UI5 sap.m.Column 控件的 minScreenWidth 属性介绍
|
5月前
|
JavaScript 前端开发 开发者
SAP UI5 控件 sap.m.ListBase 的 inset 属性的作用介绍
SAP UI5 控件 sap.m.ListBase 的 inset 属性的作用介绍
|
5月前
|
Web App开发 数据采集 前端开发
纯技术讨论:如何让 SAP UI5 应用无法被别人在浏览器里调试 - 这种做法不推荐试读版
纯技术讨论:如何让 SAP UI5 应用无法被别人在浏览器里调试 - 这种做法不推荐试读版
|
5月前
|
XML 存储 数据格式
SAP UI5 控件 customData 属性的应用介绍
SAP UI5 控件 customData 属性的应用介绍

热门文章

最新文章

下一篇
无影云桌面