21 Haziran 2021

SAP Üzerinden RFC, Ping ve Telnet Yürütme

ile Yunus KALDIRIM

Projeleri yaparken en önemli yaşanan problemlerden biri de network konuları olabiliyor. Firewall , ping vs derken herkes basis uzmanı ya da network uzmanı olup çıkıveriyor. Aşağıda ihtiyaç duyduğunuzda kullanabileceğiniz 3 yöntemden bahsedeceğim.

1- Sm59 RFC erişim tanımları

Tüm bağlantılar için başvuracağımız ilk noktamız ve en önemli aracımız budur. Burada basitçe

  • ABAP Connections: SAP sistemleri arası bağlantı için,
  • HTTP Connections to External Server: SAP’den herhangi bir non-SAP( ör: Windows/Linux sunucuları) sisteme bağlantı için.
  • HTTP Connections to ABAP: İhtiyaç duymadım ama bir işe yarıyordur.
  • Internal Connections: SAP sunucusunun kendi iç erişimleri ile alakalı. En bilineni NONE olanıdır.
  • TCP/IP Connections: SAP sunucusundan yürütülecek bir exe dosyası ile erişimler için. Ör: FTP erişimleri için SAPFTP
  • Connections via ABAP driver: İhtiyaç duymadım ama bu da bir işe yarıyordur.

Burada en çok kullanılan 1- Abap connection 2- HTTP connection to external server örnekleyelim.

A- ABAP Connection

İlk sayfamız Technical settings: Burada herşey güzel bir adla başlıyor. Genel kural olarak sistem tanıtıcısı+CLNT+client numarası şeklinde bir tanım idealdir. Ör: ISU’dan CRM’e bağlanacaksanız KCRCLNT100 doğru bir adlandırmadır.

Ardından açıklaması ve target host’a geliyor sıra. Target host; erişim adresi kısmında sunucunun DNS üzerinde tanımlıysa adı değilse ip’si kullanılabilir.

İkinci sayfamız Logon &Security . Burada Logon procedure kısmında SAP sistemi karşı SAP sistemine nasıl erişeceğine karar veriyoruz. Basitçe nasıl login olacak diyebiliriz. Sabit bir user ve password girilebilir. Yalnız bu durumda tüm erişimler bu kullanıcı üzerinden olacağından en temel konu yetkilendirmesi ve değişiklik loglarında hep bu userin adının görüneceğidir. Tercih ve tasarım meselesi. Bence her user kendi izini bırakmalı.

Current user tıklıysa tam bu dediğim gibi olur. Her sisteme giren kullanıcı karşı sisteme program veya kodlarda bir erişim olduğunda kendi yetkileri ve useri ile erişebilir.

Trust relationship. Burada konu şifreyi sistem nasıl alacak ile başlıyor. Yani A SAP sistemine login oldunuz bir şekilde bir ekranda B SAP sistemine erişim gerektiğinde tekrar şifre girmek istermisiniz? Hayır. Öyleyse Basis bunu yes yapacak ve elbette sertifika ayarlarını da tamamlayacak. Önemli bir konu.

Son konumuz Unicode sayfası. Artık unicode olmayan sistem kaldı mı bilmiyorum ama burada unicode bir sisteme non-unicode bağlantı kurmamanız gerektiği kadar daha önemli birşey olamaz. Yoksa bol bol ### diyez karakterleri ile uğraşırsınız. Atlanılmaması gereken bir konu.

B- HTTP Connection

HTTP connection yukarıda anlattığım gibi non-SAP sistemlere (ki bu çoğunlukla Windows sunucuları oluyor) erişimde kullanılmakta. Burada host: sunucu adı veya ipsi, port: erişim portu, path prefix: sunucuda çağrılan adresin bir parçası oluyor.

C- Erişim Testi

Geldik konumuzun önemli kısmına niye rfc tanımladık? Bir sisteme erişmek için. Peki erişim var mı nasıl test edeceğiz ? En temel yöntem Connection test düğmesine tıklamak bir diğeri eğer karşı sistem SAP ise Remote logon denemesidir.

Eğer herşey mükemmelse aşağıdaki gibi bir ping sonucu alırsınız.

Değilse aşağıdaki gibi bir log ile karşılaşırsınız. Bu aslında herşeyi anlatıyor. Herşey yani? Erişemiyorum. Siz deyin firewall ayarı ben diyeyim sunucu kapalı. Hani çokta seçenek yok.

2- SAP Üzerinden Ping atma

sm59 ile sap aslında karşı sisteme ping atıyor. Ama bilgisayarınızdan komut istemcisini(cmd) çağırıp ping 10.10.5.2 yazarsınız ya bazen bunu da görmek denemek istersiniz. SAP’de bunun için st06 transactionı kullanabilirsiniz.

3- SAP’den telnet Yürütme

Telnet , Windows sistemlerinde bir sunucudaki spesifik bir porta yapılan bağlantı aracıdır. Tabi önce yüklemeniz gerekir. Arayüz ile değil de komut istemcisi ile “telnet 10.5.4.20 50000” yazarsınız ve bağlanıyorsa böyle boş siyah ekranda yanıp sönen bir cursor gelir. Ama bağlanmışsınızdır yani.

Peki bunu sap’den bir windows sunucuya nasıl yaparız? Yani belirli bir porta erişebiliyormuyuz diye %100 emin olmak istiyoruz. Bu da sm59dan test edilebilir de alternatif yöntem sunuyorum sadece.

Yöntemimiz sm69 transactionı üzerinden niping komutu yürütülmesi.

Tabi bunu denerken additional parameters içine bazı ekler -c -O -S <port> -H <host> yapıyoruz ve yürütüyoruz. – S den sonra gelen port numarası ve -H den sonra gelen ip numarası.

Örnek Erişemiyorsanız:

Örnek Erişebiliyorsanız:

Şimdi birşeyler denediyseniz ve yine de olmuyorsa network üzerinden erişim problemi vardır firewall ayarları vs gerekiyordur.