sacar estructura de 1 tabla en tiempo ejecucion

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Skadeour
    Member
    • abr
    • 55

    #1

    sacar estructura de 1 tabla en tiempo ejecucion

    hola, hay alguna forma de recuperar la estructura de una tabla interna, k me pasan como parametro en un metodo, es decir yo puedo acceder a los datos k contiene esa tabla interna en tiempo de ejecución pero, necesito acceder a su estrucutura, a como se llama cada campo de esa tabla, alguien me puede ayudar.
  • carlosalcala
    Member
    • may
    • 46

    #2
    Se puede hacer de unas cuantas formas, para que quieres la estructura luego?
    Salu2

    Carlos!

    Comentario

    • Skadeour
      Member
      • abr
      • 55

      #3
      tabla

      para meter el nombre de cada campo en la estructura de otra tabla

      Comentario

      • carlosalcala
        Member
        • may
        • 46

        #4
        Nose si te servirá ni el motivo de hacer esto, haz
        SELECT SINGLE * FROM dd03m
        WHERE tabname = l_tabla AND
        ddlanguage = 'S' AND
        ddtext IS not NULL.

        Y te devolverá el nombre de los campos, el meterlos en otra estructura¿? nose si te la quieres crear en tiempo de ejecución, si es asi es algo como

        DATA: CODE TYPE TABLE OF RSSOURCE-LINE,
        LINEA LIKE RSSOURCE-LINE.

        DATA: VARIABLE(10). "ESTA VARIABLE LLEVA EL NOMBRE DE LA TABLA.

        VARIABLE = 'ZAPR'.

        CLEAR LINEA.
        CONCATENATE 'TABLES: ' VARIABLE INTO LINEA SEPARATED BY SPACE.
        CONCATENATE LINEA '.' INTO LINEA.
        APPEND LINEA TO CODE.

        CLEAR LINEA.
        CONCATENATE 'DATA TI_' VARIABLE INTO LINEA.
        CONCATENATE LINEA 'LIKE' VARIABLE INTO LINEA SEPARATED BY SPACE.
        CONCATENATE LINEA 'OCCURS 0 WITH HEADER LINE.' INTO LINEA SEPARATED BY
        SPACE..
        APPEND LINEA TO CODE.

        INSERT REPORT 'ZREPORTDINAMICHR' FROM CODE.

        Espero que te sea de ayuda.

        Un saludo al foro!
        Salu2

        Carlos!

        Comentario

        • Skadeour
          Member
          • abr
          • 55

          #5
          estructura tabla

          Haber te explico, necesito meter en una tabla itab-descripcion, todos los campos de la estructura de otra tabla en tiempo de ejecucion.
          el select a la tabla que me has dicho me da subrc = 4. un saludo

          Comentario

          • carlosalcala
            Member
            • may
            • 46

            #6
            Lo único que se me ocurre es que utilices las funciones de las ALV en la cual cuando te creas un catálogo de campos lo tienes ahi, solo te quedaría mover el campo fieldname a itab-descripcion.
            Espero t sea util
            Salu2

            Carlos!

            Comentario

            • Skadeour
              Member
              • abr
              • 55

              #7
              eso no me vale

              no hay otra forma de sacar la estructura de una tabla interna,o alguan funcion que te genere un alv, con solo pasarle la tabla interna

              Comentario

              • carlosalcala
                Member
                • may
                • 46

                #8
                Claro que existe y sino se inventa, aqui te copio algo de código:
                CREATE OBJECT go_custom_container
                EXPORTING container_name = 'ALV_CONTAINER'.
                CREATE OBJECT go_grid
                EXPORTING i_parent = go_custom_container.

                CALL METHOD go_grid_err->set_table_for_first_display
                EXPORTING i_structure_name = 'ZTACGHR03' "una estructura kmo la tabla is_layout = v_layout_err "No es necesaria
                CHANGING it_outtab = g_t_incon_excel. "la tabla con los datos

                la estructura se la coje sola,las definiciones de los data los tienes en esta página: http://help.sap.com/saphelp_erp2004/...e3/content.htm

                te vienen todos los métodos del objeto.

                Haber si esto te vale!
                Salu2

                Carlos!

                Comentario

                • carlosalcala
                  Member
                  • may
                  • 46

                  #9
                  Se me olvidaba, tienes que crear una screen con un container al que asignas el objeto, te copiado x error 2 objetos distintos xq tngo 2 alvs distintas pero el método es ese. Si necesitas modificar el fieldcatalog o el layout dimelo
                  Salu2

                  Carlos!

                  Comentario

                  • Skadeour
                    Member
                    • abr
                    • 55

                    #10
                    vale si me vale

                    pero no puedo crear un objeto dentro de otro, me explico ese objeto le tengo k crear dentro de un metodo, no puedo crear una instacia
                    saludos

                    Comentario

                    • carlosalcala
                      Member
                      • may
                      • 46

                      #11
                      Ahi me has perdido, escribe el código donde te da error o lo que quieres implementar xq asi segun lo explicas no lo entiendo ya que llevo solo un mes con abap y hay muchisimas cosas que nose como hacer o como darselo a entender a sap.

                      Salu2
                      Salu2

                      Carlos!

                      Comentario

                      • Skadeour
                        Member
                        • abr
                        • 55

                        #12
                        que estructura hay que pasarle al constructor de la clase

                        me he creado una estructura del tipo

                        * Creamos un objeto que hace referencia a nuestra clase.
                        DATA container TYPE REF TO CL_GUI_CONTAINER.
                        DATA: MY_OBJ TYPE REF TO ZCL_PEDIDOS.

                        * Creamos el objeto y lo inicializamos.
                        * Y la clase genera automaticamente el resultado.
                        CREATE OBJECT MY_OBJ
                        EXPORTING I_PARENT = container.

                        el caso es que ejecuto el alv, y no sale nada, que hay que pasarle a la referencia cl_gui_container, las usado alguna ved,
                        Para llevar solo un mes controlas mucho

                        Comentario

                        • carlosalcala
                          Member
                          • may
                          • 46

                          #13
                          Tienes que hacer la llamada a la screen creada y tiene que llamarse el container que te has creado igual que el parámetro que le pasas,
                          como poco deberias ver la grid vacia. Llamas a la screen
                          CALL SCREEN '0100'. y dntro del PBO debe ir el código.
                          data: go_grid TYPE REF TO cl_gui_alv_grid,
                          go_custom_container TYPE REF TO cl_gui_custom_container,
                          g_t_incon_excel TYPE STANDARD TABLE OF ztacghr03,
                          g_i_ztacghr03 TYPE STANDARD TABLE OF ztacghr03.


                          *-- Creación del obj. en el contenedor
                          CREATE OBJECT go_custom_container
                          EXPORTING container_name = 'ALV_CONTAINER'.
                          *-- Creación de la grid a partir del contenedor
                          CREATE OBJECT go_grid
                          EXPORTING i_parent = go_custom_container.
                          *-- Importo el layout para modificar la visualización
                          CALL METHOD go_grid->get_frontend_layout
                          IMPORTING es_layout = v_layout.

                          v_layout-cwidth_opt = 'X'.
                          v_layout-zebra = 'X'.
                          v_layout-grid_title = 'Listado de campos en parametrización'.
                          v_layout-no_toolbar = 'X'.
                          *-- Devuelve el layout modificado
                          CALL METHOD go_grid->set_frontend_layout
                          EXPORTING is_layout = v_layout.
                          *-- Llenado de datos
                          PERFORM load_data_into_grid.

                          FORM load_data_into_grid.
                          * read data
                          SELECT * FROM ztacghr03
                          INTO TABLE g_i_ztacghr03
                          WHERE zoperacion = s_ztacghr01-zoperacion.
                          *-- Carga los datos en la tabla y muestra los datos
                          CALL METHOD go_grid->set_table_for_first_display
                          EXPORTING i_structure_name = 'ZTACGHR03'
                          is_layout = v_layout
                          CHANGING it_outtab = g_i_ztacghr03.

                          ENDFORM. " load_data_into_grid
                          Salu2

                          Carlos!

                          Comentario

                          Trabajando...