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

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'可以把任意格式的日期转换成指定格式的日期。

这样就比较灵活了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值