[SAP ABAP开发技术总结]日期函数

21.1. 日期函数
21.1.1. 日期、时间验证
DATE_CHECK_PLAUSIBILITY:检查一个日期是否是有效格式,如果不是有效日期,则报异常:
.
ENDIF.
TIME_CHECK_PLAUSIBILITY:时间有效性检查,与上面日期有效性检查使用方式相同
21.1.2. 内部转换外部格式
FORMAT_DATE_4_OUTPUT:将数据库中8位的日期(YYYYMMDD)转换为指定的任意格式


注意:在程序中,日期格式要使用大写格式。
CONVERT_DATE_TO_EXTERNAL:将数据库中的8位内部日期(YYYYMMDD)以当前Client设置的外部日期格式显示:

21.1.3. 外部转内部格式
CONVERT_DATE_TO_INTERNAL:将外部日期(要符合Client设置的日期格式)转换为数据库内部日期(YYYYMMDD)
INPUT: 02/03/2008 "Should be same as the user's default setting
OUPUT: 20080203
CONVERT_DATE_INPUT:将外部日期(要符合Client设置的日期格式)转换为数据库内部日期
wrong_format_in_input
.

21.1.4. 获取Client格式
获取当前Client端的日期格式与时间格式:
SELECT datfm INTO lv_datfm FROM usr01 UP TO 1 ROWS WHERE bname = zname . ENDSELECT.


21.1.5. 日期加减
RP_CALC_DATE_IN_INTERVAL:加减自然年、自然月,还可以加减天数(一般加多少天直接通过日期类型就加减就可以了,但如果向下面那样需要在20070101加上1年1个月零28天时,就很有用了):

21.1.6. 转成工厂日期
DATE_CONVERT_TO_FACTORYDATE:如果输入的是周末与公共节假日,则将它把调整为工厂日历日期(工作日期):
DATA: date LIKE scal-date,
factorydate LIKE scal-facdate,
workday LIKE scal-indicator.
CALL FUNCTION 'DATE_CONVERT_TO_FACTORYDATE'
EXPORTING
"如果输入的日期不是工作日,则是该函数会返回离该输入的节假日前或者后面的最近的工作日,是返回前面还是后面由 +/- 来决定 +:返回后面最近的工作日 -:返回前面最近的工作日默认就是+
* CORRECT_OPTION = '+'
date = '20111119'
"使用的工厂日历ID,可以从 T001W-FABKL 中获取
factory_calendar_id = 'CN'
IMPORTING
"如果输入的是节假日,则返回是经过转换过了的工作日;如果输入的就是工作时,则返回的是自身,格式为 YYYYMMDD
date = date
"返回的工作日在指定的工作日历中位于第几个工作日,一般对我们没什么作用
factorydate = factorydate
"标示返回的DATE是否是工作日,如果为空,则是,如果为 + ,表示返回的是输入的节假日后面最近一个工作;如果为 - ,表示返回的是输入的节假日前面最近一个工作日。
workingday_indicator = workday.
WRITE:/ date , factorydate, workday.
其中工厂日历的代码按工厂号到表T001W上取:
SELECT SINGLE fabkl INTO l_fabkl FROM t001w WHERE werks = im_mt61d-werks.
FACTORYDATE_CONVERT_TO_DATE:该函数可以将DATE_CONVERT_TO_FACTORYDATE返回的factorydate(工作日序号:工作日在指定的工作日历中位于第几个工作日)转换成工作日,也可以用在“加几个工作日”的应用中:比如给某个时间加上几个工作日时,可以先使用DATE_CONVERT_TO_FACTORYDATE函数将某个时间转换为工厂日期,并获取factorydate工作日序号,再在这个工作日序号上加上几个工作日,得到新的工作日序号,然后再将这个新的工作日序号传递给FACTORYDATE_CONVERT_TO_DATE函数,得到最终的新的工作日期:

工厂日历定义表为TFACD(节假日历定义表THOCD),表里存储了工厂日历ID(TFACD-IDENT)与节假日历ID(TFACD-HOCID)的关系,所以只要知道了工厂日历ID,则要使用节假日历ID则可以查询出来(注:工厂日历ID还可以通过T001W来查询得到):

工厂日历相关表是以“TFA”开头的表,节假日历相关的表是以“THO”开头相关的表
21.1.7. 日期属性
DAY_ATTRIBUTES_GET:查看某日期的属性(休息日、节假日、星期几):
CALL FUNCTION 'DAY_ATTRIBUTES_GET'
EXPORTING
FACTORY_CALENDAR = 'CN'引用表字段TFACD-IDENT
* HOLIDAY_CALENDAR = ' '引用表字段THOCI-IDENT
DATE_FROM = '20110428'
DATE_TO = '20110510'
* LANGUAGE = SY-LANGU
* NON_ISO = ' '
* IMPORTING
* YEAR_OF_VALID_FROM =
* YEAR_OF_VALID_TO =
* RETURNCODE =
TABLES
day_attributes = attr .

21.1.8. 节假日
HOLIDAY_CHECK_AND_GET_INFO:判断某天是否是假日,并且可以返回该日期所对应的节假日信息。
.
CALL FUNCTION 'HOLIDAY_CHECK_AND_GET_INFO'
EXPORTING
date = '20100529'
holiday_calendar_id = 'Z1'
"需要返回节假日属性内表信息
with_holiday_attributes = 'X'
IMPORTING
"是否节假日(注:周末不是节假日,但是一种休息日)
holiday_found = is_hol
"Attributes of the found public holidays The table contains
"the holiday aAttributes, if the specified date is a holiday.
"The attributes must be passed in a table because several
"holidays can fall on a date.即一天有可能有两个节,所以需要使用内表接收
TABLES
holiday_attributes = THOL.
21.1.9. 年月选择框
POPUP_TO_SELECT_MONTH:弹出一个对话框显示月份和年度下拉列表,让用户选择年与月

输入:
。
。
。
,否则为 0。
说明:工厂日历和公共假日日历主要用来限制下拉列表中的可选年份范围。如果不指定,就是当前年前后各 50 年,共 100 年
21.1.10. 财政年
GET_CURRENT_YEAR:得到当前的财政年(fiscal year)
21.1.11. 星期翻译对照表
WEEKDAY_GET:从数据表中获得指定语言每周七天的名称,例如中文就是星期一、星期二……星期日,英文就是Sunday、Monday……Saturday

输入参数:
LANGUAGE、英文是 E……,而不能用 ZH、EN,语言代码参见表 T002
输出内表:WEEKDAY:结构与透明表 T246 相同,用来存储返回给用户的周日名称。
21.1.12. 日期所在周末、天/周、周/年
HR_GBSSP_GET_WEEK_DATES:获得某个日期所在周的周六周日、所在周的第几天、所在年的第几周:

输入参数:
P_PDATE:一个日期,必须填写。
输出参数:
P_SUNDAY:该周的周日,在 SSP 日期系统中,周日为第一天。
P_SATURDAY:该周的周六,在 SSP 日期系统中,周六为最后一天。
P_DAY_IN_WEEK:输入日期在当周的第几天,周日第 1 天,周一第 2 天,依此类推,周六第 7 天。
P_WEEK_NO:该周是年度的第几周。6 位数字,格式为 YYYYWW,前四位是年,后两位是周。
说明:SSP 是Statutory Sick Pay的缩写
该函数包括了以下两个函数的功能:
DATE_GET_WEEK:获得某个日期所在的周


WEEK_GET_FIRST_DAY:计算某周的第一天(如下面的1999年的第52周第一天):

[SAP ABAP开发技术总结]日期函数的更多相关文章
- [SAP ABAP开发技术总结]字符串处理函数、正则表达式
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- ABAP开发顾问必备:SAP ABAP开发技术总结
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- [SAP ABAP开发技术总结]OPEN SQL
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- ABAP开发顾问必备:SAP ABAP开发技术总结[转载]
转载自SAP师太技术博客,原文链接:http://www.cnblogs.com/jiangzhengjun/p/4260224.html 在原文上增加了链接,此文及此文的链接版权都归SAP师太所有. ...
- [SAP ABAP开发技术总结]内表操作
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- [SAP ABAP开发技术总结]ABAP程序之间数据共享与传递
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- [SAP ABAP开发技术总结]增强Enhancement
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- [SAP ABAP开发技术总结]ALV
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- [SAP ABAP开发技术总结]面向对象OO
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
随机推荐
- 文字处理TX Text Control X10独家揭秘(二):图像占位符合并
在前面一篇文章<TX Text Control X10独家揭秘(一):数据源自动处理>中已经对即将发布的TX Text Control X10的数据源自动处理做了一些了解,接下来述说它的图 ...
- android 学习随笔二十五(动画:补间动画)
补间动画(TweenAnimation) * 原形态变成新形态时为了过渡变形过程,生成的动画就叫补间动画(为了让对象从初始状态向结束状态改变的过程更加自然而自动生成的动画效果)* 位移.旋转.缩放.透 ...
- python核心编程学习记录之基础知识
虽然对python的基础知识有所了解,但是为了更深入的学习,要对python的各种经典书籍进行学习 第一章介绍python的优缺点,略过 第二章介绍python起步,第三章介绍python基础,仅记录 ...
- React笔记_(6)_react语法5
react的版本 目前主要的react有 ES5,ES6.也有ES5和ES6混合编写的.比较混乱. react官方提倡用ES6. 说到这里,就需要提到一个概念--mixin mixin在es6中被摒弃 ...
- win32 Ui 编程 收集
---恢复内容开始--- windows sdk编程系列---- 通用控件 http://www.cnblogs.com/MoreNotepad-plus-plus/articles/3164534. ...
- 精通 JS正则表达式
一.正则表达式可以: 测试字符串的某个模式.例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式.这称为数据有效性验证 替换文本.可以在文档中使用一个正则表达式 ...
- javaWeb 使用jsp开发 if 标签
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...
- php 的 构造函数 和 析构函数
构造函数 在C++ java里的应用及其普遍,今天好好研究了一下 php 的 构造函数 和 析构函数 构造函数 和 析构函数 构造函数 void __construct ([ mixed $args ...
- Android内存溢出解决方案(OOM)
众所周知,每个Android应用程序在运行时都有一定的内存限制,限制大小一般为16MB或24MB(视平台而定).因此在开发应用时需要特别关注自身的内存使用量,而一般最耗内存量的资源,一般是图片.音频文 ...
- HDU 1269:迷宫城堡(强连通)
http://acm.hdu.edu.cn/showproblem.php?pid=1269 题意:确定是否是一个强连通图. 思路:裸的tarjan算法. #include <cstdio> ...