0
votes

Utilisation des symboles de champs pour la table interne créée pour 4 tables externes jointes intérieures

prétendument utiliser des symboles de terrain peut entraîner une meilleure performance, mais j'ai des expériences très rares avec des pointeurs et ne comprennent pas tout à fait le concept de pointeurs.

J'ai ce programme qui sélectionne carrid code >, ConnId code>, fldate code>, BookID code> et l'agence de voyage code> nom code> de la table créée par Join Inner des tableaux spffi code>, sflight code>, SPORK code> et Travelag code>, basé sur 2 entrées utilisateur ( Paramètres code>): p>

  • CityFrom code> LI>
  • cityto code> li> ul>

    Fondamentalement, je souhaite que l'utilisateur insère de l'endroit où il veut décoller et dans quelle ville il veut atterrir. Après cela, le programme affiche tous les vols qui sont possibles à réserver. P>

    Voici mon code (fonctionne bien), que je souhaiterais refroidir en utilisant des symboles de champ: p> xxx

    J'ai commencé par déclaration de symboles de terrain, je pensais avoir besoin, puis je les ai attribués aux tables. Après cela, j'ai essayé de déclarer paramètres code> et de spécifier leur type en fonction de symboles de champ nouvellement créés, mais il n'a pas fonctionné - Programme dit: "Type " est inconnu. Code > p>

    DATA: BEGIN OF wa,
            carrid TYPE spfli-carrid,
            connid TYPE spfli-connid,
            fldate TYPE sflight-fldate,
            bookid TYPE sbook-bookid,
            name TYPE stravelag-name,
          END OF wa,
          itab LIKE SORTED TABLE OF wa
                    WITH UNIQUE KEY carrid connid fldate bookid.
    
    FIELD-SYMBOLS: <fs_spfli> TYPE any,
                   <fs_wa> TYPE any.
    
    ASSIGN: spfli TO <fs_spfli>,
            wa TO <fs_wa>.
    
    PARAMETERS: fromLoc TYPE <fs_spfli>-cityfrom,
                toLoc TYPE <fs_spfli>-cityto.
    


3 commentaires

Quelle ligne contient l'erreur?


@Sandrarossi FromLoc Type -Cityfrom,


Vous avez déclaré vos symboles de champs comme type tout , ceci est comme vide * en C ++. Il n'ya absolument aucun moyen pour le compilateur de savoir que ces symboles de champ ont en fait de type spffi ou celui de wa jusqu'au moment de l'exécution.


3 Réponses :



0
votes

Vous avez déclaré vos symboles de champs comme type tout , ceci est comme vide * en C ++ (pointant dans le vide, le compilateur s'attend à ce que quelque chose commence à y commencer, mais n'a pas de connaissances ce que c'est exactement). Il n'ya absolument aucun moyen pour le compilateur de savoir que ces symboles de champ sont en fait de type spffi ou celui de wa jusqu'à l'heure d'exécution.

Celui-ci compilerait . xxx

et ici le programme compilable complet. xxx


0 commentaires

0
votes

Si vous êtes sur 4,70 ou plus, vous pouvez écrire.

LOOP AT itab ASSIGNING FIELD-SYMBOL(<wa>).
  WRITE: / <wa>-bookid, 30 <wa>-carrid, 60 <wa>-connid, 90 <wa>-name.
ENDLOOP.


0 commentaires