SAP Cloud SDK:将多个选定项添加到另一个表

2020-09-09 15:35发布

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

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


尊敬的专家,

我们有具体要求开发类似的目标群体。GAF用于材料分组。

我们无法将临时数据表中的多个选定物料(显示主物料中的物料总数)添加到选定物料表中。

下面是我们用来实现功能但未按预期工作的Ruby脚本。


multiSelect =($ data.DataList.GetSelectedRowsCount()> 1); //临时物料主数据表-DataList。

NoOfRowsSelected = $ data.DataList.GetSelectedowsCount();
如果(multiSelect)
LeadSelection = $ data.DataList.LeadSelectedIndex;
对于0中的i ..(NoOfRowsSelected-1)
currentRow = LeadSelection + i;
RequiredDataField = $ data.DataList.Get(currentRow).InternalID;
RequiredDesc = $ data.DataList.Get(currentRow).Description;
newRow = $ data.DataList1//用于添加所选材料的数据表

newAddRow = newRow.Add()
newAddRow.MaterialID = RequiredDataField;
newAddRow.Description = RequiredDesc;
end
end

如果有人有以前的经验或有任何想法添加所选材料?

谢谢。

此致

Sathish

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

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


尊敬的专家,

我们有具体要求开发类似的目标群体。GAF用于材料分组。

我们无法将临时数据表中的多个选定物料(显示主物料中的物料总数)添加到选定物料表中。

下面是我们用来实现功能但未按预期工作的Ruby脚本。


multiSelect =($ data.DataList.GetSelectedRowsCount()> 1); //临时物料主数据表-DataList。

NoOfRowsSelected = $ data.DataList.GetSelectedowsCount();
如果(multiSelect)
LeadSelection = $ data.DataList.LeadSelectedIndex;
对于0中的i ..(NoOfRowsSelected-1)
currentRow = LeadSelection + i;
RequiredDataField = $ data.DataList.Get(currentRow).InternalID;
RequiredDesc = $ data.DataList.Get(currentRow).Description;
newRow = $ data.DataList1//用于添加所选材料的数据表

newAddRow = newRow.Add()
newAddRow.MaterialID = RequiredDataField;
newAddRow.Description = RequiredDesc;
end
end

如果有人有以前的经验或有任何想法添加所选材料?

谢谢。

此致

Sathish

付费偷看设置
发送
8条回答
三十六小时_GS
1楼-- · 2020-09-09 16:23

嗨,Satish

您是否打算在Cloud App Studio中使用ByD SDK做到这一点? 还是在ByD之外运行并行应用程序?
为什么在这里使用ruby?

Yatsea的致谢

lukcy2020
2楼-- · 2020-09-09 16:11

嗨,Satish,

请根据关于如何在运行时中调试脚本的最后一节尝试调试脚本 https://blogs.sap.com/2017/07/29/ruby-script-in-c4c-oberon-view/

博客与c4c有关 ,但是Byd与c4c共享相同的PDI,因此从技术上讲,该调试应该适用于ByD。

如果您无法调试,则只需在数据模型中添加一些临时字段即可显示/观看 脚本中变量的值,该值与UI上的输入字段绑定。

例如,在数据模型/root/debug_value中添加一个文件,并在UI上添加一个与debug_value绑定的输入字段

然后,您可以在上面的输入字段中显示要查看的变量的值,只需在脚本中添加以下行即可。

 $ data.debug_value ="#{NoOfRowsSelected}。#{currentRow}。#{RequiredDataField} ..."";  
//请包含您要观看的变量。

一旦触发该事件,然后debug_value将显示在UI上。

希望您可以找出问题出在哪里。

亲切的问候, Yatsea

Alawn_Xu
3楼-- · 2020-09-09 16:05

嗨Yatsea,

感谢您的答复。

是的,我们需要在云应用程序工作室(UI设计器)中完成它。

在这里,我们使用ruby脚本将物料主表添加到所选物料表。

如果您需要更多详细信息,请告诉我。

此致

Sathish

暮风yp
4楼-- · 2020-09-09 16:22

嗨,Satish,

您的发现符合预期。 除了LeadSelectedIndex之外,没有对ALP中所有选定行索引的直接访问。

如果可用材料ALP与自定义对象绑定,那么您可以看看该线程。

< p> https://answers。 sap.com/questions/12365467/how-to-select-and-move-multiple-rows-of-advance-li.html

另外请注意,您所用的材料是 在ALP中通过搜索和查询列出,因此它可能不受任何BO约束。

在这种情况下,您可以尝试以下解决方法。 不知道它是否真的有效。 最终用户需要单击列的某些单元格以选择行。

  1. 添加另一个名为/root/SelectedRows的数据列表,以将所选行索引保存在数据模型中
  2. 为所有列添加OnClick事件处理程序。 抱歉,在ALP级别或行级别上找不到OnClick。
  3. 将相同的OnClick事件处理程序与下面的脚本一起应用于所有列
    selectedRows = $ data的on click事件。 SelectedRow; //所选行索引的数据表
    //todo:您应该检查所选行中是否已存在行ID,
    //如果已经存在,那么最终用户将取消选择它,因此应该 从列表中删除
    if($ eventArgs.RowIdentifier> -1)
    row = selectedRows.Add();
    row.id = $ eventArgs.RowIdentifier;
    end;

从最终用户的体验和实现看来,与自定义对象的子节点绑定的可用材料ALP似乎是一个更好的选择,在这种情况下,您可以在启用了质量的absl中使用循环所有选定的实例。

Yatsea的问候

当学会了学习
5楼-- · 2020-09-09 16:01

Satish,

脚本第3行中有错字。

NoOfRowsSelected = $ data.DataList.GetSelectedowsCount();

应为:

NoOfRowsSelected = $ data.DataList.GetSelectedRowsCount();
请更正并重试。

Yatsea致以亲切问候

lukcy2020
6楼-- · 2020-09-09 16:18

嗨Yatsea,

谢谢。

实际上,在此处粘贴脚本时发生了拼写错误。

与您在后端脚本中提到的相同。

如果您需要更多详细信息,请告诉我。

此致

Sathish

一周热门 更多>