🚀PROMO #PLANCARRERA2024 - 🔥Bonificaciones, Precios Congelados y Cuotas

 X 

✒️ABAP El evento AT SELECTION-SCREEN y los tipos de mensajes

ABAP El evento AT SELECTION-SCREEN y los tipos de mensajes

ABAP El evento AT SELECTION-SCREEN y los tipos de mensajes

Como veo que existen una amplia cantidad de apuntes esquemáticos de la teoría de las lecciones, y algunos muy buenos, a mí me gustaría colaborar con lo que mejor se me da: El código fuente de Programas testados, que amplíen siempre aquellos puntos mostrados en el tema.

En esta ocasión voy a presentar una versión mejorada del código de una pantalla de selección donde se realizan unas validaciones de datos. Espero que os sea útil.

CODIGO FUENTE PARA UNA PANTALLA DE SELECCION

Version 2

  1. *&---------------------------------------------------------------------*
  2. *& Report Z*****_PANT_SELECCION_V2
  3. *&---------------------------------------------------------------------*
  4. *& Sustituir los ***** por el legajo de cada uno
  5. *&---------------------------------------------------------------------*


  6. REPORT z*****_pant_seleccion_v2.
  7. ****************************************************
  8. * <----- Copiar desde aqui
  9. ****************************************************
  10. CONSTANTS:
  11. ct_cab_esp(40) TYPE c VALUE 'Estado de cuentas entre',
  12. ct_cab_eng(40) TYPE c VALUE 'Account balance between',
  13. ct_y_esp(5) TYPE c VALUE 'y',
  14. ct_y_eng(5) TYPE c VALUE 'and',
  15. ct_debe_esp(10) TYPE c VALUE 'debe a',
  16. ct_debe_eng(10) TYPE c VALUE 'owes to',
  17. ct_cant_esp(40) TYPE c VALUE 'la cantidad de',
  18. ct_cant_eng(40) TYPE c VALUE 'the amount of',
  19. ct_dolar TYPE c VALUE '$',
  20. ct_euro TYPE c VALUE '€',
  21. ct_rate_esp(40) TYPE c VALUE 'con la cotización',
  22. ct_rate_eng(40) TYPE c VALUE 'with exchange rate',
  23. ct_noeu_esp(100) TYPE c VALUE 'Si selecciona moneda Euro, debe rellenar el campo "Deuda en Euros".',
  24. ct_noeu_eng(100) TYPE c VALUE 'If you select Euro currency, you must fill "Deuda en Euros" field.',
  25. ct_nous_esp(100) TYPE c VALUE 'Si selecciona moneda Dolar, debe rellenar el campo "Deuda en Dolares".',
  26. ct_nous_eng(100) TYPE c VALUE 'If you select Dollar currency, you must fill "Deuda en Dolares" field.',
  27. ct_valid_esp(100) TYPE c VALUE 'Van a procesarse los datos y presentar el reporte de salida.',
  28. ct_valid_eng(100) TYPE c VALUE 'Data will be processed and report will be shown.',
  29. ct_date_esp(40) TYPE c VALUE 'a fecha',
  30. ct_date_eng(40) TYPE c VALUE 'on date'.
  31. DATA:
  32. lc_cambioeu_us TYPE p DECIMALS 5,
  33. lc_dolar_value TYPE p DECIMALS 2,
  34. lc_euro_value TYPE p DECIMALS 2,
  35. lc_formatofecha(10) TYPE c,
  36. lt_cambioeu_us(11) TYPE c,
  37. lt_dolar_value(11) TYPE c,
  38. lt_euro_value(11) TYPE c,
  39. lt_eur_usd_sort(22) TYPE c,
  40. lt_cab(120) TYPE c.
  41. *******************************************************
  42. INITIALIZATION.
  43. *******************************************************
  44. CLEAR:
  45. lc_cambioeu_us,
  46. lc_dolar_value,
  47. lc_euro_value ,
  48. lc_formatofecha,
  49. lt_cambioeu_us,
  50. lt_dolar_value,
  51. lt_euro_value,
  52. lt_eur_usd_sort,
  53. lt_cab.
  54. *******************************************************
  55. SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
  56. *******************************************************
  57. * Utilizamos begin of line - comment - end of line como espaciador
  58. SELECTION-SCREEN BEGIN OF LINE.
  59. SELECTION-SCREEN COMMENT 1(66) text-006.
  60. SELECTION-SCREEN END OF LINE.
  61. * Subbloque de fecha y cotizacion
  62. SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
  63. PARAMETERS: p_fecha LIKE sy-datum OBLIGATORY DEFAULT sy-datum,
  64. p_rate TYPE p DECIMALS 5 DEFAULT lc_cambioeu_us OBLIGATORY .
  65. SELECTION-SCREEN END OF BLOCK b2.
  66. * Subbloque de Deudor y Acreedor
  67. SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-003.
  68. PARAMETERS: p_deud(30) TYPE c OBLIGATORY,
  69. p_acree(30) TYPE c OBLIGATORY.
  70. SELECTION-SCREEN END OF BLOCK b3.
  71. * Subbloque de Monedas e Importes
  72. SELECTION-SCREEN BEGIN OF BLOCK b4 WITH FRAME TITLE text-004.
  73. PARAMETERS: p_eu RADIOBUTTON GROUP grp2,
  74. p_us RADIOBUTTON GROUP grp2.
  75. PARAMETERS: p_euros TYPE p DECIMALS 2 ,
  76. p_dolar TYPE p DECIMALS 2.
  77. SELECTION-SCREEN END OF BLOCK b4.
  78. * Subbloque de Lenguajes
  79. SELECTION-SCREEN BEGIN OF BLOCK b5 WITH FRAME TITLE text-005.
  80. PARAMETERS: p_esp AS CHECKBOX DEFAULT 'x',
  81. p_ing AS CHECKBOX.
  82. SELECTION-SCREEN END OF BLOCK b5.
  83. *******************************************************
  84. SELECTION-SCREEN END OF BLOCK b1.
  85. *******************************************************
  86. *******************************************************
  87. AT SELECTION-SCREEN. " Validamos Datos
  88. *******************************************************
  89. IF not p_us IS INITIAL. " Si se ha elegido moneda Dolar
  90. IF p_dolar IS INITIAL. " Testar Deuda en Dolares
  91. MESSAGE ct_nous_esp TYPE 'E'.
  92. ENDIF.
  93. ENDIF.
  94. IF not p_eu IS INITIAL. " Si se ha elegido moneda Euro
  95. IF p_euros IS INITIAL. " Testar Deuda en Euros
  96. MESSAGE ct_noeu_esp TYPE 'E'.
  97. ENDIF.
  98. ENDIF.
  99. MESSAGE 'Van a procesarse los datos y presentar el reporte de salida' TYPE 'I'.
  100. *******************************************************
  101. START-OF-SELECTION.
  102. *******************************************************
  103. * Subrutina que formatea la fecha
  104. PERFORM formatear_fecha USING p_fecha '/' 1
  105. CHANGING lc_formatofecha.
  106. IF NOT p_eu IS INITIAL.
  107. * Si la moneda usada es el euro
  108. * convertir Euros -> Dolares
  109. lc_euro_value = p_euros.
  110. lc_dolar_value = lc_euro_value * p_rate.
  111. WRITE lc_euro_value TO lt_euro_value. " Pasa Numero a Caracter
  112. WRITE lc_dolar_value TO lt_dolar_value. " Pasa Numero a Caracter
  113. ELSE.
  114. * Si no, la moneda usada es el Dolar
  115. * convertir Dolares -> Euros
  116. lc_dolar_value = p_dolar.
  117. lc_euro_value = lc_dolar_value / p_rate.
  118. WRITE lc_euro_value TO lt_euro_value. " Pasa Numero a Caracter
  119. WRITE lc_dolar_value TO lt_dolar_value. " Pasa Numero a Caracter
  120. ENDIF.
  121. CONDENSE lt_dolar_value. " Quita los espacios sobrantes
  122. CONDENSE lt_euro_value. " Quita los espacios sobrantes
  123. CLEAR lt_eur_usd_sort.
  124. IF NOT p_eu IS INITIAL.
  125. * Si la moneda usada es Euro
  126. * poner primero valor € y luego valor $
  127. CONCATENATE lt_euro_value ct_euro
  128. '/' lt_dolar_value ct_dolar INTO lt_eur_usd_sort
  129. SEPARATED BY ' '.
  130. ELSE.
  131. * Si no, la moneda usada es Dolar
  132. * poner primero valor $ y luego valor €
  133. CONCATENATE lt_dolar_value ct_dolar
  134. '/' lt_euro_value ct_euro INTO lt_eur_usd_sort
  135. SEPARATED BY ' '.
  136. ENDIF.
  137. IF NOT p_esp IS INITIAL.
  138. * Si esta marcado el idioma Español
  139. * Componer cabecera en Español
  140. CLEAR lt_cab.
  141. CONCATENATE ct_cab_esp p_deud ct_y_esp p_acree
  142. ct_date_esp lc_formatofecha INTO lt_cab
  143. SEPARATED BY ' '.
  144. WRITE:/ lt_cab.
  145. ENDIF.
  146. * Si esta en dos idiomas separar la cabecera con una linea
  147. IF NOT p_ing IS INITIAL AND NOT p_esp IS INITIAL.
  148. ULINE.
  149. ENDIF.
  150. IF NOT p_ing IS INITIAL.
  151. * Si esta marcado el idioma Inglés
  152. * Componer Cabecera en Inglés
  153. CLEAR lt_cab.
  154. CONCATENATE ct_cab_eng p_deud ct_y_eng p_acree
  155. ct_date_eng lc_formatofecha INTO lt_cab
  156. SEPARATED BY ' '.
  157. WRITE:/ lt_cab.
  158. ENDIF.
  159. * Separador con linea en medio
  160. SKIP.
  161. ULINE.
  162. SKIP.
  163. IF NOT p_esp IS INITIAL.
  164. * Si esta marcado el idioma Español
  165. * Componer texto en IEspañol
  166. CLEAR lt_cab.
  167. CONCATENATE p_deud ct_debe_esp p_acree
  168. ct_cant_esp lt_eur_usd_sort INTO lt_cab
  169. SEPARATED BY ' '.
  170. WRITE:/ lt_cab.
  171. ENDIF.
  172. IF NOT p_ing IS INITIAL.
  173. * Si esta marcado el idioma Inglés
  174. * Componer texto en Inglés
  175. CLEAR lt_cab.
  176. CONCATENATE p_deud ct_debe_eng p_acree
  177. ct_cant_eng lt_eur_usd_sort INTO lt_cab
  178. SEPARATED BY ' '.
  179. WRITE:/ lt_cab.
  180. ENDIF.
  181. *&---------------------------------------------------------------------*
  182. *& Form FORMATEAR_FECHA
  183. *&---------------------------------------------------------------------*
  184. * text
  185. *----------------------------------------------------------------------*
  186. * -->D_TEXT text fecha nativa (AAAAMMDD)
  187. * -->C_SEP text Separados a usar (.|/|-)
  188. * -->I_MODO int 0=AAAAMMDD 1=DDMMAAAA 2=MMDDAAAA
  189. * <--R_FORMATOFECHA text Fecha formateada con el separador C_SEP
  190. *----------------------------------------------------------------------*
  191. FORM formatear_fecha USING value(d_texto)
  192. value(c_sep)
  193. value(i_modo)
  194. CHANGING r_formatofecha.
  195. DATA: lc_year(4) TYPE c,
  196. lc_month(2) TYPE c,
  197. lc_day(2) TYPE c,
  198. lc_return(10) TYPE c.
  199. * Separamos Año, Mes y Dia
  200. WRITE d_texto(4) TO lc_year.
  201. WRITE d_texto+4(2) TO lc_month.
  202. WRITE d_texto+6(2) TO lc_day.
  203. CASE i_modo.
  204. WHEN 1. "DD MM AAAA con el separador
  205. CONCATENATE lc_day lc_month lc_year
  206. INTO lc_return
  207. SEPARATED BY c_sep.
  208. WHEN 2. "MM DD AAAA con el separador
  209. CONCATENATE lc_month lc_day lc_year
  210. INTO lc_return
  211. SEPARATED BY c_sep.
  212. WHEN OTHERS. "AAAA MM DD con el separador
  213. CONCATENATE lc_year lc_month lc_day
  214. INTO lc_return
  215. SEPARATED BY c_sep.
  216. ENDCASE.
  217. r_formatofecha = lc_return. "Colocamos el resultado en CHANGING
  218. ENDFORM. " FORMATEAR_FECHA
  219. ****************************************************
  220. * <----- Copiar hasta aqui
  221. ****************************************************


 

 

 


Sobre el autor

Publicación académica de Carlos Piles Rosell, en su ámbito de estudios para la Carrera Consultor ABAP.

SAP Senior

Carlos Piles Rosell

Profesión: Analista de Sistemas y Programador - España - Legajo: GZ57B

✒️Autor de: 24 Publicaciones Académicas

🎓Egresado de los módulos:

Disponibilidad Laboral: PartTime

Certificación Académica de Carlos Piles

✒️+Comunidad Académica CVOSOFT

Continúe aprendiendo sobre el tema "El evento AT SELECTION-SCREEN y los tipos de mensajes" de la mano de nuestros alumnos.

SAP Master

El Evento AT SELECTION-SCREEN y los tipos de mensajes Utilizaremos el evento AT SELECTION-SCREEN pata el analisis de los mensajes y errores que se generan a partir de lo introducido por el usuario en la pantalla de seleccion del programa.

Acceder a esta publicación

Creado y Compartido por: Juan Fernando Guerra Mata / Disponibilidad Laboral: FullTime

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP SemiSenior

Resumen Lección: El evento AT SELECTION-SCREEN y los tipos de mensajes. El evento AT SELECTION-SCREEN se utiliza para el análisis de los mensajes y errores que se generan a partir de lo introducido por el usuario en la pantalla de selección del programa. Por lo tanto si no se coloca en esta sección puede ocurrir un Dump y detener el correcto funcionamiento del sistema.

Acceder a esta publicación

Creado y Compartido por: Alexander José Tovar Rodríguez

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Senior

Los mensajes se crean en la transaccion se91 se utiliza un & para agregar variables y puede ser de 50 caracteres y solo puede haber hasta 4 variables EVENTO AT-SELECTION-SCREEN es utilizada para validacion de parametros Si hay mas de un parametro que se desea validar se debe de utilizar 1 Evento de AT-SELECTION-SCREEN por parametros, solo se debe de agrega la palabra ON al final MESAGE e000(clase) WITH 'es un mensaje'. donde E es de error, S de exito, I de informacion W de warning, A de terminacion y X es de dump AT-SELECTION-SCREEN ON variable Si la valdiacion se pone en el evento START-OF-SELECTION, si se muestra el mesnajes pero el sistema continua, en cambio en AT-SELECTION-SCREEN el probelma se detiene.

Acceder a esta publicación

Creado y Compartido por: Jesus Caldera

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Senior

El evento AT SELECTION-SCREEN y los tipos de mensajes /h para entrar en modo debug. At-selection-Screen es el primer evento que se ejecuta luego de ingresado los parametros. Mensajes de error si se ejecutan dentro de start-of-selection se ejecuta como DUMP es decir si interrumpe el proceso si visualiza en la barra inferior el texto del mensaje pero impide la interaccion del usuario con el programa. para evitar esto se pone la clausula display like. Display like para que se vea como mensaje de error

Acceder a esta publicación

Creado y Compartido por: Silvia Marina Carrizo

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Senior

Evento AT SELECTION-SCREEN y Tipos de mensajes. *En el campo de comandos /h habilita el debug En un reporte ingresar los datos requeridos, en modo debugger verémos que el primer evento que se ejecuta es AT SELECTION-SCREEN La validación indicada sobre fecha menor a hoy nos informará con un mensaje e000(z_prueba) que el valor ingresado no es correcto. Se pueden agregar todas las validaciones deseadas pero siempre dentro de este evento. Tipos de mensaje. S=Status - No hay interrupción E=Error I=Information - Continúa despues de la interrupción W=Warning E=Error A=Terminación X=Dump

Acceder a esta publicación

Creado y Compartido por: Armando Mayo Marquez / Disponibilidad Laboral: FullTime + Carta Presentación

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP SemiSenior

Video - El evento AT SELECTION-SCREEN y los tipos de mensajes. Unidad 2 - Lección 9 Se muestra un video utilizando el evento AT SELECTION-SCREEN para el analisis de los mensajes y errores que se generan a partir de lo introducido por el usuario en la pantalla de selección del programa junto con los efectos en pantalla que producen dichos mensajes. Ayuda para la comprensión de la parte teórica explicada en la lección anterior de esta misma unidad.

Acceder a esta publicación

Creado y Compartido por: Jose Angel Duran Fernandez

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Senior

EL EVENTO AT SELECTION-SCREEN Y LOS TIPOS DE MENSAJES El evento AT SELECTION-SCREEN analizara los mensajes y errores que se generan a partir de lo introducido por el usuario en la pantalla de seleccion del programa. La particularidad que presentan los mensajes de error es que si el mensaje se ejecuta dentro del evento STAR-OF-SELECTION la ejecucion produce lo que en ABAP se conoce como DUMP, es decir, se interrumpe el procesamiento actual del programa se visualiza en la barra inferior de la pantalla el texto del mensaje con el simbolo rojo caracteristico y lo peor es que impide totalmente la interaccion del usuario con el programa debiendo el usuario volver a ejecutar el programa, esto se verifica facilmente ejecutando un mensaje de error dentro...

Acceder a esta publicación

Creado y Compartido por: Miguel Ochoa

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Senior

EL EVENTO AT SELECTION-SCREEN Y LOS TIPOS DE MENSAJES ESTANDO EN EL PROGRAMA COLOCAMOS /H EN EL CAMPO DE COMANDOS PARA PODER DEBUGGEAR PASO A PASO NUESTRO PROGRAMA, EJECUTAMOS Y VEMOS QUE EL PRIMER EVENTO QUE SE EJECUTA ES EL AT SELECTION-SCREEN. SE AGREGAN ALGUNAS VALIDACIONES PARA PODER VER LOS TIPOS DE MENSAJES CON LOS QUE CUENTA ABAP MENSAJES E CON ESTE ERROR APARECERA UN MENSAJE EN LA PARTE INFERIOR DE LA PANTALLA QUE CORTA EL PROCESAMIENTO DEL PROGRAMA S CON ESTE ERROR APARECERA UN MENSAJE CON EL ICONO VERDE DE CONTINUAR Y PERMITE CONTINUAR CON EL PROCESAMIENTO DEL PROGRAMA W CON ESTE ERROR APARECERA UN MENSAJE CON EL ICONO AMARILLO Y NO SE PERMITE CONTINUAR CON EL PROCESAMIENTO I CON ESTE ERROR APARECERA UN MENSAJE EN...

Acceder a esta publicación

Creado y Compartido por: Luis Eugenio Leyva Orozco

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Senior

Evento AT-SELECTION-SCREEN: para el analisis de los mensajes de errores que se generan a partir de lo introducido por los usuarios en la pantalla de seleccion (validaciones, etc). Tipos de Mensajes: S : Imprime un mesaje de exito en la barra de estado, y el procesamiento del programa sigue sin problemas. I: Imprime el mensaje de Informacion en un PopUp. El usuario debe darle click al boton seguir para proceguir con el proceso del programa. W: Imprime el mensaje de advertencia en la barra de estado y finaliza el proceso. E: Imprime el mensaje de Error en la barra de estado y el procesamiento del programa se cancela. Cuando utilizamos el AT-SELECTION-SCREEN, lo mas conveniente es validar cada campo(parametro) por separado por Ej: AT-SELECTION-SCREEN...

Acceder a esta publicación

Creado y Compartido por: Jessica Daiana Garcete Paez / Disponibilidad Laboral: PartTime + Carta Presentación

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Senior

Lección 9 Video - El evento AT SELECTION-SCREEN y los tipos de mensajes Dos temas fundamentales para un programador ABAP AT SELECTION-SCREEN para el análisis de los mensajes y errores que se generan a partir de lo introducido por el usuario en la pantalla de selección de programa.Veremos cada uno de los tipos de mensajes existentes y los efectos en la pantalla que producen, que van desde la interacción con el usuario, la cancelación del programa o transacción, el bloqueo de la pantalla o la simple aparición de un mensaje en la barra de estado del modo de SAP. AT SELECTION-SCREEN ON validarlo por cada variable es lo recomendable, pero se puede utilizar el AT SELECTION-SCREEN para validar...

Acceder a esta publicación

Creado y Compartido por: Freddy Enrique Sierra Yepez

 


 

👌Genial!, estos fueron los últimos artículos sobre más de 79.000 publicaciones académicas abiertas, libres y gratuitas compartidas con la comunidad, para acceder a ellas le dejamos el enlace a CVOPEN ACADEMY.

Buscador de Publicaciones:

 


 

No sea Juan... Solo podrá llegar alto si realiza su formación con los mejores!