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去掉,