|
#1
|
|||
|
|||
Obtener el nombre del mes de una fecha
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 |
#2
|
|||
|
|||
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 |
#3
|
|||
|
|||
Gracias German,
Cual seria la manera de solo tomar parte del string. mil gracias |
#4
|
||||
|
||||
Re:
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. |
#5
|
|||
|
|||
Buenas
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. |
#6
|
||||
|
||||
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
__________________
Luis Lipa
|
#7
|
|||
|
|||
Función devuelve Nombre del Mes
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 |
#8
|
|||
|
|||
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, |
Herramientas | Buscar en Tema |
Desplegado | |
|
|