Problema al pasar/leer Itab de Memoria

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • andresf02
    Senior Member
    • nov
    • 190

    #1

    Problema al pasar/leer Itab de Memoria

    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'.


    Código:
    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

    Código:
    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!
    Editado por última vez por andresf02; 26/07/2012, 17:33:47.
  • ballan
    Senior Member
    • oct
    • 671

    #2
    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

    Comentario

    • andresf02
      Senior Member
      • nov
      • 190

      #3
      muchas gracias por la respuesta.

      lo solucione con SHARED MEMORY de la siguiente manera:

      para el export. Tabla interna it_data_mc
      Código:
      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
      Código:
      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!

      Comentario

      Trabajando...