SlideShare une entreprise Scribd logo
1  sur  22
Temel ABAP Eğitim Kılavuzu
Yazan: Kerem Köseoğlu
Giriş
Bu doküman, temel ABAP eğitimi verecek olan danışmanlar için bir kılavuz niteliğinde
hazırlanmıştır. Eğitim sırasında bu kılavuzun çizdiği yola ve sıralamaya sadık kalmanız tavsiye
edilir. Öğrencilerin bilgisine ve sorularına göre inisiyatif kullanabilirsiniz.
ikonu, öğrenciye verilecek ödevleri işaret eder. Eğitimin kendisi kadar, öğrencinin örnek çözmesi de
önemlidir. Bu yüzden; öğrenciye, dokümanda belirtilenden daha fazla ödev vermeniz daha iyi olacaktır.
Eğer eğittiğiniz kişi bir programcı değil de modülcü ise, ödevleri vermenize gerek yoktur.
ikonu, söz konusu başlığın ABAP programcılarını ilgilendirdiğini gösterir.
ikonu, söz konusu başlığın modül danışmanlarını ilgilendirdiğini gösterir.
Eğitim sırasında eksik / yanlış gördüğünüz noktaları veya ekstradan çözdüğünüz örnekleri
doküman içerisinde farklı bir renkte yazarak dahil etmeniz ve eğitim bittikten sonra
Supervisor’ınıza göndermeniz, ilerideki eğitimlerin kalitesini arttırmak ve içeriğini zenginleştirmek
açısından faydalı olacaktır.
Temel BC Bilgisi
Bu konunun amacı, SAP’ deki geliştirme ortamının yapısını ve çerçevesini tanıtmaktır.
Kodlamaya ve teknik detaylara girmekten ziyade, ekranların dolaşılacağı genel bir tur olarak ele
alınmalıdır.
Geliştirme Sınıfı
SE80 ekranı – Geliştirme sınıfı nedir?
Bu ekrana girerek, örnek bir geliştirme sınıfı gösterin ve geliştirme sınıfının altına ortak amaca
hizmet eden nesnelerin bağlandığının üzerinde durun. Her bir geliştirme nesnesi mutlaka bir
geliştirme sınıfına bağlanır.
Bir geliştirme sınıfında ne gibi öğeler yer almaktadır?
Geliştirme sınıfı altına program, fonksiyon, tablo, işlem kodu, sınıf gibi farklı öğelerin
bağlanabildiğini anlatın.
Bir geliştirme sınıfı ne zaman ve neden yaratılır?
Amaç, geliştirme nesnelerini mantıklı bir şekilde gruplamaktır. Bazı müşteriler her bir modül için
ayrı bir geliştirme sınıfı açmayı tercih eder. Bazıları konu bazında geliştirme sınıfı açar. Birçok
program, tablo ve fonksiyon içerecek yeni bir Z’li modül hazırlanıyorsa, bu modüle tek bir
geliştirme sınıfı açmak gerekebilir. Rollout / Upgrade projelerinde tek bir geliştirme sınıfı açıp
bütün yeni geliştirmeleri orada toplamak tercih edilebilir.
Öğrenci, kendine ait bir geliştirme sınıfı yaratsın. Bu sınıfı, yeni yaratacağı bir Transport Request
içine atsın.
Program
SE38 ekranı – Program nedir?
Bu ekrana girerek örnek birkaç program gösterin. Programın amacı, SAP içerisindeki çeşitli
görevleri kullanıcının gerçekleştirmesini sağlamaktır.
Ne tür programlar vardır?
Rapor (Executable) & diyalog (Module Pool) programlar olduğunu söyleyin. Örnek bir rapor ve
diyalog ekranı gösterin. Raporların genel amacının veri görüntüleme, diyalog programlarının ise
kullanıcıdan veri alıp kayıt atma olduğunu belirtin – bunun genel bir kural olmadığını, kayıt atan
raporlar veya sadece veri görüntüleyen diyalog programları olduğunu anlatın.
Bir program neler yapabilir?
Bir program ile neler yapılabileceğini örnekler çerçevesinde anlatın.
• Veri okuma: Malzeme belgelerini tablolardan okuyan program
• Veri yazma: Çalıştırma bilgilerini bir günlük dosyasında saklayan program
• Veri görüntüleme: Müşteri bazında siparişleri listeleyen program
• Dosya yükleme: Dışarıdaki bir HR sisteminden maaş bilgilerini yükleyen program
• Dosya indirme: Ödeme emirlerini bankalara göndermek üzere metin dosyasına indiren
program
• Kullanıcıdan girdi alma: FB01 ekranı
• Toplu girdi işlemleri: Ay sonunda muhasebe belgesi yaratan program
Fonksiyon
SE37 ekranı – fonksiyon nedir?
Örnek bir fonksiyon açarak, bir fonksiyonun yapısını anlatın. Importing / Exporting gibi
parametreleri üzerinde durun. Fonksiyon grubu – fonksiyon bağlantısına değinin.
Fonksiyon neden yazılır?
Fonksiyon yazma amacı, değişik programlar arasındaki ortak bir algoritmayı merkezi bir yerde
toplamaktır. Aynı işin Include dosyaları ile de yapılabileceğini açıklayın.
Fonksiyonun farkı, daha özerk bir yapı sunmasıdır. Aynı amaca hizmet eden birden fazla
fonksiyonun bir fonksiyon grubu içinde kendi global değişken & formlarıyla birlikte tam ve özerk
bir yapı oluşturabileceğini anlatın. Örnek olarak; SALV (ALV fonksiyonları) grubunu SE80’de
gösterin.
Sınıf
SE24 ekranı – sınıf nedir?
Örnek bir sınıf açarak, bir sınıfın yapısını anlatın. Method / Property kavramlarından bahsedin.
Object Oriented Programming kavramlarından bahsedin.
Sınıf neden yazılır?
Fonksiyon yazma sebepleri ile paralellik kurun ve sınıf kullanmanın avantajlarını belirtin.
Fonksiyon yerine tercih edilmesi gerektiğini belirtin (RFC, WorkFlow gibi özel durumlar hariç).
İşlem Kodu
SE93 ekranı – işlem kodu nedir?
İşlem kodu; programlara ve ekranlara kolay ulaşım sağlayan kodlardır. Menüye alternatiftir.
Program, diyalog ve parametre işlem kodlarından bahsedin. Birkaç örnek işlem kodu gösterin.
Mesajlar
SE91 ekranı – mesaj nedir?
Mesajlar, programlar içerisinden çağırılıp kullanıcıya gösterilebilen iletilerdir. Farklı programlar
tarafından ortak kullanılabilir, tercüme edilebilir ve parametre alabilirler (&1 &2 gibi). Mesaj
sınıflarından bahsedip, birkaç örnek mesaj gösterin. Uzun metinleri gösterin, parametre eklemeyi
öğretin. Uzun metinlerin tercümesinin SE63’te olduğunu gösterin.
Öğrenci, kendi başına birkaç tane mesaj yaratsın. Bu mesajları İngilizce diline tercüme etsin.
Tablolar
SE11 ekranı – tablo nedir?
Tablolar, standart bir biçimde veri taşıyan yapılardır. Örnek birkaç tablo gösterin. Tablo –
Structure – View arasındaki farklara değinin.
Tablo hiyerarşisi
Table  Field  Data Element  Domain yapısından bahsedin. Domain, programcının
tanımladığı bir veri tipidir. Data Element, Domain’i sarar ve farklı dillerde metin atamayı mümkün
kılar. Field, Data Element’i saran tablo alanıdır.
Aynı Domain’i kullanan birçok Data Element; aynı Data Element’i kullanan birçok Field olabilir.
Genel Veritabanı Mantığı
Tablolar arasındaki ilişkileri genel olarak anlatın. Key kavramından ve Public & Private Key
kavramlarından bahsedin.
Tablo Tespiti
F1 – F9 yönteminden bahsedin. Where Used List ile bir Data Element’in veya Domain’in
kullanıldığı tabloların nasıl bulunabileceğini gösterin.
Rapor Geliştirme
Bu konunun amacı, programcıya rapor geliştirmeyle ilgili temel beceriyi kazandırmaktır.
Raporların Genel Yapısı
Bir raporun genel olarak nasıl bir yapıya sahip olduğunu, detaylara girmeden anlatın. Tablo
tanımı, veri tanımlama, seçin ekranı, akış mantığı ve Form sırasının izlenmesi gerektiğinden
bahsedin. İlk “Hello World” programını birlikte yazın.
Hello World
Öğrenci, ekrana haftanın günlerini alt alta yazdıran bir program yazsın.
Temel Veritabanı Sorguları
Select
Veritabanı bağlantısından ve SELECT * … ENDSELECT mantığından bahsedin. SELECT
komutunun amacının, tablodan veri çekmek olduğunu anlatın.
Select
Öğrenci, T001 tablosundaki bütün şirket kodlarını ve şirket kodu metinlerini dökecek bir program
yazsın.
Koşullar
Sorgularda koşulların WHERE komutu yardımıyla nasıl kullanıldığından bahsedin. WHERE
sonrasındaki koşulların parantezler yardımıyla gruplanabileceğini anlatın.
Kosullar
Öğrenci; MAKT tablosundan, dili TR veya EN olan bütün malzeme metinlerini ve malzeme kodlarını
döksün.
Alan Belirleme
Bir sorguda, işe yarayacak alanların nasıl belirtilebileceğini anlatın. Belirtilmeyen alanların
SELECT … ENDSELECT arasında kullanılamayacağını belirtin. Alan belirtmek, performansı
arttıracaktır.
Alan Belirleme
Öğrenci, KNA1 tablosundaki kod ve isimleri listeleyen bir program yazsın. Sorgu içerisinde seçmek
istediği alanları belirtsin.
Sıralama
ORDER komutu yardımıyla dönen verilerin nasıl sıralanabileceğini anlatın. DESCENDING
yardımıyla ters sıralanabileceğini belirtin.
Siralama Ters Siralama Ters ve Duz
Öğrenci, LFA1 tablosundan bütün satıcıların kodlarını ve isimlerini listeleyen bir program yazsın.
Liste; satıcı koduna göre artan, satıcı adına göre azalan sırada olsun.
Veriler
Temel veri tanımlama
Verilerin kullanım amacından bahsedin. DATA, TYPE ve LIKE komutlarını tanıtın. ABAP
içerisindeki temel veri tiplerini tanıtın (C, I, N, P). Global ve yerel değişkenler arasındaki farkı
anlatın. GFD_ LFD_ gibi isimlendirme standartlarından bahsedin.
Programların metin havuzlarından da bahsedin ve TEXT-001 şeklinde metin kullanmanın
avantajlarını anlatın (merkezilik, tercüme).
Veri Tanimlama
SY nesnesinden kısaca bahsedin.
Program; belli bir malzemenin adını ve ölçü birimini MARA’dan, önceki dönem kapanış stok miktarını
ve değerini MBEW’den, ilgili şirket kodunun para birimini T001’den çekip birer değişkene atasın ve ekrana
döksün. Öğrencinin seçim ekranı kullanmasına şu noktada gerek yok, malzeme kodu ve şirketi kodunu
Hard Coded girebilir.
Internal Table kullanımı
Internal Table kavramını anlatın – hafızada duran tablo diye bahsedebilirsiniz. Internal Table
tanımlama yollarını anlatın. Header Line kavramından bahsedin. APPEND ve LOOP komutlarını
tanıtın. MODIFY ve DELETE komutlarına değinin. “REFERENCE INTO” kullanımını
gösterebilirsiniz.
Internal Table
Internal Table içerisinde HEADER LINE kullanmayı gösterin. Bunun yanı sıra, Header Line’sız bir
tabloda LIKE LINE OF komutu yardımıyla nasıl Loop yapılabileceğini anlatın. “REFERENCE
INTO” kullanımını gösterebilirsiniz. CLEAR ve REFRESH komutlarına değinin.
Öğrenci, T001W tablosundaki üretim yeri kodlarını ve isimlerini bir Internal Table’a doldurup, sonra
bu değerleri Loop yardımıyla ekrana yazdırsın. Internal Table’a aktarım işini SELECT … ENDSELECT
arasında yapsın (SELECT INTO kullanmasın).
Program, TCURC tablosundan bütün para birimi kodlarını ve metinlerini toplayıp bir Internal Table’a
doldursun. Doldurduktan sonra, “A” veya “T” diye başlamayan bütün kodları Internal Table’dan silsin. Bu
işlemden sonra, “A” diye başlayan bütün kodların metnini “aaaaa” diye değiştirsin. Son olarak, Internal
Table içeriğini ekrana döksün.
Sorgu – Internal Table ilişkisi
Bir sorgudan dönen değerlerin Internal Table’a nasıl aktarılabileceğini anlatın. APPEND ve
COLLECT komutlarının farkından bahsedin.
Sorgu - ITAB Collect
Öğrenci, KNA1 tablosundaki bütün müşterilerin kod ve isimleri bir Internal Table’a toplayıp ekrana
dökecek bir program yazsın. Bu noktada SELECT INTO kullansın.
Öğrenci, MBEW tablosundaki SALK3 değerlerini BWKEY bazında kümüle etsin ve değerleri ekrana
döksün.
Sabitler
Constant kavramı üzerinde durun. C_ standardını öne çıkarın. Hard-Coded değerlerin mutlaka
Constant olarak girilmesi gerektiğini anlatın.
Aralıklar
Range kavramı üzerinde durun. SIGN alanının I / E değerlerini, OPTION alanının EQ, CP, LE,
LT, GE, GT değerlerini tanıtın. LOW & HIGH alanlarını tanıtın.
Öğrenci; belli bir şirket kodu & yıla ait olup numarası 1 ve 2 ile başlayan bütün muhasebe belge
numaralarını BKPF’den çeksin ve ekrana döksün. Şirket kodu Constant olmalı, yıl SY-DATUM’dan alınmalı,
muhasebe belge numaraları ise bir Range içerisinde belirtilmelidir. İpucu olarak, belge numaralarının
başına 0 koyması gerekebileceğini hatırlatabilirsiniz.
Öğrenci, içinde bulunulan yılın ilk iki ayında kaydedilmiş bütün malzeme belgelerini listelesin. Şirket
kodu Constant olmalı, yıl SY-DATUM’dan alınmalı, malzeme belgelerinin kayıt tarihi ise bir Range içerisinde
belirtilmelidir.
Seçim Ekranı
Seçim ekranı kullanma amacının kullanıcıdan bilgi alarak programları daha parametrik hale
getirmek olduğunu anlatın. Örnek bir seçim ekranı gösterin. Tekli ve aralık şeklinde iki tür alan
olduğunu gösterin. Seçim ekranı parametrelerine ait metinlerin nerede belirlendiğini gösterin.
Parameters
PARAMETERS komutunu anlatın. P_ standardını gösterin. OBLIGATORY ve DEFAULT
takılarından bahsedin.
Parameters
Select Options
SELECT-OPTIONS komutunu anlatın. Range ile olan benzerliğine dikkat çekin. S_ standardını
gösterin. OBLIGATORY ve DEFAULT takılarının pek tercih edilmeyeceğini söyleyin.
Select Options
Diğer
INITIALIZATION olayından bahsedin. BEGIN OF BLOCK WITH FRAME TITLE komutu ile kutu
çizmeyi gösterin.
Öğrenci, seçim ekranından girilen malzeme aralığına ait VVSAL tutarını MBEW tablosundan okuyup,
malzeme bazıda kümüle edip ekrana dökecek bir program yazsın. İpucu olarak sorgudaki IN komutunu
verebilirsiniz.
Cevap
Öğrenci, seçim ekranından girilen malzeme aralığına ait VVSAL tutarını MBEW tablosundan okuyup,
malzeme bazıda kümüle edip ekrana dökecek bir program yazsın. Programda, VVSAL değeri 0 olan
malzemeler devre dışı bırakılsın.
Cevap
Gelişmiş Sorgular
İç İçe Sorgu Kullanma
İç içe birden fazla SELECT komutunun kullanılabileceğinden bahsedin. Performans açısından
dezavantaj, hata yakalama açısından avantaj getirebileceğini belirtin.
Ic Ice Sorgu
Öğrenci, MBEW tablosundaki LBKUM değerlerini MATNR ve MEINS bazında kümüle etsin ve değerleri
ekrana döksün. MEINS değeri, MARA tablosundan okunmalıdır. Bu ödev için, SELECT SINGLE ve iç içe
sorgu ipuçlarını verebilirsiniz.
Inner Join
Inner Join ile birden fazla tablodan aynı anda nasıl veri çekilebileceğini gösterin. Örnek olarak
MKPF & MSEG tablolarından birlikte veri çekin. BSEG gibi Pooled Table’larda Inner Join
kullanılamayacağını anlatın. Çok büyük bir veri söz konusuysa Join kullanmanın hafıza hatasına
yol açabileceğini söyleyin. Debug etmenin daha zor olduğunu söyleyin.
Outer Join
Inner Join ile aynı şekilde kullanıldığını, ama 2. tabloda karşılığı olmayan verilerin de geleceğini
anlatın.
Öğrenci, sistemdeki malzemelerin kodunu ve metnini MARA & MAKT tablolarından Inner Join
yardımıyla çekip listeleyeceği bir program yazsın. Malzeme numara aralığı ve metinlere ait dil, seçim
ekranında parametre olsun.
Temel ABAP Komutları
Form / Perform
Form kullanmanın avantajı, programın içindeki ortak algoritmaları merkezi bir noktaya toplayıp
tekrarı önlemektir. FORM ve PERFORM komutlarından bahsedin. Form’ların alabileceği
parametrelerden bahsedin. TABLES … USING … CHANGING takılarından ve sırasının önemli
olduğundan bahsedin.
SE38 ekranının Pattern düğmesini kullanarak Form’lara ait Perform’ların koda otomatik olarak ve
doğru formatta eklenebileceğini açıklayın. Form’ların, programların akış mantığını daha anlaşılır
hale getirmek için de kullanıldığını söyleyin.
Form Parametrik Form
If & Case
If komutunun kullanım amacını ve şeklini anlatın. Koşulların parantezler yardımıyla
gruplanabileceğine değinin ve uzun koşullara sahip birkaç alıştırma yapın. Case komutunun
getirdiği avantajları gösterin.
If
Program, seçim ekranında bir tarih sorsun. Girilen tarihe göre, kullanıcının burcunu bulup söylesin.
Call Function
Fonksiyon çağırmanın amacını anlatın. IMPORTING / EXPORTING / TABLES içerisinde
aktarılacak parametrelerin tiplerinin fonksiyonda tanımlanan tiple birebir aynı olması gerektiğini
belirtin. Pattern düğmesinin kullanılabileceğini gösterin.
SE37 ekranında * ve F4 yardımıyla fonksiyon bulmayı öğretin.
Call Function
Program; MONTH_NAMES_GET fonksiyonunun yardımıyla, seçim ekranında verilen dilde bütün ayları
listelesin.
İleri ABAP Komutları
Abs
Sayının mutlak değerini alır.
Concatenate
Birden fazla metin tek bir metinde birleştirilir. SEPARATED BY takısına değinin.
Öğrenci, TEXT-001 TEXT-002 gibi metin öğeleriyle bir cümle oluşturacağı bir program yazsın.
Program; kullanıcının Login olduğu dile göre Türkçe ve İngilizce destekliyor olsun.
Split
Bir metni belli bir ayraç kullanarak iki parçaya ayırır.
Öğrenci yeni bir program yazsın. Kullanıcı, seçim ekranından bir FI belge numarası (+şirket kodu
+yıl) girsin. Program, bu belgeye ait WRBTR tutarlarının tamsayı ve ondalık kısımlarını iki ayrı alan haline
getirerek, kalem bazında ekrana döksün.
Pack
Sayının başındaki 0’ları temizler.
Unpack
Sayının başına 0 ekler
Strlen
Metin uzunluğunu hesaplar.
Bu program, seçim ekranında aralık olarak girilen her bir malzemenin numarasını ve (kullanıcının
diline bağlı olarak) metnini listelesin. 3. bir sütunda, malzeme metninin uzunluğu yazsın.
ALV
ALV Temelleri
Basit bir ALV programı üzerinde ALV kullanımının temellerini anlatın. Gruplama, toplam, ara
toplam, Excel Download gibi özellikleri gösterin. GRID ile LIST arasındaki farkı anlatın. Görüntü
ekranında varyant kaydetmeyi öğretin. Buradaki amaç ALV programlamayı değil, ALV’yi tanıtmak
olsun.
Temel ALV
ALV Kullanımı
Buradaki amaç, ALV’nin program içinde nasıl kullanılacağını öğretmek olsun. Alan katalogu
kavramından bahsedin ve REUSE_ALV_FIELDCATALOG_MERGE fonksiyonunu tanıtın. Bu
fonksiyonu kullanabilmek için, Internal Table’ın BEGIN OF … END OF şeklinde tanımlanmış
olması gerektiğini belirtin.
ALV
ALV Olayları
ALV LIST’ın TOP_OF_LIST, END_OF_LIST ve USER_COMMAND olaylarından bahsedin. SALV
içerisindeki STANDARD statüsünü programa kopyalayarak kendi düğmelerini eklemeyi öğretin.
Program, seçim ekranından girilen şirket kodu & mali yıl & kayıt tarihi aralığı & belge numarası
aralığına uyan bütün malzeme belgelerini çeksin ve kalemlerini ALV LIST formatında ekrana döksün.
Raporun başında (TOP_OF_LIST) şirket kodu ve adı, sonunda ise (END_OF_LIST) geri dönen kayıt sayısı
yazsın. SAVE düğmesine tıklandığında, kullanıcıya POPUP ile “HELLO” metni gösterilsin. İpucu olarak,
POPUP_TO_DISPLAY_TEXT fonksiyonunu kullanmasını söyleyebilirsiniz.
Diğer Geliştirmeler
Tablo
Tablolar
SE11 ekranını ve tablo yaratmanın temellerini anlatın. Birlikte bir tablo yaratın ve INSERT &
UPDATE & DELETE komutlarıyla bu tablodaki verileri modifiye edecek örnekler yapın. Key
alanlarının anlamını ve öneminin üzerinde durun. Field  Data Element  Domain zincirinin iyice
anlaşıldığından emin olun. Tabloda MANDT alanının mutlaka bulunması gerektiğini söyleyin. Bir
tablo içerisine bir diğer tablo / yapının Include edilebileceğini gösterin. Tablo bakım ekranı
yaratmayı öğretin.
Öğrenci; içinde ID, ad, soyad ve doğum tarihi bulunan bir tablo yaratsın. Bu tabloya bir bakım
ekranı yaratsın ve bakım ekranına bir işlem kodu bağlasın. Tabloya işlem kodu aracılığıyla birkaç kayıt
girsin.
Yapılar
SE11 ekranından yapı (Structure) yaratmayı öğretin. Yarattığınız yapıyı referans alan bir Internal
Table içeren bir örnek yapın.
Öğrenci, MARA tablosundaki bazı alanları içeren bir yapı yaratsın. Yazacağı programda, bu yapıya
referans verilerek yaratılmış bir Internal Table olsun. Bu Internal Table’ı MARA’dan doldursun ve ALV
kullanmadan ekrana döksün.
Tablo Tipi
SE11 ekranında tablo tipi (Table Type) Yaratmayı öğretin. Yarattığınız tablo tipini referans alan
bir Internal Table içeren bir örnek yapın.
Fonksiyon
Fonksiyon yazma
Fonksiyon yazmanın temellerini anlatın. Birlikte bir fonksiyon yazın. IMPORTING / EXPORTING
parametrelerinin hepsi dolu olsun. TABLES parametresinin artık geçersiz olduğunu belirtin. RFC
fonksiyonlarının dışarıdan Connector / Web Service üzerinden çağırılabildiğini ifade edin.
Yazdığınız fonksiyonu bir program içinden çağırın.
Öğrenci, gönderilen belge numarası & yıl & şirket koduna ait FI kalemlerini döndüren bir fonksiyon
yazsın. Bu fonksiyonu; seçim ekranından girilen yıl & şirket & belge numarası için çağırıp kalemleri ALV
formatında ekrana döken bir program yazsın.
Hata yakalama
EXCEPTIONS bölümünü tanıtın. İçinde RAISE komutu geçen bir fonksiyon yazıp örnek bir
programdan çağırın. Fonksiyonun döndürdüğü hataları SY-SUBRC ile yakalayabileceğinizi
gösterin. EXCEPTIONS bölümünü programa koymazsanız herhangi bir hatada Short Dump
alacağını gösterin.
Öğrenci, gönderilen malzeme belge numarası & yıla ait malzeme kalemlerini döndüren bir fonksiyon
yazsın. Bu fonksiyonu; seçim ekranından girilen yıl & malzeme belgesi için çağırıp kalemleri ALV
formatında ekrana döken bir program yazsın. Eğer belge veritabanında bulunamazsa, fonksiyon bir hata
üretiyor olsun. Program bu hatayı SY-SUBRC’ye bakarak yakalasın ve ALV’nin END_OF_LIST’inde
göstersin.
Sınıf
Sınıf yazma
Sınıf yazmanın temellerini anlatın. Birlikte SE24 işlem kodunda bir sınıf yazın. Sınıf içerisinde
Method / değişken tanımlayın ve Public / Private kavramlarından bahsedin. Method içerisindeki
parametre türlerini gösterin. Sınıfı program içerisinde kullanmayı, fonksiyonel formatı öne
çıkararak gösterin.
Öğrenci, gönderilen belge numarası & yıl & şirket koduna ait FI kalemlerini döndüren bir Method
yazsın. Bu Method’u; seçim ekranından girilen yıl & şirket & belge numarası için çağırıp kalemleri ALV
formatında ekrana döken bir program yazsın.
Hata yakalama
EXCEPTION ve EXCEPTION CLASS kavramlarından bahsedin. EXCEPTION kullanıldığı
durumda hatanın fonksiyon gibi yakalandığını, EXCEPTION CLASS kullanıldığı durumda ise
TRY...CATCH kullanıldığını anlatın.
Öğrenci, gönderilen malzeme belge numarası & yıla ait malzeme kalemlerini döndüren bir Method
yazsın. Bu fonksiyonu; seçim ekranından girilen yıl & malzeme belgesi için çağırıp kalemleri ALV
formatında ekrana döken bir program yazsın. Eğer belge veritabanında bulunamazsa, Method bir hata
üretiyor olsun (Exception Class). Program bu hatayı TRY...CATCH ile yakalasın ve ALV’nin
END_OF_LIST’inde göstersin.
Inheritence
Super Class ve Final Class kavramlarından bahsedin. Bir sınıftan bir başka sınıf türetilebileceğini,
Parent sınıftaki değişken ve Method’ların Child sınıf tarafından devralındığını, Method’ların
Redefine edilebildiğini gösterin. Super-> takısı ile Parent’a ait kodların çalıştırılabildiğini gösterin.
Child sınıfın Parent sınıfa ?= ile Casting yapılabildiğini gösterin.
Öğrenci, BANKA adında bir sınıf oluştursun. Bu sınıf, ödemeleri okuyan ve Download eden
Method’lar içersin. Bir de dosya formatını oluşturan Method’u olsun. Garanti, Akbank ve Yapı Kredi için 3
alt sınıf türetin ve format Method’unu ezip söz konusu bankanın formatında dosya oluşturun. SE38’de
yazacağı program, seçim ekranındaki bankaya göre doğru sınıfı yaratıp BANKA referanslı ana sınıfa Cast
etsin ve onun üzerinden verileri okutup, formatlatıp Download etsin.
Diğer Kavramlar
Interface ve Abstract Class kavramlarından bahsedin. Bir sınıfın sadece bir Parent sınıfı
olabildiğini, ama birden fazla Interface uygulanabildiğini gösterin.
Toplu Girdi
Toplu Girdi Temelleri
Toplu girdinin ekran simülasyonu anlamına geldiğini anlatın. SM35’de bir toplu girdi kaydı yapın
ve bunun arkasında yapılan kayıtları inceleyin. Ekran, alan ve OK_CODE arasındaki farkı anlatın.
OK_CODE’un, hemen öncesindeki ekrana ait ve bir sonraki ekrana kadar geçerli olduğunu
vurgulayın.
Call Transaction
Basit bir Batch Input kaydı yapın ve bu kayda uygun bir program yazın. Bu program, Batch
Input’u Call Transaction komutuyla yürütüyor olsun. A, N ve E modları arasındaki farkı anlatın.
OPTIONS FROM takısını tanıtın ve Dynpro Default Size’ın önemini anlatın. MESSAGES INTO
takısını tanıtın ve Batch’den dönecek mesajları yakalayın. MESSAGES INTO takısı ile,
kaydedilen bir belgenin numarasını alma veya ortaya çıkan hatayı yakalama gibi işlerin
yapılabileceğini anlatın.
SM35 oturumu yaratma
Basit bir Batch Input kaydı yapın ve bu kayda uygun bir program yazın. Bu program, Batch Input
için SM35’den yürütülecek bir oturum yaratıyor olsun. Batch Input’u yürütün ve yarısında kesip
tekrar başlatın. Tamamlanamayan adımların tekrar işlenebildiğini gösterin.
Öğrenci, ekrandan belge numarası & mali yıl & şirket kodu bilgisi verilen bir FI belgesini FB08’de
toplu girdi ile ters çeviren bir program yazsın. Programın Call Transaction / SM35 ile çalışması seçim
ekranından belirlenebiliyor olsun. Call Transaction yapılırsa, geri dönen mesajlar WRITE ile ekrana
dökülsün. SM35 yapılırsa, yaratılan toplu girdi oturumunun adı MESSAGE komutuyla görev çubuğunda
görüntülensin.
User Exit
User Exit kavramından ve ne işe yaradığından bahsedin. CMOD & SMOD ekranlarını gösterin ve
(varsa) sistem üzerinde aktif olan birkaç User Exit gösterin. User Exit’lerin genelde fonksiyonlar
içerisinde bulunduğunu ve Import & Export parametrelerine bakılarak işe yarayıp yaramadığının
anlaşılacağını belirtin.
BADI
BADI kavramından ve ne işe yaradığından bahsedin. SE18 / SE19 işlem kodlarını gösterin ve
(varsa) sistem üzerinde aktif olan birkaç BADI gösterin. BADI oluşturma mantığını anlatın ve
birden fazla Class türetildiği durumda hepsinin birden çalışacağını söyleyin.
Numara Aralığı
SNRO işlem kodunu gösterin ve numara aralığı yaratmayı öğretin. Birlikte, bu aralıktan
NUMBER_GET_NEXT fonksiyonu yardımıyla sayı çekip ekran gösteren bir program geliştirin.
Çekilen sayının her seferinde bir arttığına dikkat çekin.
Öğrenci, Z’li bir tablo ve numara aralığı yaratsın. Tabloda MANDT, ID, ERNAM, ERDAT, UZEIT
alanları olsun. Yazacağı program her çalıştırıldığında; bu Z’li tabloya numara aralığından alınmış yeni bir
sayı ve çalıştırılma bilgileri kaydedilsin.
Debug
Bu bölümün amacı; öğrenciye Debug ile ilgili temel becerileri kazandırmaktır. Öğrencinin, en
azından rapor ve fonksiyonları Debug edebilir hale gelmesi gerekmektedir.
Debug’a Giriş
Debug Başlatılması
/H komutuyla programın nasıl Debug edilebileceğini gösterin. Fonksiyonların Debug modunda
doğrudan nasıl test edilebileceğini gösterin. Popup ekranlarının nasıl Debug edilebileceğini
açıklayın.
popup.txt
Değerlerin Görüntülenmesi
Değerlerin ekranda nasıl görüntülendiğini gösterin. Alan, tablo ve Header Line kavramları
üzerinde durun.
Navigasyon
Debug ekranının üzerinde yer alan Watchpoints, Calls gibi bölümleri tanıtın.
Debug Teknikleri
BreakPoint Yönetimi
Break-point ve break <USERNAME> komutlarını gösterin. Programlara kod yazmadan Break
Point eklemenin yolunu gösterin. Kodu Debug ederken yeni Break Point koymayı, eklenen Break
Point’leri kalıcı kılmayı gösterin. Deactive All / Delete All gibi komutları gösterin.
Değer Değiştirme
Akış esnasında değişken değerleriyle nasıl oynanabileceğini gösterin.
Watchpoint
Değişkenlere Watchpoint koymanın mantığını anlatın.
Break On Command
Belli bir komut çalıştırıldığında veya fonksiyon çağırıldığında programın nasıl durdurulabileceğini
gösterin. Bunun özellikle hata mesajlarında nasıl işe yaradığını anlatın.
Layout Geliştirme
Sapscript
SE71 – Sapscript kavramı
Öğrenciye Sapscript’in ne olduğunu anlatın. SE71 ekranına girip birkaç Sapscript’i birlikte
inceleyin. Page, Window, Page Window kavramlarını tanıtın. Paragraph, Font gibi bölümlerin
üzerinden geçin. Ölçülendirme mantığını anlatın.
Sapscript geliştirme
Birlikte basit bir Sapscript yaratın. Bir Header, bir de Main bölümü olsun. Header içinde /E diye
tanımlanmış iki bölüm, Main bölümünde ise bir bölüm olsun. Bu bölümlerde yer alan değişkenleri
dolduracak bir program yazın. OPEN_FORM, WRITE_FORM ve CLOSE_FORM fonksiyonlarını
tanıtın.
Temel Sapscript kavramları
Sapscript içinde değişik paragrafların nasıl uygulanacağını gösterin. If ve NEW-PAGE komutlarını
anlatın ve birlikte uygulayın. ,, ile TAB yapılabileceğini, &GV_TEST& şeklinde değişken
yazılabileceğini anlatın. NEXT PAGE kavramını ve nasıl çalıştığını anlatın. Aynı pencereleri farklı
sayfalar üzerine koyarak nasıl bir etki yaratacağını gösterin.
Öğrenci, seçim ekranından belge & yıl & şirket kodu verilen bir muhasebe belgesinin bazı başlık
bilgilerini tepede ve kalem bilgilerini aşağıda görüntüleyen bir Layout & program hazırlasın.
Gelişmiş kavramlar
Sapscript içinde adres yazdırmayı öğretin. IF ve PERFORM komutlarını kullanmayı öğretin.
Parasal alanların ölçeklendirerek nasıl yazdırılabileceğini gösterin.
Sapscript Sembolleri Sapscript Kontrol
Komutları
Öğrenci, seçim ekranından numarası verilen bir müşterinin adresini Sapscript ile yazdıran bir
program yazsın.
SmartForms
SMARTFORMS – SmartForm kavramı
Öğrenciye Smarform’un ne olduğunu anlatın. Sapscript ile aynı amaca hizmet ettiğini, ama daha
pratik bir ekran sunduğunu belirtin. Yeni geliştirmelerde Smartform’u tercih etmesi gerektiğini
belirtin. SMARTFORMS ekranına girip birkaç formu birlikte inceleyin. Style kavramını ve
SmartForm ile ilişkisini anlatın. Smartform’ların giriş – çıkış parametrelerini ve bunun fonksiyonlar
ile olan benzerliğini gösterin.
SmartForm geliştirme
Smartform’a tablo göndermenin yolunun Table Type / Structure yaratmaktan geçtiğini anlatın.
Birlikte basit bir SmartForm yaratın. Bir Header, bir de Main bölümü olsun. Header içinde
IMPORTING ile gönderilen bir metin, Main içinde ise TABLES ile gönderilen bir tablo gösterilsin –
bu çerçevede, Text ve Table öğelerinden bahsedin. Bu formu çağıracak bir program yazın.
SSF_FUNCTION_MODULE_NAME fonksiyonundan bahsedin ve programdan Smartform’u
çağırın.
Temel SmartForm kavramları
Graphic, Text, Address, Program Lines kavramlarını anlatın. Loop öğesini gösterin ve Table ile
olan benzerliğine dikkat çekin. Bütün bu kavramları içeren bir örneği birlikte yaratın.
Gelişmiş kavramlar
İkinci bir sayfa içeren bir SmartForm yaratın. Bir sayfada yapılan pencere modifikasyonunun diğer
sayfadaki pencereyi de etkilediğini gösterin.
Öğrenci, seçim ekranından belge & yıl & şirket kodu verilen bir muhasebe belgesinin bazı başlık
bilgilerini tepede ve kalem bilgilerini aşağıda görüntüleyen bir Layout & program hazırlasın. Belge
başlığında, (varsa) belgenin ait olduğu satıcı veya müşterinin adres bilgisi de olsun. Eğer satıcı varsa
tepede SATICI FATURASI, müşteri varsa MÜŞTERİ FATURASI yazsın.
Diyalog Geliştirme
Bu konunun amacı, programcıya diyalog programlama ile ilgili temel beceriyi kazandırmaktır.
Temel Kavramlar
Program oluşturma
Birlikte Module Pool tipinde bir program yaratın. Ekrana basit birkaç nesne ekleyin, ekrana bir
işlem kodu bağlayın ve programı yürütün. Programlara SAPGUI veya (ITS üzerinden) Web
tarayıcısı / mobil cihazlardan erişilebildiğini belirtin ve BSP / Web Dynpro alternatiflerinden
bahsedin.
PBO / PAI
PBO / PAI mantığından bahsedin. Örnek bir program üzerinde hata ayıklama ekranına girerek
PBO / PAI’nin ne zaman ve nasıl aktive olduğunu gösterin. Araç çubuğu üzerine ekleyeceğiniz 1-
2 basit düğme ile USER-COMAND’ı, ve BACK & EXIT düğmeleri ile EXIT-COMMAND’I PAI
içerisinde kullanmayı öğretin.
Öğrenci; iki metin kutusu ve bir KOPYALA düğmesi içeren bir diyalog yaratsın. Metin kutusuna bir
yazı yazıp KOPYALA düğmesine tıklandığında; metin, diğer kutucuğa kopyalansın.
Rapor ekranları
Raporlar içinde de ekran oluşturup çağırabileceğinizden bahsedin. Executable bir program
oluşturup, program içerisinde bir ekran yaratın. Program içinde CALL SCREEN komutunu
kullanarak yarattığınız ekranı çağırın. PBO / PAI mantığının değişmediğini gösterin.
Program içerisinde bir de Popup ekranı yaratın. CALL SCREEN … STARTING AT … ENDING
AT … komutuyla Popup ekran çağırın.
Öğrenci, seçim ekranında girilen metni aynen görüntüleyen bir diyalog ekranı oluştursun.
Ekran modifikasyonu
PBO / PAI içindeki komutlar yardımıyla ekrandaki öğeleri görünür / görünmez veya erişilebilir /
erişilemez hale getirebildiğinizi gösterin.
Öğrenci, Belge Numarası & Mali Yıl & Şirket Kodu bilgilerini içerecek üç kutucuk ve “Belgeye Git”
yazısına sahip bir düğme içeren bir ekran yaratsın. Kutucuklar doldurulup Enter’a basıldığında; program,
böyle bir belge olup olmadığını kontrol etsin. Belge yoksa, “Belgeye Git” düğmesi tıklanamaz hale gelsin.
Belge varsa, düğme tıklanabilir hale gelsin.
Gelişmiş Nesneler
Subscreen
Subscreen kavramını anlatın. Subscreen’lerin kendi özerk PBO / PAI’leri olduğundan bahsedin.
Subscreen kullanma amacının, farklı ekranlarda ortak olarak kullanılacak öğe gruplarını merkezi
hale getirmek olduğunu söyleyin. Yeni bir Module Pool programı içinde bir Screen, bir de Screen
içinde Subscreen yaratın, her iki ekranda da çeşitli öğeler olsun. Araç çubuğuna ekleyeceğiniz bir
düğme yardımıyla Debug’a girin ve PBO / PAI’lerin hangi sırayla & nasıl çalıştığını birlikte
inceleyin.
Table Control
Table Control’u gösterin ve amacının kullanıcıya kalem mantığında veri girişi yaptırmak olduğunu
anlatın. Salt veri gösterme amacıyla ALV’nin de diyalog içine gömülebileceğini (sadece) söyleyin.
Birlikte Table Control içeren bir örnek yapın.
Öğrenci, mali yıl & şirket kodu girilebilecek iki kutucuk ve iki adet Table Control içeren bir ekran
yaratsın. Mali yıl & şirket kodu girilip düğmeye tıklandığında, o yıl ve şirket koduna ait bütün muhasebe
belgeleri soldaki tablo kontrolünde listelensin. Soldaki tabloda bir(kaç) kayıt seçilip bir diğer düğmeye
tıklandığında, seçilen belgelere ait kalemler sağdaki tabloda listelensin.
Tabstrip
Tabstrip kontrolünü gösterin. Her bir TAB içerisinde ayrı bir Subscreen bulunması gerektiğini
anlatın. Birlikte, içinde farklı öğeler bulunan bir Tabstrip barındıran bir örnek yaratın.
Öğrenci; malzeme numarası girilebilecek bir kutu ve üç Subscreen içeren bir Tabstrip yaratsın.
Kutuya bir malzeme numarası girilip düğmeye tıklandığında; malzeme metni farklı Subscreen’ler içerisinde
Türkçe, İngilizce ve Almanca dilinde görüntülensin.
OSS
Not Arama
OSS’e nasıl girileceğini gösterin. Not aramayı öğretin. Bulunan nottaki sistem / Patch seviyesi ile
söz konusu sistemin nasıl karşılaştırılacağını gösterin.
OSS Uygulama
OSS uygulamanın 2 yönetmini gösterin (doğrudan uygulama / SNOTE). Doğrudan yapılan
müdahelelerde Assistant kullanmanın önemine değinin. SNOTE uygulamasında notun tamamının
otomatik olarak uygulanamayabileceğinin üzerinde durun.
SNOTE Kullanım
Kılavuzu
Web Geliştirme
Bu konunun amacı, programcıya Web tabanlı programlama ile ilgili temel beceriyi kazandırmaktır.
Karşılaştırma
ITS, BSP ve Web Dynpro alternatiflerinden bahsedin. BSP’nin eski (ASP) ve DynPro’nun yeni
(ASP.NET) olduğundan bahsedin. BSP’de daha fazla kodlamaya karşılık daha az kod ve daha
esnek formatların mümkün olduğunu, Web Dynpro’da ise daha az kodlama olmasına karşılık
standart kontrolleri kullanmak gerektiğini anlatın.
Alternatif Teknolojiler
BSP
BSP Tag’lerini gösterin. ABAP ve BSP’nin iç içe kullanıldığını gösterin. Ekranlar arası veri
transferi için request->get_form_field kullanımını gösterin ve Request nesnesinden bahsedin.
Öğrenci; ilk ekranda sorulan şirket kodunun detaylarını ikinci ekranda listeleyen örnek bir uygulama
geliştirsin.
Web Dynpro
Context, Window, View kavramlarından bahsedin. Flow ve Grid Layout alternatiflerinden
bahsedin. Sayfa üzerindeki (WDOINIT gibi) kritik Method’ları gösterin. TextBox, Button ve Table
kontrollerini, arkalarına değişken bağlama mantığıyla birlikte anlatın. Group içerisinde Parameter
ve Select Option kullanımını gösterin. Fonksiyon çağırmanın kolay yolunu gösterin. User
Component kavramına değinin.
Öğrenci; bir metin kutusu ve bir Buton barındıran bir ekran yaratsın. Butona tıklandıkça, metin
kutusundaki sayı artsın.
Bitirme Projeleri
Fihrist projesi. Bu projede; ad, soyad, telefon numarası ve doğum tarihi girilebilecek bir fihrist
sistemi geliştirilecektir. Verilerin girişi, güncellenmesi ve silinmesi diyalog üzerinde yapılacaktır. Her bir
kayda ait tekrarsız bir ID alanı bulunmalıdır (Number Range ile çözülebilir). Fihrist tablosundaki kriterlere
göre listeleme yapılabilen bir de ALV destekli rapor geliştirilecektir.
Sayısal Loto projesi. Bu projede; tarih bazında Sayısal Loto sonuçlarının girilebileceği bir tablo
yaratılacak ve tablo bakımı, kullanıcı tarafından SM30 üzerinden yapılabilecektir. Tarih aralığına göre
çekiliş sonuçlarını listeleyen bir ALV raporunun yanı sıra, bir TXT dosyasından yüklenecek loto
tahminlerinin her bir tarihte kaç tutturmuş olduğunu listeleyen ikinci bir rapor daha yazılacaktır.
İhracat ek verileri projesi. Satış belgesi bazında (VBAK) “İhracat Gümrük Numarası”, “Taşıt
Numarası” ve “İhracat Yetkilisi” bilgilerinin saklanacağı bir Z’li tablo yaratın. Bu alanların metinleri (gümrük
adı, taşıt adı, yetkili adı); 3 farklı tabloda ana veri şeklinde saklanıyor olmalı. Ana veri tablolarının bakımı,
SM30 ekranında yapılabiliyor olmalıdır. Belge bazındaki ihracat verileri, bir diyalog ekranı üzerinde Ekle /
Güncelle / Sil mantığıyla modifiye edilebiliyor olmalıdır. Bir başka raporda; kullanıcı satış belgesi numarası
girerek bazı VBAP kalem bilgilerini listeleyen bir Layout yazdırabiliyor olmalıdır. Bu Layout’un başlık
kısmında, Z’li tabloda bulunan ihracat verileri ve metinleri de bulunmalıdır.
Toplu ters kayıt programı. Bu program, seçim ekranından girilen parametreler doğrultusunda
(ters kaydı bulunmayan) muhasebe belgelerini okuyacak ve ALV formatında ekrana dökecektir. Ters kaydı
zaten olan belge numaraları, END_OF_LIST’de bilgi amaçlı gösterilecektir. Kullanıcı, dilediği belgeleri
tıklayıp SAVE düğmesine tıkladığında, bu belgeler toplu girdi yardımıyla FB08’de ters çevrilecektir.
Herhangi bir belgeyi seçip Görüntüle düğmesine tıkladığında ise; program, belgeyi FB03’de
görüntülemelidir.

Contenu connexe

Tendances

Sap abap real time questions
Sap abap real time questionsSap abap real time questions
Sap abap real time questionstechie_gautam
 
Abap coding standards
Abap coding standardsAbap coding standards
Abap coding standardssurendra1579
 
Sap User Exit for Functional Consultant
Sap User Exit for Functional ConsultantSap User Exit for Functional Consultant
Sap User Exit for Functional ConsultantAnkit Sharma
 
Sap variant configuation training
Sap variant configuation trainingSap variant configuation training
Sap variant configuation trainingKiranReddy325
 
Step by step lsmw tutorial
Step by step lsmw tutorialStep by step lsmw tutorial
Step by step lsmw tutorialraonivaz
 
Sap abap interview questions
Sap abap interview questionsSap abap interview questions
Sap abap interview questionskssr99
 
Functional specification of sap
Functional specification of  sapFunctional specification of  sap
Functional specification of sapSaptechies
 
Currency conversion in bi 7.0
Currency conversion in bi 7.0Currency conversion in bi 7.0
Currency conversion in bi 7.0gireesho
 
Sap Abap Reports
Sap Abap ReportsSap Abap Reports
Sap Abap Reportsvbpc
 
Design Patterns in ABAP Objects - SAP Forum / Tech Ed sunumu (2016)
Design Patterns in ABAP Objects - SAP Forum / Tech Ed sunumu (2016)Design Patterns in ABAP Objects - SAP Forum / Tech Ed sunumu (2016)
Design Patterns in ABAP Objects - SAP Forum / Tech Ed sunumu (2016)Dr. Kerem Koseoglu
 
Errors in process chains
Errors in process chainsErrors in process chains
Errors in process chainsSiva Kollipara
 

Tendances (20)

Reports
ReportsReports
Reports
 
Sap abap real time questions
Sap abap real time questionsSap abap real time questions
Sap abap real time questions
 
Abap reports
Abap reportsAbap reports
Abap reports
 
Abap coding standards
Abap coding standardsAbap coding standards
Abap coding standards
 
Sap User Exit for Functional Consultant
Sap User Exit for Functional ConsultantSap User Exit for Functional Consultant
Sap User Exit for Functional Consultant
 
SAP DMS kılavuzu
SAP DMS kılavuzuSAP DMS kılavuzu
SAP DMS kılavuzu
 
ABAP in 21 days
ABAP in 21 daysABAP in 21 days
ABAP in 21 days
 
Sap variant configuation training
Sap variant configuation trainingSap variant configuation training
Sap variant configuation training
 
Web Dynpro
Web DynproWeb Dynpro
Web Dynpro
 
SAP Adobe forms
SAP Adobe formsSAP Adobe forms
SAP Adobe forms
 
Step by step lsmw tutorial
Step by step lsmw tutorialStep by step lsmw tutorial
Step by step lsmw tutorial
 
Sap abap interview questions
Sap abap interview questionsSap abap interview questions
Sap abap interview questions
 
Functional specification of sap
Functional specification of  sapFunctional specification of  sap
Functional specification of sap
 
Currency conversion in bi 7.0
Currency conversion in bi 7.0Currency conversion in bi 7.0
Currency conversion in bi 7.0
 
Sap scripts
Sap scriptsSap scripts
Sap scripts
 
SAP WorkFlow Kılavuzu
SAP WorkFlow KılavuzuSAP WorkFlow Kılavuzu
SAP WorkFlow Kılavuzu
 
Sap Abap Reports
Sap Abap ReportsSap Abap Reports
Sap Abap Reports
 
Design Patterns in ABAP Objects - SAP Forum / Tech Ed sunumu (2016)
Design Patterns in ABAP Objects - SAP Forum / Tech Ed sunumu (2016)Design Patterns in ABAP Objects - SAP Forum / Tech Ed sunumu (2016)
Design Patterns in ABAP Objects - SAP Forum / Tech Ed sunumu (2016)
 
Sap abap material
Sap abap materialSap abap material
Sap abap material
 
Errors in process chains
Errors in process chainsErrors in process chains
Errors in process chains
 

En vedette

Organizational Behavior - Genel özet
Organizational Behavior - Genel özetOrganizational Behavior - Genel özet
Organizational Behavior - Genel özetDr. Kerem Koseoglu
 
Lotus Notes - .NET entegrasyonu
Lotus Notes - .NET entegrasyonuLotus Notes - .NET entegrasyonu
Lotus Notes - .NET entegrasyonuDr. Kerem Koseoglu
 
Embedding custom ActiveX controls into SAP GUI
Embedding custom ActiveX controls into SAP GUIEmbedding custom ActiveX controls into SAP GUI
Embedding custom ActiveX controls into SAP GUIDr. Kerem Koseoglu
 
ABAP mimarisi hakkında yeni bir kitap: "Design Patterns in ABAP Objects"
ABAP mimarisi hakkında yeni bir kitap: "Design Patterns in ABAP Objects"ABAP mimarisi hakkında yeni bir kitap: "Design Patterns in ABAP Objects"
ABAP mimarisi hakkında yeni bir kitap: "Design Patterns in ABAP Objects"Dr. Kerem Koseoglu
 

En vedette (9)

SPSS ile regresyon analizi
SPSS ile regresyon analiziSPSS ile regresyon analizi
SPSS ile regresyon analizi
 
Organizational Behavior - Genel özet
Organizational Behavior - Genel özetOrganizational Behavior - Genel özet
Organizational Behavior - Genel özet
 
ECC 6.0 ABAP yenilikleri
ECC 6.0 ABAP yenilikleriECC 6.0 ABAP yenilikleri
ECC 6.0 ABAP yenilikleri
 
Lotus Notes - .NET entegrasyonu
Lotus Notes - .NET entegrasyonuLotus Notes - .NET entegrasyonu
Lotus Notes - .NET entegrasyonu
 
Embedding custom ActiveX controls into SAP GUI
Embedding custom ActiveX controls into SAP GUIEmbedding custom ActiveX controls into SAP GUI
Embedding custom ActiveX controls into SAP GUI
 
SAP SCOT kurulum adımları
SAP SCOT kurulum adımlarıSAP SCOT kurulum adımları
SAP SCOT kurulum adımları
 
SAP Portal kılavuzu
SAP Portal kılavuzuSAP Portal kılavuzu
SAP Portal kılavuzu
 
ABAP mimarisi hakkında yeni bir kitap: "Design Patterns in ABAP Objects"
ABAP mimarisi hakkında yeni bir kitap: "Design Patterns in ABAP Objects"ABAP mimarisi hakkında yeni bir kitap: "Design Patterns in ABAP Objects"
ABAP mimarisi hakkında yeni bir kitap: "Design Patterns in ABAP Objects"
 
Zaman Yönetimi
Zaman YönetimiZaman Yönetimi
Zaman Yönetimi
 

Similaire à Temel ABAP eğitim kılavuzu

Internet programciligi-2
Internet programciligi-2Internet programciligi-2
Internet programciligi-2major5
 
Nesne tabanlı programlamada metotlar
Nesne tabanlı programlamada metotlarNesne tabanlı programlamada metotlar
Nesne tabanlı programlamada metotlarErol Dizdar
 
Internet programcılığı 2
Internet programcılığı 2Internet programcılığı 2
Internet programcılığı 2Erol Dizdar
 
İleri Seviye T-SQL Programlama - Chapter 21
İleri Seviye T-SQL Programlama - Chapter 21İleri Seviye T-SQL Programlama - Chapter 21
İleri Seviye T-SQL Programlama - Chapter 21Cihan Özhan
 
Yeni başlayanlar için Laravel
Yeni başlayanlar için Laravel Yeni başlayanlar için Laravel
Yeni başlayanlar için Laravel Cüneyd Tural
 
Internet programcılığı 3
Internet programcılığı 3Internet programcılığı 3
Internet programcılığı 3Erol Dizdar
 
C sharp-egitimi-catalca
C sharp-egitimi-catalcaC sharp-egitimi-catalca
C sharp-egitimi-catalcasersld30
 
1. nesneye dayalı programlama giriş
1. nesneye dayalı programlama   giriş1. nesneye dayalı programlama   giriş
1. nesneye dayalı programlama girişkarmuhtam
 
İleri Seviye T-SQL Programlama - Chapter 02
İleri Seviye T-SQL Programlama - Chapter 02İleri Seviye T-SQL Programlama - Chapter 02
İleri Seviye T-SQL Programlama - Chapter 02Cihan Özhan
 
SDL Trados (Studio) Pratik Kullanım İpuçları
SDL Trados (Studio) Pratik Kullanım İpuçlarıSDL Trados (Studio) Pratik Kullanım İpuçları
SDL Trados (Studio) Pratik Kullanım İpuçlarıNest Dil Hizmetleri
 
C sharp-ogretmeni
C sharp-ogretmeniC sharp-ogretmeni
C sharp-ogretmenisersld30
 
Angular Framework (Tanıtım Sunumu) - 2024
Angular Framework (Tanıtım Sunumu) - 2024Angular Framework (Tanıtım Sunumu) - 2024
Angular Framework (Tanıtım Sunumu) - 2024eburhan
 
C sharp-egitmeni
C sharp-egitmeniC sharp-egitmeni
C sharp-egitmenisersld30
 
progressokulu.com Advanced Business Language Slide 1
progressokulu.com Advanced Business Language Slide 1progressokulu.com Advanced Business Language Slide 1
progressokulu.com Advanced Business Language Slide 1kaan verdioglu
 
Yazılım Mimarileri - Hafta 3
Yazılım Mimarileri - Hafta 3Yazılım Mimarileri - Hafta 3
Yazılım Mimarileri - Hafta 3Kubra Kose
 

Similaire à Temel ABAP eğitim kılavuzu (20)

Basit kodlar
Basit kodlarBasit kodlar
Basit kodlar
 
Gereksinim Analizi Dokümanı Hazırlama
Gereksinim Analizi Dokümanı HazırlamaGereksinim Analizi Dokümanı Hazırlama
Gereksinim Analizi Dokümanı Hazırlama
 
Internet programciligi-2
Internet programciligi-2Internet programciligi-2
Internet programciligi-2
 
Nesne tabanlı programlamada metotlar
Nesne tabanlı programlamada metotlarNesne tabanlı programlamada metotlar
Nesne tabanlı programlamada metotlar
 
Internet programcılığı 2
Internet programcılığı 2Internet programcılığı 2
Internet programcılığı 2
 
İleri Seviye T-SQL Programlama - Chapter 21
İleri Seviye T-SQL Programlama - Chapter 21İleri Seviye T-SQL Programlama - Chapter 21
İleri Seviye T-SQL Programlama - Chapter 21
 
Yeni başlayanlar için Laravel
Yeni başlayanlar için Laravel Yeni başlayanlar için Laravel
Yeni başlayanlar için Laravel
 
Templates
Templates Templates
Templates
 
Internet programcılığı 3
Internet programcılığı 3Internet programcılığı 3
Internet programcılığı 3
 
C sharp-egitimi-catalca
C sharp-egitimi-catalcaC sharp-egitimi-catalca
C sharp-egitimi-catalca
 
1. nesneye dayalı programlama giriş
1. nesneye dayalı programlama   giriş1. nesneye dayalı programlama   giriş
1. nesneye dayalı programlama giriş
 
İleri Seviye T-SQL Programlama - Chapter 02
İleri Seviye T-SQL Programlama - Chapter 02İleri Seviye T-SQL Programlama - Chapter 02
İleri Seviye T-SQL Programlama - Chapter 02
 
SDL Trados (Studio) Pratik Kullanım İpuçları
SDL Trados (Studio) Pratik Kullanım İpuçlarıSDL Trados (Studio) Pratik Kullanım İpuçları
SDL Trados (Studio) Pratik Kullanım İpuçları
 
C sharp-ogretmeni
C sharp-ogretmeniC sharp-ogretmeni
C sharp-ogretmeni
 
Primeface
PrimefacePrimeface
Primeface
 
Angular Framework (Tanıtım Sunumu) - 2024
Angular Framework (Tanıtım Sunumu) - 2024Angular Framework (Tanıtım Sunumu) - 2024
Angular Framework (Tanıtım Sunumu) - 2024
 
C sharp-egitmeni
C sharp-egitmeniC sharp-egitmeni
C sharp-egitmeni
 
Yazılım Gereksinim Mühendisliği Semineri
Yazılım Gereksinim Mühendisliği SemineriYazılım Gereksinim Mühendisliği Semineri
Yazılım Gereksinim Mühendisliği Semineri
 
progressokulu.com Advanced Business Language Slide 1
progressokulu.com Advanced Business Language Slide 1progressokulu.com Advanced Business Language Slide 1
progressokulu.com Advanced Business Language Slide 1
 
Yazılım Mimarileri - Hafta 3
Yazılım Mimarileri - Hafta 3Yazılım Mimarileri - Hafta 3
Yazılım Mimarileri - Hafta 3
 

Plus de Dr. Kerem Koseoglu

ABAP 7.x New Features and Commands
ABAP 7.x New Features and CommandsABAP 7.x New Features and Commands
ABAP 7.x New Features and CommandsDr. Kerem Koseoglu
 
Kordsa Design Pattern Eğitimi
Kordsa Design Pattern EğitimiKordsa Design Pattern Eğitimi
Kordsa Design Pattern EğitimiDr. Kerem Koseoglu
 
Correlation Between Proper Training / Involvement and ERP Acceptance and the ...
Correlation Between Proper Training / Involvement and ERP Acceptance and the ...Correlation Between Proper Training / Involvement and ERP Acceptance and the ...
Correlation Between Proper Training / Involvement and ERP Acceptance and the ...Dr. Kerem Koseoglu
 
SQL Injection - Web siteniz tehdit altında mı?
SQL Injection - Web siteniz tehdit altında mı?SQL Injection - Web siteniz tehdit altında mı?
SQL Injection - Web siteniz tehdit altında mı?Dr. Kerem Koseoglu
 

Plus de Dr. Kerem Koseoglu (8)

Avrupa'da ABAP Kariyeri
Avrupa'da ABAP KariyeriAvrupa'da ABAP Kariyeri
Avrupa'da ABAP Kariyeri
 
Zaman Yönetimi TEDx Sunumu
Zaman Yönetimi TEDx SunumuZaman Yönetimi TEDx Sunumu
Zaman Yönetimi TEDx Sunumu
 
ABAP 7.x New Features and Commands
ABAP 7.x New Features and CommandsABAP 7.x New Features and Commands
ABAP 7.x New Features and Commands
 
Fiori eğitimi - sunum
Fiori eğitimi - sunumFiori eğitimi - sunum
Fiori eğitimi - sunum
 
SPSS Manual (Turkish)
SPSS Manual (Turkish)SPSS Manual (Turkish)
SPSS Manual (Turkish)
 
Kordsa Design Pattern Eğitimi
Kordsa Design Pattern EğitimiKordsa Design Pattern Eğitimi
Kordsa Design Pattern Eğitimi
 
Correlation Between Proper Training / Involvement and ERP Acceptance and the ...
Correlation Between Proper Training / Involvement and ERP Acceptance and the ...Correlation Between Proper Training / Involvement and ERP Acceptance and the ...
Correlation Between Proper Training / Involvement and ERP Acceptance and the ...
 
SQL Injection - Web siteniz tehdit altında mı?
SQL Injection - Web siteniz tehdit altında mı?SQL Injection - Web siteniz tehdit altında mı?
SQL Injection - Web siteniz tehdit altında mı?
 

Temel ABAP eğitim kılavuzu

  • 1. Temel ABAP Eğitim Kılavuzu Yazan: Kerem Köseoğlu
  • 2. Giriş Bu doküman, temel ABAP eğitimi verecek olan danışmanlar için bir kılavuz niteliğinde hazırlanmıştır. Eğitim sırasında bu kılavuzun çizdiği yola ve sıralamaya sadık kalmanız tavsiye edilir. Öğrencilerin bilgisine ve sorularına göre inisiyatif kullanabilirsiniz. ikonu, öğrenciye verilecek ödevleri işaret eder. Eğitimin kendisi kadar, öğrencinin örnek çözmesi de önemlidir. Bu yüzden; öğrenciye, dokümanda belirtilenden daha fazla ödev vermeniz daha iyi olacaktır. Eğer eğittiğiniz kişi bir programcı değil de modülcü ise, ödevleri vermenize gerek yoktur. ikonu, söz konusu başlığın ABAP programcılarını ilgilendirdiğini gösterir. ikonu, söz konusu başlığın modül danışmanlarını ilgilendirdiğini gösterir. Eğitim sırasında eksik / yanlış gördüğünüz noktaları veya ekstradan çözdüğünüz örnekleri doküman içerisinde farklı bir renkte yazarak dahil etmeniz ve eğitim bittikten sonra Supervisor’ınıza göndermeniz, ilerideki eğitimlerin kalitesini arttırmak ve içeriğini zenginleştirmek açısından faydalı olacaktır.
  • 3. Temel BC Bilgisi Bu konunun amacı, SAP’ deki geliştirme ortamının yapısını ve çerçevesini tanıtmaktır. Kodlamaya ve teknik detaylara girmekten ziyade, ekranların dolaşılacağı genel bir tur olarak ele alınmalıdır. Geliştirme Sınıfı SE80 ekranı – Geliştirme sınıfı nedir? Bu ekrana girerek, örnek bir geliştirme sınıfı gösterin ve geliştirme sınıfının altına ortak amaca hizmet eden nesnelerin bağlandığının üzerinde durun. Her bir geliştirme nesnesi mutlaka bir geliştirme sınıfına bağlanır. Bir geliştirme sınıfında ne gibi öğeler yer almaktadır? Geliştirme sınıfı altına program, fonksiyon, tablo, işlem kodu, sınıf gibi farklı öğelerin bağlanabildiğini anlatın. Bir geliştirme sınıfı ne zaman ve neden yaratılır? Amaç, geliştirme nesnelerini mantıklı bir şekilde gruplamaktır. Bazı müşteriler her bir modül için ayrı bir geliştirme sınıfı açmayı tercih eder. Bazıları konu bazında geliştirme sınıfı açar. Birçok program, tablo ve fonksiyon içerecek yeni bir Z’li modül hazırlanıyorsa, bu modüle tek bir geliştirme sınıfı açmak gerekebilir. Rollout / Upgrade projelerinde tek bir geliştirme sınıfı açıp bütün yeni geliştirmeleri orada toplamak tercih edilebilir. Öğrenci, kendine ait bir geliştirme sınıfı yaratsın. Bu sınıfı, yeni yaratacağı bir Transport Request içine atsın. Program SE38 ekranı – Program nedir? Bu ekrana girerek örnek birkaç program gösterin. Programın amacı, SAP içerisindeki çeşitli görevleri kullanıcının gerçekleştirmesini sağlamaktır. Ne tür programlar vardır? Rapor (Executable) & diyalog (Module Pool) programlar olduğunu söyleyin. Örnek bir rapor ve diyalog ekranı gösterin. Raporların genel amacının veri görüntüleme, diyalog programlarının ise kullanıcıdan veri alıp kayıt atma olduğunu belirtin – bunun genel bir kural olmadığını, kayıt atan raporlar veya sadece veri görüntüleyen diyalog programları olduğunu anlatın. Bir program neler yapabilir? Bir program ile neler yapılabileceğini örnekler çerçevesinde anlatın. • Veri okuma: Malzeme belgelerini tablolardan okuyan program • Veri yazma: Çalıştırma bilgilerini bir günlük dosyasında saklayan program • Veri görüntüleme: Müşteri bazında siparişleri listeleyen program • Dosya yükleme: Dışarıdaki bir HR sisteminden maaş bilgilerini yükleyen program • Dosya indirme: Ödeme emirlerini bankalara göndermek üzere metin dosyasına indiren program • Kullanıcıdan girdi alma: FB01 ekranı • Toplu girdi işlemleri: Ay sonunda muhasebe belgesi yaratan program
  • 4. Fonksiyon SE37 ekranı – fonksiyon nedir? Örnek bir fonksiyon açarak, bir fonksiyonun yapısını anlatın. Importing / Exporting gibi parametreleri üzerinde durun. Fonksiyon grubu – fonksiyon bağlantısına değinin. Fonksiyon neden yazılır? Fonksiyon yazma amacı, değişik programlar arasındaki ortak bir algoritmayı merkezi bir yerde toplamaktır. Aynı işin Include dosyaları ile de yapılabileceğini açıklayın. Fonksiyonun farkı, daha özerk bir yapı sunmasıdır. Aynı amaca hizmet eden birden fazla fonksiyonun bir fonksiyon grubu içinde kendi global değişken & formlarıyla birlikte tam ve özerk bir yapı oluşturabileceğini anlatın. Örnek olarak; SALV (ALV fonksiyonları) grubunu SE80’de gösterin. Sınıf SE24 ekranı – sınıf nedir? Örnek bir sınıf açarak, bir sınıfın yapısını anlatın. Method / Property kavramlarından bahsedin. Object Oriented Programming kavramlarından bahsedin. Sınıf neden yazılır? Fonksiyon yazma sebepleri ile paralellik kurun ve sınıf kullanmanın avantajlarını belirtin. Fonksiyon yerine tercih edilmesi gerektiğini belirtin (RFC, WorkFlow gibi özel durumlar hariç). İşlem Kodu SE93 ekranı – işlem kodu nedir? İşlem kodu; programlara ve ekranlara kolay ulaşım sağlayan kodlardır. Menüye alternatiftir. Program, diyalog ve parametre işlem kodlarından bahsedin. Birkaç örnek işlem kodu gösterin. Mesajlar SE91 ekranı – mesaj nedir? Mesajlar, programlar içerisinden çağırılıp kullanıcıya gösterilebilen iletilerdir. Farklı programlar tarafından ortak kullanılabilir, tercüme edilebilir ve parametre alabilirler (&1 &2 gibi). Mesaj sınıflarından bahsedip, birkaç örnek mesaj gösterin. Uzun metinleri gösterin, parametre eklemeyi öğretin. Uzun metinlerin tercümesinin SE63’te olduğunu gösterin. Öğrenci, kendi başına birkaç tane mesaj yaratsın. Bu mesajları İngilizce diline tercüme etsin. Tablolar SE11 ekranı – tablo nedir? Tablolar, standart bir biçimde veri taşıyan yapılardır. Örnek birkaç tablo gösterin. Tablo – Structure – View arasındaki farklara değinin.
  • 5. Tablo hiyerarşisi Table  Field  Data Element  Domain yapısından bahsedin. Domain, programcının tanımladığı bir veri tipidir. Data Element, Domain’i sarar ve farklı dillerde metin atamayı mümkün kılar. Field, Data Element’i saran tablo alanıdır. Aynı Domain’i kullanan birçok Data Element; aynı Data Element’i kullanan birçok Field olabilir. Genel Veritabanı Mantığı Tablolar arasındaki ilişkileri genel olarak anlatın. Key kavramından ve Public & Private Key kavramlarından bahsedin. Tablo Tespiti F1 – F9 yönteminden bahsedin. Where Used List ile bir Data Element’in veya Domain’in kullanıldığı tabloların nasıl bulunabileceğini gösterin.
  • 6. Rapor Geliştirme Bu konunun amacı, programcıya rapor geliştirmeyle ilgili temel beceriyi kazandırmaktır. Raporların Genel Yapısı Bir raporun genel olarak nasıl bir yapıya sahip olduğunu, detaylara girmeden anlatın. Tablo tanımı, veri tanımlama, seçin ekranı, akış mantığı ve Form sırasının izlenmesi gerektiğinden bahsedin. İlk “Hello World” programını birlikte yazın. Hello World Öğrenci, ekrana haftanın günlerini alt alta yazdıran bir program yazsın. Temel Veritabanı Sorguları Select Veritabanı bağlantısından ve SELECT * … ENDSELECT mantığından bahsedin. SELECT komutunun amacının, tablodan veri çekmek olduğunu anlatın. Select Öğrenci, T001 tablosundaki bütün şirket kodlarını ve şirket kodu metinlerini dökecek bir program yazsın. Koşullar Sorgularda koşulların WHERE komutu yardımıyla nasıl kullanıldığından bahsedin. WHERE sonrasındaki koşulların parantezler yardımıyla gruplanabileceğini anlatın. Kosullar Öğrenci; MAKT tablosundan, dili TR veya EN olan bütün malzeme metinlerini ve malzeme kodlarını döksün. Alan Belirleme Bir sorguda, işe yarayacak alanların nasıl belirtilebileceğini anlatın. Belirtilmeyen alanların SELECT … ENDSELECT arasında kullanılamayacağını belirtin. Alan belirtmek, performansı arttıracaktır. Alan Belirleme Öğrenci, KNA1 tablosundaki kod ve isimleri listeleyen bir program yazsın. Sorgu içerisinde seçmek istediği alanları belirtsin.
  • 7. Sıralama ORDER komutu yardımıyla dönen verilerin nasıl sıralanabileceğini anlatın. DESCENDING yardımıyla ters sıralanabileceğini belirtin. Siralama Ters Siralama Ters ve Duz Öğrenci, LFA1 tablosundan bütün satıcıların kodlarını ve isimlerini listeleyen bir program yazsın. Liste; satıcı koduna göre artan, satıcı adına göre azalan sırada olsun. Veriler Temel veri tanımlama Verilerin kullanım amacından bahsedin. DATA, TYPE ve LIKE komutlarını tanıtın. ABAP içerisindeki temel veri tiplerini tanıtın (C, I, N, P). Global ve yerel değişkenler arasındaki farkı anlatın. GFD_ LFD_ gibi isimlendirme standartlarından bahsedin. Programların metin havuzlarından da bahsedin ve TEXT-001 şeklinde metin kullanmanın avantajlarını anlatın (merkezilik, tercüme). Veri Tanimlama SY nesnesinden kısaca bahsedin. Program; belli bir malzemenin adını ve ölçü birimini MARA’dan, önceki dönem kapanış stok miktarını ve değerini MBEW’den, ilgili şirket kodunun para birimini T001’den çekip birer değişkene atasın ve ekrana döksün. Öğrencinin seçim ekranı kullanmasına şu noktada gerek yok, malzeme kodu ve şirketi kodunu Hard Coded girebilir. Internal Table kullanımı Internal Table kavramını anlatın – hafızada duran tablo diye bahsedebilirsiniz. Internal Table tanımlama yollarını anlatın. Header Line kavramından bahsedin. APPEND ve LOOP komutlarını tanıtın. MODIFY ve DELETE komutlarına değinin. “REFERENCE INTO” kullanımını gösterebilirsiniz. Internal Table Internal Table içerisinde HEADER LINE kullanmayı gösterin. Bunun yanı sıra, Header Line’sız bir tabloda LIKE LINE OF komutu yardımıyla nasıl Loop yapılabileceğini anlatın. “REFERENCE INTO” kullanımını gösterebilirsiniz. CLEAR ve REFRESH komutlarına değinin. Öğrenci, T001W tablosundaki üretim yeri kodlarını ve isimlerini bir Internal Table’a doldurup, sonra bu değerleri Loop yardımıyla ekrana yazdırsın. Internal Table’a aktarım işini SELECT … ENDSELECT arasında yapsın (SELECT INTO kullanmasın). Program, TCURC tablosundan bütün para birimi kodlarını ve metinlerini toplayıp bir Internal Table’a doldursun. Doldurduktan sonra, “A” veya “T” diye başlamayan bütün kodları Internal Table’dan silsin. Bu işlemden sonra, “A” diye başlayan bütün kodların metnini “aaaaa” diye değiştirsin. Son olarak, Internal Table içeriğini ekrana döksün.
  • 8. Sorgu – Internal Table ilişkisi Bir sorgudan dönen değerlerin Internal Table’a nasıl aktarılabileceğini anlatın. APPEND ve COLLECT komutlarının farkından bahsedin. Sorgu - ITAB Collect Öğrenci, KNA1 tablosundaki bütün müşterilerin kod ve isimleri bir Internal Table’a toplayıp ekrana dökecek bir program yazsın. Bu noktada SELECT INTO kullansın. Öğrenci, MBEW tablosundaki SALK3 değerlerini BWKEY bazında kümüle etsin ve değerleri ekrana döksün. Sabitler Constant kavramı üzerinde durun. C_ standardını öne çıkarın. Hard-Coded değerlerin mutlaka Constant olarak girilmesi gerektiğini anlatın. Aralıklar Range kavramı üzerinde durun. SIGN alanının I / E değerlerini, OPTION alanının EQ, CP, LE, LT, GE, GT değerlerini tanıtın. LOW & HIGH alanlarını tanıtın. Öğrenci; belli bir şirket kodu & yıla ait olup numarası 1 ve 2 ile başlayan bütün muhasebe belge numaralarını BKPF’den çeksin ve ekrana döksün. Şirket kodu Constant olmalı, yıl SY-DATUM’dan alınmalı, muhasebe belge numaraları ise bir Range içerisinde belirtilmelidir. İpucu olarak, belge numaralarının başına 0 koyması gerekebileceğini hatırlatabilirsiniz. Öğrenci, içinde bulunulan yılın ilk iki ayında kaydedilmiş bütün malzeme belgelerini listelesin. Şirket kodu Constant olmalı, yıl SY-DATUM’dan alınmalı, malzeme belgelerinin kayıt tarihi ise bir Range içerisinde belirtilmelidir. Seçim Ekranı Seçim ekranı kullanma amacının kullanıcıdan bilgi alarak programları daha parametrik hale getirmek olduğunu anlatın. Örnek bir seçim ekranı gösterin. Tekli ve aralık şeklinde iki tür alan olduğunu gösterin. Seçim ekranı parametrelerine ait metinlerin nerede belirlendiğini gösterin. Parameters PARAMETERS komutunu anlatın. P_ standardını gösterin. OBLIGATORY ve DEFAULT takılarından bahsedin. Parameters Select Options SELECT-OPTIONS komutunu anlatın. Range ile olan benzerliğine dikkat çekin. S_ standardını gösterin. OBLIGATORY ve DEFAULT takılarının pek tercih edilmeyeceğini söyleyin. Select Options
  • 9. Diğer INITIALIZATION olayından bahsedin. BEGIN OF BLOCK WITH FRAME TITLE komutu ile kutu çizmeyi gösterin. Öğrenci, seçim ekranından girilen malzeme aralığına ait VVSAL tutarını MBEW tablosundan okuyup, malzeme bazıda kümüle edip ekrana dökecek bir program yazsın. İpucu olarak sorgudaki IN komutunu verebilirsiniz. Cevap Öğrenci, seçim ekranından girilen malzeme aralığına ait VVSAL tutarını MBEW tablosundan okuyup, malzeme bazıda kümüle edip ekrana dökecek bir program yazsın. Programda, VVSAL değeri 0 olan malzemeler devre dışı bırakılsın. Cevap Gelişmiş Sorgular İç İçe Sorgu Kullanma İç içe birden fazla SELECT komutunun kullanılabileceğinden bahsedin. Performans açısından dezavantaj, hata yakalama açısından avantaj getirebileceğini belirtin. Ic Ice Sorgu Öğrenci, MBEW tablosundaki LBKUM değerlerini MATNR ve MEINS bazında kümüle etsin ve değerleri ekrana döksün. MEINS değeri, MARA tablosundan okunmalıdır. Bu ödev için, SELECT SINGLE ve iç içe sorgu ipuçlarını verebilirsiniz. Inner Join Inner Join ile birden fazla tablodan aynı anda nasıl veri çekilebileceğini gösterin. Örnek olarak MKPF & MSEG tablolarından birlikte veri çekin. BSEG gibi Pooled Table’larda Inner Join kullanılamayacağını anlatın. Çok büyük bir veri söz konusuysa Join kullanmanın hafıza hatasına yol açabileceğini söyleyin. Debug etmenin daha zor olduğunu söyleyin. Outer Join Inner Join ile aynı şekilde kullanıldığını, ama 2. tabloda karşılığı olmayan verilerin de geleceğini anlatın. Öğrenci, sistemdeki malzemelerin kodunu ve metnini MARA & MAKT tablolarından Inner Join yardımıyla çekip listeleyeceği bir program yazsın. Malzeme numara aralığı ve metinlere ait dil, seçim ekranında parametre olsun.
  • 10. Temel ABAP Komutları Form / Perform Form kullanmanın avantajı, programın içindeki ortak algoritmaları merkezi bir noktaya toplayıp tekrarı önlemektir. FORM ve PERFORM komutlarından bahsedin. Form’ların alabileceği parametrelerden bahsedin. TABLES … USING … CHANGING takılarından ve sırasının önemli olduğundan bahsedin. SE38 ekranının Pattern düğmesini kullanarak Form’lara ait Perform’ların koda otomatik olarak ve doğru formatta eklenebileceğini açıklayın. Form’ların, programların akış mantığını daha anlaşılır hale getirmek için de kullanıldığını söyleyin. Form Parametrik Form If & Case If komutunun kullanım amacını ve şeklini anlatın. Koşulların parantezler yardımıyla gruplanabileceğine değinin ve uzun koşullara sahip birkaç alıştırma yapın. Case komutunun getirdiği avantajları gösterin. If Program, seçim ekranında bir tarih sorsun. Girilen tarihe göre, kullanıcının burcunu bulup söylesin. Call Function Fonksiyon çağırmanın amacını anlatın. IMPORTING / EXPORTING / TABLES içerisinde aktarılacak parametrelerin tiplerinin fonksiyonda tanımlanan tiple birebir aynı olması gerektiğini belirtin. Pattern düğmesinin kullanılabileceğini gösterin. SE37 ekranında * ve F4 yardımıyla fonksiyon bulmayı öğretin. Call Function Program; MONTH_NAMES_GET fonksiyonunun yardımıyla, seçim ekranında verilen dilde bütün ayları listelesin. İleri ABAP Komutları Abs Sayının mutlak değerini alır. Concatenate Birden fazla metin tek bir metinde birleştirilir. SEPARATED BY takısına değinin. Öğrenci, TEXT-001 TEXT-002 gibi metin öğeleriyle bir cümle oluşturacağı bir program yazsın. Program; kullanıcının Login olduğu dile göre Türkçe ve İngilizce destekliyor olsun.
  • 11. Split Bir metni belli bir ayraç kullanarak iki parçaya ayırır. Öğrenci yeni bir program yazsın. Kullanıcı, seçim ekranından bir FI belge numarası (+şirket kodu +yıl) girsin. Program, bu belgeye ait WRBTR tutarlarının tamsayı ve ondalık kısımlarını iki ayrı alan haline getirerek, kalem bazında ekrana döksün. Pack Sayının başındaki 0’ları temizler. Unpack Sayının başına 0 ekler Strlen Metin uzunluğunu hesaplar. Bu program, seçim ekranında aralık olarak girilen her bir malzemenin numarasını ve (kullanıcının diline bağlı olarak) metnini listelesin. 3. bir sütunda, malzeme metninin uzunluğu yazsın. ALV ALV Temelleri Basit bir ALV programı üzerinde ALV kullanımının temellerini anlatın. Gruplama, toplam, ara toplam, Excel Download gibi özellikleri gösterin. GRID ile LIST arasındaki farkı anlatın. Görüntü ekranında varyant kaydetmeyi öğretin. Buradaki amaç ALV programlamayı değil, ALV’yi tanıtmak olsun. Temel ALV ALV Kullanımı Buradaki amaç, ALV’nin program içinde nasıl kullanılacağını öğretmek olsun. Alan katalogu kavramından bahsedin ve REUSE_ALV_FIELDCATALOG_MERGE fonksiyonunu tanıtın. Bu fonksiyonu kullanabilmek için, Internal Table’ın BEGIN OF … END OF şeklinde tanımlanmış olması gerektiğini belirtin. ALV ALV Olayları ALV LIST’ın TOP_OF_LIST, END_OF_LIST ve USER_COMMAND olaylarından bahsedin. SALV içerisindeki STANDARD statüsünü programa kopyalayarak kendi düğmelerini eklemeyi öğretin. Program, seçim ekranından girilen şirket kodu & mali yıl & kayıt tarihi aralığı & belge numarası aralığına uyan bütün malzeme belgelerini çeksin ve kalemlerini ALV LIST formatında ekrana döksün. Raporun başında (TOP_OF_LIST) şirket kodu ve adı, sonunda ise (END_OF_LIST) geri dönen kayıt sayısı yazsın. SAVE düğmesine tıklandığında, kullanıcıya POPUP ile “HELLO” metni gösterilsin. İpucu olarak, POPUP_TO_DISPLAY_TEXT fonksiyonunu kullanmasını söyleyebilirsiniz.
  • 12. Diğer Geliştirmeler Tablo Tablolar SE11 ekranını ve tablo yaratmanın temellerini anlatın. Birlikte bir tablo yaratın ve INSERT & UPDATE & DELETE komutlarıyla bu tablodaki verileri modifiye edecek örnekler yapın. Key alanlarının anlamını ve öneminin üzerinde durun. Field  Data Element  Domain zincirinin iyice anlaşıldığından emin olun. Tabloda MANDT alanının mutlaka bulunması gerektiğini söyleyin. Bir tablo içerisine bir diğer tablo / yapının Include edilebileceğini gösterin. Tablo bakım ekranı yaratmayı öğretin. Öğrenci; içinde ID, ad, soyad ve doğum tarihi bulunan bir tablo yaratsın. Bu tabloya bir bakım ekranı yaratsın ve bakım ekranına bir işlem kodu bağlasın. Tabloya işlem kodu aracılığıyla birkaç kayıt girsin. Yapılar SE11 ekranından yapı (Structure) yaratmayı öğretin. Yarattığınız yapıyı referans alan bir Internal Table içeren bir örnek yapın. Öğrenci, MARA tablosundaki bazı alanları içeren bir yapı yaratsın. Yazacağı programda, bu yapıya referans verilerek yaratılmış bir Internal Table olsun. Bu Internal Table’ı MARA’dan doldursun ve ALV kullanmadan ekrana döksün. Tablo Tipi SE11 ekranında tablo tipi (Table Type) Yaratmayı öğretin. Yarattığınız tablo tipini referans alan bir Internal Table içeren bir örnek yapın. Fonksiyon Fonksiyon yazma Fonksiyon yazmanın temellerini anlatın. Birlikte bir fonksiyon yazın. IMPORTING / EXPORTING parametrelerinin hepsi dolu olsun. TABLES parametresinin artık geçersiz olduğunu belirtin. RFC fonksiyonlarının dışarıdan Connector / Web Service üzerinden çağırılabildiğini ifade edin. Yazdığınız fonksiyonu bir program içinden çağırın. Öğrenci, gönderilen belge numarası & yıl & şirket koduna ait FI kalemlerini döndüren bir fonksiyon yazsın. Bu fonksiyonu; seçim ekranından girilen yıl & şirket & belge numarası için çağırıp kalemleri ALV formatında ekrana döken bir program yazsın. Hata yakalama EXCEPTIONS bölümünü tanıtın. İçinde RAISE komutu geçen bir fonksiyon yazıp örnek bir programdan çağırın. Fonksiyonun döndürdüğü hataları SY-SUBRC ile yakalayabileceğinizi gösterin. EXCEPTIONS bölümünü programa koymazsanız herhangi bir hatada Short Dump alacağını gösterin. Öğrenci, gönderilen malzeme belge numarası & yıla ait malzeme kalemlerini döndüren bir fonksiyon yazsın. Bu fonksiyonu; seçim ekranından girilen yıl & malzeme belgesi için çağırıp kalemleri ALV formatında ekrana döken bir program yazsın. Eğer belge veritabanında bulunamazsa, fonksiyon bir hata üretiyor olsun. Program bu hatayı SY-SUBRC’ye bakarak yakalasın ve ALV’nin END_OF_LIST’inde göstersin.
  • 13. Sınıf Sınıf yazma Sınıf yazmanın temellerini anlatın. Birlikte SE24 işlem kodunda bir sınıf yazın. Sınıf içerisinde Method / değişken tanımlayın ve Public / Private kavramlarından bahsedin. Method içerisindeki parametre türlerini gösterin. Sınıfı program içerisinde kullanmayı, fonksiyonel formatı öne çıkararak gösterin. Öğrenci, gönderilen belge numarası & yıl & şirket koduna ait FI kalemlerini döndüren bir Method yazsın. Bu Method’u; seçim ekranından girilen yıl & şirket & belge numarası için çağırıp kalemleri ALV formatında ekrana döken bir program yazsın. Hata yakalama EXCEPTION ve EXCEPTION CLASS kavramlarından bahsedin. EXCEPTION kullanıldığı durumda hatanın fonksiyon gibi yakalandığını, EXCEPTION CLASS kullanıldığı durumda ise TRY...CATCH kullanıldığını anlatın. Öğrenci, gönderilen malzeme belge numarası & yıla ait malzeme kalemlerini döndüren bir Method yazsın. Bu fonksiyonu; seçim ekranından girilen yıl & malzeme belgesi için çağırıp kalemleri ALV formatında ekrana döken bir program yazsın. Eğer belge veritabanında bulunamazsa, Method bir hata üretiyor olsun (Exception Class). Program bu hatayı TRY...CATCH ile yakalasın ve ALV’nin END_OF_LIST’inde göstersin. Inheritence Super Class ve Final Class kavramlarından bahsedin. Bir sınıftan bir başka sınıf türetilebileceğini, Parent sınıftaki değişken ve Method’ların Child sınıf tarafından devralındığını, Method’ların Redefine edilebildiğini gösterin. Super-> takısı ile Parent’a ait kodların çalıştırılabildiğini gösterin. Child sınıfın Parent sınıfa ?= ile Casting yapılabildiğini gösterin. Öğrenci, BANKA adında bir sınıf oluştursun. Bu sınıf, ödemeleri okuyan ve Download eden Method’lar içersin. Bir de dosya formatını oluşturan Method’u olsun. Garanti, Akbank ve Yapı Kredi için 3 alt sınıf türetin ve format Method’unu ezip söz konusu bankanın formatında dosya oluşturun. SE38’de yazacağı program, seçim ekranındaki bankaya göre doğru sınıfı yaratıp BANKA referanslı ana sınıfa Cast etsin ve onun üzerinden verileri okutup, formatlatıp Download etsin. Diğer Kavramlar Interface ve Abstract Class kavramlarından bahsedin. Bir sınıfın sadece bir Parent sınıfı olabildiğini, ama birden fazla Interface uygulanabildiğini gösterin. Toplu Girdi Toplu Girdi Temelleri Toplu girdinin ekran simülasyonu anlamına geldiğini anlatın. SM35’de bir toplu girdi kaydı yapın ve bunun arkasında yapılan kayıtları inceleyin. Ekran, alan ve OK_CODE arasındaki farkı anlatın. OK_CODE’un, hemen öncesindeki ekrana ait ve bir sonraki ekrana kadar geçerli olduğunu vurgulayın. Call Transaction Basit bir Batch Input kaydı yapın ve bu kayda uygun bir program yazın. Bu program, Batch Input’u Call Transaction komutuyla yürütüyor olsun. A, N ve E modları arasındaki farkı anlatın. OPTIONS FROM takısını tanıtın ve Dynpro Default Size’ın önemini anlatın. MESSAGES INTO takısını tanıtın ve Batch’den dönecek mesajları yakalayın. MESSAGES INTO takısı ile,
  • 14. kaydedilen bir belgenin numarasını alma veya ortaya çıkan hatayı yakalama gibi işlerin yapılabileceğini anlatın. SM35 oturumu yaratma Basit bir Batch Input kaydı yapın ve bu kayda uygun bir program yazın. Bu program, Batch Input için SM35’den yürütülecek bir oturum yaratıyor olsun. Batch Input’u yürütün ve yarısında kesip tekrar başlatın. Tamamlanamayan adımların tekrar işlenebildiğini gösterin. Öğrenci, ekrandan belge numarası & mali yıl & şirket kodu bilgisi verilen bir FI belgesini FB08’de toplu girdi ile ters çeviren bir program yazsın. Programın Call Transaction / SM35 ile çalışması seçim ekranından belirlenebiliyor olsun. Call Transaction yapılırsa, geri dönen mesajlar WRITE ile ekrana dökülsün. SM35 yapılırsa, yaratılan toplu girdi oturumunun adı MESSAGE komutuyla görev çubuğunda görüntülensin. User Exit User Exit kavramından ve ne işe yaradığından bahsedin. CMOD & SMOD ekranlarını gösterin ve (varsa) sistem üzerinde aktif olan birkaç User Exit gösterin. User Exit’lerin genelde fonksiyonlar içerisinde bulunduğunu ve Import & Export parametrelerine bakılarak işe yarayıp yaramadığının anlaşılacağını belirtin. BADI BADI kavramından ve ne işe yaradığından bahsedin. SE18 / SE19 işlem kodlarını gösterin ve (varsa) sistem üzerinde aktif olan birkaç BADI gösterin. BADI oluşturma mantığını anlatın ve birden fazla Class türetildiği durumda hepsinin birden çalışacağını söyleyin. Numara Aralığı SNRO işlem kodunu gösterin ve numara aralığı yaratmayı öğretin. Birlikte, bu aralıktan NUMBER_GET_NEXT fonksiyonu yardımıyla sayı çekip ekran gösteren bir program geliştirin. Çekilen sayının her seferinde bir arttığına dikkat çekin. Öğrenci, Z’li bir tablo ve numara aralığı yaratsın. Tabloda MANDT, ID, ERNAM, ERDAT, UZEIT alanları olsun. Yazacağı program her çalıştırıldığında; bu Z’li tabloya numara aralığından alınmış yeni bir sayı ve çalıştırılma bilgileri kaydedilsin.
  • 15. Debug Bu bölümün amacı; öğrenciye Debug ile ilgili temel becerileri kazandırmaktır. Öğrencinin, en azından rapor ve fonksiyonları Debug edebilir hale gelmesi gerekmektedir. Debug’a Giriş Debug Başlatılması /H komutuyla programın nasıl Debug edilebileceğini gösterin. Fonksiyonların Debug modunda doğrudan nasıl test edilebileceğini gösterin. Popup ekranlarının nasıl Debug edilebileceğini açıklayın. popup.txt Değerlerin Görüntülenmesi Değerlerin ekranda nasıl görüntülendiğini gösterin. Alan, tablo ve Header Line kavramları üzerinde durun. Navigasyon Debug ekranının üzerinde yer alan Watchpoints, Calls gibi bölümleri tanıtın. Debug Teknikleri BreakPoint Yönetimi Break-point ve break <USERNAME> komutlarını gösterin. Programlara kod yazmadan Break Point eklemenin yolunu gösterin. Kodu Debug ederken yeni Break Point koymayı, eklenen Break Point’leri kalıcı kılmayı gösterin. Deactive All / Delete All gibi komutları gösterin. Değer Değiştirme Akış esnasında değişken değerleriyle nasıl oynanabileceğini gösterin. Watchpoint Değişkenlere Watchpoint koymanın mantığını anlatın. Break On Command Belli bir komut çalıştırıldığında veya fonksiyon çağırıldığında programın nasıl durdurulabileceğini gösterin. Bunun özellikle hata mesajlarında nasıl işe yaradığını anlatın.
  • 16. Layout Geliştirme Sapscript SE71 – Sapscript kavramı Öğrenciye Sapscript’in ne olduğunu anlatın. SE71 ekranına girip birkaç Sapscript’i birlikte inceleyin. Page, Window, Page Window kavramlarını tanıtın. Paragraph, Font gibi bölümlerin üzerinden geçin. Ölçülendirme mantığını anlatın. Sapscript geliştirme Birlikte basit bir Sapscript yaratın. Bir Header, bir de Main bölümü olsun. Header içinde /E diye tanımlanmış iki bölüm, Main bölümünde ise bir bölüm olsun. Bu bölümlerde yer alan değişkenleri dolduracak bir program yazın. OPEN_FORM, WRITE_FORM ve CLOSE_FORM fonksiyonlarını tanıtın. Temel Sapscript kavramları Sapscript içinde değişik paragrafların nasıl uygulanacağını gösterin. If ve NEW-PAGE komutlarını anlatın ve birlikte uygulayın. ,, ile TAB yapılabileceğini, &GV_TEST& şeklinde değişken yazılabileceğini anlatın. NEXT PAGE kavramını ve nasıl çalıştığını anlatın. Aynı pencereleri farklı sayfalar üzerine koyarak nasıl bir etki yaratacağını gösterin. Öğrenci, seçim ekranından belge & yıl & şirket kodu verilen bir muhasebe belgesinin bazı başlık bilgilerini tepede ve kalem bilgilerini aşağıda görüntüleyen bir Layout & program hazırlasın. Gelişmiş kavramlar Sapscript içinde adres yazdırmayı öğretin. IF ve PERFORM komutlarını kullanmayı öğretin. Parasal alanların ölçeklendirerek nasıl yazdırılabileceğini gösterin. Sapscript Sembolleri Sapscript Kontrol Komutları Öğrenci, seçim ekranından numarası verilen bir müşterinin adresini Sapscript ile yazdıran bir program yazsın. SmartForms SMARTFORMS – SmartForm kavramı Öğrenciye Smarform’un ne olduğunu anlatın. Sapscript ile aynı amaca hizmet ettiğini, ama daha pratik bir ekran sunduğunu belirtin. Yeni geliştirmelerde Smartform’u tercih etmesi gerektiğini belirtin. SMARTFORMS ekranına girip birkaç formu birlikte inceleyin. Style kavramını ve SmartForm ile ilişkisini anlatın. Smartform’ların giriş – çıkış parametrelerini ve bunun fonksiyonlar ile olan benzerliğini gösterin. SmartForm geliştirme Smartform’a tablo göndermenin yolunun Table Type / Structure yaratmaktan geçtiğini anlatın. Birlikte basit bir SmartForm yaratın. Bir Header, bir de Main bölümü olsun. Header içinde IMPORTING ile gönderilen bir metin, Main içinde ise TABLES ile gönderilen bir tablo gösterilsin – bu çerçevede, Text ve Table öğelerinden bahsedin. Bu formu çağıracak bir program yazın.
  • 17. SSF_FUNCTION_MODULE_NAME fonksiyonundan bahsedin ve programdan Smartform’u çağırın. Temel SmartForm kavramları Graphic, Text, Address, Program Lines kavramlarını anlatın. Loop öğesini gösterin ve Table ile olan benzerliğine dikkat çekin. Bütün bu kavramları içeren bir örneği birlikte yaratın. Gelişmiş kavramlar İkinci bir sayfa içeren bir SmartForm yaratın. Bir sayfada yapılan pencere modifikasyonunun diğer sayfadaki pencereyi de etkilediğini gösterin. Öğrenci, seçim ekranından belge & yıl & şirket kodu verilen bir muhasebe belgesinin bazı başlık bilgilerini tepede ve kalem bilgilerini aşağıda görüntüleyen bir Layout & program hazırlasın. Belge başlığında, (varsa) belgenin ait olduğu satıcı veya müşterinin adres bilgisi de olsun. Eğer satıcı varsa tepede SATICI FATURASI, müşteri varsa MÜŞTERİ FATURASI yazsın.
  • 18. Diyalog Geliştirme Bu konunun amacı, programcıya diyalog programlama ile ilgili temel beceriyi kazandırmaktır. Temel Kavramlar Program oluşturma Birlikte Module Pool tipinde bir program yaratın. Ekrana basit birkaç nesne ekleyin, ekrana bir işlem kodu bağlayın ve programı yürütün. Programlara SAPGUI veya (ITS üzerinden) Web tarayıcısı / mobil cihazlardan erişilebildiğini belirtin ve BSP / Web Dynpro alternatiflerinden bahsedin. PBO / PAI PBO / PAI mantığından bahsedin. Örnek bir program üzerinde hata ayıklama ekranına girerek PBO / PAI’nin ne zaman ve nasıl aktive olduğunu gösterin. Araç çubuğu üzerine ekleyeceğiniz 1- 2 basit düğme ile USER-COMAND’ı, ve BACK & EXIT düğmeleri ile EXIT-COMMAND’I PAI içerisinde kullanmayı öğretin. Öğrenci; iki metin kutusu ve bir KOPYALA düğmesi içeren bir diyalog yaratsın. Metin kutusuna bir yazı yazıp KOPYALA düğmesine tıklandığında; metin, diğer kutucuğa kopyalansın. Rapor ekranları Raporlar içinde de ekran oluşturup çağırabileceğinizden bahsedin. Executable bir program oluşturup, program içerisinde bir ekran yaratın. Program içinde CALL SCREEN komutunu kullanarak yarattığınız ekranı çağırın. PBO / PAI mantığının değişmediğini gösterin. Program içerisinde bir de Popup ekranı yaratın. CALL SCREEN … STARTING AT … ENDING AT … komutuyla Popup ekran çağırın. Öğrenci, seçim ekranında girilen metni aynen görüntüleyen bir diyalog ekranı oluştursun. Ekran modifikasyonu PBO / PAI içindeki komutlar yardımıyla ekrandaki öğeleri görünür / görünmez veya erişilebilir / erişilemez hale getirebildiğinizi gösterin. Öğrenci, Belge Numarası & Mali Yıl & Şirket Kodu bilgilerini içerecek üç kutucuk ve “Belgeye Git” yazısına sahip bir düğme içeren bir ekran yaratsın. Kutucuklar doldurulup Enter’a basıldığında; program, böyle bir belge olup olmadığını kontrol etsin. Belge yoksa, “Belgeye Git” düğmesi tıklanamaz hale gelsin. Belge varsa, düğme tıklanabilir hale gelsin. Gelişmiş Nesneler Subscreen Subscreen kavramını anlatın. Subscreen’lerin kendi özerk PBO / PAI’leri olduğundan bahsedin. Subscreen kullanma amacının, farklı ekranlarda ortak olarak kullanılacak öğe gruplarını merkezi hale getirmek olduğunu söyleyin. Yeni bir Module Pool programı içinde bir Screen, bir de Screen içinde Subscreen yaratın, her iki ekranda da çeşitli öğeler olsun. Araç çubuğuna ekleyeceğiniz bir düğme yardımıyla Debug’a girin ve PBO / PAI’lerin hangi sırayla & nasıl çalıştığını birlikte inceleyin.
  • 19. Table Control Table Control’u gösterin ve amacının kullanıcıya kalem mantığında veri girişi yaptırmak olduğunu anlatın. Salt veri gösterme amacıyla ALV’nin de diyalog içine gömülebileceğini (sadece) söyleyin. Birlikte Table Control içeren bir örnek yapın. Öğrenci, mali yıl & şirket kodu girilebilecek iki kutucuk ve iki adet Table Control içeren bir ekran yaratsın. Mali yıl & şirket kodu girilip düğmeye tıklandığında, o yıl ve şirket koduna ait bütün muhasebe belgeleri soldaki tablo kontrolünde listelensin. Soldaki tabloda bir(kaç) kayıt seçilip bir diğer düğmeye tıklandığında, seçilen belgelere ait kalemler sağdaki tabloda listelensin. Tabstrip Tabstrip kontrolünü gösterin. Her bir TAB içerisinde ayrı bir Subscreen bulunması gerektiğini anlatın. Birlikte, içinde farklı öğeler bulunan bir Tabstrip barındıran bir örnek yaratın. Öğrenci; malzeme numarası girilebilecek bir kutu ve üç Subscreen içeren bir Tabstrip yaratsın. Kutuya bir malzeme numarası girilip düğmeye tıklandığında; malzeme metni farklı Subscreen’ler içerisinde Türkçe, İngilizce ve Almanca dilinde görüntülensin.
  • 20. OSS Not Arama OSS’e nasıl girileceğini gösterin. Not aramayı öğretin. Bulunan nottaki sistem / Patch seviyesi ile söz konusu sistemin nasıl karşılaştırılacağını gösterin. OSS Uygulama OSS uygulamanın 2 yönetmini gösterin (doğrudan uygulama / SNOTE). Doğrudan yapılan müdahelelerde Assistant kullanmanın önemine değinin. SNOTE uygulamasında notun tamamının otomatik olarak uygulanamayabileceğinin üzerinde durun. SNOTE Kullanım Kılavuzu
  • 21. Web Geliştirme Bu konunun amacı, programcıya Web tabanlı programlama ile ilgili temel beceriyi kazandırmaktır. Karşılaştırma ITS, BSP ve Web Dynpro alternatiflerinden bahsedin. BSP’nin eski (ASP) ve DynPro’nun yeni (ASP.NET) olduğundan bahsedin. BSP’de daha fazla kodlamaya karşılık daha az kod ve daha esnek formatların mümkün olduğunu, Web Dynpro’da ise daha az kodlama olmasına karşılık standart kontrolleri kullanmak gerektiğini anlatın. Alternatif Teknolojiler BSP BSP Tag’lerini gösterin. ABAP ve BSP’nin iç içe kullanıldığını gösterin. Ekranlar arası veri transferi için request->get_form_field kullanımını gösterin ve Request nesnesinden bahsedin. Öğrenci; ilk ekranda sorulan şirket kodunun detaylarını ikinci ekranda listeleyen örnek bir uygulama geliştirsin. Web Dynpro Context, Window, View kavramlarından bahsedin. Flow ve Grid Layout alternatiflerinden bahsedin. Sayfa üzerindeki (WDOINIT gibi) kritik Method’ları gösterin. TextBox, Button ve Table kontrollerini, arkalarına değişken bağlama mantığıyla birlikte anlatın. Group içerisinde Parameter ve Select Option kullanımını gösterin. Fonksiyon çağırmanın kolay yolunu gösterin. User Component kavramına değinin. Öğrenci; bir metin kutusu ve bir Buton barındıran bir ekran yaratsın. Butona tıklandıkça, metin kutusundaki sayı artsın.
  • 22. Bitirme Projeleri Fihrist projesi. Bu projede; ad, soyad, telefon numarası ve doğum tarihi girilebilecek bir fihrist sistemi geliştirilecektir. Verilerin girişi, güncellenmesi ve silinmesi diyalog üzerinde yapılacaktır. Her bir kayda ait tekrarsız bir ID alanı bulunmalıdır (Number Range ile çözülebilir). Fihrist tablosundaki kriterlere göre listeleme yapılabilen bir de ALV destekli rapor geliştirilecektir. Sayısal Loto projesi. Bu projede; tarih bazında Sayısal Loto sonuçlarının girilebileceği bir tablo yaratılacak ve tablo bakımı, kullanıcı tarafından SM30 üzerinden yapılabilecektir. Tarih aralığına göre çekiliş sonuçlarını listeleyen bir ALV raporunun yanı sıra, bir TXT dosyasından yüklenecek loto tahminlerinin her bir tarihte kaç tutturmuş olduğunu listeleyen ikinci bir rapor daha yazılacaktır. İhracat ek verileri projesi. Satış belgesi bazında (VBAK) “İhracat Gümrük Numarası”, “Taşıt Numarası” ve “İhracat Yetkilisi” bilgilerinin saklanacağı bir Z’li tablo yaratın. Bu alanların metinleri (gümrük adı, taşıt adı, yetkili adı); 3 farklı tabloda ana veri şeklinde saklanıyor olmalı. Ana veri tablolarının bakımı, SM30 ekranında yapılabiliyor olmalıdır. Belge bazındaki ihracat verileri, bir diyalog ekranı üzerinde Ekle / Güncelle / Sil mantığıyla modifiye edilebiliyor olmalıdır. Bir başka raporda; kullanıcı satış belgesi numarası girerek bazı VBAP kalem bilgilerini listeleyen bir Layout yazdırabiliyor olmalıdır. Bu Layout’un başlık kısmında, Z’li tabloda bulunan ihracat verileri ve metinleri de bulunmalıdır. Toplu ters kayıt programı. Bu program, seçim ekranından girilen parametreler doğrultusunda (ters kaydı bulunmayan) muhasebe belgelerini okuyacak ve ALV formatında ekrana dökecektir. Ters kaydı zaten olan belge numaraları, END_OF_LIST’de bilgi amaçlı gösterilecektir. Kullanıcı, dilediği belgeleri tıklayıp SAVE düğmesine tıkladığında, bu belgeler toplu girdi yardımıyla FB08’de ters çevrilecektir. Herhangi bir belgeyi seçip Görüntüle düğmesine tıkladığında ise; program, belgeyi FB03’de görüntülemelidir.