Klassifizierungen zu Objekten in einem ALV ausgeben lassen

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).
8 Beiträge • Seite 1 von 1
8 Beiträge Seite 1 von 1

Klassifizierungen zu Objekten in einem ALV ausgeben lassen

Beitrag von BabsiCSC (ForumUser / 86 / 0 / 0 ) »
Hallo,
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

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


Beitrag von BabsiCSC (ForumUser / 86 / 0 / 0 ) »
Hallo,
Um mein Problem besser darzustellen , anbei ein screenshot, ... -> Ich möchte 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

Beitrag von uh (Specialist / 158 / 0 / 1 ) »
Jetzt wird es mir klar.

Es gibt da (bestimmt) viele Wege aber ich nehme da einen schnellen oder einen etwas komplizierteren Ansatz.
Also der schnelle Weg. Er hat den Nachteil, dass du nur eine begrenzte Anzahl an Spalten darstellen kannst (kann das ALV aber auch nur).
Du legst eine Struktur an, die deinen angezeigten ALV-Spalten entsprechen.
Dann legst du deine Merkmalspalten an. Die nennst du z.B.
SMBEZ_1, SMBEZ_2... SMBEZ_XX (wobei XX halt die Begrenzung der Anzeige darstellt. Dann kannst du schnell den Feldkatolog in deinem Programm erstellen und die Datentabelle in deinem Programm hast du dann auch schnell.

Nach dem Bapi-Aufruf loopst du durch deine T_OBJECTDATA und bastelst dir aus der Konstanten 'SMBEZ_' sowie sy-tabix den Feldnamen SMBEZ_1,... Mittels assign component weist du dann auf das Feld der ALV-Datenzeile und füllst es mit den Daten.

Grüße

UH

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

O.K., danke für die Antwort!

Die Struktur (so wie du das beschrieben hast), die meinen angezeigten ALV-Spalten entsprechen, die habe ich schon angelegt (84 Spalten).

Den Feldkatalog (inkl. Fkt.baustein) habe ich in meinem report auch schon erstellt und eingebaut.
-> CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
* I_PROGRAM_NAME =
* i_internal_tabname =
i_structure_name = 'ZRPMM_EQUIPMENT_INSPECTION_3'
* I_CLIENT_NEVER_DISPLAY = 'X'
* I_INCLNAME =
i_bypassing_buffer = 'X'
* I_BUFFER_ACTIVE =
CHANGING
ct_fieldcat = it_fieldcat[]
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

sowie lasse ich eben auch schon das ALV darstellen:
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
* I_CALLBACK_PROGRAM = ' '
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = ' '
* I_CALLBACK_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
i_structure_name = 'ZRPMM_EQUIPMENT_INSPECTION_3'
* I_BACKGROUND_ID = ' '
i_grid_title = 'Equipmentlist Inspection'
* I_GRID_SETTINGS =
is_layout = ls_layout
it_fieldcat = it_fieldcat[]
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* IT_SORT =
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
i_save = 'X'
is_variant = lv_variant
* IT_EVENTS =
* IT_EVENT_EXIT =
* IS_PRINT =
* IS_REPREP_ID =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* IT_ALV_GRAPHICS =
* IT_HYPERLINK =
* IT_ADD_FIELDCAT =
* IT_EXCEPT_QINFO =
* I_HTML_HEIGHT_TOP =
* I_HTML_HEIGHT_END =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = it_data
EXCEPTIONS
program_error = 1
OTHERS = 2
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

Nur fehlt mir halt jetzt "nur" noch , wie gesagt, die spaltenweise Ausgabe.

Bzw. was meinst du mit dem BAPI-Aufruf? Ich verwende doch in dem Fall kein BAPI? Oder?
Ich verwende ja nur die CLAF_CLASSIFICATION_OF_OBJECTS
->
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.


O.K., d.h. ich loope nach dem Aufruf d. CLAF_CLASSIFICATION_OF_OBJECTS über meine it_objectdata drüber.
Ist das richtig?
Brauche ich vor'm ASSIGN ein CONCATENATE?

Gibt es da ein ausführlicheres Bsp. dazu, das genau dieses Thema behandelt?

Danke!

lG

Beitrag von uh (Specialist / 158 / 0 / 1 ) »
OK,

ein komplettes Beispiel wäre zu groß und würde auch nur ablenken.
Du hast in it_objectdata deine Daten und in it_data sollen die ALV-Daten. Zu beiden Tabellen hast du die Zeilen ls_objectdata und ls_data.

data: fieldname(80) type c.
FIELD-SYMBOLS <l_field> TYPE ANY.

loop at it_objectdata into ls_objectdata.
fieldname = sy-tabix.
concatenate 'SMBEZ_' fieldname into fieldname.
ASSIGN COMPONENT fieldname OF STRUCTURE ls_data TO <l_field>.
IF <l_field> IS ASSIGNED.
<l_field> = ls_objectdata-SMBEZ.
ENDIF.
endloop.
append ls_data to it_data.

Schnell getippt und bestimmt mit Tippfehlern. Das concatenate (also Aufbau deines Feldnamen) musst du selber wissen. Ich kenne ja deine Feldnamen nicht.

Grüße

UH

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

O.K., danke !
.. werd' das mal ausprobieren ...

lG

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

Du meinst aber mit ls_objectdata und ls_data jetzt nicht die internen Tabellen? Sondern wirklich die Zeilen der Tabellen it_data und it_objectdata?
Versteh' ich das richtig?

thx,
lg

Beitrag von uh (Specialist / 158 / 0 / 1 ) »
Ja,

siehst du richtig. Du kannst natürlich auch mit Tabellen mit Kopfzeilen arbeiten aber das mache ich nicht. "ls_objectdata " musst du also mit
data: ls_objectdata type CLOBJDAT.
und "ls_data" mit
data: ls_data type DeineStruktur.
in dem Programm deklarieren.

Grüße

UH

Seite 1 von 1

Vergleichbare Themen

2
Antw.
1830
Views
Klassifizierungen zu Objekten in einem ALV ausgeben lassen
von BabsiCSC » 28.04.2008 09:17 • Verfasst in SAP - Allgemeines
2
Antw.
1844
Views
Klassifizierungen zu Objekten in einem ALV ausgeben lassen
von BabsiCSC » 25.04.2008 15:15 • Verfasst in ABAP® für Anfänger
2
Antw.
5059
Views
Materialkomponenten ausgeben lassen
von Andrzej » 06.07.2015 15:12 • Verfasst in ABAP® für Anfänger
4
Antw.
2062
Views
Seiteninhalte lassen sich nicht dynamisch ausgeben
von Hunter » 12.01.2006 17:24 • Verfasst in Web-Dynpro, BSP + BHTML
6
Antw.
2455
Views
Tastenkürzel um alle Feder einer Struktur ausgeben zu lassen?
von tekko » 28.04.2021 00:03 • Verfasst in Tips + Tricks & FAQs

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

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.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
vor 20 Stunden von Bright4.5 1 / 456
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2104
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8698