ABAP

ABAP (Advanced Business Application Programming), Alman yazılım şirketi SAP AG tarafından geliştirilen üst seviye bir nesne tabanlı programlama dilidir. SAP'ın, iş uygulamaları geliştirmek için kullanılan son zamanlarda java'nın da içerisinde kendine yer bulduğu NetWeaver platformunun parçası olan Web Uygulama Sunucu'sunu programlama için kullanılır. Sözdizimi (syntax) COBOL'a benzemektedir.

Tarihçe

ABAP, 1980'lerde geliştirilen pek çok uygulama odaklı 4. nesil dilden biridir. ABAP, başlarda, geniş çaplı şirketlerin kaynak yönetimi finansal planlamalarında kullanacakları iş uygulamaları geliştirmelerine olanak sağlayan SAP R/2 platformu için raporlama diliydi.
ABAP aynı zamanda, Almanca'da anlamı "genel rapor hazırlama işlemcisi" olan Allgemeiner Berichts Aufbereitungs Prozessor un kısaltmasıydı, fakat daha sonra Advanced Business Application Programming olarak isimlendirildi. ABAP temel veritabanı seviyesinden yüksek seviyeli bir soyutlama sağlayan mantıksal veritabanı kavramını içeren ilk dillerden biriydi.
ABAP proglama dili orijinal olarak geliştiriciler tarafından SAP R/3 platformunu geliştirmek için kullanıldı. SAP müşterileri ABAP'ı, müşterilerin özel raporlar ve arayüzler geliştirebilecekleri SAP uygulamaları geliştirmek için kullanmayı tasarlıyorlardı. Dil programlamacılar için öğrenmesi oldukça kolaydır fakat programlamacı olmayanlar için direkt kullanılabilecek bir araç değildir. ABAP programları oluşturabilmek için ilişkisel veritabanı tasarımı ve tercihen nesne odaklı kavram bilgisini içeren programlama yetenekleri gereklidir.
ABAP, SAP 1992 yılında ilk yayımlandığında, istemci-sunucu R/3 sistemi için programlar oluşturmak için yapılandırıldı. 1990 larda gelişen bilgisayar donanımıyla birlikte SAP uygulamaları ve sistemler de ABAP'da yazıldı. 2001 yılına kadar btüm en temel fonksiyonlar ABAP'da yazıldı. 1999 yılında, SAP, R/3 4.6 sürümüyle beraber, ABAP 'a uzantı olarak ABAP nesnelerini yayımladı.
SAP'ın en yeni geliştirme platformu NetWeaver hem ABAP hem Java yı destekler.

ABAP programı nerede çalışır

Tüm ABAP programları SAP veritabanında bulunur. Java ve C++ programları ayrı dış dosyalarda depolanmazlar. Veritabanında tüm ABAP kodları iki şekilde bulunur: ABAP Workbench araçları ile görüntülenebilen ve düzenlenebilen kaynak kodu, ve Java bytekodu gibi düşünülebilecek ikili gösterimde "üretilmiş kod". ABAP programları, SAP çekirdeğinin(kernel) parçası olan çalışma zamanı sisteminin kontrolü altında çalışırlar.
Çalışma zamanı sistemi ABAP ifadelerini işlemekten, ekranların akış mantığını kontrol etmekten ve olaylara(kullanıcının ekran butonuna tıklaması gibi) cevap vermekten sorumludur. ABAP çalışma zamanı sisteminin anahtar bileşenlerinden biri, veritabanından bağımsız ABAP ifadelerini("open sql") tabanda yer alan dbms(veri tabanı yönetim sistemi) in anlayabileceği ifadelere("native sql") çeviren veritabanı arayüzüdür. Veri tabanı arayüzü, ABAP programları adına, ilişkisel veri tabanıyla olan tüm iletişimi ele alır, aynı zamanda uygulama sunucusunun yerleşik belleğinde sık erişilen veriyi ara belleğe almak gibi ekstra özellikler içerir.
SAP'ın üç farklı katmanı, sunum katmanı(gui), uygulama katmanı(programlar bunun üstünde çalışır) ve kullanıcının hazırladığı durumlardan ve son kullanıcının sunum katmanından verdiği komutlardan tüm verinin kazanıldığı ve depolandığı veri tabanı katmanıdır.

SAP temeli

Söz dizim kontrolü, kod üretimi, çalışma zamanı sistemini içeren ABAP dil ortamı, SAP temel bileşen parçasıdır. SAP temeli, tipik olarak SAP web uygulama sunucusunun frameworkünde uygulanan Sap uygulamalarının tüm rencini destekleyen teknolojik platformdur. Bu açıdan SAP temeli, üzerinde SAP uygulamalırının çalıştığı işletim sistemi olarak görülebilir. Tüm işletim sistemleri gibi, SAP temeli hem düşük seviyeli servisleri(örnek olarak hafıza yönetimi, veritabanı iletişimi ya da web istemleri sunumu) hem de son kullanıcılar ve yöneticiler için yüksek seviyeli araçları içerir. Bu araçlar, direkt olarak tabandaki işletim sisteminde çalışan çalıştırılabilirler(SAP kernel) olabilir ya da ABAP'da geliştirilmiş ya da web tabanlı arayüzler olabilir. SAP temeli, iş uygulamaları, işletim sistemi ve veritabanı arasında bir soyutlama tabakası sağlar. Bu, uygulamaların direkt olarak özel bir sunucuya ya da veritabanı platformuna bağımlı olmamasını ve bir platformdan diğerine kolaylıkla taşınmasını sağlar.
SAP temeli şu anda UNIX (AIX, HP-UX, Solaris, Linux), Microsoft Windows, IBM System i üzerinde i5/OS (formerly iSeries, AS/400) ve IBM System z üzerinde z/OS (resmi olarak zSeries, S/390) sistemlerinde çalışır. Desteklenen veritabanları DB2, Informix, MaxDB, Oracle ve Microsoft SQL Server dır. (Informix için destek SAP Basis 7.00 sürümü ile beraber kaldırılmıştır).

SAP sistemleri ve biçimlendirmeleri

Tüm SAP verileri bir SAP isteminde bulunur ve tüm SAP yazılımları bu sistem üstünde çalışır. Böyle bir sistem merkezi bir ilişkisel veritabanı ile veri tabanındaki verilere ve uygulamalara erişen bir ya da daha fazla uygulama sunucusundan (örnekler) oluşur. Bir SAP sistemi boyut ve performans gibi nedenlerden en az bir ya da daha fazla örnek içerir. Çok örnek içeren bir sistemde yükleme dengeleme mekanizmaları yüklemenin uygun uygulama sunucularına dağılmasını sağlar. web uygulama sunucusu kurulumları tipik olarak üç sistemden oluşur: geliştirme sistemi, test etme ve kontrol sistemi, üretim sistemi. Biçimlendirme daha fazla sistem içerebilir: buna birim sistemi ve üretim öncesi testi için ayrık sistemler kullanılmasını örnek verebiliriz, biçimlendirme daha az sistem içerebilir buna olarak da ayrık kalite kontrol sistemi olmadan, sadece geliştirme ve üretim sistemlerinin bulunduğu bir biçimlendirmeyi örnek verebiliriz, yine de genellikle üç sistemli düzenleme kullanılır. ABAP programları geliştirme sisteminde oluşturulur ve ilk teste verilir. Sonra biçimlendirmedeki farklı sistemlere dağıtılır. Bu işlemler eş zamanlılık kontrolünden, versiyon yönetiminden ve programların kalite kontrol ve üretim sistemleri üzerine yerleştirilmesinden sorumlu olan değiştirme ve taşıma sisteminin kontrolü altında yer alır.
Web uygulama sunucusu üç katmandan oluşur: veri tabanı katmanı, uygulama katmanı, ve sunum katmanı. Bu katmanlar aynı ya da farklı fiziksel makineler üstünde çalışır
Örnek:
*-----------------------------------------------------------------------
* set an exclusive lock at level object-type & object-id
*-----------------------------------------------------------------------
 IF NOT lf_bapi_error = true.
   IF ( NOT istourhd-doc_type IS INITIAL ) AND
      ( NOT istourhd-doc_id IS INITIAL ).
     CALL FUNCTION 'ENQUEUE_/DSD/E_HH_RAREF'
          EXPORTING
               obj_typ        = istourhd-doc_type
               obj_id         = istourhd-doc_id
          EXCEPTIONS
               foreign_lock   = 1
               system_failure = 2
               OTHERS         = 3.
     IF sy-subrc <> 0.
*       terminate processing...
       lf_bapi_error = true.
*       ...and add message to return table
       PERFORM set_msg_to_bapiret2
            USING    sy-msgid gc_abort sy-msgno
                     sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
                     gc_istourhd gc_enqueue_refdoc space
            CHANGING lt_return.
     ENDIF.
   ENDIF.
 ENDIF.    " bapi error