Création d'article en automatique

Création d'article en automatique

Messagede lionelm » 08 Septembre 2011, 14:06

Bonjour,

J'essaie de créer automatiquement des articles dans SAP à l'aide des 2 BAPI décrites partout sur le net (BAPI_MATERIAL_GETINTNUMBER et BAPI_MATERIAL_SAVEDATA) en les lançant à partir d'un programme Windev.
Avec mon programmeur, on arrive à faire fonctionner la première Bapi pour réserver un numéro interne (BAPI_MATERIAL_GETINTNUMBER), mais ça me réserve 16 numéro d'un coup dans SAP et non 1 seul. Pourtant le paramètre nombre d'article à réserver est bien paraméter à 1.

Quelqu'un a-t-il déjà utilisé ces deux BAPI ? Je n'ai pas trouvé de procédure claire sur le net pour les faire fonctionner.

Merci pour votre aide.

Lionel M
lionelm
Posteur débutant
Posteur débutant
 
Messages: 3
Inscription: 08 Septembre 2011, 13:58

Re: Création d'article en automatique

Messagede CAL_DE_TER » 08 Septembre 2011, 15:28

Bonjour,

Je crois que j''ai eu un problème similaire avec la création d'ordre, SAP m'incrémentait les numéros de 20 en 20.

Alors, je t'invite à regarder le paramétrage de ton objet avec la transaction SNUM et de vérifier le contenu de la zone : Nombre numéros dans tampon.

Cordialement.
Pascal
Avatar de l’utilisateur
CAL_DE_TER
Modérateur
Modérateur
 
Messages: 1133
Inscription: 15 Juillet 2009, 13:35
Localisation: Paris, FRANCE

Re: Création d'article en automatique

Messagede lionelm » 09 Septembre 2011, 07:53

Salut,

J'ai vérifié le nombre de numéro dans tampon :

Objet MATERIALID (Tranches de numéros pour produit (article type de produit)) : 10
Objet MATERIAL (Numéro article dans base de données) : 10
Objet /ISDFPS/TP (Tranche n° pr nom noeud temp. de objet planification article) : 20
Objet ISH_NMATO (Tranche de numéros pour demandes d'articles rel. à l'UO) : 10
Objet ISH_NMATP (Tranche de n° pour demande d'article relative au cas) : 10
Objet KOND (Recherche article - attribution numéros interne) : 5

Rien qui corrspond à 16, mais je ne sais pas exactement quel objet je dois regarder.
lionelm
Posteur débutant
Posteur débutant
 
Messages: 3
Inscription: 08 Septembre 2011, 13:58

Re: Création d'article en automatique

Messagede CAL_DE_TER » 09 Septembre 2011, 09:02

Bonjour,

Si vous ne connaissez pas le non de votre objet, on peut utiliser une autre méthode : allez voir dans la table TNRO et saississez "00000016" et voyez si vous obtenez un résultat. Si ce n'est pas le cas, alors le problème se situe dans votre BAPI.

Cordialement.
Pascal
Avatar de l’utilisateur
CAL_DE_TER
Modérateur
Modérateur
 
Messages: 1133
Inscription: 15 Juillet 2009, 13:35
Localisation: Paris, FRANCE

Re: Création d'article en automatique

Messagede lionelm » 09 Septembre 2011, 12:21

J'ai regardé, et effectivement il n'y a aucune valeur à 16 dans la table TNRO.
Entre temps j'ai executé la BAPI_MATERIAL_GETINTNUMBER par la transaction se37 et là il me réserve bien un seul numéro.

Le problème doit donc venir des paramètres que Windev envoie à SAP. Seulement les nom des zones à renseigner demandées par Windev ne sont pas très claires.

Merci pour l'aide.

Lionel
lionelm
Posteur débutant
Posteur débutant
 
Messages: 3
Inscription: 08 Septembre 2011, 13:58

Re: Création d'article en automatique

Messagede kinchung64 » 12 Décembre 2011, 09:05

Bonjour,

Ce que je peut dire dans cette histoire c'est que dans les développement d'interfacages,
il faut être rigoureux dans les données que SAP envoit et recoit avec les applications externes.
J'ai une chance énorme en ce qui me concerne car je fais les applications complète entre SAP et Csharp.
Par contre dès lors qu'il existe plusieurs personnes sur le même sujet, les développeurs se renvoient systématiquement la balle dans l'un et l'autre camp !
Et j'ai déjà connu cela aussi !
Le mieux c'est toujours le Debug qui donnera raison à l'un ou à l'autre !!!

Cordialement !
kinchung64
Posteur junior
Posteur junior
 
Messages: 18
Inscription: 15 Octobre 2010, 07:10

Re: Création d'article en automatique

Messagede JeanLucROB » 18 Mai 2012, 13:34

Bonjour à tous,
Je suis le "programmeur" WinDev de Lionel et notre projet redevient d'actualité...
Tout d'abord, le problème initial des 16 articles générés par BAPI_MATERIAL_GETINTNUMBER au travers de mon application WinDev a été réglé par le Support Technique de PCSOFT, éditeur de WinDev qui a corrigé leur bug dans leur logiciel => j'ai désormais un seul article de réservé.

Pour la suite, j'ai une nouvelle question : concernant BAPI_MATERIAL_SAVEDATA, je n'arrive pas à (où...) trouver comment faire le lien entre le nom des paramètres à passer à la BAPI et le nom des zones d'une vue de la fiche article ou plus exactement, la table et sa rubrique concernée (je ne connais rien à SAP, je suis développeur mais pas dans votre domaine alors j'espère que vous vous montrerez compréhensif).

Par ex. avec MM02, dans la vue 'Données de Base', section 'Donn. générales', champ 'Unité de qté de base' , je retrouve dans la fenêtre Information technique\Données zone => table = MARA, zone = MEINS.
J'ai testé BAPI_MATERIAL_SAVEDATA dans la transaction SE37 pour essayer de trouver le paramètre de la BAPI correspondant à MARA\MEINS : j'ai un paramètre CLIENTDATA correspondant à la structure BAPI_MARA (donc je suppose que je devrais trouver mon info là ?) mais lorsque je passe en test et que j'édite cette structure BAPI_MARA, pas de trace de MEINS.
J'ai parcouru le code source de la BAPI mais cela ne m'a guère aidé surtout que je ne connais pas ce langage alors si quelqu'un ayant compris ma question peut m'aider, d'avance, un grand merci.
JLuc

Question subsidiaire : comment fait-on parmi toutes les BAPI existantes dans SAP pour savoir ce qu'elles font et deviner laquelle on a besoin ?
JeanLucROB
Posteur débutant
Posteur débutant
 
Messages: 9
Inscription: 18 Mai 2012, 11:05

Re: Création d'article en automatique

Messagede thoul » 21 Mai 2012, 11:13

Bonjour Jean-Luc,

Avant tout, merci de venir sur le forum pour partager ton retour d'expérience, d'autant plus remarquable n'étant pas ds le monde SAP (quoique, un peu maintenant ;) )

Je vais d'abord répondre à ta question subsidiaire: Pour trouver les BAPI en fonction de ce que l'on cherche à faire, il existe une transaction SAP qui est un catalogue (que je crois non exhaustif) des BAPI disponibles sur SAP, classées par périmètre et par action. Par exemple, dans ton cas particulier
Transaction BAPI puis 'Logistique - Données générales' / 'Données de base de logistique' / 'StandardMaterial' / 'Save'-->sur la partie droite de l'écran apparait le nom du BAPI de Création et modification des données article: BAPI_MATERIAL_SAVEDATA

Pour ce qui est de comment charger les différentes structures et tables attendues en entrée de la fonction... c'est une autre paire de manche et j'ai tendance à croire que cela se fait de proche en proche avec si possible, sous le coude, quelqu'un qui connait SAP, (un peu de technique et aussi du fonctionnel) pour faire matcher le nom des zones BAPI avec la zone SAP effective.

Prenons le cas de la zone quantité dont le "nom" SAP est MARA-MEINS. Le BAPI ne possède pas une zone nommée MEINS puisque SAP essaye de donner des noms explicites aux différentes zones de BAPI (pour aider les développeur non SAP à les utiliser, je suppose... réussi non?).

Le conseil que je donnerais est de toujours regarder le type de référence rattaché à chaque structure d'entrée. On voit que la structure CLIENTDATA est de type BAPI_MARA. On peut donc penser que la zone MARA-MEINS doit en faire partie. En double cliquant sur BAPI_MARA, on accède au descriptif de cette structure avec tous les champs qui la compose.
Là encore, les noms de composantes ne sont pas forcément très parlant mais en regardant le type de composante associée, on voit que la zone BASE_UOM de BAPI-MARA correspond à la zone de destination MARA-MEINS. Eureka!

Dernier point que tu connais peut être déjà. Pour cette BAPI comme pour de nombreuses autres, chaque structure d'entrée (ici CLIENTDATA) contenant les valeurs à affecter à l'article, possède son pendant (ici CLIENTDATAX) contenant les même noms de zones représentées sous forme de flag. Pour que la zone CLIENTDATA-BASE_UOM soit prise en compte, il faut que la zone CLIENTDATAX-BASE_UOM soit cochée.

Voila, le lien n'est pas évident mais c'est toujours mieux que rien... Bon courage pour toutes les autres zones qu'il te reste à mapper!
thomas
'si il n'y a pas de solution, c'est qu'il n'y a pas de problème'
Avatar de l’utilisateur
thoul
Posteur confirmé
Posteur confirmé
 
Messages: 62
Inscription: 26 Juillet 2010, 10:56

Re: Création d'article en automatique

Messagede JeanLucROB » 21 Mai 2012, 15:38

Merci Thomas pour cette longue réponse.
OK pour la transaction BAPI, elle est riche en informations !
Depuis mon message, avec SE37, j'ai trouvé (enfin) qu'il fallait double cliquer par ex. dans l'onglet Importation sur BAPI_MARA pour afficher le détail de sa structure.
J'ai donc compris comment se faisait le lien, mais il y a des subtilités redoutables qui m'échappent encore :
Vue Donnée base 1\Section Dimensions EAN \ rubrique Poids Brut => donne MARA-BRGEW mais dans la structure de BAPI_MARA pas de trace de BRGEW !
J'ai trouvé sur le Net qu'il fallait regarder dans BAPI_MARM et la table UNITSOFMEASURE pour trouver mon BRGEW.
J'ai également cru comprendre que pour chaque BAPI_bbbb qui avait son pendant BAPI_bbbbX, il fallait que je renseigne les mêmes zones avec la valeur "X".
Est-ce bien cela et est-ce valable systématiquement ?
Depuis ce matin, je teste la BAPI avec SE37 en recherchant les différents paramètres obligatoires manquant à chaque nouveau message d'erreur retourné.
Cela n'avance pas vite mais cela avance...
Pour info, je travaille seul en télé-travail au travers de missions ponctuelles avec mon ancienne boite donc personne de dispo sous la main et personne dans la boite n'a les compétences suffisantes pour me renseigner. Il faut passer par les consultants extérieurs et cela a un coût et parmis ceux que j'avais cotoyé lors de l'install de SAP, rares étaient ceux qui savaient plonger les mains dans le cambouis au niveau ABAP ou BAPI ou LSMW.
Je vous dirai quand cela fonctionnera. Ce sera un grand jour...
JeanLucROB
Posteur débutant
Posteur débutant
 
Messages: 9
Inscription: 18 Mai 2012, 11:05

Re: Création d'article en automatique

Messagede thoul » 21 Mai 2012, 16:07

Voila, tu es en plein dans le monde fantabuleux de l'utilisation des BAPI. Le principal problème est bien le mapping des champs dans les structures d'imports d'ou l'interet d'une aide "fonctionnelle" pour aider à détecter les fameuses zones obligatoires et les finesses de gestion. Le développement de proche en proche est certes long, surtout pour un developpeur hors SAP/ABAP et donc sans possibilité de debug (je suppose) mais c'est le quasi passage obligé.

Concernant la saisie "en double" avec les zones à flagger sur les structure BAPI_BBBX, c'est le mode de fonctionnement d'un grand nombre de BAPI de MàJ, en tout cas celles que j'ai pu rencontrer. Évidemment, il y a des cas particulier (entre BAPI et parfois même au sein d'une BAPI) mais il ne sert à rien qu'on en parle maintenant, pas constructif pour atteindre ton objectif.

Bon courage dans long chemin qui mène à la création d'article. En attendant de voir passer un post de succès prochainement

Dernier point de détail mais qui peut éviter de s'arracher les cheveux par poignées. Une fois l'appel de la BAPI résolu, quand tu obtiendra un joli message de succès d'exécution de celle-ci, il est fréquent, pour que l'enregistrement des données soit effectif en base dans SAP, de devoir appeler le BAPI BAPI_TRANSACTION_COMMIT. Je crois que son utilisation n'est pas systématique mais très très fréquente. A savoir donc.
thomas
'si il n'y a pas de solution, c'est qu'il n'y a pas de problème'
Avatar de l’utilisateur
thoul
Posteur confirmé
Posteur confirmé
 
Messages: 62
Inscription: 26 Juillet 2010, 10:56

Re: Création d'article en automatique

Messagede JeanLucROB » 22 Mai 2012, 09:49

Une étape de franchie : j'exécute la BAPI dans SE37 sans erreur et dans mm02, je vois que les vues Données de base sont renseignées (sans avoir eu besoin d'exécuter BAPI_TRANSACTION_COMMIT).
Par contre, lorsque j'exécute BAPI_MATERIAL_SAVEDATA dans mon logiciel, avec les même paramètres de renseignés que dans SE37, j'ai un message d'erreur : "MESSAGE : Field WERKS has been transferred inconsistently or is blank "
Questions : comment savoir de quel champ est-il question ou quelle est la "BAPI_structure" concernée ?
Cette erreur ne viendrait-elle pas parce que je passe tous les paramètres à la BAPI alors que dans SE37, je ne lui renseigne que certaines valeurs ?
Pour rire, j'ai eu ce message d'erreur au niveau de mon logiciel lors du test de la BAPI : "Le paramètre '䅂䥐䅐䕒X' doit être de type tableau."
Je croyais que SAP était d'origine allemande...
JeanLucROB
Posteur débutant
Posteur débutant
 
Messages: 9
Inscription: 18 Mai 2012, 11:05

Re: Création d'article en automatique

Messagede thoul » 22 Mai 2012, 10:30

Bonjour,

Concernant le message sur le champ WERKS, il doit provenir du fait que tu transmets à la BAPI des infos Division incomplètes (peut être meme vide) le petit nom SAP de la division étant WERKS, porté par la structure PLANTDATA de type BAPI_MARC (de libellé Werksspezifische Materialdaten histoire de prouver que SAP est bien allemand:) )

Si j'ai bien compris, en SE37 tu renseignes toutes les infos dans les structures qui te sont utiles et l'exécution est OK et depuis ton logiciel tu appelles le BAPI avec TOUTES ses structures entrantes, même celles qui ne contiennent pas de données et tu obtiens le message "WERKS..."
Je ne peux pas tester la BAPI mais voila 2 possibilités:
1-Si tu n'utilises pas de données division, ne sollicite pas la structure PLANTDATA et PLANTDATAX lors de l'appel de la BAPI... mais je suppose que tu y as déjà pensé.
2-Si tu utilises les données division, assure toi que tu renseignes bien les données division à l'identique entre PLANDATA et PLANTDATAX quand tu les passes à la BAPI
thomas
'si il n'y a pas de solution, c'est qu'il n'y a pas de problème'
Avatar de l’utilisateur
thoul
Posteur confirmé
Posteur confirmé
 
Messages: 62
Inscription: 26 Juillet 2010, 10:56

Re: Création d'article en automatique

Messagede JeanLucROB » 24 Mai 2012, 11:02

Bien le bonjour à tous,
Suite de mes tests... Désolé, j'ai beaucoup écrit...
Je me suis intéressé au contenu de la table RETURNMESSAGES (BAPI_MATRETURN2) qui peut contenir des infos précieuses, comme pour le champ WERKS où elle me disait d'aller voir du coté de "MARC" effectivement...
Une fois PLANTDATA.PLANT (WERKS.BAPI_MARC) de renseigné (et donc idem pour PLANTADATAX) , rebelote pour BWKEY.BAPI_MBEW => VALUATIONDATA.VAL_AREA, puis pour WERKS de MPOP, etc...
Là où il est difficile de s'y retrouver lorsqu'on n'est pas "Fonctionnel" c'est sur la signification des désignations : apparemment "Division" (WERK) et "Domaine de valorisation" (VAL_AREA), c'est la même chose. En regardant dans le contenu des tables, j'ai vu que c'était la même valeur.

Comme je n'avais pas envie de passer en revue tous les paramètres, j'ai essayé de passer à ma commande WinDev d'exécution de BAPI, le strict minimum et uniquement les mêmes valeurs que via se37 :
SAPExécute(nIdConnexion,"BAPI_MATERIAL_SAVEDATA",
"RETURN,CLIENTDATA,CLIENTDATAX,FLAG_CAD_CALL,FLAG_ONLINE,HEADDATA,NO_DEQUEUE,NO_ROLLBACK_WORK,MATERIALDESCRIPTION,RETURNMESSAGES,... liste de mes valeurs...)

Résultat des essais : les paramètres à laisser impérativement sont HEADDATA, CLIENTDATA, CLIENTDATAX, MATERIALDESCRIPTION et au moins un autre que je ne trouve pas car je suis bloqué : RETURNMESSAGES me retourne :
TYPE : E
ID : M3
NUMBER : 490
LOG_NO :
MESSAGE : Unit of measure ****** is not defined; check your entry
MESSAGE_V1 : ******
MESSAGE_V2 :
MESSAGE_V3 :
MESSAGE_V4 :
LOG_MSG_NO : 000000
PARAMETER1 :
ROW : 0
FIELD :
SYSTEM : WQ1CLNT150

Si je renseigne UNITSOFMEASURE (UNITSOFMEASURE.ALT_UNIT = "PC" UNITSOFMEASURE.GROSS_WT = "25" UNITSOFMEASURE.UNIT_OF_WT = "KG ") alors que dans SE37 je ne l'ai pas renseigné et que mon article est qd même mis à jour sans erreur, j'ai toujours le même message :
"Unit of measure ****** is not defined; check your entry."
Je me suis alors connecté à SAP en anglais espérant trouver une désignation d'un champ identique mais rien trouvé. Par contre, chose amusante mais cela n'a rien à voir, j'ai remarqué que dans certains champs, lorsque que je teste la BAPI dans se37, il m'avait traduit la valeur "PC" par "ST".

Question : j'ai remarqué que certains champs étaient initialisés par défaut (0; 00; 0.000) ou comme PERIOD_IND_EXPIRATION_DATE avec la valeur "J" (=> D lorsqu'on passe en anglais...)
Faudrait-il que je mette à jour ces mêmes zones avec les mêmes valeurs par défaut ?
Là, je n'ai plus d'idée pour tester d'autres pistes.
JL
JeanLucROB
Posteur débutant
Posteur débutant
 
Messages: 9
Inscription: 18 Mai 2012, 11:05

Re: Création d'article en automatique

Messagede thoul » 24 Mai 2012, 14:00

Bonjour Jean-Luc,

décidemment, le BAPI est ton ami.

Tout d'abord, effectivement, il convient de farfouiller dans la structure BAPI_MATRETURN2 pour obtenir le résultat du traitement de la BAPI. Désolé de n'avoir pas pensé à te le préciser précédemment.

Maintenant, concernant le message que tu rencontre sur les unités de quantité. La table UNITSOFMEASURE permet de passer ce que j'appelerais (peut être à tort, je ne suis pas spécialiste de la gestion d'article) les unités alternatives définies pour l'article en cours de création/modification. Si, lors de tes tests en SE37 tu n'as pas sollicité UNITSOFMESURE et que ton article a été créé, c'est juste que tu n'a pas besoin de ce paramètre.
Je suppose que le message concerne plus l'unité de quantité (unit of measure in english) de base qui est renseignée dans la structure BAPI_MARA.
Ce qui me permet d'enchainer avec ta dernière remarque concernant la traduction des unités de mesure dans SAP (par exemple 'PCE' qui devient 'ST').
La zone MARA-MEINS (et toutes les zones unité sollicitant l'élément de donnée MEINS) est une zone à laquelle est affectée une routine de conversion. C'est à dire que, lorsque je saisis un article sur la fiche article, je saisis 'PCE' dans la zone unité de quantité mais SAP va automatiquement convertir cette valeur (en 'ST') en format interne et l'unité de quantité qui sera stockée en base dans MARA-MEINS sera la valeur 'ST'.
Lors de l'affichage de la fiche client, SAP fait automatiquement la conversion inverse de manière à afficher la valeur 'PCE' correspondant au format externe, à l'écran.

Lorsque l'on utilise un BAPI (dans ton programme par exemple), on doit passer les infos au format interne (si ma mémoire est bonne). Donc, pour une unité 'PCE', on doit passer 'ST' dans la zone BAPI.
Ce dont je ne me souviens plus c'est si, lorsqu'on teste un BAPI via SE37, on saisit des infos au format interne ou externe. Selon moi (mais je peux me tromper), l'interface de test SE37 est une interface 'utilisateur' et donc, on saisit les infos aux format externe (soit 'PCE') SAP réinterprète le tout avant l'appel effectif de la BAPI

Les routines de conversion qui s'appliquent au champ 'MEINS' sont
CONVERSION_EXIT_CUNIT_INPUT (conversion du format externe 'PCE' en format interne 'ST'
CONVERSION_EXIT_CUNIT_OUTPUT (conversion du format interne 'ST' en format externe 'PC')

Ces 2 routines sont des modules fonctions et peuvent donc être testées via SE37.

Dernière chose: Il faut également être vigilant sur la langue de connexion à SAP pour solliciter le BAPI, les 2 routines de conversions précitées étant dépendantes de la langue.
thomas
'si il n'y a pas de solution, c'est qu'il n'y a pas de problème'
Avatar de l’utilisateur
thoul
Posteur confirmé
Posteur confirmé
 
Messages: 62
Inscription: 26 Juillet 2010, 10:56

Re: Création d'article en automatique

Messagede JeanLucROB » 24 Mai 2012, 14:59

Thoul, tu maîtrises SAP comme un Dieu : tu as trouvé le problème et du coup :
MESSAGE : The material 0000102187 has been created or extended :lol:

Le problème venait bien de la valeur à passer à MARA-MEINS : CLIENTDATA.BASE_UOM = "ST" et non pas la valeur "PC" que je passais dans SE37 qui doit donc effectivement faire cette conversion de façon transparente.
Je suis allé voir le contenu dans la table MARA et effectivement, lorsqu'on regarde la rubrique MEINS, on a la valeur ST. Du moins si la table est affichée directement en colonnes à l'écran parce que si on l'affiche ensuite en lignes, sur une seule colonne (bouton "Afficher" avec les lunettes), la valeur de MEINS devient "PC ".
C'est qd même sympa de mettre les mains dans le cambouis de SAP, on apprend (et on comprend) pleins de choses.
Bon, la suite devrait être plus facile pour renseigner les autres vues de la fiche article mais peut-être devrais-je encore vous solliciter.
En tous les cas, un grand merci à votre forum et à Thoul plus particulièrement.
Euh une dernière question : ai-je réussi mon examen de passage pour faire partie de la famille SAP ?
Jean-Luc
JeanLucROB
Posteur débutant
Posteur débutant
 
Messages: 9
Inscription: 18 Mai 2012, 11:05

Re: Création d'article en automatique

Messagede thoul » 24 Mai 2012, 15:37

examen de passage réussi haut la main.
Bienvenu donc dans le petit monde SAP. Plus on est de fous... plus on est de fous (on rit rarement avec SAP ;) )

Et merci pour ta participation au forum. N'hesites pas à revenir sur le site pour des retours ou questions sur ce sujet ou sur un autre ou pour apporter tes connaissances sur les appels de BAPI depuis des applications externes.
thomas
'si il n'y a pas de solution, c'est qu'il n'y a pas de problème'
Avatar de l’utilisateur
thoul
Posteur confirmé
Posteur confirmé
 
Messages: 62
Inscription: 26 Juillet 2010, 10:56

Re: Création d'article en automatique

Messagede JeanLucROB » 11 Juin 2012, 15:24

Bonjour à tous,
Je reprends mon projet... et je reviens vous voir avec quelques questions de mise à jour de champs pour certaines vues :

1) Vue ADV: org.commerc.1 \ Données de Taxe \ Colonne Classification fisc. (table MG03STEUER \ zone TAXKM \ Elt données TAXKM)
Lorsque je crée un nouvel article avec mm01, une ligne est automatiquement créée dans la table 'Données de taxe' avec comme type de taxe "MWST" et comme valeurs possibles pour la colonne 'Classification fisc.' 0 à 4.
'Classification fisc.' est bien mis à jour via mon application lorsque je passe les valeurs :
TAXCLASSIFICATIONS_DEPCOUNTRY = "FR" (BAPI_MLAN_ALAND)
TAXCLASSIFICATIONS_TAX_TYPE_1 = "MWST" (BAPI_MLAN_TATYP)
TAXCLASSIFICATIONS_TAXCLASS_1 = "1" (BAPI_MLAN_TAXKM)
Lorsque je vais voir directement le contenu de la table MLAN filtrée sur mon article, je retrouve bien ma valeur "1" (dans TAXM1) mais aucune trace de MWST que je pensais être une valeur de la clé puisque il faut obligatoirement renseigner TAX_TYPE_1.
Ce qui m'entraine à poser la question, est ce que je peux avoir une autre valeur que MWST et si oui, pourquoi la rubrique correspondante n'apparait-elle pas dans la table MLAN ?

2) Vue Classification :
Je ne trouve pas dans les paramètres de BAPI_MATERIAL_SAVEDATA ce qui pourrait correspondre à cette vue. Il semble que cela concerne la table RMCLF mais impossible de voir son contenu (via se11)
Serait ce une autre BAPI de concernée ???
Je sèche .... merci d'avance si vous pouvez m'aider pour cette vue.
JeanLucROB
Posteur débutant
Posteur débutant
 
Messages: 9
Inscription: 18 Mai 2012, 11:05

Re: Création d'article en automatique

Messagede thoul » 11 Juin 2012, 16:29

Bonjour Jean-Luc,

Ah, les choses se compliquent! ;)

N'ayant pas le périmètre de gestion des articles sur les environnements auxquels j'ai accès, il va être difficile de répondre... sans dire de bêtise

Pour la partie classification fiscale: il doit exister d'autre types de taxe que la MWST. D'ailleurs, il semble que se soit la table TSTL qui porte l'information des types de taxes autorisés par pays. Quand à savoir comment l'information que tu passes au BAPI est stockée dans MLAN, dur à dire sans pouvoir jeter un oeil.
Pour ce qui est de l'attribution des codes taxes, une infos d'un fonctionnel pourrait certainement t'éclairer (l'affectation automatique du type de taxe à la création d'un article provient peut-être du paramétrage SAP).

Pour la partie classification article: Le BAPI de création d'article ne doit pas porter les infos de màj de classification, ces infos n'étant pas propres aux articles mais pouvant être appliquées à d'autres objets (article, équipements et certainement pleins d'autres...)
Cela veut donc dire qu'il va falloir passer par ... une autre BAPI pour mettre à jour la classification article!
J'ai de mon coté utilisé le BAPI BAPI_OBJCL_CREATE.
Malheureusement, il n'est pas super "User Friendly" à manipuler.
Pour essayer de te guider un peu plus avec ce machin:
l'info OBJECTKEYNEW doit contenir le n° de ton objet (donc ton n° d'article) avec tous les "0" en préfixe qui vont bien. Pour rajouter les "0", on peut utiliser la fonction CONVERSION_EXIT_MATN1_INPUT.
l'info OBJECTTABLENEW devrait contenir le nom de la table "principale" de l'objet soit "MARA"
l'info CLASSTYPE devrait contenir "001" -->catégorie de classe article (on peut visualiser les différentes catégories dans le search help de la transaction CL04 par exemple
l'info CLASSNUM devrait cpntenir le nom de la classe à affecter

les 3 tables ALLOCVALUES contenant les caractéristiques et valeurs de caractéristiques associées à cette classe, en fonction du format de la caractéristique (à vérifier, cela est un peu lointain).

Concerenant RMCLF, il s'agit d'une structure de table (ne contenant donc pas de données) qui concerne bien la classif.

Bon courage.
thomas
'si il n'y a pas de solution, c'est qu'il n'y a pas de problème'
Avatar de l’utilisateur
thoul
Posteur confirmé
Posteur confirmé
 
Messages: 62
Inscription: 26 Juillet 2010, 10:56

Re: Création d'article en automatique

Messagede JeanLucROB » 12 Juin 2012, 09:03

Bonjour au forum,
Merci Thoul pour ta réponse qui me met sur le bon chemin... Avant de te lire, j'avais testé pratiquement la moitié des Bapi commençant par BAPI_CLASS_xx qui ne concernent que les classes elles même et non leur rattachement avec d'autres objets. Je m'étais aussi penché sur l'explorateur de Bapi mais rien ne m'avait inspiré. Y aurait-il eu une logique pour que je puisse y trouver la Bapi que tu m'indiques ?
J'ai aussi cherché un bon moment la valeur à passer à CLASSNUM qui contrairement à ce que pourrait laisser supposer son nom, ne demande pas un NUMérique mais la désignation (en lettre) du nom de la classe! Je n'ai vu qu'après que dans ta réponse tu indiques qu'il faut passer le nom de la classe...
Concernant le point classification fiscale, je viens de poser la question à un responsable fonctionnel.
Bon, je m'en vais tester BAPI_OBJCL_CREATE et vous tiens au courant...
JeanLucROB
Posteur débutant
Posteur débutant
 
Messages: 9
Inscription: 18 Mai 2012, 11:05

Re: Création d'article en automatique

Messagede thoul » 12 Juin 2012, 10:25

Pour ce qui est de la recherche de BAPI, il est vrai que la transaction BAPI n'est pas très aisée à utiliser, surtout si on est pas vraiment habitué à SAP.
Le principe de compartimentation par périmètre fonctionnel est conservé dans cette transaction.
La classification d'objet peut concerner des objets de périmètres différents (par exemple l'objet Article est sur le périmètre Material Management(MM) et l'objet équipement est sur le périmètre Plant Maintenance (PM))

Aussi, la classification d'objet est considérée comme inter périmètre (soit cross application (CA) comme on dit chez SAP)
Dans la transaction BAPI, on va donc sur
"Composantes Inter applications"/"Système de classification"/"ObjectClassification" et on y trouve toutes les BAPI pour créer/supprimer/modifier/lire la classif d'un Objet SAP.
Petit détail: Pour la création, SAP indique le BAPI BAPI_OBJCL_CREATE_KEY. Je ne sais pas bien la différence avec celui que je t'ai donné (à part que les paramètres attendus en entrées sont différents). A contrôler, donc.

Dernière précision: Depuis la transaction BAPI, en double-cliquant sur le nom du BAPI
Image

On visualise le code de celui-ci. En cliquant sur l'icone suivante "Afficher liste d'objets":
Image

Elle permet de visualiser, dans la partie gauche de l'écran, l'ensemble des Fonctions rattachées au même groupe de fonction (Dans note cas particulier, le groupe de fonction CLBPA)
On voit alors que le BAPI BAPI_OBJCL_CREATE et BAPI_OBJCL_CREATE_KEY font partie de ce même groupe. On y rencontre aussi les BAPI de suppression/mise à jour ...etc
Image

Cette astuce peut être utile quand on cherche des BAPI ou autres modules fonctions "cousins"
thomas
'si il n'y a pas de solution, c'est qu'il n'y a pas de problème'
Avatar de l’utilisateur
thoul
Posteur confirmé
Posteur confirmé
 
Messages: 62
Inscription: 26 Juillet 2010, 10:56

Re: Création d'article en automatique

Messagede JeanLucROB » 13 Juin 2012, 08:58

Bonjour à tous,
Bingo, je suis arrivé à créer ma vue Classification via mon application avec BAPI_OBJCL_CREATE :lol:
Mais c'est très bizarre parce qu'en testant directement BAPI_OBJCL_CREATE dans se37 avec les mêmes paramètres, cela ne fonctionne pas. J'ai transpiré plusieurs heures hier sans succès et ce matin, j'ai tenté via mon application et cela a fonctionné du premier coup en 5 mn le temps d'écrire le programme...
Dans se37, voilà quelques différents messages retournés :
T ID NUM MESSAGE
I CL 732 L'affectation n'existe pas ou n'est pas valide à la date
S CL 506 Les affectations sont modifiées
S CL 735 L'affectation a été créée

E CL 731 L'affectation existe et est valide
Lorsque j'ai ce message 731, lorsque je vais voir la vue classification de mon article, j'ai le message : "il n'existe aucune affectation". De quoi s'arracher les cheveux!! Mais je ne vais pas chercher plus, l'essentiel c'est que mon appli fonctionne.
Une question : à quoi correspondent ces codes (732, 506,...) et ces lettres (I, S, CL) ? et comment les interpréter ?

Concernant BAPI_OBJCL_CREATE_KEY, je n'ai pas plus cherché, j'ai vu que dans le code source, cela appelait la fonction ... BAPI_OBJCL_CREATE

Concernant ma question classification fiscale précédente, le fonctionnel m'a répondu que la taxe MWST était liée au client. Etonnant parce que dans la fiche article, il n'y a pas de lien avec les clients...
Merci Thoul pour les explications sur l'explorateur de Bapi.
A bientôt ...
JeanLucROB
Posteur débutant
Posteur débutant
 
Messages: 9
Inscription: 18 Mai 2012, 11:05

Re: Création d'article en automatique

Messagede thoul » 13 Juin 2012, 13:04

Bonjour,

Etrange comportement du BAPI entre SE37 et l'appli. Bon, tant que ça fonctionne... ;)

Concernant la signification des codes infos accompagnant le message:
via la transaction SE91, on peut visualiser les "classes de messages" existantes sur SAP. Ces classes étant des regroupements logiques de messages (par périmètres fonctionnels, transactions, programmes ou que sais-je encore). Les différents messages de la classe étant affecté à un n° de message de 0 à 999.
Ici, tu rencontre donc les messages 732, 506, 735 et 731 de la classe CL appelé en ABAP de la façon suivante
message ID classe TYPE type de message NUMBER n° message ds la classe

Le code lettre I, S et E correspond au type de message qui détermine le comportement que ce message va avoir (affichage du message, suite du traitement après message...).
Les types de messages existants sont les suivant:
I: message d'information affiché sous forme d'une boite de dialogue. Après ce message, le traitement se poursuit
S: message de statut (ou succes) affiché sous forme d'un bandeau vert en bas d'écran. Après ce message, le traitement se poursuit
E: message d'erreur affiché sous forme de bandeau rouge en bas d’écran. Le traitement stoppe à l'apparition du message. Bloquant
W: message warning affiché sous forme de bandeau jaune en bas d'écran. le traitement se poursuit après le message.
A: message abort affiché sous forme d'une boite de dialogue. le traitement stoppe à l'apparition du message
X: message d'exit. le traitement stoppe à l'apparition du message et génère un "short dump" (log d'erreur) accessible en ST22.

Bref, pour aider à l’interprétation des messages retournés par le BAPI, on peut considérer que les messages de type E, X et A correspondent à des traitement interrompus avant la fin de traitement et donc à des créations (d'article ou de classif) en échec.
Sans entrer dans le détail, il peut arriver que des messages d'autres types correspondent à des échecs (mauvais choix de type de message survenant dans le BAPI) et alors la, il faut tester la classe + n° de message... pas terrible terrible.
thomas
'si il n'y a pas de solution, c'est qu'il n'y a pas de problème'
Avatar de l’utilisateur
thoul
Posteur confirmé
Posteur confirmé
 
Messages: 62
Inscription: 26 Juillet 2010, 10:56

Re: Création d'article en automatique

Messagede thoul » 13 Juin 2012, 13:48

Après reflexion, je pense que l'écart entre le test SE37 et ton appli doit être la présence des '0' en préfixe dans le n° d'objet présent dans l'appli (je suppose que le n° est repris de la BAPI de création d'article) mais absent lors du test SE37. J'ai bon?
thomas
'si il n'y a pas de solution, c'est qu'il n'y a pas de problème'
Avatar de l’utilisateur
thoul
Posteur confirmé
Posteur confirmé
 
Messages: 62
Inscription: 26 Juillet 2010, 10:56

Re: Création d'article en automatique

Messagede JeanLucROB » 09 Juillet 2012, 15:15

Bonjour à tout le forum et aux courageux encore au travail...
Désolé Thoul de ne pas t'avoir répondu avant, je viens juste de voir ton dernier message. Alors, j'ai fait encore plusieurs essais directement avec SE37 en jouant avec le nombre de zéro devant le code article et aucun changement de noté.
Une info du même niveau de subtilité que "ST" pour "PC". Pour renseigner les désignations des articles dans toutes les langues correspondant à la table MATERIALDESCRIPTION, structure BAPI_MAKT, en saisie directe dans la fiche article mais surtout au niveau de SE37, on saisit 'EN' en anglais et 'ES' pour l'espagnol. Mais au niveau du codage, anglais = 'E' et espagnol = 'S', car enregistré dans SPRAS sur 1 caractère => voir table T002 Code langue pour la correspondance. J'ai cherché un petit moment... mais le métier vient...
Bonnes vacances à ceux qui vont bientôt partir
JeanLucROB
Posteur débutant
Posteur débutant
 
Messages: 9
Inscription: 18 Mai 2012, 11:05

Re: Création d'article en automatique

Messagede thoul » 09 Juillet 2012, 16:05

Effectivement, le problème de conversion de la langue est du même principe que celui de l'unité de quantité.
Pour essayer de généraliser: quand tu es sur une zone de la structure BAPI, par exemple double-clic sur BAPI_MAKT
Image
on double-clique sur le type de composante de la zone qui nous interesse: ici SPRAS, composante de la zone LANGU.

On arrive alors sur le détail de cette composante SPRAS Image
et on remarque qu'elle est définie par un domaine, astucieusement appelé SPRAS également (c'est souvent le cas mais pas systématique qu'un élément de donnée et le domaine qui le définit aient le même nom).
En double-cliquant sur le domaine, on arrive au détail de celui-ci Image
On constate, sur l'onglet "Définition" du domaine, que celui-ci se voit affecter une routine de conversion nommée ISOLA.
Cela signifie que le champ BAPI_MAKT-LANGU "subit" bien une conversion entre la valeur "saisies" et la valeur "interprétée" dans SAP. En affichage d'une valeur SAP, la conversion fonctionne dans l'autre sens.

Ces conversions correspondent au déclenchement systématique de fonction de conversion lors de la sollicitation de la zone. Ces fonctions sont accessible depuis SE37 et se nomme CONVERSION_EXIT_xxxxx_INPUT et CONVERSION_EXIT_xxxxx_OUTPUT ou xxxxx = nom de la routine de conversion

Sur le BAPI de creation d'article il existe entre autre une routine de conversion sur le n° d'article (BAPIMATHEAD-MATERIAL, conversion MATNR qui ajoute/retire les 0 en préfixe), sur l'unité de quantité (BAPI_MARA-BASE_UOM, conversion CUNIT) et la langue de désignation article (BAPI_MAKT-LANGU, conversion ISOLA)
thomas
'si il n'y a pas de solution, c'est qu'il n'y a pas de problème'
Avatar de l’utilisateur
thoul
Posteur confirmé
Posteur confirmé
 
Messages: 62
Inscription: 26 Juillet 2010, 10:56


Retourner vers ABAP

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités