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.
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
Esa es su función del lado “funcional”.
Ahora del lado ABAP, no sé
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.
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???
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.