J'ai les 3 tables suivantes avec données:
zmytable code> avec des colonnes:
zuser code> &
ztcode code> et 2 enregistrements p>
ZUSER---ZTCODE---AGRNAME
elias---VA01-----SD_role
elias---VA01-----SD2_role
elias---VF01-----
4 Réponses :
DB Access devrait ressembler à ceci: Ajouter dans la clause CODE> et traiter la sortie. P>
Cela renvoie les enregistrements communs, nommément les 1er 2 enregistrements de mon exemple. Merci
@ekekakos fixé
Pour plus d'informations, j'ai testé la requête dans un programme de test (réponse distincte des FC), il ne donne pas le résultat attendu.
Dorad, malheureusement, il renvoie le nombre correct d'enregistrements, mais le champ Agr_name n'est pas vide pour les enregistrements appropriés. Merci Elias
Pour accéder à tous les enregistrements, vous devez utiliser l'accès à la base de données comme ci-dessous.
SELECT b~zuser, b~ztcode, a~agr_name FROM agr_1251 as a INNER JOIN zmytable as b ON a~tcode EQ b~tcode INNER JOIN agr_user as c ON a~agr_name EQ c~agr_name.
Pour plus d'informations, j'ai testé la requête dans un programme de test (réponse distincte des FC), il ne donne pas le résultat attendu.
J'ai trouvé plus facile à utiliser Je l'ai testé en remplaçant ZMyTable avec USR07. P> Union code>, le premier SELECT renvoia les lignes correspondant aux transactions correspondant à l'un des rôles d'utilisateur (Elias, VA01, SD_Role et SD2_Role) et la seconde. On renverra les lignes qui correspondent aux transactions qui ne correspondent à aucun des rôles de l'utilisateur (Elias, VF01).
SELECT b~bname, b~tcode, a~agr_name
FROM agr_1251 as a
INNER JOIN usr07 as b
ON a~low EQ b~tcode
INNER JOIN agr_users as c
ON a~agr_name EQ c~agr_name
INTO TABLE @DATA(result).
SORT result BY bname tcode agr_name.
TYPES ty_result LIKE result.
assert_equals( act = result exp = VALUE ty_result(
( bname = 'elias' tcode = 'VA01' agr_name = 'SD2_role' )
( bname = 'elias' tcode = 'VA01' agr_name = 'SD_role' )
( bname = 'elias' tcode = 'VA01' agr_name = 'SD_role' )
( bname = 'elias' tcode = 'VF01' agr_name = 'FI_role' ) ) ).
Sandra, malheureusement, le système est un ancien ECC6 V7.01 SP07, donc il n'y a pas d'union. En tout cas merci.
Pour ces systèmes plus anciens, utilisez 2 Sélectionnez 2 Select, le second avec Awappend Tableau code> au lieu de
dans le tableau code>.
J'essaie de résoudre ce problème en utilisant 2 tables, 1 avec les enregistrements communs (1st 2 dans mon exemple) et un autre 1 avec toutes les enregistrements corrects en chiffres, mais sans être vider le champ Agr_name approprié. Je vais donc boucler dans la 2e table et je vais lire le 1er un avec les 3 champs de la clé. Si sy-Subrc <> 0, je viderai le champ AGR_Name de l'enregistrement. C'est une mauvaise solution dans mes yeux, mais il n'y a pas d'autre solution directe jusqu'à présent.
@ekekakos vous posez une question et je vous donne une réponse que j'ai testée et cela donne le résultat exact que vous souhaitez (il est démontré par l'utilisation de l'unité ABAP, 7.52 si nécessaire, donc je comprends que vous ne pouvez pas l'exécuter, mais juste croyez-moi). J'ai également expliqué comment remplacer Union code> dans votre version ABAP. Je ne comprends pas pourquoi vous dites que vous n'avez toujours pas de solution.
Sandra quand disais que je n'ai pas de solution, je veux dire avec un appel direct à la DB avec des jointures et pas plusieurs appels à DB avec votre solution ou votre mine. J'espère que je me fais clairement clairement.
@ekekakos maintenant c'est clair. Question mise à jour pour mentionner votre exigence d'une seule instruction SQL & ABAP 7.01 explicitement.
Haojie, cela fonctionne dans la version> 7.50 pas la nôtre 7.01. Merci.
D'ACCORD. La réponse est mise à jour. Cela devrait également fonctionner dans 7.01
DROITE REJOIGNÉE OUTER CODE> Fonctionne uniquement dans ABAP> = 7.40. J'ai édité la question de mentionner que c'est pour ABAP 7.01.
@Sandrarossi merci! Je vérifierai ensuite en 7.01.
Qu'avez-vous essayé? Où es-tu coincé?
Je ne peux pas recevoir le résultat que je veux. Il ne renvoie que les courants communs (1st 2 enregistrements).
Question également posée sur le SCN: réponses.sap.com/questions/750443/...
Sandra, y a-t-il un problème pour poser une question dans 2 forums? Merci
@ekekakos pas un problème du tout. Mais les gens pourraient trouver des réponses liées utiles, elle évite de répondre si elle est résolue dans l'autre forum, certaines informations supplémentaires peuvent être données, etc. C'est quelque chose que je ferais personnellement si je pose deux questions survenant dans le même contexte.
Merci pour la clarification.