2015-08-27 10 views
6

Mi piacerebbe formattare un orario (SY-TIMLO) nel formato definito dall'utente in SU01. Per gli utenti statunitensi, questo spesso coinvolge AM/PM. Il modo più semplice che ho trovato è:Formato in ABAP, rimozione dei secondi

lv_formatted_time = |{ lv_time TIME = USER }| 

C'è un modo semplice per rimuovere i secondi senza l'uso di metodi più ampie, come quella qui sotto?

*-- Convert time to user time format based on environment setting. 
*-- As we are not using SET COUNTRY this has the same effect as 
*-- user settings in SU01 > Defaults > Time Format. US users will see AM/PM. 

    CALL METHOD CL_ABAP_TIMEFM=>CONV_TIME_INT_TO_EXT 
     EXPORTING 
     TIME_INT   = lv_time 
     WITHOUT_SECONDS  = ABAP_TRUE 
     FORMAT_ACCORDING_TO = CL_ABAP_TIMEFM=>ENVIRONMENT 
     IMPORTING 
     TIME_EXT   = lv_formatted_time. 
+0

provare a leggere il codice di quel metodo. Forse ci sono alcune convalide che non ti servono. Tuttavia, consiglierei di usare il metodo standard per farlo. – Christian

risposta

4

Per quanto posso vedere, questo non è banalmente possibile utilizzando i modelli di stringa. Consiglierei di attenersi al metodo che hai già menzionato. Se siete interessati a accorciare il codice e dal momento che probabilmente sempre di utilizzare gli stessi valori per WITHOUT_SECONDS e FORMAT_ACCORDING_TO, si potrebbe avvolgere in un metodo con un parametro di ritorno in modo che il codice sarebbe poi contenere linee come

lv_formatted_time = format_time_wo_seconds(lv_time). 

in alternativa, è possibile utilizzare una macro - io non sono un grande fan di questi per modularizzazione, ma questo è uno dei luoghi in cui essi vengono a portata di mano:

DEFINE format_time_short. 
    CALL METHOD CL_ABAP_TIMEFM=>CONV_TIME_INT_TO_EXT 
    EXPORTING 
     TIME_INT   = &1 
     WITHOUT_SECONDS  = ABAP_TRUE 
     FORMAT_ACCORDING_TO = CL_ABAP_TIMEFM=>ENVIRONMENT 
    IMPORTING 
     TIME_EXT   = &2. 
END-OF-DEFINITION. 

format_time_short lv_time lv_formatted_time. 
+0

Sì, mi limiterò a racchiudere il metodo standard in uno dei miei. Neanche un grande fan dei macro! –