Coger variable de report desde el include

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • natxojarto
    Junior Member
    • oct
    • 19

    #1

    Coger variable de report desde el include

    Hola,

    Tenemos un programa estandar que llama a un include que podemos modificar, hay alguna manera de recoger una variable de ese programa?

    No podemos modificar el report, tendria que ser todo el codigo desde el include.

    Gracias
  • vickxo
    Senior Member
    • nov
    • 118

    #2
    Hola...

    Por lo que comentas creo q te refieres a una user - exit (UE) si es asi en la definicion de la UE viene q atributos puedes manipular. Es probable q la informacion que requieres venga en alguna de las UE peor tendrias que revisar cual es la mas acorde para el programa que estas manipulando. A veces hay mas de una UE por transaccion, consulta en la CMOD. Saludos!
    el tema esta en hacer la pregunta correcta...

    Comentario

    • natxojarto
      Junior Member
      • oct
      • 19

      #3
      Hola,

      Desde el report q ejecutamos se llama a la user exit. En el report metemos el campo que queremos pero al llegar a la user exit ya no la podemos obtener. Hay alguna manera de obtenerla?

      Comentario

      • abapconsultoria
        Senior Member
        • ene
        • 101

        #4
        si, lo haces mediante field symbol.

        Si mal no recuerdo es algo asi:


        report YTEST_JM.

        FIELD-SYMBOLS : <variable_externa> type any.
        data : dato value 'A'.

        ASSIGN ('(YTEST_JM)DATO') to <variable_externa>.

        write <variable_externa>.


        donde YTEST_JM es el nombre del programa del cual queres obtener la variable y DATO es el nombre de la variable que queres obtener.

        Saludos.

        Javier.
        ABAPCONSULTORIA@GMAIL.COM

        www.consultoriaabap.blogspot.com

        Lo importante no es saber sino saber quien es el que sabe

        Comentario

        • natxojarto
          Junior Member
          • oct
          • 19

          #5
          Muchas gracias por la ayuda pero todavia no lo he solucionado.
          El problema es que esto solo funciona para el programa principal ,es decir, mi programa principal es RBDSEMAT que entra en el include(funcion) LMV01U06 y dentro de este se accede a la user exit.
          He intentado poner en el programa (LMV01U06)DATO pero me pone que el valor no existe.

          Alguien puede ayudarme o decirme como se hace lo mismo pero en vez de poner (nombre_programa)DATO, a poner (funcion)DATO?
          O alguna otra forma, la que se os occurra.

          Muchisimas gracias.

          Comentario

          • miguelonibus
            Junior Member
            • mar
            • 13

            #6
            Hola.

            Prueba tomando el grupo de funciones de esa funcion y haciedo lo siguiente.
            Supongamos que el grupo de funciones el ZGRUP pues pon (SAPLZGRUP)DATO.
            Espero que funcione.

            Un Saludo.

            Miguel.

            Comentario

            • natxojarto
              Junior Member
              • oct
              • 19

              #7
              Tampoco funciona, la variable esta vacia, pero antes de entrar en la funcion esta rellena, es muy raro

              Comentario

              • natxojarto
                Junior Member
                • oct
                • 19

                #8
                El problema es que no se sabe desde que programa se va a llamar a esta user exit, entonces no puedo coger la variable desde el programa principal sino que tengo que cogerlo desde el include LMV01U06.

                El problema es que quiero conseguir cual es el destino de este idoc, en este caso la variable que necesito es el receiving partner. En el include la variable que contiene este dato es RCVPRN y esta relleno, pero una vez que entra en la user exit al parecer lo borra y cuando entro a la user exit y pongo (SAPLMV01)RCVPRN, el dato está vacio.

                Si pongo el programa principal desde el que estoy lanzando los idocs que seria el RBDSEMAT, sí que me coge el dato. (RBDSEMAT)logsys. Pero como no se si sólo van a lanazar con este programa no puedo poner esto, necesitaria la variable desde otro sitio.

                Alguien puede ayudarme?

                Comentario

                • natxojarto
                  Junior Member
                  • oct
                  • 19

                  #9
                  He econtrado la variable en la global stack en memoria, hay alguna forma de sacarla de ahi?

                  Comentario

                  • suapcram
                    Junior Member
                    • abr
                    • 13

                    #10
                    Por lo que veo, no estás llamando a ningún include, si no no tendrías problemas para acceder a ninguna variable global definida en el programa.
                    Estas llamando, bueno el programa estándar está llamando a una función MASTERIDOC_CREATE_MATMAS, ninguno de los parámteros de la función tiene la variable que necesitas?

                    Ni niguna de las tablas que se le pasan a la función....
                    Toda mejora implica cambio, no todo cambio implica mejora...

                    Comentario

                    • natxojarto
                      Junior Member
                      • oct
                      • 19

                      #11
                      Sí, hay una variable que es la que necesitamos que se pasa a la funcion MASTERIDOC_CREATE_MATMAS que es RCVPRN.

                      Comentario

                      • suapcram
                        Junior Member
                        • abr
                        • 13

                        #12
                        Entonces si tienes acceso a la variable, es que no entiendo muy bien...
                        Puedes explicar un poco más lo que necesitáis o lo que pretendeis hacer.

                        Saludos,
                        Toda mejora implica cambio, no todo cambio implica mejora...

                        Comentario

                        • natxojarto
                          Junior Member
                          • oct
                          • 19

                          #13
                          A ver si consigo explicarme:

                          Tenemos una funcion que es CREATE_MASTER_IDOC (que es la funcion que tiene el RCVPRN). Dentro del codigo de esta funcion se llama a nuestra user exit, pero el problema es que a nuiestra user exit no se pasa el dato que necesitamos (RCVPRN). Dentro de nuestra user exit no es posible acceder al dato RCVPRN.

                          He probado poniendo (SAPLMV01)RCVPRN pero el campo esta vacio asi q no es posible cogerla asi.
                          Hemos estado investigando y hemos visto que nuestra variable esta guardada en memoria en la global stack, hay alguna forma de sacarla de ahi?

                          Comentario

                          • natxojarto
                            Junior Member
                            • oct
                            • 19

                            #14
                            PErdon la funcion es MASTERIDOC_CREATE_MATMAS

                            Comentario

                            • natxojarto
                              Junior Member
                              • oct
                              • 19

                              #15
                              He investigado un poco mas pero no he conseguido sacar la variable.

                              He entrado en Go To->System->System areas
                              Si accedo a la parte DSEG(data segments and work areas) veo que dentro de este area tengo la variable guardada en la siguiente linea:
                              No Type Typename Program Ofsg Size Contents
                              2 GLST global stack ABDBG -1687 16384 | ESD510 LS ZMATGD

                              La variable en rojo es la que quiero coger, hay alguna forma de cogerla?

                              Comentario

                              Trabajando...