设为首页 收藏本站
查看: 609|回复: 0

[经验分享] Call SAP RFC by JCO

[复制链接]
发表于 2015-9-18 11:09:19 | 显示全部楼层 |阅读模式
  Recently I try to call SAP RFC by .net, although i can connect to SAP successfully, but failed on passing table parameter with multi-columns to RFC. So today try to do that by java. Just log it for use when i want it. The below code is just for testing.
  
  ====================Code Begin==============================
  package sapref;
import com.sap.mw.jco.*;
import java.io.FileInputStream;
import java.io.InputStream;
  import java.util.Properties;
  
public class JavaCallRFC {
    private Properties p = new Properties();
  private static final String POOL_NAME = "MYCONN";
  
    public static JCO.Pool pool;
    public JCO.Repository mRepository;
    public JCO.Client client;
  public JavaCallRFC() {
        try {
            InputStream inStream;
            inStream = new FileInputStream("test.properties");
            p.load(inStream);
            pool = JCO.getClientPoolManager().getPool(POOL_NAME);
            if (pool == null) {
                JCO.addClientPool(POOL_NAME, 100, p);
            }
            client = JCO.getClient(POOL_NAME);
            //We have two methods to create Repository
            //User Pool when create Repository
            mRepository = new JCO.Repository("SAPJcorep", POOL_NAME);
            
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
    //Create function using Repository and IFunctionTemplate
    public JCO.Function createFunction(String name) throws Exception {
        try {
            IFunctionTemplate ft;
            ft = mRepository.getFunctionTemplate(name.toUpperCase());
            if (ft == null) {
                return null;
            } else {
                return ft.getFunction();
            }
        } catch (Exception ex) {
            ex.printStackTrace();
            return null;
        }
    }
  
    public static void main(String[] args) {
        JavaCallRFC javaCallRFC = new JavaCallRFC();
        JCO.Function function;
        try {
            function = javaCallRFC.createFunction("RFC_READ_TABLE");
            if (function == null) {
                System.out.println("Can't create function!");
                return;
            }
            JCO.ParameterList pl = function.getImportParameterList();
            //pass single value parameter to RFC
            pl.setValue("ZTAB_EMPLOYEE", "QUERY_TABLE");
            pl.setValue(";", "DELIMITER");
            //pass table parameter to RFC
            JCO.ParameterList itabList = function.getTableParameterList();
            JCO.Table table = itabList.getTable("FIELDS");
            table.appendRow();
            table.setValue("NAME", 0);
            table.setValue(10, 1);
            table.setValue(10, 2);
            table.appendRow();
            table.setValue("PHONE", 0);
            table.setValue(20, 1);
            table.setValue(20, 2);
            table.appendRow();
            table.setValue("EMAIL", 0);
            table.setValue(30, 1);
            table.setValue(30, 2);
            function.setTableParameterList(itabList);
            //execute the fucntion
            javaCallRFC.client.execute(function);
            JCO.ParameterList outParam = function.getTableParameterList();
            //Get return Table from RFC
            JCO.Table outTable = outParam.getTable("DATA");
            for (int i = 0; i < outTable.getNumRows(); i++) {
                outTable.setRow(i);
                System.out.print(outTable.getString(0));
                System.out.println();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
====================Code End==============================
  =======Properties file content========
  jco.client.client=//Client
jco.client.user=//UserName
  jco.client.passwd=//Password
jco.client.lang=//language
jco.client.sysnr=//system number
jco.client.ashost=//application server
jco.client.mshost=//message server
jco.client.group=// Group
jco.client.r3name=//R3 Name
  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-115298-1-1.html 上篇帖子: SAP MDM 简介 下篇帖子: SAP 接口概述
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表