✒️ABAP Los módulos de funciones
ABAP Los módulos de funciones
Tx SE37 - Biblioteca de Funciones
CALL FUNCTION <nombre_funcion>
EXPORTING <parametros_entrada>
IMPORTING <parametros_salida>
TABLES <tablas>
EXCEPTIONS <excepciones>.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
titlebar = 'Aplicación de Bancos'
text_question = 'Desea borrar el registro?'
text_button_1 = 'Si'
text_button_2 = 'No'
display_cancel_button = ' '
EXCEPTIONS
text_not_found = 1
OTHERS = 2.
En SE37 usar botón Pattern (Modelo) para insertar dentro del programa el esqueleto de cualquier función creada.
CONSULTAS AL INSTRUCTOR
Consulta Alumno:
Tengo una duda, en la leccion dice que para declarar una subrutina debemos ir a Pasar a / Programa de Control y en la solucion del ejercicio de practica utilizaste Pasar a / Datos Globales. Que diferencia hay en estas dos opciones, en que casos se debe utilizar cada una?
Respuesta Instructor:
Existen dos formas de hacer las cosas:
1-Podemos declarar variables globales y subrutinas globales dentro de la sección "Datos globales".
2-Podemos declarar variables globales dentro de la sección "Datos globales" y declarar subrutinas dentro de la sección "Programa de Control" es decir declarando un INCLUDE de Subrutinas y alli dentro colocar todas nuestras subrutinas.
Podemos utilizar cualquiera de las dos formas, no hay diferencia.
Consulta Alumno:
Buenas noches, he realizado mi ejercicio de crear funciones y grupos de funciones y lo tengo claro.
ahora bien, ¿Como llamo a la función que hemos creado (ZFUN_USUARIOS_UQ67T) en cualquier programa.
He probado con la siguiente linea de codigo despues del REPORT :
INCLUDE ZFUN_USUARIOS_UQ67T.
pero me sale el error de compilación:
"INCLUDE report ZFUN_USUARIOS_UQ67T is not found."
Respuesta Instructor:
Hola Diego, como estas?
Para ejecutar la función que acabas de crear en un programa debes: primero crear el programa, por ejemplo:
ZREPORTE_FUNCION_UQ67T
Y dentro del programa, modificandolo, presionas el botón de la barra de herramientas "Modelo".
A continuación en la ventana de dialogo que se visualiza en pantalla, en el campo CALL FUNCTION introduces el nombre de tu módulo de función y presionas el botón de la tilde verde (Continuar).
Esto provocará que se genere en el programa el esqueleto del modulo de funciones.
Por último, debes completar los parametros de entrada del modulo de funciones y activar el programa.
Consulta Alumno:
HOLA EZEQUIEL
CUANDO CREO EL GRUPO DE FUNCIONES Y QUIERO ACTIVAR EL MODULO DE FUNCION ME DA EL SIGUIENTE ERROR QUE HAGO
REPORT/PROGRAM statement missing, or program type is include.
the main program of the function zprueba_jqa does not begin with FUNCTION-POOL
Respuesta Instructor:
No te preocupes, que este error es muy común y se debe a que al momento de crear el modulo de funciones, estas creando tambien un grupo de funciones e include que tambien deben activarse, es decir cuando visualizas la pantalla de activación también debes seleccionarlos para ser activados junto con el módulo de funciones.
Consulta Alumno:
Hola, cuando trato de activar mi función me marca siempre un error en el grupo de funciones que cree: "REPORT/PROGRAM statement missing, or program type is INCLUDE", ¿A qué se debe?
Respuesta Instructor:
No te preocupes, es un error muy comun que sucede al trabajar con módulos de funciones.
Pasa lo siguiente, cuando creamos modulos de funciones, estamos creando tambien un grupo de funciones y varios includes que se crean en forma automática.
Es por ello que al momento de activar el modulo de funciones, en la pantalla de activación debes seleccionar todos los objetos que se crearon junto con el modulo de funciones, es decir los includes y el grupo de función.
Consulta Alumno:
Hola Ezequiel,
Estoy algo confundida con el ejercicio de practica. Primero porque se crean numerosos include automaticos que debo activar para que me funcione, luego tuve que declarar las variables y estructuras de datos en Pasar a/Programa de control y ahi dentro de INCLUDE LZFUN_USUARIOS_QV33QTOP. " Global Data, de lo contrario me daba un error de Function-Pool (Indicame si esto que hice esta bien???).
Ahora ya no tengo errores pero en la pantalla luego de la ejecucion me pide el valor de la Accion, coloco 'A' por ej, y en T_Usuarios coloca Resultado: 0 Entradas. En la barra de estatus sale por ej 'Se insertaron correctamente los registros', tal como se solicita en el ejercicio. Ahora bien, en T_Usuarios no deberia aparecer algo mas?
Respuesta Instructor:
Lo que hiciste hasta el momento esta perfecto.
Primero creamos el grupo de funciones, luego el módulo de funciones, conjuntamente y en forma automática se generan varios includes.
Posteriormente ingresamos el código correspondiente al módulo de funciones.
Las declaraciones de datos y subrutinas debemos realizarlas en los "Datos Globales".
Finalmente al momento de activar, debemos tener presente que debemos activar "todos" los objetos que se generaron, es decir:
1-El grupo de funciones
2-El módulo de funciones
3-Los includes
Ahora bien, para probar el módulo de funciones lo ejecutamos con F8.
Recordemos que nuestro módulo de funciones realizará Altas, Bajas y Modificaciones de registros existentes en la tabla base de datos Z que creamos anteriormente.
Al ejecutarlo visualizaremos la pantalla donde debemos ingresar los datos a nuestros parametros de entrada. que son:
1-La accion (A, B o M)
2-La tabla T_USUARIOS (1 o más registros)
Es decir lo que te esta faltando es cargar uno o más registros en la tabla T_USUARIOS para que el módulo de función los procese.
Consulta Alumno:
Cuando intento hacer el ejercicio me aparece este error:
PROGRAM/ REPORT statement missing or program type is INCLUDE
Que hago mal?
Respuesta Instructor:
Hola Victor, como estas?
Este error aparece cuando estas intentando activar el módulo de funciones.
Se debe a que al momento de activar, debes tener en cuenta que cuando creamos un módulo de funciones, también creamos un grupo de funciones y sin que nos demos cuenta tambien se crean varios INCLUDES, por lo que activar tambien debes seleccionar estos objetos de la pantalla de activación.
Consulta Alumno:
Hola Ezequiel,
Cuando intento seguir el ejercicio con el cual explicas el crear modulos de función, todo me trabaja bien hasta que en la pestaña TABLES coloco lo que dices ST_USUARIO, Typef: LIKE, Tipo Referencia: Z_TABLA_USARIO, Si intento moverme haci la pestaña de Código me da un error diciéndo "Tables parameter are obsolete".
Respuesta Instructor:
Hola Alberto,
No estas cometiendo ningun error, lo que ves es una advertencia de SAP que puedes saltearla presionando enter.
Consulta Alumno:
Donde se definen los valores de la funcion A y B?
Porque todos los mensajes tienen el mismo número 001 si son distintos?. Esto ya pasaba en el código de la lección anterior.
Respuesta Instructor:
Hola Victor,
La verdad que no comprendo tu primer consulta, te pido por favor que la reformules para poder contestarla.
En cuanto a los codigos de los mensajes esto se debe a que cuando creas una clase de mensajes mediante la transaccion SE91 podras ver que el primer mensaje de la clase es el 000,%uFFFDy que desde alli escribimos%uFFFDtodos los textos que vamos a utilizar.
Por costumbre siempre se comienza por el text-001 que seria el segundo%uFFFDde%uFFFDla clase de mensajes.
Reconsulta Alumno:
En el ejercicio propones dos opciones para el campo ACCION, A y B. ¿Como defino estas opciones en la función?
Respuesta Instructor:
Hola Victor,
Ahora si, la funcion que creamos tiene un campo de entrada que se llama ACCION.
Este campo puede recibir dos valores "A" o "B".
Si la entrada es "A" se realizará cierto procesamiento y si es "B" se realizará cierto otro procesamiento.
Lo importante es que A y B son dos valores que introduce el usuario que ejecuta la funcion a mano.
 
 
 
Sobre el autor
Publicación académica de Victor Wong, en su ámbito de estudios para la Carrera Consultor ABAP.
Victor Wong
Profesión: Técnico en Computación E Informática - Peru - Legajo: JK17P
✒️Autor de: 85 Publicaciones Académicas
🎓Egresado de los módulos:
- Carrera Consultor ABAP Nivel Avanzado
- Carrera Consultor ABAP Nivel Inicial
- Carrera Consultor ABAP Nivel Inicial