无法使用DI Server更新服务呼叫

2020-08-18 06:13发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)当我尝试使用DI服务器更新服务呼...

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

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


当我尝试使用DI服务器更新服务呼叫时,出现故障:

无法修改未分配的服务呼叫。 [-5002]

但是,服务呼叫已分配给队列。

3条回答
2020-08-18 07:12 .采纳回答

SAP B1"业务逻辑"以其无限的智慧指出,仅当服务调用被分配给一个人时才可以对其进行修改,而当该服务调用被分配给一个队列时就不能进行更新(即使它在技术上也得到了分配) ,没有人对此负责。

我发现的针对此问题的(简单且可能仅)解决方案是,您必须将服务调用分配给某人,对其进行更新,然后再将其分配回去。 在将活动添加到服务调用中时,这尤其令人讨厌,因为随后步骤变为

1。 给自己分配电话

2。 创建活动(通过服务调用链接)

3。 添加活动

4。 更新服务电话

5。 将其分配回队列

6。 更新服务电话。

假设您要以编程方式执行此操作(假设这是SDK论坛),则可以使用类似的代码(代码为PHP,但逻辑应该不言而喻)

[代码]

私有函数DISUpdate_basic(...){

//返回已更新或创建的呼叫的服务呼叫ID,或在发生错误时返回null

//此更新是之后与DI服务器的直接XML交互。

//创建必要的XML信封。

}

公共功能DISUpdate($ addNotUpdate = false){

//首先,仅在需要时将调用移至$ me而不是Queue

$ isInQueue = $ this-> inQueue;

$ queue = $ this-> queue;

$ prefs = SapTools mysettings();

$ myuid = $ prefs ['UserId'];

if($ isInQueue){

debug("呼叫处于队列中,在进行更改之前将其移至我自己($ myuid)");

$ this-> inQueue = false;

$ this-> assignedTo = $ myuid;

//***错误***如果传递了$ addNotUpdate,则将创建两个调用

//一个没有队列,另一个有。 在添加活动(监控)和通话时注意到

//解决方案:存储生成的callid,并在更新时重复使用。

if(!($ aucallid = $ this-> DISUpdate_basic($ addNotUpdate))){

debug("向我自己打电话并更新-失败!");

返回false;

}

//仅当呼叫保持打开状态时才将其放回队列中-封闭的呼叫必须为

//分配给一个人

if($ this-> status!= variable_get('SAP_DIS_ClosedStatus',null)){

debug("调用已更新,将其放回正确的队列...");

//我们真的不需要重新加载服务呼叫信息-我要做的就是

//设置callid,以便进行更新

$ this-> callId = $ aucallid;

$ this-> inQueue = true;

$ this-> queue = $ queue;

返回$ this-> DISUpdate_basic(); //此时总是UPDATE

}其他{

//呼叫已关闭,因此我无法将其移回队列

返回$ this-> callId;

}

}其他{

//不在队列中,只需传递到DISUpdate_basic()

返回$ this-> DISUpdate_basic($ addNotUpdate);

}

}

[/code]

一周热门 更多>