- SAP ABAP 教程
- SAP ABAP - 主页
- SAP ABAP - 概述
- SAP ABAP - 环境
- SAP ABAP - 屏幕导航
- SAP ABAP - 基本语法
- SAP ABAP - 数据类型
- SAP ABAP - 变量
- SAP ABAP - 常量和文字
- SAP ABAP - 操作员
- SAP ABAP - 循环控制
- SAP ABAP - 决策
- SAP ABAP - 字符串
- SAP ABAP - 日期和时间
- SAP ABAP - 格式化数据
- SAP ABAP - 异常处理
- SAP ABAP - 字典
- SAP ABAP - 域
- SAP ABAP - 数据元素
- SAP ABAP - 表
- SAP ABAP - 结构
- SAP ABAP - 视图
- SAP ABAP - 搜索帮助
- SAP ABAP - 锁定对象
- SAP ABAP - 模块化
- SAP ABAP - 子例程
- SAP ABAP - 宏
- SAP ABAP - 功能模块
- SAP ABAP - 包含程序
- SAP ABAP - 开放 SQL 概述
- SAP ABAP - 本机 SQL 概述
- SAP ABAP - 内部表
- SAP ABAP - 创建内部表
- ABAP - 填充内部表
- SAP ABAP - 复制内部表
- SAP ABAP - 读取内部表
- SAP ABAP - 删除内部表
- SAP ABAP - 面向对象
- SAP ABAP - 对象
- SAP ABAP - 类
- SAP ABAP - 继承
- SAP ABAP - 多态性
- SAP ABAP - 封装
- SAP ABAP - 接口
- SAP ABAP - 对象事件
- SAP ABAP - 报表编程
- SAP ABAP - 对话框编程
- SAP ABAP - 智能表单
- SAP ABAP - SAP 脚本
- SAP ABAP - 客户退出
- SAP ABAP - 用户退出
- SAP ABAP - 业务插件
- SAP ABAP - Web Dynpro
- SAP ABAP 有用资源
- SAP ABAP - 问题解答
- SAP ABAP - 快速指南
- SAP ABAP - 有用的资源
- SAP ABAP - 讨论
SAP ABAP - 日期和时间
ABAP 隐式引用了在世界大部分地区有效的公历。我们可以将输出转换为特定于国家/地区的日历。日期是相对于日历指定为精确的日、周或月的时间。时间被指定为相对于一天的精确秒或分钟。ABAP 始终以 24 小时格式保存时间。输出可以具有特定于国家/地区的格式。日期和时间通常被解释为当前时区有效的本地日期。
ABAP 提供了两种内置类型来处理日期和时间 -
- D 数据类型
- T 数据类型
以下是基本格式 -
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.
这两种类型都是固定长度字符类型,其形式分别为 YYYYMMDD 和 HHMMSS。
时间戳
除了这些内置类型之外,许多标准应用程序表中还使用其他两种类型TIMESTAMP和TIMESTAMPL来存储 UTC 格式的时间戳。下表显示了 ABAP 中可用的基本日期和时间类型。
编号 | 数据类型和描述 |
---|---|
1 | D YYYYMMDD 形式的内置固定长度日期类型。例如,值 20100913 表示日期 2010 年 9 月 13 日。 |
2 | 时间 HHMMSS 形式的内置固定长度时间类型。例如,值 102305 表示时间 10:23:05 AM。 |
3 | TIMESTAMP(类型 P – 长度 8 无小数) 该类型用于以 YYYYMMDDhhmmss 形式表示短时间戳。例如,值 20100913102305 表示日期 2010 年 9 月 13 日上午 10:23:05。 |
4 | TIMESTAMPL(类型 P - 长度 11 位小数 7) TIMESTAMPL 表示 YYYYMMDDhhmmss,mmmuuun 形式的长时间戳。这里附加的数字“mmmuuun”代表秒的分数。 |
当前日期和时间
以下代码片段检索当前系统日期和时间。
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.
上面的代码产生以下输出 -
Present Date is: 21.09.2015 Date after 6 Days is: 27.09.2015
变量 date_1 被赋予当前系统日期 SY-DATUM 的值。接下来,我们将日期值增加 6。就 ABAP 中的日期计算而言,这意味着我们将日期对象的日期部分增加 6 天。ABAP 运行时环境非常智能,可以在日期值到达月底时滚动该日期值。
时间计算的工作方式与日期计算类似。以下代码使用基本时间算术将当前系统时间增加 75 秒。
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: __:__:__'.
上面的代码产生以下输出 -
Now the Time is 11:45:05 A Minute and a Quarter from Now, it is: 11:46:20
使用时间戳
您可以使用GET TIME STAMP检索当前系统时间并将其存储在时间戳变量中,如以下代码所示。GET TIME STAMP 语句根据所使用的时间戳数据对象的类型以长记或简写格式存储时间戳。时间戳值使用 UTC 标准进行编码。
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.
上面的代码产生以下输出 -
The short time stamp is: 18.09.2015 11:19:40 The long time stamp is: 18.09.2015 11:19:40,9370000
在上面的示例中,我们使用 WRITE 语句的 TIME ZONE 添加来显示时间戳。此添加根据指定时区的规则格式化时间戳的输出。系统字段 SY-ZONLO 用于显示用户首选项中配置的本地时区。