where()函数用于从ABSL中的集合中检索行?

2020-09-13 20:00发布

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

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


您好,专家,我已经浏览了Web上所有有关Collection.Where(filter)的文档,但是仍然无法在自定义ABSL脚本中实现所需的功能。 br>
我的要求如下:

需要从Utilities Premise BO中获取所有详细信息,并通过在一个字段中并置地址将它们显示在我的自定义GAF中。
源BO屏幕:

我的目标屏幕如下:

现在您可以看到,我已经成功查询了UtilitiesPremise BO并获得了我想要的4条记录,但是似乎可以查询的地址详细信息以关联名称HierarchyRelationship出现。
现在使用HierarchyRelationship.GetFirst(),我现在为所有场所填写相同的地址。

现在在数据模型中,我看到此" HierarchyRelationship"具有[0-1]基数,因此实际上它首先不应该是集合。 但是由于某种原因。

我发现在此Collection内的"查询响应根目录"中存在一个名为ExtenalID的公共字段,在" HierachyRelationship-> UpperInstallationPoint"(在这种情况下为前提ID)下存在另一个公共字段,我可以利用该字段在 此集合将使用其中只给我那些外部ID与根目录中的外部ID相匹配的记录的地方来获取。

但是由于某种原因,我无法将此代码写入代码。 我第一次在哪里使用。 不知道如何使用它。 但是我也在博客中找到了一些文档和语法,但是它向我返回了0条记录,所以我做错了。
请看下面的代码:

 var res = UtilitiesPremise.QueryByObjectIdMapping.Execute(); //返回4个Rec

 MoveIn.Search.QueryByElements.Execute()。Delete(); //CustomBO节点Search clr

 if(res.Count()!= 0)
 {
 foreach(res中的可变项)
 {
 var searchtable:MoveIn.Search的元素;
                /////我尝试使用where()->来获取0个条目。
//var地址= res.ToInstallPoint.HierarchyRelationship.Where(n => n.ExternalID.content == item.ExternalID.content).UpperInstallationPoint.AddressInformation.Address.DefaultPostalAddressRepresentation;
                //暂时使用GetFirst()
 var address = res.ToInstallPoint.HierarchyRelationship.GetFirst()。UpperInstallationPoint.AddressInformation.Address.DefaultPostalAddressRepresentation;

 var house = address.HouseID;
 var street = address.StreetName;
 var city = address.CityName;
 var country = address.CountryCode;
 var pincode = address.StreetPostalCode;
 var state = address.RegionCode.content;

 searchtable.PremiseAddress =房子+"," +街道+" St." +城市+"," +国家+"" +密码";
 searchtable.ServiceDetails ="电力,天然气";
 searchtable.PremiseNumber = item.ExternalID.content.RemoveLeadingZeros();
 searchtable.PremiseType = item.PremiseTypeCode;
 searchtable.Instalno1 = item.ToInstallPoint.ID.content;
 searchtable.State =状态;
//searchtable.ConnectionObject = item.ToInstallPoint.HierarchyRelationship;
 searchtable.Owner =" Mandy Scneo";
 searchtable.CurrentCust ="约翰·保罗";


 this.Search.Create(searchtable);

 }
 }
 
现在我在这里做错了吗?

请指导我,我被困住了。 如果您需要更多信息来帮助我,也请告诉我。

任何帮助将不胜感激。
关于,
Akash

(20.3 kB)

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

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


您好,专家,我已经浏览了Web上所有有关Collection.Where(filter)的文档,但是仍然无法在自定义ABSL脚本中实现所需的功能。 br>
我的要求如下:

需要从Utilities Premise BO中获取所有详细信息,并通过在一个字段中并置地址将它们显示在我的自定义GAF中。
源BO屏幕:

我的目标屏幕如下:

现在您可以看到,我已经成功查询了UtilitiesPremise BO并获得了我想要的4条记录,但是似乎可以查询的地址详细信息以关联名称HierarchyRelationship出现。
现在使用HierarchyRelationship.GetFirst(),我现在为所有场所填写相同的地址。

现在在数据模型中,我看到此" HierarchyRelationship"具有[0-1]基数,因此实际上它首先不应该是集合。 但是由于某种原因。

我发现在此Collection内的"查询响应根目录"中存在一个名为ExtenalID的公共字段,在" HierachyRelationship-> UpperInstallationPoint"(在这种情况下为前提ID)下存在另一个公共字段,我可以利用该字段在 此集合将使用其中只给我那些外部ID与根目录中的外部ID相匹配的记录的地方来获取。

但是由于某种原因,我无法将此代码写入代码。 我第一次在哪里使用。 不知道如何使用它。 但是我也在博客中找到了一些文档和语法,但是它向我返回了0条记录,所以我做错了。
请看下面的代码:

 var res = UtilitiesPremise.QueryByObjectIdMapping.Execute(); //返回4个Rec

 MoveIn.Search.QueryByElements.Execute()。Delete(); //CustomBO节点Search clr

 if(res.Count()!= 0)
 {
 foreach(res中的可变项)
 {
 var searchtable:MoveIn.Search的元素;
                /////我尝试使用where()->来获取0个条目。
//var地址= res.ToInstallPoint.HierarchyRelationship.Where(n => n.ExternalID.content == item.ExternalID.content).UpperInstallationPoint.AddressInformation.Address.DefaultPostalAddressRepresentation;
                //暂时使用GetFirst()
 var address = res.ToInstallPoint.HierarchyRelationship.GetFirst()。UpperInstallationPoint.AddressInformation.Address.DefaultPostalAddressRepresentation;

 var house = address.HouseID;
 var street = address.StreetName;
 var city = address.CityName;
 var country = address.CountryCode;
 var pincode = address.StreetPostalCode;
 var state = address.RegionCode.content;

 searchtable.PremiseAddress =房子+"," +街道+" St." +城市+"," +国家+"" +密码";
 searchtable.ServiceDetails ="电力,天然气";
 searchtable.PremiseNumber = item.ExternalID.content.RemoveLeadingZeros();
 searchtable.PremiseType = item.PremiseTypeCode;
 searchtable.Instalno1 = item.ToInstallPoint.ID.content;
 searchtable.State =状态;
//searchtable.ConnectionObject = item.ToInstallPoint.HierarchyRelationship;
 searchtable.Owner =" Mandy Scneo";
 searchtable.CurrentCust ="约翰·保罗";


 this.Search.Create(searchtable);

 }
 }
 
现在我在这里做错了吗?

请指导我,我被困住了。 如果您需要更多信息来帮助我,也请告诉我。

任何帮助将不胜感激。
关于,
Akash

(20.3 kB)
付费偷看设置
发送
1条回答
Doze时光
1楼-- · 2020-09-13 20:41

你好Akash,

您说"但是由于某种原因,我无法将此代码编写为代码。"。 你什么意思? 错误消息是什么?

无论如何,关于您的代码行:

 var地址= res.ToInstallPoint.HierarchyRelationship.Where(n => n.ExternalID.content == item.ExternalID.content).UpperInstallationPoint.AddressInformation.Address.DefaultPostalAddressRepresentation;
 

where函数返回一个集合。 因此,如果您期望在给定条件下得到一个准确的结果,则可以尝试以下方法:

 var地址;
 var resToInstallPoint = res.ToInstallPoint;
 如果(resToInstallPoint.IsSet()){
     var match = resToInstallPoint.HierarchyRelationship.Where(n => n.ExternalID.content == item.ExternalID.content);
     如果(match.Count()> 0){
         地址= match.GetFirst()。UpperInstallationPoint.AddressInformation.Address.DefaultPostalAddressRepresentation;
     }
 }
 

最佳,
巴勃罗

一周热门 更多>