SAP Konnektörü Sınırları

Prev Next

PaperWork SAP Konnektörü, PaperWork ile SAP arasında kod yazmadan hem iş akışlarında hem de elektronik formlarda veri alışverişinizi sağlar. Temelde  SAP üzerinde bulunan iş nesneleri (BAPI ve Zli fonksiyonlar) tüm SAP platformu tarafından çağrılabilir, aynı zamanda bu iş nesneleri konnektör ile de çağrılabilir. Aşağıda çağrım esnasında dikkat edilmesi gereken noktalar anlatılmıştır;

  1. Konnektör ile çağrılacak fonksiyonların tip tanımları belirlenmiş olmalı.
  2. Veri tipi tip tanımı olmayan fonksiyonlar konnektör ile çağrılamaz. Aşağıdaki ekranda örnek gösterilmiştir.
  3. Generik tip kullanımı yapılamaz.
  4. Generik tip kullanımı olan fonksiyonlar çağrılamaz.
  5. İç içe yapılar kullanılamaz.(Table in Table)
  6. Fonksiyon parametrelerinde iç içe geçmiş yapılar kullanılamaz. Örneğin; Fonksiyon parametresinin içerisindeki alanlardan biri tablo olarak tanımlanmıştır. Bu şekilde iç içe geçmiş yapılar kullanılamaz. Bunun yerine bu yapı içerisindeki tablo/tablolar fonksiyona ayrı bir parametre ile tablo olarak eklenmelidir.  
  7. Aşağıdaki tabloda SAP tarafında kullanılan veri tipine karşılık gelen PaperWork veri tipleri ve sınırları belirtilmiştir. Eğer veri tipi PaperWork tarafından desteklenmiyor ise kullanılmamalıdır.
SAP Veri TipiSap AçıklmasıÖrnek Değer Paperwork TipiPaperWork Açıklama 

ACCP

Posting Period YYYYMM

201812

Yazı

Dönem Değişkenidir

CHAR

Character String

 

Yazı

 

CLNT

Client

 

Yazı

 

CUKY

Currency Key for Currency Field

 

Yazı

 

CURR

Currency Field in BCD Format

 

Para

 

DF16_DEC

Decimal Floating Point Stored in BCD Format

 

Para

 

DF16_RAW

Decimal Floating Point Stored as Binary Number

 

Para

Desteklemiyor

DF16_SCL

Decimal Floating Point with Scaling (obsolete)

 

Para

 

DF34_DEC

Decimal Floating Point Stored in BCD Format

 

Para

 

DF34_RAW

Decimal Floating Point Stored as Binary Number

 

Para

 

DF34_SCL

Decimal Floating Point with Scaling (obsolete)

 

Para

 

DATS

Date in Format YYYYMMDD

 

Tarih

Tarih Değişkenidir

DEC

Packed Number in BCD Format

 

Para

 

FLTP

Floating Point Number

 

Para

 

INT1

1-Byte Integer, 0 to 255

 

Sayı

Negatif sayı kabul etmez. Max 255

INT2

2-Byte Integer, -32.768 to 32.767

 

Sayı

-32.768 ile 32.767 aralığında sayı

INT4

4-Byte Integer, -2.147.483.648 to +2.147.483.647

 

Sayı

-2.147.483.648 ile 2.147.483.647 aralığında sayı

INT8

8-Byte Integer

 

Sayı

-2.147.483.648 ile 2.147.483.647 aralığındaki değerleri kabul eder.

LANG

Language key

T,E…

Yazı

Daha büyük değerlerde işlem yapılamaz

LCHR

Long Character String

 

Yazı

 

LRAW

Long Byte String

 

 

Desteklenmiyor

NUMC

Numerical Text

123, 0043

Yazı

Sadece rakamlardan oluşan metinleri kabul eder

PREC

Obsolete Data Type

 

 

Desteklenmiyor

QUAN

Quantity Field in BCD Format

 

Para

 

RAW

Byte Sequence

 

 

Desteklemiyor

RAWSTRING

Byte String (BLOB)

 

 

Desteklemiyor

SSTRING

Character String

 

Yazı

 

STRING

Character String (CLOB)

 

Yazı

 

TIMS

Time in Format HHMMSS

 

 Saat

 

UNIT

Unit Key of Quantity Field

ADT,KG

Yazı

Miktar birim kodu.

VARC

Obsolete Data Type

 

 

Destekelenmiyor

8.SAP Konnektörü aracılığı ile dönen veri içinde HTML/XML tag benzeri karakterler ve karakter serileri, çift tırnak, tek tırnak gibi karakterler bulunmamalıdır. Ayrıca görsel olmayan "alt satıra geçme" karakteri (\n) gibi özel karakterler bulunmamalıdır. Konnektör PaperWork ile XML dosyaları yardımı ile haberleşir. İlk istek sırasında bir XML dosyası ilgili parametreler ile oluşturulur ve konnektöre gönderilir. Konnektör bunu çözümleyerek SAP üzerinde ilgili fonksiyonu çalıştırır. Sonucunu alarak tekrar bir XML dosyası oluşturur. Bu işlemler esnasında bahsedilen karakterler soruna neden olabilir. Bu denenle giden ve gelen veri içerisinde bu karakterler kullanılmamalıdır.

Veri Tipi Çevimleri
Zaman zaman tarih ve para alanları yazılan SAP fonksiyonlarında yazı alanı olarak dönüyor. (Fonksiyon bu şekilde yazılıyor) Bu alanlar üzerinde hesaplama yapmak için bu alanların çevrime girmesi gerekiyor. Bu durumda sihirbaz kullanılamaz oluyor ve manuel kod yazılması gerekiyor. Bu da yazılan kodun yaşatılması maliyetini oluşturuyor.
Çevik bir sistemde minimum kod yazılmalı, mümkünse tüm kurgu sihirbazlara dayandırılmalıdır. 
Listeler
Konnektör aracılığı ile elektronik form listeleri sıkça doldurulmaktadır. Konnektörün çalışma mantığı şudur;
  • Ara yüz (veya SAP Aktivitesi) bir XML oluşturur. Bu XML de doldurması gereken alanlar ile beraber SAP Konnektörü servis katmanına gönderir.
  • Katman XML'i okur, gerekli BAPI çalıştırılır, oluşan sonuç yine bir XML oluşturularak geri gönderilir.
  • XML'i alan ara yüz bunu açar, içindeki verileri uygun şekilde veri setine dönüştürerek kullanır.

Bunun anlamı PaperWork listesi direk veri tabanı üzerinden işlem yaparken SAP Konnektörü 2 sefer XML oluşturma, 2 sefer de XML'i açma işlemini gerçekleştirir. Yani performansı veri tabanına göre çok yavaştır. Eğer çağrılan BAPI örneğin kayıtlı tedarikçi listesi, ürün listesi gibi listeler ise ve kayıt sayısı çok ise (örneğin 5.000 adet) performans problemleri yaşanır. Aynı anda benzer formlarda bu işlem birden fazla kullanıcı tarafından yapılacak ise veya aynı form üzerinde buna benzer birden fazla işlem var ise sorun daha fazla büyür.

Bunu gidermek için 2 yöntem kullanılabilir;

a) Elektronik formda gelecek olan listelemeyi filtrelemek adına bir kaç karakterin girilebileceği bir kutucuk bulunur. Bu değer ile BAPI çağrılır. (BAPI buna göre yazılmalıdır) BAPI bu girilen karakterler ile kayıtları filtreler ve tüm kayıtlar yerine filtrelenen kayıtları geri gönderir.
b) Liste için sabit bir PaperWork Listesi oluşturulur. Zaman bazlı çalışacak bir metod yazılır. Yazılan metod örneğin günde 1 sefer çalışarak BAPI verisini alıp bu listeyi günceller. Elektronik formda da bu liste kullanılır.
Not: Bu çözüm de 5-10 bin satırlık listelerde çözüm olmaz. Bu kadar uzun bir liste kullanıcının önüne gelse de kullanıcı seçim yapamaz.