Page 1 of 1

Klassifizierungsmerkmale eines Materials auslesen

PostPosted: Wed Jun 30, 2010 2:22 am
by Damien1810
Ich habe eine Klasse (Klassenart 001) inkl. Merkmalen angelegt und Materialien dieser Klasse zugeordnet.
Eigentlich will ich jetzt nur das Material inkl. vergebenen Klassifizierungsmerkmalen über eine BAPI anzeigen aber ich komme seit Stunden nicht weiter!

BAPI_CLASS_SELECT_OBJECTS gibt mir zu Suchkriterien den Materialnamen.
BAPI_MATERIAL_GET_DETAIL generelle Materialeigenschaften
BAPI_OBJCL_GETDETAIL_KEY scheint schon richtiger zu sein aber ich komme mit BAPI_OBJCL_GET_KEY_OF_OBJECT nicht an den internen Schlüssel meines Materials.

Wen ich dort folgende Werte setze:
OBJECTNAME: Materialname
OBJECTTABLE: mara
CLASSTYPE: 001
CREATE_MISSING_KEY: X
kommt als Fehlermeldung immer "Zur Klassenart 001 müssen zusätzlich Objekte angegeben sein". Und diese Fehlermeldung hat scheinbar sonst keiner auf der Welt...

Ist mein Vorgehen total falsch?

PostPosted: Wed Jun 30, 2010 8:17 am
by ewx
Wichtig ist in jedem Fall Großschreibung!! mit mara anstelle von MARA erhältst du ziemlich sicher einen Fehler.
Ansonsten hiflt dir das hier bestimmt weiter: http://tricktresor.de/content/index.php ... 23&aID=150

PostPosted: Wed Jun 30, 2010 8:29 am
by Tron
Moin,
versuch es doch mal mit CLAF_CLASSIFICATION_OF_OBJECTS (ist dokumentiert)

Auszug aus SD_BATCH_CLASSIFICATION_DATA
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1.   CALL FUNCTION 'CLAF_CLASSIFICATION_OF_OBJECTS'
  2.            EXPORTING
  3.                  CLASSTYPE    = CH_CLASSTYPE
  4.                  FEATURES     = 'X'
  5.                  OBJECT       =  CH_OBJECT
  6.                  OBJECTTABLE  = CH_TABLE
  7.            TABLES
  8.                  T_CLASS      =  I_CLASS
  9.                  T_OBJECTDATA =  I_CLOBJDAT
  10.            EXCEPTIONS
  11.                  NO_CLASSIFICATION = 1
  12.                  NO_CLASSTYPES     = 2.
  13.  
  14.   CASE SY-SUBRC.
  15.     WHEN 1.
  16.       RAISE NO_CLASSIFICATION.
  17.     WHEN 2.
  18.       RAISE NO_CLASSTYPES.
  19.  
GeSHi ©

gruß TRon

PostPosted: Wed Jun 30, 2010 9:23 am
by Damien1810
Danke erstmal für die guten Antworten. Mein Problem ist, dass KEINE der BAPIs unter http://tricktresor.de/content/index.php ... 23&aID=150 und auch nicht CLAF_CLASSIFICATION_OF_OBJECTS bei meinem SAP im BAPI-Explorer freigegeben sind.

Auch MARA ändert nichts. Allerdings vermute ich auch nur, dass meine Klassifizierungsmerkmale in dieser Tabelle liegen...

PostPosted: Wed Jun 30, 2010 9:39 am
by ewx
Di BAPIs müssen aber freigegeben sein. Das ist ja ein wichtiges Merkmal von BAPIs..., oder?
Auf jeden Fall kannst du die BAPIs direkt im SAP System testen. Da ist es wahrscheinlich einfacher. Prüfe evtl. auch mal, ob die Materialnummer auf der DB anders aussieht, als im Ausgabefeld (Konvertierungsexit!!)

PostPosted: Wed Jun 30, 2010 1:57 pm
by Hedwig3597
Eigentlich sollte die gewünschte Information über den BAPI_MATERIAL_GET_DETAIL zu holen sein, sofern die Materialnummer bekannt ist, werden die Daten in der Tabelle ALLOCVALUESCHAR zurückgeliefert. Der BAPI wird wie folgt aufgerufen:

data: OBJECTKEY like BAPI1003_KEY-OBJECT,
OBJECTTABLE like BAPI1003_KEY-OBJECTTABLE,
CLASSNUM like BAPI1003_KEY-CLASSNUM,
CLASSTYPE like BAPI1003_KEY-CLASSTYPE.

objectkey = MARA-MATNR.
objecttable = 'MARA'.
classnum = 'MKGHWV'. "Klasse
classtype = '001'.

CALL FUNCTION 'BAPI_OBJCL_GETDETAIL'
EXPORTING
objectkey = objectkey
objecttable = objecttable
classnum = classnum
classtype = classtype
TABLES
ALLOCVALUESNUM = ALLOCVALUESNUM
ALLOCVALUESCHAR = ALLOCVALUESCHAR
ALLOCVALUESCURR = ALLOCVALUESCURR
RETURN = RETURN.

Ich hoffe das hilft weiter

Gruß
Onkelsascha

PostPosted: Wed Jun 30, 2010 2:11 pm
by Damien1810
Ich teste ja schon die ganze Zeit im SAP. ;-) Und ich musste den Admin auch erstmal sagen, dass er für meinen Benutzer das Klassensystem "freischaltet"- vorher konnte ich nämlich überhaupt keine Klassen anlegen.

"Meine" BAPIS OBJCL_*** haben hinten noch ein KEY vgl. Screenshot

Aber mittlerweile glaube ich, dass der Fehler ganz woanders liegt. Es ist nämlich egal, welchen Materialnamen ich eingeben- immer kommt "Zur Klassenart 001 müssen zusätzlich Objekte angegeben sein".
Was heißt denn Objekte zu Klassenart angeben?!