User Tools

Site Tools


abap:objet

ABAP objet

Usage

Instanciation

DATA: obj TYPE REF TO cl_object_class.
CREATE OBJECT obj.

Appel de méthode

DATA(lv_ret) = obj->method( arg ). " Inline declaration
DATA(lv_ret) = me->method( arg ). " From within

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.

DATA lx_error TYPE REF TO cx_root.
RAISE EXCEPTION lx_error.

handling exceptions

TRY.
 
 ...
  " TRY block (application coding)
 
CATCH cx_... cx_... ...
 
 ... 
" CATCH block (exception handler)
 
CATCH cx_... cx_... ...
 
 ... 
" CATCH block (exception handler)
 
 ...
 
 CLEANUP.
 
 ... 
" CLEANUP block (cleanup context)
 
ENDTRY.

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 :

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.

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
    DATA att TYPE REF TO DATA.
  • Instancier l'attribut par référence :
    GET REFERENCE OF target INTO att.
  • Dans la méthode, assigner la référence à un FIELD-SYMBOL :
    FIELD-SYMBOLS <lv_target> TYPE ANY.
    ASSIGN me->att->* TO <lv_target>. "me->att->* désigne la cible du pointeur me->att
abap/objet.txt · Last modified: 2016/09/08 12:11 by ginko