saprfc

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 就是最终没有乱码的数据
  }

 `

 

原文地址:https://www.cnblogs.com/chrdai/p/10037872.html