使用SAP C4C自定义BO association创建动态下拉列表
发布日期:2021-06-30 14:29:08 浏览次数:2 分类:技术文章

本文共 2975 字,大约阅读时间需要 9 分钟。

My series of Cloud Application Studio Blogs

In my previous blog I introduce two different approaches to build Code List via Cloud Application Studio. Both solution will finally create dedicated data type under the hood for Code List.

In this blog, I will introduce the third approach to build a kind of dynamic Code List without using dedicated data type. Dynamic Code List means for the same BO, instance A could have drop down list for example 1,2,3 and another instance B has list as A, B, C. In productive scenario this dynamic behavior could be helpful if you would like to achieve that different BO instance has different Code List based on their transaction type for example.

The main idea of this solution is to use a dedicated Business Object serving as the data source of the Code List defined in a Hosting BO. So we have to create these two BOs separately.

(1) Create a Code List BO:

import AP.Common.GDT as apCommonGDT;businessobject JerryCodeList {
[AlternativeKey] element CodeListBOID: ID; node CodeList[0,n] {
element Code:NumberValue; element CodeText: LANGUAGEINDEPENDENT_ENCRYPTED_EXTENDED_Name; }}

Activated the BO and create the corresponding UI.

In OWL I can list all existing Code List instance:

In Thing Inspector UI, use AdvancedListPane to allow users to maintain Code List entries:

Now for Code List instance JERRY1, I have three entries maintained:

And for JERRY2, I have four entries maintained:

(2) Create a host BO, which should have one field holding the reference to the corresponding Code List BO. Within this BO, define an association to Code List BO.

import AP.Common.GDT as apCommonGDT;businessobject MainBO {
[AlternativeKey] element MainBOID: ID; element OrderName: LANGUAGEINDEPENDENT_ENCRYPTED_EXTENDED_Name; element OrderStatus: NumberValue; element CodeListBOID: ID; association ToCodeList [0,1] to JerryCodeList using CodeListBOID;}

Create AfterModify event and implement the association there:

import ABSL;if( !this.CodeListBOID.IsInitial() && !this.ToCodeList.IsSet() ){
var codeListQuery = JerryCodeList.QueryByElements; var para = codeListQuery.CreateSelectionParams(); para.Add( codeListQuery.CodeListBOID, "I", "EQ", this.CodeListBOID); var result = codeListQuery.Execute(para); this.ToCodeList = result.GetFirst();}

(3) In the Thing Inspector UI of the host BO, create a new Data List and bind it to the CodeList node in BO model. Bind data field Code and CodeText accordingly as displayed in the screenshot below.

The OrderStatus field in Data structure should be bound to BO field OrderStatus as well. And the CCTS Information and CodeList properties for the data field should be set as below.

The last step: bind the UI element to the OrderStatus field.

Once done, when you create BO instance A and bind it to Code List instance JERRY1,

it will have Code List from JERRY1:

The same logic works for instance B which displays Code List from JERRY2:

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

转载地址:https://jerry.blog.csdn.net/article/details/108285818 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:如何使用SAP HANA Studio的PlanViz分析CDS view性能问题
下一篇:SAP C4C,CRM和S4HANA的Saved Query使用介绍

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年04月28日 14时36分02秒