Veri Tabanı Tablolarını Okuma ve Görüntüleme Bir raporda veritabanı tabloları ile çalışmak istediğinizde, raporda tablodan gelen verile...
Veri Tabanı Tablolarını Okuma ve Görüntüleme
Bir raporda veritabanı tabloları ile çalışmak istediğinizde, raporda tablodan gelen verileri düzenleyebileceğiniz bir çalışma alanı (work area) bildirmeniz gerekir. Bizim ZMEMBER01 tablomuz için aşağıdaki ifadeyi kullanarak bunu yapabilirsiniz:
DATA wa_zmember01 TYPE zmember01.
DATA ifadesi programda veritabanı tablosu ile aynı veri türüne sahip ve aynı adı taşıyan bir yapı oluşturur : Çalışma Alanı (Work Area)
ABAP ile ilgili yayınlar birbirlerini takip eden konular içerir. Tüm ABAP yayınlarının listesine ulaşmak için tıklayınız.
Bu yapının tüm alanları veritabanı tablosundaki alanlar ile aynı adlara ve veri türlerine sahiptir. Veri tabanı tablosundan veri kayıtlarını okurken, veri kayıtlarının her birini yapının içine koyabilir ve sonra onlarla çalışabilirsiniz.
- [message]
- Kullanılmayan TABLES İfadesi
- Eski programlar tablo alanı veya tablo çalışma alanını tanımlayan ve artık kullanılmayan TABLES ifadesini içerebilir. Bu ifade programda başvurulan veritabanı tablosu için aynı isimde bir veri yapısı (data structure) oluşturur. Veritabanı erişimi için bazı komutların, çalışma alanının (work area) açıkça belirtilmediği kısa biçimleri vardır. Açıkça adlandırılmış bir çalışma alanı kullanmak yerine, sistem örtülü olarak ABAP Sözlük’teki veritabanı tablosu ile aynı ada sahip bir çalışma alanı oluşturur. Bu karışıklığa ilaveten, bu tür örtük adlandırılmış çalışma alanlarının adları yanlış kullanım sonucu, sık sık diğer veri nesnelerine (data objects) verilir. Bu durum ise kafa karıştırıcı olabilir. Çünkü programı okuyan kişi için kodun ne zaman bir çalışma alanını (programınızın belleğinde bir veri nesnesi), ne zaman bir veritabanı tablosunu ve de ne zaman sadece söz konusu veritabanı tablosunun sözlük yapısını ifade ettiği açık değildir. Söz konusu ABAP komutlarının kısa biçimleri bu üçü arasında hiçbir fark belirtmez. Normal koşullarda, eğer bu tip artık kullanılmayan ifadeler kullanırsanız programlama ortamı hata verir. Eski programlarda bu tip ifadeleri bulacak olsanız bile, bunları kullanmayı alışkanlık haline getirmemelisiniz.
- Tire
- Yapıların alanlarını çalışma alanının ismi ve çalışma alanındaki alanların isimleri ile belirtirsiniz; örneğin WA_ZMEMBER01 çalışma alanının MNAME alanını WA_ZMEMBER01-MNAME olarak belirtirsiniz. Adın ilk bölümü çalışma alanı yapısının adıdır; ikinci bölüm ise alan adıdır. Herhangi bir boşluk olmaksızın adın bölümlerini ayıran tire işaretine dikkat edin. Gelecek çalışmalarınızda da, tire işaretinin sadece bu amaç için kullanılması gerektiğine ve asla değişken isimleri ile kullanılmaması gerektiğine dikkate edin.
Kullanımdaki veritabanı tablolarının tüm alanları için belirtilen türleri herkes hatırlayamaz. Alanların türlerine bakmanız gerekirse, sözlükte görüntüleme ekranına erişmek için tablo adını çift tıklayın. Alanların türleri ile ilgili bilgiyi FIELDS sekmesinde görebilirsiniz. Daha sonra ABAP Editörüne dönmek için BACK düğmesini kullanın.
[post_ads_2]
Aşağıdaki program bir veritabanı tablosunun kayıtlarını satır satır listelemenin en basit yoludur:
SELECT * FROM zmember01 INTO wa_zmember01.
WRITE / wa_zmember01.
ENDSELECT.
SELECT ifadesi kayıtların ZMEMBER01 tablosundan birer birer çalışma alanına (wa_zmember01) transferi anlamına gelir. Yıldız işareti (*), bir kaydın tüm alanlarının transfer edildiğini gösterir. Sadece bazı alanları aktarmak istiyorsanız, yıldız kullanmak yerine bu alanları belirtmeniz gerekir.
Bu yazım biçiminde, SELECT komutu döngü işlemine karşılık gelir. Veri tabanı tablosunun tüm kayıtları, program yapısına birer birer aktarılır. Döngü SELECT deyimi ile başlar ve ENDSELECT deyimi ile biter.
Listelerin Biçimlendirilmesi
Yapı okunan kayıtları işlemek için ifadeler içerir. Bu durumda, tüm WA_ZMEMBER01 yapısı, bir listeye kayıt kayıt yazılır. WRITE komutunda slash (/) ile yeni bir satırı tetikleyebilirsiniz. Slash'ten önce ve sonra bir boşluk eklemek gerektiğini unutmayın.
Veri tabanı tablosunda üç veri kaydı olduğundan, listede üç satır vardır: Listenin her bir satırı yapı ile aynı uzunluktadır. Çıktı listesi bir karakter dizesi olarak verilir. Alanlar arasında boş sütun yoktur. Listenin okunabilirliği optimal düzeyde değildir. Bu listede alanları istenen sırayla (aralarında biraz boşlukla) görmek daha iyi olurdu. Bu yapının alanlarını adreslemelisiniz. Aşağıdaki örneği inceleyin:
WRITE / wa_zmember01-mdob.
/ işareti alanın yeni bir satıra çıkışını tetikler. Ancak aşağıdaki açıklama, çıktıyı mevcut basılmış satırın sonuna yerleştirir; yani, alan yalnızca satıra ilave edilir.
WRITE wa_zmember01-mname.
Bu yaklaşım, sonsuz uzun satırlar üretebilir. Sistem kendi başına, ekranda bir satırı sadece ekran ayarları talep etmişse kırar. Kağıt üzerinde ise bir satırı, yazıcı çıktı ayarları veya kağıt genişliği talep etmişse kırar. Bu durumda, her geliştirici satırın doğru tasarlanmasından sorumludur.
Zincir İfade
Bir WRITE ifadesi yapının listede çıktı olarak istenen her bir alanı için gereklidir. Neyse ki, bir ifadenin her zaman yazılmasını önlemek için kolay bir yol vardır. Bu yol, birkaç WRITE ifadesinin birbiri ardına yürütüleceğini sisteme anlatır.
İlk ifadeden sonra iki nokta üst üste yerleştirin (:), ve ifadeleri nokta yerine virgülle ayırın. Sadece son ifadeden sonra nokta koyun. Bizim örneğimizde zincir ifade aşağıdaki gibi oluşur:
WRITE: / wa_zmember01-mdob,
wa_zmember01-mname.
Tabii ki, bu tür zincir ifadeler WRITE komutu ile sınırlı değildir.
- [message]
- İyi Görünüm
- Kaynak kodunun şeffaflığını ve okunabilirliğini göz önünde bulundurun. Zincir ifadeler ile çalışırken bile, her bir ifadeyi yeni bir satıra yazma ilkesine uymalısınız. Tek satırda iki veya daha fazla ifadeyi yazmaktan mümkün olduğunca kaçının.
ULINE Komutu
Basit bir liste biçimlendirmesi için, (ek değişken olmaksızın) ULINE komutu listesinin yeni bir satırında yatay bir çizgi oluşturur:
ULINE.
Bir listenin bölümlerini ayırmak ve okunabilirliği artırmak için bu komutu kullanabilirsiniz.
SKIP Komutu
SKIP ifadesi listede boş satırlar oluşturur:
SKIP.
Birkaç tane boş satır oluşturmak istiyorsanız, sadece boş satır sayısını belirtin. Aşağıdaki ifade üç tane boş satır üretir:
SKIP 3.
ÇALIŞMA ALANI İÇİN wa_zmember01 İFADESİ BİR DEĞİŞKEN Mİ, EĞER DEĞİŞKEN İSE ÖNCEDEN ATAMAK GEREKMEZ Mİ?
YanıtlaSilBEN ÇALIŞTIRAMADIM, "WA_ZMEMBER01" YERİNE BAŞKA BİR İFADE KULLANDIM UNKNOWN ŞEKLİNDE HATA VERİYOR.
Örnek kod için bir sonraki yayını inceleyiniz https://www.sapmuhasebe.com/2017/08/abap-kodunun-yazlmas-ve-duzenlenmesi.html
YanıtlaSil