Developer Key Alma

Bir SAP sisteminde geliştirme yapabilmek için Developer Key’ e ihtiyaç duyulur. Bu key bir workbench objesini değiştirmeye çalışıldığında sorulur. Geliştirme yapılacak sistemde kullanıcı için bir defa kaydedilmesi yeterlidir.

http://service.sap.com/ sitesine girilir.

SAP Support Portal linkine tıklanır. Açılan pencerede şirkete ait yetkili kullanıcı ve şifre girilir.

Kullanıcı adı ve şifreyi girdikten sonra destek sayfası açılır. Burada kullanıcı adı ve şifre tekrar sorulabilir.

Keys & Requests menüsünden SSCR Keys seçeneği seçilir.

Service Corner kısmından Register Developer linkine tıklanır. Geliştirme yapacak kullanıcının ID’ si girilir ve Installations kısmından hangi sistem için kayıt yapılacağı seçilir.

Register butonuna tıklayarak kullanıcıyı kayıt edebilirsiniz.

Kayıtlı kullanıcıları görmek için Developers Registered by Me butonuna tıklayabilirsiniz.

Gelen listeden kayıtlı geliştiricileri görebilir, silebilir veya listesini bilgisayarınıza indirebilirsiniz.

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.

 

SMARTSTYLE

SMART STYLE

Metinlere nesnelerinde kullanılacak paragraf ve yazı formatları smart style içerisinde tanımlanabilir. Tanımlanan smart style’ lar smartform’ lar içerisinde tanımlanarak kullanılabilirler. Smart style’ tanımlamak için “SMARTFORMS” işlem kodu veya “SMARTSTYLES” işlem kodu kullanılabilir. Bir smart style smartform için global olarak tanımlanabilir. Smartform ilk oluşturulduğunda “SYSTEM” stili global olarak kullanılabilir.

Smartform local olarak bir nesne içinde tanımlanabilir. Yerel olarak tanımlanan stil sayfası global olarak tanımlanan stil ezer.

Örnek: Smart style oluşturma örneği.

SMARTFORMS işlem kodu çalıştırın. Stil metnine “Z_SS_TEST” yazın ve “Yarat” butonuna tıklayın.

Yeni bir smart style ekranı gelecektir.

Standart ayarlar sekmesinde standart olarak kullanılması istenen yazı türü, büyüklüğü vs seçilebilir. Bu seçilen ayarlar paragraf veya karakter biçimi uygulanmayan alanlar için veya yazı biçim uygulanıp yazı türü veya büyüklüğü uygulanmayan alanlar için kullanılır.

Yazı büyüklüğünü 10 olarak değiştirin.

Standart paragraf varsayılan olarak kullanılacak paragraf biçimi seçimi kullanılır.

Paragraf biçimi oluşturmak için “Paragraf biçimi” klasörüne tıklayın araç çubuğundan “Düğüm yarat” (F5) veya klasör üzerine sağ tıklayarak “Düğüm yarat” seçeneğini kullanabilirsiniz.

Yeni bir ekranda oluşturulacak paragraf biçiminin ismini soracaktır. “SL” olarak yazın ve devam edin.

Tanım alanına “Sol”, hizalama “Sola” ve sol kenar boşluğunu “2” MM olarak girin.

“OR” isminde bir paragraf biçimi daha oluşturun. Tanım alanına “Ortalanmış”, hizalama “Ortada” olarak seçin.

Son olarak sağa hizalama için “SG” isimli yeni bir paragraf biçimi oluşturun. Tanım alanına “Sağa dayalı”, hizalama “Sağa” olarak seçin.

3 adet paragraf biçimi oluşturdunuz. Bu oluşturulan paragraf biçimlerinde yazı tipi seçimi yapılmadı. Bu paragraflar biçimleri kullanılırken karakter biçimi uygulanmaz ise başlık verileri içerisindeki standart ayarlarda tanımlanan yazı tipi ayarları kullanılır.

Paragraf biçimlerinde kullanılabilecek karakter biçimleri oluşturmak için “Karakter bçm.” Sekmesinde “Düğüm yarat” butonuna tıklayın. Karakter biçimine “BS” yazın ve devam edin.

Tanım kısmına “Başlık”, yazı büyüklüğü alanına “14”, yazı stili alanında “Koyu” seçeneğini girin. Bu şekilde standart ayarlarda tanımlanan font’ a göre 14 ve koyu biçimde başlık stili tanımladınız.

“T1” isminde yeni bir karakter biçimi oluşturun. Tanım alanına “Times 10”, yazı türüne “TIMES”, yazı büyüklüğü alanına 10 değerini girin.

Formu aktif etmek için standart bir paragrafın atanması gerekir. Başlık verileri klasörüne tıklayın. Standart paragraf olarak “SL” paragraf biçimini seçin.

Aktif et butonuna tıklayın. Package ve requeste bağlama işlemlerini yaptıktan sonra aktif olacaktır.

Örnek: Smart style’ ı smartform sadece bir nesne için kullanma.

Daha önce oluşturduğunuz “Z_SF_TEST” smart formu açın. Nesne listesi üzerinden bir metin nesnesi üzerine çift tıklayın ve “Çıktı seçenekleri” sekmesini seçin. Stil alanına bir önceki örnekte oluşturduğunuz “Z_SS_TEST” smart style’ ını yazın.

“Genel özellikler” sekmesini seçin. Eklenen paragraf ve karakter stillerinin geldiğini görebilirsiniz.

Başka bir metin nesnesi seçerseniz “SYSTEM” smart style’ ının seçenekleri gelecektir.

Örnek: Smart style’ ı smartform içinde global olarak tanımlama.

Daha önce oluşturduğunuz “Z_SF_TEST” smart formu açın. “Genel ayarlar” klasöründen, “Form niteliği” nesnesini seçin. Orta kısımda “Çıktı seçenekleri” sekmesini seçin. Stil alanına “Z_SS_TEST” yazın.

Herhangi bir metin nesnesi üzerinde “Genel özellikler” sekmesini seçin. Paragraf ve karakter biçimlerinin geldiğini görebilirsiniz.

ABAP Geliştiriciler İşlem Kodları

ABAP geliştiricilerin kullandığı genel işlem kodları aşağıdaki tabloda verilmiştir.

İşlem Kodu İşlem Kodu Tanımı Açıklama
SA38 ABAP/4 raporlama ABAP: Program yürütme
SE01 Transport Organizer (Extended) (Request) Taşıma Düzenleyicisi (Ek seçenekler)
SE03 Transport Organizer Tools (Request) Taşıma Düzenleyici Araçları
SE09 Transport Organizer (Request) Taşıma Düzenleyici
SE11 ABAP Dictionary Maintenance ABAP Dictionary Bakımı
SE14 Utilities for Dictionary Tables Veritabanı Yardımcı Araçları
SE16 Data Browser Tablo Görüntüsü
SE16N Genel tablo görüntüsü Genel tablo görüntüsü
SE18 Business Add-Ins: Definitions BADI: Tanımlar
SE19 Business Add-Ins: Implementations BADI: Uygulamalar
SE20 Enhancements Enhancement Bakımı
SE21 Package Builder Package Bakımı
SE24 Class Builder Sınıf Bakımı
SE30 ABAP Objects Runtime Analysis ABAP Nesneleri Çalışma Zamanı Analizi
SE36 Logical Database Builder Mantıksal Veritabanı Bakımı
SE37 ABAP Function Modules ABAP Fonksiyon Modülleri
SE38 ABAP Editor ABAP Düzenleyici
SE39 Splitscreen Editor: (New) ABAP Düzenleyici – Bölünmüş Ekran
SE39O Splitscreen Editor: Program Compare ABAP Düzenleyici – Bölünmüş Ekran – Program Karşılaştırma
SE41 Menu Painter Menü Tasarımı
SE43N Maintain Area Menu Alan Menüsü Bakımı
SE51 Screen Painter Ekran Tasarımı
SE54 Tablo görünümü üretme Tablo görünümü üretme
SE71 SAPscript form SAPScript Formları
SE72 SAPscript Styles SAPScript Stilleri
SE78 Administration of Form Graphics Form Grafiklerinin Yönetimi
SE80 Object Navigator Nesne Gezgini
SE91 Message Maintenance Mesaj Bakımı
SE93 Maintain Transaction Codes İşlem Kodu Bakımı
SNRO Numara alanı nesneleri Numara alanı nesneleri
SCI ABAP Code Inspector ABAP Code Inspector
SMARTFORMS SAP Smart Forms SAP Smart Formlar
SMARTSTYLES SAP Smart Styles SAP Smart Stiller
SO10 SAPscript: Standard Texts SAPscript: Standart Metinler
SM30 Call View Maintenance Tablo Bakım Görünümü Çağırma
ST05 SQL’i izle SQL İzleme
SAT ABAP Trace ABAP İzleme
SE30 ABAP Objects Runtime Analysis ABAP Çalışma Zamanı Analizi
SM50 Work Process Overview Prosese Genel Bakış
ST22 ABAP dump analysis ABAP Hata Analizi
BAPI BAPI Explorer BAPI Gezgini
SCOT SAPconnect – Administration SAPConnect: Yönetim
SOST SAPconnect gönderme talepleri SAPconnect gönderme talepleri
CMOD Enhancements Enhancement’ lar
SMOD SAP Enhancement Management SAP Enhancement Yönetimi
SU01 User Maintenance Kullanıcı Bakımı
SU21 Maintain Authorization Objects Yetki Nesneleri Bakımı
SU53 Evaluate Authorization Check Yetki Verilerini Görüntüleme
SP01 Output Controller Çıktı denetimi: Kuyruk siparişleri
SPAD Spool Administration Kuyruk Yönetimi
SHDB Transaction Recorder (toplu girdi) Transaction Recorder (toplu girdi)
SM35 Toplu girdi izleme Toplu girdi izleme
SM36 Schedule Background Job Arka Plan İş Tanımı
SM37 Overview of job selection Basit İş Seçimi
SM59 RFC Destinations (Display/Maintain) RFC Bağlantıları (Görüntüle/Bakım)
SHD0 Transaction and Screen Variants İşlem Kodu ve Ekran Variant’ ları
STMS Transport Management System Transport Management System

 

 

BATCH INPUT

Toplu veri girişi yapmak için kullanılır. İşlem kodunu çalıştırılır ve kullanıcı verileri giriyormuş gibi ekrandaki alanlara veriler transfer edilir. Alana girilen metin, imleç pozisyonu, tıklanılan buton gibi bilgiler kaydedilir. Örnek giriş kaydı SHDB işlem kodu kaydedilebilir. SM35 işlem kodu ile toplu girdi oturumları izlenilir.

Örnek: ZSFLIGHT tablosuna batch input ile kayıt ekleyen program örneği. Örnek üç aşamalıdır.

  1. ZSFLIGHT tablosuna kayıt ekleyen programın hazırlanması (Standart işlem kodlarına veri aktarımı yapılacağı zaman bu adıma gerek yoktur).
  2. SHDB ile örnek toplu girdi örneği hazırlanması,
  3. Toplu girdi işlemini yapacak program hazırlanması

 

ZSFLIGHT tablosuna kayıt ekleyen programın hazırlanması.

Ekran 100’ ü açın. F6 tuşuna basarak alan seçim ekranını açın. Table/Field Name alanına ZSFLIGHT tablosunu yazın ve Get from Dictionary butonuna tıklayın. ZSFLIGHT tablosuna bağlı alanlar listelenecektir.

Alan seçim penceresinden ilke beş alanı seçin ve ekrana sürükleyin.

Ekrana bir tane buton ekleyin. FctCode alanına KAYDET girin.

GUI Status nesnesi oluşturun ve alanlarını aşağıdaki şekilde kaydedin.

100 ekranı Element list sekmesinden OK kodu alanına OK_CODE ismini girin.

Flow logic sekmesinde yorum satırlarını kaldırın.

Aşağıdaki kodu ekleyin.

TABLES zsflight.
DATA: ok_code LIKE sy-ucomm.

START-OF-SELECTION.
CALL SCREEN 100.

MODULE status_0100 OUTPUT.
SET PF-STATUS ‘100’.
ENDMODULE.

MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN ‘GERI’ OR ‘CIKIS’ OR ‘IPTAL’.
LEAVE TO SCREEN 0.
WHEN ‘&KAYDET’.
MODIFY zsflight FROM zsflight.
COMMIT WORK AND WAIT.
MESSAGE ‘Kayıtlar saklandı.’ TYPE ‘S’.
ENDCASE.
ENDMODULE.

Programa işlem kodu ekleyin. Nesne listesi içerisinde program ismine sağ tıklayın ve Create->Transaction seçeneğini seçin.

Create Transaction penceresi açılacaktir. Alanları aşağıdaki şekilde doldurun ve devam edin.

İşlem kodu özellikleri açılacaktır. Alanları resimdeki gibi doldurun ve kaydedin.

Package’ a bağlama ve request alma işlemleri sorulacaktır. Çalışma şeklinize göre ilerleyin.

SHDB ile örnek toplu girdi örneği oluşturulması

SHDB işlem kodunu çalıştırın. Yeni Kayıt butonuna tıklayın.

Kayıt yarat ekranı açılacaktır. Alanları resimdeki gibi doldurun. Kaydı başlat butonuna tıklayın.

Kayıt yapılacak işlem kodu çalıştırılır. İlk adımda tanımlanan 100 ekranı açılır. Ekran alanlarını doldurun ve kaydet butonuna  tıklayın.

Toplu girdi kaydına ait bilgiler Transaction Recorder ekranına gelir.

Bu ekranda değişiklik yapmadan kaydet  butonuna tıklayın. Toplu girdi kaydı oluşturulacaktır.

Toplu giriş kaydını daha sonra üzerine çift tıklayarak içeriğini görüntüleyebilirsiniz.

Oluşturulan kayıttan örnek program oluşturulabilir. Bunun kayıt seçilir ve Program butonuna tıklanır.

Açılan ekranda yeni programın adı girilir ve devam edilir.

Program özellikleri ekranı açılacaktır. Program tipini 1 (Yürütülebilir program) olarak seçip, Source code butonuna tıklayın.

Package’ a bağlama ve request alma işlemlerini yapın. Bu adımdan sonra program kodu açılır. Program oluşturarak alanları kendi programınıza kolay bir şekilde aktarabilirsiniz.

 

Toplu girdi işlemini yapacak program

DATA : g_docking_container TYPE REF TO cl_gui_docking_container,
g_alv_grid          TYPE REF TO cl_gui_alv_grid,
ok_code LIKE sy-ucomm,
gt_sflight TYPE STANDARD TABLE OF sflight,
gs_sflight TYPE sflight.

DATA: gt_bdcdata TYPE STANDARD TABLE OF bdcdata,
gs_bdcdata TYPE bdcdata.

CLASS lcl_alv DEFINITION.
PUBLIC SECTION.
METHODS:
alv_olustur,

handle_toolbar
FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING e_object
e_interactive
sender,

handle_user_command
FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm sender.
ENDCLASS.

DATA g_alv TYPE REF TO lcl_alv.

CLASS lcl_alv IMPLEMENTATION.
METHOD alv_olustur.
DATA: lt_fieldcat   TYPE lvc_t_fcat,
ls_fieldcat   TYPE lvc_s_fcat,
ls_variant    TYPE disvariant,
ls_layout     TYPE lvc_s_layo,
lt_toolbar_excluding TYPE ui_functions,
lv_repid      TYPE sy-repid.

DATA: lt_cells TYPE lvc_t_cell,
ls_cells TYPE lvc_s_cell.

IF g_docking_container IS INITIAL.

CREATE OBJECT g_docking_container
EXPORTING
side       = g_docking_container->dock_at_top
extension  = 2000.

CREATE OBJECT g_alv_grid
EXPORTING
i_parent          = g_docking_container
EXCEPTIONS
error_cntl_create = 1
error_cntl_init   = 2
error_cntl_link   = 3
error_dp_create   = 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.

CALL FUNCTION ‘LVC_FIELDCATALOG_MERGE’
EXPORTING
i_structure_name        = ‘ZSFLIGHT’
CHANGING
ct_fieldcat             = lt_fieldcat
EXCEPTIONS
inconsistent_interface  = 1
program_error           = 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.

LOOP AT lt_fieldcat INTO ls_fieldcat.
ls_fieldcat-edit = ‘X’.
MODIFY lt_fieldcat FROM ls_fieldcat.
ENDLOOP.

ls_layout-box_fname    = ‘BOX’.

lv_repid = sy-repid.
ls_variant-report      = lv_repid.

CALL METHOD g_alv_grid->set_table_for_first_display
EXPORTING
i_save                        = ‘A’
is_variant                    = ls_variant
is_layout                     = ls_layout
it_toolbar_excluding          = lt_toolbar_excluding
CHANGING
it_outtab                     = gt_sflight
it_fieldcatalog               = lt_fieldcat
EXCEPTIONS
invalid_parameter_combination = 1
program_error                 = 2
too_many_lines                = 3
OTHERS                        = 4.

IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

SET HANDLER me->handle_toolbar FOR g_alv_grid.
SET HANDLER me->handle_user_command FOR g_alv_grid.

CALL METHOD cl_gui_control=>set_focus
EXPORTING
control = g_alv_grid.

CALL METHOD g_alv_grid->set_ready_for_input
EXPORTING
i_ready_for_input = 1.

ELSE.
CALL METHOD g_alv_grid->refresh_table_display.
CALL METHOD cl_gui_cfw=>flush.
ENDIF.

ENDMETHOD.

METHOD handle_toolbar.
DATA ls_toolbar TYPE stb_button.

CLEAR ls_toolbar. MOVE 3 TO ls_toolbar-butn_type.
APPEND ls_toolbar TO e_object->mt_toolbar.

CLEAR ls_toolbar.
MOVE ‘BATCHINPUT’       TO ls_toolbar-function.
MOVE icon_activity      TO ls_toolbar-icon.
MOVE ‘Batch input’      TO ls_toolbar-text.
MOVE ‘Batch input’      TO ls_toolbar-quickinfo.
APPEND ls_toolbar       TO e_object->mt_toolbar.
ENDMETHOD.

METHOD handle_user_command.

DATA: et_index_rows TYPE lvc_t_row,
et_row_no     TYPE lvc_t_roid,
wa_row_no     LIKE LINE OF et_row_no.

DATA: ls_sflight TYPE sflight,
lv_price   type c length 18.

DATA: lt_messtab TYPE STANDARD TABLE OF bdcmsgcoll,
ls_messtab TYPE bdcmsgcoll.

CASE e_ucomm.
WHEN ‘BATCHINPUT’.

CALL METHOD g_alv_grid->get_selected_rows
IMPORTING
et_index_rows = et_index_rows
et_row_no     = et_row_no.

LOOP AT et_row_no INTO wa_row_no  .
READ TABLE gt_sflight INTO ls_sflight INDEX wa_row_no-row_id.
PERFORM bdc_dynpro      USING ‘Z_R_TEST_Y’        ‘0100’.
PERFORM bdc_field       USING ‘BDC_CURSOR’        ‘ZSFLIGHT-CURRENCY’.
PERFORM bdc_field       USING ‘BDC_OKCODE’        ‘=&KAYDET’.
PERFORM bdc_field       USING ‘ZSFLIGHT-CARRID’   ls_sflight-carrid.
PERFORM bdc_field       USING ‘ZSFLIGHT-CONNID’   ls_sflight-connid.
PERFORM bdc_field       USING ‘ZSFLIGHT-FLDATE’   ls_sflight-fldate.

WRITE ls_sflight-price TO lv_price.
PERFORM bdc_field       USING ‘ZSFLIGHT-PRICE’    lv_price.
PERFORM bdc_field       USING ‘ZSFLIGHT-CURRENCY’ ls_sflight-currency.
CALL TRANSACTION ‘Z_J_BATCHINPUT’ USING gt_bdcdata
MODE ‘A’
UPDATE ‘S’
MESSAGES INTO lt_messtab.
ENDLOOP.

LOOP AT lt_messtab INTO ls_messtab WHERE msgtyp = ‘AEX’.
EXIT.
ENDLOOP.

IF sy-subrc = 0.
MESSAGE ID ls_messtab-msgid TYPE ls_messtab-msgtyp NUMBER ls_messtab-msgnr
WITH ls_messtab-msgv1 ls_messtab-msgv2 ls_messtab-msgv3 ls_messtab-msgv4.
ELSE.
READ TABLE lt_messtab INTO ls_messtab INDEX 1.
IF sy-subrc = 0.
MESSAGE ID ls_messtab-msgid TYPE ls_messtab-msgtyp NUMBER ls_messtab-msgnr
WITH ls_messtab-msgv1 ls_messtab-msgv2 ls_messtab-msgv3 ls_messtab-msgv4.
ENDIF.
ENDIF.

CALL METHOD sender->refresh_table_display.
ENDCASE.

ENDMETHOD.
ENDCLASS.

START-OF-SELECTION.
SELECT * FROM sflight
INTO CORRESPONDING FIELDS OF TABLE gt_sflight UP TO 10 ROWS.
CREATE OBJECT g_alv.
CALL SCREEN 0100.

MODULE status_0100 OUTPUT.
SET PF-STATUS ‘100’.
CALL METHOD g_alv->alv_olustur.
ENDMODULE.

MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN ‘GERI’ OR ‘CIKIS’ OR ‘IPTAL’.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE.

FORM bdc_dynpro USING program dynpro.
CLEAR gs_bdcdata.
gs_bdcdata-program  = program.
gs_bdcdata-dynpro   = dynpro.
gs_bdcdata-dynbegin = ‘X’.
APPEND gs_bdcdata TO gt_bdcdata.
ENDFORM.

FORM bdc_field USING fnam fval.
CLEAR gs_bdcdata.
gs_bdcdata-fnam = fnam.
gs_bdcdata-fval = fval.
APPEND gs_bdcdata TO gt_bdcdata.
ENDFORM.

ZSFLIGHT tablosuna yeni kayıt gelmiştir.

 

 

 

 

 

PERFORMANS

Müşteri tarafından geliştirilen programlar yanlış kodlama nedeniyle yavaş çalışabilmektedir. Programların analiz edilmesi için bazı tavsiyeler aşağıdadır.

Performans Analiz Araçları

Programların performansını izlemek için SAP mükemmel araçlar sunar. Kullanılan bazı işlem kodlar aşağıdadır.

İşlem Kodu Tanım Açıklama
ST05  Peformance Analysis  SQL komutları izlenebilir.
SE30 ABAP Runtime Analysis Herhangi bir programın veya fonksiyonu çalıştırarak zaman kayıplarının hangi işlemde olduğu görülebilir. Tablolara erişim, fonksiyonların çalışma süreleri ve ABAP kodundaki süreler takip edilebilir. 
SAT ABAP Runtime Analysis SE30’ un yeni versiyonudur.

PERFORMANS OPTİMİZASYONU

Müşteri programlarının performans optimizasyonu için  aşağıdaki konuların gözden geçirilmesi faydalı olacaktır.

  • Veritabanı işlemleri
  • Dahili tablo işlemleri

Veritabanı İşlemleri

Veritabanından veri çekim işlemleri sırasında aşağıdaki maddelere dikkat etmek faydalı olacaktır.

  • SELECT cümlesinde WHERE kullanarak filtreleme yapılması gerekir.
  • Dahili tablo döngülerinde (LOOP, ENDLOOP) SELECT cümleleri kullanılmamalıdır.
  • SELECT * kullanmaktan kaçınmalı sadece gerekli alanlar çekilmelidir.
  •  Tabloda kayıt bulunup bulunmadığı kontrolü yapılacaksa SELECT UP TO 1 ROW kullanılabilir.
  • SELECT cümlesinde WHERE koşulunda olabildiğince anahtar alanlar kullanılmalıdır.
  • SELECT cümlesinde WHERE koşulunda LIKE ‘A%’ kullanımından kaçınılmalıdır.
  • FOR ALL ENTRIES kullanılarak yapılan seçimlerde dahili tablonun boş olmadığından emin olunmalıdır.
  • SELECT cümlesinde en fazla 5 tablo JOIN yapılmalıdır.
  • Özellikle döngü içerisinde SELECT cümlesinde COUNT, MAX, MIN gibi ifadeler olabildiğince az kullanılmalıdır.
  • Tablolara dikkatlice indeks eklenmelidir. İndeksler tablodan veri okurken hız artışını sağlar ancak tabloya kayıt eklerken bütün indeks kayıtlar güncellendiği için yazım işlemini yavaşlatırlar.

DAHİLİ TABLOLAR

  • Çok fazla kayıt içeren dahili tablolar LOOP, ENDLOOP ile döngüde kullanılırken çalışma alanı yerine alan sembolleri kullanılabilir. Alan sembolleri kullanılarak veriler başka bir hafıza alanına aktarılmaz direk veri üzerinde işlem yapılır. Çalışma alanında ise önce veriler belirtilen çalışma alanına aktarılır daha sonra döngü devam eder.
  • Bir dahili tablonun içeriği aynı veri tipine sahip başka bir dahili tabloya aktarılacağı zaman LOOP, ENDLOOP döngüsü yerine APPEND LINES OF kullanılabilir.
  • Dahili tablodan kayıt silineceği zaman LOOP, ENDLOOP döngüsü içerisinde değil. DELETE ifadesi ile silinebilir.