Gelişmiş hızlı rapor özelliklerinden bahsedeceğimiz yazımıza hoş geldiniz. Daha öncesinde temel hızlı raporlar oluşturma ve hızlı raporlarda loglama yazılarımızla hızlı raporlara giriş yapmıştık. Temel olarak hızlı rapor yapabildiğimize göre gelişmiş hızlı raporlara geçebiliriz. Bu yazımızda ikame değişkenini, “Report_SYS” paketindeki “Parse_Parameter” fonksiyonunu, sorgu bayraklarını ve varsayılan değerlerini öğreneceğiz.
İkame Değişken Kullanımı
PL SQL’de “&” işareti, kullanıcı tarafından girilen bir değerin yerine yazılması için kullanılan değişken ikame değişkenidir. Örneğin, aşağıdaki SQL sorgusu bir kullanıcıdan bir müşteri adı isteyecektir ve “&isim” ikame değişkenini kullanarak sorguda yerine yazacaktır.
SELECT * FROM customers WHERE name = '&isim';
Bu sorgu çalıştırıldığında, kullanıcı “isim” değerini girer ve sorgu o değerle sorgulama yapar. Örneğin, kullanıcı “Hasan” değerini girdiğinde, sorgu gerçek anlamda “SELECT * FROM customers WHERE name = ‘Hasan’;” olarak çalışır. İkame değişken hızlı raporlarda çokça kullanılan bir değişken türüdür.
Report_SYS.Parse_Parameter Fonksiyonu
Report_Sys.Parse_Parameter fonksiyonu gelişmiş SQL where koşulu oluşturmak için kullanılmaktadır. Bu fonksiyon IFS’te arama ekranlarının (F3) altında çalışan fonksiyondur. Birçok where şartı özelliği oluşturur. Bir örnek vermek gerekirse satın almaya ait bir rapor oluşturduğunuzu düşünelim. Raporu alan kişinin satın alma siparişlerinde birden çok tedarikçiyi yazarak satın alma raporu oluşturması gerekmekte. Raporu tek tek çalıştırıp sonuçları birleştirmesi hem süreci uzatacak hem de kullanıcıya iş yükü bindirecektir. Bahsedilen fonksiyonu kullanarak kullanıcının çoklu parametre değeri girmesi sağlanabilmektedir. Fonksiyon “;” sembolünü “OR” operatörü olarak varsayacaktır. Ayrıca “%” ve “_” sembolünü “LIKE” operatöründeki ve “..” (iki nokta) değerini “BETWEEN” kullanımı gibi algılayacaktır. Yukarıdaki örneği SQL sorgusuna halinde gösterelim.
SELECT vendor_no, order_no, authorize_code, contract, currency_code FROM ifsapp.purchase_order WHERE ifsapp.report_sys.parse_parameter(vendor_no, 'T0734;T0735;T0736') = 'TRUE'
SQL sorgusunda “vendor_no” filtresine çoklu parametre değeri girilebilmesi için “Report_Sys.Parse_Parameter” fonksiyonu kullanılmıştır. Sorgunun çıktısı aşağıdaki ekran görüntüsündeki gibi olmaktadır. Bu fonksiyon iki parametre alır. Birinci parametre filtre uygulanacak alan ve ikincisi ise filtre değeridir. Eşitliğin karşısında bulunan “TRUE” değeri “vendor_no” alanında fonksiyonun ikinci parametresindeki değerleri arar. “FALSE” olarak değiştirilirse verilen değerler dışındaki kayıtları arar.
Normalde “IN” operatörünü kullanarak yapabilirdik, fakat neden bu fonksiyonu kullandık gibi sorular aklınızı kurcalayabilir. Evet haklısınız SQL sorgusunda filtrelemeyi direk yaparken “IN” operatörü daha kolay oluyor. Fakat parametre değerini kullanıcıdan istediğimizde (ikame değişken kullanarak) bu rapor için “IN” operatörü kullanmak ve kullanıcının “T0734′,’T0735′,’T0736” değerini girmesi gerekmektedir. Bu değeri girmek hem kullanıcı için karmaşık olacak hem de IFS’in standart olan noktalı virgül ayracına aykırı bir kullanım olacaktır. Ayrıca daha önce bahsettiğimiz gibi bu fonksiyonu kullanarak “LIKE” ve “BETWEEN” operatörlerine girilebilecek ifadeler ikame değişkeniyle gönderilebilmektedir. Sonuç olarak rapordan kullanıcının alacağı fayda üst düzeye çıkacaktır.
Not: Parse_Parameter fonksiyonu kullanımı büyük tablolarda indekslenmemiş sütunlar için performans sorunları oluşturmaktadır.
Sorgu Bayrakları (Query Flags)
Hızlı raporlar için bayrak kullanımı, belirli verileri filtrelemek veya özelleştirmek için kullanılan bir araçtır. Örneğin, bir hızlı raporunuzda belirli bir filtrenin zorunlu olmasını isteyebilirsiniz, bu durumda bir bayrak kullanarak o filtreyi zorunlu kılarak verileri filtreleyebilirsiniz. Bu sayede, hızlı raporlar kullanıcının ihtiyacına göre özelleştirilebilir. Bayraklar, hızlı raporların özelleştirilmesinde ve verilerin daha iyi anlaşılmasında kullanışlıdır. Sorgu bayraklarını kullanmak için ‘&‘ ve parametre adı arasına köşeli parantez açıp, kapatarak yazılması gerekir.
Örnek:
"&[MCSBL]PARAMETRE_ADI" SELECT * FROM fnd_user WHERE identity LIKE '&[-CS-L]Fnd_User'
Tüm bayrakların tersi “–” (tire) ile ifade edilmektedir. Mesela parametreye çoklu değer girilmesi gerekiyorsa, “S” değeri yerine “–” yazılmalıdır. Veya parametrenin girilmesini zorunlu yapmak istiyorsanız, ilk karekter “M” olmalıdır. Hızlı raporlar için varsayılan değer [-CS-L]‘dir.
- M = Zorunlu (Mandatory)
- C = Özel (Custom – basitleştirilmiş veya ‘sadece değerler’)
- S = Tek değer (Single)
- B = Aralık ifadesi (Between)
- L = Joker karakterler (Like – ‘%’ ve ‘_’)
Varsayılan Değerler Kullanımı
Varsayılan değerler parametreye aranılan kolonun niteliğini kazandırmaktadır. Ve hızlı raporları oldukça kullanışlı hale getirmektedir. Varsayılan değerler göstermek için “&VIEW_NAME.COLUMN_NAME” gibi parametre öğesinin adı ve sütun adı belirtmeniz gerekir. Bunun kullanımıyla, parametre için varsayılan değerleri ve parametre adını alırsınız. Aşağıdaki örnek, “Müşteri Kategorisi” için enumarete değerleri gösterecek ve parametre için liste öğesini içerecektir. Ek olarak tüm bu özellikler (varsayılan değerler, sorgu bayrakları ve parse_parameter fonksiyonu) birleştirilip kullanılabilir.
SELECT * from customer_info where customer_category = '&CUSTOMER_INFO.CUSTOMER_CATEGORY'
Hızlı raporlarla ilgili daha fazla detay için buradan dokümana ulaşabilirsiniz.
Hasan bey merhaba
IFS programında lobi ekranı nasıl oluşturulur? Bu konu hakkında video veya yazılara ihtiyacım var yardımcı olabilirmisiniz
Teşekkürler
Selçuk Bey merhaba,
Lobi ekranlarıyla ilgili yazılar yazma planım var. Yazıları tamamladığımda size bilgi veririm.