php7安装sapnwrfc拓展 对接sap

1 篇文章 0 订阅

集团内部开发了一个 sap系统,使用语言是abap

后来用php又开发了一个erp系统,现在要把 php 的系统和 sap的系统打通对接

php版本是7.1,服务器环境是centos , 这里需要使用到一个php7拓展 sapnwrfc

php7拓展 sapnwrfc 介绍 https://php7-sapnwrfc.readthedocs.io/zh/latest/introduction.html

php7-sapnwrfc 扩展封装了 SAP NetWeaver RFC 库 并且使用提供的方法允许 PHP开发者调用开启了远程调用的ABAP模块。

一,在服务器上安装 sapnwrfc 的 sdk 环境

下载sapnwrfc 的sdk https://github.com/mikewolfli/sapnwrfcsdk

linux/centos系统使用的是红色箭头的压缩包

下载后解压该压缩包 得到一个 nwrfcsdk 文件夹

在服务器新建一个package文件夹 把 nwrfcsdk 文件夹上传到 package文件夹内

创建 /usr/sap 目录

复制上传的文件夹到 /usr/sap 目录中

命令如下:

[root@centos ~]# mkdir package
[root@centos ~]# ll
total 4
drwxr-xr-x 2 root root 4096 May 10 08:50 package
[root@centos ~]# cd package
[root@centos package]# ll
total 4
drwxr-xr-x 7 root root 4096 May 10 08:50 nwrfcsdk

[root@centos package]# mkdir /usr/sap
[root@centos package]# cp nwrfcsdk -r /usr/sap/nwrfcsdk
[root@centos package]# cd /usr/sap
[root@centos sap]# ll
total 4
drwxr-xr-x 7 root root 4096 May 10 08:53 nwrfcsdk

[root@centos lib]# chmod -R 755 /usr/sap

新建文件 /etc/ld.so.conf.d/nwrfcsdk.conf 并编辑内容如下

[root@centos sap]# vi /etc/ld.so.conf.d/nwrfcsdk.conf

## 输入以下内容
/usr/sap/nwrfcsdk/lib

:wq 保存退出

## 使配置生效
[root@centos sap]# ldconfig

至此 sdk环境安装完毕

二、安装 php7-sapnwrfc

下载地址:https://github.com/yuanhuiqiang/php7-sapnwrfc

[root@centos sap]# cd ~/package

[root@centos package]# git clone https://github.com/yuanhuiqiang/php7-sapnwrfc
Cloning into 'php7-sapnwrfc'...
remote: Enumerating objects: 9, done.
remote: Counting objects: 100% (9/9), done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 1409 (delta 0), reused 3 (delta 0), pack-reused 1400
Receiving objects: 100% (1409/1409), 6.72 MiB | 2.16 MiB/s, done.
Resolving deltas: 100% (839/839), done.

[root@centos package]# ll
total 8
drwxr-xr-x 7 root root 4096 May 10 08:50 nwrfcsdk
drwxr-xr-x 6 root root 4096 May 10 09:02 php7-sapnwrfc

切换到 php7-sapnwrfc 使用php安装拓展方式安装

命令如下

[centos@centos package]# cd php7-sapnwrfc

[centos@centos php7-sapnwrfc]# phpize
Configuring for:
PHP Api Version:         20151012
Zend Module Api No:      20151012
Zend Extension Api No:   320151012


[centos@centos php7-sapnwrfc]# ./configure --with-php-config=/usr/bin/php-config

[centos@centos php7-sapnwrfc]# make && make install

编辑 /etc/php.ini 添加拓展  sapnwrfc.so

[havshark@zhj_centos php7-sapnwrfc]# vi /etc/php.ini

## 添加一行
extension=sapnwrfc.so

:wq 保存退出

重启 php-fpm 即可看到拓展开启

[centos@centos php7-sapnwrfc]# service php-fpm restart
Redirecting to /bin/systemctl restart  php-fpm.service

[centos@centos php7-sapnwrfc]# php -m

## sapnwrfc就是拓展了
sapnwrfc
session
shmop
SimpleXML
sockets
SPL
sqlite3
standard
sysvmsg
sysvsem
sysvshm
tokenizer
wddx
xml
xmlreader
xmlwriter
xsl
zip
zlib

[Zend Modules]

 

三、使用sapnwrfc

<?php

use SAPNWRFC\Connection as SapConnection;
use SAPNWRFC\Exception as SapException;

$config = [
    'ashost' => '192.168.1.1', // sap服务器地址
    'sysnr'  => '00',  //sap给的
    'client' => '123', //sap给的
    'user'   => 'YOUR USERNAME', //sap给的
    'passwd' => 'YOUR PASSWORD', //sap给的
    'trace'  => SapConnection::TRACE_LEVEL_OFF,
];

try {
    $c = new SapConnection($config);

    $f = $c->getFunction('STFC_CHANGING'); //sap的方法/函数
    $result = $f->invoke([   //给sap传参数
        'START_VALUE' => 0,
        'COUNTER' => 1,
    ]);

    var_dump($result); //sap的返回结果
    /*
    * array(2) {
    *   ["COUNTER"]=>
    *   int(2)
    *   ["RESULT"]=>
    *   int(1)
    *   }
    */
} catch(SapException $ex) {
    echo 'Exception: ' . $ex->getMessage() . PHP_EOL;
}

如有不懂,请留言

 

 

 

 

 

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
SAP RFC 是一种与 SAP 系统进行交互的协议,它可以实现前端与 SAP 系统之间的数据交互。前端对接 SAP RFC 需要使用 SAP 提供的 SAP NW RFC SDK,该 SDK 提供了一组 C/C++ 函数库,用于实现与 SAP 系统之间的数据交互。因此,前端需要先将 SAP NW RFC SDK 集成到前端项目中,然后使用相关的函数库进行开发。 以下是一个简单的示例,说明前端如何通过 SAP NW RFC SDK 对接 SAP RFC: 1. 首先,前端需要将 SAP NW RFC SDK 集成到项目中。可以通过下载相应的 SDK 版本,并将其集成到前端项目中。 2. 通过 SAP NW RFC SDK 提供的函数库,初始化 RFC 连接。可以使用 SAP NW RFC SDK 提供的 `RfcOpenConnection` 函数初始化连接。 ```javascript const connectionParameters = { USER: 'username', PASSWD: 'password', LANG: 'EN', ASHOST: '192.168.0.1', SYSNR: '00' }; const connection = sapnwrfc.RfcOpenConnection(connectionParameters); ``` 3. 根据 RFC 接口规范,构造相应的 RFC 请求参数。可以使用 SAP NW RFC SDK 提供的 `RfcCreateFunction` 函数创建一个 RFC 函数对象,并使用 `RfcSetParameter` 函数设置相应的参数值。 ```javascript const functionModule = connection.getFunction('BAPI_MATERIAL_GET_DETAIL'); functionModule.setString('MATERIAL', 'ABC123'); ``` 4. 调用 RFC 函数。可以使用 SAP NW RFC SDK 提供的 `RfcInvoke` 函数调用 RFC 函数,并获取返回值。 ```javascript connection.invoke(functionModule) .then(() => { const materialDescription = functionModule.getString('MATL_DESC'); console.log(materialDescription); }) .catch((err) => { console.error(err); }); ``` 需要注意的是,对接 SAP RFC 需要在前端项目中集成 SAP NW RFC SDK,这需要相关的技术背景和经验。另外,由于 SAP 系统的复杂性,对接 SAP RFC 也需要遵循相应的规范和要求,否则可能会出现数据传输失败、数据解析错误等问题。因此,在对接 SAP RFC 之前,建议寻求相关的技术支持和指导。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值