Zone mémoire
SAP possède plusieurs niveaux de zones mémoire qui définissent l'accès et la vie des données.
DB
La base de données est a priori accèssible de partout, sans limite de durée.
Pour stocker des données on passera par :
Tables standard
Tables spécifiques
TVARVC
Variables utilisateur
Mémoire vive
Il existe plusieurs zones en mémoire vive ou scopes, dans l'ordre du plus global vers le plus particulier (Sauce):
la SAP memory, liée à une “session” de SAPLogon (donc partagée par tous les modes de la session)
l'ABAP memory, liée à un mode de SAPLogon (donc partagée par toutes les internal sessions du mode)
l'internal session, liée à un run de programme en particulier (les internal session sont stackées dans le mode)
les FORM, MODULE, SCREEN, FUNCTION, METHOD, etc
Commandes ABAP
Les commandes ABAP correspondant à chaque niveau sont :
les SPA/GTA pour la SAP memory
SET PARAMETER ID <pid> FIELD <f>.
GET PARAMETER ID <pid> FIELD <f>.
les EXPORT/IMPORT pour l'ABAP memory
EXPORT <f> TO MEMORY ID <pid>.
IMPORT <f> FROM MEMORY ID <pid>.
les définitions dans le programme principal (le FUNCTION-POOL
pour les FM, les attributs de classe, etc) pour l'internal session (DATA
ou FIELD-SYMBOLS
)
les définitions dans le bloc particulier (DATA
ou FIELD-SYMBOLS
)
Durée de vie
Les export dans l'ABAP memory semblent y vivre tant que l'internal session d'origine est dans la stack (ou qu'un FREE MEMORY
est éxecuté)
Les variables globales vivent tant que le programme principal est en cours d'éxecution (trivial ! sauf dans les cas des FM ! : l'internal session du FUNCTION-POOL reste dans la stack du mode)