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

2020-09-14 06:53发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)专家们, 我的情况是在保存服务...

         点击此处--->   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条回答
me_for_i
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。

一周热门 更多>