DATA: date TYPE D, -- 日期类型 time TYPE T, -- 时间类型 year TYPE I, -- 年份 month TYPE I, -- 月份 day TYPE I, -- 日期 hour TYPE I, -- 小时 minute TYPE I, -- 分钟 second TYPE I. -- 秒数
DATA: lv_timestamp TYPE TIMESTAMP, lv_date TYPE D, lv_time TYPE T, lv_tzone TYPE TIMEZONE VALUE 'CET'. -- 中欧时间
-- 获取当前时间戳 GET TIME STAMP FIELD lv_timestamp.
-- 转换为指定时区 CONVERT TIME STAMP lv_timestamp TIME ZONE lv_tzone INTO lv_date lv_time.
Write: / 'Time in CET:', lv_date, lv_time.
📊 实际应用场景
1. 业务日期处理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
" 计算工作日 DATA: ld_start_date TYPE D VALUE '20240301', ld_end_date TYPE D, ld_work_days TYPE I.
ld_end_date = ld_start_date + 30. -- 项目截止日期
" 计算工作日(排除周末) DO 31 TIMES. IF ld_start_date+6(2) CO '012345' AND " 周一到周五 ld_start_date+6(2) <> '00'. " 不是周末 ADD 1 TO ld_work_days. ENDIF. ADD 1 TO ld_start_date. ENDDO.
Write: / 'Total Work Days:', ld_work_days.
2. 时间戳记录
1 2 3 4 5 6 7 8 9 10 11 12 13 14
" 记录操作时间戳 DATA: lv_timestamp TYPE TIMESTAMP, lv_operation_log TYPE TABLE OF tsmd_log.
" 获取操作开始时间 GET TIME STAMP FIELD lv_timestamp.
" 记录日志 APPEND VALUE #( uname = sy-uname timestampl = lv_timestamp action = 'CREATE_ORDER' ) TO lv_operation_log.
3. 日期验证
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
" 验证日期有效性 DATA: ld_input_date TYPE D VALUE '20240230', lv_valid TYPE ABAP_BOOL.
" 检查日期是否有效 CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY' EXPORTING date = ld_input_date IMPORTING plausible = lv_valid.
IF lv_valid = abap_true. Write: / 'Date is valid'. ELSE. Write: / 'Date is invalid'. ENDIF.
⚠️ 注意事项
1. 日期范围
1 2 3 4 5 6
" ❌ 危险:可能产生无效日期 DATA: ld_date TYPE D. ld_date = '20241301'. -- 无效的月份
" ✅ 安全:使用系统日期 ld_date = sy-datum.
2. 时区转换
1 2 3 4 5 6 7 8
" 注意时区对时间计算的影响 DATA: lv_utc_time TYPE T VALUE '235959', lv_local_time TYPE T.