SAP ABAP - Tarih ve Saat
ABAP, dünyanın çoğu yerinde geçerli olan Miladi takvime dolaylı olarak atıfta bulunur. Çıktıyı ülkeye özel takvimlere dönüştürebiliriz. Tarih, bir takvime göre kesin bir gün, hafta veya ay için belirtilen zamandır. Bir güne göre kesin bir saniye veya dakika için bir zaman belirtilir. ABAP, her zaman 24 saat formatında zaman kazandırır. Çıktının ülkeye özgü bir biçimi olabilir. Tarihler ve saat genellikle geçerli saat diliminde geçerli olan yerel tarihler olarak yorumlanır.
ABAP, tarih ve saatle çalışmak için iki yerleşik tür sağlar -
- D veri türü
- T veri türü
Temel format aşağıdadır -
DATA: date TYPE D,
time TYPE T.
DATA: year TYPE I,
month TYPE I,
day TYPE I,
hour TYPE I,
minute TYPE I,
second TYPE I.
Bu türlerin her ikisi de sırasıyla YYYYAAGG ve HHMMSS biçimlerine sahip sabit uzunlukta karakter türleridir.
Zaman damgaları
Bu yerleşik türlere ek olarak, diğer iki tür TIMESTAMP ve TIMESTAMPLUTC biçiminde bir zaman damgası depolamak için birçok standart uygulama tablosunda kullanılmaktadır. Aşağıdaki tablo, ABAP'ta bulunan temel tarih ve saat türlerini göstermektedir.
S.No. | Veri Türü ve Açıklaması |
---|---|
1 | D YYYYAAGG biçiminde yerleşik sabit uzunlukta bir tarih türü. Örneğin, 20100913 değeri 13 Eylül 2010 tarihini temsil eder. |
2 | T HHMMSS formunun yerleşik sabit uzunluklu bir zaman türü. Örneğin, 102305 değeri 10:23:05 AM saatini temsil eder. |
3 | TIMESTAMP (P Tipi - Uzunluk 8 Ondalıksız) Bu tür, YYYYMMDDhhmmss biçiminde kısa zaman damgalarını temsil etmek için kullanılır. Örneğin, 20100913102305 değeri 13 Eylül 2010 10: 23: 05'teki tarihi temsil eder. |
4 | TIMESTAMPL (P Tipi - Uzunluk 11 Ondalık 7) TIMESTAMPL, uzun zaman damgalarını YYYYMMDDhhmmss, mmmuuun biçiminde temsil eder. Burada ek rakamlar 'mmmuuun' bir saniyenin kesirlerini temsil eder. |
Güncel Tarih ve Saat
Aşağıdaki kod parçacıkları, geçerli sistem tarihini ve saatini alır.
REPORT YR_SEP_15.
DATA: date_1 TYPE D.
date_1 = SY-DATUM.
Write: / 'Present Date is:', date_1 DD/MM/YYYY.
date_1 = date_1 + 06.
Write: / 'Date after 6 Days is:', date_1 DD/MM/YYYY.
Yukarıdaki kod aşağıdaki çıktıyı üretir -
Present Date is: 21.09.2015
Date after 6 Days is: 27.09.2015
Date_1 değişkenine, geçerli sistem tarihi SY-DATUM'un değeri atanır. Daha sonra, tarih değerini 6 artırıyoruz. ABAP'deki bir tarih hesaplaması açısından, bu, tarih nesnesinin gün bileşenini 6 gün artırdığımız anlamına gelir. ABAP çalışma zamanı ortamı, bir ayın sonuna ulaştığında tarih değerini geri alacak kadar akıllıdır.
Zaman hesaplamaları, tarih hesaplamalarına benzer şekilde çalışır. Aşağıdaki kod, temel zaman aritmetiğini kullanarak mevcut sistem zamanını 75 saniye artırır.
REPORT YR_SEP_15.
DATA: time_1 TYPE T.
time_1 = SY-UZEIT.
Write /(60) time_1 USING EDIT MASK
'Now the Time is: __:__:__'.
time_1 = time_1 + 75.
Write /(60) time_1 USING EDIT MASK
'A Minute and a Quarter from Now, it is: __:__:__'.
Yukarıdaki kod aşağıdaki çıktıyı üretir -
Now the Time is 11:45:05
A Minute and a Quarter from Now, it is: 11:46:20
Zaman Damgalarıyla Çalışma
Geçerli sistem saatini alabilir ve bunu kullanarak bir zaman damgası değişkeninde saklayabilirsiniz. GET TIME STAMPaşağıdaki kodda gösterildiği gibi. GET TIME STAMP deyimi, kullanılan zaman damgası veri nesnesinin türüne göre zaman damgasını uzun el veya kısa el biçiminde saklar. Zaman damgası değeri, UTC standardı kullanılarak kodlanır.
REPORT YR_SEP_12.
DATA: stamp_1 TYPE TIMESTAMP,
stamp_2 TYPE TIMESTAMPL.
GET TIME STAMP FIELD stamp_1.
Write: / 'The short time stamp is:', stamp_1
TIME ZONE SY-ZONLO.
GET TIME STAMP FIELD stamp_2.
Write: / 'The long time stamp is:', stamp_2
TIME ZONE SY-ZONLO.
Yukarıdaki kod aşağıdaki çıktıyı üretir -
The short time stamp is: 18.09.2015 11:19:40
The long time stamp is: 18.09.2015 11:19:40,9370000
Yukarıdaki örnekte, WRITE deyiminin TIME ZONE ekini kullanarak zaman damgasını görüntülüyoruz. Bu ek, zaman damgasının çıktısını belirtilen saat dilimi kurallarına göre biçimlendirir. SY-ZONLO sistem alanı, kullanıcının tercihlerinde konfigüre edilen yerel saat dilimini görüntülemek için kullanılır.