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

2020-09-10 06:08发布

         点击此处--->   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)

         点击此处--->   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条回答
My梦
1楼-- · 2020-09-10 06:48

您好尼古拉斯·魏森费尔斯

您可以将语义键用于 要求并使用UI.hidden注释作为键并将其隐藏。 您可以使用sap帮助中提供的示例,该示例与您的情况相同。

https://help.sap.com/viewer/cc0c305d2fab47bd808adcad3ca7ee9d/1809.000/en-US/fc2bab778312480a8bc0d98211e19915.html

BR,

BR/p>

nice_wp
2楼-- · 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)

最好的问候,
尼古拉斯

当学会了学习
3楼-- · 2020-09-10 06:35

嗨,马赫什,我有一个与BOPF CDS中的UUID相关的查询。

问题是我为维护订单创建了BOPF CDS,从而生成了BO。 现在我在此BO CDS上有一个消费视图(第一屏幕),我想在其中基于过滤器过滤订单。选择订单后,用户将可以更改订单(第二屏幕)。

现在问题出在消费视图中,这里我保持UPDATEENABLED = true并将注释设置为ProcessingDelegated = true。

但是,当我在UI中运行应用程序时,可以正确显示第一个屏幕的订单列表。 但是导航到第二个屏幕时出现错误。 消费CDS中不显示错误消息" DRAFTUUID"。

您能让我知道我是否缺少某些东西或做错了吗?

提前感谢您的帮助。

hongfeng1314
4楼-- · 2020-09-10 06:36

您好 Dhiraj More

我已经回答了您的问题。

BR <,

马西什

一周热门 更多>