Statement MEMORY ID. Cual es su funcion?

Que tal Forer@s,

Alquien me puede explicar cual es el objetivo de la sentencia MEMORY ID??? la verdad no entiendo su funcionamiento y estoy revisando un programa que contiene dicha sentencia en la definicion de unos parametros dentro de un bloque. Coloco la seccion

selection-screen begin of block blck1 with frame title text-001.
parameters: sociedad like bseg-bukrs obligatory memory id buk.
select-options: fechar for bkpf-budat obligatory memory id fec.

parameters: ejerc like bsis-gjahr obligatory memory id gjr,
prove like lfa1-lifnr obligatory memory id lif.
selection-screen end of block blck1.

Atento a sus comentarios…

2 Me gusta

Es el “ID Parámetro” que tienen ciertos campos en SAP.
No todos los campos.

Ejemplo, sociedad FI:

Si un usuario anota ese campo, como parámetro de entrada en sus parámetros propios de usuario (ver transacción SU3), entonces puede poner: “BUK” = xxx (siendo xxx la sociedad FI).

Entonces cada vez que ingresa a una transacción de usuario, ejemplo FB01, automáticamente SAP coloca la sociedad FI en el campo de sociedad FI, y no debe estar introduciendo manualmente el valor :+1:

Esa es su función del lado “funcional”.
Ahora del lado ABAP, no sé :smiley:

Abrazo!

1 me gusta

te han puesto a trabajar @johnny282

memory id te permite colocar en la memoria de la sesion el valor de la variable, esto te permite hacer referencia, por medio del id especificado, a ese valor desde un contexto externo al activo.

tomemos como ejemplo el parametro sociedad

esta sentencia indica al sistema que el valor introducido el en parametro sociedad lo coloque en memoria con el identificador buk

luego, desde otro programa diferente a donde declaraste el parameter, utilizas la sentencia GET PARAMETER ID ‘buk’ FIELD var y asi obtienes en la variable var el valor del parametro sociedad del otro programa.

espero haberme explicado :sunglasses:

3 Me gusta

Que tal @marciano!!!

Gracias por el dato :+1:!!!

La verdad que existen bastantes conceptos que no manejo, pero poco a poco los conoceré.

Solo me quedan las siguientes dudas cuando mencionas lo siguiente:

Esto quiere decir que mientras la sesión donde se esta ejecutando esta sentencia este operativa, el valor esta en memoria en el id???
Una vez que cierras la sesión este valor es borrado???

Saludos…

asi tal cual es @johnny282, el valor se mantendra en memoria durante el tiempo que se mantenga abierta la sesion, al cerrar todos los modos abiertos en la sesion la variable es eliminada.

en caso que requieras eliminar la variable en memoria sin necesidad de finalizar la sesion, utiliza la sentencia SET PARAMETER ID ‘buk’ sin pasar ningun valor.

1 me gusta

Pero tienes un senticia, shared buffer, que te permite compartir la data entre diferente secciones. :slight_smile:

1 me gusta