User Tools

Site Tools


abap:objet

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
abap:objet [2014/11/14 11:55] ginkoabap:objet [2016/09/08 12:11] (current) – [Attributs dynamiques] ginko
Line 8: Line 8:
 DATA(lv_ret) = me->method( arg ). " From within</code> DATA(lv_ret) = me->method( arg ). " From within</code>
 ===== Exceptions ===== ===== Exceptions =====
 +**__NB__** : L'instruction ''TRY. ... CATCH ...'' ne peut catcher que les class-exceptions !! (Donc bien cocher ''Class exceptions'' dans la définition des méthodes.
 +
 <code abap>DATA lx_error TYPE REF TO cx_root. <code abap>DATA lx_error TYPE REF TO cx_root.
 RAISE EXCEPTION lx_error.</code> RAISE EXCEPTION lx_error.</code>
Line 36: Line 38:
  
 ENDTRY.</code> ENDTRY.</code>
 +===== Tips =====
 +==== Types ====
 +Il est possible de déclarer des types sur les classes. Il devient alors possible de les utiliser simplement dans les définitions des méthodes. En revanche, pour les utiliser dans les déclarations de variables à l'extérieur, il y a une petite siouxerie :<code abap>DATA lo_obj TYPE REF TO zcl_obj.
 +CREATE OBJECT lo_obj.
 +* Ne pas faire :
 +DATA lv_var TYPE lo_obj->yv_var.
 +* Mais :
 +DATA lv_var TYPE zcl_obj->yv_var.</code>
 +==== Attributs dynamiques ====
 +Il n'est pas possible de définir des attributs en ''FIELD-SYMBOLS''. Pour faire l'équivalent il faut :
 +  * Définir l'attribut en <code abap>DATA att TYPE REF TO DATA.</code>
 +  * Instancier l'attribut par référence : <code abap>GET REFERENCE OF target INTO att.</code>
 +  * Dans la méthode, assigner la référence à un ''FIELD-SYMBOL'' : <code abap>FIELD-SYMBOLS <lv_target> TYPE ANY.
 +ASSIGN me->att->* TO <lv_target>. "me->att->* désigne la cible du pointeur me->att</code>
abap/objet.1415962547.txt.gz · Last modified: 2014/11/14 11:55 by ginko