在Adobe Lifecycle Designer(ALD)中使用FormCalc的C4C表单票证摘要逻辑

2020-09-20 11:55发布

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

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


专家们,

我正在Adobe Lifecycle Designer中为票证摘要创建一个表单。 我想根据产品的InternalID在两个表中打印票证中的项目位置。 因此,一张表用于时间乘积,另一张表用于公里乘积。

有关时间表的第1行的脚本示例,请参见下面的屏幕快照(这是隐藏所有产品ID为km的项目的计划;相反,另一表则隐藏了产品ID为km的计划):

我根据数据创建了两个动态表格,对于脚本编辑器中的逻辑,我以SAP Standard调查摘要为例。 这是部分描述字段中的逻辑(某些调查类型代码)。

但是它不起作用...在表中,所有项目均显示在时间中,在第二项中,除2列外,其他所有内容均为空。 这个脚本有什么问题?

如果产品内部ID的数据绑定为:

ServiceRequest-项目-产品-InternalID-#data

我是否需要在脚本中使用$ data.ServiceRequest.Item.Product.InternalID或$ data.ServiceRequest.Item.Product.InternalID。#data?

感谢帮助!

最诚挚的问候,

黛博拉

(63.0 kB)

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

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


专家们,

我正在Adobe Lifecycle Designer中为票证摘要创建一个表单。 我想根据产品的InternalID在两个表中打印票证中的项目位置。 因此,一张表用于时间乘积,另一张表用于公里乘积。

有关时间表的第1行的脚本示例,请参见下面的屏幕快照(这是隐藏所有产品ID为km的项目的计划;相反,另一表则隐藏了产品ID为km的计划):

我根据数据创建了两个动态表格,对于脚本编辑器中的逻辑,我以SAP Standard调查摘要为例。 这是部分描述字段中的逻辑(某些调查类型代码)。

但是它不起作用...在表中,所有项目均显示在时间中,在第二项中,除2列外,其他所有内容均为空。 这个脚本有什么问题?

如果产品内部ID的数据绑定为:

ServiceRequest-项目-产品-InternalID-#data

我是否需要在脚本中使用$ data.ServiceRequest.Item.Product.InternalID或$ data.ServiceRequest.Item.Product.InternalID。#data?

感谢帮助!

最诚挚的问候,

黛博拉

(63.0 kB)
付费偷看设置
发送
7条回答
樱桃小丸子0093
1楼-- · 2020-09-20 12:18

你好黛博拉,

很抱歉回复迟到! 我希望你已经实现了自己想要的。

首先,当您说breif不起作用时,我希望它保持稳定。 即没有数据或正确的数据?

对于基本绑定,您不需要formcalc/js。 (TBH我没有FormCalc的经验,我只将JS用于ALC)

假设您想将一个简单字段与TextField绑定,则可以转到DataConnection并选择该字段和#data。

对于Item,

1。 用Flowed

创建一个bodypage

2。 创建具有流动内容的子表单(可选)

3。 添加表格

在DataRow中,将其与$。<< Bo >>。item [*]

绑定

4。 在column中,指定item的字段并将其绑定(与#data绑定)

$。<< Bo >>。item [*]。<< anyfield >>

上面将生成一个非常基本的表,现在为了解决这个问题,我在ALC中为JS编写了以下代码。

 if(ltype.value ==" 101"){//工作
 wRow = this.frmTableItems.tblItems.rowItemContent.instanceManager.addInstance(1);
 wlength = wlength + 1;
 wRow.colItemDate.rawValue = ItemList.item(i).ActualDatePeriod.StartDateTime.value;
 wRow.colItemStartTime.rawValue = ItemList.item(i).ActualDatePeriod.StartDateTime.value;
 wRow.colItemEndTime.rawValue = ItemList.item(i).ActualDatePeriod.EndDateTime.value;
 wRow.colItemLineQty.rawValue = ItemList.item(i).ActualQuantity.value;
 wRow.colItemLineDesc.rawValue = ItemList.item(i).Description.value;
 this.frmTableItems.frmTableItemTotal.WorkTravelTotal.rawValue = this.frmTableItems.frmTableItemTotal.WorkTravelTotal.rawValue + wRow.colItemLineLineQty.rawValue;
 }
 

所以基本上基于itemType我正在做一些操作。 我希望它能澄清您的疑虑。

欢呼。

Dhruvin

野沐沐
2楼-- · 2020-09-20 12:05

当我必须在数据绑定中选择" #data"时如何处理(请参见屏幕截图)? 这样的名称在脚本编辑器中如何显示?


Dhruvin Mehta 范·菲利普森前会员,您也许可以提供帮助吗? 我在其他ALD问题中读过您的名字...:)

最诚挚的问候,

Deborah

微wx笑
3楼-- · 2020-09-20 12:01

嗨,我不在我的系统上,但一个愚蠢的建议可能是FormServiceRequestConfirmation.Page2.frmZeiten.TableTime.DataRow [i] .txtProduct,在此处添加" .rawValue"并检查是否 它可以正常工作

代楠1984
4楼-- · 2020-09-20 12:18

您好 Dhruvin Mehta

前2条陈述(1 + 2)是正确的。 由于您的第一个答案,我才开始使用js进行绑定。 现在,所有数据绑定都在对象的"绑定"选项卡中再次定义。 我尝试了第二种方法并注释了代码。 参见下面的截图:

 FormServiceRequestConfirmation.Page2.frmZeiten.TableTime.DataRow :: initialize-(JavaScript,客户端)

//重复的DataRows的数量(-1,因为从零开始计数)
 var vRows = TableTime.DataRow.instanceManager.count-1;

//计数向下循环,删除不是时间项的每行(产品不相等的"蒙太奇")
 for(var i = vRows; i> = 0; i-){
 if(FormServiceRequestConfirmation.Page2.frmZeiten.TableTime.DataRow [i] .txtProduct!="蒙太奇"){
 TableTime.DataRow.instanceManager.removeInstance(i);
 }
 } 

但是它仍然无法正常工作。 结果,我仍然得到一个完整的表格,其中包含所有时间和公里数项目。 参见下面的截图:

你有什么想法吗?

最诚挚的问候,

Deborah

Baoming ROSE
5楼-- · 2020-09-20 12:09

嗨,

首先,您如何调试它:P?

其次,我试图了解您的问题。 您要在单元格的初始化事件上添加项目描述吗? 为什么需要解析节点?

 var ItemTest = ItemList.item(i).resolveNode(" Description");
 您可以尝试以下吗?

 ItemList.item(I).Description.value; 不要解析节点。
 
代楠1984
6楼-- · 2020-09-20 12:20

嗨, Dhruvin Mehta

我决定不使用复制功能,因为我认为这比在脚本中定义数据绑定并只读取相关表中的数据要复杂得多。 因此,我的计划是在时间表中读取数据之前插入一个if-test和公里表的if-test。 这是我的时间表代码:

 FormServiceRequestConfirmation.Page2.frmZeiten.TableTime :: initialize-(JavaScript,客户端)
 var ItemList = xfa.record.ServiceRequest.resolveNodes(" Item [*]");
 var ilength = ItemList.length;

 for(var i = 0; i 
 

但是,我仍然无法在脚本中以XML定义数据的问题(尤其是对于多项目-> item(i)无法正常工作)。 那是我调试的结果...

如果我使用以下代码(基于您的代码/根据XML定义数据的方式),我只会显示一个对象引用(" Object-293420228")。

 var ItemList = xfa.record.ServiceRequest.resolveNodes(" Item [*]");
 var ilength = ItemList.length;

 for(var i = 0; i  

如果我尝试以下代码,则会获得显示的第一项的"真实"数据,但是我无法控制要显示的多项描述中的哪一个。

 var ItemTest = xfa.record.ServiceRequest.Item.Description.value;
 this.rawValue = ItemTest; 

如果我正在测试它,以使下面的代码可以显示特定的描述,则什么也没有发生-文本字段保持空白。 (项目后用圆形和方形夹具测试)

 var ItemTest = xfa.record.ServiceRequest.Item(2).Description.value;
 this.rawValue = ItemTest; 

对此有任何想法吗?

非常感谢您的帮助...

Deborah

一周热门 更多>