MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Diferencia entre TYPE Y DATA (foro/showthread.php?t=83326)

Elliot 11/06/19 17:09:13

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 12/06/19 21:40:52

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.

Elliot 14/06/19 15:11:59

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 ?






Husos Horarios son GMT. La hora en este momento es 14:13:52.

www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web