SAP Konnektörü Sınırları
    • 12 Dec 2022
    • 3 Minutes to read
    • Dark
      Light

    SAP Konnektörü Sınırları

    • Dark
      Light

    Article summary

    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.