CHAR类型的日期(有分割符合)转换为YYYYMMDD的格式

本文介绍如何使用ABAP编程语言将包含分割符的日期字符串转换为YYYYMMDD格式,并提供了具体的代码示例。同时,还介绍了如何利用系统函数和用户自定义函数实现不同日期格式之间的灵活转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CHAR类型的日期(有分割符合)转换为YYYYMMDD的格式

DATA: f_date(254),
      f_char(
1),
      f_htype 
LIKE dd01v-datatype,
      f_datum 
TYPE sy-datum,
      F_CHAR8(
8).

f_date = 
' 02-03-2008 '.   "与用户的设置有关系
*f_date = ' 02/03/2008 '.
*f_date = ' 2008/03/02 '.

f_char = f_date+
2(1).

CALL FUNCTION 'NUMERIC_CHECK'
  
EXPORTING
    string_in = f_char
  
IMPORTING
    htype     = f_htype.

IF f_htype = 'NUMC'.
  f_char = f_date+
4(1).
ENDIF.

WHILE sy-subrc = 0.
  
REPLACE f_char WITH '' INTO f_date.
ENDWHILE.
CONDENSE f_date NO-GAPS.
f_datum = f_date.

CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
  
EXPORTING
    date_external                  = f_datum
*   ACCEPT_INITIAL_DATE            =
 
IMPORTING
   date_internal                  = f_datum
* EXCEPTIONS
*   DATE_EXTERNAL_IS_INVALID       = 1
*   OTHERS                         = 2
          .
IF sy-subrc <> 0.
  
MESSAGE 'CONVERT_DATE_TO_INTERNAL ERROR' TYPE 'I'.
  
ELSE.
    F_CHAR8 = f_datum.
ENDIF.

WRITE:F_CHAR8.

 


此主题相关图片如下:
按此在新窗口浏览图片
 
==========================网友回复================================
REPORT z_barry_test_date_format .
DATA: dat TYPE erdat,
      str(10) TYPE c,
      df .
dat = '20070803'.
WRITE dat TO str .
SELECT SINGLE datfm INTO df FROM usr01 WHERE bname = sy-uname.
CALL FUNCTION 'DATE_STRING_CONVERT'
     EXPORTING
          date_format = df
          date_string = str
     IMPORTING
          result_date = dat.
WRITE dat  .
 
==========================网友回复================================

恩,非常感谢。

1.表usr01很有用,而其中的字段DATFM对应的域XUDATFM 中的value range中有各种日期格式的对应关心。

2。FUNCTION 'DATE_STRING_CONVERT'可以把任意格式的日期转换成指定格式的日期。

这样就比较灵活了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值