代码之家  ›  专栏  ›  技术社区  ›  ilya n.

ABAP如何将日期写成长文本?

  •  8
  • ilya n.  · 技术社区  · 15 年前

    我需要像这样分开ABAP日期

    20091101 --> "01", "november", "2009"
    

    “01”和“2009”是微不足道的,但是如何获得月份名称(应该本地化)?

    有这样的功能吗?

    8 回复  |  直到 3 年前
        1
  •  8
  •   PATRY Guillaume    15 年前

    您可以使用模块函数的 MONTH_NAMES_GET ,将语言作为参数传递。也可以使用' RH_GET_DATE_DAYNAME

    纪尧姆

        2
  •  3
  •   mydoghasworms    13 年前

    例如,这将转换为

    20090101
    

    01. January 2009
    

    (除非你需要在单独的字符串中包含日期、月份和年份,这似乎是你要指出的。无论如何,它可能会帮助其他人)。

        3
  •  3
  •   Muhammad Ramzan    13 年前

    此代码将以长文本格式显示日期,如“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.
    
        4
  •  2
  •   TheDean    11 年前
    * to get full name of the day / month also can use
    
    
              GET_MONTH_NAME ... for month and 
                GET_DATE_DAYNAME for the specific day name too
    

    • 使用WRITE语句

              data: get_date(10).  "field to store output date
      
      • 将SAP日期从20130901转换为2013年9月1日

            write sy-datum to get_date dd/mm/yyyy.
        
      •     write sy-datum to get_date dd/mm/yy.
        
      • 使用数据操作技术

        data: get_date(8).  "field to store output date
        
      •      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
        
      •     get_date   = sy-datum.
        

        调用函数“CONVERSION\u EXIT\u IDATE\u OUTPUT”

               EXPORTING
        
          input         = get_date
        
                IMPORTING
        
             OUTPUT        = get_date.
        

        这些是您可以用于特定日期/月份和年份的所有格式

        5
  •  1
  •   Lloyd    11 年前

    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.
    
        6
  •  0
  •   alexandrul    13 年前

    您可以使用一个简单的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.
    
        7
  •  -1
  •   Ravikiran Vadlamudi    7 年前
    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.
    
        8
  •  -2
  •   brasofilo Gary    10 年前
    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.
    

    我认为这很有用。