Ö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.
A line of “TB_SPFLI” and “GS_SPFLI” are not mutually convertible. In a Unicode program, “TB_SPFLI” must have the same structure adımları takip ederek yaptığımda böyle bir hata alıyorum çözüm bulamadım atladığım birşey mi var?yardımcı olursanız sevinirim teşekkürler.
Benim hatam “GS_SPFLI” nın tipini “SBOOK” tan “SPFLI” olarak değiştirebilir misiniz?
teşekkürler:)