ABAP如何将日期写成长文本?
我需要像这样分开ABAP日期ABAP如何将日期写成长文本?,abap,Abap,我需要像这样分开ABAP日期 20091101 --> "01", "november", "2009" “01”和“2009”是微不足道的,但是如何获得月份名称(应该本地化) 有这样的功能吗 如果没有这样的函数,可能是带有月份名称的表?您可以使用模块函数“month\u names\u get”以给定语言获取月份名称,并将语言作为参数传递。也可以使用“RH\u GET\u DATE\u DAYNAME”获取日期(例如星期日) 纪尧姆您可以使用一个简单的FM“MONTH\u N
20091101 --> "01", "november", "2009"
“01”和“2009”是微不足道的,但是如何获得月份名称(应该本地化)
有这样的功能吗
如果没有这样的函数,可能是带有月份名称的表?您可以使用模块函数“
month\u names\u get
”以给定语言获取月份名称,并将语言作为参数传递。也可以使用“RH\u GET\u DATE\u DAYNAME
”获取日期(例如星期日)
纪尧姆您可以使用一个简单的FM“MONTH\u NAMES\u GET”
CALL FUNCTION 'MONTH_NAMES_GET'
EXPORTING
LANGUAGE = SY-LANGU
* IMPORTING
* RETURN_CODE =
TABLES
month_names = it_t247
EXCEPTIONS
MONTH_NAMES_NOT_FOUND = 1
OTHERS = 2
.
IF sy-subrc 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
我认为最简单的方法是将转换退出LDATE应用于日期字段。最简单的方法是调用函数模块转换\u退出\u LDATE\u输出 例如,这将转换为
20090101
到
(除非您需要在单独的字符串中包含日期、月份文本和年份,这似乎是您要指出的。无论如何,它可能会帮助其他人)。此代码将以长文本格式为您提供日期,如“2011年12月2日”。您可以相应地更改代码,以打印具有长月份名称的日期
DATA: LONG_DATE(20).
PERFORM GET_LONG_DATE USING LONG_DATE.
WRITE: LONG_DATE.
FORM GET_LONG_DATE USING DATE.
DATA: T_MONTH_NAMES LIKE TABLE OF T247 WITH HEADER LINE.
CALL FUNCTION 'MONTH_NAMES_GET'
EXPORTING
LANGUAGE = SY-LANGU
TABLES
MONTH_NAMES = T_MONTH_NAMES
.
DATA: YEAR(4) TYPE C,
MONTH(2) TYPE C,
DAY(2) TYPE C.
YEAR = SY-DATUM+(4).
MONTH = SY-DATUM+4(2).
DAY = SY-DATUM+6(2).
READ TABLE T_MONTH_NAMES INDEX ( MONTH ).
CONCATENATE T_MONTH_NAMES-LTX ' ' DAY INTO DATE SEPARATED BY SPACE.
CONCATENATE DATE ',' INTO DATE.
CONCATENATE DATE YEAR INTO DATE SEPARATED BY SPACE.
WRITE / DATE.
ENDFORM.
获取其他格式日期的其他方法有
- 使用WRITE语句
data: get_date(10). "field to store output date
- 将SAP日期从20130901转换为2013年9月1日
write sy-datum to get_date dd/mm/yyyy.
- 将SAP日期从20130901转换为2013年9月1日
write sy-datum to get_date dd/mm/yy.
- 使用数据操作技术
data: get_date(8). "field to store output date
- 将SAP日期从20130901转换为01092013
get_date(2) = sy-datum+6(2). get_date+2(2) = sy-datum+4(2). get_date+4(4) = sy-datum(4).
- 使用功能模块
data: get_date(8). "field to store output date
- 将日期从20130901转换为2013年9月1日
调用函数“CONVERSION\u EXIT\u IDATE\u OUTPUT”get_date = sy-datum.
这些是您可以用于特定日期/月份和年份的所有格式EXPORTING input = get_date IMPORTING OUTPUT = get_date.
- 将SAP日期从20130901转换为2013年9月1日
if w_country is initial.
select single LAND1
from T001W
into w_country
where WERKS eq w_the_plant.
endif.
SET COUNTRY w_country.
write w_the_date to w_export.
我认为这很有用
PARAMETERS: P_1 TYPE SY-DATUM.
DATA : LV_DATE TYPE SY-DATUM,LV_TIME TYPE SY-UZEIT,lv_month type string.
LV_TIME = SY-UZEIT.
DATA: YEAR(4) TYPE C,
MONTH(2) TYPE C,
DAY(2) TYPE C.
YEAR = P_1+0(4).
MONTH = P_1+4(2).
DAY = P_1+6(2).
IF MONTH = '01'.
lv_month = 'JAN'.
ELSEIF Month = '02'.
lv_month = 'Feb'.
ELSEIF Month = '03'.
lv_month = 'Mar'.
ELSEIF Month = '04'.
lv_month = 'Apr'.
ELSEIF Month = '05'.
lv_month = 'May'.
ELSEIF Month = '06'.
lv_month = 'Jun'.
ELSEIF Month = '07'.
lv_month = 'Jul'.
ELSEIF Month = '08'.
lv_month = 'Aug'.
ELSEIF Month = '09'.
lv_month = 'Sep'.
ELSEIF Month = '10'.
lv_month = 'Oct'.
ELSEIF Month = '11'.
lv_month = 'Nov'.
ELSEIF Month = '12'.
lv_month = 'Dec'.
ENDIF.
WRITE: '|',day NO-GAP,'-',
lv_month NO-GAP,'-',year NO-GAP.
if w_country is initial.
select single LAND1
from T001W
into w_country
where WERKS eq w_the_plant.
endif.
SET COUNTRY w_country.
write w_the_date to w_export.
data : lv_timestamp TYPE string,
lv_str TYPE STRING.
concatenate sy-datum sy-uzeit into lv_timestamp.
concatenate 'C:\Users\Roopa Rani\desktop\header' '_' lv_timestamp '.txt' INTO FILEPATH.
PARAMETERS: P_1 TYPE SY-DATUM.
DATA : LV_DATE TYPE SY-DATUM,LV_TIME TYPE SY-UZEIT,lv_month type string.
LV_TIME = SY-UZEIT.
DATA: YEAR(4) TYPE C,
MONTH(2) TYPE C,
DAY(2) TYPE C.
YEAR = P_1+0(4).
MONTH = P_1+4(2).
DAY = P_1+6(2).
IF MONTH = '01'.
lv_month = 'JAN'.
ELSEIF Month = '02'.
lv_month = 'Feb'.
ELSEIF Month = '03'.
lv_month = 'Mar'.
ELSEIF Month = '04'.
lv_month = 'Apr'.
ELSEIF Month = '05'.
lv_month = 'May'.
ELSEIF Month = '06'.
lv_month = 'Jun'.
ELSEIF Month = '07'.
lv_month = 'Jul'.
ELSEIF Month = '08'.
lv_month = 'Aug'.
ELSEIF Month = '09'.
lv_month = 'Sep'.
ELSEIF Month = '10'.
lv_month = 'Oct'.
ELSEIF Month = '11'.
lv_month = 'Nov'.
ELSEIF Month = '12'.
lv_month = 'Dec'.
ENDIF.
WRITE: '|',day NO-GAP,'-',
lv_month NO-GAP,'-',year NO-GAP.