22 Ocak 2009 Perşembe

ABAP : Error when opening an RFC connection

Merhabalar,
Z'li bir programımız eğer içinde bir RFC çalışıyorsa yada remote bir yere istekte bulunuyorsa bunu direk JOB yani artalan tanımladığımızda karşımıza Error when opening an RFC connection hatası gelecektir.
Bunu çözmenin yolu; ilgili fonksiyonun yanına IN BACKGROUND TASK yazmaktır.
Örnek olarak ; 

 CALL FUNCTION 'HTTP_GET' IN BACKGROUND TASK
    EXPORTING
      ABSOLUTE_URI         = URI
      RFC_DESTINATION      = 'SAPHTTP'
    TABLES
      RESPONSE_ENTITY_BODY = ILINE[]            "BLANKSTOCRLF = '/'
      RESPONSE_HEADERS     = RESPONSE_HEADERS.

Modülcülerle paslı oynayın gol yemeyin, kış geldi bol bol snowboard yapın, kaseye dikkat edin.

3 Ocak 2009 Cumartesi

ABAP : Internal Table Performans Karsilastirma


Merhabalar,
Daha önceki yazımda, ITAB ile ilgili teknik bilgiler vermiştim. Bu yazıda ise internal table için performans konularına değineceğim. Öncelikle basit bir program yazıyoruz, tablolara yazma ve okuma zamanları tutan ve ekrana yazan basit bir program.
Aşağıda görüldüğü gibi,
STANDARD, SORTED ve HASHED olmak üzere üç tablo tipini de tanımlıyoruz.
Öncelikle ekrandan girilen kadar satırı tablolarımıza yazıyoruz.

Öncelikle, tablolarımızdan okurken WITH TABLE KEY metodunu kullanıyoruz, burada table_line bizim için key bir alan, daha sonra süreleri ekrana yazdırıyoruz.



Aşağıda görüldüğü gibi bu sefer INDEX ile okuyoruz ve okuma sürelerini ekrana yazıyoruz.


Programımızı açıp öncelikle 100 değerini giriyoruz ve 100 kayıt için yazma ve okuma değerlerini ekrana yazdırıyoruz.



INSERT değerlerine bakarsak, SORTED table için diğerlerinden biraz fazla olduğunu görebiliriz, çünkü verileri sürekli sıralı tuttuğu için değer girerkende veriyi sırayı bozmadan sokmaya çalışacaktır.

Görüldüğü üzere, With Key metoduyla okurken STANDARD tablonun değerinin bir hayli yüksek olduğu gözümüze çarpmaktadır fakat INDEX yöntemi ile okumaya çalışırsak , okuma hızının çok düşük olduğu yine görülecektir.



Sayıyı 1000 e kadar yükseltiriyoruz ve çalıştır tuşuna basıyoruz.


Diğer değerlerin pek değişmediği fakat STANDARD tablodan WITH TABLE KEY metoduyla okuma değerinin çok fazla yükseldiği yine görülecektir, INDEX ile okuma metodunda değer yine sabit kalmaktadır.

HASH table için okuma değeri yine neredeyse aynıdır, daha önceki yazımda bahsettiğim gibi HASHED tablolarda okuma değerleri kayıt sayısından bağımsızdır.


Sayıyı  5000'e yükseltiyoruz ve tekrar çalıştırıyoruz.


Görüldüğü gibi STANDARD tablodan okuma değerinin çok fazla yükseldiği diğer değerlerin yine çok fazla değişmediği görülür.

 



Test sonuçlarında, STANDARD tablodan WITH TABLE KEY metoduyla veri okumanın bir facia olduğunu görüyoruz, INDEX ile okuma tekniğinde ise değerin değişmediğini ve gayet hızlı bir biçimde okunduğunu görebiliyoruz. HASHED tablolarda değerin değişmediği yine SORTED tablolarda çok fazla oynama olmadığı basit bir biçimde görülmektedir. 
ABAP programlarımızda, ihtiyaçlarımıza göre doğru internal table biçimini seçmek programlarımızı oldukça hızlandıracaktır.

Dikkat edelim çanak çömlek patlamasın.

 

İyi çalışmalar

Modülcülerle paslı oynayıp gol yememeye çalışın.  

Yeni yıl da geldi, temiz kod yazın, yeni bir sayfa açın, kendinizi düzene sokun adam olun akıllı olun.