oData:无法从后端调用RFC

2020-09-27 20:42发布

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

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


专家们,

我创建了一个简单函数RFC,返回了结构BAPIRET2。

我在spro,segw中创建了所有步骤(我猜是这样)。 我成功调用了SAP Gateway Client。

在SEGW中,我创建了一个EntitySet:在其中创建了Read映射(而不是Query)。

在NWDS 7.50中,我使用javascript视图创建了一个ui5项目。

我创建了一个简单的表甚至一个Label,以打印出RFC返回的字符串。

我什么也没拿回来,甚至没有错误。

这是我在控制器的onInit中的代码:

 var oModel = new sap.ui.model.odata.ODataModel(" http://server:port/sap/opu/odata/sap/ZTEST2_SRV/HELLO_WORLD1Set('qwqwqw')",true,"用户",  "密码");

 var oTable = sap.ui.getCore()。byId(" MyTable");
 oTable.setModel(oModel);
 oTable.bindRows("/img/EMessage");
 

一无所有。

但是,如果我在桌面上创建一个简单的html文件,则可以使用ajax成功调用相同的RFC:

var auth = btoa('user:password');

$(document).ready(function(){

$('#get-data')。click(function(){

$。ajax({类型:" GET",数据:'{}',网址:" http://server:port/sap/opu/odata/sap/ZTEST2_SRV/HELLO_WORLD1Set('1111')/EMessage ",

标题:{" Authorization":" Basic" + auth},

contentType:" application/json; charset = utf-8",

dataType:" json",

成功:function(data){alert(" >>" + JSON.stringify(data)); },

错误:function(data){alert(" >>>>>" + JSON.stringify(data)); },});

});

});

有人可以帮忙吗?

谢谢。

问候。

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

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


专家们,

我创建了一个简单函数RFC,返回了结构BAPIRET2。

我在spro,segw中创建了所有步骤(我猜是这样)。 我成功调用了SAP Gateway Client。

在SEGW中,我创建了一个EntitySet:在其中创建了Read映射(而不是Query)。

在NWDS 7.50中,我使用javascript视图创建了一个ui5项目。

我创建了一个简单的表甚至一个Label,以打印出RFC返回的字符串。

我什么也没拿回来,甚至没有错误。

这是我在控制器的onInit中的代码:

 var oModel = new sap.ui.model.odata.ODataModel(" http://server:port/sap/opu/odata/sap/ZTEST2_SRV/HELLO_WORLD1Set('qwqwqw')",true,"用户",  "密码");

 var oTable = sap.ui.getCore()。byId(" MyTable");
 oTable.setModel(oModel);
 oTable.bindRows("/img/EMessage");
 

一无所有。

但是,如果我在桌面上创建一个简单的html文件,则可以使用ajax成功调用相同的RFC:

var auth = btoa('user:password');

$(document).ready(function(){

$('#get-data')。click(function(){

$。ajax({类型:" GET",数据:'{}',网址:" http://server:port/sap/opu/odata/sap/ZTEST2_SRV/HELLO_WORLD1Set('1111')/EMessage ",

标题:{" Authorization":" Basic" + auth},

contentType:" application/json; charset = utf-8",

dataType:" json",

成功:function(data){alert(" >>" + JSON.stringify(data)); },

错误:function(data){alert(" >>>>>" + JSON.stringify(data)); },});

});

});

有人可以帮忙吗?

谢谢。

问候。

付费偷看设置
发送
10条回答
黑丝骑士
1楼 · 2020-09-27 21:23.采纳回答

如果要将实体集绑定到表,则实体集应返回数组。我的意思是必须实现Query(OData)。

并像这样更改您的源代码。

 oTable.bindRows(" EMessage");//删除/

通常实体集应该绑定到表,所以HELLO_WORLD1Set应该绑定到表,

和HELLO_WORLD1Set必须实现为"无法读取的查询"。

路亽曱_Ryan
2楼-- · 2020-09-27 21:14

您对相同的原始策略有任何想法吗?

odata服务和ui5应该位于同一服务器中。 .....

如果没有,则必须在服务器端使用Web调度程序或代理来使呼叫成功

浮生未央
3楼-- · 2020-09-27 21:27

我相信您的ui5在Java服务器中运行 并且odata位于abap服务器中

(直接/轻松地)将无法正常工作,它们必须位于同一服务器中。

Aaron 3364
4楼-- · 2020-09-27 21:28

嗨,

我没有错误的屏幕截图。

我打印了oModel,也许会有帮助。

 HTML1300:发生导航。
 档案:index.html
 2016-12-14 09:47:34设备API日志记录已初始化-DEVICE
 2016-12-14 09:47:34.471205 registerResourcePath('','resources/')-sap.ui.ModuleSystem
 2016-12-14 09:47:34.471550 URL前缀设置为:-sap.ui.ModuleSystem
 2016-12-14 09:47:34.471793(默认):资源/-sap.ui.ModuleSystem
 2016-12-14 09:47:34.711596 registerResourcePath('test103','./test103/')-sap.ui.ModuleSystem
 EventProvider sap.ui.model.odata.ODataModel
    {
       [功能]: ,
       __proto__:{},
       aBatchOperations:[],
       aBindings:[],
       aPendingRequestHandles:[],
       aUrlParams:[],
       bCache:是的,
       bCountSupported:是,
       b销毁:假,
       bJSON:是的,
       bLegacySyntax:否,
       bLoadAnnotationsJoined:是的,
       bLoadMetadataAsync:否,
       bRefreshAfterChange:是​​,
       bSkipMetadataAnnotationParsing:未定义,
       bTokenHandling:是的,
       bUseBatch:否,
       bWithCredentials:否,
       id:" id-1481701654975-0",
       iSizeLimit:100,
       mContexts:{},
       mCustomHeaders:{},
       mEventRegistry:{},
       mMessages:null,
       mSupportedBindingModes:{},
       o注解:{},
       oData:{},
       oEventPool:{},
       oHandler:{},
       oHeaders:{},
       o元数据:{},
       oMetadataFailedEvent:空,
       oMetadataLoadEvent:null,
       oRequestQueue:{},
       oServiceData:{},
       pAnnotationsLoaded:{},
       sAnnotationURI:null,
       sDefaultBindingMode:" OneWay",
       sDefaultCountMode:"两者",
       sMaxDataServiceVersion:未定义,
       sPassword:"密码",
       sServiceUrl:"/proxy/http/mdxprt01.dev.merkava.gov.il:62000/sap/opu/odata/sap/ZTEST2_SRV/HELLO_WORLD1Set('qwqwqw')",
       sUpdateTimer:null,
       sUser:"用户"
    }


 我尝试了没有代理的情况,并得到了相同的oModel。

 谢谢。

 
Violet凡
5楼-- · 2020-09-27 21:27

嗨,

请在致电该服务时共享错误屏幕截图。

解决问题

Violet凡
6楼-- · 2020-09-27 21:26

嗨,

我尝试过,但是表中仍然没有显示数据,也没有错误。

这是oModel。

 EventProvider sap.ui.model.odata.ODataModel
    {
       [功能]: ,
       __proto__:{},
       aBatchOperations:[],
       aBindings:[],
       aPendingRequestHandles:[],
       aUrlParams:[],
       bCache:是的,
       bCountSupported:是,
       b销毁:假,
       bJSON:是的,
       bLegacySyntax:否,
       bLoadAnnotationsJoined:是的,
       bLoadMetadataAsync:否,
       bRefreshAfterChange:是​​,
       bSkipMetadataAnnotationParsing:未定义,
       bTokenHandling:是的,
       bUseBatch:否,
       bWithCredentials:否,
       id:" id-1481715072342-0",
       iSizeLimit:100,
       mContexts:{},
       mCustomHeaders:{},
       mEventRegistry:{},
       mMessages:null,
       mSupportedBindingModes:{},
       o注解:{},
       oData:{
          [功能]: ,
          __proto__:{}
       },
       oEventPool:{},
       oHandler:{},
       oHeaders:{
          [功能]: ,
          __proto__:{},
          接受:" application/json",
          接受语言:" he-IL",
          DataServiceVersion:" 2.0",
          MaxDataServiceVersion:" 2.0"
       },
       o元数据:{},
       oMetadataFailedEvent:空,
       oMetadataLoadEvent:null,
       oRequestQueue:{},
       oServiceData:{},
       pAnnotationsLoaded:{},
       sAnnotationURI:null,
       sDefaultBindingMode:" OneWay",
       sDefaultCountMode:"两者",
       sMaxDataServiceVersion:未定义,
       sPassword:"密码",
       sServiceUrl:" http://server:port/sap/opu/odata/sap/ZTEST2_SRV",
       sUpdateTimer:null,
       sUser:"用户"
    }

 我想指出的是,在oMetadata中,bFailed设置为" true"。

 谢谢。
 
Alawn_Xu
7楼-- · 2020-09-27 21:12

嗨,

请在致电该服务时共享错误屏幕截图。

这将有助于解决问题

一周热门 更多>