#1
|
|||
|
|||
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 |
#2
|
||||
|
||||
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>. Úlima edición por melerogalan fecha: 05/08/08 a las 08:08:14. |
#3
|
|||
|
|||
Muchas gracias por la ayuda!!!!
|
#4
|
||||
|
||||
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!!.
__________________
01010000 01001010 10011000 10100001 De Byte a Beat. |
#5
|
||||
|
||||
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
__________________
David Carballido Córdova |
#6
|
|||
|
|||
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!! Úlima edición por Merchipop fecha: 09/01/12 a las 15:24:49. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|