Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > ERP > SAP
SAP Forum d'entraide sur SAP et sur la programmation avec le langage ABAP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/05/2007, 11h47   #1
Membre habitué
 
Inscription : juin 2003
Messages : 146
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Vienne (Poitou Charente)

Informations forums :
Inscription : juin 2003
Messages : 146
Points : 135
Points : 135
Envoyer un message via MSN à Sh@m@n
Par défaut [FK02]N° Identification Fiscal

Bonjour,

je dois faire des controles sur le numéro d'identification fiscal dans cette transaction.

Il y a un champ correspondant à cette données(dynp 0120), mais aussi un bouton permettant de lancer un nouveau dynpro(0600). Ce dynpro est sous forme de table à alimenter, avec 2 colonnes (code pays + n° ident.).

- Pour la récupération de la valeur du champ du dynp '0120', je n'ai aucun pb avec les buffer.
- En revanche pour charger les données de la table du dynpro '0600', il y a un pb.
=> Si le user affiche le dynpro 0600, alors les données sont "bufferisée" dans '(SAPMF02K)XLFAS[]'. Mais si le user ne lance pas ce dynpro, la table n'est pas chargée, donc je ne peux effectuer mes controles.

J'avais alors pensé à faire une sélection dans la table LFAS, pour récupérer les données jointent au fournisseur (LIFNR), mais la suppression ou l'ajout de lignes dans la table LFAS s'effectue après le passage dans mon USER EXIT, donc se n'est pas fiable

Si quelqu'un aurait déjà rencontré ce cas, ou aurait une solutions, il est le bienvenu.

Merci d'avance.

PS : si je n'ai pas été clair, n'hésitez pas à me poser des questions
Sh@m@n est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2007, 18h03   #2
Membre expérimenté

 
SAP for Banking
Inscription : juin 2002
Messages : 539
Détails du profil
Informations personnelles :
Âge : 35
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : SAP for Banking
Secteur : Conseil

Informations forums :
Inscription : juin 2002
Messages : 539
Points : 566
Points : 566
Non, pas tres clair pour moi : Si l'utilisateur n'entre pas dans le screen 0600, la table est vide donc pourquoi la controler ?

En regle generale sinon, en ABAP, il existe le principe dit LUW qui ordonne un COMMIT implicite des donnees entre chaque dynpro i.e., soit les donnees sont dans le user context, soit dans la base de donnees.

L.
__________________
TRY.
N/A
CATCH cx_root.
ludovic.fernandez est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2007, 11h09   #3
Membre habitué
 
Inscription : juin 2003
Messages : 146
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Vienne (Poitou Charente)

Informations forums :
Inscription : juin 2003
Messages : 146
Points : 135
Points : 135
Envoyer un message via MSN à Sh@m@n
Ah oui excusez moi!!!
J'ai oublié de préciser un point : le numéro d'identification fiscal est obligatoire,
i.e. soit le champ du dynpro 0120 est alimenté, soit la table, soit les 2.

Je vous donne un exemple, pour bien voir le pb :
- Un user créé un fournisseur en FK01, il alimentera le champ du dynp 0600 et juste 1 ligne du tableau du dynp0600 => aucun problème, et la table LFAS récupère la ligne du tableau.

1) Premier cas, il vient effectuer une modifcation sur ce meme frs. Il ote la valeur du champ du dynp0120. Ici il ne devrait pas y avoir d'erreur vu k'il y a tjrs une donnée dans le tableau. Le pb, c'est que dans le buffer il n'y aura pas de données (car il n'aura pas afficher le dynpro 0600) et si je fais un Select sur LFAS j'aurai une ligne.

2) Dans un second cas (on reprend le cas où tableau + champ sont alimentés), il vient supprimer la valeur dans le champ et la ligne dans le tableau. Ici le buffer sera vide, car contenu du tableau vide, et un Select sur LFAS renvera aussi une ligne.


Le problème est donc simple, mais pas la solution : le buffer n'est chargé que si le user afficher le dynpro 0600, et la table LFAS (où est stocké le contenu du tableau) est mis à jour APRES le passage dans mon User Exit. Donc j'ai une diffèrence entre les 2. Et si je ne contrôle que le buffer ou ke la table, alors certain cas ne peuvent être contrôlés.

Pr info, je n'ai pas de flag dans le standard pour indiqué si je suis en modif sur tel ou tel champ, vu que la transaction FK02 utilise un marqueur "Transaction de modification" (table T020). A moins que j'en ai raté un...

Est ce plus clair ???

Merci encore pour vos réponses.
Sh@m@n est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h52.


 
 
 
 
Partenaires

Hébergement Web