*&---------------------------------------------------------------------*
*& Report Z_OTHER_DATA_TYPES
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT Z_OTHER_DATA_TYPES.
* Date and Time Fields.
***********************************************************************************
*Date -----------------------------------------------------------------------------\
* Date fields formant: YYYYMMDD with initial value of '00000000'
DATA MY_DATE TYPE D VALUE '20120101'.
* SY-DATUM: Holds current System dates
DATA MY_DATE2 LIKE SY-DATUM.
***********************************************************************************
*Time -----------------------------------------------------------------------------\
* Time fields formant: HHMMSS with initial value of '000000'
DATA MY_TIME TYPE T VALUE '111005'.
* SY_UZEIT: Holds current System time
DATA MY_TIME2 LIKE SY-UZEIT.
*
************************************************************************************
* Test Date & Time fields Output----------------------------------------------------
WRITE :/ MY_DATE,
MY_DATE2,
MY_TIME,
MY_TIME2.
ULINE.
************************************************************************************
* Date Calculation------------------------------------------------------------------
DATA EMPL_SDATE TYPE D.
DATA TODAYS_DATE TYPE D.
DATA LOS TYPE I.
DATA DAYS_COUNT TYPE I.
DATA FUT_DATE TYPE D.
EMPL_SDATE = '20090515'.
TODAYS_DATE = SY-DATUM.
LOS = TODAYS_DATE - EMPL_SDATE.
WRITE :/ EMPL_SDATE,
TODAYS_DATE,
'Difference is: ', LOS, 'Days'.
ULINE.
*********************************************
TODAYS_DATE = SY-DATUM.
DAYS_COUNT = '20'.
FUT_DATE = TODAYS_DATE + DAYS_COUNT.
WRITE :/ 'Future Date: ', FUT_DATE.
ULINE.
*********************************************
TODAYS_DATE = SY-DATUM.
TODAYS_DATE+6(2) = '20'.
FUT_DATE = TODAYS_DATE + DAYS_COUNT.
WRITE :/ SY-DATUM, TODAYS_DATE.
WRITE :/ TODAYS_DATE, FUT_DATE.
ULINE.
*********************************************
TODAYS_DATE = SY-DATUM.
* Make the days to the first day (01) and subtract by 1, so that we can determine the last day of the previous month.
TODAYS_DATE+6(2) = '01'.
TODAYS_DATE = TODAYS_DATE - 1.
WRITE :/ SY-DATUM, TODAYS_DATE.
ULINE.
************************************************************************************
* Time Calculation------------------------------------------------------------------
* Time differnece is calculated to seconds.
DATA CLOCK_IN TYPE T.
DATA CLOCK_OUT TYPE T.
DATA SECONDS_DIFF TYPE I.
DATA MINUTES_DIFF TYPE I.
DATA HOURS_DIFF TYPE P DECIMALs 2.
CLOCK_IN = '073000'.
CLOCK_OUT = '160000'.
SECONDS_DIFF = CLOCK_OUT - CLOCK_IN.
WRITE :/ 'Clock in: ', CLOCK_IN, ' Clock out: ', CLOCK_OUT.
WRITE :/ 'Diffrence in seconds: ', SECONDS_DIFF.
MINUTES_DIFF = SECONDS_DIFF / 60.
WRITE :/ 'Diffrence in minutes: ', MINUTES_DIFF.
HOURS_DIFF = MINUTES_DIFF / 60.
WRITE :/ 'Diffrence in hours: ', HOURS_DIFF.
ULINE.
************************************************************************************
* Currency & Quantity Calculation---------------------------------------------------
TABLES: ZEMPLOYEES2.
DATA MY_SALARY LIKE ZEMPLOYEES2-SALARY.
DATA MY_TAX_AMOUNT LIKE MY_SALARY.
DATA MY_NET_PAY LIKE MY_SALARY.
DATA TAX_PERCENT TYPE P DECIMALS 2.
******************************************************************************
* Currency calcuation
TAX_PERCENT = '0.20'.
WRITE: / 'Tax Percenetage', TAX_PERCENT.
SELECT * FROM ZEMPLOYEES2.
WRITE: / ZEMPLOYEES2-SURNAME, ZEMPLOYEES2-SALARY, ZEMPLOYEES2-ECURRENCY.
MY_TAX_AMOUNT = TAX_PERCENT * ZEMPLOYEES2-SALARY.
MY_NET_PAY = ZEMPLOYEES2-SALARY - MY_TAX_AMOUNT.
WRITE: / 'Tax amount', MY_TAX_AMOUNT, ZEMPLOYEES2-ECURRENCY,
'Real Salary', MY_NET_PAY, ZEMPLOYEES2-ECURRENCY.
SKIP.
ENDSELECT.
'SAP > ABAP 코드' 카테고리의 다른 글
ABAP - IF & CASE (0) | 2021.05.24 |
---|---|
ABAP - BASIC SQL STATEMENT (0) | 2021.05.24 |
Character & String (0) | 2021.05.24 |
ABAP - Arithmetic (0) | 2021.05.24 |
ABAP - Variable / Constants (0) | 2021.05.24 |