Anuncio

Colapsar
No hay anuncio todavía.

Field symbols

Colapsar
X
 
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes

  • Field symbols

    Hola,

    alguien me puede ayudar un poco con este tema?

    existe alguna manera de hacer que las tablas internas sean dinámicas? porque me parece realmente útil hacer algo así pero no se como.

  • #2
    Originalmente publicado por Josemir Ver Mensaje
    Hola,

    alguien me puede ayudar un poco con este tema?

    existe alguna manera de hacer que las tablas internas sean dinámicas? porque me parece realmente útil hacer algo así pero no se como.
    A ver, ¿Que quieres saber de los field-symbols. Básicamente son punteros a memoria, a partir de ahí especifica un poco y veo si te puedo contestar.

    Sobre tablas dinámicas nunca le he encontrado realmente la utilidad, pero hay algún post por ahí que te dice como hacerlas, a ver si encuentro algo.

    Saludos
    "Soy el señor Lobo, arreglo problemas"
    http://sapymas.blogspot.com/

    Comentario


    • #3
      Hola,

      estoy de acuerdo con Bisonye, no sé cual es la utilidad que buscas.

      Igualmente encontré este ejemplo:

      Código:
      FIELD-SYMBOLS:<fs_tabla> TYPE STANDARD TABLE,  <fs_tabla_wa> TYPE ANY.
      DATA:  tabla_ref TYPE REF TO data, wa_ref TYPE REF TO data.
      DATA: l_structure TYPE dd02l-tabname value 'VBAP'.
       
      CREATE DATA tabla_ref TYPE STANDARD TABLE OF (l_structure).
      ASSIGN tabla_ref->* TO <fs_tabla>.
      CREATE DATA wa_ref LIKE LINE OF <fs_table>.
      ASSIGN wa_ref->* TO <fs_tabla_wa>.
      Josemir espero atentamente que nos cuentes para que usarías esto!

      Comentario


      • #4
        Originalmente publicado por Josemir Ver Mensaje
        Hola,

        alguien me puede ayudar un poco con este tema?

        existe alguna manera de hacer que las tablas internas sean dinámicas? porque me parece realmente útil hacer algo así pero no se como.
        Las tablas internas son dinamicas y existen 3 tipos de tablas que puedes utilizar: Standard, Sorted y Hashed. cual debes usar?, depende del problema que quieras resolver.

        Standard : se maneja con un indice interno y puede ser accedido por el indice o una key y es recomendable para una cantidad decente de registros. este tipo de tablas tiene un costo menor de insercion de registro pero alto en lectura cuando de trata de muchos registros.
        Sorted : los registros son automaticamente ordenados acendentemente segun la key definida. tienen acceso por indice y key. este tipo de tablas tiene un costo mas alto al insertar y menos al buscar, ya que cada vez que se agrega un registro lo ordena.
        hashed : Los registros son administrados para un acceso rapido usando un procedimiento hashing. con esta tipo de tablas solo puedes tener una llave por registro. este tipo de tablas es bueno cuando es una gran cantidad de registros y necesitas acceder rapidamente solo por la key previamente definida.


        si necesitas mas informacion o ejemplos escribeme por que el tema es largo e interesante.
        salu2

        Comentario


        • #5
          Originalmente publicado por jlaraneda01 Ver Mensaje
          Las tablas internas son dinamicas
          No estoy de acuerdo. Este dinamismo no se refiere a los datos insertados en la tabla, ya que según ese criterio las tablas del diccionario de datos también son dinámicas, se refiere a que en tiempo de ejecución puedas decidir la estructura de la misma y que de una ejecución a otra pueda ser diferente.

          Saludos
          "Soy el señor Lobo, arreglo problemas"
          http://sapymas.blogspot.com/

          Comentario


          • #6
            Originalmente publicado por bisonye Ver Mensaje
            No estoy de acuerdo. Este dinamismo no se refiere a los datos insertados en la tabla, ya que según ese criterio las tablas del diccionario de datos también son dinámicas, se refiere a que en tiempo de ejecución puedas decidir la estructura de la misma y que de una ejecución a otra pueda ser diferente.

            Saludos

            Desde la version SAP NetWeaver 2004 puedes trarbajar con RTTC (Runtime Type Creation), esta te permite crear tipos de datos dinamicamente en tiempo de ejecucion con ABAP OO. salu2

            Comentario


            • #7
              Esto es muy interesante, además demuestra que estoy empezando a quedarme obsoleto...

              ¿Podrías dar algún ejemplo de como utilizar RTTC?

              Saludos!
              "Soy el señor Lobo, arreglo problemas"
              http://sapymas.blogspot.com/

              Comentario


              • #8
                Originalmente publicado por bisonye Ver Mensaje
                Esto es muy interesante, además demuestra que estoy empezando a quedarme obsoleto...

                ¿Podrías dar algún ejemplo de como utilizar RTTC?

                Saludos!
                Desde hace rato que SAP comenzo a migrar todo a ABAP OO. en algunos casos simplementa encapsulan una funcion dentro de una clase. pero ya es un hecho que tenemos que acostumbrarnos a trabajar con ABAP OO.

                Desde SAP R/3 4.6C, las clases estándar SAP en ABAP permitían consultar los tipos de atributos en tiempo de ejecución, a eso le llamaron RTTI ( Runtime Type Identification)
                Esto fuero mejorado en la versión SAP NetWeaver 2004 con la opción para crear dinámicamente objetos en tiempo de ejecución "RTTC" (Runtime Type Creation), y ha estos 2 conceptos se llaman
                RTTS (Runtime Type Services).

                Ejemplo:

                DATA: go_line_type TYPE REF TO cl_abap_structdescr
                , go_table_type TYPE REF TO cl_abap_tabledescr
                , key TYPE abap_keydesc_tab
                .

                go_line_type ?= cl_abap_typedescr=>describe_by_name('SPFLI').

                APPEND: 'CARRID' to key
                , 'CONNID' to key.

                go_table_type = cl_abap_tabledescr=>create(
                p_lineType = go_line_type
                p_table_kind = cl_abap_tabledescr=>tablekind_sorted
                p_unique = abap_true
                p_key = key ).

                El método CREATE de la clase CL_ABAP_TABLEDESCR permite crear el tipo de tabla en tiempo de ejecución.
                el parámetro estático P_LINE_TYPE describe el tipo de línea a través de una referencia a la clase CL_ABAP_TYPEDESCR
                en el ejemplo SPFLI lo uso para hacer referencia una estructura conocida, pero podrías crear tu propia estructura dinámicamente
                para armar tu tabla interna. el Método DESCRIBE_BY_NAME instancia un objeto adecuado para ello.

                Para generar una tabla interna con un tipo creado dinámicamente tienes que hacerlo de la siguiente forma:

                ...DATA r_itab TYPE REF TO data,
                r_tableType TYPE REF TO cl_abap_tabledescr.
                ...
                * Creacion del tipo de tabla interna con el metodo estatico
                * CREATE of RTTS-class cl_abap_tabledescr
                ...
                CREATE DATA r_itab TYPE HANDLE r_tabletype.

                Usando HANDLE en la instrucción CREATE DATA en el ejemplo se crea una tabla interna cuyo tipo es descrito por un objeto de tipo RTTS
                Una variable de referencia del tipo estático de la clase CL_ABAP_TABLEDESCR que se refiere a un objeto de datos el cual es especificado por el HANDLE.

                salu2

                Comentario


                • #9
                  Me has dejado impresionado con la explicación, muy bien hecha.

                  Sin embargo me reafirmo en lo que digo. Los tipos de tabla en sap son estáticos, puedes hacerlos dinámicos mediante una definición especial mediante field-symbols o mediante objetos, como muy bien has explicado, pero por defecto son estáticos.

                  A pesar de mi cabezonería me tengo que quitar el sombrero y decirte de nuevo que es una explicación magnífica.

                  Saludos
                  "Soy el señor Lobo, arreglo problemas"
                  http://sapymas.blogspot.com/

                  Comentario

                  Trabajando...
                  X