使用SAP Cloud SDK 3.0版从Java调用BAPI

2020-08-25 10:15发布

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

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


我目前在POC上工作,我需要使用Java从云应用程序在S/4HANA内部部署中调用BAPI。 为此,我正在使用SAP Cloud SDK。

对于初始设置,我遵循以下步骤: https://developers.sap.com/ tutorials/s4sdk-setup.html

我正在尝试从我的应用程序中调用 BAPI_COSTCENTER_GETLIST1 。 这是代码段:

最终BapiRequestResult resultGetCostCenters = new BapiRequest(" BAPI_COSTCENTER_GETLIST1")
  .withExporting(" CONTROLLINGAREA"," BAPI0012_GEN-CO_AREA"," 0001")
  .withTable(" COSTCENTERLIST"," BAPI0012_CCLIST")。end()
  .withTableAsReturn(" BAPIRET2")
  .execute(目的地);
 

这里是 destination 变量的声明:

 Map  destinationProps =新的HashMap ();
 destinationProps.put(" URL"," ");
 destinationProps.put(" Type"," HTTP");
 destinationProps.put(" Password"," ");
 destinationProps.put(" Authentication"," BasicAuthentication");
 destinationProps.put(" User"," ");

 final Destination destination =新的DefaultDestination(destinationProps); 

但是从 execute()开始,抛出了一个异常,该异常表示 java.util.NoSuchElementException:没有值

这是完整的堆栈跟踪:

 java.util.NoSuchElementException:不存在任何值
 在io.vavr.control.Option $ None.get(Option.java:526)
 在com.sap.cloud.sdk.s4hana.connectivity.rfc.SoapTransaction.before(SoapTransaction.java:56)
 在com.sap.cloud.sdk.s4hana.connectivity.rfc.RemoteFunctionRequestExecutor.execute(RemoteFunctionRequestExecutor.java:43)
 在com.sap.cloud.sdk.s4hana.connectivity.rfc.BapiRequest.execute(BapiRequest.java:78)
 在com.sap.csc.CostCenterCreationServlet.retrieveCostCenterList(CostCenterCreationServlet.java:73)
 在com.sap.csc.CostCenterCreationServlet.doGet(CostCenterCreationServlet.java:39)
 在javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
 在javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
 在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
 在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
 在org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
 在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
 在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
 在com.sap.cloud.sdk.cloudplatform.servlet.RequestAccessorFilter.lambda $ doFilter $ 1(RequestAccessorFilter.java:71)
 在com.sap.cloud.sdk.cloudplatform.thread.AbstractThreadContextExecutor.lambda $ execute $ 0(AbstractThreadContextExecutor.java:317)
 在com.sap.cloud.sdk.cloudplatform.thread.ThreadContextCallable.call(ThreadContextCallable.java:247)
 在com.sap.cloud.sdk.cloudplatform.thread.AbstractThreadContextExecutor.execute(AbstractThreadContextExecutor.java:319)
 在com.sap.cloud.sdk.cloudplatform.servlet.RequestAccessorFilter.doFilter(RequestAccessorFilter.java:71)
 在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
 在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
 在com.sap.cloud.sdk.cloudplatform.security.servlet.HttpCachingHeaderFilter.doFilter(HttpCachingHeaderFilter.java:80)
 在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
 在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
 在com.sap.cloud.sdk.cloudplatform.security.servlet.HttpSecurityHeadersFilter.doFilter(HttpSecurityHeadersFilter.java:41)
 在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
 在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
 在org.apache.catalina.filters.RestCsrfPreventionFilter.doFilter(RestCsrfPreventionFilter.java:113)
 在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
 在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
 在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
 在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
 在org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:528)
 在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
 在org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
 在org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:678)
 在org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
 在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
 在org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:798)
 在org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
 在org.apache.coyote.AbstractProtocol $ ConnectionHandler.process(AbstractProtocol.java:810)
 在org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun(NioEndpoint.java:1500)
 在org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
 在java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
 在java.base/java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:628)
 在org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61)
 在java.base/java.lang.Thread.run(Thread.java:835)
 

我认为我缺少一些非常基本的东西。 或许我做错了。 我找不到有关此主题的任何有据可查的教程。 所以请纠正我我要去哪里。

谢谢。

(SAP Cloud SDK概述页面- https://help .sap.com/doc/0786ec6134c04c9bbafec959b6b737de/1.0/en-US/index.html

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

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


我目前在POC上工作,我需要使用Java从云应用程序在S/4HANA内部部署中调用BAPI。 为此,我正在使用SAP Cloud SDK。

对于初始设置,我遵循以下步骤: https://developers.sap.com/ tutorials/s4sdk-setup.html

我正在尝试从我的应用程序中调用 BAPI_COSTCENTER_GETLIST1 。 这是代码段:

最终BapiRequestResult resultGetCostCenters = new BapiRequest(" BAPI_COSTCENTER_GETLIST1")
  .withExporting(" CONTROLLINGAREA"," BAPI0012_GEN-CO_AREA"," 0001")
  .withTable(" COSTCENTERLIST"," BAPI0012_CCLIST")。end()
  .withTableAsReturn(" BAPIRET2")
  .execute(目的地);
 

这里是 destination 变量的声明:

 Map  destinationProps =新的HashMap ();
 destinationProps.put(" URL"," ");
 destinationProps.put(" Type"," HTTP");
 destinationProps.put(" Password"," ");
 destinationProps.put(" Authentication"," BasicAuthentication");
 destinationProps.put(" User"," ");

 final Destination destination =新的DefaultDestination(destinationProps); 

但是从 execute()开始,抛出了一个异常,该异常表示 java.util.NoSuchElementException:没有值

这是完整的堆栈跟踪:

 java.util.NoSuchElementException:不存在任何值
 在io.vavr.control.Option $ None.get(Option.java:526)
 在com.sap.cloud.sdk.s4hana.connectivity.rfc.SoapTransaction.before(SoapTransaction.java:56)
 在com.sap.cloud.sdk.s4hana.connectivity.rfc.RemoteFunctionRequestExecutor.execute(RemoteFunctionRequestExecutor.java:43)
 在com.sap.cloud.sdk.s4hana.connectivity.rfc.BapiRequest.execute(BapiRequest.java:78)
 在com.sap.csc.CostCenterCreationServlet.retrieveCostCenterList(CostCenterCreationServlet.java:73)
 在com.sap.csc.CostCenterCreationServlet.doGet(CostCenterCreationServlet.java:39)
 在javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
 在javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
 在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
 在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
 在org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
 在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
 在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
 在com.sap.cloud.sdk.cloudplatform.servlet.RequestAccessorFilter.lambda $ doFilter $ 1(RequestAccessorFilter.java:71)
 在com.sap.cloud.sdk.cloudplatform.thread.AbstractThreadContextExecutor.lambda $ execute $ 0(AbstractThreadContextExecutor.java:317)
 在com.sap.cloud.sdk.cloudplatform.thread.ThreadContextCallable.call(ThreadContextCallable.java:247)
 在com.sap.cloud.sdk.cloudplatform.thread.AbstractThreadContextExecutor.execute(AbstractThreadContextExecutor.java:319)
 在com.sap.cloud.sdk.cloudplatform.servlet.RequestAccessorFilter.doFilter(RequestAccessorFilter.java:71)
 在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
 在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
 在com.sap.cloud.sdk.cloudplatform.security.servlet.HttpCachingHeaderFilter.doFilter(HttpCachingHeaderFilter.java:80)
 在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
 在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
 在com.sap.cloud.sdk.cloudplatform.security.servlet.HttpSecurityHeadersFilter.doFilter(HttpSecurityHeadersFilter.java:41)
 在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
 在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
 在org.apache.catalina.filters.RestCsrfPreventionFilter.doFilter(RestCsrfPreventionFilter.java:113)
 在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
 在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
 在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
 在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
 在org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:528)
 在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
 在org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
 在org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:678)
 在org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
 在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
 在org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:798)
 在org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
 在org.apache.coyote.AbstractProtocol $ ConnectionHandler.process(AbstractProtocol.java:810)
 在org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun(NioEndpoint.java:1500)
 在org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
 在java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
 在java.base/java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:628)
 在org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61)
 在java.base/java.lang.Thread.run(Thread.java:835)
 

我认为我缺少一些非常基本的东西。 或许我做错了。 我找不到有关此主题的任何有据可查的教程。 所以请纠正我我要去哪里。

谢谢。

(SAP Cloud SDK概述页面- https://help .sap.com/doc/0786ec6134c04c9bbafec959b6b737de/1.0/en-US/index.html

付费偷看设置
发送
1条回答
Baoming ROSE
1楼-- · 2020-08-25 10:48

请在目标属性中提供"名称"条目,例如

 destinationProps.put(" Name"," "); 

一周热门 更多>