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 08/10/10, 21:30:02
jorgeABAP29 jorgeABAP29 is offline
Member
 
Fecha de Ingreso: oct 2010
Mensajes: 33
Question Duda conceptual

Hola,

estoy dando mis primeros pasos con abap y se me planteo una duda...
el codigo es el siguiente:

TABLES: ztablatransparente.

LOOP at ztablatranparente.

write: / ztablatransparente-campo1,
ztablatransparente-campo2.
"el codigo de arriba es por poner algo.

ENDLOOP.

El tema es el siguiente yo cree en el diccionario abap una tabla transparente llamada ztablatransparente y con la sentencia TABLES me crea una estructura o área de trabajo (variable). Luego esta variable de encabezado o área de trabajo (objeto de dato) como quieran llamarlo me permite usarlo con el loop, yo creía que solamente con el loop se recorrían tablas internas??? alguien me podria aclarar porque puedo utilizar una variable de work area ahi!, muchas gracias.

Saludos,

Jorge.
Responder Con Cita
  #2  
Viejo 08/10/10, 21:48:47
Avatar de mysmb2
mysmb2 mysmb2 is offline
Senior Member
 
Fecha de Ingreso: ene 2007
Localización: Cordoba
Mensajes: 406
la variable ztablatransparente que definiste con TABLES ztablatransparente, no es una tabla como bien decis y aunque te permita compilar el LOOP no vas a poder asignar mas de un registro a ztablatransparente.

Para eso defini ztablatransparente de la siguiente manera
data ztablatransparente type standard table of ztablatransparente.
__________________
Sebastián Chiavia
Responder Con Cita
  #3  
Viejo 08/10/10, 21:57:50
jorgeABAP29 jorgeABAP29 is offline
Member
 
Fecha de Ingreso: oct 2010
Mensajes: 33
hola

gracias por la respuesta...

yo no dije q habia creado una tabla con la instruccion tables, sino que cree una variable de estructura o work area.

y ya se a que queres llegar,

pero necesito otro tipo de respuesta porque me permite definir el loop asi con un work area.
Responder Con Cita
  #4  
Viejo 08/10/10, 22:02:02
jorgeABAP29 jorgeABAP29 is offline
Member
 
Fecha de Ingreso: oct 2010
Mensajes: 33
hola

perdon mysmb2, leí mal la respuesta, igual no me responde mi pregunta.

igual muchas gracias.

espero por mas respuestas...
Responder Con Cita
  #5  
Viejo 09/10/10, 21:11:49
jorgeABAP29 jorgeABAP29 is offline
Member
 
Fecha de Ingreso: oct 2010
Mensajes: 33
loopear un work area

para que sirve loopear un work area?
Responder Con Cita
  #6  
Viejo 12/10/10, 01:40:38
Tu amo Tu amo is offline
Member
 
Fecha de Ingreso: oct 2010
Mensajes: 40
Bienvenido al mágico mundo del ABAP

No estas loopeando a una work area, lo que en realidad esta pasando es que estas usando una instrucción obsoleta que ha tenido que quedar como un vestigio para seguir manteniendo compatibilidad y confundir a los programadores.

A diferencia del "loop at itab" que hace un loop a una tabla interna, lo que tu estas haciendo es un "loop at dbtab" osea, un loop a una tabla de base de datos

Esa instrucción se usaba asi, primeramente, la work area que declaraste en tables se le introducían los campos que requirieras de la llave primaria. Por ejemplo, en la BKPF, podias solo llenar la sociedad.
El loop at dbtab entonces se iria por todos los registros que tuvieran esa llave, por ejemplo, en el caso anterior, todos los documentos financieros de una sociedad

Otra razon para dejar de usar la instruccion TABLES y solamente programar en ABAP Objects.

Dime que pasa si escribo esto en ABAP procedural?

Ahora dime que pasa si escribo esto con clases?

Responder Con Cita
  #7  
Viejo 12/10/10, 14:00:28
jorgeABAP29 jorgeABAP29 is offline
Member
 
Fecha de Ingreso: oct 2010
Mensajes: 33
Respuesta a la pregunta planteadas

Resultados:

TABLES: bseg.
LOOP AT bseg.
WRITE: / bseg-belnr.
ENDLOOP.

no entra en el loop, lo saltea. De esta manera:


TABLES: bseg.

bseg-mandt = '800'.
bseg-bukrs = '0001'.
bseg-belnr = '0100000000'.
bseg-gjahr = 1995.
bseg-buzei = 001.

LOOP AT bseg.

WRITE: / bseg-belnr.

ENDLOOP.

Asignandole valores a los campos claves, o a la llave primaria tampoco
entra en el loop.

Y por ultimo siguiendo el paradigma OO:

CLASS pruebita DEFINITION.
PUBLIC SECTION.
METHODS: prueba.
ENDCLASS. "pruebita DEFINITION

*---------------------------------------------------------------------*
* CLASS pruebita IMPLEMENTATION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS pruebita IMPLEMENTATION.
METHOD prueba.
LOOP AT bseg.
WRITE: / bseg-belnr.
ENDLOOP.
ENDMETHOD. "prueba
ENDCLASS. "pruebita IMPLEMENTATION

Al activar (análisis léxico, sintáctico y semántico) me da el siguiente
mensaje de error.

Programa Y_REPORTEPROBARLOOPWA
"LOOP AT dbtab" is not supported in the OO context. Use "SELECT ...
FROM dbtab INTO wa".

La conclusión final es que como vos bien dijiste es una instrucción obsoleta.
La cual no se ha sacado del lenguaje porque sino habría que modificar el interprete (gramática del lenguaje), pero no se ha insertado en el lenguaje modificado que permite la extensión OO del lenguaje ABAP ).

Espero por tu conclusión y muchas gracias por ayudarme.

saludos.

Úlima edición por jorgeABAP29 fecha: 12/10/10 a las 15:21:16.
Responder Con Cita
  #8  
Viejo 12/10/10, 15:41:57
Tu amo Tu amo is offline
Member
 
Fecha de Ingreso: oct 2010
Mensajes: 40
En la ayuda de SAP viene explicado que solo pueden ser tablas que inicien con "T" y con un maximo de cinco caracteres como la T001, si la tabla que indicas no inicia con T, la primera letra es reemplazada por T. Si la tabla no se encuentra, el loop lanza un sy-subrc = 12.

Prueba con una tabla como la T100 y veras que si entra el loop
Responder Con Cita
  #9  
Viejo 12/10/10, 17:40:15
jorgeABAP29 jorgeABAP29 is offline
Member
 
Fecha de Ingreso: oct 2010
Mensajes: 33
listoo

Muchas gracias, lo probé y anda como me indicaste, loopea con la tabla t001.
Con la bseg no anda (exceptions 12), ya que debe reemplazar la b por t y no encuentra la tabla.

Gracias.
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 22:49:38.


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