SAP

Acessando SAP RFC com PHP7

Escrito por Douglas Baiocco. Publicado em SAP.

Neste artigo, iremos deixar o PHP7 acessando o SAP através de RFCs. Este é um método de comunicação com ambientes SAP muito utilizado e, agora funcional para usar com PHP.

Este é uma atualização do artigo http://ajudadigital.com.br/index.php/sap/129-sap-e-php-com-linux, publicado anteriormente em www.ajudadigital.com.br. Desta vez, os softwares estão atualizados para suas últimas versões disponíveis nesta data (09/06/2020).

Versões dos Softwares:

DEBIAN

Debian 10 (BUSTER)

$cat /etc/issue


image001

PHP

$php --version


image002

Apache

$/usr/sbin/apache2 -v

 image003

Passos necessários

 

Execute o seguinte comando para instalar o DEV para PHP:

$apt-get install php-dev

Crie a pasta nwrfcsdk:

$mkdir -p /usr/sap/nwrfcsdk

 

Baixe o pacote nwrfc

nwrfc750P_6-70002752.zip

 

Descompacte e copie os arquivos com WINSCP para a pasta /tmp.

Após isso, mova o conteúdo para a pasta criada anteriormente:

$mv /tmp/nwrfc750P_6-70002752/nwrfcsdk/* /usr/sap/nwrfcsdk/

 

Para adicionar a biblioteca ao LD (GNU LINKER), digite:

$nano /etc/ld.so.conf.d/nwrfcsdk.conf

 

Adicione o seguinte conteúdo:

/usr/sap/nwrfcsdk/lib

Veja a imagem:


image004

 

Atualize as bibliotecas com o comando abaixo:

$ldconfig

 

Instale o GIT:

$apt-get install git

 

Tenha certeza de estar no TMP:

$cd /tmp

 

Baixe o projeto:

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

Entre na pasta:

$cd php7-sapnwrfc

Execute o PHPIZE para criar a extensão:

$phpize


image005

Execute o ./configure para iniciar a compilação da extensão:

$./configure


image006

Rode o make:

$make


image007

Execute o make install:

$make install
image008

Edite o arquivo de configuração do PHP:

$nano /etc/php/7.3/apache2/php.ini

Adicione a seguinte linha na seção de extensões:

extension=sapnwrfc.so


image009

Pronto, restarte o apache e veja se a extensão foi carregada:

 

$service apache2 restart

 

Para ver se a extensão foi carregada, crie um arquivo com o PHPINFO no diretório padrão do Apache com o seguinte comando:

$ echo "<?php phpinfo() ?>" >> /var/www/html/teste.php

Acesse o endereço do seu servidor, colocando no final do endereço teste.php (http://ENDEREÇO_DO_SERVIDOR/teste.php)

O seguinte resultado deve ser visível:


image010

 

 

Para um teste mais prático, podemos usar o arquivo abaixo em uma página PHP, substituindo os valores pelos dados do seu SAP. Com este teste, faremos uma chamada a uma RFC do SAP e o resultado vai ser exibido na tela com VAR_DUMP:

 

<?php

use SAPNWRFC\Connection as SapConnection;

use SAPNWRFC\Exception as SapException;

$config = [

    'ashost' => 'IP_DO_SERVIDOR',

    'sysnr'  => 'NUMERO_DO_SISTEMA',

    'client' => 'CLIENT_NUMBER',

    'user'   => 'USER',

    'passwd' => 'PASSWORD',

    'trace'  => SapConnection::TRACE_LEVEL_OFF,

];

$connection = new SapConnection($config);

$function = $connection->getFunction('STFC_CHANGING');

$result = $function->invoke([

    'START_VALUE' => 0,

    'COUNTER' => 1,

]);

echo "<pre>";

var_dump($result);

echo "</pre>";

?>

 Acesse a pagina atraves do navegador e veja o resultado:

image011

 Se não obtiver nenhum erro, seu PHP está comunicando com o SAP, parabéns!

 

Mais informações:

https://gkralik.github.io/php7-sapnwrfc/