如何使用ABSL脚本在保存时为服务凭单创建文档流(ActivityTask)。

2020-09-14 06:53发布

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

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


专家们,

我的情况是在保存服务凭单的情况下,我需要创建ActivityTask作为后续文档,并带有一些默认值,并且应该在服务凭单的"文档流"选项卡中可见。

我在ServiceRequest.XBO的Event-BeforeSave.absl中使用了以下代码

导入ABSL;

导入AP.FO.Activity.Global;

导入AP.Common.Global;

导入AP.PC.ActivityManagement.Global;

var ServiceTicketKey:BusinessTransactionDocumentKey;

//ActivityTask:根节点

var elTask​​Root:ActivityTask的元素;

var instTask;

//ActivityTask:定义参与者节点

var elTask​​Party:ActivityTask.Party的元素;

var instParty;

//ActivityTask:定义服务订单文本集合

var TXT_TYPE_BODY_TEXT =" 10002";

var elTask​​TxtCollTxt:ActivityTask.TextCollection.Text的元素;

var elTask​​TxtCollTxtCntnt:ActivityTask.TextCollection.Text.TextContent的元素;

var instTaskTxtColl;

var instTaskTxtCollTxt;

var elPeriod:ActivityTask.Period的元素;

//ActivityTask:维护描述-必填

elTask​​Root.Name.content ="服务凭单" + this.ID.content.RemoveLeadingZeros();

//ActivityTask:创建新实例

instTask = ActivityTask.Create(elTask​​Root);

//任务:呼叫参与者

if(!instTask.ProcessorParty.IsSet()){

elTask​​Party.PartyKey.PartyID.content = this.ProcessorParty.PartyKey.PartyID.content;

instTask.ProcessorParty.Create(elTask​​Party);

}

其他

{

elTask​​Party.PartyKey.PartyID.content = this.ProcessorParty.PartyKey.PartyID.content;

instTask.ProcessorParty.Create(elTask​​Party);

}

//任务:将员工负责设置为强制性

if(!instTask.EmployeeResponsibleParty.IsSet()){

elTask​​Party.PartyKey.PartyID.content = this.ProcessorParty.PartyKey.PartyID.content; //设置员工ID

instTask.EmployeeResponsibleParty.Create(elTask​​Party);

}

其他

{

elTask​​Party.PartyKey.PartyID.content = this.ProcessorParty.PartyKey.PartyID.content; //设置员工ID

instTask.EmployeeResponsibleParty.Create(elTask​​Party);

}

//创建"正文"类型的文本

instTaskTxtColl = instTask.TextCollection.Create();

elTask​​TxtCollTxt.TypeCode.content = TXT_TYPE_BODY_TEXT;

instTaskTxtCollTxt = instTaskTxtColl.Text.Create(elTask​​TxtCollTxt);

elTask​​TxtCollTxtCntnt.Text.content ="任务活动的正文";

instTaskTxtCollTxt.TextContent.Create(elTask​​TxtCollTxtCntnt);

//尝试添加服务票证作为对ActivityTask的引用

ServiceTicketKey.BusinessTransactionDocumentID = this.ID; //服务单编号

ServiceTicketKey.BusinessTransactionDocumentTypeCode = this.ProcessingTypeCode; //"类型代码=" SRRE"

instTask.AddReferenceWithDataProvision(ServiceTicketKey);

但没有效果。 我可以看到已创建一个新任务,但该任务未作为后续或参考文档附加到服务单上。

任何线索。

我什至尝试

ActivityTask.CreateWithReference()

但是无法在任务上设置默认值。

此致

切拉。

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

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


专家们,

我的情况是在保存服务凭单的情况下,我需要创建ActivityTask作为后续文档,并带有一些默认值,并且应该在服务凭单的"文档流"选项卡中可见。

我在ServiceRequest.XBO的Event-BeforeSave.absl中使用了以下代码

导入ABSL;

导入AP.FO.Activity.Global;

导入AP.Common.Global;

导入AP.PC.ActivityManagement.Global;

var ServiceTicketKey:BusinessTransactionDocumentKey;

//ActivityTask:根节点

var elTask​​Root:ActivityTask的元素;

var instTask;

//ActivityTask:定义参与者节点

var elTask​​Party:ActivityTask.Party的元素;

var instParty;

//ActivityTask:定义服务订单文本集合

var TXT_TYPE_BODY_TEXT =" 10002";

var elTask​​TxtCollTxt:ActivityTask.TextCollection.Text的元素;

var elTask​​TxtCollTxtCntnt:ActivityTask.TextCollection.Text.TextContent的元素;

var instTaskTxtColl;

var instTaskTxtCollTxt;

var elPeriod:ActivityTask.Period的元素;

//ActivityTask:维护描述-必填

elTask​​Root.Name.content ="服务凭单" + this.ID.content.RemoveLeadingZeros();

//ActivityTask:创建新实例

instTask = ActivityTask.Create(elTask​​Root);

//任务:呼叫参与者

if(!instTask.ProcessorParty.IsSet()){

elTask​​Party.PartyKey.PartyID.content = this.ProcessorParty.PartyKey.PartyID.content;

instTask.ProcessorParty.Create(elTask​​Party);

}

其他

{

elTask​​Party.PartyKey.PartyID.content = this.ProcessorParty.PartyKey.PartyID.content;

instTask.ProcessorParty.Create(elTask​​Party);

}

//任务:将员工负责设置为强制性

if(!instTask.EmployeeResponsibleParty.IsSet()){

elTask​​Party.PartyKey.PartyID.content = this.ProcessorParty.PartyKey.PartyID.content; //设置员工ID

instTask.EmployeeResponsibleParty.Create(elTask​​Party);

}

其他

{

elTask​​Party.PartyKey.PartyID.content = this.ProcessorParty.PartyKey.PartyID.content; //设置员工ID

instTask.EmployeeResponsibleParty.Create(elTask​​Party);

}

//创建"正文"类型的文本

instTaskTxtColl = instTask.TextCollection.Create();

elTask​​TxtCollTxt.TypeCode.content = TXT_TYPE_BODY_TEXT;

instTaskTxtCollTxt = instTaskTxtColl.Text.Create(elTask​​TxtCollTxt);

elTask​​TxtCollTxtCntnt.Text.content ="任务活动的正文";

instTaskTxtCollTxt.TextContent.Create(elTask​​TxtCollTxtCntnt);

//尝试添加服务票证作为对ActivityTask的引用

ServiceTicketKey.BusinessTransactionDocumentID = this.ID; //服务单编号

ServiceTicketKey.BusinessTransactionDocumentTypeCode = this.ProcessingTypeCode; //"类型代码=" SRRE"

instTask.AddReferenceWithDataProvision(ServiceTicketKey);

但没有效果。 我可以看到已创建一个新任务,但该任务未作为后续或参考文档附加到服务单上。

任何线索。

我什至尝试

ActivityTask.CreateWithReference()

但是无法在任务上设置默认值。

此致

切拉。

付费偷看设置
发送
4条回答
jovirus
1楼 · 2020-09-14 07:26.采纳回答

嗨,

您没有将任何东西传递给" BusinessTransactionDocumentReference"节点来创建文档流条目。 必须将文档链接到"前任"或"后继"状态。 请参阅随附的代码,通过该代码我可以通过ABSL将活动与"服务请求"一起附加。

导入ABSL;
 导入AP.CRM.Global;
 var t1:ServiceRequest.BusinessTransactionDocumentReference的元素;
 t1.BusinessTransactionDocumentReference.ID.content =" 46433"; //要附加的活动任务ID
 t1.BusinessTransactionDocumentReference.TypeCode =" 542"; //活动任务的类型代码(有关允许的值,请参阅数据类型BusinessTransactionDocumentReference)
 t1.BusinessTransactionDocumentRelationshipRoleCode =" 1"; //提及是前任还是后继(有关允许的值,请参见数据类型BusinessTransactionDocumentRelationshipRoleCode)
 this.BusinessTransactionDocumentReference.Create(t1);
 

如有任何问题,请告知。

谢谢

Saurabh

空代码
2楼-- · 2020-09-14 07:25

嗨,B.Chella,

我有一个类似的问题,我想为以下文档创建票证的子票证,我尝试像您提供的类似代码。但是它转储了,我不知道为什么,请帮助我,谢谢。 以下链接是问题。

https://answer.sap.com/questions/298641/how-to-create-follow-up-documentalso-service-reque.html

Jack.Hua

最好的问候

me_for_i
3楼-- · 2020-09-14 07:29

嗨,索拉卜,

感谢您的答复。

它使用ActivityTask.CreateWithReference(this);

这指向ServiceRequest BO

导入ABSL;
 导入AP.FO.Activity.Global;
 导入AP.Common.Global;
 导入AP.PC.ActivityManagement.Global;

//ActivityTask:根节点
 var elTask​​Root:ActivityTask的元素;

 var instTask = ActivityTask.CreateWithReference(this);

//ActivityTask:定义参与方节点
 var elTask​​Party:ActivityTask.Party的元素;
 var instParty;

 instTask.Name.content ="主题票" + this.ID.content.RemoveLeadingZeros();

 如果(!instTask.ProcessorParty.IsSet()){
 elTask​​Party.PartyKey.PartyID.content = this.ProcessorParty.PartyKey.PartyID.content;
 instTask.ProcessorParty.Create(elTask​​Party);
 }
 其他
 {
 instTask.ProcessorParty.Delete();
 elTask​​Party.PartyKey.PartyID.content = this.ProcessorParty.PartyKey.PartyID.content;
 instTask.ProcessorParty.Create(elTask​​Party);
 }



 

谢谢

Chella。

SAP砖家
4楼-- · 2020-09-14 07:32

嗨,

我正在尝试类似的情况。但是要根据报价创建订单。 添加以下代码

我在CustomerQuote BeforeSave中添加了以下代码

 SalesOrder.CreateWithReference(this); 

销售订单已创建,但未创建为参考。 新订单没有与报价相关的任何信息,即没有帐户,项目/或其他信息。 另外,文档流为空。

请帮助

谢谢

Resmi

一周热门 更多>