CLAF_CLASSIFICATION_OF_OBJECTS

Getting started ... Alles für einen gelungenen Start.
22 Beiträge • Seite 1 von 2 (current) Nächste
22 Beiträge Seite 1 von 2 (current) Nächste

CLAF_CLASSIFICATION_OF_OBJECTS

Beitrag von nachtfalkeBS (ForumUser / 12 / 0 / 0 ) »
Hallo Zusammen,

ich habe eine Frage zu dem FB CLAF_CLASSIFICATION_OF_OBJECTS diesen kann ich benutzen um die Klassifikation eines Materials auszulsen.

Über die SE37 klappt das auch alles.
Für einen Query brauch ich jetzt nur ein ganz bestimmtes Feld von dem Ergebnis.

Im Anhang habe ich einen Screenshot anghängt.
Ich brauche den Wert PP_FARBE als BRAUN (AUSP1)

ich bin jetzt bei der Zeile

IF sy-subrc = 0.

und weiß nicht wie ich diesen einzelnen Wert abgreifen kann.

Danke für die Hilfe.

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Beitrag von steffiherr (ForumUser / 11 / 0 / 1 ) »
Hallo,
einfach mit READ TABLE T_OBJECTDATA WITH KEY SMBEZ = 'PP_FARBE' die interne Tabelle T_OBJECTDATA lesen. Wenn dann ein Eintrag da ist, ist das Merkmal bewertet - wenn nein dann eben nicht.

Gruss,
Stephan

Beitrag von nachtfalkeBS (ForumUser / 12 / 0 / 0 ) »
Danke Stephan für die schnelle antwort.

Leider hab ich jetzt nochmal ein problem.
Also am Anfang defeniere ich die Interne Tabelle:

DATA:T_OBJECTDATA TYPE TABLE OF CAWNT.
......

Bei Tables gebe ich dann die Tabelle an

TABLES
* T_CLASS =
T_OBJECTDATA = T_OBJECTDATA
......

und ganz unten kommt dann das.
READ TABLE T_OBJECTDATA WITH KEY SMBEZ = 'PP_FARBE'.

Jetzt sagt er mir aber:
Die interne Tabelle "T_OBJECTDATA" hat keine Kopfzeile - explizite
Angabe eines Ausgabebereiches durch "INTO wa" oder "ASSIGNING <fs>" erforderlich.

Ich kenn mich in ABAP nicht aus such mir viele aus dem Internet zusammen.
Also fals möglich etwas ausführlicher.

Danke

Beitrag von steffiherr (ForumUser / 11 / 0 / 1 ) »
Hallo,
du musst dir noch eine Struktur analog der Tabelle anlegen.
z.B.
DATA: GS_OBJECTDATA TYPE CAWNT. oder
DATA: GS_OBJECTDATA LIKE LINE OF GT_OBJECTDATA.

und dann den READ TABLE T_OBJECTDATA INTO GS_OBJECTDATA WITH KEY SMBEZ = 'PP_FARBE'. Dann hast du in der Struktur GS_OBJECTDATA die gewünschten Daten stehen (natürlich nur wenn das Merkmal auch gefüllt ist).
Lies dir auf jeden Fall mal die Hilfe zu den internen Tabellen und dem READ TABLE durch, sonst wirst Du immer wieder auf Probleme stoßen!!!!

Grüße,
Stephan

Beitrag von steffiherr (ForumUser / 11 / 0 / 1 ) »
Hallo,
du musst dir noch eine Struktur analog der Tabelle anlegen.
z.B.
DATA: GS_OBJECTDATA TYPE CAWNT. oder
DATA: GS_OBJECTDATA LIKE LINE OF GT_OBJECTDATA.

und dann den READ TABLE T_OBJECTDATA INTO GS_OBJECTDATA WITH KEY SMBEZ = 'PP_FARBE'. Dann hast du in der Struktur GS_OBJECTDATA die gewünschten Daten stehen (natürlich nur wenn das Merkmal auch gefüllt ist).
Lies dir auf jeden Fall mal die Hilfe zu den internen Tabellen und dem READ TABLE durch, sonst wirst Du immer wieder auf Probleme stoßen!!!!

Grüße,
Stephan

Beitrag von nachtfalkeBS (ForumUser / 12 / 0 / 0 ) »
Danke Stephan,

ich werd mir die Onlinehilfe durchschauen.

Jetzt hab ich mein Coding mal deinem Vorschlag angepaßt bekomme jetzt aber die Meldung

READ TABLE T_OBJECTDATA INTO GS_OBJECTDATA WITH KEY SMBEZ = 1.
IF sy-subrc = 0.
ENDIF.

Es existiert keine Komponente mit Namen "SMBEZ".

Wenn du mir da nochmal helfen könntest.
Danke

gruß
Bernhard

Beitrag von nachtfalkeBS (ForumUser / 12 / 0 / 0 ) »
Hallo Stephan,

ich habs selber mit etwas test hinbekommen.

Wie übergebe ich jetzt die PLAF-MATNR die ich zur Query laufzeit ermittler der Variablen OBJECT?

gruß
Bernhard

Beitrag von nachtfalkeBS (ForumUser / 12 / 0 / 0 ) »
Hallo,

das letzte Stück Puzzelteil habe ich auch geschafft.

Nur wenn ich den Query jetzt ausführe bekomme ich eine Kurzdump

Ausnahmebedingung "NO_CLASSIFICATION" ausgelöst

Die Variable ist laut Debugger richtig gefüllt.
Hinterlege ich den Wert fest im Code läuft der Query durch.

Hat jemand eine Idee warum?

gruß
Bernhard

Beitrag von steffiherr (ForumUser / 11 / 0 / 1 ) »
Hallo,

ist die Variable für das Objekt wirklich richtig gefüllt. Beliebter Fehler (auch von mir) ist immer, daß z.B. führende Nullen bei Materialnummer nicht übergeben werden. Ansonsten fällt mir spontan nix mehr ein. Evtl. poste doch mal den Ausschnitt aus Deinem Coding und was Du in den einzelnen Parametern stehen hast...

Grüße,
Stephan

Beitrag von nachtfalkeBS (ForumUser / 12 / 0 / 0 ) »
Hallo,

ich habs doch noch rausgefunden. Ich habe die Variable in Hochkommasgesetzt,
so hat er natürlich immer den Wert genommen anstatt der übergebenen Werte.

gruß
Bernhard

Beitrag von BabsiCSC (ForumUser / 86 / 0 / 0 ) »
Hallo,
Ja, mein Problem betrifft auch diesen Fkt.baustein,
nur möchte ich die Einträge der t_objectdata (in dem Fall dann in meiner it_objectdata) statt zeilenweise dann spaltenweise ausgeben lassen!!
Wie geht das? (siehe anbei als Bsp. ..)
Danke!!

lG

***

Ich bearbeite ALV-Listen und möchte nun zu einem Objekt die Klassifizierungen ausgeben.
Den dazugehörigen Fkt.baustein habe ich dafür schon eingebaut:
CALL FUNCTION 'CLAF_CLASSIFICATION_OF_OBJECTS'
EXPORTING
class = lw_ziappliclass-class
* CLASSTEXT = 'X'
classtype = '002'
* CLINT = 0
* FEATURES = 'X'
language = sy-langu
object = l_object
* OBJECTTABLE = ' '
* KEY_DATE = SY-DATUM
* INITIAL_CHARACT = 'X'
* NO_VALUE_DESCRIPT =
* CHANGE_SERVICE_CLF = 'X'
* INHERITED_CHAR = ' '
* CHANGE_NUMBER = ' '
TABLES
t_class = it_class
t_objectdata = it_objectdata
* I_SEL_CHARACTERISTIC =
* T_NO_AUTH_CHARACT =
EXCEPTIONS
no_classification = 1
no_classtypes = 2
invalid_class_type = 3
OTHERS = 4
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

Die Daten dafür wurden natürlich auch schon deklariert - klar, weil sonst könnte er nicht aktivieren
DATA: ....
...
it_class TYPE TABLE OF sclass,
it_objectdata TYPE TABLE OF clobjdat,
wa_objectdata LIKE LINE OF it_objectdata,
l_object TYPE ausp-objek,
....

In der it_objectdata sind die Daten d. Klassifizierungen drinnen.

Nun habe ich eine Frage ->
Wie kann ich mir die Daten der Klassifizierungen aus der it_objectdata, die (lt. dem, wenn man den Fkt.baustein ausführt zeilenweise drinnenstehen) in meinem ALV spalten(!!)weise ausgeben lassen???

Bitte um Hilfe!!

Danke!
lG

Beitrag von muggel (ForumUser / 68 / 0 / 0 ) »
So klappts mei mir:
FORM material_class.

DATA: lv_matnr TYPE ausp-objek,
lt_class TYPE TABLE OF sclass,
lt_objectdata TYPE TABLE OF clobjdat,
ls_objectdata LIKE LINE OF lt_objectdata.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = afpod-matnr
IMPORTING
output = lv_matnr. " 50-stellig

lv_matnr = lv_matnr+32(18).


CALL FUNCTION 'CLAF_CLASSIFICATION_OF_OBJECTS'
EXPORTING
class = '1010'
classtext = 'X'
classtype = '001'
clint = 0
features = 'X'
language = sy-langu
object = lv_matnr
objecttable = 'MARA'
key_date = sy-datum
* INITIAL_CHARACT = 'X'
* no_value_descript = 'X'
change_service_clf = 'X'
* INHERITED_CHAR = ' '
* CHANGE_NUMBER = ' '
TABLES
t_class = lt_class
t_objectdata = lt_objectdata
* I_SEL_CHARACTERISTIC =
* T_NO_AUTH_CHARACT =
EXCEPTIONS
no_classification = 1
no_classtypes = 2
invalid_class_type = 3
OTHERS = 4
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
READ TABLE lt_objectdata INTO ls_objectdata WITH KEY atnam = 'Z_MST_KUND'.
z_kund = ls_objectdata-ausp1.
CLEAR ls_objectdata-ausp1.

READ TABLE lt_objectdata INTO ls_objectdata WITH KEY atnam = 'Z_MST_GEWS'.
z_gews = ls_objectdata-ausp1.
CLEAR ls_objectdata-ausp1.

READ TABLE lt_objectdata INTO ls_objectdata WITH KEY atnam = 'Z_MST_GEWT'.
z_gewt = ls_objectdata-ausp1.
z_gewei = ls_objectdata-dime1.

ENDIF.

ENDFORM. "material_class

Beitrag von BabsiCSC (ForumUser / 86 / 0 / 0 ) »
Hallo,

O.K., danke!

Frage -> Deine Zuweisungsfelder z_kund, z_gews und z_gewt sind offensichtlich deine Spalten, die du in deiner Struktur so angelegt hast, oder???

Und dein ls_objectdata
(
READ TABLE it_objectdata INTO ls_objectdata WITH KEY atnam = 'Z_MST_KUND'.
z_kund = ls_objectdata-ausp1.
CLEAR ls_objectdata-ausp1.

READ TABLE it_objectdata INTO ls_objectdata WITH KEY atnam = 'Z_MST_GEWS'.
z_gews = ls_objectdata-ausp1.
CLEAR ls_objectdata-ausp1.

READ TABLE it_objectdata INTO ls_objectdata WITH KEY atnam = 'Z_MST_GEWT'.
z_gewt = ls_objectdata-ausp1.
z_gewei = ls_objectdata-dime1.
)
das sind die Zeilen deiner internen Tabelle lt_objectdata, oder???


Ich habe das nämlich inzwischen so gelöst -->
LOOP AT it_objectdata INTO ls_objectdata.

fieldname = sy-tabix.



CONCATENATE 'AUSP1_-ATWRT' fieldname INTO fieldname.
ASSIGN COMPONENT fieldname OF STRUCTURE ls_data TO <l_field>.


IF <l_field> IS ASSIGNED.

<l_field> = ls_objectdata-ausp1.

ENDIF.


ENDLOOP.

APPEND ls_data TO it_data.

Zeigt er mir aber trotzdem nicht richtig an :-(
...

???

thx
lg

Beitrag von BabsiCSC (ForumUser / 86 / 0 / 0 ) »
... außerdem habe ich 84 Spalten, das geht dann auch nicht so, so wie du es mir vorschlägst, oder? ..

thx,
lg

Beitrag von uh (Specialist / 158 / 0 / 1 ) »
Poste doch bitte Mal deine Struktur von ls_data. Ich glaube es ist ZRPMM_EQUIPMENT_INSPECTION_3 . Vielleicht kann ich dann weiterhelfen.

Grüße

UH

Vergleichbare Themen

4
Antw.
1955
Views
Classification (Project Summarization)
von AnnaM86 » 02.10.2017 10:30 • Verfasst in ABAP® für Anfänger
5
Antw.
5012
Views
Umstieg auf ABAP Objects
von ann_bine » 19.03.2016 10:54 • Verfasst in ABAP Objects®
1
Antw.
2081
Views
BUch ABAP Objects
von pit850 » 18.01.2016 11:32 • Verfasst in ABAP® für Anfänger
2
Antw.
5076
Views
create objects problem
von Thanatos82 » 18.09.2012 10:52 • Verfasst in ABAP Objects®
11
Antw.
13739
Views
Einführung in ABAP Objects
von jspranz » 01.10.2008 12:36 • Verfasst in ABAP Objects®

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.