10138 Readings
DDIC
SAP for 12 years
Posted by Yann MORINEAU
7 years ago
Modified 7 years ago


Licence Creative Commons Attribution - Pas d'Utilisation Commerciale - Pas de Modification 4.0 International.

Partager — copier, distribuer et communiquer le matériel par tous moyens et sous tous formats

The group types

SE11 transaction enables you to create a group of types. This is good but what's the point?

Begin with a concrete example.

BW project I'm working on now requires me to process the data of an exhaustive list of models. Until today, I stated the same constants in my BAdIs attributes. These constants contain the names of my models. Now I call a single group of types in which I declare all my constants and all my type.

 

1.Create a group of types

Start transaction SE11

img

 

Choose the name of your group here ZYMO1.


img

Click  img

 

Give a description for your group

img

and  img

 

The window for creating a transport opens.

img

For our example, we create a local object. img

For our example, we create a local object.

 

2.Constants and types declarations

An almost empty page appears.

img

 

We'll start by creating a "my_constants" type in which we declare "constant1" and "constant2".

TYPE-POOL ZYMO .

CONSTANTS :
BEGIN OF my_constants,
  constant1 TYPE char01 VALUE 'A',
  constant2 TYPE char03 VALUE 'ABC',
END OF my_constants.

 

Validate your code by clicking  img

An error is detected :

img

As clearly explains the error description, the type's name must start by group's name.

The correct syntax is:

TYPE-POOL ZYMO .

CONSTANTS :
BEGIN OF zymo_my_constants,
  constant1 TYPE char01 VALUE 'A',
  constant2 TYPE char03 VALUE 'ABC',
END OF zymo_my_constants.

Confirm again  img

img

No syntax errors detected, you can activate your code  img

img

img

Your first type is active, you can use it.

 

3.Utilisation du groupe

Start your REPORT or MODULE POOL

img

We declare the type group.

* Group type declaration
TYPE-POOLS : zymo1.

It then declares variables

* Variables declaration
DATA : v_value_a TYPE char01.

 

You can now use the data

img

img

img

 

* The use of the declared constant in the group types ZYMO1
V_VALUE_A = ZYMO1_MY_CONSTANTS-CONSTANT1.

 

We display the result

* Value display
WRITE V_VALUE_A.

 

Activate your code by clicking  img

And run your program by clicking  img 

 

Result :

img

A value is displayed.

 

4.Complete code

REPORT  Z_YMO1_TEST2.

* Group types declaration
TYPE-POOLS : zymo1.

* Variables declaration
DATA : v_value_a TYPE char01.

* The use of the declared constant in the group types ZYMO1
V_VALUE_A = ZYMO_MY_CONSTANTS-CONSTANT1.

* Value display
WRITE V_VALUE_A.

 

Iconvenience

  • Do not forget to declare TYPE-POOLS

Advantages

  • Save development time,
  • Create a robust framework,
  • Increase the portability of the code.

Pub

Comments

Mickaël TRéSORIER, 7 years ago

Hello les groupes de types sont une des solutions. Dans un environnement OO comme BI/BPC le plus cohérent reste de faire exactement les mêmes choses mais dans une classe. Voir même gérer les constantes et types dans une classe utile au développement. Le groupe de types était utilisé avec les groupes de fonctions... les groupe de programmes... etc. Dans l'abap OO l'utilisation de classes garde l'ensemble plus homogène.

Yann MORINEAU, 7 years ago

Salut Mickaël, Je n'ai jamais utilisé une classe comme un groupe de types. Je testerai dès demain. Merci :)

Yann MORINEAU, 7 years ago

Re, Alors voilà je viens d'essayer. Je dois raté une étape. 
 

Dans ma classe, voilà ce que je déclare :

class ZCL_YMO_TEST definition
  public
  final
  create public .

public section.
*"* public components of class ZCL_YMO_TEST
*"* do not include other source files here!!!

  CONSTANTS :
BEGIN OF zymo1_my_constants,
  constant1 TYPE char01 VALUE 'A',
  constant2 TYPE char03 VALUE 'ABC',
END OF zymo1_my_constants.

 

Et dans mon programme :

REPORT  Z_YMO_TEST2.

DATA : o_test TYPE REF TO ZCL_YMO_TEST.
CREATE OBJECT o_test.
O_TEST->

Mon objet O_TEST ne contient rien.

J'utilise pourtant cette technique pour atteindre les méthodes de la classe d'outils communs. 

Apparemment pour les types et constantes, ça ne fonctionne pas comme ça. Je m'y prends certainnement mal.

 

Sinon j'ai trouvé ça : http://help.sap.com/abapdocu_731/en/abendeclaration_dtypes_const_guidl.htm

Mon idée est créer une classe en SE24 pour y déclarer toutes mes constantes.

Je vais poursuivre mes recherches et mes tests.

Mickaël TRESORIER, 7 years ago

Le CREATE instancie ton objet. Les constantes sont accessibles sans utiliser d'instance. 

ZCL_YMO_TEST=>zymo1_my_constants-constant1 devrait marché.

Créer la classe en SE24 te facilitera la vie grandement et comme tout objet du DDIC il sera réutilisable. Evite de passer par des structures pour tes constantes c'est plus simple de voir au premier coup d'oeil les constantes dans la classe. Une structure les masquera...

Yann MORINEAU, 7 years ago

J'ai apporté des modifs.
 

Dans la classe ZCL_YMO_TEST,

class ZCL_YMO_TEST definition
  public
  final
  create public .

public section.
*"* public components of class ZCL_YMO_TEST
*"* do not include other source files here!!!

  constants CO_CONSTANT1 type CHAR07 value 'TEST_OK'. "#EC NOTEXT

 

Je ne déclare plus de type mais une simple constantes. La classe est publique, la constante aussi.

 

Et dans le programme :

REPORT  Z_YMO_TEST2.

ZCL_YMO_TEST=>

 

Le système me propose bien la classe mais pas la constante qu'elle contient.

J'ai sauvegardé, activé, fermé la session puis relancé. Toujours rien, c'est bizarre.

Pas d'OT, tout est en local. Mais je ne pense pas que ça vienne de là.

Yann MORINEAU, 7 years ago

Flo vient de me montrer un exemple qui fonctionne. On comprend pas pourquoi il ne se passe rien chez moi. Je te tiens au courant.

Modified 7 years ago
Yann MORINEAU, 7 years ago

Nous avons trouvé pourquoi !!!

ZCL_YMO_TEST2=>

au lieu de 

value = ZCL_YMO_TEST2=>CO_VALUE

L'autocomplétion te propose les éléments utilisables au moment de l'appel et non tous les éléments de ta classe.

Merci Mickael, je vais pouvoir améliorer mon code. Et merci Flo ;)

Sign in or Sign up to ask questions.

Latest tutorials from the same author

imgBPC

Déboguer un package

Astuce pour déboguer un package ...

Posted 6 years ago
Modified 6 years ago
6195
imgBPC

BPC BI and Source system

BPC Overview ...

Posted 6 years ago
Modified 6 years ago
6991
imgBPC

Vider le cache BPC

Vider le cache BPC avec UJA_REFRESH_DIM_CACHE ...

Posted 6 years ago
Modified 6 years ago
5331
imgBPC

BPC, BI et Système source

Vue d'ensemble de BPC ...

Posted 6 years ago
Modified 6 years ago
6043