2009-10-13 32 views
8

tôi cần phải chia ngày ABAP nhưABAP cách viết ngày làm văn bản dài?

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

Các "01" và "2009" là tầm thường, nhưng làm thế nào để tôi có được tên tháng (mà nên được bản địa hoá)?

Có chức năng để làm điều đó không?

Nếu không có chức năng như vậy, có lẽ một bảng có tên tháng?

Trả lời

7

Bạn có thể nhận tên của tháng bằng một ngôn ngữ cụ thể bằng chức năng mô-đun 'MONTH_NAMES_GET', chuyển ngôn ngữ làm tham số. Ngày (Chủ nhật chẳng hạn) cũng có thể thu được sử dụng 'RH_GET_DATE_DAYNAME'

Guillaume

0

Bạn có thể sử dụng một FM đơn giản 'MONTH_NAMES_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. 
2

Tôi nghĩ rằng cách đơn giản nhất tuyệt đối sẽ được áp dụng chuyển đổi thoát LDATE thành trường ngày của bạn. Dễ nhất là gọi mô-đun chức năng CONVERSION_EXIT_LDATE_OUTPUT.

này sẽ ví dụ chuyển đổi

20090101 

để

01. January 2009 

(Trừ khi bạn cần phải thực sự có ngày, văn bản tháng, năm trong chuỗi riêng biệt, mà bạn dường như chỉ ra. Dù sao, có lẽ nó sẽ giúp người khác).

3

Mã này sẽ cung cấp cho bạn ngày theo định dạng văn bản dài như 'ngày 02 tháng 12 năm 2011'. Bạn có thể thay đổi mã phù hợp để in ngày có tên MONTH dài.

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. 
2
* 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 

và các phương pháp khác để có được định dạng khác kể từ ngày được

  • Sử dụng câu lệnh VIẾT

     data: get_date(10). "field to store output date 
    
    • Chuyển đổi ngày SAP từ 20.130.901 đến 01,09. 2013

      write sy-datum to get_date dd/mm/yyyy. 
      
    • Chuyển đổi ngày SAP từ 20130901 thành 01.09.13

      write sy-datum to get_date dd/mm/yy. 
      
    • Sử dụng các kỹ thuật thao tác dữ liệu

      data: get_date(8). "field to store output date 
      
    • Chuyển đổi ngày SAP từ 20130901 để 01092013

       get_date(2) = sy-datum+6(2). 
          get_date+2(2) = sy-datum+4(2). 
          get_date+4(4) = sy-datum(4). 
      
    • Sử dụng các module chức năng

      data: get_date(8). "field to store output date 
      
    • Chuyển đổi ngày từ 20.130.901 đến 01SEP2013

      get_date = sy-datum. 
      

      CALL CHỨC NĂNG 'CONVERSION_EXIT_IDATE_OUTPUT'

       EXPORTING 
      
          input   = get_date 
      
           IMPORTING 
      
          OUTPUT  = get_date. 
      

      những tất cả các định dạng mà bạn có thể sử dụng cho những ngày/tháng cụ thể và năm

1

Thông thường, bạn cũng có thể xuất ngày sang định dạng ngày tháng cụ thể theo quốc gia của nhà máy:

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. 
-2
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. 

Tôi nghĩ đó là hữu ích.

-1
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. 
Các vấn đề liên quan