PHP在使用saprfc的时候,首先需要安装 saprfc 拓展,然后在引入saprfc.php类库,最后在使用。
 
一、PHP saprfc拓展的安装(Linux):
 
安装方法:
 
安装时需要 rfcsdk包 和 文件librfccm.so (可能需要自行去下载一下)
 
[root@down ~]# tar -zxf saprfc-1.4.1.tar.gz
[root@down ~]# cp -R saprfc-1.4.1 /usr/src
[root@down ~]# mkdir /opt/SAP
[root@down ~]# cp -R rfcsdk /opt/SAP/
[root@down ~]# cp librfccm.so /opt/SAP/rfcsdk/lib/
[root@down ~]# cd /usr/src/saprfc-1.4.1
[root@down saprfc-1.4.1]# export SAPRFC_DIR=/opt/SAP/rfcsdk/
[root@down saprfc-1.4.1]# export PATH=$SAPRFC_DIR/bin:$PATH
[root@down saprfc-1.4.1]# phpize
[root@down saprfc-1.4.1]# ./configure
[root@down saprfc-1.4.1]# make
[root@down saprfc-1.4.1]# make install
[root@down saprfc-1.4.1]# echo extension=saprfc.so >> /etc/php.d/saprfc.ini
[root@down saprfc-1.4.1]# echo extension=saprfc.so >> /etc/php.ini
[root@down saprfc-1.4.1]# service httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]
 
如果发现apache报Unable to load dynamic library '/usr/lib64/php/modules/saprfc.so' - libstdc++.so.5的错误,需要另外安装两个类库:
 
yum install -y compat-libstdc++-33
 
yum install -y libstdc++.so.5
 
安装好之后需要重启apache
 
给一个安装参考链接:linux环境下,saprfc拓展安装方法:https://blog.csdn.net/qq_40382264/article/details/80248482
 
二、代码示例:
<?php
// 需安装saprfc拓展,并引入saprfc类库
include 'saprfc.php';
// Create saprfc-instance
$sap = new saprfc(array(
"logindata"=>array(
"ASHOST" => '192.168.18.101',// application server,必须是IP
"SYSNR" => '00', // system number,固定 00
"CLIENT" => '140', // client,每个都不一样
"USER" => 'user1', // user,账号
"PASSWD" => 'password1', // password,密码
"CODEPAGE" => '6240', // chart set,编码,6420:简体中文
),
"show_errors" => true, // let class printout errors
"debug" => true // detailed debugging information
)
);
// Call-Function
$result=$sap->callFunction("YSD_TEST_TO400",// 函数名
array(
array("IMPORT", "IV_BEGTIME", '20181128'),// IMPORT传参,参数视接口而定
array("IMPORT", "IV_ENDTIME", '20181129'),
array("TABLE","TE_ORDERINFO",array()), // 返回值,参数视接口而定
)
);
//若数据返回成功
if($sap->getStatus() == SAPRFC_OK){
$data = isset($result['TE_ORDERINFO']) ? $result['ET_ORDERINFO'] : array();
//转码
foreach ($data as $key => $val){
foreach($val as $k => $v){
$data[$key][$k] = iconv('GB2312','UTF-8',$v);
}
}
var_dump($data); // 这个 $data 就是最终没有乱码的数据
}

`

saprfc的更多相关文章

  1. php5.2通过saprfc扩展远程连接sap730成功案例

    公司刚上sap系统,由于资金有限,sap与其它系统的数据交换需要公司内部实现.于是,领导决定入库申请流程需要在sap与OA系统里实现电子签核流,重担果然落到我的身上.好在我只负责OA,还一位同事负责s ...

  2. PEAR安装

    看到PEAR章节,提到安装PEAR需要go-pear.bat,我机器上的PHP(v7.0.8)目录下,并没有go-pear.bat这个文件,网上查了一遍,怎么说的都有,最后还是在官网上找到解决方案. ...

  3. Linux的一个暴力破解工具九头蛇hydra

    首先还是书写本文的 参考档:http://www.cnblogs.com/mchina/archive/2013/01/01/2840815.html 工具介绍:原文为官方英文解释本人给翻译下 数量最 ...

  4. [转]Linux下的暴力密码破解工具Hydra详解

    摘自:http://linzhibin824.blog.163.com/blog/static/735577102013144223127/ 这款暴力密码破解工具相当强大,支持几乎所有协议的在线密码破 ...

  5. 实战项目:通过当当API将订单抓取到SAP(二)

    上一篇博客,我们引用了log4net 这个.这里简单介绍下,为什么引用这个. log4net是记录程序日志信息的,是一个功能著名的开源日志记录组件.利用log4net可以方便地将日志信息记录到文件.控 ...

  6. ABAP-1-会计凭证批量数据导入本地ACCESS

    公司会计凭证导入ACCESS数据库,需要发送给审计,原先的方案是采用DEPHI开发的功能(调用函数获取会计凭证信息,然后INSERT到ACCESS数据表),运行速度非常慢,业务方要求对该功能进行优化, ...

  7. 外购半成品回写PR时将同一供应商同一编码的PR合并数量回写

    '); --PR 净需求 '); ---加上PR回写逻辑后 '); ---加上PR回写逻辑后 ') order by item; ---最终回写去SAP的数据 ) as LGORT ,'SAPRFC' ...

  8. SO\PR\MO\排产回写的数据如下

    QTYOPEN(WMENG).EDATU(promised_mat_availdate).... insert into OUT_ORDER_RES ' ; --PR 净需求 ' ; ---加上PR回 ...

  9. 物料没加DUMMY

    会加入DUMMY的表 IN_ITEM,IN_ITEM_SITE,IN_SALES_ORDER 加入DUMMY的存储过程名为SAP_MATERIAL_SO. FP_CHANGE_MO_ROUTING的第 ...

随机推荐

  1. phpcms 标题设置

    phpcms v9网站首页的标题可以控制,但是栏目页,内容页的标题非常的长,用户体验不好修改模板文件header html的<title> < title>改成 phpcms ...

  2. Tomcat设计模式

    omcat 系统架构与设计模式,第 2 部分 设计模式分析 系列内容: 此内容是该系列 2 部分中的第 2 部分: Tomcat 系统架构与设计模式 门面设计模式 门面设计模式在 Tomcat 中有多 ...

  3. python 实现简单卷积网络框架

    第一步定义卷积核类: class Filter(object): # 滤波器类 对卷积核进行初始化 def __init__(self,width,height,depth): # initializ ...

  4. scala可变var与不可变val的理解

    我们定义变量的时候分为var可变变量和val不可变变量. 我们使用容器的时候也分为可变容器和不可变容器. List和Tuple本身就是不可变的,set和map分为可变和不可变的,默认为不可变. 我们看 ...

  5. 关于模拟I2C的一些问题???

    1.在调试BH1750时发现stm32f103rb单片机用模拟I2C通讯时引脚使用开漏模式能正常读出来数据,使用推挽模式则完全无法通讯,发送地址后从机没有应答? https://blog.csdn.n ...

  6. spring事务源码分析结合mybatis源码(三)

    下面将结合mybatis源码来分析下,这种持久化框架是如何对connection使用,来达到spring事务的控制. 想要在把mybatis跟spring整合都需要这样一个jar包:mybatis-s ...

  7. Android获取虚拟软键盘高度

    public static int getDpi(Context context) { int dpi = 0; WindowManager windowManager = (WindowManage ...

  8. k64 datasheet学习笔记39---Programmable Delay Block (PDB)

    0.前言 TODO 1.特性 TODO 4. 功能描述 4.1 PDB pre-trigger and trigger outputs PDB包含一个计数器,它的输出可以跟几个不同的数字值比较.如果P ...

  9. resultset 查询时返回多个相同值

    背景 做个简单的接口开发,拿到的平台比较不理想,好久没重新搭建一个了,正好练练手.用了基础的servlet,maven,logback(log4j不支持格式化,比较烦人),fastjson,druid ...

  10. QML ListView json

    1.main.cpp #include <QGuiApplication> #include <QQmlApplicationEngine> #include <QQml ...