Php ile Sap RFC bağlantı

Php ile Sap RFC bağlantı

Profesyoneller için bu konu biraz sıkıcı olabilir. Örnek olarak Satıcı ana verilerini ekranda gösterip, ekrandan satıcıya tıkladığımızda da o satıcıya ait malzemeleri ekranda listeleyen örneği yapacağız.

1.Adım SAP üzerinde uzaktan erişilebilir bir fonksiyon oluşturuyoruz. Bu fonksiyonun özelliklerini sırasıyla resimlerdeki gibi yapmalısınız. Sorun yaşamamanız için şimdilik benim anlattığım gibi yapın, daha sonra kendiniz yaptığınızda istediğiniz gibi at koşturabilirsiniz
Attributes:
1

Import:

2

Tables:

3

Source Code:

function zlmn_aw_den.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     VALUE(LIFNR) LIKE  LFA1-LIFNR
*"     VALUE(ISLEM) LIKE  LFA1-LOEVM DEFAULT 'X'
*"  TABLES
*"      T_LFA1 STRUCTURE  LFA1
*"      T_EINA STRUCTURE  EINA
*"  EXCEPTIONS
*"      ERROR
*"      NO_DATA
*"----------------------------------------------------------------------
 
  data : lv_con type c length 255.
  data : cevir(30) type c value 'ÇCĞGŞSÖOÜUİIçcğgşsöoüuıi'.
  data : cevrilecekmetin type string.
 
 
  shift lifnr left deleting leading '0'.
  case islem.
    when '1'.
      clear : lv_con.
      concatenate ' a~lifnr like ''%' lifnr '%''' into lv_con.
 
      select * from lfa1 as a
        inner join eina as b
        on   a~lifnr eq b~lifnr
      into corresponding fields of table t_lfa1
      where (lv_con).
 
      delete adjacent duplicates from t_lfa1 comparing lifnr.
 
    when '2'.
      clear : lv_con.
      concatenate ' lifnr like ''%' lifnr '%''' into lv_con.
 
      select * from eina
        up to 150 rows
      into table t_eina
      where (lv_con).
 
      delete adjacent duplicates from t_eina comparing matnr.
 
      loop at t_eina.
        select single maktx
          from makt
          into t_eina-verkf
          where matnr eq t_eina-matnr.
 
        shift t_eina-matnr left deleting leading '0'.
        modify t_eina.
      endloop.
 
  endcase.
 
*{Türkçe karakter problemi yaşamamanız için çevrim yapıyoruz
  loop at t_lfa1.
    shift t_lfa1-lifnr left deleting leading '0'.
    translate t_lfa1-name1 using cevir.
    translate t_lfa1-name2 using cevir.
    modify t_lfa1.
  endloop.
*}
endfunction.

 

  • SAP&Abap kısmı bukadar. Sap RFC bağlantıları için basis uyarlamalarının yapılmış olması gerekiyor. Bu ayarlar yapılmamış ise basis danışmanından yardım alabilirsiniz. İlerleyen zamanlarda (öğrendiğim zaman:) )bunlarla ilgili bir konu daha yayınlayınca bu konu altına linkini koyarım.
    Fonksiyonumuzu kaydedip aktif edip şimdilik SAP’dan çıkabilirsiniz.
  • Gelelim şimdi web/php tarafına. Bunun için php kütüphanemize bazı dosyalar kopyalamamız gerekecek. Bu dosyaları aşağıdaki linkten temin edebilirsiniz.
    php_saprfc_449.dll
    php_saprfc_528.dll
    php_saprfc_528_nts.dll
    php_saprfc_530.dll
    php_saprfc_530_nts.dllhttp://saprfc.sourceforge.net adresinden gerekli kütüphane dosyalarını download sekmesinden indirebilirsiniz.İndirdiğiniz dosyalarda yukarıdaki ismini verdiğim dll dosyalarını, (Ben apache server kullanıyorum, sizinki farklı dizinde olabilir) AppServer\php5\ext\ klasörünün içerisine kopyalayın.
    Daha sonra C:\Windows\php.ini dosyasını açıp extension yazan satırların sonuna aynen aşağıdaki gibi kütüphane adlarını yapıştırın
    extension=php_saprfc_449.dll
    extension=php_saprfc_528.dll
    extension=php_saprfc_528_nts.dll
    extension=php_saprfc_530.dll
    extension=php_saprfc_530_nts.dllbu dosyaları ekledikten sonra apache servisini yeniden başlatmamız gerekmektedir. Bunun için Başlat->Çalıştır->”services.msc” yazıp entere basın.

55

Buraya kadarki herşey tamam. Gelelin web/php tarafına.

  1. Php sayfalarını hazırlamaPhp ile sap sistemine rfc yöntemiyle bağlanabilmek için aşağıdaki php dosyalarına ihtiyacımız olacak1.  sap.php
    2. sap_connection.php
    3. sap_function.php
    4. sap_table.php
    5. logon_data.confBu dosyalar yukarıda verdiğim linkten hazır olarak indirilebiliyor. Sadece logon_data.conf dosyasını not defteri ile açarak bağlantı sap bağlantı bilgilerini girmeniz gerekiyor.logon_data.conf dosyasının içeriğini sap logondaki bağlantı bilgilerinize göre güncelleyiniz, resimdeki benim bağlantı bilgilerimle kıyaslayarak logon_data.conf dosyanızı güncelleyebilirsiniz.

    # Logon data for example scripts
    ASHOST = 192.168.10.92
    SYSNR = 00
    #MSHOST =
    #R3NAME = EUE
    #GROUP = EUE
    CLIENT = 400
    USER = XXXXXXX  #Sap kullanıcı adınız
    PASSWD = XXXXX # Sap şifreniz
    
    

acelikbilek-ides

Sap bağlantı bilgilerimizide girdikten sonra artık test edebiliriz.

Sonuç:

saticilar_qweasdzxcdg54321
Satıcı koduna tıklayarak satıcıya ait malzemeleri listeleyebilirsiniz.

<?
    include_once("lib/sap.php");
	
    $sap = new SAPConnection();
    $sap->Connect("logon_data.conf");
    if ($sap->GetStatus() == SAPRFC_OK ) $sap->Open ();
    if ($sap->GetStatus() != SAPRFC_OK ) {
       $sap->PrintStatus();
       exit;
    }
 
    $fce = &$sap->NewFunction ("ZLMN_AW_DEN");
    if ($fce == false ) {
       $sap->PrintStatus();
       exit;
    }
 
    $fce->LIFNR = $_GET['lifnr']; //"0000510000";
    $fce->ISLEM = $_GET['islem']; //"0000510000";
	
    //$fce->LIFNR = "*";
    $fce->Call();
    //$fce->Debug();
 
    if ($fce->GetStatus() == SAPRFC_OK) {
        $fce->T_LFA1->Reset();
        while ( $fce->T_LFA1->Next() )
		{
			/*
			foreach ($fce->T_LFA1->row as $v) {
				echo "<td>$v</td>";
			}	
			*/		
			
            echo 
				"<td>".
				"</td>".
				"<td>";
				?>
            <a href="#" onclick="material('<?=$fce->T_LFA1->row["LIFNR"];?>')"><?=$fce->T_LFA1->row["LIFNR"];?></a>                
				<?
			echo 
                "</td>".
				"<td>".
					$fce->T_LFA1->row["NAME1"].
				"</td>".
				"<td>".
				$fce->T_LFA1->row["NAME2"].
				"</td></tr>";
		}
    } else $fce->PrintStatus();
	$sap->Close();
?>

Yazı kaynağı

 

 

Hakan AK

Son Yazılar