Sistem Değişkenleri (sap-abap)

 

♦ Sistem Değişkenleri :


Her ABAP / 4 programı içinde 176 sistem değişkeni mevcuttur. Bunları tanımlamak zorunda değilsiniz; Bunlar otomatik olarak tanımlanır ve her zaman bulunur.

Sistem değişkenleri listesini görüntülemek için DDIC yapısı sistürünü görüntüleyin. Sözlük: Başlangıç Ekranı’nı kullanarak veya programınızdaki herhangi bir sistem değişkeninin adını çift tıklatarak görüntüleyebilirsiniz. (Sams Teach Yourself ABAP/4 in 21 Days)

51

Sık Kullanılan Sistem Değişkenleri:

S-datum
Geçerli tarih

Sy-uzeit
Şimdiki zaman

Sy-uname
Mevcut kullanıcı kimliği

Sy-subrc
Son dönüş kodu

Sy-mandt
Oturum açma istemcisi

Sy-pagno
Geçerli çıktı sayfası numarası

Sy-colno
Geçerli çıktı sütun numarası

Sy-linno
Geçerli çıktı listesi satır numarası

Sy-vline
Dikey çizgi

Sy-uline
Yatay çizgi

Sy-repid
Geçerli rapor adı

Sy-cprog
Ana programın adı

Sy-tcode
Geçerli işlem kodu

Sy-dbcnt
Bir seçim içinde geçerli yineleme sayacını içerir. Endselect sonra, where yan tümcesi ile eşleşen satır sayısını içerir.

Type Group (sap-abap)

 

♦ Type Group :

/nse11  işlem kodu ile Type Group oluşturma sayfasına geliyoruz.
‘zgrp’  adında bir type group oluşturuyoruz.

46

Constans ile iki sabit değişken tanımlıyoruz. Sabit değişkenlerin isimleri mutlaka type-pool ismimizden türetilmeli. Yani (type-pool ismi)+( _)+( sabit değişken ismi)
Tanımlamaları yaptıktan sonra kayıt edip, aktif olduğuna emin olmalıyız.

47

TYPE-POOL ZGRP.
 
 CONSTANTSzgrp_color type length value 'yesil',
            zgrp_sonuc type length value 'dogru'.

Type Group uygulamamızı deneyeceğimiz ‘zgrpprg’ isimli programı oluşturuyoruz.

48

Program içerisinde type-pools: ile grubumuzu dahil edip sonuç adında yeni bir değişken tanımlıyoruz. Grup içindeki zgrp_color sabit değişkeni ile eşleşiyorsa ekrana zgrp_sonuc ile tanımlı değeri yazdırıyoruz.

49

REPORT  ZGRPPRG.
 TYPE-POOLSZGRP.
 
 DATAsonuc TYPE LENGTH 5.
       sonuc 'yesil'.
 IF sonuc zgrp_color.
   WRITE 'Sonuç = 'zgrp_sonuc.
 ENDIF.

50

kaynak: https://blogs.sap.com/2012/10/18/creating-type-group-and-using-it-in-abap-program/    (Ashish Trivedi)

Types Kullanımı (sap-abap)

♦  Types Kullanımı:
•Veri tipinin kullanıcı tarafından belirlenmesi

1 report ztx0811.
2 types char2(2) type c.
3 data: v1 type char2 value 'AB',
4       v2 type char2 value 'CD'.
5
6 write: v1, v2.

Programın çıktısı:
AB CD

•’Types’ kullanmak, kodunuzu daha açık ve daha anlaşılır yapacaktır.

1  report ztx0812.
2  types: dollars(16) type p decimals 2,
3         lira(16)    type p decimals 0.     "italian lira have no 
        decimals
4
5  data: begin of american_sums,
6             petty_cash type dollars,
7             pay_outs   type dollars,
8             lump_sums  type dollars,
9             end of american_sums,
10        begin of italian_sums,
11            petty_cash  type lira,
12            pay_outs    type lira,
13            lump_sums   type lira,
14            end of italian_sums.
15
16 american_sums-pay_outs = '9500.03'.       "need quotes when literal 
     contains a decimal
17 italian_sums-lump_sums = 5141.
18
19 write: / american_sums-pay_outs,
20        / italian_sums-lump_sums.

Programın çıktısı:
9,500.00
5,141

•Structured Types kullanma, artıklığı azaltır ve bakımı daha kolay yapılır.

1 report ztx0813.
 2 types: begin of address,
 3            street(25),
 4            city(20),
 5            region(7),
 6            country(15),
 7            postal_code(9),
 8            end of address.
 9
10  data: customer_addr type address,
11        vendor_addr   type address,
12        employee_addr type address,
13        shipto_addr   type address.
14
15 customer_addr-street  = '101 Memory Lane'.
16 employee_addr-country = 'Transylvania'.
17
18 write: / customer_addr-street,
19          employee_addr-country.

 

kaynak: Sams Teach Yourself ABAP/4  in 21 Days

Field String (sap-abap)

 

Field String örneği :

report ztx0807.
data: begin of fs1,
                       c1 value 'A',
                       c2 value 'B',
                       c3 value 'C',
                       end of fs1.

write: / fs1-c1, fs2-c2, fs1-c3,
            / fs1.

fs1 = 'XYZ'.

write: / fs1-c1, fs2-c2, fs1-c3,
            / fs1.

Programın ekran çıktısı:
A B C
ABC
X Y Z
XYZ

 

İki Field String kulanımı:


report ztx0808.

data: begin of fs1,
                c1 value 'A',
                c2 value 'B',
                c3 value 'C',
            end of fs1,
fs2 like fs1.

fs2 = fs1.

write: / fs2-c1, fs2-c2, fs2-c3.

Ekran çıktısı:
A B C

Field String  tanımlarken Select kullanımı :
‘Tables’ deyimi iki şey yapar.
1- Field String tanımlarken kullanılır.
2- Veri tabanı tablosuna erişimi sağlar.

Fakat Tables ; Field String tanımlarken çok fazla alan harcadığı için tercih edilmez.

report ztx0810.
tables ztxlfa1.
select * from ztxlfa1 into z lfa1 order by lifnr.
         write / z lfa1-lifnr.
         endselect.

 

ztxlfa1 veritabanı tablosundan ztxlfa1 alan dizesine bir kayıt okunur.

 

Internal Tables (sap-abap)

♦ Internal Tables :

Constant : sabit  değerleri tanımlarken kullanılır.
constants c1 like cv value ‘xxx‘.

Like : Önceden tanımlanmış bir veriyi refarans alır. Yeni veri onun tip, uzunluk gibi özellikleri ile oluşturulur.

Value : Değer atama işlemi için kullanılır.

Abap programında alan dizelerini tanımlamak için genellikle
Data ve Tables ifadeleri kullanılır.

‘zogrenci’ adında bir tablo oluşturuyoruz.
3 alan belirledik = ogrencino, adi, soyadi

‘zogrenci’ tablosunu program içerisinde kullanacağız.Fakat ekleme,silme,listeleme gibi işlemler yapmayacağız. Sadece referans alıp yeni veriler oluşturacağız.

Ve bunları internal tables içinde tanımlayacağız.

report ornek3.
data begin of ogr.
 include structure zogrenci.
 data: extra_kayit(5) type c,
 end of ogr.

ogr-ogrencino = 12.
ogr-extra_kayit = 'geçti'.

write: / ogr-ogrencino,
 ogr-extra_kayit.

‘include’ yerine ‘like’ kullanılırsa;
Dahil edilen alanların isimleri bir ara bileşen önüne eklenir.

report ornek4.
data: begin of ogr,
           ogrenci like zogrenci,
           extra_kayit(5) type c,
           end of ogr.

ogr-ogrenci-ogrencino = 12.
ogr-extra_kayit = 'geçti'.

write: / ogr-ogrenci-ogrencino,
                ogr-extra_kayit.

 

Checkbox ve Radiobutton (sap-abap)

 

♦ Checkbox ve Radiobutton kullanımı :

40

•’zornek1′ adında yeni bir program oluşturduk. Burada textbox ‘c’ yani karakter tipinde ve ’15’ karakter uzunluğunda.
•tarih ;  otomatik tarihi getirdiği gibi açılır pencere ile tarihi seçme özelliği olan, programın kendi içinde tanımlı ‘sy-datum’ u referans aldı.
•checkbox, birden fazla seçeneği seçebilme özelliği olan kutucuk.
•radiobutton, sadece tek bir seçeneği seçme imkanı vermektedir.
•write içindeki her  ‘/’ karakteri bir alt satıra geçmek için kullanılmaktadır.

REPORT  ZORNEK1.
 parameterstextbox(15type c,
             tarih like sy-datum default sy-datum,
             cbox1 as checkbox,
             cbox2 as checkbox,
             rbutton1 radiobutton group grp1 default 'X',
             rbutton2 radiobutton group grp1 ,
             rbutton3 radiobutton group grp1 .
 
 write'Checkbox ve Radiobutton',
        / 'textbox ='textbox,
        / 'tarih ='tarih,
        / 'cbox1 ='cbox1,
        / 'cbox2 ='cbox2,
        / 'rbutton1 ='rbutton1,
        / 'rbutton2 ='rbutton2,
        / 'rbutton3 ='rbutton3.

F8 ile programı çalıştırmadan önce arayüzde seçimlerin yanında kısa tanımlar eklemek için
Git > Metin Öğeleri > Seçim Metinleri kısmına geleceğiz. Eğer Karşımıza Düzenleme sayfası gelmiyorsa programımızın kaydedilmiş ve aktif olup olmadığını kontrol etmeliyiz.

41

42

Düzenlemeyi bu kısımda yapıyoruz.

43

Kaydediyoruz. Ve yine bu sayfayı da aktif hale getiriyoruz.

Programımızı F8 ile çalıştırıyoruz

44

Seçim sayfasına gelip seçimleri yapabiliriz.

Eklediğimiz kısa tanımları ve seçimleri görüntülemek için takrar F8 e basıyoruz.

45

Kodumuzda rbutton u Default X olarak seçmiştik. Ve programımızı çalıştırdığımızda Seçimi değiştirmediğimiz için yine rbutton1 onaylı gözükmektedir.

 

 

Syntax (sap-abap)

♦ Syntax :

“Bir ABAP / 4 programında değişken tanımlamak için yaygın olarak iki ifade kullanılır:

  1. data
  2. parameters

Değişken adları 1 ila 30 karakter uzunluğunda olabilir. Herhangi bir karakter içerebilirler.() +.

,: Ve en az bir alfabetik karakter içermelidir.

SAP, değişken adların daima bir karakterle başlamasını ve çizgi içermemesini önerir. Çizinin özel anlamı vardır (aşağıdaki alan dizelerine bakın). Çizgi yerine bir alt çizgi (_) kullanmalısınız.

Değişken adları olarak USING veya CHANGING kullanmayın. Sözdizimsel olarak doğru oldukları halde, onları altprogramlara geçirmeyi denerseniz sorunlara neden olabilirler.

Bir değişkene ilişkin tanım, fiziksel olarak erişen ifadelerden önce gelmelidir. Bir veri deyimini yürütülebilir koddan sonra yerleştirirseniz, yukarıdaki ifadeler tanımladığı değişkenlere erişemez. ” (Sams Teach Yourself ABAP/4 in 21 Days)

Değişken tanımlanmadan önce erişilmeye çalışılan hatalı örnek :

1 report zsyntax.
2 data kelime1(7) value 'Birinci'.
3 write: kelime1, kelime2.
4 data kelime2(6) value 'İkinci'.

Tablonun Nerelerde Kullanıldığını Kontrol Etme (sap-abap)

 

♦ Tablonun Nerelerde Kullanıldığını Kontrol Etme:

“Bir tabloya her değişiklik yapıldığında her programı yeniden oluşturmak zorunda kalmazsanız da, bazı değişiklikleri (alan adını yeniden adlandırmak veya silmek gibi) ABAP / 4 kodunda değişiklikler yapmanız gerekecektir. Bu gibi durumlarda, onu kullanan tüm programları bulmanız gerekir.” (Sams Teach Yourself ABAP/4 in 21 Days)

Önceden tablo oluşturma kısmında oluşturduğumuz ‘zilktablo’ isimli tablomuzun hangi program veya programlar tarafından kullanıldığını kontrol edilecek.

34

Tabloyu görüntülüyoruz. Utilities > Where-Used List (Ctrl+Shift+F3)

35

Nerelerde kullanıldığını görüntülemek için istenilen seçenekleri seçip onaylıyoruz.

36

37

Görüldüğü gibi tablomuz sadece ‘zlistele’ isimli bir program tarafından kullanılmaktadır.

Program ismini çift tıkladığımızda tüm kod satırların listesi karşımıza gelecektir.

38

Kod satırını çift tıkladığımızda ise ayrıntılı kodumuzu görebiliriz.

39

Foreign Keys (sap-abap)

 

♦ Foreign Keys :

Öncelikle iki tablo oluşturuyoruz. Bu tablolarda foreign keys uygulayacağımız alanların isim ve tiplerini aynı yapıyoruz. Daha önce anlatılan ‘  Tablo Oluşturma  ‘ sayfasına buradan ulaşabilirsiniz.

Oluşturduğumuz tablolar ↓

2829

zrehber ve zalankodları adında iki tablo oluşturduk. zalankodlar bizim test tablomuz olacak  ve tüm illeri ve alan kodlarını buraya ekleyip bir daha değişiklik yapmayacağız. Rehber tablomuz ise sürekli güncellenen bir tablo olacak ve alan kodu yanlış girilen kayıtları kabul etmeyecek.

Foreign Key işlemi için alan adlarımızın hemen üstünde bir anahtar butonu var. Bağlantıyı yapacağımız alanın üstüne geliyoruz ve anahtar butonunu tıklıyoruz.

30

Karşımıza şöyle bir ekran gelecektir.

31

Check Table kısmına bağlantıyı sağlayacağımız diğer tablonun ismini yazıyoruz ve ‘Generate proposal’ butonunu tıklıyoruz. Ve aşağıya bir liste geliyor. Alan adı aynı olan kısmı otomatik tanıyor ve biz sadece ‘Copy’ butonuna basıyoruz.

Kayıt girme işlemine başlıyoruz. Daha önce anlatılan ‘ Kayıt girme ‘ sayfasına buradan ulaşabilirsiniz.

Eğer Foreign Key işlemimiz başarılı olduysa bağlantı sağladığımız kısım veri girerken kırmızı tonlarda görünmekte. Ve yanlış giriş yaptığımızda ise pencerenin en altında (girişi kontrol edin) hatasını vermektedir. Ve doğru alan kodunu girmeden kayıt yaptırmayacaktır.

32

33

 

“DDIC’de herhangi bir tablo oluşturmadan önce, genellikle bazı veritabanı tasarımı yaparsınız. Bu tasarım, oluşturulacak tabloları, bunların ilişkilerini ve her biri içerecek verileri türünü açıklar. Genellikle bazı tabloları, diğer tablolardaki verileri doğrulamak için kontrol tabloları olarak belirtecektir. Örneğin, ülke kodlarının saklanacağı tüm tablolar için ülke kodlarının geçerliliği için bir ülke kodu kontrol tablosu gerekebilir. R / 3 içerisinde bir dizi tablo oluşturduğunuzda, genellikle önce kontrol tablolarını oluşturursunuz.

Bir kontrol tablosu oluşturduğunuzda, birincil amacı vardır: verileri doğrulamak için. Pek çok tabloyu tek bir kontrol tablosuna bağlayan birden çok yabancı anahtar ilişkisi oluşturabilirsiniz. Alandaki Değer Tablosu alanı, bu ilişkileri oluşturma görevini basitleştirmek için mevcuttur.”

Kaynak : Sams Teach Yourself ABAP/4 in 21 Days

 

 

 

Select ile Tablo Listeleme (sap-abap)

 

♦ Select ile Tablo Listeleme:

Yeni bir program oluşturuyoruz.

/nse38

23

24

25

26

Bir önceki yazıda oluşturduğumuz tablonun içeriğini Select yardımı ile ekrana yazdırmak için kodumuzu yazıyoruz.

REPORT  ZLISTELE.
 tables zilktablo.
 select from zilktablo into zilktablo order by lifnr.
   write / zilktablo-lifnr.
 endselect.

Ctrl+F2 ile kodunuzu kontrol edebilirsiniz.

F8 ile programı çalıştırıyoruz.

27