28. august 2010 - five1blog.five1.de/wp-content/uploads/2010/08/... type any, type any. "die...
TRANSCRIPT
28. August 2010
1 FIVE1 GmbH & Co. KG Essence of qualityFIVE1 GmbH & Co. KG | SAP Partner Port | Altrottstraße 31 | 69190 Walldorf | T: +49 6227 73 2840 | www.five1.de
Stammdatenplanung mit SAP BW IPAm Beispiel eines Planungsfunktionstyps zur Attributsänderung beliebiger Merkmale
Dieses Dokument
2 FIVE1 GmbH & Co. KG Essence of quality
Merkmale
Version 1.0
Zuletzt geändert am 28.08.2010
Verröffentlicht am 29.08.2010
Szenario
In einem Unternehmen wird ein rollierender Projekt-Forecast auf Basis SAP Business Warehouse eingesetzt.
Der Vertrieb initiiert die Planung. Er trifft Annahmen über mögliche Projekte und deren Eintrittswahrscheinlichkeit.
Aus geplanten Projekten sollen bei Beauftragung tatsächliche Projekte werden.
Ein zuständiger Projektleiter wird dem Projekt zugeordnet.
3 FIVE1 GmbH & Co. KG Essence of quality
Ein zuständiger Projektleiter wird dem Projekt zugeordnet.
Beauftragte Projekte werden im Projekt-Forecast nicht mehr angezeigt.
Der Projektleiter bekommt eine Übersicht seiner Projekte mit den zugehörigen Umsätzen angezeigt.
Software
SAP Business Warehouse ab Version 7.0
SAP Business Explorer ab Version 7.0
Umsetzung
Ausreichende Berechtigungen für Infoobjektpflege, integrierte Planung, BEx Web Application Designer, ABAP Workbench
Know-How
Voraussetzungen
4 FIVE1 GmbH & Co. KG Essence of quality
Know-How
Grundkenntnisse im SAP BW 7.0
Grundkenntnisse BEx Query Designer, eingabebereite Queries
Fortgeschrittene Kenntnisse mit dem BEx Web Application Designer
Fortgeschrittene Kenntnisse der SAP BW Integrierten Planung
Fortgeschrittene Kenntnisse in ABAP
Das Merkmal „Projekt“ wird durch ein Attribut als „planungsrelevant“ oder „nicht planungsrelevant“ gekennzeichnet. Projekt wird zusätzlich um das Attribut Projektleiter angereichert.
In einem Webtemplate soll durch Markieren eines Projektes (einer Zeile der angezeigten Tabelle) und einen Klick auf einen entsprechenden Button ein Attributänderung durchgeführt werden.
Die Änderung des Attributes kann unter Verwendung der integrierten Planung im SAP Business Warehouse erfolgen.
Technische Umsetzung
5 FIVE1 GmbH & Co. KG Essence of quality
SAP Business Warehouse erfolgen.
Die Information welches Projekt selektiert wurde ist eine Standardfunktionalität im Web Application Designer. Die Änderung des Attributes kann über eine Planungsfunktion realisiert werden.
Die Planungsfunktion zur Änderung von Attributen muss einmalig als Planungsfunktionstyp implementiert werden. Im Folgenden finden Sie eine Schritt für Schritt Anleitung dazu.
Beispielanwendung
Aufbau des Szenarios im Web Application Designer
Integration der Planungsfunktion
Schritt für Schritt Anleitung zum Anlegen des notwendigen Planungsfunktionstyps
Inhalt
6 FIVE1 GmbH & Co. KG Essence of quality
Anhang
Vertriebssicht
7 FIVE1 GmbH & Co. KG Essence of quality
Die Vertriebssicht zeigt Projekte und bietet eine einfache Möglichkeit künftige Umsätze zu planen.
Sobald ein Projektleiter einem Projekt zugeordnet wird ist es auch für den Projektleiter sichtbar.
Projektleiter wählen
8 FIVE1 GmbH & Co. KG Essence of quality
Projekt 1 wurde durch einen Klick auf die Zeile selektiert. Die Zeile ist nun farblich hervorgehoben.
Es erscheint eine Dropdownbox in der der Projektleiter gewählt werden kann
Durch einen Mausklick auf Projektleiter ändern wird die Planungsfunktion aufgerufen, das Attribut Projektleiter gesetzt. Das Projekt ist nun auch für den Projektleiter sichtbar.
In der Projektleitersicht erhält der Projektleiter eine Übersicht der ihm zugeordneten Projekte
Wird ein Projekt selektiert können Detailinformationen erfasst werden
Die Freigabe eines Projektes zur Pflege durch die Mitarbeiter erfolgt wieder mit der Planungsfunktion zur Attributsänderung.
Abgeschlossene Projekte werden aus der Planungsansicht wieder entfernt.
Projektleitersicht
9 FIVE1 GmbH & Co. KG Essence of quality
Beispielanwendung
Schritt für Schritt Anleitung zum Anlegen des Planungsfunktionstyps
Anlegen der Planungsfunktion
Aufbau des Szenarios im Web Application Designer
Inhalt
10 FIVE1 GmbH & Co. KG Essence of quality
Integration der Planungsfunktion
Anhang
Infoobjektpflege
Wechseln Sie in dieAdministratorWorkbench (se80) undlegen Sie ein InfoobjektWGHRIOBJ an.
Dieses Infoobjekt dient später als „technische Hülle“ für die Angabe
11 FIVE1 GmbH & Co. KG Essence of quality
Hülle“ für die Angabe welches Attribut zu welchem zugehörigen Merkmal verändert werden soll.
Infoobjektpflege
Legen Sie das Merkmalohne Stammdaten undohne Texte an!
12 FIVE1 GmbH & Co. KG Essence of quality
Nachrichtenklasse
Legen Sie eine Nachrichtenklasse YWGHR_MESSAGES_001 an.
13 FIVE1 GmbH & Co. KG Essence of quality
Nachrichtenklasse
14 FIVE1 GmbH & Co. KG Essence of quality
Tragen Sie die Nachrichten nummern und –texte wie oben zu sehen ein.
Klasse als Implementierung des Planungsfunktionstyps
Legen Sie die Klasse YWGHR_CLASS_MDATA an. Die Klasse ist final und public.
15 FIVE1 GmbH & Co. KG Essence of quality
Klasseninterfaces
16 FIVE1 GmbH & Co. KG Essence of quality
Für den verwendeten Planungsfunktionstyp müssen die Interfaces
IF_RSPLFA_SRVTYPE_IMP_CHECK und IF_RSPLFA_SRVTYPE_IMP_EXEC
implementiert werden.
Klassen-Attribute
17 FIVE1 GmbH & Co. KG Essence of quality
Legen Sie die Klassen-Attribute wie oben zu sehen an.
Methode INIT_EXECUTION
18 FIVE1 GmbH & Co. KG Essence of quality
Die Importparameter werden in Klassen-Attributen zur Verwendung in der FINISH_EXECUTION Methode gespeichert. Die Importparameter werden vom System vorgegeben.
Methode Execute
19 FIVE1 GmbH & Co. KG Essence of quality
Die Importparameter i_r_param_set werden in dem Attribut P_R_PARAM_SET zur Verwendung in der FINISH_EXECUTEIN Methode gespeichert. Die Importparameter werden vom System vorgegeben.
Methode FINISH_EXECUTION
Die Implementierung der Methode „FINISH_EXECUTION“ finden Sie im Anhang. Der Importparameter I_R_MSG wird vom System vorgegeben.
20 FIVE1 GmbH & Co. KG Essence of quality
Planungsfunktionstyp anlegen
Wechseln Sie in die Transaktion rsplanund wählen Sie dort die Funktionstypenpflege.
21 FIVE1 GmbH & Co. KG Essence of quality
Planungsfunktionstyp anlegen
Tragen Sie die Klasse ein in der die Implementierung der Funktionalität erfolgt.
Die Implementierung erfolgt ohne Referenzdaten, ohne Blockbildung und ohne die Verarbeitung von Nullsätzen.
22 FIVE1 GmbH & Co. KG Essence of quality
Planungsfunktionstyp anlegen
Wechseln Sie zur Schaltfläche Parameter und legen Sie zwei elementare Parameter „Merkmal“ und „Attribut“ an.
Funktionstyp sichern und aktivieren
Beide Parameter referenzieren das Infoobjekt WGHRIOBJ.
23 FIVE1 GmbH & Co. KG Essence of quality
WGHRIOBJ.
Beispielanwendung
Schritt für Schritt Anleitung zum Anlegen des Planungsfunktionstyps
Anlegen der Planungsfunktion
Aufbau des Szenarios im Web Application Designer
Inhalt
24 FIVE1 GmbH & Co. KG Essence of quality
Integration der Planungsfunktion
Anhang
Mit Hilfe der Transaktion rsplan den Planning Modeler öffnen
Planungsfunktion anlegen
25 FIVE1 GmbH & Co. KG Essence of quality
Mit Hilfe der Transaktion rsplan den Planning Modeler öffnen
Eine Planungsfunktion vom Typ „Stammdatenattribut ändern“ anlegen
Planungsfunktion anlegen
26 FIVE1 GmbH & Co. KG Essence of quality
Das Merkmal zu welchem das Attribut geändert werden soll als Merkmal eintragen. Im Beispiel ist dass 0COORDER (Name des Infoobjektes)
Der technische Name des Attributs welches geändert werden soll als Attribut eintragen.
Beispielanwendung
Schritt für Schritt Anleitung zum Anlegen des Planungsfunktionstyps
Anlegen der Planungsfunktion
Aufbau des Szenarios im Web Application Designer
Inhalt
27 FIVE1 GmbH & Co. KG Essence of quality
Integration der Planungsfunktion
Anhang
Aufbau des Webtemplates
28 FIVE1 GmbH & Co. KG Essence of quality
Das Webtemplate zur Vertriebssicht besteht im Wesentlichen aus einem Analysis Item (der Query) und dem Dropdown-Item zum Ändern des Projektleiters.
Die Zeilenauswahl kann im Eigenschaftenmenü unter Verhalten eingestellt werden
Die hinterlegten Befehler sorgen für das Ein- und Ausblenden der Dropdownbox
Dropdownbox
29 FIVE1 GmbH & Co. KG Essence of quality
Die Dropdownbox wird über eine Query als Dataprovider (hier DP3) mit Daten versorgt.
Beispielanwendung
Schritt für Schritt Anleitung zum Anlegen des Planungsfunktionstyps
Anlegen der Planungsfunktion
Aufbau des Szenarios im Web Application Designer
Inhalt
30 FIVE1 GmbH & Co. KG Essence of quality
Integration der Planungsfunktion
Anhang
Planungsfunktion einbinden
31 FIVE1 GmbH & Co. KG Essence of quality
Die Button Group wird mit der Planungsfunktion im Eigenschaftenfenster verknüpft.
Klicken Sie dazu auf die Schaltfläche neben „Drucktaste“.
Durch einen Klick auf die Schaltfläche Befehl wird der Befehls-Wizard aufgerufen.
Die Selektionsbindung erfolgt durch die Merkmale 0COORDER und 0COORDER__0EMPLOYEE
Als Planungsfunktion wird der technische Name der zuvor angelegten Planungsfunktion eingetragen
Selektion der Planungsfunktion
32 FIVE1 GmbH & Co. KG Essence of quality
Die Bindung des Merkmals erfolgt über das Web-Item, also für 0COORDER über die selektierte Zeile in der angezeigten Query.
Datenbindung zur Planungsfunktion
33 FIVE1 GmbH & Co. KG Essence of quality
Die Bindung des Attributs kann über den gewählten Wert der Dropdownbox erfolgen.
Beispielanwendung
Schritt für Schritt Anleitung zum Anlegen des Planungsfunktionstyps
Anlegen der Planungsfunktion
Aufbau des Szenarios im Web Application Designer
Inhalt
34 FIVE1 GmbH & Co. KG Essence of quality
Integration der Planungsfunktion
Anhang
Anhang
*************************************************************************** Author: Sven Zech, FIVE1 GmbH & Co. KG***** Version: 1.0***** Date: 22.06.2009******************************************************************************** Ändert ein Attribut gemäß dem übergebenen Filterwert aus***** dem Aufruf der Planungsfunktion**********************************************************************
TYPE-POOLS: rsarc, rssm, rsdm, rsdds.
DATA: l_iobjnm type rsdiobjnm,l_attr type rsdiobjnm,l_attr_comb type rsdiobjnm,l_iobj_found type rs_bool,l_attr_found type rs_bool,
DATA: l_param_elem type ref to IF_RSPLFA_PARAM_ELEM,l_ptabelle type RSCHNTAB,l_t_data type ref to data.
FIELD-SYMBOLS: <l_t_fields> type ANY TABLE,<l_s_fields> type any,<l_field> type any.
"Die Parameter die für die Planungsfunktion in rsplan hinterlegt wurden einlesen"Lesen welches Merkmal eingestellt wurdeCALL METHOD P_R_PARAM_SET->GET_PARAM_ELEMEXPORTINGI_PARAM_NAME = 'MERKMAL'
RECEIVINGR_R_PARAM_ELEM = l_param_elem.
call METHOD l_param_elem->get_value
35 FIVE1 GmbH & Co. KG Essence of quality
l_attr_found type rs_bool,l_attr_comp_found type rs_bool,l_attr_filter_value type RSCHAVL,l_iobj_filter_value type RSCHAVL,l_chanm type RSD_CHANM,l_s_minfo TYPE rssm_s_minfo,l_t_idocstate TYPE rsarr_t_idocstate,l_message_text type string,l_s_data_charsel like line of p_t_data_charsel,l_subrc TYPE sy-subrc,l_where TYPE string,l_iobj_fieldnm TYPE RSD_FIELDNM,l_t_viobj type RSD_T_VIOBJ,l_s_viobj like LINE OF l_t_viobj,l_attr_fieldnm TYPE RSD_FIELDNM.
call METHOD l_param_elem->get_valueIMPORTINGe_value = l_iobjnm.
"Typkonvertierungl_chanm = l_iobjnm.
"Lesen welches Attribut eingestellt wurdeCALL METHOD P_R_PARAM_SET->GET_PARAM_ELEMEXPORTINGI_PARAM_NAME = 'ATTRIBUT'
RECEIVINGR_R_PARAM_ELEM = l_param_elem.
call METHOD l_param_elem->get_valueIMPORTINGe_value = l_attr.
"P-Tabelle des Merkmals lesenCALL FUNCTION 'RSD_CHKTAB_GET_FOR_CHA_BAS'EXPORTINGI_CHABASNM = l_chanm
IMPORTINGE_CHNTAB = l_ptabelle
EXCEPTIONSNAME_ERROR = 1OTHERS = 2.
"Attribute des Merkmals lesenCALL FUNCTION 'RSD_ATR_GET'EXPORTINGI_CHABASNM = l_chanm
IMPORTINGE_T_VIOBJ = l_t_viobj
Anhang
if l_attr_comb is not INITIAL.
l_iobj_found = rs_c_false.l_attr_found = rs_c_false.l_attr_comp_found = rs_c_false.
loop at p_t_data_charsel into l_s_data_charsel where IOBJNM =l_iobjnm or IOBJNM = l_attr_comb or iobjnm = l_attr.case l_s_data_charsel-iobjnm.when l_iobjnm.l_iobj_filter_value = l_s_data_charsel-low."Übergebener Filterwert aus Planungsfunktion (Merkmalswert)l_iobj_found = rs_c_true.
when l_attr_comb or l_attr.if l_attr_comp_found = rs_c_false.l_attr_filter_value = l_s_data_charsel-low."Übergebener Filterwert aus Planungsfunktion (Attributswert)
36 FIVE1 GmbH & Co. KG Essence of quality
E_T_VIOBJ = l_t_viobjEXCEPTIONSATR_NOT_FOUND = 1ILLEGAL_INPUT = 2OTHERS = 3.
IF SY-SUBRC <> 0.MESSAGE e003(ywghr_messages_001) with l_attr.
else.
"Im folgenden Prüfen ob das Attribut in der Stammdatentabelle
"gefunden werden kannclear l_attr_comb.loop at l_t_viobj into l_s_viobj where iobjnm = l_attr.l_attr_fieldnm = l_s_viobj-fieldnm.CONCATENATE l_iobjnm '__' l_attr into l_attr_comb.
endloop.
"Übergebener Filterwert aus Planungsfunktion (Attributswert)l_attr_found = rs_c_true.if l_s_data_charsel-iobjnm = l_attr_comb.l_attr_comp_found = rs_c_true.
endif.endif.
ENDCASE.endloop.
"Wird das eingestellte Attribut, bzw. das Merkmal selbst nicht gefunden"Fehlermeldung ausgeben!if l_attr_found = rs_c_false.MESSAGE e003(ywghr_messages_001) with l_attr.
ELSEIF l_iobj_found = rs_c_false.MESSAGE e002(ywghr_messages_001) with l_iobjnm.
Anhang
else.CALL FUNCTION 'RSD_FIELDINFO_GET_FOR_IOBJ'EXPORTINGI_IOBJNM = l_iobjnm
IMPORTINGE_FIELDNM = l_iobj_fieldnm
EXCEPTIONSNAME_ERROR = 1IOBJ_NOT_FOUND = 2OTHERS = 3.
"Dynamische where-Bedingungen aufbauenCONCATENATE l_iobj_fieldnm '=' '''' into l_whereSEPARATED BY space.CONCATENATE l_where l_iobj_filter_value '''' into l_where.
create data l_t_data type TABLE OF (l_ptabelle).
if sy-subrc = 0.DO 5 TIMES. "Im Falle einer Sperre -> bis zu 5 mal wiederholen"Update attribute YASTATUS of YSTSINDCALL METHOD cl_rsdmd_update_master_data=>update_attribut
es_staticEXPORTINGi_iobjnm = l_iobjnmi_t_data = <l_t_fields>i_s_minfo = l_s_minfoi_monitoring = ' '
IMPORTINGe_subrc = l_subrc
CHANGINGc_t_idocstate = l_t_idocstate
EXCEPTIONSiobj_not_found = 1generate_program_error = 2
37 FIVE1 GmbH & Co. KG Essence of quality
create data l_t_data type TABLE OF (l_ptabelle).assign l_t_data->* to <l_t_fields>.if sy-subrc <> 0.MESSAGE e000(ywghr_messages_001) with 'Fehler.'.RETURN.
endif.select * into table <l_t_fields> from (l_ptabelle)where (l_where).
loop at <l_t_fields> ASSIGNING <l_s_fields>.ASSIGN COMPONENT l_attr_fieldnm of structure <l_s_fields>to <l_field>.if sy-subrc <> 0.MESSAGE e004(ywghr_messages_001) with l_attr_fieldnm.exit.
endif.<l_field> = l_attr_filter_value.
ENDLOOP.
generate_program_error = 2OTHERS = 3.
if l_subrc = 0 and ( sy-subrc <> 0 or l_t_idocstate is not INITIAL ).if sy-subrc = 0.l_subrc = 4.
else.l_subrc = sy-subrc.
endif.endif.IF l_subrc <> 0.WAIT UP TO 3 SECONDS.
ELSE.EXIT.
ENDIF.ENDDO.
Anhang
CASE l_subrc.WHEN 0.WHEN 1.l_message_text ='Error: Could update the status attribute: InfoObject not found!'.message e000(ywghr_messages_001) with l_message_text.return.
WHEN 2.l_message_text = 'Error: Could update the status attribute: Erro
r when generating master data routines!'.message e000(ywghr_messages_001) with l_message_text.return.
WHEN 4.l_message_text = 'Error: Invalid data in infoobject YSTSIND: c
heck records of table rsarr_t_idocstate'.
*************************************************************************** Activate master data**************************************************************************
CALL FUNCTION 'RSDDS_ATTRIBUTES_ACTIVATE'EXPORTINGi_chabasnm = l_chanm
EXCEPTIONSattr_in_aggr = 1inherited_error = 2OTHERS = 3.
CASE sy-subrc.WHEN 1."Error handling attr_in_aggr
38 FIVE1 GmbH & Co. KG Essence of quality
heck records of table rsarr_t_idocstate'.message e000(ywghr_messages_001) with l_message_text.return.
WHEN OTHERS.l_message_text = 'Error: Could update the status attribute: OT
HERS!'.message e000(ywghr_messages_001) with l_message_text.return.
ENDCASE.
"Error handling attr_in_aggrWHEN 2."Error handling inherited_error
WHEN 3."Error handling others
ENDCASE.
commit work.
endif.endif.
endif.endif.
endmethod.
FIVE1 Kontakt
39 FIVE1 GmbH & Co. KG Essence of quality
FIVE1 GmbH & CO. KGAltrottstraße 31D-69190 Walldorf
T: +49 6227 73 28 40E: [email protected]
FIVE1 GmbH & CO. KGAltrottstraße 31D-69190 Walldorf
T: +49 6227 73 28 40E: [email protected]
Sven ZechSolution ArchitectSven ZechSolution Architect
FIVE1 GmbH & CO. KGAltrottstraße 31D-69190 Walldorf
T: +49 6227 73 28 40E: [email protected]
Sven ZechSolution Architect
Alle Rechte vorbehalten Weitergabe und Vervielfältigung dieser Publikation oder von Teilen daraus sind, zu welchem Zweck und in welcher Form auchimmer, ohne die ausdrückliche schriftliche Genehmigung durch die FIVE1 GmbH Co. KG nicht gestattet. Die in dieser Publikationenthaltenen Informationen können ohne vorherige Ankündigung geändert werden.
SAP, SAP ERP, R/3, SAP BI, SAP NetWeaver, Business ByDesign, Business All-in-One und weitere im Text erwähnte SAP-Produkte und-Dienstleistungen sowie die entsprechenden Logos sind Marken oder eingetragene Marken der SAP AG in Deutschland undanderen Ländern weltweit. Alle anderen Namen von Produkten und Dienstleistungen sind Marken der jeweiligen Firmen. DieAngaben im Text sind unverbindlich und dienen lediglich zu Informationszwecken. Produkte können länderspezifischeUnterschiede aufweisen.
Die in dieser Publikation enthaltene Information ist Eigentum der FIVE1 GmbH Co. KG. Weitergabe und Vervielfältigung dieserPublikation oder von Teilen daraus sind, zu welchem Zweck und in welcher Form auch immer, nur mit ausdrücklicher schriftlicherGenehmigung durch die FIVE1 GmbH Co. KG gestattet.
Bei dieser Publikation handelt es sich um eine vorläufige Version, die nicht Ihrem gültigen Lizenzvertrag oder anderenVereinbarungen mit der FIVE1 GmbH Co. KG unterliegt. Diese Publikation enthält nur vorgesehene Strategien, Entwicklungen undFunktionen. FIVE1 GmbH Co. KG entsteht aus dieser Publikation keine Verpflichtung zu einer bestimmten Geschäfts- oderProduktstrategie und/oder bestimmten Entwicklungen. Diese Publikation kann von der FIVE1 GmbH Co. KG jederzeit ohne
Copyright 2010 FIVE1 GmbH & Co. KG
40 FIVE1 GmbH & Co. KG Essence of quality
Produktstrategie und/oder bestimmten Entwicklungen. Diese Publikation kann von der FIVE1 GmbH Co. KG jederzeit ohnevorherige Ankündigung geändert werden.
Die von FIVE1 GmbH Co. KG, deren Vertriebs- oder Tochterfirmen angebotenen Softwareprodukte könnenSoftwarekomponenten auch anderer Softwarehersteller enthalten.
Die FIVE1 GmbH Co. KG übernimmt keine Haftung für Fehler oder Auslassungen in dieser Publikation. Des Weiteren übernimmt dieFIVE1 GmbH Co. KG keine Garantie für die Exaktheit oder Vollständigkeit der Informationen, Texte, Grafiken, Links und sonstigenin dieser Publikation enthaltenen Elementen. Diese Publikation wird ohne jegliche Gewähr, weder ausdrücklich nochstillschweigend, bereitgestellt. Dies gilt, aber nicht ausschließlich, hinsichtlich der Gewährleistung der Marktgängigkeit und derEignung für einen bestimmten Zweck sowie für die Gewährleistung der Nichtverletzung geltenden Rechts.
Die FIVE1 GmbH Co. KG haftet nicht für entstandene Schäden. Dies gilt u. a. und uneingeschränkt für konkrete, besondere undmittelbare Schäden oder Folgeschäden, die aus der Nutzung dieser Materialien entstehen können. Diese Einschränkung gilt nichtbei Vorsatz oder grober Fahrlässigkeit.
Die gesetzliche Haftung bei Personenschäden oder Produkthaftung bleibt unberührt. Die Informationen, auf die Siemöglicherweise über die in diesem Material enthaltenen Hotlinks zugreifen, unterliegen nicht dem Einfluss der FIVE1 GmbH Co.KG. FIVE1 GmbH Co. KG unterstützt nicht die Nutzung von Internetseiten Dritter durch Sie und gibt keinerlei Gewährleistungenoder Zusagen über Internetseiten Dritter ab.
Bildquellen, Copyright: FIVE1 GmbH Co. KG