MUNDOSAP

Regresar   MUNDOSAP > DESARROLLO > Programación ABAP IV
Nombre de Usuario
Contraseña
Home Descargas Registrar FAQ Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




 
Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Viejo 11/06/19, 17:09:13
Elliot Elliot is offline
Junior Member
 
Fecha de Ingreso: sep 2017
Localización: Guadalajara
Mensajes: 3
Question 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
Responder Con Cita
  #2  
Viejo 12/06/19, 21:40:52
Feliu Feliu is offline
Junior Member
 
Fecha de Ingreso: jun 2019
Mensajes: 8
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.
Responder Con Cita
  #3  
Viejo 14/06/19, 15:11:59
Elliot Elliot is offline
Junior Member
 
Fecha de Ingreso: sep 2017
Localización: Guadalajara
Mensajes: 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 ?




Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Reglas de Mensajes
no puedes crear nuevos temas
no puedes responder temas
no puedes adjuntar archivos
no puedes editar tus mensajes

El código vB está On
Las caritas están On
Código [IMG] está On
Código HTML está Off
Saltar a Foro


Husos Horarios son GMT. La hora en este momento es 12:40:12.


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