来自ServiceLayer脚本引擎的调用操作

2020-09-12 14:14发布

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

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


亲爱的同事,

有什么方法可以调用ServiceLayer JS扩展中的动作(例如取消文档)? 我浏览了文档,发现那里什么也没有。 毫不奇怪,CRUD API仅提供用于CRUD操作的方法。 我什至尝试用另一种方法扩展ServiceLayerContext原型,但这仍然无济于事(再次不足为奇)。

以删除为例,我们可以在JS SDK中找到以下内容:

 SAPB1.ServiceLayerContext.prototype.remove =函数(名称,键,callbackFunc){
     var entityType = null;
     如果(this.hasOwnProperty(name)){
         entityType = this [name] .type;
     }
    
     var normalizedKey = SAPB1.Utility.NormalizeKey(key,entityType);
     var strRet = this.contextHandle.deleteEntity(name,normalizedKey);
     var jsonRet = JSON.parse(strRet);
    
     var ret = new SAPB1.DataServiceResponse('remove',jsonRet.status,jsonRet.body);
     如果(!ret.isOK()){
         if(ret.getErrCode()== http.ScriptError.TRANSACTION_TOO_LARGE_ERROR){
             抛出新的http.HttpException(ret.status,ret.getErrMsg(),ret.getErrCode());
         }
     }
     如果(typeof(callbackFunc)==='函数'){
         callbackFunc(jsonRet.status,jsonRet.body);
     }
     返回ret
 };
 

contextHandle如下:

函数getContextHandle(){
         返回serviceLayerContext;
     }
     this.contextHandle = getContextHandle();
 

因此,我假定此serviceLayerContext变量是用于执行SL操作的变量(我在这里吗?)。 但我不知道该对象的签名。 我试图记录它,但没有成功。 我的用例是,我主要将SE用于复杂的事务处理,并且如果您需要使用主数据也可以。 但是,当您需要更改AR发票和收款时,通常需要取消链并重新创建。 在这种情况下,如果没有此SL操作,则SE对于我的业务案例是完全没有用的。

感谢您的帮助。

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

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


亲爱的同事,

有什么方法可以调用ServiceLayer JS扩展中的动作(例如取消文档)? 我浏览了文档,发现那里什么也没有。 毫不奇怪,CRUD API仅提供用于CRUD操作的方法。 我什至尝试用另一种方法扩展ServiceLayerContext原型,但这仍然无济于事(再次不足为奇)。

以删除为例,我们可以在JS SDK中找到以下内容:

 SAPB1.ServiceLayerContext.prototype.remove =函数(名称,键,callbackFunc){
     var entityType = null;
     如果(this.hasOwnProperty(name)){
         entityType = this [name] .type;
     }
    
     var normalizedKey = SAPB1.Utility.NormalizeKey(key,entityType);
     var strRet = this.contextHandle.deleteEntity(name,normalizedKey);
     var jsonRet = JSON.parse(strRet);
    
     var ret = new SAPB1.DataServiceResponse('remove',jsonRet.status,jsonRet.body);
     如果(!ret.isOK()){
         if(ret.getErrCode()== http.ScriptError.TRANSACTION_TOO_LARGE_ERROR){
             抛出新的http.HttpException(ret.status,ret.getErrMsg(),ret.getErrCode());
         }
     }
     如果(typeof(callbackFunc)==='函数'){
         callbackFunc(jsonRet.status,jsonRet.body);
     }
     返回ret
 };
 

contextHandle如下:

函数getContextHandle(){
         返回serviceLayerContext;
     }
     this.contextHandle = getContextHandle();
 

因此,我假定此serviceLayerContext变量是用于执行SL操作的变量(我在这里吗?)。 但我不知道该对象的签名。 我试图记录它,但没有成功。 我的用例是,我主要将SE用于复杂的事务处理,并且如果您需要使用主数据也可以。 但是,当您需要更改AR发票和收款时,通常需要取消链并重新创建。 在这种情况下,如果没有此SL操作,则SE对于我的业务案例是完全没有用的。

感谢您的帮助。

付费偷看设置
发送
3条回答
My梦
1楼 · 2020-09-12 14:50.采纳回答

我得到了支持人员的答复,但不幸的是,该答复尚未实现(最高9.3 PL 06)。

回复文本:

亲爱的 Sergei Travkin,

当前,脚本引擎不支持取消之类的操作。

可以从9.3PL5应用以下解决方法来通过服务层取消现有文档:

A/P发票: POST/b1s/v1/购买发票(XX)/取消

A/P贷项通知单:/b1s/v1/购买信用凭证(XX)/取消

由于服务层当前缺少此功能,请遵循注释1028874中的说明进行请求。

感谢您的合作与谅解。

jovirus
2楼-- · 2020-09-12 14:50

您好,

很遗憾,您还没有(

compass1988
3楼-- · 2020-09-12 15:02

嗨,

我们也在搜索此内容。
您找到了什么吗?

亲切的问候。

一周热门 更多>

点击此处---> EasySAP.com 一起学习S4 HANA ...

相关问答