MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Problemas con sentencia AT FIRST (foro/showthread.php?t=15466)

uo4396 05/08/08 06:12:13

Problemas con sentencia AT FIRST
 
Hola a todos

A ver si alguien me puede ayudar. Tengo la siguientes lineas de código.

loop at tabla_interna into work_area.

at first.

enddat.


endloop.


Dentro del AT FIRST necesito acceder a los valores de la workarea pero no se que pasa que en cuanto entra en el at first esos valores desaparecen, poniéndome a 0 todos los enteros y decimales y a ***** todos las cadenas de carácteres. Justo antes de entrar en el at first la work area tiene los valores adecuados y justo después de salir los vuelve a recuperar.

Si alguien me pudiera ayudar estaría muy agradecido.

Saludos a todos y gracias de antemano

melerogalan 05/08/08 08:03:40

Eso es porque dentro de los "at", los campos que quedan a la derecha de aquel que utilizas(Ejem: estructura Campo 1, Campo 2, Campo 3 , Campo 4.... si en el at utilizo el "campo 2", podre utilizar dentro el campo 1 y el 2, pero el 3 y el 4 saldrán asteriscados o con valores no válidos), no se pueden utilizar por motivos de seguridad "tonterias de sap" , incluso utilizando las Work Areas ocurre, "Otra más que se apunta". Una forma para evitar eso es asignar a una estructura los valores y operar con esa estructura. Ejem.

<estructura local> tiene la misma estructura que <work_area>.


uo4396 05/08/08 10:56:22

Muchas gracias por la ayuda!!!!

Rodolfo Montiel Rivera 05/08/08 15:41:02

Tambien podria ser asi
 
Mira con el at como dices te pone ****

puedes recuperarlo con un sy-index. ejemplo

DATA: r_index LIKE sy-index. <--guarda la linea para poderla leer osea la ***

entonces tenemos

LOOP AT itab_xxx.

r_index = sy-index.

AT FIRST.

READ TABLE itab_xxx INDEX r_index. <--vuala te regreso la cabecera que te dejo en ***

* POsterios ya haces tus calculos.

ENDAT.

ENDLOOP.

Suerte!!.

DavidXD_XD 06/08/08 19:28:00

Puedes probar tambien con la sentencia
Esta sentencia no interesa que campos se encuentren a la derecha y ademas no se asteriscan, espero te sirva :D

Merchipop 09/01/12 15:10:17

He estado probando el ejemplo que pusiste y creo que existen algunas correcciones que hay que hacerle para que funcione del todo.

DATA: r_index ( o lo que quieras) LIKE sy-tabix. <--sy-tabix guarda la linea por la que pasa en la tabla, no index!!
**
Entonces tenemos
LOOP AT itab_xxx.
r_index = sy-tabix. <--Importante igualar a sy-tabix (que es la posicion de la linea por la que pasa en el loop)
AT FIRST.
READ TABLE itab_xxx INDEX r_index INTO workarea. <--Lo lees en el workarea asociado a la tabla
* Posterios ya haces tus calculos.
ENDAT.
ENDLOOP.

Ahora si que funciona, lo importante es que guardes el numero de linea (sy-tabix) y con eso entres en la tabla por la linea correspondiente. Luego lo lees en el workarea (por eso el INTO)
espero que os salga!!:D :D


Husos Horarios son GMT. La hora en este momento es 05:15:55.

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