Diferencia entre TYPE Y DATA

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Elliot
    Junior Member
    • sep
    • 3

    #1

    Diferencia entre TYPE Y DATA

    Hola Estimados buenos dias

    Soy nuevo en el lenguaje de Abap y quisiera entender algunos terminos para usar las mejores practicas para programar en este lenguaje,

    Hasta el momento, la manera de trabajo que llevo con tablas interna es de la siguiente manera(Por favor si algo estoy haciendo mal haganmelo saber)

    1.- Crear la estructura de la tabla
    type :

    BEGIN OF TY_tabla,

    EBELN TYPE EBAN-EBELN,

    END OF TY_ZPW_DOCFIMA.

    2.- Se crea la tabla interna
    DATA:
    IT_table type STANDARD TABLE OF TY_table WITH HEADER LINE.

    3.- Creo una area de trabajo
    DATA:
    WA_tabla type ty_ZPW_DOCFIMA.

    4.Genero una consulta

    Select EBELN from EBAN INTO IT_table WHERE EBELN EQ = (******)

    APPEND IT_table TO WA_TABLE


    ENDSELECT.

    ******************************************
    Todo esto tambien se puede hacer de la siguiente manera
    data :

    BEGIN OF TY_tabla,

    EBELN TYPE EBAN-EBELN,

    END OF TY_ZPW_DOCFIMA.

    DATA: wa_tab LIKE STANDARD TABLE OF TY_tabla.

    Select EBELN from EBAN INTO TY_tabla WHERE EBELN EQ = (******)

    APPEND TY_tabla TO WA_TABLE


    ENDSELECT.

    ************************************************** ****
    Quisiera saber cual de las dos en la correcta ? en cuestion de las mejores practicas ?

    la diferencia entre type y data?

    la diferencia entre type y like ?

    el usu del "WITH HEADER LINE"?

    he leido bastante cobre estas preguntas en foros pero no me quedan muy claro

    gracias de antemano
  • Feliu
    Junior Member
    • jun
    • 8

    #2
    Buenas practicas

    Hola estimado, bienvenido al mundo SAP, un cordial saludo.

    Te voy a presentar mi respuesta de forma sencilla y desde mi punto de vista para un mejor entendimiento.

    1) Primeramente DATA es una sentencia reservada de SAP en el lenguaje ABAP para la declaración de variables, constantes, etc.

    Esta sentencia debe utilizarse al principio de cada declaración que corresponda.

    2) La palabra reservada TYPE es utilizada en el lenguaje ABAP al momento de la declaración para hacer referencia un elemento de dato, clase, tabla etc.

    Esta puede estar acompañada de REF TO, TABLE OF, etc. (Según el caso).

    3) La palabra reservada LIKE se utilizaba anteriormente, ahora ha quedado obsoleta por lo que no es buena practica utilizarla, sin embargo encontraras programas en los cuales aún se utilizan (Lo recomendable, utilizar TYPE para todo, a menos que SAP te sugiera LIKE)

    4) El agregado WHL se utiliza para indicar que una tabla interna tendrá una cabecera, por lo que dependiendo del caso puede ser util para el acceso a los datos contenidos en la misma (Te recomiendo ubicar ejemplos donde puedas ver su utilización).

    Ahora bien, la manera correcta de crear el TYPE y realizar tu búsqueda es la siguiente:

    "Declaracion del type
    TYPES: BEGIN OF ty_ejemplo,

    ebeln TYPE ekko-ebeln, "Doc.compras
    ejemplo2 TYPE c LENGTH 10, "Ejemplo
    ejemplo3 TYPE c LENGTH 10, "Ejemplo

    END OF ty_ejemplo.

    "Declaracion de tabla interna y work-area
    DATA: it_datos TYPE STANDARD TABLE OF ty_ejemplo,
    wa_datos TYPE ty_ejemplo.

    "Procedemos a efectuar una consulta
    SELECT SINGLE ebeln
    FROM ekko
    INTO CORRESPONDING FIELDS OF TABLE it_datos
    WHERE bukrs EQ '1010'.

    *Se utiliza la sentencia INTO CORRESPONDING FIELDS OF TABLE para que los registros obtenidos se ubiquen en su respectivo campo dentro de la tabla interna, debido a que puede contener varios campos que no están incluidos en tu select

    *ENDSELECT es obsoleto

    *Se recomienda utilizar palabras reservadas de SAP para los filtros WHERE como por ejemplo EQ, NE, IN, etc.

    *SINGLE es un agregado a tu búsqueda para indicarle a SAP que vas a realizar la búsqueda de solamente ese campo en especifico.


    PD: Una recomendación personal, y esto ya va por parte de cada quien, es la forma en la que llamamos nuestras tablas internas y estructuras.

    Actualmente muchos programadores llaman tus tablas y estructuras de esta manera:

    Tablas internas:

    IT_EJEMPLO
    TI_EJEMPLO
    GT_EJEMPLO
    LT_EJEMPLO

    Estructuras:
    GS_EJEMPLO
    LS_EJEMPLO

    Donde GT es "Global table", GS "Global Estruct" LT "Local Table" LS "Local Estruct".

    Saludos, espero te siva de orientación, aquí en el foro encontraras profesionales que pueden darte excelentes referencias.

    Comentario

    • Elliot
      Junior Member
      • sep
      • 3

      #3
      Manejo de tablas

      Muchas gracias por tu excelente explicación, tu recomendación y tu tiempo, en esta curva de aprendizaje quiero llevar a las mejores practicas en la programación y tus respuesta me a sido de mucha ayuda.

      basado en tu respuesta me surgió una duda para el manejo de las tablas

      Es recomendable manejar, en un include todas las variables de la aplicación y en otro include los forms?

      actualmente estoy trabajando en un programa el cual esta organizado de esta manera, el main solo hago el llamado de los forms y la lógica y en los includes manejo lo que son las estructuras de las tablas y los forms

      que tan correcta es esta manera ?




      Originalmente publicado por Feliu
      Hola estimado, bienvenido al mundo SAP, un cordial saludo.

      Te voy a presentar mi respuesta de forma sencilla y desde mi punto de vista para un mejor entendimiento.

      1) Primeramente DATA es una sentencia reservada de SAP en el lenguaje ABAP para la declaración de variables, constantes, etc.

      Esta sentencia debe utilizarse al principio de cada declaración que corresponda.

      2) La palabra reservada TYPE es utilizada en el lenguaje ABAP al momento de la declaración para hacer referencia un elemento de dato, clase, tabla etc.

      Esta puede estar acompañada de REF TO, TABLE OF, etc. (Según el caso).

      3) La palabra reservada LIKE se utilizaba anteriormente, ahora ha quedado obsoleta por lo que no es buena practica utilizarla, sin embargo encontraras programas en los cuales aún se utilizan (Lo recomendable, utilizar TYPE para todo, a menos que SAP te sugiera LIKE)

      4) El agregado WHL se utiliza para indicar que una tabla interna tendrá una cabecera, por lo que dependiendo del caso puede ser util para el acceso a los datos contenidos en la misma (Te recomiendo ubicar ejemplos donde puedas ver su utilización).

      Ahora bien, la manera correcta de crear el TYPE y realizar tu búsqueda es la siguiente:

      "Declaracion del type
      TYPES: BEGIN OF ty_ejemplo,

      ebeln TYPE ekko-ebeln, "Doc.compras
      ejemplo2 TYPE c LENGTH 10, "Ejemplo
      ejemplo3 TYPE c LENGTH 10, "Ejemplo

      END OF ty_ejemplo.

      "Declaracion de tabla interna y work-area
      DATA: it_datos TYPE STANDARD TABLE OF ty_ejemplo,
      wa_datos TYPE ty_ejemplo.

      "Procedemos a efectuar una consulta
      SELECT SINGLE ebeln
      FROM ekko
      INTO CORRESPONDING FIELDS OF TABLE it_datos
      WHERE bukrs EQ '1010'.

      *Se utiliza la sentencia INTO CORRESPONDING FIELDS OF TABLE para que los registros obtenidos se ubiquen en su respectivo campo dentro de la tabla interna, debido a que puede contener varios campos que no están incluidos en tu select

      *ENDSELECT es obsoleto

      *Se recomienda utilizar palabras reservadas de SAP para los filtros WHERE como por ejemplo EQ, NE, IN, etc.

      *SINGLE es un agregado a tu búsqueda para indicarle a SAP que vas a realizar la búsqueda de solamente ese campo en especifico.


      PD: Una recomendación personal, y esto ya va por parte de cada quien, es la forma en la que llamamos nuestras tablas internas y estructuras.

      Actualmente muchos programadores llaman tus tablas y estructuras de esta manera:

      Tablas internas:

      IT_EJEMPLO
      TI_EJEMPLO
      GT_EJEMPLO
      LT_EJEMPLO

      Estructuras:
      GS_EJEMPLO
      LS_EJEMPLO

      Donde GT es "Global table", GS "Global Estruct" LT "Local Table" LS "Local Estruct".

      Saludos, espero te siva de orientación, aquí en el foro encontraras profesionales que pueden darte excelentes referencias.

      Comentario

      Trabajando...