Global Klassen nutzen wie die Anwendungsklasse (möglich?)

BusinessServerPages; Erstellung von Webapplikationen.

Global Klassen nutzen wie die Anwendungsklasse (möglich?)

Postby Nike2689 » Mon Apr 14, 2003 4:08 pm

Hi,

folgendes Problem:
Mit der Anwendungklasse habe ich die Möglichkeit Daten im Layout folgendermaßen zu verarbeiten:

loop at application->it_sflights into wa_sflights.
(Vorraussetzung Daten für it_flights mit einer Methode der Anwendungsklasse bereits selektiert (get_sflights)

Wir möchten die gleiche Funktion mit einer/mehreren Globalen Klassen auch realisieren, weil es doof ist alle Methoden in der Anwendungsklasse zu definieren!!!!!

Wie lässt sich dieses realisieren??
Nike2689
.
.
 
Posts: 8
Joined: Mon Apr 14, 2003 4:08 pm

Postby Walter4536 » Mon Apr 14, 2003 4:47 pm

Hi lemmy,

dat jeht nich (zumindest nicht das ich wüßte), denn genau dafür ist die Anwendungsklasse da (siehe auch F1-Hilfe):
Name einer individuellen ABAP-Klasse, die die Business-Logik einer BSP-Applikation implementiert.

Die Anwendungsklasse dient zum Auslagern der Business-Logik auf eine globale Klassse, mit der ein Zugriff auf Business-Daten z.B. über BAPI-Aufrufe realisiert wird.

Im allgemeinen kann eine solche Klasse auch mehreren BSP-Applikationen zugeordnet werden. (Alle diese Applikationen nutzen dieselbe Business-Logik.)

Wird in diesem Feld eine Anwendungsklasse eintragen, dann kann sie innerhalb der BSP-Applikation direkt referenziert werden. Dann braucht keine Instanz der Anwendungsklasse erzeugt zu werden und der Zugriff auf ihre Komponenten (Methoden, Attribute, Events) kann von jeder BSP-Seite aus direkt erfolgen.


Die Anwendungsklasse muß im selben System existieren und kann nicht über RFC adressiert werden.


Die Anwendungsklasse ist ja selbst definierbar, d.h. wie die Klasse aussieht bleibt einem selbst überlassen. Wenn eine Applikation als 'zustandsbehaftet' gekennzeichnet ist, wird genau eine Instanz (Singleton) der Klasse erzeugt, auf die Du dann zugriff hast von jeder BSP-Seite aus. Diese Klasse enthält quasi Deine komplette Business-Logik für Deine Applikation.

Wenn man das ganze auf mehrere Klassen verteilen möchte, dann bietet sich evtl. an, mit Controllern und Views (entsprechend dem MVC-Paradigma) zu arbeiten.

Gruß,
Steff
Walter4536
...
...
 
Posts: 315
Joined: Mon Dec 02, 2002 12:09 pm

Postby Nike2689 » Tue Apr 15, 2003 11:21 am

Hi Steff,

tja schade und mit dem MVC ist eigentlich gerade das was ich erreichen wollte und zwar die Controller auf verschiedene Klassen zu verteilen, um nicht alle Methoden für die Klassen Mitarbeiter, Kunde, .. in der Anwendungsklasse zu definieren...

Gruss
Lemmy
Nike2689
.
.
 
Posts: 8
Joined: Mon Apr 14, 2003 4:08 pm

Postby Walter4536 » Tue Apr 15, 2003 11:45 am

Hi lemmy,

Es kommt darauf an, was Du machen willst. Wenn Du mit 'Seiten mit Ablauflogik arbeitest', dann kostet Dich das Flexibilität, aber es wird Dir andererseits einiges abgenommen. Dann empfiehlt es sich eine Applikationsklasse zu verwenden.

Wenn Du die Logik auf mehrere Klassen verteilen willst, dann bietet sich an mit Controllern und Views zu arbeiten. Das heißt dann aber, sich konsquenterweise von 'Seiten mit Ablauflogik' zu verabschieden. Dann kannst Du auf die Applikationsklasse verzichten. Du arbeitest ja dann mit Controllerklassen und Models (Klassen die die Daten halten bzw. Methoden zur Datenbeschaffung bereithalten). Das ist genau das was Du suchst (würde ich mal behaupten).
Schau Dir am besten mal die BSP-Applikation 'ITMVC2' an.

Gruß,
Steff
Walter4536
...
...
 
Posts: 315
Joined: Mon Dec 02, 2002 12:09 pm

Re: Global Klassen nutzen wie die Anwendungsklasse (möglich?

Postby Eric408 » Tue Apr 15, 2003 3:11 pm

lemmy hat geschrieben:Wir möchten die gleiche Funktion mit einer/mehreren Globalen Klassen auch realisieren, weil es doof ist alle Methoden in der Anwendungsklasse zu definieren!!!!!


Was Du machen kannst, wäre folgendes: Du erzeugst auf irgendeiner BSP-Seite ein Objekt Deiner Klasse (nicht App-Klasse) und speichert einen Zeiger auf dieses Objekt als Attribut in Deiner Applikationsklasse (type ref to). Das Objekt bleibt somit erhalten und Du kannst von überall innerhalb Deiner Applikation darauf zugreifen. (zB so: <%=application->obj1->name%> ).

Viele Grüße,

Stefan.
Eric408
..
..
 
Posts: 40
Joined: Fri Mar 14, 2003 7:11 pm


Return to BSP + BHTML

Who is online

Users browsing this forum: No registered users and 4 guests