打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
使用SAP C4C自定义BO association创建动态下拉列表

My series of Cloud Application Studio Blogs

In my previous blog Two approaches to create Code List in Cloud Studio 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:

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
java对文件操作例子辅助类2
深入理解C# 3.x的新特性(5):Object Initializer 和 Collection Initializer
list of matlab code
Dart核心语言基础const关键字与final关键字的区别
你孩提时的风车(ggb制作)
UN/LOCODE Code List by Country
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服