ABAP programlarında kullanılan tablolardaki verilere erişim için kullanılan Logical Database yapısı programlardaki performans açısından büyük önem taşımaktadır. Özellikle standart bir veri okuma işlemi için kullanılan Logical Database işlemleri sadece read-only formatında sunulmaktadır.
ABAP programınız için bir Logical Database oluşturmak için sunulan 2 trasaction bulunmaktadır.SLDB ve SE36 T-code’ları ile logical database oluşturabilirsiniz.
Aşağıda ki örnekte hem logical database nasıl oluşturulur, hem de oluşturulan bir Logical Database ABAP programları içerisinde nasıl kullanılabilir konusunda yardımcı olacaktır.
SE36 Transaction Code ile açılan pencerede ilk olarak Logical Database için isim belirliyor, alt nesne olarak YAPI (STRUCTURE) seçtikten sonra yarat butonu ile ilerledikçe bize kısa metin sorgulaması girdirilecektir.


Logical Database’e ilişkin tanımlamaları tamamladıktan sonra Database’in hangi tablo ile çalıştırılacağı ve bu tabloya yapı içerisinde hangi isimle çağırılacağı belirleniyor. Bu örnekte hazır olan Z’li bir tablo kullanıyorum.

Logical Database yapısında hangi koşullara göre tablodan veri çekeceğimizi belirlemek amacıyla seçimler butonu ile seçim ekranı oluşturulmasını sağlıyoruz. Aslında bu işlem standart bir programda ki select-options katmanı ile aynı işlem olacak.


Seçim ekranı oluşturduktan sonra DEVRAL butonuna bastığımızda bize bir kod ekranı açılacaktır. Burada Select-Optisons seçeneklerini belirliyoruz.
------------------------------------------------------------------* * INCLUDE DBZDEMO_LOGIC_DBSEL * It will be automatically included into the database program. *----------------------------------------------------------------------* * * If the source code is automatically generated, * please perform the following steps: * 1. Replace ? by suitable names (at most 8 characters). * 2. Activate SELECT-OPTIONS and PARAMTERS (delete stars). * 3. Save source code. * 4. Edit database program * * Hint: Syntax-Check is not possible within this Include! * It will be checked during syntax-check of database program. * *----------------------------------------------------------------------* SELECT-OPTIONS : S_MATNR FOR ZDEMO_TABLE-MATNR, S_WERKS FOR ZDEMO_TABLE-WERKS, S_PDATE FOR ZDEMO_TABLE-URETIM_TARIHI. * Enable DYNAMIC SELECTIONS for selected nodes : SELECTION-SCREEN DYNAMIC SELECTIONS FOR TABLE ZDEMO_TABLE. * Enable FIELD SELECTION for selected nodes : SELECTION-SCREEN FIELD SELECTION FOR TABLE ZDEMO_TABLE.
Bu işlemi tamamladıktan sonra tekrar Ana ekran üzerinde Kaynak Metin (Source Code) seçeneği ile select-options içerisinde belirlenen seçimlere göre select işleminin yapılacağı include kodu düzenlenecektir.

=> SAPDBZDEMO_LOGIC_DB
=> DBZDEMO_LOGIC_DBNXXX
=> DBZDEMO_LOGIC_DBN001
Açılan kod satırında yukarıdaki şekilde include’lar içerisinde devam ederek son olarak DBZDEMO_LOGIC_DBN001 include içerisinde select işlemini tanımlıyoruz.
*----------------------------------------------------------------------* * Call event GET ZDEMO_TABLE *----------------------------------------------------------------------* FORM PUT_ZDEMO_TABLE. SELECT * FROM ZDEMO_TABLE INTO ZDEMO_TABLE WHERE MATNR IN S_MATNR AND WERKS IN S_WERKS AND URETIM_TARIHI IN S_PDATE. PUT ZDEMO_TABLE. ENDSELECT. ENDFORM.
Artık tüm Logical Database yapısını oluşturmuş bulunuyoruz. Bu işlemin devamında oluşturacağımız bir abap programı içerisinde, program özellikleri kısmında belirlenmiş olan LOGICAL DATABASE alanına oluşturduğunuz Logical Database adını yazıyoruz.

Programın kodlanması aşamasında herhangi bir select-options oluşturmanız gerek bulunmuyor. Hiç bir kod yazmadan programı çalıştırdığınızda bile ekranda hazır olarak select-options alanını göreceksiniz. Bu tamamen logical database oluşturulurken belirlenmiş olan select-options ile getirilmektedir.
Programın kodlaması aşağıdaki şekilde kısa olacaktır. Programı çalıştırdığınızda belirlenen select-options değerlerine göre WRITE komutu ile ekrana bastırıldığını görebilirsiniz.
REPORT ZLRNG_P_DEMO1. NODES : ZDEMO_TABLE. START-OF-SELECTION. GET ZDEMO_TABLE. WRITE: / ZDEMO_TABLE-MATNR , ZDEMO_TABLE-WERKS , ZDEMO_TABLE-URETIM_TARIHI.

