首页 > 编程语言 >JAVA调用ABAP RFC接口-DEMO

JAVA调用ABAP RFC接口-DEMO

时间:2023-07-03 20:35:57浏览次数:30  
标签:SAP JAVA String DEMO SAPROUTER RFC getJCO JCO public

package com.swift.oa;



import com.sap.conn.jco.*;

/**
 * @Author: Wriprin
 * @Date: 2022/11/25 17:20
 * @Version 1.0
 */
public class GetMaraInfo {
    public static void main(String[] args) throws JCoException {

        // Configuration of SAP connection
        String JCO_HOST = "192.168.1.250";
        String JCO_SYNSNR = "00";
        String JCO_CLIENT = "000";
        String JCO_USER = "ddic";
        String JCO_PASSWD = "123456789qq";
        String JCO_LANG = "ZH";
        String JCO_POOL_CAPACITY = "30";
        String JCO_PEAK_LIMIT = "100";
        String JCO_SAPROUTER = "/H/192.168.1.250";
        JCO_SAPROUTER="";

        SapConn con = new SapConn(JCO_HOST, JCO_SYNSNR, JCO_CLIENT, JCO_USER, JCO_PASSWD, JCO_LANG, JCO_POOL_CAPACITY, JCO_PEAK_LIMIT, JCO_SAPROUTER);
        JCoDestination jCoDestination = SAPConnUtil.connect(con);

        try {
            // 获取调用 RFC 函数对象
            JCoFunction func = jCoDestination.getRepository().getFunction("ZRFC");

            // 配置传入参数
            JCoParameterList importParameterList = func.getImportParameterList();
            importParameterList.setValue("NAME","Lucy");
            importParameterList.setValue("MATERIAL","A02");
            
            JCoTable cerTable = func.getTableParameterList().getTable("GT_PRITEM22");
            
            

            
            
            cerTable.appendRow();
            cerTable.setValue("PREQ_ITEM","10");
            cerTable.setValue( "MATERIAL","A08");
            cerTable.setValue( "PLANT","8010");
            cerTable.setValue( "QUANTITY","6666");
            
            
            cerTable.appendRow();
            cerTable.setValue("PREQ_ITEM","20");
            cerTable.setValue( "MATERIAL","A02");
            cerTable.setValue( "PLANT","8010");
            cerTable.setValue( "QUANTITY","555");
            
   
            
            // 调用并获取返回值
            func.execute(jCoDestination);
            

            
   
            String R_NUMBER = func.getExportParameterList().getString("NUMBER");
            
            JCoTable table = func.getTableParameterList().getTable("RETURN");
            
            for(int i=0;i<table.getNumRows();i++)
            {
                table.setRow(i);
                String ID= table.getString("ID");
                String TYPE = table.getString("TYPE");
                if(TYPE.equals("E"))
                {
                    String MESSAGE_V1 = table.getString("MESSAGE");
                    System.out.println(TYPE+"==>"+MESSAGE_V1+"==>"+ID);
                }
            }
            
            
            //System.out.println("ME51N返回采购申请单号===>"+R_NUMBER);
            
            
            
            
//            // 获取 内表 - ET_MARA
//            JCoTable maraTable = func.getTableParameterList().getTable("ET_MARA");
//
//            // 循环输出 Table 数据
//            for (int i = 0; i < maraTable.getNumRows(); i++) {
//                maraTable.setRow(i);
//
//                String matnr = maraTable.getString("MATNR");
//                String esdra = maraTable.getString("ERSDA");
//                String ernam = maraTable.getString("ERNAM");
//                String matkl = maraTable.getString("MATKL");
//                String meins = maraTable.getString("MEINS");
//
//                System.out.println("物料编号:" + matnr + " - 创建日期:" + esdra + " - 创建人:" + ernam + " - 物料组:" + matkl + " - 单位:" + meins);
//            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
package com.swift.oa;



/**
 * @Author: Wriprin
 * @Date: 2022/11/25 17:04
 * @Version 1.0
 */
public class SapConn {
    // SAP server
    private String JCO_ASHOST;
    // SAP system number
    private String JCO_SYSNR;
    // SAP client
    private String JCO_CLIENT;
    // SAP user name
    private String JCO_USER;
    // SAP user password
    private String JCO_PASSWD;
    // SAP language
    private String JCO_LANG;
    // MAX connection
    private String JCO_POOL_CAPACITY;
    // MAX thread
    private String JCO_PEAK_LIMIT;
    // SAP ROUTER
    private String JCO_SAPROUTER;

    public SapConn(String JCO_ASHOST, String JCO_SYSNR, String JCO_CLIENT, String JCO_USER,
                   String JCO_PASSWD, String JCO_LANG, String JCO_POOL_CAPACITY, String JCO_PEAK_LIMIT,
                   String JCO_SAPROUTER) {
        this.JCO_ASHOST = JCO_ASHOST;
        this.JCO_SYSNR = JCO_SYSNR;
        this.JCO_CLIENT = JCO_CLIENT;
        this.JCO_USER = JCO_USER;
        this.JCO_PASSWD = JCO_PASSWD;
        this.JCO_LANG = JCO_LANG;
        this.JCO_POOL_CAPACITY = JCO_POOL_CAPACITY;
        this.JCO_PEAK_LIMIT = JCO_PEAK_LIMIT;
        this.JCO_SAPROUTER = JCO_SAPROUTER;
    }

    public SapConn() {
    }

    public String getJCO_ASHOST() {
        return JCO_ASHOST;
    }

    public void setJCO_ASHOST(String JCO_ASHOST) {
        this.JCO_ASHOST = JCO_ASHOST;
    }

    public String getJCO_SYSNR() {
        return JCO_SYSNR;
    }

    public void setJCO_SYSNR(String JCO_SYSNR) {
        this.JCO_SYSNR = JCO_SYSNR;
    }

    public String getJCO_CLIENT() {
        return JCO_CLIENT;
    }

    public void setJCO_CLIENT(String JCO_CLIENT) {
        this.JCO_CLIENT = JCO_CLIENT;
    }

    public String getJCO_USER() {
        return JCO_USER;
    }

    public void setJCO_USER(String JCO_USER) {
        this.JCO_USER = JCO_USER;
    }

    public String getJCO_PASSWD() {
        return JCO_PASSWD;
    }

    public void setJCO_PASSWD(String JCO_PASSWD) {
        this.JCO_PASSWD = JCO_PASSWD;
    }

    public String getJCO_LANG() {
        return JCO_LANG;
    }

    public void setJCO_LANG(String JCO_LANG) {
        this.JCO_LANG = JCO_LANG;
    }

    public String getJCO_POOL_CAPACITY() {
        return JCO_POOL_CAPACITY;
    }

    public void setJCO_POOL_CAPACITY(String JCO_POOL_CAPACITY) {
        this.JCO_POOL_CAPACITY = JCO_POOL_CAPACITY;
    }

    public String getJCO_PEAK_LIMIT() {
        return JCO_PEAK_LIMIT;
    }

    public void setJCO_PEAK_LIMIT(String JCO_PEAK_LIMIT) {
        this.JCO_PEAK_LIMIT = JCO_PEAK_LIMIT;
    }

    public String getJCO_SAPROUTER() {
        return JCO_SAPROUTER;
    }

    public void setJCO_SAPROUTER(String JCO_SAPROUTER) {
        this.JCO_SAPROUTER = JCO_SAPROUTER;
    }

    @Override
    public String toString() {
        return "SapConn{" +
                "JCO_ASHOST='" + JCO_ASHOST + '\'' +
                ", JCO_SYSNR='" + JCO_SYSNR + '\'' +
                ", JCO_CLIENT='" + JCO_CLIENT + '\'' +
                ", JCO_USER='" + JCO_USER + '\'' +
                ", JCO_PASSWD='" + JCO_PASSWD + '\'' +
                ", JCO_LANG='" + JCO_LANG + '\'' +
                ", JCO_POOL_CAPACITY='" + JCO_POOL_CAPACITY + '\'' +
                ", JCO_PEAK_LIMIT='" + JCO_PEAK_LIMIT + '\'' +
                ", JCO_SAPROUTER='" + JCO_SAPROUTER + '\'' +
                '}';
    }
}
package com.swift.oa;


import java.io.File;
import java.io.FileOutputStream;
import java.util.Properties;

import com.sap.conn.jco.*;
import com.sap.conn.jco.ext.DestinationDataProvider;


/**
 * @Author: Wriprin
 * @Date: 2022/11/25 17:01
 * @Version 1.0
 */
public class SAPConnUtil {
    private static final String ABAP_AS_POOLED = "ABAP_AS_WITH_POOL";

    /**
     * Establish SAP interface
     * @param name  ABAP name
     * @param suffix    file suffix
     * @param properties    file content
     */
    private static void createDataFile(String name, String suffix, Properties properties){
        File cfg = new File(name+"."+suffix);
        if(cfg.exists()){
            cfg.deleteOnExit();
        }
        try{
            FileOutputStream fos = new FileOutputStream(cfg, false);
            properties.store(fos, "for tests only !");
            fos.close();
        }catch (Exception e){
            System.out.println("Create Data file fault, error msg: " + e.toString());
            throw new RuntimeException("Unable to create the destination file " + cfg.getName(), e);
        }
    }

    /**
     * Init SAP connection
     */
    private static void initProperties(SapConn sapConn) {
        Properties connectProperties = new Properties();
        // SAP server location
        connectProperties.setProperty(DestinationDataProvider.JCO_ASHOST, sapConn.getJCO_ASHOST());
        // SAP system number
        connectProperties.setProperty(DestinationDataProvider.JCO_SYSNR,  sapConn.getJCO_SYSNR());
        // SAP client
        connectProperties.setProperty(DestinationDataProvider.JCO_CLIENT, sapConn.getJCO_CLIENT());
        // SAP user ID
        connectProperties.setProperty(DestinationDataProvider.JCO_USER,   sapConn.getJCO_USER());
        // SAP user PW
        connectProperties.setProperty(DestinationDataProvider.JCO_PASSWD, sapConn.getJCO_PASSWD());
        // SAP language
        connectProperties.setProperty(DestinationDataProvider.JCO_LANG,   sapConn.getJCO_LANG());
        // MAX connection
        connectProperties.setProperty(DestinationDataProvider.JCO_POOL_CAPACITY, sapConn.getJCO_POOL_CAPACITY());
        // MAX connection threads
        connectProperties.setProperty(DestinationDataProvider.JCO_PEAK_LIMIT, sapConn.getJCO_PEAK_LIMIT());
        // SAP ROUTER
        connectProperties.setProperty(DestinationDataProvider.JCO_SAPROUTER, sapConn.getJCO_SAPROUTER());

        createDataFile(ABAP_AS_POOLED, "jcoDestination", connectProperties);
    }

    /**
     * Get SAP connection
     * @return  SAP connection object
     */
    public static JCoDestination connect(SapConn sapConn){
        //System.out.println("Connecting to SAP...");
        JCoDestination destination = null;
        initProperties(sapConn);
        try {
            destination = JCoDestinationManager.getDestination(ABAP_AS_POOLED);
            destination.ping();
            //System.out.println("Connection established.");
        } catch (JCoException e) {
            System.out.println("Connect SAP fault, error msg: " + e.toString());
        }
        return destination;
    }
}

 

标签:SAP,JAVA,String,DEMO,SAPROUTER,RFC,getJCO,JCO,public
From: https://www.cnblogs.com/hua900822/p/17523927.html

相关文章

  • JavaScript(三)Array的高阶函数
    map、reducemap:map()方法定义在JavaScript的Array中,接收一个函数对象作为参数,函数定义运算规则,对array中的每个元素进行运算,结果是一个新的array。functionpow(x){returnx*x;}vararr=[1,2,3,4,5,6,7,8,9];varresults=arr.map(pow);//[1,4,9......
  • JavaScript(一)基础
    JS引入到文件嵌入到html文件中,在<header>或<body>中使用<script><script> vari=10; console.log(i);</script>引入JS文件,在<header>或<body>中使用<script><scriptsrc="./index3_script.js"type="text/j......
  • 暑假Java学习第二周——第二天
    7.3键盘录入及录入求和:importjava.util.Scanner;publicclassTest{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);System.out.println("请输入第一个数字");inti1=sc.nextInt();System.out.println("请输入第二个数字");inti2=sc.nex......
  • 如何在JAVA后端实现跨域请求
     1.  什么是跨域请求 跨域请求是指浏览器向不同域名的服务器发送请求,例如从http://www.a.com向http://www.b.com发送请求。由于浏览器的同源策略,跨域请求会受到限制,需要服务器端或客户端进行处理。同源策略是为了保证用户信息的安全,防止恶意的网站窃取数据。举例说明:假......
  • Java框架中常用的几种成熟的token生成框架对比
    Java框架中常用的几种成熟的token生成框架有:SpringSecurity:一个基于Spring的安全框架,提供了声明式的安全访问控制解决方案,支持多种认证和授权机制,如OAuth2.0、JWT等。ApacheShiro:一个轻量级的Java安全框架,提供了身份认证、授权、加密、会话管理等功能,支持多种数据源和缓存实......
  • Idea 根据表结构生成 java 实体
    Idea根据表结构生成java实体  1、配置mysql 2、在连接后的任意一张表上右键,修改脚本 修改GeneratePOJOs.groovyimportcom.intellij.database.model.DasTableimportcom.intellij.database.model.ObjectKindimportcom.intellij.database.util.Caseimport......
  • JMH – Java基准测试
    官方资源官方Github样例应用场景对要使用的数据结构不确定,不知道谁的性能更好对历史方法代码重构,要评判改造之后的性能提升多少(我要做的场景)想准确地知道某个方法需要执行多长时间,以及执行时间和输入之间的相关性对比接口不同实现在给定条件下的吞吐量查看多少百分比的......
  • Java 将秒转化为xx分xx秒
    代码privatestaticStringgetMinutes(intseconds){if(seconds>0){intremainder=seconds%60;intminutes=(seconds-remainder)/60;Stringminute=String.valueOf(minutes).length()<2?"0"+......
  • mac m1 安装java性能监控工具VisualVM 2.1
    macm1安装java性能监控工具VisualVM2.1.6背景本地已经安装了java8,在终端输入jvisualvm提示没有安装benjie@benjiedeMBP~%jvisualvmTheoperationcouldn’tbecompleted.UnabletolocateaJavaRuntimethatsupportsjvisualvm.Pleasevisithttp://www.java.com......
  • spring报错-Caused by: java.lang.IllegalArgumentException: Unsupported class file
    这个错误原因是因为JDK版本过高,改一下版本就行了把里面的19改成8这样就行了......