2009-10-13 8 views
8

Ich brauche ABAP Datum wieABAP Wie schreibe ich ein Datum als Langtext?

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

Die „01“ und „2009“ sind trivial, zu spalten, aber wie bekomme ich die Monatsnamen (die lokalisiert werden sollen)?

Gibt es eine Funktion, das zu tun?

Wenn es keine solche Funktion gibt, vielleicht eine Tabelle mit Monatsnamen?

Antwort

7

Sie können den Namen des Monats in einer bestimmten Sprache mit der Modulfunktion 'MONTH_NAMES_GET' abrufen und die Sprache als Parameter übergeben. Der Tag (Sonntag zum Beispiel) kann auch ‚RH_GET_DATE_DAYNAME

Guillaume erhalten werden unter Verwendung

0

Sie ein einfaches FM verwenden können ‚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

ich denke, die absolute einfachste Art und Weise anzuwenden wäre, die Umwandlung beenden LDATE zu Ihrem Datumsfeld. Am einfachsten ist es, den Funktionsbaustein CONVERSION_EXIT_LDATE_OUTPUT aufzurufen.

Dies würde zum Beispiel konvertieren

20090101 

zu

01. January 2009 

(Es sei denn, Sie brauchen, um tatsächlich den Tag, den Monat Text und Jahr in getrennten Strings haben, die Sie scheinen zu zeigen. Wie dem auch sei, vielleicht wird es jemand anderem helfen).

3

Dieser Code gibt Ihnen das Datum im Langtextformat wie 'Dezember 02, 2011'. Sie können den Code entsprechend ändern, um das Datum mit langem MONTH-Namen zu drucken.

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 

und andere Methoden, anderes Format des Datums

  • Mit der WRITE-Anweisung

     data: get_date(10). "field to store output date 
    
    • Datum von 20.130.901 bis 01.09 Wandelt SAP zu bekommen ist. 2013

      write sy-datum to get_date dd/mm/yyyy. 
      
    • Konvertiert das SAP-Datum von 20130901 in 01.09.13

      write sy-datum to get_date dd/mm/yy. 
      
    • Mit Datenverarbeitungstechniken

      data: get_date(8). "field to store output date 
      
    • Wandelt SAP Datum 20.130.901 zu 01092013

       get_date(2) = sy-datum+6(2). 
          get_date+2(2) = sy-datum+4(2). 
          get_date+4(4) = sy-datum(4). 
      
    • über Funktionsmodule

      data: get_date(8). "field to store output date 
      
    • Konvertiert Datum von 20.130.901 zu 01SEP2013

      get_date = sy-datum. 
      

      CALL FUNCTION

       EXPORTING 
      
          input   = get_date 
      
           IMPORTING 
      
          OUTPUT  = get_date. 
      

      'CONVERSION_EXIT_IDATE_OUTPUT' diese alle Formate, die Sie für die Angabe eines genauen Datums/Monat und Jahr

verwenden können
1

Normalerweise können Sie das Datum auch in das länderspezifische Datumsformat auf Anlagenebene exportieren:

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. 

Ich denke, es nützlich ist.

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