Seit dem Launch des Rapid Report Generator for SAP Fiori® konnten wir bereits einiges an Feedback sammeln. Wir versuchen stets, die diversen Rückmeldungen in die nächsten Releases einzuarbeiten und entsprechende Features anzubieten.
Derzeit arbeiten wir am nächsten, erweiterten Release des Report Generators. Um die Zeit bis dorthin zu verkürzen, gibt’s bereits jetzt schon einen kleinen Vorgeschmack auf eines der neuen Features, nämlich dem Speichern und Teilen von Varianten.
Customizing Einstellungen: RRG Version 1.0
Derzeit kann man mit dem RRG diverse Einstellungen für die Ausgabelisten vornehmen. Beispielsweise können Ausgabelisten und Filter beliebig beeinflusst werden, indem etwa Spalten ausgeblendet oder umgereiht werden oder Filter aus- oder eingeblendet werden . Außerdem kann man Spalten „freezen“, die somit beim Scrollen fixiert sind, Gruppierungen erstellen, oder Daten auf- und absteigend sortieren.
Lediglich das Speichern dieser Einstellungen als Varianten wird mit der derzeitigen Version noch nicht unterstützt. Das soll mit der kommenden Version ermöglicht werden.
Varianten – erweiterte Möglichkeiten: RRG Version 1.1
Ab dem nächsten Release können diese Layouteinstellungen als Variante gespeichert werden. Jeder Anwender kann sich seine eigenen Varianten anlegen. Man kann diese Varianten aber auch mit den anderen Anwendern teilen.
Das inkludiert alle Einstellungen im Bereich Filter, Ausgabelisten und der Charts.
Die SAP HANA Datenbank bietet mit der FUZZY Funktion eine fehlertolerante Textsuche. Während diese Suche für Fiori Applikationen relativ einfach über CDS-Annotations aktiviert werden kann, muss man für ABAP SQL oder ABAP ein paar Objekte anlegen und ein wenig programmieren.
ABAP CDS Fuzzy Search Annotations
ABAP
1
2
3
4
5
6
7
8
@Search.searchable:true
define…
{
@Search.defaultSearchElement:true
@Search.fuzzinessThreshold:0.7
@Search.ranking:#HIGH
...
}
Der Rapid Report Generator – RRG – kann neben ALV Reports auch CDS Views und ABAP Klassen als Datenquelle verwenden. Damit ergeben sich zwei Möglichkeiten eine Fuzzy Suche in RRG Reports anzubieten. In diesem Post schauen wir uns die AMDP Variante an.
AMDPs – ABAP Managed Database Procedures
AMDP bieten die Möglichkeit, SAP HANA Features zu verwenden, die nicht über openSQL/ABAP SQL bereitgestellt werden (z.B. Fuzzy-Suche). Sie sind also eine Erweiterung des bekannten EXEC_SQL. Da AMDP als Methoden in globalen Klassen implementiert sind, können sie auch aus jedem ABAP Coding aufgerufen werden.
Im RRG kann man ABAP Coding über den Report Typ ABAPCLASS einbinden.
Bei diesem Report Typ erfolgt die Datenbeschaffung über das Interface /CADAXO/IF_UI38_TYPE_ABAPCLASS. Wir erstellen also eine Klasse mit diesem Interface und legen den Report an.
Methode EXECUTE_QUERY
Wir verwenden dafür die vorhandene Klasse aus dem Post, ergänzen sie um das Interface und implementieren die Methode /cadaxo/if_ui38_type_abapclass~execute_query.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
CLASS/cadaxo/cl_ui38_dmo_order_amdp DEFINITION
PUBLIC
FINAL
CREATE PUBLIC.
PUBLICSECTION.
INTERFACES/cadaxo/if_ui38_type_abapclass.
INTERFACES if_amdp_marker_hdb.
TYPES:ty_orders TYPE STANDARD TABLE OF/CADAXO/UI38D_Demo_Orders WITH DEFAULTKEY.
Wir holen uns den eingegebenen Suchbegriff aus dem Filterfeld für Name, rufen die AMDP Methode search_orders( ) auf und liefern das Ergebnis an das RRG Framework.
RRG Report
Mit der Transaktion /CADAXO/UI§(_ADMIN legen wir den RRG Report SEARCH_ORDERS_FUZZY mit dem Typ ABAPCLASS an. Als Result Structure verwenden wir /CADAXO/UI38D_Demo_Orders und als ABAP Klasse natürlich /CADAXO/CL_UI38_DMO_ORDER_AMDP.
Die wichtigsten Einstellungen erfolgen bei den Feldern. Hier muss im Bereich Filter Fields der Feld Name als filterbar gekennzeichnet werden. Weiters macht es Sinn den Filter als Pflichtfeld zu definieren und nur einen Einzelwert zuzulassen.
Ergebnisliste
Wir haben jetzt einen Fiori List Report mit fehlertoleranter Suche nach Kundennamen – implementiert in einer ABAP Managed Database Procedure.
ABAP CDS Table Functions – AMDPs für CDS
Mit CDS Table Functions können AMDPs als Datenquelle von CDS Views dienen. Diese können dann in openSQL/ABAP SQL Queries verwendet werden. Ein Post hierzu folgt demnächst! Stay tuned 😉
Links
Hier eine kleine Sammlung an relevanten und nützlichen Links zu diesem Thema:
Ein Bild sagt bekanntlich mehr als 1000 Worte. Ein Chart kann zur Verdeutlichung von Trends oder Besonderheiten, die sonst nur schwer ersichtlich wären, beitragen. Mit dem Rapid Report Generator kann jeder Report zusätzlich oder ausschließlich einen Chart ausgeben.
Wir wollen nun den Report aus dem Blogpost RRG – Neuer Report in 3:30 Minuten um die Ausgabe eines Charts erweitern. Ich verzichte hier auf eine Stoppuhr da wir in weniger als einer Minute zu einem Ergebnis kommen werden. Versprochen!
Aktivieren der Chartausgabe
Wir starten wieder in der Rapid Report Administration. Die Ausgabe eines Charts wird ganz einfach durch das Setzen der entsprechenden Checkbox aktiviert:
Ein paar Detailerklärungen:
Output Chart – Damit wird die Ausgabe eines Charts für den Report generell aktiviert
Default Chart Type – Das ist der initiale Chart Type bei der Ausgabe. In diesem Beispiel haben wir uns für Bar entschieden.
Chart Selection – Wenn diese Einstellung aktiviert ist, kann der Anwender den Chart Type zur Laufzeit wechseln.
Details Button – Bei dieser Einstellung kann zur Laufzeit ein Details Button zur Detailanzeige von selektierten Chartelementen verwendet werden.
Breadcrumbs for Dimension – Dadurch wird die Dimension in Form von Breadcrumbs anstatt eines DropDown Feldes ausgegeben.
Initiale Spalten für Dimension und Measure
Ein Chart benötigt immer zumindest jeweils eine Spalte für die Dimension und einen Messwert. Diese Spalten können bereits in den Reporteinstellungen eingestellt werden. Wenn diese Einstellungen nicht vorbelegt werden, muss der Anwender zur Laufzeit die Spalten selektieren.
Alle Spalten des Reports stehen automatisch abhängig vom Typ als Dimension oder Measure Felder zur Verfügung. Im konkreten Fall haben wir die CARRID als Dimension und das Feld SEATSMAX als Measure aktiviert. Schauen wir uns mal das Ergebnis des Reports an.
Wie eingangs versprochen haben wir in unter einer Minute ein ansprechendes Ergebnis. Der Anwender kann nun noch einige Anpassungen in der Ausgabe vornehmen.
Ändern von Measure oder Dimension
Die Messwerte bzw. Dimensionen können im Chart über die Einstellungsfunktionen jederzeit geändert werden. So können auch mehrere Dimensionen oder Messwerte in einem Chart verwendet werden. Im nachfolgenden Beispiel wurden z.B. Airline und Plane Type als Dimension und 3 Spalten als Messwert verwendet.
Ändern des Chart Types
Wenn die Änderung des Charts erlaubt wurde, stehen dem Anwender eine Fülle weiterer Charttypen zur Verfügung.
Layout Liste & Chart
Wenn eine Liste gemeinsam mit einem Chart ausgegeben wird, können im oberen Bereich 6 Darstellungslayouts selektiert werden.
Die Buttonleiste hat folgende Bedeutung:
Table only – Es wird nur die Ergebnisliste ausgegeben
Chart only – Es wird nur der Chart ausgegeben
Chart/Table vertical – Ausgabe in Form von Chart oben, Tabelle unten
Table/Chart vertical – Ausgabe in Form von Tabelle oben, Chart unten
Table/Chart horizontal – Ausgabe in Form von Tabelle links, Chart rechts
Chart/Table horizontal – Ausgabe in Form von Chat links, Tabelle rechts
Nachfolgend Beispiele für alle genannten Darstellungsvarianten:
Sichern als PNG
Charts können mit der Funktion Download Chart jederzeit als PNG Datei gesichert werden. Es wird nur der sichtbare Teil in die PNG Datei exportiert. Es sollte daher darauf geachtet werden, dass der gesamte Chart sichtbar ist.
In den nächsten 3:30 Minuten werden wir einen neuen Report für den Rapid Report Generator anlegen. Mit Filter. – Wir werden uns die wirklich notwendigen Schritte und Einstellungen ansehen.
Die Rapid Report Administration wird mit der Transaktion /CADAXO/UI38_ADMIN aufgerufen. Das ist zugleich auch die einzige Transaktion, die man sich merken sollte – alle anderen Einstellungen erreicht man über diese zentrale Stelle. Für die Interessierten unter uns – UI38 ist unser interner Projektname. In Anlehnung an SE38 bzw. TM38.
00:10 – Anlegen eines neuen Reports
Aktuell können bereits Reports mit 4 verschiedenen Datenquellen angelegt werden: SELECT, STDALV, SAPQUERY und ABPACLASS. In unserem Beispiel legen wir einen SELECT Report auf die berühmt (berüchtigte) SFLIGHT an:
1
Anlegen eines neuen Reports über das KontextmenüReports oder über den Button Report.
2
Als Reportname wählen wir hier Z_DEMO_SFLIGHT und als Report Type selektieren wir SELECT.
3
Im Detailscreen des neuen Reports müssen zumindest die GOLD markierten Einstellungen vorgenommen werden.
3.1
Die Ergebnisstruktur in Result Structure kann (muss aber nicht) gleich wie die Struktur in Data Type sein. Die Übertragung erfolgt via CORRESPONDING (=Namensgleiche Felder). Nur aktive Reports können in der Fiori App verwendet werden.
3.2
Die Ergebnislisten können in 3 verschiedenen Ausgabeformen dargestellt werden (Responsive, Grid, Analytical). Wir wählen RESPONSIVE, da diese auf allen Devices optimal gerendert wird.
3.3
Reportname vergeben – Jeder Report benötigt einen Titel. Titel können natürlich auch mehrsprachig gepflegt werden.
3.4
Wichtig – Sichern nicht vergessen
01:00 – Test des Reports im RRG-Launchpad
Sofern man als Anwender genügend Berechtigungen besitzt, sollte der neue Report bereits im RRG-Launchpad zur Verfügung stehen. Mit F5 machen wir einen Refresh im Browser.
Wir können den Report bereits auswählen und sogar starten.
Nicht schlecht. Gerade einmal eine Minute und wir haben schon einen RRG Report im Launchpad. Jetzt wollen wir noch ein paar wichtige Ergänzungen vornehmen.
01:30 – Filterbare Felder definieren
Mit Hilfe der Feldeinstellungen können viele verschiedene Anpassungen für den Report und speziell für die Ergebnisliste vorgenommen werden. An dieser Stelle beschränken wir uns auf ein paar filterrelevante Einstellungen. Zwei Felder sollen filterbar werden.
1
Feld CARRID 1.Filterable aktivieren 2.Mandatory aktivieren 3. Filter Position auf 1
2
Feld CONNID 1.Filterable aktivieren 2.Filter Position auf 2 3.Filter Exclude aktivieren
3
Sichern nicht vergessen
Durch diese Einstellungen sollten für die Felder Airline (CARRID) und Flight Number (CONNID) nun ein Filter zur Verfügung stehen. Airline ist wie gewünscht ein Pflichtfeld und Flight Number ist initial ausgeblendet, kann aber zur Laufzeit durch den Anwender eingeblendet werden. Mal sehen ob das Ergebnis passt, also zurück in den RRG Report. Refresh mit F5 nicht vergessen.
02:30 – Test der Filter im RRG-Launchpad
Oha – siehe da, es kann schon nach Airline gefiltert werden. Und wie eingestellt ist es ein Pflichtfeld. Zum Test geben wir AA (American Airlines) ein und starten den Report mit Start bzw. Go – falls der Report in Englisch aufgerufen wurde.
Perfekt! Der initial ausgeblendet Filter für die Flight Number kann über Filter anpassen bzw. Adapt Filter eingeblendet und verwendet werden.
03:00 – Zurücklehnen und staunen
Es sind jetzt ca. 3:00 Minuten vergangen und wir haben einen fix fertigen Report welcher ungeschaut produktiv gesetzt werden kann. Anstatt der SFLIGHT kann hier jede beliebige Tabelle, DB View, CDS View oder AMDP Tablefunktion verwendet werden.
03:30 – Zusätzliche Einstellungsmöglichkeiten
Das Grundgerüst ist geschafft. Jetzt kann der Report durch die verschiedensten Einstellungsmöglichkeiten an die gewünschten Bedürfnisse angepasst werden:
Der Rapid Report Generator for SAP Fiori® – RRG – bietet mehrere Möglichkeiten Suchhilfen für Filterfelder bereitzustellen. Dazu muss zunächst die RRG-Suchhilfe im RRG definiert und entsprechend ihres Typs konfiguriert werden. Dann kann die RRG-Suchhilfe jedem passenden Feld in jedem RRG-Report zugewiesen werden. Felder können auch mehrere RRG-Suchhilfen besitzen.
1. Suchhilfe definieren
RRG-Suchhilfen werden in der Admintransaktion definiert und bearbeitet.
Bei der Anlage muss ein eindeutiger Name und einer dieser Typen von RRG-Suchhilfen gewählt werden:
Domain Values
Elementare Suchhilfe (SE11)
View
Die Konfiguration der RSuchhilfe ist natürlich typabhängig.
Domain Values
Für Domain Values muss die Domäne definiert werden.
Elementare Suchhilfe
Neben der SAP-Suchhilfe muss auch genau ein Feld aus den Suchhilfeparametern ausgewählt werden. Der Wert dieses Feldes wird dann von der RRG-Suchhilfe zurück geliefert.
Alle Felder aus dem Suchhilfeergebnis
Hinweis: Es kann JEDES Felder der SAP-Suchhilfeergebnislist verwendet werden, nicht nur welche, die als EXPORT-Parameter definiert sind!
View
Als Datasource können die folgenden Objekte verwendet werden:
Tabelle
DB-View (SE11)
CDS View/Entity
2. Suchhilfe den Feldern zuordnen
Eine RRG-Suchhilfe kann jedem filterbaren Feld in jedem Report zugeordnet werden. Ein Feld kann auch mehrere RRG-Suchhilfen haben.
In der App kann dann zwischen den RSuchhilfen gewechselt werden.
Mitten in der S/4HANA Einführung kommen die Anforderungen aus dem Fachbereich. „Wir brauchen aber die Lagerstandsauswertung XY nach VKORG unbedingt auch. Ohne der können wir nicht arbeiten.“ Verständlich, denn die Mitarbeiter beschäftigen sich jetzt intensiv mit dem neuen System und versuchen ihre bestehenden Prozesse nachzuspielen.
Aber da fehlt jetzt was. Klar, die bestehenden Auswertungen und Listen, die in jedem alten R/3 System vorhanden sind. Ohne sie wird der weitere Prozess schwierig.
Aber das Projekt ist bereits in vollem Gange, die Aufwände sind budgetiert und die Ressourcen eingeteilt. Klar, man will immerhin rechtzeitig fertig werden.
Und der Druck wird größer. Auch wenn man im neuen System vielleicht eine andere Herangehensweise an die Prozesse hat, die Leute aus dem Fachbereich wollen dennoch eine gewisse Stabilität. Vielleicht wird man einige dieser Listen im Laufe der Zeit wieder los – vielleicht aber auch nicht. Jedenfalls jetzt – kurz vor GoLive – wo alle nervös sind und die Lage angespannt ist, ist der falsche Zeitpunkt dafür. Also werden die wichtigsten dieser Reports in die neue Fiori Oberfläche übertragen.
Aber wer kennt sich genau aus, wie der Report funktioniert? Wie die Daten gelesen werden? 3000 Zeilen Spaghetti Code aus dem Jahre 1998 wollen auch erst einmal neu gebaut werden.
Mit etwas Customizing wird der Report einfach in eine moderne Fiori Applikation verwandelt.
Die Logik der Datenbeschaffung bleibt im Report. Der Selektionsbildschirm und die Ergebnisliste werden transformiert.
Die Navigation in Business Objekte kann auch durch Fiori Links ersetzt werden.
Auch der „Warenausgang“ kann gebucht werden. Sowie beliebige andere Aktionen können ausgeführt werden.
UI38 (so war unser interner Arbeitstitel) kann aber noch viel mehr. Sie haben eine zentrale Stelle, um auch neue Reports anzulegen. Egal ob CDS View basiert, oder in Methoden ausprogrammiert, mit simplem Customizing bekommen Sie diese schnell und einfach in Ihr Fiori Launchpad. Die Arbeit des Rapid Report Generators ist also mit der Einführung noch nicht zu Ende. Im Gegenteil, er ist das zentrale Tool, um Informationen aus dem ERP System schnell an die gesamte Belegschaft zu übermitteln!
Fazit
Unserer Erfahrung nach gibt es diese absolut notwendigen Reports in jedem Unternehmen. Mal sind es 7, mal 100 Listen. Das ist von Unternehmen zu Unternehmen unterschiedlich. Mit dem Rapid Report Generator bekommen Sie diese, unabhängig von der Anzahl, in kürzester Zeit in die Fiori Oberfläche. Somit sparen Sie jede Menge Zeit und kostbare Nerven bei der Integration und können sich um die wesentlichen Dinge kümmern!
Ein SAP-System besteht traditionell aus einer sehr, sehr großen Anzahl von SAPGui basierten Reports. Die Bandbreite reicht hier von einfachen List-Reports bis hin zu komplexen interaktiven Reports, quer über alle SAP-Module hinweg. Diese Reports sind entweder durch die SAP zur Verfügung gestellt oder wurden durch SAP-Kunden ergänzt.
Es gibt mehrere Ideen und Möglichkeiten diese traditionellen Reports im SAP Fiori Launchpad zu verwenden. In diesem Blog zeige ich, wie wir das mit Hilfe einer SAP-Transaktion via SAPGui for HTML realisieren können.
Ich beschränke mich hier auf die notwendigen Schritte und Einstellungen. Gute Beschreibungstexte, schöne Icons und auch spezielle Launchpad/Rollen Einstellungen überlasse ich eurer Fantasie.
In diesem Bespiel wollen wir den Demo Report BCALV_FULLSCREEN_DEMO im Launchpad anzeigen, daher verwende ich fast durchwegs auch diesen Namen in IDs oder sonstigen Bezeichnungen. So sieht der Report im SAP Gui aus:
Anlage Transaktionscode
Wenn noch nicht vorhanden, legen wir zuerst einmal einen Transaktionscode für den Report an:
Anlage semantisches Objekt
Für das spätere Mapping im Fiori Catalog verwenden wir ein semantisches Objekt. Die Anlage solcher semantischen Objekte erfolgt mit der Transaktion /UI2/SEMOBJ.
Das semantische Objekt sollte mit Z oder Y beginnen, die restlichen Angaben können frei gewählt werden.
Anlage des neuen Fiori Katalogs
Ich verzichte in dieser Demo auf die Erstellung einer Fiori Gruppe da dies für das Beispiel nicht notwendig oder hilfreich ist. Aber wir benötigen zumindest einen Katalog. Es kann natürlich auch ein bestehender Katalog verwendet werden.
Falls jemand fragt, ob diese umständliche Anwendung tatsächlich das zentrale Tool für diese Definitionen ist – ja, leider!
Im Launchpad Customizing erstellen wir nun in der Katalogübersicht einen neuen Katalog:
Anlegen Target Mapping
Für die zuvor angelegte Transaktion legen wir nun das Targetmapping an. Wir verknüpfen hier nun die Transaktion mit dem semantischen Objekt. Folgende Angaben sind zu machen:
– Semantic Object: Z_BCALV_FULLSCREEN_DEMO
– Action: display (z.B. es kann auch eine andere Action gewählt werden)
– Application Type: Transaction
– Transaction: Z_BCALV_FULLS_DEMO
Anlegen Tile
Jetzt folgt der letzte Schritt im Launchpad Customizing. Die Anlage eines Tiles mit der Verknüpfung zum semantischen Objekt. Notwendige Angaben sind:
– Title: sinnvoller Name
– Use semantic object navgation: true
– Semantic Object: Z_BCALV_FULLSCREEN_DEMO
– Action: display (bzw. die gewählte action)
Rollenpflege (PFCG)
Der Katalog muss einer Rolle und die Rolle dem User zugeordnet werden. Diese Einstellungen sind auch nicht Ziel dieses Blogs. Der Part wird normalerweise durch einen Basis- bzw. Berechtigungsadministrator vorgenommen werden. In wenigen Worten:
Anlage/Pflege Rolle
Anlage Transaction SAP Fiori Tile Catalog
Catalog wählen
User zuordnen. Ggf. Gruppe zuordnen.
Report aufrufen
Wenn der Report nur via Katalog dem User zugeordnet wurde, sollte dieser über den App Finder auffindbar sein. Wenn auch eine Gruppe verwendet wurde, sollte der Report beim User bereits beim Einstieg ins Launchpad sichtbar sein.
Report Ergebnigs im Launchpad
Wenn alles korrekt vorgenommen wurde, sollte der Report nun erfolgreich gestartet werden können und das Ergebnis sollte wie folgt aussehen:
Fazit
Eine SAP-Transaktion und somit auch ein Report kann relativ einfach ins SAP Fiori Launchpad eingebunden werden. Der Aufwand ist überschaubar und das Ergebnis kann sich sehen lassen.
Natürlich unterliegt diese Lösung einigen Einschränkungen, die bedacht werden sollten:
– Darstellung in neuem Browser Tab, keine „saubere“ Integration im Launchpad
– Kein Fiori Design
– Key User Extensibility wird nicht unterstützt
– Nicht Responsive – Nicht optimierte Darstellung für Tablets oder Mobile Phones
Alternative – Rapid Report Generator
Wir haben mit dem Rapid Report Generator ein Tool entwickelt, welches bei der Integration von klassischen SAP Reports im SAP Fiori Launchpad bzw. im SAP Fiori Design behilflich ist. Der Rapid Report Generator verwendet ebenfalls den Original Report, rendert die Inhalte jedoch via SAP Fiori Smart Controls zu 100% im SAP Fiori Design und bietet alle SAP Fiori Vorteile.
We use cookies on our website to give you the most relevant experience by remembering your preferences and repeat visits. By clicking “Accept All”, you consent to the use of ALL the cookies. However, you may visit "Cookie Settings" to provide a controlled consent.
This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary cookies are absolutely essential for the website to function properly. These cookies ensure basic functionalities and security features of the website, anonymously.
Cookie
Dauer
Beschreibung
cookielawinfo-checkbox-analytics
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics".
cookielawinfo-checkbox-functional
11 months
The cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional".
cookielawinfo-checkbox-necessary
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary".
cookielawinfo-checkbox-others
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other.
cookielawinfo-checkbox-performance
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Performance".
viewed_cookie_policy
11 months
The cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data.
Functional cookies help to perform certain functionalities like sharing the content of the website on social media platforms, collect feedbacks, and other third-party features.
Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.
Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics the number of visitors, bounce rate, traffic source, etc.
Advertisement cookies are used to provide visitors with relevant ads and marketing campaigns. These cookies track visitors across websites and collect information to provide customized ads.