MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Pasar una clase al EXPORTING de un evento (foro/showthread.php?t=66124)

Rabadabadou 11/02/13 07:36:36

Pasar una clase al EXPORTING de un evento
 
Buenos dias!

Me presento, he leido mucho en este foro, el cual me ha ayudado este ultimo mes con mi nuevo trabajo! Necesito aprender ABAP, SAP y todo eso, pero es un poco engorroso al principio porque hay demasiados conceptos...

Mi duda viene acerca de los eventos. He visto que un evento puede enviar datos por valor al manejador de eventos, pero yo necesito enviar una clase.

Veamos, tengo una clase en la cual, en un método, quiero lanzar un evento y que envíe otra clase (que se halla dentro de la sección privada de mi clase emisora del evento), pero claro, no puedo enviar clases por valor parece. He visto que existe una cosa que se llama SENDER, aunque no me queda del todo claro para qué es, y eso creo que no me sirve.

Por tanto la pregunta es: se puede enviar un dato en un evento, que sea una clase? Si no, supongo que tendría que arreglármelas de otra forma.

Saludos y gracias!!

ballan 11/02/13 09:52:28

Hasta donde yo se, creo que no hay nada que impida enviar una clase como parametro en un evento

Voy a poner un ejemplo inventado de como se haria

Creamos la clase ZCL_CLASE1
Creamos otra clase que se llame ZCL_CLASE2

Dentro de la clase ZCL_CLASE1 creamos el siguiente atributo

GO_CLASE2 type ref to ZCL_CLASE2

Dentro de la clase ZCL_CLASE1 creamos el evento EVENTO1

Iremos a los parametros del evento y definiremos el siguiente parametro

O_REF type ref to ZCL_CLASE2

Despues en la clase ZCL_CLASE1 creamos un metodo llamado LANZA_EVENTO

Dentro del metodo LANZA_EVENTO dispararemos el evento utilizando la instruccion

RAISE EVENT EVENTO1 exporting O_REF = GO_CLASE2

Rabadabadou 11/02/13 11:01:13

Hola ballan, gracias por tu respuesta!!

Hum perdon por la torpeza es que estoy aprendiendo, pero creo que tu te refieres a clases globales (las que se hacen con el class builder) no? Yo hablo de clases locales.

Yo defino mi isntancia o referencia dentro de la clase con ref to (que es la que quiero enviar en el evento), y luego creo el evento en la clase que lo emite


Pero al hacer eso no me deja, el "IDE" de ABAP me sale rojo como si ese tipo de cosas no se pudieran hacer. Lo único que me deja es poner un value( ) después del exporting. No sé si entiende lo que digo. Quizá es que lo hago mal :S

Saludos

ballan 11/02/13 13:43:25

Eso no te va a dejar hacerlo porque lcl_trans no es un objeto de diccionario, solo es una clase local creada en tu programa

Mi recomendacion y mas aun si estas empezando es que NUNCA utilices las clases locales, mejor crea las clases con la SE24 y despues las instancias en tu programa


Husos Horarios son GMT. La hora en este momento es 11:39:58.

www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web