如何在SAPUI5 App和DB中处理枚举

2020-09-03 22:40发布

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

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


我已经创建了这样的数据模型,并创建了OData服务:

实体WikiPages {
 密钥ID:整数;
 SpaceKey:字符串(25);
 空格:字符串(50);
 标题:String(255);
 PageLink:字符串(255);
 SpaceStatus:字符串(15);
 LastUpdate:日期;
 SAPuserID:字符串(255);
 PageViews:整数;
 审稿人:弦乐(15);
 注释:字符串(255);
 状态:整数;
 }
 

状态列是一个整数,但实际上代表一个枚举-每行都有一个状态。

在我的SAPUI5应用程序中,我创建了一个名为"动作"的数据模型,并为每个枚举输入了键和文本。

 var actions = {" Actions":[
 {键:0,标签:""},
 {键:1,标签:"保持"},
 {键:2,标签:"迁移"},
 {键:3,标签:"删除"}
 ]};

 var oModel = new sap.ui.model.json.JSONModel(actions);
 this.getView()。setModel(oModel," actions");
 

在我看来,我创建了一个Select控件,其中键绑定到我的数据表,而选择项绑定到我在上面创建的数据模型:

 <列宽=" 8rem" hAlign =" Center">
 
 <模板>
 
 />
 
 
 
 

一切正常,我得到了想要的功能(尽管我不知道这是否是执行此操作的最佳方法):

2个问题:

  • 是否有一种标准(更好的方法)来实现我想做的事情?
  • 我的应用程序运行良好,但我不知道如何让人们在此列上进行过滤。 我将该列的filterProperty设置为data字段,但是即使输入密钥(例如,像1这样的整数),也无法进行过滤。 我在做什么错了?

(83.9 kB)

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

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


我已经创建了这样的数据模型,并创建了OData服务:

实体WikiPages {
 密钥ID:整数;
 SpaceKey:字符串(25);
 空格:字符串(50);
 标题:String(255);
 PageLink:字符串(255);
 SpaceStatus:字符串(15);
 LastUpdate:日期;
 SAPuserID:字符串(255);
 PageViews:整数;
 审稿人:弦乐(15);
 注释:字符串(255);
 状态:整数;
 }
 

状态列是一个整数,但实际上代表一个枚举-每行都有一个状态。

在我的SAPUI5应用程序中,我创建了一个名为"动作"的数据模型,并为每个枚举输入了键和文本。

 var actions = {" Actions":[
 {键:0,标签:""},
 {键:1,标签:"保持"},
 {键:2,标签:"迁移"},
 {键:3,标签:"删除"}
 ]};

 var oModel = new sap.ui.model.json.JSONModel(actions);
 this.getView()。setModel(oModel," actions");
 

在我看来,我创建了一个Select控件,其中键绑定到我的数据表,而选择项绑定到我在上面创建的数据模型:

 <列宽=" 8rem" hAlign =" Center">
 
 <模板>
 
 />
 
 
 
 

一切正常,我得到了想要的功能(尽管我不知道这是否是执行此操作的最佳方法):

2个问题:

  • 是否有一种标准(更好的方法)来实现我想做的事情?
  • 我的应用程序运行良好,但我不知道如何让人们在此列上进行过滤。 我将该列的filterProperty设置为data字段,但是即使输入密钥(例如,像1这样的整数),也无法进行过滤。 我在做什么错了?

(83.9 kB)
付费偷看设置
发送
4条回答
我是小鹏鹏啊
1楼-- · 2020-09-03 23:34

丹尼尔,你好

您可以使用JSONModel或为状态定义一个实体,并将Select绑定到该实体:

实体任务{
     密钥ID:UUID;
     title:字符串;
     状态:状态关联;
 }

 实体状态{
     密钥ID:整数;
     代码:字符串;
 }
 

如果状态可能会更改,则应使用一个实体,因为您的应用程序将更易于维护。

关于过滤器,您应该首先查看问题是来自前端还是后端。 在UI5应用中应用过滤器后,应发送带有$ filter参数的请求:

/Tasks?$ filter = status_ID eq 3 

您是否正在使用OData v2或v4,Java或Node.js? 我刚刚检查了一下,我没有做任何事情来使上面的过滤器正常工作,因此它必须在默认的Java OData v2实现中。

干杯

Pierre

Haoba3210
2楼-- · 2020-09-03 23:15

我在SAP Web IDE中使用了CAP业务应用程序,并基于ODatav4和Node.js后端创建了一个带有枚举的数据模型,但是在创建服务和 我检查了元数据,该字段只是一个纯整数,没有任何枚举。

有人告诉我ODatav2不支持,但v4支持,但无法使其正常工作。

p>

HANA CDS和CAP CDS(CAP CDS不支持?)之间可能有所不同,但我不知道。

nice_wp
3楼-- · 2020-09-03 23:34

感谢您的答复。

我正在将OData v4与Node.js一起使用。 我实现了一个图标标签栏,然后在事件上创建了sap.ui.model.Filter并更新了绑定的filter属性。

我遇到类型不匹配的情况,因为控件似乎认为该值是字符串 除非我另外指定,否则我添加了数据类型属性。 另一个问题是我希望人们能够选择" Keep",但在其下面它将知道它是整数1。我可以简单地使用数据库中的字符串来实现此功能,例如在每条记录中都使用" Keep",但这似乎

真的,我的主要问题是如何从数据库级别然后从服务级别实现枚举。 有人告诉我v4支持的枚举,但是我尝试了一下,但我的OData服务仍然不知道该字段的枚举(在元数据中)。

huskylover
4楼-- · 2020-09-03 23:11

CDS应该支持枚举,但是我已经 从未尝试过此操作( https://help.sap.com/viewer /65de2977205c403bbc107264b8eccf4b/Cloud/zh-CN/4a5d78f5e6b04685b61edea4ef59a33d.html ):

 type性别:字符串枚举{男性; 女;  }
 实体订单{
   状态:整数枚举{
     已提交= 1;
     完成= 2;
     已出货= 3;
     已取消= -1;
   };
 } 

干杯

Pierre

一周热门 更多>