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. Python判断自定义的参数格式是否正确

    import argparse def args_validation(valid_list, valid_value): assert valid_value in valid_list, 'inv ...

  2. 第五节:Task构造函数之TaskCreationOptions枚举处理父子线程之间的关系。

    一. 整体说明 揭秘: 通过F12查看Task类的源码(详见下面的截图),发现Task类的构造函数有有一个参数为:TaskCreationOptions类型,本章节可以算作是一个扩展章节,主要就来研究 ...

  3. SpringBoot系列: Web应用鉴权思路

    ==============================web 项目鉴权============================== 主要的鉴权方式有:1. 用户名/密码鉴权, 然后通过 Sess ...

  4. $m$ 整除 $10^k$ 的一个充分条件

    若 (1) 既约分数 $\cfrac{n}{m}$ 满足 $0<\cfrac{n}{m}<1$; (2) 分数 $\cfrac{n}{m}$ 可以化为小数部分的一个循环节有 $k$ 位数字 ...

  5. APPLE-SA-2019-3-25-5 iTunes 12.9.4 for Windows

    APPLE-SA-2019-3-25-5 iTunes 12.9.4 for Windows iTunes 12.9.4 for Windows is now available and addres ...

  6. 弄懂promise

    ECMAscript 6 原生提供了 Promise 对象. Promise 对象代表了未来将要发生的事件,用来传递异步操作的消息 有了 Promise 对象,就可以将异步操作以同步操作的流程表达出来 ...

  7. for 循环 与forEach 里面return 的区别

    for 循环里面 return 可以直接终止 跳出 循环 forEach 是中断本次循环 直接 下一个循环 forEach想要取到值之后 直接跳出循环 可以用 try catch let arr = ...

  8. 【原创】大叔经验分享(19)spark on yarn提交任务之后执行进度总是10%

    spark 2.1.1 系统中希望监控spark on yarn任务的执行进度,但是监控过程发现提交任务之后执行进度总是10%,直到执行成功或者失败,进度会突然变为100%,很神奇, 下面看spark ...

  9. Python-爬虫-Beautifulsoup解析

    简介 Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省 ...

  10. 新增项目到GIT仓库中

    在本地新建项目的目录中打开Git Bash命令行工具 运行以下命令,设置全局信息(包括用户名,邮箱地址) git config --global user.name "你的姓名" ...