PDA

Ver la Versión Completa : Obtener el nombre del mes de una fecha


minerva0112
24/02/10, 13:02:24
hola :

Existe alguna funcion que solo me traiga el nombre del mes de un campo fecha. Estoy utilizando la funcion CONVERSION_EXIT_LDATE_OUTPUT, la cual trae la fecha completa pero como haria para solo mostrar el mes gracias

gerbeltran
24/02/10, 13:38:54
Buenas, necesariamente tiene que ser una función?
Porque con la que tienes ya puedes hacerlo, tengo entendido que la función CONVERSION_EXIT_LDATE_OUTPUT te devuelve algo asi como 24. Febrero2010 en el output.
Luego tomas de ahí la parte del string que te interesa y listo.

Otra opción también sería usar la función MONTH_NAMES_GET que te devuelve en una tabla interna los 12 meses con sus respectivos nombres , y ahí tu haces un READ TABLE con el mes que quieres obtener la descripción.

Si tienes alguna duda dime que te paso el código.

Saludos,
Germán


hola :

Existe alguna funcion que solo me traiga el nombre del mes de un campo fecha. Estoy utilizando la funcion CONVERSION_EXIT_LDATE_OUTPUT, la cual trae la fecha completa pero como haria para solo mostrar el mes gracias

minerva0112
24/02/10, 14:27:28
Gracias German,

Cual seria la manera de solo tomar parte del string.


mil gracias

Alfredosite
24/02/10, 15:16:09
Lo que debes hacer es esto:
*Tabla que guarda las descripciones de los meses
DATA: gt_t247 LIKE t247 OCCURS 0 WITH HEADER LINE.
*Variables que guarda el mes y la descripción
DATA: v_mes type T247-MNR,
v_mes_txt type T247-LTX,
v_fecha_txt(50) type c,
v_dia type d.

* Obtienes la descripción de todos los nombres de los meses
CALL FUNCTION 'MONTH_NAMES_GET'
EXPORTING
language = sy-langu
TABLES
month_names = gt_t247
EXCEPTIONS
month_names_not_found = 1
OTHERS = 2.
*Tomas el mes de un fecha por lo general es 5 y 6to caracter de la cadena de fechas ejemplo si hoy es 24/02/2010 dentro de abap la fecha se muestra asi: 20100224 entonces debes tomar solo los caracteres que muestran el mes.

v_dia = sy-datum.
v_mes = v_dia+4(2). "Obtienes el mes

*Obtienes la descripción del mes seleccionado
Loop at gt_t247 WHERE LTX eq v_mes.
v_mes_txt = gt_t247-ltx.
endloop.

*Si quieres mostrar la fecha en texto EJEM: 24 de Febrero del 2010
CONCATENATE v_dia+6(2) 'de' v_mes_txt 'del' v_dia(4) INTO v_fecha_txt.

gerbeltran
24/02/10, 19:57:45
Ahi Alfredo te explicó muy bien como hacerlo con la 2da opcion que te comenté.

Otra opción:
Para tomar el contenido del mes puedes hacer un split a la variable donde tienes el string que te devolvio la funcion que vos estabas usando.
Por ejemplo si la variable v_output = '24. Febrero 2010'.

DATA: str1 TYPE string,
str2 TYPE string,
str3 TYPE string.

SPLIT v_output AT space INTO: str1 str2 str3.

Y en str2 te va a quedar guardado el string "Febrero".


Saludos y éxitos!
Germán.

luis999
26/02/10, 19:41:27
hola :

Existe alguna funcion que solo me traiga el nombre del mes de un campo fecha. Estoy utilizando la funcion CONVERSION_EXIT_LDATE_OUTPUT, la cual trae la fecha completa pero como haria para solo mostrar el mes gracias


Hola, puedes usar esto:

CALL FUNCTION 'ISP_GET_MONTH_NAME'
EXPORTING
date = '00000000'
language = sy-langu
month_number = "Aca le das el mes"
IMPORTING
* LANGU_BACK =
longtext = "Aca obtienes el nombre del mes"
* SHORTTEXT =
EXCEPTIONS
calendar_id = 1
date_error = 2
not_found = 3
wrong_input = 4
OTHERS = 5.

Saludos, espero que te sirva

fporcel
01/10/10, 05:53:55
Te mando este ejemplo, creo que es más eficiente y lo puedes convertir fácilmente a cualquier Lenguaje o Base de Datos:
/////////////////////////////////////////////////////////////////////////
//Funtion: f_nom_mes
// Creada originalmente en Clipper y adaptada a Power Builder
//Argumentos:
//ai_num_mes número de mes (0 al 13 con, apertura y cierre)
//ai_lmes longitud de respuesta:
// Cuando es 3 DIC, o cuando es 9 DICIEMBRE
//Returns: String
//Descripción: Retorna el nombre del mes
////////////////////////////////////////////////////////////////////////
String ls_nom_mes, ls_nmeses

If ai_lmes =3 Then
ls_nmeses="APEENEFEBMARABRMAYJUNJULAGOSETOCTNOVDICCIE"
Else
ls_nmeses=" Apertura Enero Febrero Marzo Abril Mayo Junio Julio AgostoSetiembre OctubreNoviembreDiciembre Cierre"
End if
ls_nom_mes=mid(ls_nmeses,ai_num_mes*ai_lmes+1,ai_lmes)

Return ls_nom_mes

MagnaF
25/10/12, 21:05:42
Un poco tarde pero yo encontré la solución consultando directamente la tabla

SELECT single *
FROM T247
where spras = sy-langu
and mnr = mes.

Saludos,