从Java调用SAP方法

从Java调用SAP方法,java,jakarta-ee,saprfc,sapjco3,Java,Jakarta Ee,Saprfc,Sapjco3,我正在尝试与sap系统建立连接,并且我拥有执行此操作所需的所有连接属性 我正在尽我最大的努力,但我面临着一些我不知道如何解决的问题 我所需要的只是一个简单的代码示例,通过它我将能够将java应用程序与sap系统集成 我浏览了一些网站,但找不到与sap系统连接的解决方案 我正在尝试下面的代码,但我不知道在createDataFile方法中要写什么 import com.sap.conn.jco.ext.DestinationDataProvider; import com.sap.conn.jco

我正在尝试与sap系统建立连接,并且我拥有执行此操作所需的所有连接属性

我正在尽我最大的努力,但我面临着一些我不知道如何解决的问题

我所需要的只是一个简单的代码示例,通过它我将能够将java应用程序与sap系统集成

我浏览了一些网站,但找不到与sap系统连接的解决方案

我正在尝试下面的代码,但我不知道在
createDataFile
方法中要写什么

import com.sap.conn.jco.ext.DestinationDataProvider;
import com.sap.conn.jco.JCoDestination;
import com.sap.conn.jco.JCoException;
import com.sap.conn.jco.JCoDestinationManager;
import java.util.Properties;
public class TestMySAP {

    public static void main(String[] args) {
        // This will create a file called mySAPSystem.jcoDestination
        String DESTINATION_NAME1 = "mySAPSystem";
        Properties connectProperties = new Properties();
        connectProperties.setProperty(DestinationDataProvider.JCO_ASHOST, "10.129.19.151"); //host
        connectProperties.setProperty(DestinationDataProvider.JCO_SYSNR,  "00"); //system number
        connectProperties.setProperty(DestinationDataProvider.JCO_CLIENT, "442"); //client number
        connectProperties.setProperty(DestinationDataProvider.JCO_USER,   "MPOSRFC");
        connectProperties.setProperty(DestinationDataProvider.JCO_PASSWD, "123456");
        connectProperties.setProperty(DestinationDataProvider.JCO_LANG,   "en");
        createDataFile(DESTINATION_NAME1, connectProperties);
        // This will use that destination file to connect to SAP
        try {

            JCoDestination destination = JCoDestinationManager.getDestination("mySAPSystem");
            System.out.println("Attributes:");
            System.out.println(destination.getAttributes());
            System.out.println();
            destination.ping();

        } catch (JCoException e){
            e.printStackTrace();
        }

    }
}

与评论中问题的第二部分相关,对于BAPI函数,您可以尝试以下代码段:

public static void getCompanyCodes throws JCoException {
        JCoDestination destination = JCoDestinationManager.getDestination(DESTINATION_NAME1);
        JCoFunction function = destination.getRepository().getFunction("BAPI_COMPANYCODE_GETLIST");
        if (function == null)
            throw new RuntimeException("Function not found in SAP.");
        try {
            function.execute(destination);
        } catch (AbapException e) {
            System.out.println(e.toString());
            return;
        }

        JCoStructure returnStructure = function.getExportParameterList().getStructure("RETURN");
        if (!(returnStructure.getString("TYPE").equals("") || returnStructure.getString("TYPE").equals("S"))) {
            throw new RuntimeException(returnStructure.getString("MESSAGE"));
        }

        JCoTable codes = function.getTableParameterList().getTable("COMPANYCODE_LIST");
        for (int i = 0; i < codes.getNumRows(); i++) {
            codes.setRow(i);
            System.out.println(codes.getString("COMP_CODE") + '\t' + codes.getString("COMP_NAME"));
        }
    }
publicstaticvoid getCompanyCodes抛出JCoException{
JCoDestination destination=JCoDestinationManager.getDestination(destination_NAME1);
JCoFunction function=destination.getRepository().getFunction(“BAPI_COMPANYCODE_GETLIST”);
if(函数==null)
抛出新的RuntimeException(“在SAP中找不到函数”);
试一试{
执行(目的地);
}捕获(AbapException e){
System.out.println(例如toString());
返回;
}
JCoStructure returnStructure=function.getExportParameterList().getStructure(“RETURN”);
if(!(returnStructure.getString(“TYPE”).equals(“”| | returnStructure.getString(“TYPE”).equals(“S”)){
抛出新的RuntimeException(returnStructure.getString(“消息”);
}
JCoTable codes=function.getTableParameterList().getTable(“公司代码列表”);
对于(int i=0;i

您可以在此处找到BAPI函数列表:

对您的第一个问题好友进行了良好的格式化(帮助您进行了一些编辑)。干得好,祝你好运!你犯了什么错误@Abishaki在@Afgan:com.sap.conn.jco.JCoException:(102)jco_错误_通信:目标mySAPSystem初始化失败:连接到sap网关失败连接参数:TYPE=A DEST=mySAPSystem ASHOST=10.129.19.151 SYSNR=00个=1@Abhisheksharma在问题中添加异常显然您成功地创建了“数据文件”,否则会出现不同的异常。JCo默认DestinationDataProvider将搜索名为
.jcoDestination
的文本文件,其中包含用于此目标的所有登录属性。