PDA

Ver la Versión Completa : Problema al pasar/leer Itab de Memoria


andresf02
26/07/12, 17:25:03
Buenas tardes.

Tengo un programa que envia a memoria una tabla Interna. Este proceso lo esta haciendo bien ya que el sy-subrc queda en cero.


Lo que hace el programa es: Si es la primera ejecucion, graba la tabla interna en memoria bajo el ID 'MC'.
Si es la seguda ejecucion, graba la tabla interna en memoria bajo el ID 'MA'.

Si es la primera o segunda ejecucion, la define el campo 'opcion'.



data: opcion type n.
GET PARAMETER ID 'MO' field opcion.

if opcion ne 1.
it_data_mc[] = it_data_final2[].
EXPORT it_data_mc TO MEMORY ID 'MC'. "Datos ejecucion 1
opcion = 1. "Prepara el programa para 2da ejecucion
SET PARAMETER ID 'MO' FIELD opcion.
else.
it_data_ma[] = it_data_final2[].
EXPORT it_data_ma TO MEMORY ID 'MA'. "Datos ejecucion 1
opcion = 0. "Reestablece el ciclo de ejecuciones.
SET PARAMETER ID 'MO' FIELD opcion.
ENDIF.


Esta parte funciona perfecto. (aclaro que no se si es posible ver los datos que estan en memoria, pero como dije, luego del EXPORT, el sy-subrc queda en CERO)



El otro programa es que recibe los datos. (Un programa aparte, con otro nombre y otra transaccion independiente completamente del primero)

Declare la misma estructura que en el primer programa y las mismas tablas internas con los mismos nombres


data: it_data_mc type table of gs_data_final2 with HEADER LINE,
it_data_ma type table of gs_data_final2 with HEADER LINE.

data: opcion type n.

free: it_data_ma, it_data_mc.

import it_data_ma FROM MEMORY ID 'MA'.
import it_data_mc FROM MEMORY ID 'MC'.
get PARAMETER ID 'MO' FIELD opcion. "Este es solo de prueba y si lo lee bien


El problema es que luego de los IMPORT no recoge ningun dato, las tablas internas siguen [INITAL] y el sy-subrc queda = 4.

Por el contrario, el GET PARAMETER si es capaz de leer perfectamente el dato del ID 'MO' y lo guarda en la variable opcion.



Al hacer debuging al primer programa (EXPORT). en el menu PASAR A --> AMBITO DEL SISTEMA --> MEMORIA ABAP , puedo ver que el memoria estan los IDs 'MC' y 'MA'

Al hacer lo mismo para el segundo programa (IMPORT), en la memoria ABAP no aparecen los ID. Como si solo existieran en memoria para el programa 1.



Por favor ayuda urgente con este caso.

Mil gracias!

ballan
27/07/12, 09:45:56
Cambia el

EXPORT it_data_mc TO MEMORY ID 'MC'.

por

EXPORT p1 = it_data_mc TO SHARED MEMORY indx(xy) ID 'MC'.

y en el import lo mismo

El tema es que tienes que exportar a shared memory para que lo puedan ver diferentes procesos

andresf02
27/07/12, 14:32:27
muchas gracias por la respuesta.

lo solucione con SHARED MEMORY de la siguiente manera:

para el export. Tabla interna it_data_mc

EXPORT it_data_mc FROM it_data_mc TO SHARED MEMORY indx(aa) ID 'MC'.
"Se exporta desde ella misma


para el import. Tabla interna it_data_mc2

IMPORT it_data_mc TO it_data_mc2 FROM SHARED MEMORY indx(aa) ID 'MC'.
"importa desde la tabla interna it_data_mc a la tabla it_data_mc2



Muchas gracias!