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
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,
www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web