User Tools

Site Tools


abap:dynamic_programming

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
abap:dynamic_programming [2017/07/21 16:06] ginkoabap:dynamic_programming [2017/08/01 17:29] ginko
Line 3: Line 3:
  
 ===== Les field-symbols ===== ===== Les field-symbols =====
 +//Note : les field-symbols ont été en grande partie remplacés par les références (les fs sont la précédente génération). Une référence permet de faire tout ce que fait un fs et d'autres choses encore.//
 +
 L'élément central de la programmation dynamique : les field-symbols. L'élément central de la programmation dynamique : les field-symbols.
  
Line 15: Line 17:
 ASSIGN (ls_plop) TO <fs1>. "Content of var. ie. if ls_foo-bar = '1234' ; ls_plop = 'ls_foo-bar' then <fs1> = '1234'. ASSIGN (ls_plop) TO <fs1>. "Content of var. ie. if ls_foo-bar = '1234' ; ls_plop = 'ls_foo-bar' then <fs1> = '1234'.
 ASSIGN et_plip[] TO <et_plip>[]. "Table content</code> ASSIGN et_plip[] TO <et_plip>[]. "Table content</code>
 +===== Références =====
 +==== Déclaration ====
 +<code abap>DATA wldv_val TYPE REF TO i. "Déclaration typée
 +DATA wldv_val TYPE REF TO data. "Sans type
 +DATA wldv_val TYPE REF TO cl_gui_alv_grid. "Type objet</code>
 +==== Référencement/déréférencement ====
 +<code abap>GET REFERENCE OF wlv_val INTO wldv_val. "Référencement
 +wldv_val->* = wlv_val2. "Déréférencement</code>
 +
 +==== Différences avec les field-symbols ====
 +  * Un fs peut être assigné dynamiquement sans connaitre le **nom** de la variable / Une référence peut être instanciée sans connaitre le **type** de la variable.
 +  * Un fs ne peut référencer qu'une variable vivant dans le **scope du programme**. Une référence peut référencer une variable dans **[[https://ginkobox.fr/work/wiki/doku.php?id=abap:memory#memoire_vive|l'ABAP memory]]**.
 ===== Typage dynamique ===== ===== Typage dynamique =====
 Au delà de l'assignation de field-symbols depuis des sources instanciées et typées (même si le type peut ne pas être connu à l'avance), il faut aussi parfois pouvoir manipuler des données qui vont être crées lors de l'exécution et dont le type est inconnu à l'avance. Pour cela il va falloir recourir à des commandes particulières et à des fonctions qui vont puiser des informations directement auprès du kernel (autrefois des FM ALV, aujourd'hui des classes dédiées). Au delà de l'assignation de field-symbols depuis des sources instanciées et typées (même si le type peut ne pas être connu à l'avance), il faut aussi parfois pouvoir manipuler des données qui vont être crées lors de l'exécution et dont le type est inconnu à l'avance. Pour cela il va falloir recourir à des commandes particulières et à des fonctions qui vont puiser des informations directement auprès du kernel (autrefois des FM ALV, aujourd'hui des classes dédiées).
abap/dynamic_programming.txt · Last modified: 2017/08/01 17:31 by ginko