Pasar una clase al EXPORTING de un evento

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Rabadabadou
    Junior Member
    • feb
    • 6

    #1

    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
    Senior Member
    • oct
    • 671

    #2
    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

    Comentario

    • Rabadabadou
      Junior Member
      • feb
      • 6

      #3
      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

      Código:
      events:
          trans_created
             EXPORTING go_trans TYPE REF TO lcl_trans
      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

      Comentario

      • ballan
        Senior Member
        • oct
        • 671

        #4
        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

        Comentario

        Trabajando...