Tablo Yaratma-Restful Application Programming

Bu rehberde, RAP’in temel taşlarından olan tablo yaratma sürecini adım adım inceleyeceğiz. SAP dünyasında veri modelinizi oluştururken dikkat etmeniz gerekenlerden, @AbapCatalog annotation’larının kritik rolüne kadar her detayı öğrenerek, performansı yüksek ve ölçeklenebilir uygulamalar geliştireceğiz.
Tablo yaratma adımları şöyledir:
- Öncelikle tablonunuzu içine atmak istediğiniz bir paket varsa o paketin üzerine gelip sağ tıklayınız. Örneğin burada ZMP_SAP isimli paketi seçiyorum. Sağ tık > New > Other ABAP Repository Object

2. Popup’ta ‘database’ kelimesini aratınız. Dictionary klasörünün altındaki Database Table seçeneğini seçiniz ve Next diyiniz.

3. Name ve Description alanlarını mantıklı bir şekilde doldurunuz. Tablo isimlendirmesi yaparken Z… formatına uygun yazınız. Yani bizim kendi yarattığımız tablolar Z harfi ile başlamalıdır.

4. Bir TR (Transport Request) seçip Finish’e tıklayınız. Eğer TR’iniz yoksa Create a new request seçeneğini seçerek yeni bir TR oluşturabilirsiniz.

Yeni tablo oluşturuldu. Şimdi de için fields (alanlar) ekleyeceğiz.
Bir tabloda en az 1 en fazla 16 key olabilir. Key alanlar tabloda ‘unique’ olan alanlardır. İlk key her zaman client’tır. Ayrıca key alanlar not null olmak zorundadır. Eğer not null yazmadan devam ederseniz, tablo aktifleştirildiğinde IDE otomatik olarak not null ibarelerini ekler.
Tabloya aşağıdaki alanları ekledik. Sol tarafta alan adları bulunurken sağ tarafta alanların tipleri bulunuyor. Bunlar : ile ayrılır ve her satırın sonuna ; işareti konur.

@EndUserText.label : 'Admin Info'
@AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #A
@AbapCatalog.dataMaintenance : #RESTRICTED
define table zadmin {
key client : abap.clnt not null;
key admin_id : abap.char(40) not null;
first_name : /dmo/first_name;
last_name : /dmo/last_name;
email_address : /dmo/email_address;
birth_date : abap.datn;
entry_date : abap.datn;
department_id : sysuuid_x16;
@Semantics.amount.currencyCode : 'zadmin.currency_code'
annual_salary : abap.curr(10,2);
currency_code : waers;
}
Tabloyu aktifleştiriniz.
Annotasyonlar ve açıklamaları:

Annotasyonlar, @ işaretiyle başlayan kod satırlarıdır. Ek açıklamalar, tablo tanımının kendisinin bir parçasıdır ve teknik ve anlamsal özellikleri tanımlar.
@EnduserText.label : Tabloyu yaratırken description kısmına yazdığımız tanımın yer aldığı kısımdır. Kullanıcıya ve geliştiriciye tablonun işlevi hakkında bilgi verir. Bu annotation, tablonun kullanıcı arayüzlerinde (örneğin, SAP GUI veya Fiori uygulamalarında) görüntülenecek kısa açıklamasını tanımlar. ‘Short Descriptions’ yerine, tablonuz için daha anlamlı bir metin yazabilirsiniz. Bu metin, geliştiricilerin ve son kullanıcıların tabloyu daha kolay anlamasına yardımcı olur.
@AbapCatalog.tableCategory: #TRANSPARENT (ya da #TEMPORARY) 1. @AbapCatalog.tableCategory: #TRANSPARENT
Bu annotation, DDIC tablosunun şeffaf (transparent) tablo olduğunu belirtir. Şeffaf tablolar, verilerin fiziksel olarak veritabanında saklandığı standart tablolardır. Her sütun, veritabanındaki karşılık gelen bir sütunla eşlenir.
Özellikleri:
Standart Depolama: Veriler doğrudan veritabanı tablolarında saklanır.
Kolay Erişim: Standart ABAP SQL ifadeleri (SELECT, INSERT, UPDATE, DELETE) kullanılarak doğrudan erişilebilir ve manipüle edilebilir.
RAP Uygulamaları İçin Uygun: Şeffaf tablolar, RAP uygulamaları için temel veri kaynağı olarak yaygın olarak kullanılır. İşlem mantığı ve UI katmanları doğrudan bu tablolara erişebilir.
Yaygın Kullanım: ABAP geliştirmede en yaygın kullanılan tablo türüdür.
Ne Zaman Kullanılır?
Kalıcı verilerin saklanması gerektiğinde.
Verilerin doğrudan veritabanında saklanması ve yönetilmesi gerektiğinde.
Standart ABAP SQL kullanılarak verilere kolayca erişilmesi ve manipüle edilmesi gerektiğinde.
RAP uygulamalarında temel veri kaynağı olarak kullanılacak tablolar için.
2. @AbapCatalog.tableCategory: #TEMPORARY
Bu annotation, DDIC tablosunun geçici (temporary) tablo olduğunu belirtir. Geçici tablolar, yalnızca oturum süresince var olan ve verilerin kalıcı olarak saklanmadığı tablolardır. Genellikle ara sonuçları saklamak, karmaşık hesaplamalar yapmak veya bir kullanıcı oturumu boyunca geçerli olan verileri tutmak için kullanılırlar.
Özellikleri:
Geçici Depolama: Veriler kalıcı olarak veritabanında saklanmaz. Oturum sonlandığında veya tablo açıkça silindiğinde veriler kaybolur.
Oturuma Özel: Her kullanıcı oturumu için ayrı bir geçici tablo örneği oluşturulur. Bu, farklı kullanıcıların aynı anda aynı geçici tabloyu kullanmasını ve verilerin karışmasını önler.
Performans Avantajı: Geçici tablolar, genellikle performansı artırmak için kullanılır. Veriler veritabanına yazılıp okunmak yerine, bellekte tutulduğu için daha hızlı erişim sağlanır.
RAP’de Sınırlı Kullanım: Geçici tabloların RAP uygulamalarında kullanımı daha sınırlıdır. Genellikle işlem mantığında ara sonuçları saklamak veya geçici verileri yönetmek için kullanılırlar.
Ne Zaman Kullanılır?
Oturum süresince geçerli olan verileri saklamak için.
Karmaşık hesaplamaların ara sonuçlarını tutmak için.
Verilerin kalıcı olarak saklanmasına gerek olmadığında.
Performansı artırmak için (verilere hızlı erişim gerektiğinde).
RAP uygulamalarında geçici verileri yönetmek için.
- @AbapCatalog.deliveryClass: #A: Bu annotation, tablonun teslimat sınıfını (delivery class) tanımlar. Teslimat sınıfı, tablonun taşınabilirlik, güncelleme ve koruma davranışlarını belirler. #A değeri, “Application table (master and movement data)” anlamına gelir. Bu, tablonun uygulama verilerini saklamak için tasarlandığı ve taşınabilir (transportable) olduğu anlamına gelir. Farklı teslimat sınıfları mevcuttur (örneğin, #C (customizing table) veya #E (system table)), her biri farklı davranışlar sergiler.
- @AbapCatalog.dataMaintenance: #RESTRICTED: Bu annotation, tablonun veri bakımını (data maintenance) kısıtlar. #RESTRICTED değeri, tablodaki verilerin doğrudan veri tabanı araçları (örneğin, SE16N) kullanılarak değiştirilmesinin veya silinmesinin genellikle engellendiği anlamına gelir. Veri bakımı genellikle özel işlem programları veya RAP servisleri aracılığıyla yapılır. Bu, veri tutarlılığını korumaya ve yetkisiz değişiklikleri önlemeye yardımcı olur.
- @AbapCatalog.enhancement.category: #NOT_EXTENSIBLE: Bu annotation, tablonun alan listesinin (field list) genişletilmesinin izin verilmediğini (not extensible) belirtir. Bu, tablonun yapısının (sütunlarının) standart geliştirme araçları kullanılarak (örneğin, append structure veya custom field) ek alanlarla genişletilemeyeceği anlamına gelir. Bu, uyumluluk sorunlarını önlemeye ve tablonun orijinal tasarımını korumaya yardımcı olur. Alternatif olarak, #EXTENSIBLE_CHARACTER , #EXTENSIBLE_ANY gibi diğer seçenekler de mevcuttur.

Bir konunun daha sonuna gelmiş bulunmaktayız. Bir sonraki yazımızda görüşmek dileğiyle.