ABAP 10. diel – Výpočty s časom množstvom a menami

Definujte dátový typ ako d. Prakticky sú to textové reťazce, ktoré používame pre aritmetické operácie.

Tieto aritmetické operácie je možné uskutočniť pomocou automatickej konverzie typu. Takže definujeme dátový typ:

DATA d (pole bude mat 8 miest – YYYYMMDD) rok, mesiac, deň

Dátové pole môžete naplniť pomocou dodatku VALUE príkazu DATA. prípadne môžete dátové pole naplniť behom behu programu. Naopak časové pole sú šesť miestne a majú formát HHMMSS. Prvé dve miesta sú pre hodiny, minúty, sekundy. Pre časové pole je typ t. Systémový čas môžete nájsť v tabuľke SYST, v poli UZEIT. Jednotlivé hodnoty sú oddelené : ak sa nechcete zaoberať formátovaním výstupu tak použite na pole SY-UZEIT.

Definícia pola, SESSION_BEGIN bude vyzerať nasledovne:

Data session_begin LIKE sy-uzeit

Definícia polí pre meny je pomerne jednoduchá, stačí ho definovať ako reálne číslo a presvedčiť sa o veľkosti desatinných miest. Napríklad potrebujete nedefinovať pole TAX_AMOUNT, počítajúc daň z obratu.. môžete použiť príkaz ktorý odkáže na definíciu pola meny v nástroji ABAP Dictionary:

DATA tax_amount LIKE zmember03-mfee

– Synchronizácia deklarácií v slovníku Pole musí byť v slovníku odkazovať na referenčné pole typu CURK. To znamená pre pole meny potrebujete ako pole pre uloženie čiastky (pole meny) aj pole pre uloženie kľúču meny. (SKK/EUR atď.)

– Synchronizácia definícií v jazyku ABAP

V nástroji ABAP Dictionary môže množstvo polí typu CURR maximálne 31 desatinných miest. Berte na vedomie prevod dátový typ CURR slovníku na dátový typ p jazyka ABAP pritom dĺžka pole a počet desatinných miest. V jazyku ABAP je typ CURK pre kľuč meny prevedený o dľžke 5.

Použitie dátových polí v aritmetických operáciach

Kľúčové data a termíny. Napríklad určovanie časových úsekov, dohody o platoch, vek osoby všetky tieto prípady vyžadujú zapojenie dátových polí do aritmetických operácií.

– Plnenie dátového pola

Naskôr musíte zadať dátum do pola INVOICE_DATE. Pokiaľ chcete aby pole INVOICE_DATE obsahovalo aktuály dátum, použite nasledovný prikaz.

invoice_date = sy-datum.

Pre dátum 5.2.2004 použite prikaz:

invoice_date = ´20040205´.


Príklad 1:

– aktuálny dátum
invoice_date = sy-datum.

– platobné podmienky
payment_term = 30.

– doba splatnosti + aktuálny dátum + platobné podmienky
payment_date = invoice_date + payment_term.


Príklad 2:

– hodnota systémového dátumu pre pole MONTH_BEGIN.
month_begin = sy-datum.

– posledné dve miesta pola označujú deň. Pozícia 7 a 8 musíte naplniť hodnotou 01 a priradiť ju k MONTH_BEGIN
month_begin+6(2)+ ´01´.

Použitie časových polí v aritmetických operáciach

Opäť si pozrieme niekoľko príkladov.


Príklad 1:

Typický deň začína v 8:15 a končí o 6 poobede, koľko času ubehne medzi začiatkom a koncom?

DATA session_begin TYPE t.
DATA session_end LIKE sy-uzeit.

Na začiatok musíme do časového pola hodnotu.

session_begin = ´081500´.
session_end = ´180000´.

– výpočet časového intervalu
time_difference_sec = session_end – session_begin.

– výpočet časového intervalu v minútach
time_difference_min = ( session_end – session_begin ) / 60.

– výpočet časového intervalu v hodinách
time_difference_hour = ( session_end – session_begin ) / 3600.

– odčítanie prestávky na obed
break = ´0.75´.
session_time = time_difference_hour – break.


Príklad 2:

Pracovná smena skončí rano 5:20:10, koľko času ubehne od aktuálneho okamihu do konca smeny?

time = sy-uzeit.
shift_end = ´052010´.

Poznámka: Jeden deň ma 86400 sekúnd.

– zostávajúci čas v sekundách
balance_time = ( shift_end – time ) MOD 86400


Príklad 3:

Vypočítanie dane z obratu.

– definícia pre daň
tax_percentage = ´0.16´.

– data tabuľky vypísať do jedného záznamu
SELECT * FROM zmember03.


– výška dane, poplatok krát percento dane
tax_amount =
tax_percentage * zmember03-mfee.


– určenie fakturovanej sumy
WRITE: / zmember03-mname.
zmmeber03-mfee.
zmmeber03-mcurrency.
tax_amount.
zmember03-mcurrency.
invoice_amount.
zmember03-mcurrency.


Akonáhle všetky záznamy načítate, bude treba uzavrieť cyklus.

ENDSELECT.

Ukážkový kód pre dátové a časové pole a pole meny


Stiahnuť ukážkový kód pre kapitolu 8


Nabudúce: Úprava dát v databázových tabuľkách

zdroj: TS FMG.sk

Loading Facebook Comments ...