Acessando SAP RFC com PHP7
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
PHP
$php --version
Apache
$/usr/sbin/apache2 -v
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
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:
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
Execute o ./configure para iniciar a compilação da extensão:
$./configure
Rode o make:
$make
Execute o make install:
$make install
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
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:
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:
Se não obtiver nenhum erro, seu PHP está comunicando com o SAP, parabéns!
Mais informações: