SMARTFORMS – SMARTFORM’ A PARAMETRE GÖNDERİMİ

Örnek: ABAP programında oluşturulan internal tabloyu ve bir structure ve bir değişkeni smartforma parametre olarak göndererek bu bilgileri smartform’ da kullanan örnek.

DATA: gt_spfli TYPE STANDARD TABLE OF spfli,
gv_degisken TYPE c LENGTH 20,
gs_structure TYPE sbook.
DATA: gv_fm_name   TYPE rs38l_fnam,
gs_ssfctrlop TYPE ssfctrlop,
gs_ssfcompop TYPE ssfcompop.
SELECT * FROM spfli UP TO 10 ROWS
INTO CORRESPONDING FIELDS OF TABLE gt_spfli.
gv_degisken = ‘Aktarılan metin’.
gs_structure-carrid = ‘LH’.
gs_structure-connid = ‘400’.
CALL FUNCTION ‘SSF_FUNCTION_MODULE_NAME’
EXPORTING
formname                   = ‘Z_SF_TEST’
IMPORTING
fm_name                    = gv_fm_name
EXCEPTIONS
no_form                    = 1
no_function_module         = 2
OTHERS                     = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
gs_ssfcompop-tddest    = ‘LOCL’.
CALL FUNCTION gv_fm_name
EXPORTING
control_parameters         = gs_ssfctrlop
output_options             = gs_ssfcompop
user_settings              = space
degisken                   = gv_degisken
structure                  = gs_structure
TABLES
tb_spfli                   = gt_spfli
EXCEPTIONS
formatting_error           = 1
internal_error             = 2
send_error                 = 3
user_canceled              = 4
OTHERS                     = 5.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

ABAP kodunda fonksiyon gönderilen üç adet parametre için (gv_degisken, gv_structure, gt_spfli) smartform içerisinde tanım yapılmalıdır. Değişken ve structure içeri aktarmak için Form Builder’ den “Form arayüzü”’ nü seçin. “İçe aktar” tabına smartform içerisine aktarılacak değişeken ve structurelar yazılır.

Smartform’ a tablo aktarmak için “Tablolar” tabı kullanılır. Tablo aktarmak için bağlı tipin tablo tipi olması gerekir. Bu yüzden SPFLI tablosunun tablo tipi olan “SPFLI_TAB” kullanın.

Bu eklemeler yapıldıktan sonra eklenen alanlar alan listesi içerisine dahil olacaktır.

Değişken ve structure için ikincil bir pencereye metin öğesi ekleyebilirsiniz.

Yeni oluşturulan pencere özellikleri aşağıdaki gibi yapın.

Yeni oluşturulan pencereye metin elementi ekleyin.

Eklenen metin öğesi üzerine tıklayarak “Genel özellikler” tabına geçin.

Sol alt köşedeki alan listesinde “içe aktarım arayüzü” klasörünü açarak “DEGISKEN” isimli alanı yeni oluşturulan metin öğesine sürükleyin.

Daha sonra “STRUCTURE” isimli klasörü açarak içerisinden “CARRID” ve “CONNID” değişkenlerini ikinci ve üçüncü satırlara sürükleyin.

İçeriye aktarılan internal tablosundaki bilgileri tablo içerisinde göstermek için “MAIN” ana pencersine sağ tıklayın “Yarat”, “Tablo” seçeneğini seçin.

Ana pencere içerisine yeni bir tablo eklenecektir.

Tabloda kullanılacak satır ve sütunlar için satır düzenlemesi yapılması gerekir. Tablo ilk oluşturulduğunda standart olarak gelir. Başlık ve ana alanda kullanmak için 3 sütunlu satır tipi oluşturulması yeterlidir. Başlık alanındaki sütunlar tablo başlığı, ana alandaki sütunlara tablo içeriği gelecektir.

Tablo tabında iken “Ayrıntılar” butonuna tıklayın.

Tablo genişliği otomatik olarak tablo genişliğini almıştır. Toplam tablo genişliği olacak şekilde 3 sütun bilgisini doldurun. Bu şekilde 3 sütunluk bir satır tipi tanımlamış oldunuz.

Sütun başlıklarını oluşturmak için başlık alanına sağ tıklayın, “Yarat”, “Tablo satırı” seçeneğini seçin.

%ROW1’ için satır tipini oluşturduğunuz satır tipini seçin.

Satır tipini seçtikten sonra 3 adet alt öğe oluşacaktır. Bu öğelerin her biri tanımladığınız sütunlara karşılık gelir.

Her bir sütun içerisine metin oluşturun ve metin başlığı olarak sırasıyla metinlere “Havaalanı”, “Bağlantı”, “Ülkeden” sütunlarını ekleyin.

Tablo içeriğini göstermek için ana alan içerisinde satır oluşturulması gerekir. Ana alan üzerine sağ tıklayın, “Yarat”, “Tablo satırı” seçeneğini seçin.

%ROW2 için %LYTPE1 satır tipini seçin.

Satır tipini seçtikten sonra 3 adet alt öğe oluşacaktır. Bu öğelerin her biri tanımladığınız sütunlara karşılık gelir. Her bir sütun içerisine metin oluşturun.

Smartform’ a TB_SPFLI internal tablosu aktarılmıştır. Bu internal tablodaki bilgiler tablo bileşeni kullanılarak görüntülenir.

Tablo bileşeni kullanarak verileri görüntülemek için 2 adet bileşene ihtiyaç duyulur. Birincisi internal tablo, ikincisi her döngüde verilerin aktarılacağı structure. İnternal tablo parametre aktarımında tanımlanmıştı, yapıyı tanımlamak için sol menüdeki “Genel tanımlar” kullanılır. Genel tanımlar sekmesini seçtikten sonra, orta kısımdaki “Genel veriler” kısmında smartformda kullanmak için değişen, structure tanımlayabilirsiniz.

Structure’ ı tanımladıktan sonra tablo bileşeninde döngü için gereken tanım yapılabilir. Soldaki menüden tablo bileşenini seçin “Veriler” sekmesinden internal tablo ve internal tablodaki bilgilerin sırasıyla aktarılacağı structure’ ı yazın.

Bu tanımlama bittikten sonra tablonun ana alanında oluşturduğunuz metinlere “GS_SPFLI” structure’ ı içerisindeki “CARRID”, “CONNID” ve “COUNTRYFR” alanlarını sırasıyla taşıyın. GS_SPFLI structure’ ı “Genel veriler” sekmesinde tanımlandığı için alan listesinde “Genel veriler” klasörü altında görünür.

Formu aktif edip, programı çalıştırdığınız zaman smartform içerisinde tablo içeriğini görebilirsiniz.

SMARTFORMS – NESNE KOŞULLARI

Örnek: Smartform’ a aktarılan parametreye göre metin nesnesini gizleyen örnek.

Nesne koşullarına göre parametreler doğru olduğu koşullarda görüntülenebilirler. Koşul sağlanmazsa nesne gizlenir. Koşullar sekmesi nesnelerin en sağında bulunur.

Smartform’ a “I_GOSTER” parametresi aktarılarak bu parametreye göre nesneler, gizlenecek. Smartform’ a parametre aktarmak için “Form arayüzü” seçeneğinde “İçe aktar” sekmesini tıklayın. “I_GOSTER” parametresini CHAR tipinde “1” karakter uzunluğunda ekleyin ve varsayılan değer olarak “X” atayın.

Daha sonra gizlenmesini istediğiniz nesneyi seçin ve koşul kısmını doldurun. Aşağıdaki şekilde “I_GOSTER” veri nesnesi ‘X’ değerine sahip ise nesne gösterilecektir.

Formu aktif ederek, çıktıyı kontrol edebilirsiniz.

SMARTFORMS – DÖNGÜ KULLANIMI

Örnek: Smartform içerisinde oluşturulan internal tabloyu döngü nesnesi kullanarak yazdırma örneği.

Smartform’ un “Genel veriler” tabında aşağıdaki tanımları yapın

    TB_SPFLI: SPFLI_TAB tipinde tablo tipi
    GS_SPFLI: SPFLI tipinde structure

Genel tanımlar sekmesinde “Bşl.drm.getir” sekmesini seçin. Aşağıdaki giriş parametrelerini ve kod bloğunu ekleyin. Bu kod bloğu ile TB_SPFLI internal tablosu SPFLI tablosu ile dolduruluyor.

MAIN Ana penceresi üzerine sağ tıklayın, “Yarat”, “Akış mnt.”, “Döngü” seçeneğini seçin.

Dâhili tablo alanına “TB_SPFLI” ve bilgilerin aktarılacağı çalışma alanı alanına “GS_SPFLI” yazın. Bu tanımlama ile TB_SPFLI dâhili tablosundaki kayıtlar sırasıyla GS_SPFLI çalışma alanına aktarılacaktır. Bu aktarım işlemi sırasında çalışma alanındaki alanlar metin değişkenine atanarak yazıdırılabilir.

LOOP1 döngüsü içerisine yeni bir metin nesnesi ekleyin.

Eklenen metin nesnesi içerisine alan listesinden GS_SPFLI çalışma alanındaki birkaç bileşeni taşıyın.

Formu aktif edip, programı çalıştırdığınız zaman smartform içerisinde GT_SPFLI dahil tablosunun içeriğinin yazdığını görebilirsiniz.

SMARTFORMS – ABAP PROGRAMINDAN ÇAĞIRMA

Örnek: Smartform’ u ABAP programından çağırma örneği. Aşağıdaki örnek “Z_SF_TEST” isimli smartformu çağırır. “gs_ssfcompop-tddest“ parametresi “LOCL” olarak ayarlandığı için bu yazıcı varsayılan olarak gelecektir. *gs_ssfctrlop-no_dialog = ‘X’. Satırındaki yorum kaldırılırsa, yazıcı seçim ekranı gelmeden otomatik olarak çıktı belirtilen yazıcıya gönderilir.

DATA: gv_fm_name   TYPE rs38l_fnam,
gs_ssfctrlop TYPE ssfctrlop,
gs_ssfcompop TYPE ssfcompop.
CALL FUNCTION ‘SSF_FUNCTION_MODULE_NAME’
EXPORTING
formname                   = ‘Z_SF_TEST’
IMPORTING
fm_name                    = gv_fm_name
EXCEPTIONS
no_form                    = 1
no_function_module         = 2
OTHERS                     = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
*gs_ssfctrlop-no_dialog = ‘X’.
gs_ssfcompop-tddest    = ‘LOCL’.
CALL FUNCTION gv_fm_name
EXPORTING
control_parameters         = gs_ssfctrlop
output_options             = gs_ssfcompop
user_settings              = space
EXCEPTIONS
formatting_error           = 1
internal_error             = 2
send_error                 = 3
user_canceled              = 4
OTHERS                     = 5
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

Program çalıştırıldığında yazıcı seçim ekranı gelecektir. Yazıcı seçiminden sonra yazdırma veya ön izleme yapılabilir.

SMARTFORMS – Şablon Nesnesi

Örnek: Şablon nesnesi ekleme örneği.

Yeni bir pencere ekleyin ve sayfanın altına konumlandırın. Pencere yüksekliğini “3” satır olarak tanımlayın.

PENCERE2 üzerine sağ tıklayın “Yarat”, “Şablon” seçeneğini seçin.

Nesne listesinde yeni eklenen şablon görünecektir.

Şablon birden fazla satır ve sütundan oluşabilir. Satır ve sütun özelliklerini tanımlamak için “Şablon” tabını seçin, şu an sadece bir sütundan oluşan bir satır tanımlıdır.

Bu görünümde iken isterseniz kalem ikonu ( ) ile yeni sütunlar ekleyebilirsiniz veya “Ayrıntılar” butonuna tıklayarak detay görünüme geçebilirsiniz.

Detay görünümde sütunların anlamı şöyledir.

    Bşl. : Başlangıç satır numarası
    Son: son satır numarası,
    Yüks.: satırın yüksekliği
    1,2,3…: sütun genişlikleri

Detay görünümü aşağıdaki şekilde doldurun.

Table Painter butonunu tıklayıp, tablo görünümüne geçtiğiniz zaman şablonun üç satır ve iki sütun görünümü alır.

Oluşturulan şablonun satır ve sütunlarına metin eklemeleri yapacağız.

Bunun için nesne listesinde şablon nesnesini seçerek 6 adet yeni metin ekleyin.

Yeni oluşturulan metinlerin içerisine sırasıyla 1’ den başlayarak 6’ ya kadar rakamlar yazın.

En üstteki metinden başlayarak “Çıktı seçenekleri” tabında hangi metnin hangi satır ve sütunda görünmesi gerektiğini yazın.

Formu aktif edip, çalıştırdığınız zaman formunuzda sayfanın alt kısmında oluşturduğunuz şablonu görebilirsiniz.

 

SMARTFORMS1

SMARTFORMS

Birçok modülde form yapısında çıktı ihtiyacı vardır. İhtiyaç duyulan form yapısındaki çıktılar için önceleri SAPscript kullanılıyordu. Smartform SAPscript formların yerine geçmiştir. Temel olarak sayfalar tasarlanır. Sayfa içerisine sayfa, grafik, pencere, adres gibi birçok bileşen eklenebilir.

SMARTFORM BİLEŞENLERİ

Sayfa (Page)

Çıktı boyutu, düzeni ve sırasının tanımlandığı bileşendir. Birden fazla sayfa oluşturarak farklı form düzenleri oluşturulabilir. Diğer bileşenler sayfa bileşeni üzerine yerleştirilirler.

Ana Pencere

Gösterilecek ana içeriktir. Yazdırma esnasında içerik bir sayfada bitmediye yeni sayfaya geçilir. Sadece bir tane ana pencere tanımlanabilir.

İkincil Pencereler

Genelde sayfa değiştikçe değişmeyen içerikler eklemek için kullanılır.

Metinler

Statik ve dinamik metin eklemek için kullanılır. Paragraf ve font ayarları yapılabilir.

Grafik

Resim eklemek için kullanılır.

Tablolar

Verileri tablo düzeninde göstermek için kullanılır. Üç bölümden oluşur.

1. Başlık alanı: Ana içerikden önce görüntülenen başlık bilgileri.

2. Ana alan: Ana içerik.

3. Sayfa altlığı: Ana içerikden sonra görüntülenen bilgileri.

Şablon

Verileri hücresel yapıda göstermek için kullanılır.

Döngü

İnternal tablodaki içeriğin gösterilmesi için kullanır.

Program Satırları

Kod satırları kullanılmasını sağlar.

Alternatif

Komut

Dosya

SAP Form Builder

Smartform nesnelerinin bakımının yapıldığı işlem kodudur. İşlem kodu SMARTFORMS dur.

Örnek: Yeni bir smartform oluşturan ve görüntüleyen örnek.

SMARTFORMS işlem kodu çalıştırın. Form alanına “Z_SF_TEST” yazın ve “Yarat” butonuna tıklayın.

Form Builder ana ekranı açılır.

“Sakla” butonuna tıklayarak formu kaydedin. Kaydet butonuna tıkladığınızda nesneyi package’ a bağlamanızı ve request almanızı isteyecektir. Bu işlemlerden sonra smartform’ u aktif edin.

Formu çalıştırmak için “Deneme” tuşuna ( ) veya F8’ e tıklayabilirsiniz. Çalıştırdığınızda “Function Builder açılacaktır. Function Builder’ ın açılmasının nedeni smartformların bir fonksiyona dönüştürülmesidir.

Bir kez daha “Deneme” tuşuna ( ) veya F8 tuşuna tıklayın. Fonksiyon modül test giriş ekranı açılır.

“Çalıştır” butonu ( ) veya F8 tuşu ile fonksiyonu çalıştırabilirsiniz.

Yazdırma seçenekleri ekrana gelecektir. Bir yazıcı seçerek “Yazdırma öngörünümü” butonu ile smartform’ u görüntüleyebilirsiniz.

Sayfaya bir nesne eklenmediği için boş görünecektir.

“F3” tuşuna veya “Geriye” ( ) butonuna birkaç defa tıklayarak Form Builder ekranına dönebilirsiniz.

Form Builder Arayüzü

Builder’ ın sol tarafında aşağıdaki iki ana grup mevcuttur.

    Genel ayarlar: Forma ait özellikler, forma aktarılan parametreler, değişken tanımları bulunur.Sayfalar ve pencereler: Sayfalar ve sayfalara ait bileşenler bulunur.

Ortadaki alanda sol tarafta tıklanan nesnelere ait seçenekler gelir.

Sağ tarafta “Form Painter” ekranı vardır. Seçilen sayfa üzerindeki bileşenler görüntülemeye yarar.

Form Painter araç çubuğundaki “Form Painter” butonu veya “F9” tuşu ile saklanıp, gösterilebilir.

Bu üç alan dışında formda kullanılabilecek alan listesinin görüntülendiği alan listesi sol alt köşede açılabilir. Alan listesini açmak için menüden “Yardımcı programlar” ve “Alan listesini aç/kapa” seçilebilir veya Ctrl+Değiştir+F4 tuş kombinasyonu kullanılabilir.

Örnek: İkincil pencere oluşturarak içerisine metin yerleştirme.

%PAGE1 üzerinde iken sağ tuşa tıklayarak “Yarat”, “Pencere” seçerek ikincil pencere oluşturun.

Orta kısımda pencere ile ilgili özellikler görüntülenecektir. Üst kısımda bulunan Pencere ve Tanım kısmından nesne ismini ve tanımını değiştirebilirsiniz.

“Çıktı seçenekleri” tabından genişlik yükseklik ve pozisyon bilgilerini değiştirebilirsiniz veya direkt olarak form painter üzerinden bu işlemleri yapabilirsiniz. Aşağıdaki değerleri girdikten sonra “Enter” tuşuna basın.

Form painter üzerinde pencerenin yerinin ve boyutunun değiştiğini görebilirsiniz.

PENCERE1 üzerine sağ tıklayıp, “Yarat”, “Metin” seçeneğini seçin.

PENCERE1 klasörünün altında yeni bir metin nesnesi oluşacaktır.

Bu nesne seçili iken orta kısımdan “Genel özellikler” tabını seçin. Metin tipi “E Metin öğesi” seçili olduğu için metin yazılacak alan açık geldi. Metin alanına “Kullanıcı adı” yazın. Sol taraftaki alan listesinden “Sistem alanları”, “SYSF”, “USERNAME” alanını seçerek, yazdığınız metin alanının sağına sürükleyin.

Metin alanının son hali aşağıdaki şekilde olmalı.

Formu aktif edip, çalıştırdığınız zaman sayfanın üst kısmında SAP kullanıcı adınızın yazması gerekiyor.

Eklediğiniz pencere dışında çerçeve görünmesiniz istiyorsanız, “Çıktı seçenekleri” tabında “Çizgi” ve “Çerçeve ve gölgelendirmeyi her zm.çiz” tıkını etkinleştirebilirsiniz.

Örnek: Smartform içerisinde değişken ve yapı tanımlama ve değer atama örneği.

Genel tanımlar kısmından “Genel veriler” sekmesine tıklayın. Aşağıdaki nesneleri tanımlayın.

    GV_BASLIK: 20 karakter uzunluğunda veri nesnesi
    GS_SPFLI: SPFLI tablo tipinde yapı.

GV_BASLIK nesnesine “Uçuş Bilgileri” varsayılan değeri atanmıştır. Eğer veri nesnesi içeriğinin değiştirilmemesi istenseydi “Sabit” seçeneği seçilmesi yeterli olacaktı.

Oluşturulan GS_SPFLI yapısına SPFLI dâhili tablosuna SPFLI tablosundan bir kayıt aktarma yerine, bileşenlere değerler “Program satırları” nesnesinde atanacaktır. PENCERE1 nesnesine sağ tıklayın, “Yarat”, “Akış mnt.” ve “Program satırlar” seçeneğini seçin. Yeni bir program satırı nesnesi açılacaktır.

Program satırları nesnesinde “Giriş parametreleri” kısmına işlem yapılacak veri nesnesini “GS_SPFLI” ve GS_SPFLI yapısına atama yapan kod bloğunu ekleyin.

Daha önceki PENCERE1 nesnesinde oluşturulan metin nesnesi içerisine alan listesinden aşağıdaki bileşenleri metin nesnesine taşıyın.

    GV_BASLIK
    GS_SPFLI-CARRID
    GS_SPFLI-CONNID

Formu aktif edip, çalıştırdığınız zaman aşağıdaki bilgileri görebilirsiniz.

Örnek: Sayfaya grafik ekleme örneği.

Grafikleri pencere içerisine ekleyebileceğimiz gibi sayfa içerisine de ekleyebiliriz.

PAGE1 seçili iken “Yarat”, “Grafik”’ i seçin.

PAGE1 altında yeni bir grafik nesnesi oluşacaktır.

Orta kısımda grafik için kullanılacak nesne bilgilerinin seçilmesi gerekir.

Renkli bir grafik eklemek için “Renk aralık ekranı (BCOL)”’ u seçin.

Ad kısmında iken F4 tuşu ile veya arama yardımı kutucuğuna tıklayın.

Find Graphic ekranı açılacaktır. “Yürüt tuşu” (F8) ile devam ederek sistemde yüklü olan renkli resim nesneleri görüntülenebilir.

Açılan listeden “SAPLOGO”’ yu seçin.

Seçtiğiniz anda grafik alanları (Ad, Nesne, Tn.) otomatik olarak dolacaktır.

Grafik nesnesinin “Çıktı seçenekleri”’ nden veya Form painter ile nesneyi istediğiniz pozisyona taşıyabilirsiniz.

Formu aktif edip, çalıştırdığınız zaman formunuzda SAPLOGO nesnesinin eklenmiş olduğunu görebilirsiniz.

Örnek: Adres ekleme örneği.

PAGE1 seçili iken “Yarat”, “Adres”’ i seçin.

Sayfadaki pozisyonunu ayarladıktan sonra “Genel özellikler” tabından “Adres numarası” alanını F4 veya arama yardımı kutucuğunu tıklayın. Adres numarası arama yardımı açılacaktır. Tüm seçenekleri görmek için “Enter” tuşuna basın. Listeden bir adres seçin.

Formu aktif edip, çalıştırdığınız zaman formunuzda adres nesnesine seçtiğiniz adresin taşınmış olduğunu görebilirsiniz.