CDS视图:如果使用UUID,请使用备用密钥

2020-09-10 06:08发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)假设我维护着一张摆满各种水果的桌...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


假设我维护着一张摆满各种水果的桌子。 这些用UUID标识。 现在,例如,我想在订单应用程序中添加一个项目。 我现在可以为每个项目选择一个水果。

从技术上讲,我创建了两个由OData提供的CDS视图。 通过BO启用CRUD。 使用FRUITS.UUID = ORDER_ITEM.FRUIT_UUID创建关联。 这也从根本上起作用。

但是,现在如何防止技术UUID在GUI上显示给用户,而不是显示具有可读性的描述性字段READABLE_NAME的READABLE_ID?

提前谢谢!

(61.5 kB)
4条回答
nice_wp
2020-09-10 06:28

您好马赫什

对不起,与此同时,我正在从事另一个项目。

我选择了Eclipse中的所有视图,并一次性激活了它们。 不幸的是,这并不能解决问题。

我已将字段 product_guid 添加为表的解决方法。 这也可行,但是我认为这不是正确的解决方案,因为它违反了数据库的常规形式。

我的最后一种方法是通过联接在选择中包括字段" product_guid"。 为此,我将视图分为三个级别:

ZDM_I_PRODUCT_SAP_COMP_T(接口视图):数据库选择

 @ AbapCatalog.sqlViewName:'ZDM_IPSCT'
 @ AbapCatalog.compiler.compareFilter:是
 @ AbapCatalog.preserveKey:是

 @ AccessControl.authorizationCheck:#检查
 @ EndUserText.label:"接口产品SAP Komponente文本"

 @ VDM.viewType:#BASIC
 @ Analytics.dataCategory:#DIMENSION

 定义视图zdm_i_product_sap_comp_t
   从zdm_psc_t中选择
 {
   键uuid为UUID,
       sap_component_uuid作为SapComponentUUID,
       langu作为语言,
       文字为文字
 }
  

ZDM_I_PRODUCT_SAP_COMP_T(复合视图):联接操作

 @ AbapCatalog.sqlViewName:'ZDM_CPSCT'
 @ AbapCatalog.compiler.compareFilter:是
 @ AbapCatalog.preserveKey:是

 @ AccessControl.authorizationCheck:#检查
 @ EndUserText.label:"复合产品SAP组件文本"

 @ VDM.viewType:#COMPOSITE
 @ Analytics.dataCategory:#DIMENSION

 定义视图zdm_c_product_sap_comp_t
   从zdm_i_product_sap_comp_t中选择为ProductSapComponentText
   内部连接zdm_c_product_sap_comp作为ProductSapComponent.UUID = ProductSapComponentText.SapComponentUUID上的ProductSapComponent

 {
   键ProductSapComponentText.UUID,
       ProductSapComponentText.SapComponentUUID,
       ProductSapComponent.ComponentID,
       ProductSapComponent.ProductUUID,
       ProductSapComponent.ProductID,
       ProductSapComponentText.Language,
       ProductSapComponentText.Text
 } 
  

ZDM_PRODUCT_SAP_COMP_T(消费视图)

 @ AbapCatalog.sqlViewName:'ZDM_PSCT_V'
 @ AbapCatalog.compiler.compareFilter:是
 @ AbapCatalog.preserveKey:是

 @ AccessControl.authorizationCheck:#检查
 @ EndUserText.label:"消费产品SAP Komponenten文本"

 @ VDM.viewType:#CONSUMPTION

 @ObjectModel:{

     语义关键字:['sap_component_uuid','langu'],

     createEnabled:是的,
     deleteEnabled:是,
     updateEnabled:是,

     writeActivePersistence:'ZDM_PSC_T',
     writeDraftPersistence:'ZDM_PSC_TD'
 }

 @ Metadata.allowExtensions:是
 定义视图zdm_product_sap_comp_t
   从zdm_c_product_sap_comp_t中选择


   将[1..1]与zdm_product关联为_Product.uuid = $ projection.product_uuid上的_Product
   将[1..1]与zdm_product_sap_comp关联为_SapComponent.UUID = $ projection.sap_component_uuid上的_SapComponent

 {
   关键UUID,
       SapComponentUUID为sap_component_uuid,
       ComponentID作为component_id,
       ProductUUID作为product_uuid,
       产品ID为product_id,
       语言为语言,
       文字为文字,

       @ ObjectModel.association.type:[#TO_COMPOSITION_ROOT]
       _产品,

       @ ObjectModel.association.type:[#TO_COMPOSITION_PARENT]
       _SapComponent

 } 

不幸的是,该问题还在根视图中再次出现:

 [BO检查]元素PRODUCT_UUID没有数据库字段,没有存储(查看ZDM_PRODUCT_SAP_COMP_T,表ZDM_PSC_T)
 [BO检查]元素COMPONENT_ID没有数据库字段,没有存储(查看ZDM_PRODUCT_SAP_COMP_T,表ZDM_PSC_T)
 [BO检查]元素PRODUCT_ID没有数据库字段,没有存储(查看ZDM_PRODUCT_SAP_COMP_T,表ZDM_PSC_T)

最好的问候,
尼古拉斯

一周热门 更多>