日期大写

原文地址:日期大写作者:edwin
REPORT  z_barry_test NO STANDARD PAGE HEADING .
 
DATA: date1 LIKE sy-datum,
      date2(30).

date1 = sy-datum.
DO 400 TIMES.
  date1 = date1 + 1 .
  PERFORM get_date2 USING date1 CHANGING date2.
  WRITE / date2.
ENDDO.
 
*&---------------------------------------------------------------------*
*&      Form  get_date2
*&---------------------------------------------------------------------*
FORM get_date2 USING value(date_in) LIKE sy-datum
               CHANGING date_str.
  DATA: yy(10),
        mm(10),
        dd(10).
  DATA: len TYPE i.
 
  len = 3 - cl_abap_char_utilities=>charsize.
  yy = date_in+0(4).
  mm = date_in+4(2).
  dd = date_in+6(2).
 
  TRANSLATE yy USING '0〇1一2二3三4四5五6六7七8八9九'.
  TRANSLATE mm USING '1一2二3三4四5五6六7七8八9九'.
  TRANSLATE dd USING '1一2二3三4四5五6六7七8八9九'.
 
  IF date_in+4(2) > 9.
    SHIFT mm BY len PLACES .
    CONCATENATE '十' mm INTO mm.
  ENDIF.
  IF date_in+6(2) > 29 .
    SHIFT dd BY len PLACES .
    CONCATENATE '三十' dd INTO dd.
  ELSEIF date_in+6(2) > 19 .
    SHIFT dd BY len PLACES .
    CONCATENATE '二十' dd INTO dd.
  ELSEIF date_in+6(2) > 9.
    SHIFT dd BY len PLACES  .
    CONCATENATE '十' dd INTO dd.
  ENDIF.

  CONCATENATE yy '年' mm'月' dd '日' INTO date_str.
  REPLACE ALL OCCURRENCES OF '0' IN date_str WITH ``.
ENDFORM.
posted @ 2014-01-22 09:20  胡来  阅读(142)  评论(0编辑  收藏  举报