J'ai créé une structure avec trois composants, dont l'une est de type REF vers des données et un type de table de cette structure. Comment puis-je ajouter des données à ce tableau?
Il a toujours trois composantes, mais un seul d'entre eux est découvert lors du traitement, je le sais toujours deux. Ainsi, j'utilise toujours tout le type de table Le problème ici est que en faisant cela, même Bien que je sache deux des composants, l'ensemble de l'ITAB sera dynamique, je dois donc l'utiliser dans des méthodes exportant / importation d'un type REF vers des données, qui est gênante. p> La méthode ci-dessous retourne toujours une table Tapez Ref to Data, qui est complètement dynamique (type Ref to Data), mais la structure de la table sera toujours comme celle-ci: p> Mon intention était d'avoir la valeur de retour avec un autre type, un type connu, avec lequel je peux utiliser plus facilement les deux composants connus plus facilement. L'idée que j'avais était de créer un type avec uniquement le champ inconnu comme référence aux données que de y avoir une table. P> De cette façon, je serais en mesure de l'utiliser à l'intérieur des méthodes sans avoir à fonctionner, ce qui fonctionne parfaitement, ce qui fonctionne parfaitement, est un peu difficile à comprendre que en lisant le code. P> < Pré> xxx pré> Le problème est, comment utiliser un iTAB de type Je dois en quelque sorte créer le composant 3, mais je Je n'ai aucune idée de la façon de le faire ... p> À la fin, j'ai un symbole de champ générique, c'est-à-dire une table de type, qui comporte les deux composants connus + le troisième découvert lors du traitement de traitement . p> alors comment puis-je transmettre le contenu de ce symbole de champ à un type de table après avoir exécuté ce code REF aux données code>, puis déterminez le type de cette structure et créez la table sur elle. P>
gy_t_generic_payroll code> comme déclaré ci-dessus? p>
GTY_T_Generic_payroll code>? p>
GTY_T_GENERIC_PAYROLL CODE> -TYPED VARIABLE, afin que je puisse accéder à des composants sans beaucoup de dynamique? p> p>
3 Réponses :
Compte tenu de votre structure cible et de votre table comme ceci: Si vous avez maintenant une autre table, dont le type à l'exécution est le suivant: p>
Bonjour, Florian, oui, c'est comme ça que j'ai fini par faire, mais pour le dernier composant, l'inconnu, je l'ai fait légèrement différent: Abap Obtenez une référence
On dirait que je pouvais transmettre les valeurs de la table entièrement générique (type Ref to Data) à une autre table 1/3 générique (type GTY_T_Generic_Payroll): La fin de la journée, j'ai bien compris ce dont j'avais besoin, mais malheureusement, je perds beaucoup de performances, car je dois boucler deux fois dans les résultats maintenant. p> C'est le seul moyen car je ne peux pas simplement utiliser
Insérer des lignes de dynamic_itab sur no_so_dynamic_itab code>, car le troisième composant est référence. P> P>
La règle de base ici: Si vous souhaitez une lisibilité dans dans beaucoup d'autres méthodes code>, vous ne pouvez pas omettre l'enveloppement de la table d'origine en nouveau type. Si vous voulez des performances, utilisez simplement la table d'origine de manière dynamique.
La question et les réponses peuvent sembler déroutantes pour les futurs visiteurs (quelle est la question actuelle?), Voici donc mes deux cents. P>
Résumé de la question: p>
Vous appelez un code externe (1) qui vous donne une table interne générée de manière dynamique, mais vous savez que tous les composants sont toujours les mêmes sauf celui qui varie mais est à la même position, de sorte que vous le souhaitez. Pour faire référence à ses composants statiquement, à l'exception de celui qui varie. P>
(1) Donc, vous ne pouvez pas l'adapter. P> li>
Votre solution de contournement consiste à définir un tableau interne équivalent statiquement et le composant qui varie comme un type de référence de données (pointeur sur n'importe quel objet de données), puis pour l'initialiser en copiant les données de la table interne dynamique . p> li>
Vous demandez une autre meilleure solution car la vôtre consomme une mémoire supplémentaire (deux tables internes) et diminue la performance (processus de copie). P> li> ul>
Réponse: p>
Pourquoi définissez-vous votre symbole de champ code> de type
n'importe quelle table code> au lieu de type
gy_t_generic_payroll code>? Si la seule dynamique de votre champ est dans la troisième composante de la structure de la ligne, vous pouvez accéder aux composants comme vous le souhaitez, avec [1] -inter code> et ainsi de suite. Vous pouvez même accéder au composant
NAT code>, mais il est de type
Ref aux données code> bien sûr. Vous devrez Dereefence et l'attribuer afin d'y accéder.
Vous dites "Comment puis-je utiliser un itab de type GTY_T_Generic_Payroll" mais je ne comprends pas où est votre difficulté. Pouvez-vous montrer un extrait de code pour illustrer comment vous aimeriez l'utiliser?
Bonjour, Rplantiko, je dois utiliser ce symbole de champ comme n'importe quelle table car les valeurs que je reçois proviennent d'un module de fonction standard qui accepte uniquement les tableaux internes comme paramètres exportateurs. De cette façon, code> est considéré comme une table interne et le module de fonction fonctionne
Bonjour, Sandra ... En effet, mes coments étaient un peu déroutant, mais néanmoins, j'ai pu remplir un type de table GTY_T_Generic_Payroll avec les données de. J'ai mis à jour le poste avec comment je l'ai fait. Notobrey, j'ai perdu la performance, mais je suppose que cela ne peut pas être aidé. Le code devient un peu plus lent mais plus facile à comprendre, ou plus rapide et que vous avez besoin de plus d'attention pour obtenir ce qui se passe.
En utilisant une variable intermédiaire vaut parfois, s'il utilise peu de mémoire, mais ici, je suppose que ce n'est pas le cas, je ne créerais donc pas une variable intermédiaire et que vous n'expliquez pas pourquoi il serait si complexe d'utiliser la variable d'origine directement.
Ce n'est pas une question - c'est un livre! :-RÉ
Bonjour, Sandra, le problème de l'utilisation de toute la table comme dynamique est qu'il doit être utilisé dans de nombreuses autres méthodes que dynamiques. Cela signifie que je dois créer un tas de symboles de champ attribuant des composants à partir de la table, ne peut pas boucler à l'aide de l'endroit où, même la table de lecture doit être effectuée dynamique, qui, à la fin, rend le code moins lisible, tout va bien travailler. Maintenant, avec cette nouvelle table non-dynamique, qui tente de lire le code, le comprendra à première vue, de soutenir, qui déboguer toute la journée, il est extrêmement utile: D