SAP

SAP e PHP

Escrito por Douglas Baiocco. Publicado em SAP.

Estava eu realizando minhas atividades quando surgiu uma demanda um tanto exótica: conectar páginas em PHP com o SAP ECC.

Nas primeiras pesquisas, vi que me deparava com um monstro com diversos tentáculos e nenhuma capacidade de compartilhamento de conhecimento.

Pesquisei bastante, testei bastante e ainda estou em vias de conseguir um resultado melhor. Até o momento, consegui alguns resultados positivos e funcionais, que serão aprimorados com o passar do tempo. No momento, o que possuo é o seguinte:

Consigo conectar o PHP no SAP e executar RFC's para enviar e extrair dados, mas a solução que consegui utiliza Windows. Foi a mais fácil para esta emergência, isso me atende, mas eu ainda pretendo melhorá-la.

Segue a lista das "coisas" que eu precisei:

Vamos aos passos que eu executei para que o PHP conectasse ao SAP:

 

Instalação do Zend Server

 

Baixe o pacote no link desse artigo.

Execute a instalação, conforme as instruções abaixo:

Clique em NEXT

image001

 

 

Clique em I ACCEPT THE TERMS OF THE LICENSE AGREEMENT e em seguida em NEXT

image003

 

Selecione a opção TYPICAL e clique em NEXT

image005

 

 

Nesta etapa, você precisa escolher qual web server irá ser utilizado. Por escolha pessoal (acredito também que o ISS não de suporte ao SAPRFC) escolhi o APACHE:

image007

 

 

Escolha qual porta que o servidor ira atuar (neste caso, estou utilizando a porta 8080 porque a minha porta 80 já tem outro serviço)

image009

 

 

Clique em INSTALL

image011

 

Clique em FINISH

image013

 

 

Apos o termino da inatalação, uma tela do navegador irá abrir para concluir a instalação do ZEND SERVER. Caso ela não abra ou aconteça algum imprevisto, acesso pelo endereço:

 

http://ipdoservidor:10081

 

Marque a caixa de seleção I have read and agree to the end user license agreement terms e clique em next

image015

 

 

Digite uma senha para administração do servidor e clique em NEXT

image005

 

 

 

Clique em FINISH

image019

 

 

O SAPRFC precisa de uma biblioteca do SAP GUI. Neste nosso caso, instale o SAP GUI 720 (este pacote é um pouco grande para armazenar aqui, mas tá fácil de achar na internet)

 

Copie o arquivo php_saprfc_535_nts_RFCSDK720.dll que esta linkado neste artigo (ou se estiver com preguiça de rolar a página, clique aqui) para a pasta de instalação do ZEND SERVER: C:\Program Files (x86)\Zend\ZendServer\lib\phpext\

 

Configuração do ZEND

 

Acesse o endereço de configuração do ZEND SERVER:

 

http://ipdoservidor:10081

image021

 

Selecione a aba SERVER SETUP

image023

 

Selecione a aba Extensions

image025

 

Localize a extensão php_saprfc_535_nts_RFCSDK720.dll e clique no link Turn on

image027

 

 

Clique no botão RESTART PHP

image029

 

Verifique se foram carregados duas extensões: uma chamada SAPRFC e a outra com php_saprfc_535_nts_RFCSDK720. Note que a primeira extensão está sem problemas, já a segunda apresenta erro, mas é normal.

 

 

 

Crie um arquivo chamado teste.php em "C:\Program Files (x86)\Zend\Apache2\htdocs" com o seguinte conteúdo, alterando os valores de conexão para o seu ambiente:

<html>

<body>

<h1>SAPRFC-Class: Get List of Users in SAP-System</h1>

<?

// Example for using the saprfc-class-library for accessing sap-functions via rfc

// provided by lars laegner, btexx business technologies, august 2001

//  !!!! PLEASE CHANGE THE LOGINDATA TO YOUR SAP-SYSTEM !!!!

// $Id: example_userlist.php,v 1.2 2001/08/16 15:54:35 llaegner Exp $

// saprfc-class-library

require_once("saprfc.php");

// Create saprfc-instance

$sap = new saprfc(array(

"logindata"=>array(

"ASHOST"=>"IP_DO_APP"          // application server

,"SYSNR"=>"00"                    // system number

,"CLIENT"=>"000"               // client

,"USER"=>"cmehcr1"               // user

,"PASSWD"=>"xxxxxxx"          // password

)

,"show_errors"=>false               // let class printout errors

,"debug"=>false)) ;                     // detailed debugging information

// Call-Function

$result=$sap->callFunction("SO_USER_LIST_READ",

array(     array("IMPORT","USER_GENERIC_NAME","*"),

array("TABLE","USER_DISPLAY_TAB",array())

));

// Call successfull?

if ($sap->getStatus() == SAPRFC_OK) {

// Yes, print out the Userlist

?><table>

<tr><td>SAP-Name</td><td>User-Nummer</td></tr><?

foreach ($result["USER_DISPLAY_TAB"] as $user) {

echo "<tr><td>", $user["SAPNAM"],"</td><td>",$user["USRNO"],"</td></tr>";

}

?></table>

</body>

</html>

 

Copie o arquivo saprfc.php que está no saprfc-1.4.1.All para o mesmo local do teste.php ("C:\Program Files (x86)\Zend\Apache2\htdocs").

 

Execute um navegador e aponte para o seu servidor ZEND colocando no final do endereço /teste.php:

Você terá uma lista de todos os usuários cadastrados no SAP ECC. Outras formas de uso podem ser vistas nos exemplos contidos no saprfc-1.4.1.All.

 

 

Relacionados