abap调用java

Python019

abap调用java,第1张

到底谁调用谁啊?

1.ABAP call Java

REPORT zexecute.

*实例 abap调用java文件

DATA para TYPE string.

PARAMETER mytext TYPE objectname.

PARAMETER mytext1 TYPE objectname.

para = 'Test'."class name

CONCATENATE para mytext mytext1 INTO para SEPARATED BY space.

CALL METHOD cl_gui_frontend_services=>execute

EXPORTING

application= 'JAVA' "需要执行的语言

parameter = para "参数

default_directory = 'D:\' "路径

minimized = 'X'

synchronous= 'WAIT'

operation = 'OPEN'

EXCEPTIONS

cntl_error = 1

error_no_gui = 2

bad_parameter = 3

file_not_found = 4

path_not_found = 5

file_extension_unknown = 6

error_execute_failed = 7

synchronous_failed = 8

not_supported_by_gui = 9

OTHERS = 10.

*

*

WRITE 'Success'.

2.Java call ABAP

用java来访问SAP的方式不多,一般是JCO,要不就是webservice

要下个JCO.jar包

import com.sap.mw.jco.*

JCO.Client mConnection = null

mConnection = JCO.createClient(

"400", // SAP client

"arasoft", // userid

"********", // password

"EN", // language

"host", // application server host name

"00") // SAP system number

void connect()//Connecting to SAP

void disconnect() //Disconnecting from SAP

void execute(JCO.Function function) //Executing an RFM

JAVA调用SAP报错叫做JCo二次部署异常。 JCo的原理是通过加载本地驱动实现的,因此在web项目里面在不重启server的情况下是无法重复加载sapjco3.dll驱动的,由于JCo是通过JNI实现的,即加载sapjco3.dll实现Java与SAP的通信,而JNI加载的class没办法被classloader卸载导致不能重复

将sapjco3.dll加到web容器(resin)的lib中,而将项目的WEB-INF\lib去掉,