PHP通过RFC调用SAP函数

因为需要与SAP ERP做串接,所以百度了一波。

以前用的是java的sapjco来连的,但是java的开发效率比较低,就找了找php的。

参考的网址是https://php7-sapnwrfc.readthedocs.io/zh/latest/。

环境是CentOS 7.2 

PHP的版本是7.1

首先第一步是安装 SAP NW RFC 库。

这就需要你去找你们SAP的人去SAP官网上面下载SAP NW RFC SDK 7.20了。没有SAP账号的是无法下载的。

下载linux版本的,解压后会得到一个文件夹nwrfcsdk

将这个文件夹原封不动的上传到你的服务器上面。

我放在了home目录下,`/home/nwrfcsdk`

然后执行以下命令

mkdir /usr/sap

cd /usr/sap

cp -r /home/nwrfcsdk /usr/sap/

echo /usr/sap/nwrfcsdk/lib > /etc/ld.so.conf.d/nwrfcsdk.conf

ldconfig

到这里为止安装就结束了。

sdk安装完成后就是安装php扩展了。

cd /home

git clone https://github.com/gkralik/php7-sapnwrfc.git

cd php7-sapnwrfc

phpize

./configure --with-php-config=/usr/local/php/bin/php-config

make

sudo make install

echo extension="sapnwrfc.so" >> /usr/local/php/etc/php.ini

php -m |grep sapnwrfc

php-fpm reload

扩展安装成功后,重启一下php-fpm

kill -USR2 php-fpm的进程号 (我其实是直接重启容器的)

这里的php-fpm进程号要master进程。

INT, TERM 立刻终止

QUIT 平滑终止

USR1 重新打开日志文件

USR2 平滑重载所有worker进程并重新载入配置和二进制模块


环境配置ok后,就可以开始写代码测试了。

首先是链接参数,找SAP的对接人问一下。

$parameters = [

    'ashost' => '127.0.0.1', // sap服务器IP

    'sysnr'  => '00', //实例编号

    'client' => '888 ', // 客户端

    'user' => 'username',

    'passwd' => 'password',

];

// 然后是链接,这里失败了会抛出异常。

$connection = new SAPNWRFC\Connection($parameters);

$remoteFunction = $connection->getFunction('你要调用的函数名称');

// 传入参数,以数组的形式传入就可以了

$param = [

'param1' => 'val',

// 'param2' => 'val',

];

// 去掉返回值的空格,SAP会自动在右边用空格填充长度

$options = [

    'rtrim' => true

];

$returnValue = $remoteFunction->invoke($param,$options);

$connection->close();

下次还是用markdown来写吧。 这个富文本编辑器不适合写这种。。。。

早睡早起保平安!

你可能感兴趣的:(PHP通过RFC调用SAP函数)