ABAP - ABAP
paradigma | Nesne yönelimli , yapılandırılmış , zorunlu |
---|---|
Tarafından tasarlandı | SAP SE |
İlk ortaya çıktı | 1983 |
kararlı sürüm | 7,55 / 2 Eylül 2020
|
Yazma disiplini | Statik , güçlü , güvenli , yalın |
işletim sistemi | Çapraz platform |
İnternet sitesi | scn |
Başlıca uygulamalar | |
SAP R/2 , SAP R/3 , SAP S/4HANA | |
Tarafından etkilenmiş | |
Amaç-C , COBOL , SQL |
ABAP (Advanced Business Application Programming, aslen Allgemeiner Berichts-Aufbereitungs-Prozessor , Almanca "genel rapor hazırlama işlemcisi"), Alman yazılım şirketi SAP SE tarafından oluşturulan üst düzey bir programlama dilidir . Şu anda, iş uygulamaları oluşturmaya yönelik SAP NetWeaver platformunun bir parçası olan SAP NetWeaver Uygulama Sunucusu'nu programlama dili olarak Java ile birlikte konumlandırılmıştır .
Tanıtım
ABAP, ilk olarak 1980'lerde geliştirilen, uygulamaya özel birçok dördüncü nesil dilden ( 4GL ) biridir. Başlangıçta, büyük şirketlerin malzeme yönetimi ve finans ve yönetim muhasebesi için ana bilgisayar iş uygulamaları oluşturmasını sağlayan bir platform olan SAP R/2 için rapor diliydi. ABAP bağımsız yazılımlar arasında entegrasyon sağlar.
ABAP bir kısaltma olarak kullanılan bir llgemeiner B erichts- A ufbereitungs- P rozessor "jenerik rapor hazırlama işlemcisi" için Almanca, ancak daha sonra İngiliz olarak değiştirildi A dvanced B Usiness A pplication P rogramming . ABAP, her platformu, dili ve birimi destekleyen temel veritabanı düzey(ler)inden yüksek düzeyde soyutlama sağlayan Mantıksal Veritabanları (LDB'ler) kavramını içeren ilk dillerden biriydi .
ABAP dili başlangıçta geliştiriciler tarafından SAP R/3 platformunu geliştirmek için kullanıldı . Ayrıca SAP müşterileri tarafından SAP uygulamalarını geliştirmek için kullanılmak üzere tasarlanmıştır - müşteriler ABAP programlama ile özel raporlar ve arayüzler geliştirebilir. Dil, programlama deneyimi olan daha teknik müşterilere yönelikti.
ABAP , SAP'nin ilk olarak 1992'de piyasaya sürdüğü , istemci-sunucu R/3 sistemi için program oluşturma dili olmaya devam ediyor . 1990'larda bilgisayar donanımı geliştikçe, SAP'nin uygulamaları ve sistemleri giderek daha fazla ABAP'ta yazıldı. 2001 yılına gelindiğinde, en temel işlevler dışındaki tüm işlevler ABAP'ta yazılmıştır. 1999'da SAP, R/3 sürüm 4.6 ile birlikte ABAP Nesneleri adlı nesne yönelimli bir ABAP uzantısı yayınladı.
SAP'nin mevcut geliştirme platformu NetWeaver , hem ABAP'yi hem de Java'yı destekler .
ABAP, iş uygulamaları, işletim sistemi ve veritabanı arasında bir soyutlamaya sahiptir. Bu, uygulamaların doğrudan belirli bir sunucuya veya veritabanı platformuna bağlı olmamasını ve bir platformdan diğerine kolayca taşınabilmesini sağlar.
SAP Netweaver şu anda UNIX ( AIX , HP-UX , Solaris , Linux ), Microsoft Windows , IBM System i (önceden iSeries, AS/400) üzerinde i5/OS ve IBM System z (önceden zSeries, S) üzerinde z/OS üzerinde çalışmaktadır. /390). Desteklenen veritabanları HANA , SAP ASE (eski adıyla Sybase), IBM DB2 , Informix , MaxDB , Oracle ve Microsoft SQL Server'dır (Informix desteği SAP Basis sürüm 7.00'de durdurulmuştur).
ABAP çalışma zamanı ortamı
Tüm ABAP programları SAP veritabanında bulunur. Java veya C++ programları gibi ayrı harici dosyalarda saklanmazlar. Veritabanında tüm ABAP kodu iki biçimde bulunur: ABAP Workbench araçlarıyla görüntülenebilen ve düzenlenebilen kaynak kodu; ve oluşturulan kod, Java bayt koduyla bir şekilde karşılaştırılabilir bir ikili gösterim . ABAP programları, SAP çekirdeğinin bir parçası olan çalışma zamanı sisteminin kontrolü altında yürütülür. Çalışma zamanı sistemi, ABAP deyimlerini işlemekten, ekranların akış mantığını kontrol etmekten ve olaylara yanıt vermekten (bir kullanıcının bir ekran düğmesine tıklaması gibi) sorumludur; bu açıdan Java VM ile karşılaştırılabilir bir Sanal Makine olarak görülebilir . ABAP çalışma zamanı sisteminin önemli bir bileşeni, veritabanından bağımsız ABAP ifadelerini ("Open SQL"), temeldeki DBMS ("Yerel SQL") tarafından anlaşılan ifadelere dönüştüren Veritabanı Arabirimidir. Veritabanı arayüzü, ABAP programları adına ilişkisel veritabanı ile tüm iletişimi yönetir; Ayrıca uygulama sunucusunun yerel belleğindeki tabloların ve sık erişilen verilerin arabelleğe alınması gibi ekstra özellikler içerir.
SAP sistemleri ve ortamları
Tüm SAP verileri mevcuttur ve tüm SAP yazılımları bir SAP sistemi bağlamında çalışır . Bir sistem, merkezi bir ilişkisel veritabanından ve bu veritabanındaki verilere ve programlara erişen bir veya daha fazla uygulamadan ("örnekler") oluşur. Bir SAP sistemi en az bir örnek içerir, ancak çoğunlukla boyutlandırma ve performans nedenleriyle daha fazlasını içerebilir. Birden çok örneği olan bir sistemde, yük dengeleme mekanizmaları, yükün mevcut uygulama sunucularına eşit olarak yayılmasını sağlar.
Web Uygulama Sunucusu ( manzara ) kurulumları tipik olarak üç sistemden oluşur: biri geliştirme için; test ve kalite güvencesi için; ve biri üretim için. Manzara daha fazla sistem içerebilir (örneğin, birim testi ve üretim öncesi testler için ayrı sistemler) veya daha azını içerebilir (örneğin, ayrı QA olmadan yalnızca geliştirme ve üretim); yine de üç en yaygın yapılandırmadır. ABAP programları oluşturulur ve geliştirme sisteminde ilk testlere tabi tutulur. Daha sonra peyzajdaki diğer sistemlere dağıtılırlar. Bu eylemler, eşzamanlılık kontrolünden (örneğin, iki geliştiricinin aynı anda aynı kodu değiştirmesini engellemek), sürüm yönetiminden ve QA ve üretim sistemleri.
Web Uygulama Sunucusu üç tabakadan oluşur: Veritabanı katmanında; uygulama katmanı; ve sunum katmanı. Bu katmanlar aynı veya farklı fiziksel makinelerde çalışabilir. Veritabanı katmanı ilişkisel veritabanı ve veritabanı yazılımları içerir. Uygulama katmanı bilgisi örneği veya sistemin örneklerini içerir. Ticari işlemler ve ABAP geliştirme dahil tüm uygulama süreçleri uygulama katmanında çalışır. Sunum katmanı sisteminin kullanıcılarla etkileşim yönetir. ABAP uygulama sunucularına çevrimiçi erişim, "SAP GUI" adı verilen özel bir grafik arabirim veya bir Web tarayıcısı aracılığıyla yapılabilir.
Yazılım katmanları
ABAP yazılımı, yazılım bileşenlerine dağıtılır. Bunlara örnekler:
- SAP_BASIS , her ABAP sisteminde gerekli olan gerekli teknik temel katmandır.
- SAP_ABA , iş ortağı ve adres yönetimi gibi her türlü iş uygulaması için gerekli olan işlevleri içerir.
- SAP_UI , SAP UI5 uygulamaları oluşturmak için işlevsellik sağlar.
- BBPCRM bir iş uygulaması örneğidir, bu durumda CRM uygulaması
- SAP ABAP bir ERP programlama dilidir.
işlemler
SAP terminolojisinde bir işlem, bir programın yürütülmesidir. SAP sisteminde ABAP kodunu yürütmenin normal yolu, bir işlem kodu girmektir (örneğin, VA01, "Satış Siparişi Oluştur" için işlem kodudur). İşlemler, sistem tanımlı veya kullanıcıya özel, rol tabanlı menüler aracılığıyla çağrılabilir. Ayrıca, her SAP ekranında bulunan bir komut alanına işlem kodunu doğrudan girerek de başlatılabilirler. İşlemler, CALL TRANSACTION ve LEAVE TO TRANSACTION adlı ABAP ifadeleri aracılığıyla programlı olarak da çağrılabilir. Bir işlemin genel kavramına SAP terminolojisinde Mantıksal İş Birimi (LUW) denir; işlem kodunun kısa biçimi T-kodudur .
ABAP programlarının türleri
Diğer programlama dillerinde olduğu gibi, bir ABAP programı, diğer programlara yeniden kullanılabilir kod sağlayan ve bağımsız olarak yürütülemeyen yürütülebilir bir birim veya bir kitaplıktır.
ABAP, iki tür yürütülebilir programı ayırt eder:
- Raporlar
- Modül havuzları
Raporlar, kullanıcının isteğe bağlı olarak bir dizi parametre girdiği (örneğin, bir veri alt kümesi üzerinden bir seçim) ve daha sonra programın giriş parametrelerini kullanarak etkileşimli bir liste biçiminde bir rapor oluşturduğu nispeten basit bir programlama modelini takip eder. "Rapor" terimi, raporların verileri değiştirmek üzere tasarlanabilmesi açısından bir şekilde yanıltıcı olabilir ; bu programlara rapor denmesinin nedeni, ürettikleri çıktının "liste odaklı" doğasıdır.
Modül havuzları, bir ekran koleksiyonu kullanarak daha karmaşık kullanıcı etkileşimi kalıplarını tanımlar. "Ekran" terimi, kullanıcının gördüğü gerçek, fiziksel görüntüyü ifade eder. Her ekranın ayrıca, ekranlar tarafından dolaylı olarak çağrılan ABAP koduna atıfta bulunan ve bir "PBO" (Çıkıştan Önce İşlem) ve "PAI" (Girişten Sonra İşlem) bölümlerine ayrılan bir "akış mantığı" vardır. SAP belgelerinde "dynpro" (dinamik program) terimi, ekran ve akış mantığının birleşimini ifade eder.
Yürütülebilir olmayan program türleri şunlardır:
- DAHİL modülleri
- Alt program havuzları
- Fonksiyon grupları
- nesne sınıfları
- Arayüzler
- Tip havuzlar
Bir INCLUDE modülü , üretim zamanında çağrı birimine dahil edilir; genellikle büyük programları alt bölümlere ayırmak için kullanılır.
Altyordam havuzları ABAP altyordamlarını içerir (FORM/ENDFORM deyimleriyle çevrelenmiş ve PERFORM ile çağrılan kod blokları).
İşlev grupları , bağımsız işlev modüllerinin kitaplıklarıdır (FUNCTION/ENDFUNCTION tarafından çevrelenir ve CALL FUNCTION ile çağrılır).
Nesne sınıfları ve arabirimleri , Java sınıflarına ve arabirimlerine benzer; ilki bir dizi yöntem ve özniteliği tanımlar, ikincisi, arabirimi uygulayan herhangi bir sınıfın açık kod sağlaması gereken "boş" yöntem tanımlarını içerir.
Tür havuzları, veri türleri ve sabitlerin koleksiyonlarını tanımlar.
ABAP programları bireysel cümlelerden (ifadelerden) oluşur. Bir ifadedeki ilk kelimeye ABAP anahtar kelimesi denir. Her ifade bir nokta ile biter. Kelimeler her zaman en az bir boşlukla ayrılmalıdır. İfadeler istediğiniz gibi girintili olabilir. Anahtar sözcükler, eklemeler ve işlenenlerle ABAP çalışma zamanı sistemi, büyük ve küçük harf arasında ayrım yapmaz.
İfadeler bir satırın ötesine geçebilir. Tek bir satırda birkaç ifadeniz olabilir (ancak bu önerilmez). İlk sütunda yıldız * ile başlayan satırlar, ABAP çalışma zamanı sistemi tarafından yorum satırları olarak tanınır ve yok sayılır. Çift tırnak işareti ("), satırın geri kalanının yorum olduğunu gösterir.
Geliştirme ortamı
ABAP'ta geliştirmenin iki olası yolu vardır. Kullanılabilirlik, ABAP sisteminin yayınlanmasına bağlıdır.
ABAP Tezgahı
ABAP Tezgahı ABAP sisteminin bir parçası olan ve üzerinden erişilen SAP GUI . Programları düzenlemek için farklı araçlar içerir. Bunlardan en önemlileri (işlem kodları parantez içinde gösterilmiştir):
- Raporları, modül havuzlarını, içerme ve alt rutin havuzlarını yazmak ve düzenlemek için ABAP Editor (SE38)
- Veritabanı tablosu tanımlarını işlemek ve genel türleri almak için ABAP Sözlüğü (SE11)
- Kullanıcı arabirimini tasarlamak için Menü Boyacısı (menü çubuğu, standart araç çubuğu, uygulama araç çubuğu, işlev tuşu ataması) (SE41)
- Ekranlar ve akış mantığı tasarlamak için Ekran Boyacısı (SE51)
- İşlev modülleri için İşlev Oluşturucu (SE37)
- ABAP Nesneleri sınıfları ve arayüzleri için Sınıf Oluşturucu (SE24)
Nesne Gezgini (işlem SE80) bu çeşitli araçlara bir tek entegre arayüz sağlar.
ABAP Geliştirme Araçları
ABAP Geliştirme Araçları ( ADT resmen "Eclipse ABAP" olarak bilinir), için eklentileri bir dizi Eclipse platformu ABAP geliştirme.
Bu senaryoda, ABAP geliştiricisi bilgisayarına gerekli araçları kurar ve yerel olarak çalışır, arka uçla sürekli bir senkronizasyon gerçekleştirilir.
ABAP Sözlüğü
ABAP Sözlüğü, SAP sistemindeki verilerle ilgili tüm meta verileri içerir. ABAP Workbench ile yakından bağlantılıdır, çünkü herhangi bir veri referansı (örneğin, bir tablo, bir görünüm veya bir veri türü) sözlükten alınacaktır. Geliştiriciler, bu meta verileri görüntülemek ve sürdürmek için ABAP Sözlük işlemlerini (doğrudan veya ABAP Workbench içindeki SE80 Nesne Gezgini aracılığıyla) kullanır.
Bir sözlük nesnesi değiştirildiğinde, değiştirilen nesneye başvuran bir program, programın bir sonraki çalışmasında otomatik olarak yeni sürüme başvuracaktır. ABAP yorumlandığından, değiştirilmiş sözlük nesnelerine başvuran programları yeniden derlemek gerekli değildir.
En önemli sözlük nesnesi türlerinin kısa bir açıklaması aşağıda verilmiştir:
- Tablolar , temel alınan ilişkisel veritabanında bulunan veri kapsayıcılarıdır. Çoğu durumda, ABAP Sözlüğü'ndeki bir tablonun tanımı ile aynı tablonun veritabanındaki tanımı (aynı ad, aynı sütunlar) arasında 1'e 1 ilişki vardır. Bu tablolar "şeffaf" olarak bilinir. İki tür saydam olmayan tablo vardır: "havuzlanmış" tablolar ABAP Sözlüğünde bağımsız varlıklar olarak bulunur, ancak bunlar veritabanı düzeyinde büyük fiziksel tablolarda ("havuzlar") birlikte gruplandırılmıştır. Havuzlanmış tablolar genellikle örneğin yapılandırma verilerini tutan küçük tablolardır. "Kümelenmiş" tablolar, birincil anahtarlarına göre fiziksel olarak "kümeler" içinde gruplanır; örneğin, kümelenmiş bir tablo H'nin satış faturalarıyla ilgili "başlık" verilerini içerdiğini, diğer bir kümelenmiş D tablosunun ise fatura satır öğelerini içerdiğini varsayalım . Her H satırı daha sonra, veritabanındaki bir "küme tablosu" içinde D'deki ilgili satırlarla fiziksel olarak gruplandırılacaktır. Performansı artırmak için tasarlanan bu tür kümeleme, ilişkisel veritabanı sistemlerinin hepsinde olmasa da bazılarında yerel işlevsellik olarak da bulunur.
- Dizinler , sık kullanılan seçim koşulları için tablo verilerine hızlandırılmış erişim sağlar. Her SAP tablosunun, tabloyla birlikte dolaylı olarak oluşturulan ve birincil anahtarın benzersizliğini zorlamak için kullanılan bir "birincil dizin"i vardır. Ek dizinler (benzersiz veya benzersiz olmayan) tanımlanabilir; bunlara "ikincil dizinler" denir.
- Görünümler , temel alınan veritabanındakiyle aynı amaca sahiptir: bir veya - bir birleştirme koşulu kullanarak - birkaç tablodan sütunların (ve/veya satırların) alt kümelerini tanımlarlar. Görünümler sanal tablolar olduğundan (diğer tablolardaki verilere atıfta bulunurlar) önemli miktarda yer kaplamazlar.
- Yapılar , birden çok alandan oluşan karmaşık veri türleridir ( C/C++'daki struct ile karşılaştırılabilir ).
- Veri öğeleri , bir tablo veya yapı alanı için anlamsal içerik sağlar. Örneğin, düzinelerce tablo ve yapı, fiyatını (bitmiş bir ürün, hammadde, kaynak, ...) veren bir alan içerebilir. Tüm bu alanlar aynı "PRICE" veri öğesine sahip olabilir.
- Etki alanları , bir veri öğesinin yapısal özelliklerini tanımlar. Örneğin, PRICE veri öğesi, fiyatı iki ondalık basamaklı sayısal bir alan olarak tanımlayan atanmış bir etki alanına sahip olabilir. Etki alanları, olası değerlerin bir listesini sağlamada anlamsal içerik de taşıyabilir. Örneğin, bir "BOOLEAN" etki alanı, uzunluğu 1 olan ve büyük/küçük harfe duyarlı olmayan "karakter" türünde bir alan tanımlayabilir, ancak olası değerleri "T" (doğru) veya "F" (yanlış) olarak da sınırlayabilir.
- Arama , bir kullanıcı bir veri alanı için olası değerleri görmek istediğinde gelişmiş arama stratejileri sağlamaya yardımcı olur (artık kullanılmayan "eşleştirme kodlarının" halefleri). ABAP çalışma zamanı (alan için tüm değerleri listeleyerek, örneğin tüm mevcut müşteri numaralarını listeleyerek) örtük yardım sağlar, ancak arama yardımı, örneğin coğrafi konum, kredi notu vb. ile müşteri aramaları sağlayarak bu işlevi iyileştirmek için kullanılabilir.
- Kilit nesneleri, verileri değiştirirken uygulama düzeyinde kilitleme uygular.
ABAP sözdizimi
ABAP sözdiziminin bu kısa açıklaması, her yerde bulunan " Merhaba dünya " programıyla başlar.
Selam Dünya
REPORT TEST.
WRITE 'Hello World'.
Bu örnek iki ifade içerir: REPORT
ve WRITE
. Program ekranda bir liste görüntüler. Bu durumda, liste "Merhaba Dünya" tek satırından oluşur. REPORT
İfadesi bu program bir rapor olduğunu gösterir. Bu program, REPORT
ifadeyi ile değiştirdikten sonra bir modül havuzu olabilir PROGRAM
.
zincirleme ifadeler
Aynı ilk (en soldaki) kısma sahip ardışık ifadeler, zincir operatörü kullanılarak "zincirleme" bir ifadede birleştirilebilir :
. İfadelerin ortak kısmı kolonun soluna yazılır, farklı kısımlar kolonun sağına yazılır ve virgülle ayrılır. İki nokta üst üste operatörü, boşluk olmadan doğrudan önceki simgeye eklenir (aynısı, aşağıdaki örneklerde görülebileceği gibi, üzerindeki simge listesindeki virgüller için de geçerlidir).
Zincirleme genellikle WRITE
ifadelerde kullanılır . WRITE
yalnızca bir argümanı kabul eder, bu nedenle örneğin FLIGHTINFO adlı bir yapıdan üç alan görüntülemek istiyorsanız, şunu kodlamanız gerekir:
WRITE FLIGHTINFO-CITYFROM.
WRITE FLIGHTINFO-CITYTO.
WRITE FLIGHTINFO-AIRPTO.
İfadeleri zincirlemek, daha okunabilir ve daha sezgisel bir biçimde sonuçlanır:
WRITE: FLIGHTINFO-CITYFROM, FLIGHTINFO-CITYTO, FLIGHTINFO-AIRPTO.
Bir zincir deyiminde, ilk kısım (iki nokta üst üste işaretinden önceki) yalnızca deyim adıyla sınırlı değildir. Ardışık ifadelerin tüm ortak kısmı iki nokta üst üste işaretinin önüne yerleştirilebilir. Örnek:
REPLACE 'A' WITH 'B' INTO LASTNAME.
REPLACE 'A' WITH 'B' INTO FIRSTNAME.
REPLACE 'A' WITH 'B' INTO CITYNAME.
zincirleme biçimde yeniden yazılabilir:
REPLACE 'A' WITH 'B' INTO: LASTNAME, FIRSTNAME, CITYNAME.
Yorumlar
ABAP'nin metni yorum olarak tanımlamanın 2 yolu vardır :
- Bir satırın en sol sütunundaki yıldız işareti (*), satırın tamamını bir yorum yapar
- Bir satırın herhangi bir yerinde çift tırnak işareti (") o satırın geri kalanını yorum yapar
Örnek:
***************************************
** Program: BOOKINGS **
** Author: Joe Byte, 07-Jul-2007 **
***************************************
REPORT BOOKINGS.
* Read flight bookings from the database
SELECT * FROM FLIGHTINFO
WHERE CLASS = 'Y' "Y = economy
OR CLASS = 'C'. "C = business
(...)
boşluklar
ABAP'deki kod boşluklara duyarlıdır.
x = a+b(c).
x değişkenine, c değişkeni tarafından tanımlanan uzunlukla b'den başlayarak, a değişkeninin alt dizesini atar.
x = a + b( c ).
x değişkenine, a değişkeninin toplamını ve c parametresiyle yöntem b'ye yapılan çağrının sonucunu atar.
ABAP ifadeleri
Sınırlı bir dile özgü ifadeler kümesi tanımlayan ve kitaplıklar aracılığıyla çoğu işlevi sağlayan C/C++ veya Java gibi dillerin aksine, ABAP çok sayıda yerleşik ifade içerir. Bu ifadeler geleneksel olarak cümle benzeri yapılar kullanıyor ve sembollerden kaçınıyordu, bu da ABAP programlarını nispeten ayrıntılı hale getiriyordu. Ancak, ABAP dilinin daha yeni sürümlerinde daha kısa bir stil mümkündür.
İfadeye dayalı sözdizimine (sözdizimi COBOL kaynaklıdır) karşı ifadeye dayalı sözdizimine (C/Java'da olduğu gibi) bir örnek:
ADD TAX TO PRICE.
* is equivalent to
PRICE = PRICE + TAX .
Veri türleri ve değişkenler
ABAP bir dizi yerleşik veri türü sağlar. Ayrıca ABAP Sözlüğü'nde tanımlanan her yapı, tablo, görünüm veya veri öğesi bir değişken yazmak için kullanılabilir. Ayrıca, nesne sınıfları ve arabirimler tür olarak kullanılabilir.
Yerleşik veri türleri şunlardır:
Tip | Tanım |
---|---|
ben | tamsayı |
P | paketlenmiş ondalık |
F | Kayan nokta |
n | karakter sayısal |
C | Karakter |
NS | Tarih |
T | Zaman |
x | Onaltılık (ham bayt) |
SİCİM | Değişken uzunluklu dize |
XSTRING | Değişken uzunlukta ham bayt dizisi |
Tarih değişkenleri veya sabitleri (D tipi), 1 Ocak 1 AD'den bu yana geçen günlerin sayısını içerir. Zaman değişkenleri veya sabitleri (T tipi), gece yarısından bu yana geçen saniye sayısını içerir. Her iki türün özel bir özelliği, tarih ve saat işleme için kullanılabilen hem tamsayılar hem de karakter dizileri (tarihler için "YYYYMMDD" ve saatler için "hhmmss" dahili biçimiyle) olarak erişilebilmesidir. Örneğin, aşağıdaki kod parçacığı önceki ayın son gününü hesaplar (not: SY-DATUM, geçerli tarihi içeren sistem tanımlı bir değişkendir):
DATA LAST_EOM TYPE D. "last end-of-month date
* Start from today's date
LAST_EOM = SY-DATUM.
* Set characters 6 and 7 (0-relative) of the YYYYMMDD string to "01",
* giving the first day of the current month
LAST_EOM+6(2) = '01'.
* Subtract one day
LAST_EOM = LAST_EOM - 1.
WRITE: 'Last day of previous month was', LAST_EOM.
Tüm ABAP değişkenlerinin kullanılabilmesi için açıkça bildirilmesi gerekir. Bunlar, tek tek ifadeler ve açık tipleme ile veya ABAP 7.40'tan beri, çıkarsanan tipleme ile satır içi olarak bildirilebilirler .
Açıkça yazılan beyan
Normalde tüm bildirimler, ilk çalıştırılabilir ifadeden önce kod modülünün (program, alt program, işlev) en üstüne yerleştirilir; bu yerleşim bir kuraldır ve zorunlu bir sözdizimi kuralı değildir. Bildirim, ad, tür, uzunluk (uygun olduğunda), ek değiştiricilerden (örneğin, paketlenmiş bir ondalık alan için ima edilen ondalık sayıların sayısı) ve isteğe bağlı olarak bir başlangıç değerinden oluşur:
* Primitive types:
DATA: COUNTER TYPE I,
VALIDITY TYPE I VALUE 60,
TAXRATE(3) TYPE P DECIMALS 1,
LASTNAME(20) TYPE C,
DESCRIPTION TYPE STRING.
* Dictionary types:
DATA: ORIGIN TYPE COUNTRY.
* Internal table:
DATA: T_FLIGHTS TYPE TABLE OF FLIGHTINFO,
T_LOOKUP TYPE HASHED TABLE OF FLT_LOOKUP.
* Objects:
DATA: BOOKING TYPE REF TO CL_FLT_BOOKING.
Ardışık DATA ifadelerini zincirlemek için iki nokta üst üste kullanımına dikkat edin.
satır içi bildirim
ABAP 7.40'tan beri, değişkenler aşağıdaki sözdizimi ile satır içi olarak bildirilebilir :
DATA(variable_name) = 'VALUE'.
Bu tür bir bildirim için, türün statik olarak, örneğin yöntem imzası veya veritabanı tablosu yapısı yoluyla çıkarılmasının mümkün olması gerekir .
Bu sözdizimi, OpenSQL deyimlerinde de mümkündür:
SELECT * FROM ekko into @DATA(lt_ekko) WHERE ebeln EQ @lv_ebeln.
ABAP Nesneleri
ABAP dili, "ABAP Nesneleri" olarak bilinen bir özellik aracılığıyla nesne yönelimli programlamayı destekler . Bu, uygulamaları basitleştirmeye ve daha kontrol edilebilir hale getirmeye yardımcı olur.
ABAP Nesneleri mevcut dil ile tamamen uyumludur, bu nedenle ABAP Nesneleri kullanan programlarda mevcut ifadeler ve modülerleştirme birimleri kullanılabilir ve ayrıca mevcut ABAP programlarında ABAP Nesneleri kullanılabilir. ABAP Nesneleri programlarında sözdizimi denetimi daha güçlüdür ve belirli ifadelerin bazı sözdizimsel biçimlerine (genellikle daha eski olanlar) izin verilmez.
Nesneler, karakteri ilgili davranışla birleştiren bir kapsül oluşturur. Nesneler, programcıların gerçek bir sorunu ve önerilen yazılım çözümünü bire bir temelde haritalandırmasını sağlamalıdır. Bir iş ortamındaki tipik nesneler, örneğin, 'Müşteri', 'Sipariş' veya 'Fatura'dır. Sürüm 3.1'den itibaren, SAP Web Uygulama Sunucusu ABAP'nin İş Nesnesi Deposu (BOR), bu tür nesnelerin örneklerini içermektedir. BOR nesne modeli, BOR nesne türlerini ABAP sınıf kitaplığına geçirerek bir sonraki Sürümde ABAP Nesnelerine entegre edilecektir. Bir bütün olarak nesne yönelimine kapsamlı bir giriş, ABAP Nesnelerine yapılan bu girişin sınırlarının çok ötesine geçecektir. Bu belge, nesne yöneliminde evrensel olarak kullanılan ve ABAP Nesnelerinde de bulunan bir dizi terim sunar. Sonraki bölümlerde, bu terimlerin ABAP Nesnelerinde nasıl kullanıldığını daha ayrıntılı olarak tartışmaya devam ediyor. Bu bölümün sonunda, nesne yönelimi ile ilgili bir dizi başlıkla birlikte daha fazla okuma listesi bulunmaktadır.
- Nesneler sınıfların örnekleridir. Veri içerirler ve hizmet sağlarlar. Veriler, nesnenin niteliklerini oluşturur. Hizmetler, yöntemler (işlemler veya işlevler olarak da bilinir) olarak bilinir. Tipik olarak yöntemler, yalnızca nesnenin yöntemleri tarafından görülebilen özel veriler (nesnenin nitelikleri veya durumu) üzerinde çalışır. Bu nedenle, bir nesnenin nitelikleri doğrudan kullanıcı tarafından değiştirilemez, sadece nesnenin yöntemleri ile değiştirilebilir. Bu, nesnenin iç tutarlılığını garanti eder.
- Sınıflar nesneleri tanımlar. Teknik açıdan nesneler, bir sınıfın çalışma zamanı örnekleridir. Teoride, tek bir sınıfa dayalı herhangi bir sayıda nesne oluşturulabilir. Bir sınıfın her bir örneği (nesnesi), benzersiz bir kimliğe ve nitelikleri için kendi değerler kümesine sahiptir.
- Nesne Referansları , bir programdaki nesneleri tanımlamak ve onlara işaret etmek için kullanılabilecek benzersiz adreslerdir. Nesne referansları, bir nesnenin niteliklerine ve yöntemlerine erişime izin verir.
Nesne yönelimli programlamada nesneler genellikle aşağıdaki özelliklere sahiptir:
- Kapsülleme - Nesneler, kaynaklarının (öznitelikler ve yöntemler) diğer kullanıcılara görünürlüğünü kısıtlar. Her nesnenin, diğer nesnelerin onunla nasıl etkileşime girebileceğini belirleyen bir arabirimi vardır. Nesnenin uygulaması kapsüllenmiştir, yani nesnenin kendisi dışında görünmez.
- Kalıtım - Yeni bir sınıf türetmek için mevcut bir sınıf kullanılabilir. Türetilmiş sınıflar, üst sınıfın verilerini ve yöntemlerini devralır. Ancak, mevcut yöntemlerin üzerine yazabilir ve yenilerini de ekleyebilirler.
- Polimorfizm - Özdeş (aynı isimli) yöntemler farklı sınıflarda farklı davranır. ABAP Nesnelerinde, polimorfizm, kalıtım sırasında yöntemler yeniden tanımlanarak ve arabirim adı verilen yapılar kullanılarak uygulanır.
CDS Görünümleri
ABAP Çekirdek Veri Hizmetleri (ABAP CDS), AS ABAP için genel CDS konseptinin uygulamasıdır. ABAP CDS, uygulama sunucusunun merkezi veritabanında anlamsal veri modellerinin tanımlanmasını mümkün kılar. AS ABAP'ta bu modeller veritabanı sisteminden bağımsız olarak tanımlanabilir. Bu modellerin varlıkları, ABAP Sözlüğü'nde tanımlanan mevcut veritabanı tabloları ve görünümleriyle karşılaştırıldığında gelişmiş erişim işlevleri sağlayarak Open SQL tabanlı uygulamaları optimize etmeyi mümkün kılar. Bu, bir AS ABAP, bir SAP HANA veritabanı kullandığında, bellek içi özellikleri optimum bir şekilde uygulanabildiğinden özellikle açıktır.
Veri modelleri, ABAP CDS sözdiziminde ABAP CDS'de sağlanan veri tanımlama dili (DDL) ve veri kontrol dili (DCL) kullanılarak tanımlanır. Bu diller kullanılarak tanımlanan nesneler ABAP Sözlüğü'ne entegre edilir ve burada da yönetilir.
CDS kaynak kodu yalnızca Eclipse tabanlı ABAP Geliştirme Araçları'nda (ADT) programlanabilir. Veri Tanımlama Dili (DDL) ve Veri Kontrol Dili (DCL) farklı düzenleyiciler kullanır.
Özellikleri
SAP NW ABAP | SQL Birleşimleri | SQL Küme İşlemleri | Cümleleri SEÇ |
---|---|---|---|
7.40 SP05 |
|
|
|
7.40 SP08 | |||
7.50 | |||
7,51 |
|
SAP NW ABAP | değişmezler | Aritmetik operatörler | Koşullu İfadeler |
---|---|---|---|
7.40 SP05 |
|
|
|
7.40 SP08 |
|
||
7.50 | |||
7,51 |
|
SAP NW ABAP | Toplama işlevleri | Sayısal işlevler | dize işlevleri |
---|---|---|---|
7.40 SP05 |
|
|
|
7.40 SP08 |
|
|
|
7.50 |
|
||
7,51 |
|
|
|
SAP NW ABAP | Bayt dizisi işlevleri | Tarih ve saat işlevleri | Diğer fonksiyonlar |
---|---|---|---|
7.40 SP05 |
|
||
7.40 SP08 |
|
||
7.50 |
|
|
|
7,51 |
|
|
SAP NW ABAP | Koşullu (CASE) ifadeler | genişletilebilirlik | (Yönetilmeyen) Dernekler |
---|---|---|---|
7.40 SP05 |
|
|
|
7.40 SP08 |
|
|
|
7.50 |
|
|
|
7,51 |
|
|
|
SAP NW ABAP | Oturum değişkenleri | Giriş parametreleri | Diğer |
---|---|---|---|
7.40 SP05 |
|
||
7.40 SP08 |
|
||
7.50 |
|
|
|
7,51 |
|
|
ABAP'ta dahili tablolar
Dahili tablolar ABAP dilinin önemli bir özelliğidir. Dahili bir tablo, C++'daki struct s vektörüne veya Java'daki bir nesne vektörüne benzer şekilde tanımlanır . Bu dillerden temel fark, ABAP'ın dahili tabloların içeriğine kolayca erişmek ve bunları değiştirmek için bir ifadeler koleksiyonu sağlamasıdır. ABAP'nin dizileri desteklemediğini unutmayın; çok elemanlı bir veri nesnesini tanımlamanın tek yolu dahili bir tablo kullanmaktır.
Dahili tablolar, ABAP'ın çalışma belleğinde sabit bir yapıya sahip değişken veri kümelerini depolamanın bir yoludur ve dinamik dizilerin işlevselliğini sağlar. Veriler, her satırın aynı yapıya sahip olduğu, satır satır saklanır.
Dahili tablolar tercihen bir program içinden veritabanı tablolarının içeriğini depolamak ve biçimlendirmek için kullanılır. Ayrıca, yapılarla bağlantılı dahili tablolar, bir ABAP programında karmaşık veri yapılarını tanımlamanın önemli bir yoludur.
Aşağıdaki örnek, VBRK veritabanı tablosu formatına sahip iki alanlı bir dahili tabloyu tanımlar.
* First define structured type
TYPES: BEGIN OF t_vbrk,
VBELN TYPE VBRK-VBELN,
ZUONR TYPE VBRK-ZUONR,
END OF t_vbrk.
* Now define internal table of our defined type t_vbrk
DATA : gt_vbrk TYPE STANDARD TABLE OF t_vbrk,
gt_vbrk_2 TYPE STANDARD TABLE OF t_vbrk. "easy to define more tables
* If needed, define structure (line of internal table)
* Definition with type or with reference to internal table:
DATA : gs_vbrk TYPE t_vbrk,
gs_vbrk_2 LIKE LINE OF gt_vbrk_2.
* You can also define table type if needed
TYPES tt_vbrk TYPE STANDARD TABLE OF t_vbrk.
Tarih
Aşağıdaki liste, ABAP dilinin tarihindeki bazı önemli kilometre taşları hakkında yalnızca kaba bir genel bakış sunmaktadır. Daha fazla ayrıntı için bkz. ABAP - Sürüme Özgü Değişiklikler .
Sürüm | Yayın tarihi | Büyük değişiklikler |
---|---|---|
4.6C | Mayıs 2000 |
|
6.40 | 2004 | |
7.0 | 2006 |
|
7,02 |
|
|
7.40 | 2012-11-29 |
|
7.40 SP05 | Aralık 2013 |
|
7.40 SP08 | Eylül 2014 |
|
7.50 | Kasım 2015 |
|
7,51 | Ekim 2016 |
|
7,52 | Eylül 2017 |
|
7.54 | Eylül 2019 |
|
7,55 | Eylül 2020 |
|
Ayrıca bakınız
Referanslar
Dış bağlantılar
- ABAP - Anahtar Kelime Dokümantasyonu
- SAP Yardım Portalı
- SAP Community Network (SCN) üzerinde ABAP Geliştirme tartışmaları, bloglar, belgeler ve videolar