Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > ERP > SAP
SAP Forum d'entraide sur SAP et sur la programmation avec le langage ABAP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/05/2011, 12h19   #1
Membre régulier
 
Inscription : mars 2006
Messages : 198
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 198
Points : 83
Points : 83
Par défaut Est-ce une table interne ?

Bonjour tout le monde,

je voulais savoir s'il y a une instruction en abap qui permet de vérifier qu'il s'agit d'une table interne.

Par exemple :

Code :
1
2
3
4
Si it_toto est une table interne
 " traitement
Fin Si
Si c'est une table interne, est ce possible de connaitre le nombre de champs ainsi que leurs types ?

Merci d'avance de votre aide.

Hiraa
Hiraa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2011, 13h14   #2
Membre du Club
 
Inscription : avril 2008
Messages : 38
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 38
Points : 47
Points : 47
bonjour,
tu devrais pouvoir t'en sortir avec la méthode cl_abap_datadescr si tu est en 6.40 minimum.

Code :
1
2
3
4
5
6
7
8
9
10
 SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background: #FFFFFF; } .L0S33 { color: #4DA619; } .L0S52 { color: #0000FF; } .L0S55 { color: #800080; } .L0S70 { color: #808080; }  type-pools : abap.


data : stg_ioheader type ioheader.
data : tg_ioheader_tab type ioheader_tab.

data : w_abap_typekind   type abap_typekind.

w_abap_typekind = cl_abap_datadescr=>get_data_type_kind( p_data = tg_ioheader_tab ).
sinon tu as l'instruction DESCRIBE FIELD.
vois dans les attributs de la classe pour voir la valeur pour une table interne.
jeje_gestrans est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 26/05/2011, 13h58   #3
Membre régulier
 
Inscription : mars 2006
Messages : 198
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 198
Points : 83
Points : 83
Merci beaucoup jeje_gestrans.

ça répond exactement à ma question.

Hiraa
Hiraa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2011, 17h10   #4
Membre du Club
 
Inscription : avril 2008
Messages : 38
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 38
Points : 47
Points : 47
De rien c'est toujours un plaisir d'aider avec mes connaissances.
jeje_gestrans est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 10h13   #5
Membre régulier
 
Inscription : mars 2006
Messages : 198
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 198
Points : 83
Points : 83
Toutefois, pour pouvoir connaitre les champs d'une table interne ainsi que leurs types, j'ai trouvé qu'il faut passer par une structure (de la même table interne).

En utilisant
Code :
DESCRIBE FIELD obj COMPONENTS comp
, si l'objet est une table interne la valeur renvoyée dans "comp" est 0 !!!

Mon besoin c'est de pouvoir comparer deux tables internes au niveau du nombre de champs et les types de champs.

Je continue à chercher ...

Merci d'avance de vos réponses !

Hiraa
Hiraa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2011, 11h47   #6
Membre confirmé
 
Inscription : août 2009
Messages : 226
Détails du profil
Informations forums :
Inscription : août 2009
Messages : 226
Points : 239
Points : 239
Salut Hiraa,

DESCRIBE FIELD est plutôt typé obsolète, il faut utiliser RTTI, qui correspond aux classes CL_ABAP_TYPEDESCR, CL_ABAP_DATADESCR (ce dont parlait jeje_gestrans), etc.

Je crois qu'il y a des exemples dans la doc de ces classes.

FORM read_comps_of_itab USING it_itab TYPE ANY TABLE.
DATA lo_tabledescr TYPE REF TO cl_abap_tabledescr.
DATA lo_structdescr TYPE REF TO cl_abap_structdescr.
DATA lt_comp TYPE cl_abap_structdescr=>component_table.
DATA ls_comp TYPE LINE OF cl_abap_structdescr=>component_table.
lo_tabledescr ?= cl_abap_typedescr=>describe_by_data( it_itab ).
lo_structdescr ?= lo_tabledescr->get_table_line_type( ).
lt_comp = lo_structdescr->get_components( ).
* LOOP AT lt_comp INTO ls_comp.
* ENDLOOP.
ENDFORM.

Il y a d'autres méthodes (et 1 attribut aussi) que GET_COMPONENTS éventuellement si elle ne correspond pas exactement à ton attente.

sandra
sandraros est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 10h53   #7
Membre régulier
 
Inscription : mars 2006
Messages : 198
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 198
Points : 83
Points : 83
Bonjour tout le monde,

Merci sandra.
Je teste et vous fais un retour.

Hiraa
Hiraa est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h44.


 
 
 
 
Partenaires

Hébergement Web