September 05, 2010     | Register
  
Subject: Déclaration de TABLES dans un FORM
Prev Next
You are not authorized to post a reply.

Author Messages

voob
Messages:52

27/07/2010 15:10:51  

Bonjour,

J'ai quelques difficultés pour déclarer des structures dans un form.

 

  DATA : BEGIN OF wt_nekko OCCURS 0.
          INCLUDE STRUCTURE ekko.
  DATA : END OF wt_nekko.

  DATA : BEGIN OF wt_xekkn OCCURS 0.
          INCLUDE STRUCTURE ekkn.
          INCLUDE STRUCTURE icdind.
          INCLUDE STRUCTURE wekpo.
  DATA : END OF wt_xekkn.

  DATA : BEGIN OF wt_xekpo OCCURS 0.
          INCLUDE STRUCTURE ekpo.
          INCLUDE STRUCTURE icdind.
          INCLUDE STRUCTURE wekpo.
  DATA : END OF wt_xekpo.


  DATA : wlv_ebeln LIKE ekko-ebeln,
         wlv_lifnr LIKE ekko-lifnr,
         wlv_ekgrp LIKE ekko-ekgrp,
         wlv_aufnr LIKE ekkn-aufnr,
         wlv_netpr LIKE ekpo-netpr,
         wlv_ktmng LIKE ekpo-ktmng,
         wlv_type  LIKE zxx_typepiece-type.

 

* Préparation des infos à envoyer dans la fonction
  PERFORM create_prepa_infos_fonction TABLES wt_nekko
                                             wt_xekkn
                                             wt_xekpo
                                      USING  wlv_lifnr
                                             wlv_ekgrp
                                             wlv_aufnr
                                             wlv_netpr
                                             wlv_ktmng
                                             wlv_type
                                             wlv_ebeln.

 

*&---------------------------------------------------------------------
*
*&      Form  create_prepa_infos_fonction
*&---------------------------------------------------------------------
*
*       text
*----------------------------------------------------------------------
*
*      -->P_WLV_LIFNR  Numéro fournisseur
*      -->P_WLV_EKGRP  Groupe acheteurs
*      -->P_WLV_AUFNR  Ordre imputation
*      -->P_WLV_NETPR  Prix net du doc d'achat
*      -->P_WLV_KTMNG  Quantité cible
*      -->P_WLV_TYPE   Type pièce
*      -->P_WLV_EBELN  Numero de document d'achat
*      <--P_WT_NEKKO  text
*      <--P_WT_XEKKN  text
*      <--P_WT_XEKPO  text
*----------------------------------------------------------------------
*FORM create_prepa_infos_fonction TABLES   P_WT_NEKKO STRUCTURE EKKO
                                                                                     P_WT_XEKKN STRUCTURE EKKN
                                                                                                                 STRUCTURE ICDIND
                                                                                                                 STRUCTURE WEKPO
                                                                                     P_WT_XEKPO STRUCTURE EKPO
                                                                                                                 STRUCTURE ICDIND
                                                                                                                 STRUCTURE WEKPO
                                                                    USING    P_WLV_LIFNR
                                                                                     P_WLV_EKGRP
                                                                                     P_WLV_AUFNR
                                                                                     P_WLV_NETPR
                                                                                     P_WLV_KTMNG
                                                                                     P_WLV_TYPE
                                                                                     P_WLV_EBELN.

 

...

ENDFORM.

 

La déclaration du FORM ne fonctionne pas...

le système n'apprécie pas ...

P_WT_XEKKN STRUCTURE EKKN
                            STRUCTURE ICDIND
                            STRUCTURE WEKPO

 

... et son jumeau.

 

Auriez-vous une idée ? Comment déclarer une structure ?

Merci par avance.

vOOb

 


Tout a une fin, sauf la banane qui en a deux.

sandraros
Messages:193

27/07/2010 15:22:39  

Regarde la doc en ligne de STRUCTURE: "A formal parameter p1 p2 ... can be specified with the addition STRUCTURE instead of typing, where struc must be a program-local structure (data object, no data type) or a flat structure from the ABAP Dictionary"

Donc tu peux mettre derrière STRUCTURE une variable ABAP du type attendu. Tu n'as pas le droit de répéter STRUCTURE plusieurs fois par paramètre.

DATA : BEGIN OF wt_nekko OCCURS 0.
        INCLUDE STRUCTURE ekko.
DATA : END OF wt_nekko.

DATA : BEGIN OF wt_xekkn OCCURS 0.
        INCLUDE STRUCTURE ekkn.
        INCLUDE STRUCTURE icdind.
        INCLUDE STRUCTURE wekpo.
DATA : END OF wt_xekkn.

DATA : BEGIN OF wt_xekpo OCCURS 0.
        INCLUDE STRUCTURE ekpo.
        INCLUDE STRUCTURE icdind.
        INCLUDE STRUCTURE wekpo.
DATA : END OF wt_xekpo.

DATA : wlv_ebeln LIKE ekko-ebeln,
       wlv_lifnr LIKE ekko-lifnr,
       wlv_ekgrp LIKE ekko-ekgrp,
       wlv_aufnr LIKE ekkn-aufnr,
       wlv_netpr LIKE ekpo-netpr,
       wlv_ktmng LIKE ekpo-ktmng.
*       wlv_type  LIKE zxx_typepiece-type.

* Préparation des infos à envoyer dans la fonction
PERFORM create_prepa_infos_fonction TABLES wt_nekko
                                           wt_xekkn
                                           wt_xekpo
                                    USING  wlv_lifnr
                                           wlv_ekgrp
                                           wlv_aufnr
                                           wlv_netpr
                                           wlv_ktmng
*                                           wlv_type
                                           wlv_ebeln.

*----------------------------------------------------------------------
FORM create_prepa_infos_fonction 
      TABLES    p_wt_nekko STRUCTURE wt_nekko
                p_wt_xekkn STRUCTURE wt_xekkn
                p_wt_xekpo STRUCTURE wt_xekpo
      USING     p_wlv_lifnr
                p_wlv_ekgrp
                p_wlv_aufnr
                p_wlv_netpr
                p_wlv_ktmng
*                p_wlv_type
                p_wlv_ebeln.
ENDFORM.                    "create_prepa_infos_fonction


voob
Messages:52

27/07/2010 15:34:23  
Merci :)
Voilà le message d'erreur lorsque j'applique ta déclaration.
"Field WT_NEKKO is unknow. It is neither in one of the specified tables nor defined by a DATA statement

...

Tout a une fin, sauf la banane qui en a deux.

Celdrøn
Messages:1399

27/07/2010 15:45:03  

Moi je dis, il n'y a rien de mieux que d'utiliser des USING/CHANGING + Type de table.

Étant donné que TABLES devient obsolète.

"Note 
Use of table parameters in the interface for subroutines is obsolete but a large number of subroutines have not yet been converted to appropriately typed USING or CHANGING parameters, so that they must still be supplied with data by the TABLES addition to the PERFORM statement. " (source help.sap.com/abapdocu_70/en/ABAPPERFORM_PARAMETERS.htm)

Sinon pour ton souci, ce n'est pas STRUCTURE qu'il faut utiliser mais LIKE étant donné que tu fais référence à une entête de table interne :

TABLES pt_nekko LIKE wt_nekko
             pt_xekkn LIKE wt_xekkn
             pt_xekpo LIKE wt_xekpo

Voili voilou.


Soutenez moi dans ma lutte contre le webmaster : http://celdron.labrute.fr
"Un être en tant qu'être, ne pourrait-il pas être autre qu'il n'est...s'il n'explique pas lui même son être?"

ABAPeloula !!! ça va dumper !!!
Sur un air de musique, ça pourrait faire le nouveau tube de l'été ^_^

voob
Messages:52

27/07/2010 16:24:13  
Merci ca fonctionne,

Comment faire un APPEND sur pt_nekko ?
pt_nekko n'est pas reconnue comme table interne :s





Tout a une fin, sauf la banane qui en a deux.

Celdrøn
Messages:1399

27/07/2010 16:42:51  

Nan, tu fais un amalgame je pense :

PT_NEKKO n'est pas reconnu comme entête de table, PT_NEKKO est une table.

Ce qui se passe, c'est qu'il n'y a que la table qui est passé en paramètre, l'entête ne l'est pas, et ça explique pourquoi PT_NEKKO est une table pure et correspond à WT_NEKKO[].

C'est pour ça que je n'utilise pas d'entête de table, ça évite de se tromper dans son raisonnement.

Pour remplir ta table il faut que tu fasses :

DATA : ls_nekko LIKE LINE OF pt_nekko.

 ls_nekko-field = data.

APPEND ls_nekko TO pt_nekko.

 

C'est une des manières de faire.


Soutenez moi dans ma lutte contre le webmaster : http://celdron.labrute.fr
"Un être en tant qu'être, ne pourrait-il pas être autre qu'il n'est...s'il n'explique pas lui même son être?"

ABAPeloula !!! ça va dumper !!!
Sur un air de musique, ça pourrait faire le nouveau tube de l'été ^_^

sandraros
Messages:193

27/07/2010 16:50:57  

Pour répondre à ta question sur le message "Field WT_NEKKO is unknow. It is neither in one of the specified tables nor defined by a DATA statement

c'est juste parce que tu as déclaré WT_NEKKO comme variable locale.

ça marchera si elle est déclarée globale.

sinon tu fais comme Celdron dit (et je fais comme lui aussi mais j'ai pas le courage de faire de la formation )


voob
Messages:52

27/07/2010 16:53:30  

Ah oui... c'est dingue, je ne me suis toujours pas familiarisé avec la Header Line.
Je comprends maintenant.

Merci !

 

Edit :  Oui merci Sandraros :)


Tout a une fin, sauf la banane qui en a deux.

Celdrøn
Messages:1399

27/07/2010 17:01:30  
Posté par sandraros on 27/07/2010 16:50:57

c'est juste parce que tu as déclaré WT_NEKKO comme variable locale.


Erf, j'utilise W_ devant mes variables pour indiquer que ce sont des variables globales, j'ai été induit en erreur.

Et puis je pensais que STRUCTURE c'était pour indiquer une structure déclaré dans le DDIC.
Bref, STRUCURE est obsolète de toutes façons, il faut utiliser TYPE ou LIKE... comme ça, je m'en tire sans honte !!!


Soutenez moi dans ma lutte contre le webmaster : http://celdron.labrute.fr
"Un être en tant qu'être, ne pourrait-il pas être autre qu'il n'est...s'il n'explique pas lui même son être?"

ABAPeloula !!! ça va dumper !!!
Sur un air de musique, ça pourrait faire le nouveau tube de l'été ^_^
You are not authorized to post a reply.
Forums > Forums SAP > Technique : ABAP et ABAP OO > Déclaration de TABLES dans un FORM



ActiveForums 3.7