IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SAP Discussion :

Table interne dans une autre table interne


Sujet :

SAP

  1. #1
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 61
    Points : 63
    Points
    63
    Par défaut Table interne dans une autre table interne
    Bonjour tout le monde,

    Quelqu'un a-t-il déjà déclaré une table interne contenant elle-même une autre table interne ?

    Si oui (j'espère), comment fait-on pour accéder aux champs de la première table interne ? J'ai essayé avec des tirets mais cela ne semble pas fonctionner.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    DATA: BEGIN OF st1 OCCURS 0,
                lifnr TYPE lfa1-lifnr,
                matnr TYPE mara-matnr,
                werks type mara-werks,
             END OF st1.
    
    DATA: BEGIN OF st2 OCCURS 0,
                it1 TYPE TABLE OF st1 WITH HEADER LINE,
             END OF st2.
    st2-st1-lifnr me génère une erreur!!!

    Pouvez-vous me dire pourquoi ? Merci d'avance,

    Sircus

  2. #2
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    Par défaut
    deja sans aller jusqu'aux tirets, est-ce que ton code avec les délcarations compile ? Chez moi il ne passe pas (outre le fait qu'il n'y a pas de werks dnas mara mais dans marc)

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 220
    Points : 70
    Points
    70
    Par défaut
    Il faut peut être qu il déclare les tables mara et lfa1 ?

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 220
    Points : 70
    Points
    70
    Par défaut
    Le champs de table que tu veux déclarer dans ta table interne ne serait ce pas plûtot WESCH ?

    Car dans la table Mara il y a pas de zone WERKs

  5. #5
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 61
    Points : 63
    Points
    63
    Par défaut
    Oui Cladsam ça compile très bien, en fait j'ai un peu simplifié les tables internes là, elles sont bien plus consécantes dans mon prog mais par soucis de clarté et de lisibilité j'ai fait comme ça...

    Mais pas de pb ça compile ! Je voulais simplement savoir comment faire pour avoir accés à un champ de la première table en passant par la deuxième ?

  6. #6
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    Par défaut
    Citation Envoyé par sircus Voir le message
    Oui Cladsam ça compile très bien, en fait j'ai un peu simplifié les tables internes là, elles sont bien plus consécantes dans mon prog mais par soucis de clarté et de lisibilité j'ai fait comme ça...

    Mais pas de pb ça compile ! Je voulais simplement savoir comment faire pour avoir accés à un champ de la première table en passant par la deuxième ?
    C'est important parceque quand je mets ta syntaxe, il ne compile pas. Il me dit que le type st1 n'existe pas. Donc je pense que tu as fait une erreur dans tes déclarations ?

    EDIT : pardon, une erreur dans les déclarations que tu as mise dans ton premier message, laquelle erreur n'existe pas dans ton prog d'origine qui compile

  7. #7
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 61
    Points : 63
    Points
    63
    Par défaut
    Hé Cladsam ta vue baisse on dirait, j'ai compris que le code que j'avais mis dans ce post ne compilait pas, mais on s'en tape car ce n'est pas l'objet de ma question ! lol

    Ce que je voudrais savoir c'est comment on fait pour accéder aux données contenues dans la table interne qui est elle-même dans une autre table interne ... Quelqu'un a-t-il déjà fait ce genre de trucs ?

    Petit rappel : j'ai essayé de faire "write : it1-it2-champ" mais ça ne marche pas

    Merci qd mm Cladsam, c'est gentil de vouloir m'aider ;-)

  8. #8
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    313
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 313
    Points : 375
    Points
    375
    Par défaut
    a priori tu te trompes de sens

    il faut faire it2-it1-champs

  9. #9
    Membre confirmé

    Homme Profil pro
    Indépendant
    Inscrit en
    Juin 2002
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Indépendant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 540
    Points : 607
    Points
    607
    Par défaut
    bonjour,
    Il faut faire une boucle sur la seconde table interne apres assignement sur une seconde structure.
    L.

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2005
    Messages : 65
    Points : 69
    Points
    69
    Par défaut
    Bonjour

    j'ai déjà fait cela, donc voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    ** Déclaration
    ** Données pour traitement du fichier en entrée
    ** Table interne pour récupération des données XML
    TYPES: BEGIN OF psaleorder,
            i_kschl TYPE komv-kschl,    "Type de condition
            i_itemprice(19) TYPE c,     "Prix unitaire
            i_kpein TYPE komv-kpein,    "Base
            i_kmein TYPE komv-kmein,    "Unité condition prix
            i_kbetr TYPE komv-kbetr,    "Montant du poste
            i_itemdisc(8) TYPE p DECIMALS 3,  "Remise sur article
            i_discamount TYPE komv-kbetr,"Montant de la remise
            i_itemamount TYPE komv-kbetr,"Montant du poste remisé
            i_vrkme TYPE vbap-vrkme,    "Unité de prix
            i_addvat TYPE c,            "Add TVA
          END OF psaleorder.
    
    **Table pour récupération des données de commande
    *Type de table pour subitem N3 (Correspond au subitem)
    TYPES: BEGIN OF s_subitem,
            i_itid(5) TYPE c,         "ID du poste
            i_itlabel(50) TYPE c,     "Désignation grpe article
            i_itdescr(100) TYPE c,    "Description
            i_itpstyv TYPE vbap-pstyv,"Type de poste
            i_nogrp(3) TYPE c,        "Indic affi. grpe article
            i_itnum(6) TYPE c,        "N° poste MKG
            i_itreqdate(20) TYPE c,    "Date de soumission
            i_itreqpost(30) TYPE c,   "Champ libre pour lot 2
            i_itemid(12) TYPE c,      "Code article MKG
            i_fixepx TYPE c,          "Prix fixé
            i_ntgew TYPE vbap-ntgew,  "Poids
            i_gewei TYPE vbap-gewei,  "Unité de poids
            i_matnr TYPE vbap-matnr,   "Code Article SAP
            i_formula(2) TYPE c,      "Formule de calcul
            i_kwmeng TYPE vbap-kwmeng, "Quantité
            i_vrkme TYPE vbap-vrkme,   "Unité de quantité = unité de vente?
            i_ubase TYPE vbap-vrkme,   "Unité de base de la quantité
            i_zterm TYPE vbkd-zterm,   "Condition ou Délais de paiement
            i_zlsch TYPE vbkd-zlsch,   "Type de paiement
            i_prctr TYPE vbap-prctr,   "Centre de profit = Ligne de produit
            i_of(15) TYPE c,            "Ordre de fabrication
            price TYPE psaleorder OCCURS 0,
           END OF s_subitem.
    
    *Type de table pour item N2 (correspond au block OrderItem)
    TYPES: BEGIN OF s_itemn2,
            i_itid(5) TYPE c,         "ID du poste
            i_itlabel(40) TYPE c,     "Désignation grpe article
            i_itdescr(100) TYPE c,    "Description
            i_itpstyv TYPE vbap-pstyv,"Type de poste
            i_nogrp(3) TYPE c,        "Indic affi. grpe article
            i_itnum(6) TYPE c,        "N° poste MKG
            i_itreqdate(20) TYPE c,    "Date de soumission
            i_itreqpost(30) TYPE c,   "Champ libre pour lot 2
            i_itemid(12) TYPE c,      "Code article MKG
            i_fixepx TYPE c,          "Prix fixé
            i_ntgew TYPE vbap-ntgew,  "Poids
            i_gewei TYPE vbap-gewei,  "Unité de poids
            i_matnr TYPE vbap-matnr,   "Code Article SAP
            i_formula(2) TYPE c,      "Formule de calcul
            i_kwmeng TYPE vbap-kwmeng, "Quantité
            i_vrkme TYPE vbap-vrkme,   "Unité de quantité = unité de vente?
            i_ubase TYPE vbap-vrkme,   "Unité de base de la quantité
            i_zterm TYPE vbkd-zterm,   "Condition ou Délais de paiement
            i_zlsch TYPE vbkd-zlsch,   "Type de paiement
            i_prctr TYPE vbap-prctr,   "Centre de profit = Ligne de produit
            i_of(15) TYPE c,            "Ordre de fabrication
            price TYPE psaleorder OCCURS 0,
            subitem TYPE s_subitem OCCURS 0,
           END OF s_itemn2.
    
    *Type de table pour item N1 (Correspond au block Group)
    TYPES: BEGIN OF s_item,
            i_itid(5) TYPE c,         "ID du poste
            i_itlabel(40) TYPE c,     "Désignation grpe article
            i_itdescr(100) TYPE c,    "Description
            i_itpstyv TYPE vbap-pstyv,"Type de poste
            i_nogrp(3) TYPE c,        "Indic affi. grpe article
            i_itnum(6) TYPE c,        "N° poste MKG
            i_itreqdate(20) TYPE c,    "Date de soumission
            i_itreqpost(30) TYPE c,   "Champ libre pour lot 2
            i_itemid(12) TYPE c,      "Code article MKG
            i_fixepx TYPE c,          "Prix fixé
            i_ntgew TYPE vbap-ntgew,  "Poids
            i_gewei TYPE vbap-gewei,  "Unité de poids
            i_matnr TYPE vbap-matnr,   "Code Article SAP
            i_formula(2) TYPE c,      "Formule de calcul
            i_kwmeng TYPE vbap-kwmeng, "Quantité
            i_vrkme TYPE vbap-vrkme,   "Unité de quantité = unité de vente?
            i_ubase TYPE vbap-vrkme,   "Unité de base de la quantité
            i_zterm TYPE vbkd-zterm,   "Condition ou Délais de paiement
            i_zlsch TYPE vbkd-zlsch,   "Type de paiement
            i_prctr TYPE vbap-prctr,   "Centre de profit = Ligne de produit
            i_of(15) TYPE c,            "Ordre de fabrication
           price TYPE psaleorder OCCURS 0,
           itemn2 TYPE s_itemn2 OCCURS 0,
           END OF s_item.
    
    *Type pour table de traitement
    TYPES: BEGIN OF s_itaborder,
    *Données d'en-tête de la commande <Order>
            h_orderid(12) TYPE c,    "N°Commande DMF
            h_auart TYPE vbak-auart, "Type de document commercial
            h_groupid(24) TYPE c,    "N° du devis DMF
            h_custid(10) TYPE c,     "N° point de vente DMF
            h_kunnr TYPE vbpa-kunnr, "Code client SAP
    *       h_ivat  TYPE c,          "Soumis à TVA ou non
            h_kdgrp TYPE vbkd-kdgrp, "Groupe vendeur (annonceur)
            h_ncamp(100) TYPE c,     "Nom de la campagne
            h_headertxt(150) TYPE c, "Texte d'entête sur la facture
            h_footertxt(150) TYPE c, "Texte de bas de page dans la facture
            h_messtyp TYPE c,        "Type de message 4 création, 5 modif.
            h_dateheure(20) TYPE c,  "Date action = envoie du fichier
            h_creator(3) TYPE c,     "Créateur du message 'MKG' pour DMF
            h_siteprod(4) TYPE c,    "Identifiant du site de production
    *       h_reqdate(8) TYPE c,     "Date de soumission à production
            h_vtweg TYPE vbak-vtweg, "Canal de distribution
            h_spart TYPE vbak-spart, "Secteur d'activité
            h_waerk TYPE vbak-waerk, "Devise
            h_bukrs TYPE vbak-bukrs_vf, "Organisation Commercial
           itemn1 TYPE s_item OCCURS 0,
           END OF s_itaborder.
    
    **Tables de traitement
    DATA: itsaleord TYPE STANDARD TABLE OF s_itaborder,
          itsaleord_id TYPE STANDARD TABLE OF s_itaborder WITH HEADER LINE,
          s_itsaleord TYPE s_itaborder.
    Bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 29/04/2011, 13h20
  2. Réponses: 2
    Dernier message: 29/10/2010, 13h09
  3. Réponses: 2
    Dernier message: 02/06/2010, 11h55
  4. Réponses: 6
    Dernier message: 13/11/2009, 16h06
  5. Requete : Champ d'une table contenu dans une autre table
    Par Bridou dans le forum Requêtes et SQL.
    Réponses: 0
    Dernier message: 19/02/2008, 10h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo