问题标签 [jco]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - SAP Java 连接器:是否可以剪切提取表的字段值?
我正在使用 SAP Java 连接器(通过 RFC_READ_TABLE 或类似方法)提取一些 SAP 表。是否可以为表的某些字段传递某种最大长度,例如,如果我们有一个大小为 3750 的字段(如表 USH04 中的 PROFS)但我只想要前 100 个字符 - 类似于 LEFT(PROFS, 100) SQL?
感谢您的帮助!
java - 两个使用 sapjco 连接到 SAP BAPI 的 Web 应用程序
我在 WebSphere Application Server 8.5 for RHEL6 (x64) 上部署了两个 Web 应用程序。两个 Web 应用程序都使用 SAPJCO 库连接到部署在 SAP ECC6 中的 BAPI。两个应用程序都需要访问相同的 BAPI 才能创建采购请求。因此,我们使用从 SAP 的 CustomDestinationDataProvider 修改的相同代码进行连接。为了确保应用程序只注册一次,我们使用 Spring 使其成为单例。
然而,当应用程序启动时,一个应用程序(我们猜测它是在第一个应用程序之后加载的)在执行"java.lang.IllegalStateException: DestinationDataProvider already registered"
时遇到"com.sap.conn.jco.ext.Environment.registerDestinationDataProvider(myProvider)"
。
CustomDestinationDataProvider 如下:
And the error from SystemOut.log in WebSphere is as follow:
[6/30/14 22:29:15:198 ICT] 00000043 webapp E com.ibm.ws.webcontainer.webapp.WebApp notifyServletContextCreated SRVE0283E: Exception caught while initializing context: {0}
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jdoConnector' defined in ServletContext resource [/WEB-INF/applicationContext-BAPI.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.sps.tmps.bean.bapi.JCOConnector]: Constructor threw exception; nested exception is java.lang.Error: java.lang.IllegalStateException: DestinationDataProvider already registered [com.sps.tmps.bean.bapi.CustomDestinationDataProvider$MyDestinationDataProvider]
Caused by: org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.sps.tmps.bean.bapi.JCOConnector]: Constructor threw exception; nested exception is java.lang.Error: java.lang.IllegalStateException: DestinationDataProvider already registered [com.sps.tmps.bean.bapi.CustomDestinationDataProvider$MyDestinationDataProvider]
Caused by: java.lang.Error: java.lang.IllegalStateException: DestinationDataProvider already registered [com.sps.tmps.bean.bapi.CustomDestinationDataProvider$MyDestinationDataProvider]
at com.sps.tmps.bean.bapi.CustomDestinationDataProvider.initProvider(CustomDestinationDataProvider.java:174)
at com.sps.tmps.bean.bapi.JCOConnector.(JCOConnector.java:41)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:56)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:39)
at java.lang.reflect.Constructor.newInstance(Constructor.java:527)
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:85)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:87)
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:186)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:800)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:720)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:387)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:251)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:156)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:248)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:287)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:352)
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:244)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:187)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49)
at com.ibm.ws.webcontainer.webapp.WebApp.notifyServletContextCreated(WebApp.java:1678)
at com.ibm.ws.webcontainer.webapp.WebAppImpl.initialize(WebAppImpl.java:414)
at com.ibm.ws.webcontainer.webapp.WebGroupImpl.addWebApplication(WebGroupImpl.java:88)
at com.ibm.ws.webcontainer.VirtualHostImpl.addWebApplication(VirtualHostImpl.java:169)
at com.ibm.ws.webcontainer.WSWebContainer.addWebApp(WSWebContainer.java:749)
at com.ibm.ws.webcontainer.WSWebContainer.addWebApplication(WSWebContainer.java:634)
at com.ibm.ws.webcontainer.component.WebContainerImpl.install(WebContainerImpl.java:426)
at com.ibm.ws.webcontainer.component.WebContainerImpl.start(WebContainerImpl.java:718)
at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:1175)
at com.ibm.ws.runtime.component.DeployedApplicationImpl.fireDeployedObjectStart(DeployedApplicationImpl.java:1370)
at com.ibm.ws.runtime.component.DeployedModuleImpl.start(DeployedModuleImpl.java:639)
at com.ibm.ws.runtime.component.DeployedApplicationImpl.start(DeployedApplicationImpl.java:968) at com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:774)
at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:2182)
at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.start(CompositionUnitMgrImpl.java:445)
at com.ibm.ws.runtime.component.CompositionUnitImpl.start(CompositionUnitImpl.java:123)
at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.start(CompositionUnitMgrImpl.java:388)
at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.access$500(CompositionUnitMgrImpl.java:116)
at com.ibm.ws.runtime.component.CompositionUnitMgrImpl$CUInitializer.run(CompositionUnitMgrImpl.java:994)
at com.ibm.wsspi.runtime.component.WsComponentImpl$_AsynchInitializer.run(WsComponentImpl.java:502)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1862)
Caused by: java.lang.IllegalStateException: DestinationDataProvider already registered [com.sps.tmps.bean.bapi.CustomDestinationDataProvider$MyDestinationDataProvider]
at com.sap.conn.jco.rt.RuntimeEnvironment.setDestinationDataProvider(RuntimeEnvironment.java:134)
at com.sap.conn.jco.ext.Environment.registerDestinationDataProvider(Environment.java:259)
at com.sps.tmps.bean.bapi.CustomDestinationDataProvider.initProvider(CustomDestinationDataProvider.java:156)
... 41 more
我的问题是:
1)如何使两个应用程序能够使用相同的 CustomDestinationDataProvider?
2) 如果 2 个应用程序不能使用相同的提供程序,我如何使用相同的服务器/用户/客户端编号访问相同的 BAPI?
这种情况下的限制是(1)我们应该使用 sapjco 和(2)我们只有 BAPI 函数。如果您认为它有问题,可以丢弃 customDestinationDataProvider。顺便说一句,我为长代码和糟糕的格式道歉。
谢谢你。
java - Java 通过 Jco 连接到多个 SAP 系统
我目前正在开发一个需要从 SAP 读取一些数据的小型 Java 应用程序。几乎一切工作正常。我可以连接到 SAP,我可以调用 BAPI 并获得结果,我也可以处理给定的结果。但....
我有两个不同的 SAP 系统(系统 A 和系统 B)。
如果我启动我的应用程序并连接到系统 A,一切都很好。但是在处理了来自系统 A 的所有数据之后,我想调用系统 B(不停止/重新启动我的应用程序)。在这种情况下,我无法连接到系统 B。
我认为我与 SAP 系统建立连接的部分一定有问题。
谁能告诉我如何正确地做到这一点?
这是我的代码:
这就是我建立连接的方式(SapLogOn 和 SapSystem 只是所需参数的包装类)
这是第二部分:
我使用 Java 6 和 JCo3。
问候 LStrike
java - 通过 JCO 访问 SAP 表
我目前使用 SAP JCO 连接到 SAP 并从 SAP 表中获取数据。我使用内部 BAPI 函数从 SAP 表中获取数据。我想知道如何从 SAP 表中获取数据的方法,只需指定表名和应从中检索数据的列。
下面是我用来通过 BAPI 函数获取数据的代码。
非常感谢任何有关如何通过仅指定表名和列来访问 SAP 表的帮助。提前致谢
sap - JCO3 和 JCO2 可以在 Solaris 中共存吗?
SAP Java 连接器 JCO3 库和 JCO2 库可以在 Solaris/Apache/Tomcat 服务器中共存吗?我正在考虑是否可以在不触及现有 JCO2 应用程序的情况下将 JCO3 用于新应用程序。
java - SAP JCO JAVA 无法初始化类 com.sap.conn.jco.JCo
我想使用 SAP JCO 为我的 java 程序选择用户数据。
但我得到的是:
对于测试,我使用示例脚本“StepByStepClient”并且我只修改了它,所以我可以将它用作 Web servlet。
来自 sap jco 的所有文件都在“C:\sapjco30P_11-10005326”上,我在系统 pfad 变量中注册了这个文件夹。
此刻我不知道我的错误在哪里!所以我需要帮助,拜托!
SAP Java 连接器 Java 运行时操作系统:Windows Server 2012 6.2 for amd64 Java VM:1.7.0_60 Oracle Corporation 默认字符集:windows-1252
版本
- JCo API:3.0.11 (2014-04-15)
- JCo 中间件:JavaRfc 2.2.12
- JCo 图书馆:720.612
库路径
- JCo 存档路径:C:\sapjco30P_11-10005326\sapjco3.jar
- JCo 库的路径:C:\sapjco30P_11-10005326\sapjco3.dll
Eclipse Juno XAMPP Tomcat 7
java - 在 32 位窗口中使用 SAP jco 3.0.11 时出现“java.lang.UnsatisfiedLinkError: no sapjco3 in java.library.path”错误
在将 SAPJCO 3.0.11 jar 用于 32 位 windows XP OS 时,我遇到了下面提到的错误。当我从市场下载 32 但 SAPJCO jar 时,我正在使用 zip 库中提到的 StepByStepClient 示例。我下载的 Jar 从来没有 32 位系统的 dll 文件。请让我知道我缺少什么,并请帮助我解决这个问题。
以下是错误:
谢谢,罗希特
java - 使用 Java 代码从 SAP 读取 IDOC
我正在尝试使用 JCoidoc 3.0.11 lib 从 SAP 读取 Idoc,但我面临一些挑战。首先设置 BCE.jcoDestination 和 MYSERVER.jcoServer 的参数,请告知参数的含义,如果可能,请提供示例。
其次,从 SAP 读取 idoc,如何处理?
目前我正在使用 SAPJCoidoc.zip 中的示例,使用文件 IDocServerExample.java。
android - 通过jco连接sap和android
我尝试将 ANDROID 与 SAP (RFC) 连接起来。.....那可能吗 ?我认为这是可能的,因为这个视频显示了断开连接,但我不知道为什么 jco 版本(他使用奇怪的类) https://www.youtube.com/watch?v=hJSkqS-dxkw
我正在使用 Windows 7 (x86) 和 ECLIPSE IDE。
我已将sapjco.jar添加到库项目中,
将这些文件添加到 SYSTEM32 文件夹(sapjcorfc.dll,librfc32.dll)
那是我的代码:
包 com.example.jco32;
导入android.app.Activity;进口 com.sap.mw.jco.*;导入android.os.Bundle;导入 android.view.Menu;导入android.view.MenuItem;导入android.view.View;导入 android.view.View.OnClickListener;导入android.widget.Button;
导入 android.widget.Toast;公共类 MainActivity 扩展 Activity {
公共无效ejecutarjco(){
不幸的是,我得到了下一个错误:
09-26 02:03:48.934: E/AndroidRuntime(670): 致命异常: main 09-26 02:03:48.934: E/AndroidRuntime(670): java.lang.ExceptionInInitializerError 09-26 02:03:48.934: E/AndroidRuntime(670): 在 com.example.jco32.MainActivity.ejecutarjco(MainActivity.java:46) 09-26 02:03:48.934: E/AndroidRuntime(670): 在 com.example.jco32.MainActivity$1。 onClick(MainActivity.java:34) 09-26 02:03:48.934: E/AndroidRuntime(670): 在 android.view.View.performClick(View.java:3511) 09-26 02:03:48.934: E/ AndroidRuntime(670): 在 android.view.View$PerformClick.run(View.java:14105) 09-26 02:03:48.934: E/AndroidRuntime(670): 在 android.os.Handler.handleCallback(Handler.java :605) 09-26 02:03:48.934: E/AndroidRuntime(670): 在 android.os.Handler.dispatchMessage(Handler.java:92) 09-26 02:03:48.934:E/AndroidRuntime(670): 在 android.os.Looper.loop(Looper.java:137) 09-26 02:03:48.934: E/AndroidRuntime(670): 在 android.app.ActivityThread.main(ActivityThread.java :4424) 09-26 02:03:48.934: E/AndroidRuntime(670): 在 java.lang.reflect.Method.invokeNative(Native Method) 09-26 02:03:48.934: E/AndroidRuntime(670): 在java.lang.reflect.Method.invoke(Method.java:511) 09-26 02:03:48.934: E/AndroidRuntime(670): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java :784) 09-26 02:03:48.934: E/AndroidRuntime(670): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 09-26 02:03:48.934: E/AndroidRuntime (670): 在 dalvik.system.NativeStart.main(Native Method) 09-26 02:03:48.934: E/AndroidRuntime(670):137) 09-26 02:03:48.934: E/AndroidRuntime(670): 在 android.app.ActivityThread.main(ActivityThread.java:4424) 09-26 02:03:48.934: E/AndroidRuntime(670): 在java.lang.reflect.Method.invokeNative(Native Method) 09-26 02:03:48.934: E/AndroidRuntime(670): at java.lang.reflect.Method.invoke(Method.java:511) 09-26 02 :03:48.934: E/AndroidRuntime(670): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 09-26 02:03:48.934: E/AndroidRuntime(670): 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 09-26 02:03:48.934: E/AndroidRuntime(670): at dalvik.system.NativeStart.main(Native Method) 09-26 02 :03:48.934: E/AndroidRuntime(670):137) 09-26 02:03:48.934: E/AndroidRuntime(670): 在 android.app.ActivityThread.main(ActivityThread.java:4424) 09-26 02:03:48.934: E/AndroidRuntime(670): 在java.lang.reflect.Method.invokeNative(Native Method) 09-26 02:03:48.934: E/AndroidRuntime(670): at java.lang.reflect.Method.invoke(Method.java:511) 09-26 02 :03:48.934: E/AndroidRuntime(670): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 09-26 02:03:48.934: E/AndroidRuntime(670): 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 09-26 02:03:48.934: E/AndroidRuntime(670): at dalvik.system.NativeStart.main(Native Method) 09-26 02 :03:48.934: E/AndroidRuntime(670):48.934: E/AndroidRuntime(670): 在 java.lang.reflect.Method.invokeNative(Native Method) 09-26 02:03:48.934: E/AndroidRuntime(670): 在 java.lang.reflect.Method.invoke( Method.java:511) 09-26 02:03:48.934: E/AndroidRuntime(670): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 09-26 02:03: 48.934: E/AndroidRuntime(670): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 09-26 02:03:48.934: E/AndroidRuntime(670): 在 dalvik.system.NativeStart .main(本机方法)09-26 02:03:48.934:E/AndroidRuntime(670):48.934: E/AndroidRuntime(670): 在 java.lang.reflect.Method.invokeNative(Native Method) 09-26 02:03:48.934: E/AndroidRuntime(670): 在 java.lang.reflect.Method.invoke( Method.java:511) 09-26 02:03:48.934: E/AndroidRuntime(670): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 09-26 02:03: 48.934: E/AndroidRuntime(670): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 09-26 02:03:48.934: E/AndroidRuntime(670): 在 dalvik.system.NativeStart .main(本机方法)09-26 02:03:48.934:E/AndroidRuntime(670):android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 09-26 02:03:48.934: E/AndroidRuntime(670): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java :551) 09-26 02:03:48.934: E/AndroidRuntime(670): at dalvik.system.NativeStart.main(Native Method) 09-26 02:03:48.934: E/AndroidRuntime(670):android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 09-26 02:03:48.934: E/AndroidRuntime(670): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java :551) 09-26 02:03:48.934: E/AndroidRuntime(670): at dalvik.system.NativeStart.main(Native Method) 09-26 02:03:48.934: E/AndroidRuntime(670):引起:java.lang.ExceptionInInitializerError: JCO.classInitialize(): 无法加载中间件层 'com.sap.mw.jco.rfc.MiddlewareRFC' 09-26 02:03:48.934: E/AndroidRuntime(670): null 09-26 02:03:48.934: E/AndroidRuntime(670): 在 com.sap.mw.jco.JCO.(JCO.java:776) 09-26 02:03:48.934: E/AndroidRuntime(670): ... 13 更多
我希望你的帮助。问候
jco - sapjco 3.x 中 JCoFunction 的迁移
我正在从 JCO2.x 迁移到 3.x。我几乎重写了整个代码,但是这样我就不能动了。
原始 2.x 代码:
我建议的代码:
问题是 JCoFunction 在 3.x 中无法以这种形式实例化。我应该创建函数模板吗?谢谢你的任何提示。