$show=home

Alanların Belirtilmesi (Değişkenler ve Sabitler)

Gerçek hayatta olduğu gibi, örneklerimizde ele aldığımız üye yönetim sisteminde de çeşitli süreçler yer alır, geliştirmeler yapılır veya ...

Gerçek hayatta olduğu gibi, örneklerimizde ele aldığımız üye yönetim sisteminde de çeşitli süreçler yer alır, geliştirmeler yapılır veya raporda yer almak üzere bir ya da birkaç tablo içeriğinin analiz edilir. Bu amaçla, raporda çeşitli alanlara ihtiyaç duyarız.
ABAP ile ilgili yayınlar birbirlerini takip eden konular içerir. Tüm ABAP yayınlarının listesine ulaşmak için tıklayınız.
ABAP'ta alanların nasıl işleneceğini belirleyen kurallar vardır. Bizim örneğimizde; sistem, numaraları önbellekte saklar ve daha sonraki işlem adımları için onları geri kullanır. Bu amaç için, değerler geçici olarak bellek içinde belirli bir yerde veya veri adresinde saklanır.

ABAP'ta bu yerler alanlar (fields) veya veri nesneleri (data objects) olarak bilinir. Eğer veri nesnelerinin içeriği ABAP ifadeleri kullanılarak değiştirilebilir ise bu veri nesnelerine değişkenler denir; eğer veri nesnelerinin içeriği değiştirilemez ise sabitler olarak adlandırılır.

Değişkenlerin Belirtilmesi (Tamsayı ve Ondalık Örnekleri)

Değişkenlere isim atarken, aşağıdaki kurallara uymanız gerekir:
  1. Değişken ismi bir harf veya alt çizgi (_) ile başlamalıdır; yani, sadece rakamlardan oluşamaz.
  2. Bir isim maksimum 30 karakter olabilir.
  3. Mümkünse, isim alt çizgi (_) hariç herhangi bir özel karakter içermemelidir. Kısıtlamalar klasik ABAP, Unicode programları ve ABAP nesneleri için çeşitlilik gösterir. Ancak artı işareti (+), virgül (,), iki nokta üstüste (:) ve parantezler gibi özel karakterlerden kaçınmak sizin için daha iyi olur.
  4. Karışıklığı önlemek amacıyla alan isimleri, ABAP ifadeleri veya eklemeleri için rezerve edilmiş kelimelerden farklı olmak zorundadır. ABAP dilinin dayattığı kısıtlamaların katılığı yine programlama içeriğine bağlı olarak değişir. Ancak DATA gibi anahtar kelimeleri veya STRING gibi yerleşik veri tiplerinin adlarını kullanmak sentaks kontrolü sırasında en iyi ihtimalle kafa karıştırırken, daha kötüsü hata mesajıyla da karşılşabilirsiniz.
  • [message]
    • Hatırlanabilir Değişkenler Kullanın
      • Buna ek olarak, değişken isimleri anlamlı (yani kendini açıklayıcı) olmalıdır. Örneğin, aile adı için bir değişken kullanmak gerekiyorsa A1 yerine FAMILYNAME diyebilirsiniz. Ayrıca gelecekte bir gün kaynak kodunu okumak zorunda kalabilecek üçüncü şahısları düşünerek okunabilirliğe ve netliğe dikkat etmelisiniz. Diğer taraftan, bir gün benzer durumda bir başkası tarafından yazılmış kaynak kodunu okumanız da gerekebilir.
Alanların sembolik bir adı (örneğin NUMBER01 gibi), tanımlanmış uzunluğu ve bir veri türü olmalıdır. Sembolik isimler saklanan içeriğin okunabildiği ve işlenebildiği bellek adreslerini belirtmek için kullanılır. Veri türüne bağlı olarak, verinin işlenmesi için belirli kurallar geçerlidir; ancak, bu kurallar programlama dilinden programlama diline önemli ölçüde farklılık gösterir.

Eğer numerik alanların içeriğini değiştirmek istiyorsanız, önce DATA deyimi kullanarak alanları belirtmelisiniz. Şimdilik hesaplamalarınızda değişkenler için iki veri türünü kullanın: Tamsayılar (integer) ve ondalık sayılar (decimal)

Örneğin NUMBER01 alanı bir tamsayı içeriyorsa bunun ifadesi şu şekilde görünür:

DATA number01 TYPE i.

Diğer yandan, eğer NUMBER01 alanı iki ondalık basamak içeren bir ondalık sayı olursa ifade şu şekilde görünecektir:

DATA number01 TYPE p DECIMALS 2.

Burada hangi ifadenin kullanılması gerektiğini kullanım amacı belirler. Tip i alanları, genellikle sayaçlar veya sayılar için kullanılır. Tip p alanları genellikle ondalık basamak içeren aritmetik işlemler için kullanılır. Hesaplamanın ve hesaplama ekranının ne kadar kesin olması gerektiğini bilmek önemlidir, çünkü ihtiyaç duyulan ondalık basamak sayısını doğruluk düzeyi belirler. Örnek olarak, döviz kurlarının düşünün. Bu gibi durumlarda, en fazla 5 ondalık basamak kullanılırken, 14 ondalık basamak çok seyrek kullanılır.

Her iki veri tipi de (i ve p) ABAP'da sabit uzunlukta temel veri türleridir. Bu nedenle, ayrıca alan uzunluğunu belirtmeniz gerekmez. Bu iki veri türü ABAP'ın sabit bir uzunluğa sahip 8 yerleşik temel veri tipinden 2'sidir.
  • [message]
    • Daha Kapsamlı Tür Kavramı
      • Bu sitenin ilerleyen kısımlarında, değişken uzunluklu temel veri türlerini de göreceksiniz. Bu aşamada, daha iyi anlaşılması için en önemli veri türlerini kullanmak üzere kendimizi kısıtlayalım. Ayrıca, burada referans veri türleri ve karmaşık veri türlerini tanıtmayacağız. Ancak, gelişmiş uygulamalar için ABAP'ta kullanılan tip kavramının burada açıklanandan çok daha kapsamlı olduğunu akılda tutmak gerekir.
Eğer aynı şekilde iki değişken deklare etmek istiyorsanız, iki ifade satırı yazmanız ve  aynı nitelikleri kullanıp kullanmadığınızı kontrol etmeniz gerekir. Aşağıdaki satırlarda bu durum gösterilmiştir.

DATA number01 TYPE p DECIMALS 2.
DATA number02 TYPE p DECIMALS 2.

Ancak, burada önemli bir dezavantaj vardır. NUMBER01 deklarasyonu değişirse NUMBER02 deklarasyonunu her zaman kendinizin düzeltmesi gerekir. Birçok bağımlı deklarasyon kullanıldığında, bu görev çok sıkıcı ve zahmetli olabilir. NUMBER02'nin deklarasyonunun NUMBER01'in bildirimlerini referans alması çok daha kolaydır. LIKE ekini kullanarak bunu sağlayabilirsiniz:

DATA number01 TYPE p DECIMALS 2.
DATA number02 LIKE number01.

Bu şekilde NUMBER02'nin deklarasyonunun her zaman doğru olduğundan emin olabilirsiniz çünkü bu deklarasyon NUMBER01'in deklarasyonu ile bağlantılıdır. Eğer ilerde ondalık basamak sayısını artırmak isterseniz (örneğin, 2'den 4'e) sadece NUMBER01'in deklarasyonunu değiştirmek gerekir ve NUMBER02 deklarasyonu otomatik olarak ayarlanır. Bu sistem bir rapor içindeki tutarsızlıkları önlemenize yardımcı olur. Ancak, değişkenlerin özdeş deklarasyonları farklı raporlarda gerekli olursa, bu durumda deklarasyon ABAP sözlükteki bir tablo alanını refere etmelidir. Örneğin, SEQUENTIAL_NUMBER değişkenini ZMEMBER01 tablosundaki MNUMBER alanı ile aynı şekilde deklare etmek isterseniz, aşağıdaki kodu yazmanız gerekir:

DATA sequential_number TYPE zmember01-mnumber.

Bu yöntemi kullanarak, farklı raporlarda değişkeni ayarlamak zorunda kalmaktan kaçınabilirsiniz. Uzunluk herhangi bir şekilde değişirse, bu değişim sadece tablo alanının domain'ini etkileyecektir. Değişiklik uygulamaya konduktan sonra etkilenen tüm raporlar ilk başlatma sırasında otomatik olarak yeniden derlenir ve kaynak kodunda bu değişiklik nedeniyle tek bir satır bile uyarlama gerekmez.
Eğer alana -105 gibi negatif bir değeri önceden atamak isterseniz, eksi işaretini (-) ifadeye dahil etmelisiniz. Sonuçta ifade aşağıdaki gibi görünecektir:

DATA number01 TYPE i VALUE -105.
  • [message]
    • Posta Kodları
      • Eğer 1993 yılında Almanya'da posta kodlarının 4 basamaktan 5 basamağa değişmesi sürecine bakarsanız, bu prosedürün gerçek hayattaki senaryolarla alakası kolayca anlaşılır hale gelir. Geliştiriciler bazen yüzlerce programda posta kodu alanı için arama yapmak, sonra değişikliği uygulamak ve nihayet programları yeniden derlemek zorunda kaldı. Almancadaki posta kodu ifadesini kısaltmak için bir çok yol olduğu da düşünülürse bu sürecin ne kadar çok zaman alıcı ve emek-yoğun bir süreç olduğu anlaşılır. Oysa bu sorun bizim yöntemimiz ile oldukça hızlı bir şekilde çözüme kavuşmuş olurdu.

        Benzer sorunlar şirketler organizasyonunu (örneğin, bir birleşme nedeniyle) önemli ölçüde değiştirdiğinde de ortaya çıkar. Aniden, eski tek haneli bölge tanımlayıcı, şirketin faaliyet gösterdiği 500 bölgeyi ayırt etmek için artık yeterli olmaz. Veya posta kodu örneğindeki gibi, şirket artık uluslararası düzeyde faaliyet gösterecektir ve artık sadece tamamen sayısal posta kodlarını değil aynı zamanda hem sayı hem de harf içeren posta kodlarını yönetmek zorunda kalacaktır.
Bu, göreceli olarak kolaydır. Diğer yandan, NUMBER01 değişkeninin iki ondalık basamak içeren bir ondalık sayıyı temsil etmesini istiyorsanız mesele biraz daha karmaşık hale gelir. Örneğin, NUMBER01 değişkenine 3.14 değerini atamak istiyorsanız, muhtemelen aşağıdaki gibi bir ifade kullanmanız beklenir:

DATA number01 TYPE p DECIMALS 2 VALUE 3.14.

Ne yazık ki, bu deyim çalışmaz. Çünkü nokta (.) işaretini, zincir ifadelerde veya ondalık sayılarda ayırıcı olarak kullanamazsınız.

Temelde, bu iyi bir fikirdir. Çünkü sistem aslında nokta (.) işaretini ondalık ayıracı olarak kullandığı gibi aynı zamanda bir ifadenin sonunu belirtmek için de kullanır. Yani sistem yukarıdaki ifadeyi, aynı satırda iki ifade olarak kabul eder ve ikinci ifade (14) hiç mantıklı değildir.

Bu nedenle, usulüne uygun bir deklarasyon elde etmek için atanan değeri literal olarak yazmalısınız: Literal kaynak kodunda tek tırnak işareti (') ile başlayan bir dizi karakter dizesidir.

DATA number01 TYPE p DECIMALS 2 VALUE '3.14'.

Bu nedenle, bir değişkene negatif -4.56 değerini atamak isterseniz, doğru sözdizimi şu şekilde görünecektir:

DATA number01 TYPE p DECIMALS 2 VALUE '-4.56'.

Sabitlerin Belirtilmesi

Konu bütünlüğü sağlamak için, bu noktada sabitlerin deklarasyonunda CONSTANTS denilen ayrı bir ifadeyi kullandığımızı belirtelim. Bunlar içerikleri asla değiştirilemez alanlardır. CONSTANTS ifadesini kullanarak belirli bir alanın içeriğinin raporun çalışması sırasında değiştirilmeden kalmasını garanti etmiş olursunuz. Eğer günlük çalışmalarınızda böyle bir senaryoyla karşılaşırsanız, CONSTANTS ifadesi DATA ifadesinden çok daha yararlıdır. Sistem bu kavramı destekler ve söz konusu alanları değiştirmeye çalıştığınızda sentaks veya çalıştırma hataları üretir.

Ancak, CONSTANTS ve DATA ifadeleri -amaçlanan kullanımı hariç- aslında aynı olduğundan bu aşamada CONSTANTS ifadesi hakkında daha fazla detaya girmeyeceğiz. Bu nedenle, basit aritmetik işlemlerle ilgili olarak, deklarasyonlarınız şimdilik şöyle görünür:

DATA number01 TYPE p DECIMALS 2 VALUE '-4.56'.
DATA number02 LIKE number01 VALUE '5.67'.
DATA result LIKE number01.

NUMBER01 değişkeni veri türü p'yi ve bunun yanı sıra iki ondalık basamak kullanılacağını tanımlar. Buna ek olarak, değişkene -4,56 negatif başlangıç değeri atanmıştır. Veri türü ve ondalık basamak sayısı bakımından, NUMBER02 değişkeni NUMBER01 değişkenini referans alır ve 5,67 başlangıç değeri atanmıştır. RESULT değişkeni de veri türü ve ondalık basamak olarak NUMBER01 değişkenini referans alır.

Bu tür bir gösterimin avantajı şudur; eğer ifadeyi değiştirmeniz gerekirse, sadece NUMBER01 için değiştirmeniz gerekir ve NUMBER02 ve RESULT bildirimleri otomatik olarak ayarlanır.

YORUM

Ad

/N/SAPTR/KDVB,1,AB03,1,AB08,1,ABAP,24,ABAVN,1,AFAB,1,AR02,1,AR03,1,AS01,1,AS02,2,AS03,1,AS11,1,AW01N,1,CO Kullanıcı,1,CO Uyarlama,1,CONCATENATE,1,CONDENSE,1,e-book,3,EC01,1,Excel,3,F-02,7,F-22,1,F-32,1,F-43,1,F-44,1,F-90,1,F-92,1,F110,2,FAGLL03,1,FB01,1,FB02,1,FB03,2,FB08,2,FB50,1,FB60,3,FB70,2,FBCJ,8,FBCJ3,1,FBCJC0,1,FBCJC1,1,FBCJC2,1,FBKP,1,FBL1N,3,FBL3N,1,FBL5N,4,FBN1,1,FBRA,2,FBV0,2,FBV2,1,FBV3,1,FBZP,1,FD01,1,FD08,1,FD09,1,FGI3,1,FI Kullanıcı,73,FI Uyarlama,41,FI01,1,FICO,1,FIT_DUE_DATE_SEL,1,FK01,1,FK02,1,FK08,1,FK09,1,FK10N,1,FS00,2,FS10N,1,FTXP,1,Gallery,4,LSMW,1,MIRO,2,Muhasebe,1,Nasıl,10,OB05,1,OB13,2,OB16,1,OB22,1,OB29,2,OB37,1,OB40,1,OB41,1,OB45,1,OB52,2,OB53,1,OB62,1,OB96,1,OBA0,1,OBA3,1,OBA4,1,OBA7,2,OBAR,1,OBAS,2,OBB8,1,OBB9,1,OBBO,1,OBBP,1,OBBU,1,OBC4,2,OBC5,1,OBCL,1,OBD2,1,OBD3,1,OBD4,1,OBWS,1,OBWW,1,OBXR,1,OBXT,1,OBXY,1,OBY6,1,OBYM,1,OBYN,1,OBYR,1,OKB2,1,OKB3,1,OLMRLIST,1,OX03,1,OX15,1,PFCG,1,REPLACE,1,S_ALR_87010175,1,S_ALR_87011965,1,S_ALR_87011990,1,S_ALR_87012004,1,S_ALR_87012050,1,S_ALR_87012052,1,S_ALR_87012082,1,S_ALR_87012090,1,S_ALR_87012172,1,S_ALR_87012183,1,S_ALR_87012357,1,SAP,3,SE11,5,SE38,6,SE71,1,SHCD,1,SHIFT,1,SKIP,1,SM30,1,SM35,1,SPLIT,1,Stopaj,3,ULINE,1,VN01,1,VOFA,1,WRITE,1,XD01,1,XDN1,1,XKN1,1,
ltr
item
SAP Muhasebe: Alanların Belirtilmesi (Değişkenler ve Sabitler)
Alanların Belirtilmesi (Değişkenler ve Sabitler)
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5f2FpchgEKxtNllDIKzc5nWt9U-fsPgXUcgqf51UrND2LZ-o6jaRfNXAgGTQowzZcKHU8ZM9Gw_5rony0y7_1SPp1R8Ksh7DTDCuGaSUHklMTdwD1E7AYg8cUTfaP8gXzf-Y_NPn1OIQ/s1600/Alanlar%25C4%25B1n_Belirtilmesi.jpg
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5f2FpchgEKxtNllDIKzc5nWt9U-fsPgXUcgqf51UrND2LZ-o6jaRfNXAgGTQowzZcKHU8ZM9Gw_5rony0y7_1SPp1R8Ksh7DTDCuGaSUHklMTdwD1E7AYg8cUTfaP8gXzf-Y_NPn1OIQ/s72-c/Alanlar%25C4%25B1n_Belirtilmesi.jpg
SAP Muhasebe
https://www.sapmuhasebe.com/2017/11/alanlarn-belirtilmesi-degiskenler-ve.html
https://www.sapmuhasebe.com/
https://www.sapmuhasebe.com/
https://www.sapmuhasebe.com/2017/11/alanlarn-belirtilmesi-degiskenler-ve.html
true
2532429962024234885
UTF-8
Loaded All Posts Not found any posts TÜMÜNÜ GÖSTER Devamı Yanıtla Cancel reply Sil By Ana Sayfa SAYFALAR KAYITLAR Tümünü Göster BENZER YAYINLAR ETİKET ARŞİV SEARCH TÜM KAYITLAR İsteğinize Uygun Kayıt Bulunamadı Ana Sayfaya Dön Pazar Pazartesi Salı Çarşamba Perşembe Cuma Cumartesi Paz Pzt Sal Çrş Prş Cum Cmt Ocak Şubat Mart Nisan Mayıs Haziran Temmuz Ağustos Eylül Ekim Kasım Aralık Oca Şub Mar Nis Mayıs Haz Tem Ağu Eyl Eki Kas Ara az önce 1 dakika önce $$1$$ minutes ago 1 saat önce $$1$$ hours ago Dün $$1$$ days ago $$1$$ weeks ago 5 haftadan fazla Takipçiler Takip Et THIS PREMIUM CONTENT IS LOCKED STEP 1: Share to a social network STEP 2: Click the link on your social network Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy Table of Content