Bewertung lesen
Um die Bewertung zu einem Objekt zu lesen, gibt es mehrere Funktionsbausteine… Hier sehen Sie aber auch, wie die Merkmalsbewertungen über die Tabellen gezielt gelesen werden können.
Verwenden Sie einen der folgenden Bausteine zum Lesen der Klassifizierungsdaten:
- BAPI_OBJCL_GETDETAIL
- BAPI_OBJCL_GETCLASSES
- CACL_OBJECT_READ_VALIDATION
BAPI_OBJCL_GETDETAIL
Beispielaufruf für das Material MAT1234, Charge CH12345. Die Klasse heisst ZM_ZUSATZ.
OBJECTKEY MAT1234 CH12345 OBJECTTABLE MCH1 CLASSNUM ZM_ZUSATZ CLASSTYPE 023 KEYDATE 08.12.2003 UNVALUATED_CHARS LANGUAGE DE
In den Tabellen ALLOCVALUESNUM erhalten Sie die numerischen Werte zurück; in der Tabelle ALLOCVALUESCHAR die Zeichenartigen Merkmale und in der Tabelle ALLOCVALUESCURR die Währungsmerkmale.
Informationen stehen in der Tabelle RETURN.
[notice type=’info’]Wenn Sie nicht sicher sind, welche Klassennummer verwendet wurde — z.B. weil dem Material verschiedene Klassen zugeordnet werden können –, dann verwenden Sie bitte den Baustein BAPI_OBJCL_GETCLASSES![/notice]
Zusammengesetzter Objektschlüssel
Bei Klassifizierungen für Tabellen mit mehreren Schlüsselfeldern muss der Objektschlüssel aus diesen zusammengesetzt werden. Eine einfache Methode bietet der Baustein BAPI_OBJCL_CONCATENATEKEY. Im Falle des oben genannten Beispiels müssen dem Baustein die Namen und Werte der Schlüsselfelder in einer Tabelle übergeben werden (Wie bei CACL_OBJECT_VALIDATION_READ). Übergeben wird dann der korrekt zusammengesetzte Schlüssel.
Vorhandene Bewertungen ermitteln
Falls ein Material, eine Charge etc. mehreren Klassen zugeordnet werden kann, so muss zuvor geprüft werden, zu welcher Klasse überhaupt Bewertungen vorhanden sind.
Diese Arbeit übernimmt der Baustein BAPI_OBJCL_GETCLASSES. Er ist genau so “zu füttern”, wie BAPI_OBJCL_GETDETAIL.
Bei Bedarf (Parameter READ_VALUATIONS) werden auch gleich die zugehörigen Bewertungen gelesen.
CACL_OBJECT_READ_VALIDATION
Beispiel zum Lesen einer Klassifizierung zum Kunden:
OBJECT_TYPE KNA1 CLASS_TYPE 011 CLASS Z_DEB_CLASS WITH_UNASSIGNED_CHARACTS WITH_INHERITED_CHARACTS DATE LANGUAGE DE
Die Tabelle OBJECT_IDENTIFICATION muss mit dem oder den Feldnamen gefüllt werden und dem entsprechenden Wert des Objekts:
FIELD VALUE KUNNR 784653 CLAF_CLASSIFICATION_OF_OBJECTS CLASS Z_DEB_CLASS CLASSTEXT X CLASSTYPE 011 FEATURES X LANGUAGE DE OBJECT 0000012345 "Kundennummer OBJECTTABLE KNA1 KEY_DATE 11.04.2014 INITIAL_CHARACT X NO_VALUE_DESCRIPT CHANGE_SERVICE_CLF X
Bewertung über Tabellen lesen
Das folgende Programm liest gezielt einzelne Merkmalsbewertungen zu einem Objekt — in diesem Fall eine Charge.
REPORT z_merkmale_lesen. DATA: l_atwrt TYPE atwrt, l_atflv TYPE atflv, l_anzst TYPE anzst, l_anzdz TYPE anzdz, l_wert(30), l_objek TYPE cuobn, l_atfor TYPE atfor, "Format l_klart TYPE klassenart VALUE '023', l_obtab TYPE tabelle VALUE 'MCH1'. PARAMETERS: p_matnr TYPE matnr DEFAULT 'MAT123', p_charg TYPE charg_d. START-OF-SELECTION. PERFORM lies_merkmal USING 'ZM_LAENGE'. "Länge PERFORM lies_merkmal USING 'ZM_ANZAHL'. "Anzahl je Einheit *---------------------------------------------------------------------* * FORM lies_merkmal * *---------------------------------------------------------------------* FORM lies_merkmal USING value(f_merkmal). *-- Objektnummer aus Materialnummer und Charge bauen l_objek = p_matnr. l_objek+18(10) = p_charg. WRITE: / f_merkmal COLOR COL_POSITIVE. POSITION 20. CLEAR: l_atwrt, l_atflv, l_atfor, l_anzst, l_anzdz. *-- Merkmalswert über Inner Join ermitteln SELECT SINGLE ausp~atwrt ausp~atflv cabn~atfor cabn~anzdz FROM ausp INNER JOIN inob ON inob~cuobj = ausp~objek INNER JOIN cabn ON ausp~atinn = cabn~atinn INTO (l_atwrt, l_atflv, l_atfor, l_anzdz) WHERE inob~klart = l_klart AND inob~obtab = l_obtab AND inob~objek = l_objek AND cabn~atnam = f_merkmal. IF sy-subrc > 0. WRITE: 'nicht bewertet.'. ELSE. *-- Je nach Merkmalsformat unterschiedliche Zuweisung CASE l_atfor. WHEN 'CHAR'. *-- Zeichenformat WRITE: l_atwrt. WHEN 'NUM' OR 'DATE' OR 'TIME'. *-- Numerisches Format WRITE l_atflv TO l_wert EXPONENT 0 NO-GROUPING NO-ZERO LEFT-JUSTIFIED DECIMALS l_anzdz. WRITE: l_wert. ENDCASE. ENDIF. ENDFORM.
- Interview mit Björn Schulz (Software-Heroes.com) - 3. September 2024
- Daten aus ALV ermitteln - 3. September 2024
- So lange es den SAPGUI noch gibt… - 27. Juni 2024