Comment puis-je créer dynamiquement des objets en se basant sur une table interne en ABAP?
J'ai une table interne rempli avec le type de référence pour les objets que je veux créer, comme (première ligne de l'en-tête de la table interne ITAB):
+==========+===============+
| OBJ_TYPE | OBJ_CLASS_REF |
+==========+===============+
| TYPE1 | ZCL_CLASS1 |
|---------- | ---------------|
| TYPE2 | ZCL_CLASS2 |
+----------+---------------+
Ce que je voudrais faire dans mon programme est présent (j'ai mis les numéros de ligne):
1 LOOP AT itab
2 "Concatenate LO_ and the value of ITAB-OBJ_TYPE
3 CONCATENATE 'LO_' itab-obj_type INTO v_obj_name.
4 "Create a reference object
5 CREATE DATA (v_obj_name) TYPE REF TO itab-obj_type.
6 CREATE OBJECT (v_obj_name).
7 ENDLOOP
Comment j'ai réussi à faire des lignes 5 et 6?
Salutations, que voulez-vous faire avec ces objets ? Ils ont en commun des méthodes ou des propriétés que vous souhaitez utiliser ?
Pour l'instant, ils n'ont pas le commun des méthodes ou des propriétés. Je suis en essayant de créer une fonctionnalité similaire à SCII dans lequel vous créez une nouvelle classe à l'aide de modèles CL_CI_CATEGORY et CL_CI_SCAN pour lorsque vous souhaitez ajouter des contrôles à la SCI. Ce que j'ai pensé à faire était de créer un custom z-table pour contenir toutes les valeurs pour les tests facultatifs l'utilisateur peut vouloir le faire. Ainsi, la création dynamique d'objets lors de l'exécution, car il n'est pas jusqu'alors que le programme sur les contrôles de l'utilisateur souhaite exécuter. Je ne sais pas si ma conception est bonne, donc veuillez en informer.
Pour l'instant, ils n'ont pas le commun des méthodes ou des propriétés. Je suis en essayant de créer une fonctionnalité similaire à SCII dans lequel vous créez une nouvelle classe à l'aide de modèles CL_CI_CATEGORY et CL_CI_SCAN pour lorsque vous souhaitez ajouter des contrôles à la SCI. Ce que j'ai pensé à faire était de créer un custom z-table pour contenir toutes les valeurs pour les tests facultatifs l'utilisateur peut vouloir le faire. Ainsi, la création dynamique d'objets lors de l'exécution, car il n'est pas jusqu'alors que le programme sur les contrôles de l'utilisateur souhaite exécuter. Je ne sais pas si ma conception est bonne, donc veuillez en informer.
OriginalL'auteur Eric | 2012-03-13
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, c'est une bonne idée de fournir une interface ou d'un résumé de la superclasse et avoir vos divers classes implémentent cette interface ou sous-classe de cette classe abstraite - cela permettra d'économiser beaucoup d'inutiles casting. Donc, disons que vous avez ZIF_FOO avec des classes ZCL_BAR et ZCL_BAZ de la mettre en œuvre. Le tableau pourrait être
Ensuite, vous pouvez remplir le tableau comme ceci:
Si vous souhaitez utiliser des classes locales, vous pouvez faire la même chose, il suffit d'utiliser un plus type de nom (SEOCLASS avec ses 30 caractères ne sera pas suffisant) et spécifier le nom du type tel que décrit dans la documentation en ligne de la RTTI:
OriginalL'auteur vwegert