Javascript Variable im ABAP Code?

BusinessServerPages; Erstellung von Webapplikationen.

Javascript Variable im ABAP Code?

Postby Domenik4906 » Thu Sep 07, 2006 3:22 pm

hallo,

ich möchte eine schleife basteln, welche jedesmal ein Select macht.

es soll folgendermassen aussehen:

while( mandantnr > x )
{
<% select * from CRMD_ORDERADM_H CLIENT SPECIFIED into table myactions where changed_by = 'user' and mandant='mandant[x]'.%>
x++

}

dabei ist mandant[x] ein Feld welches im js-Teil gefüllt wird.
kann ich die beiden Ebenen kombinieren?

danke!
Domenik4906
..
..
 
Posts: 21
Joined: Mon Sep 04, 2006 10:13 am

Postby Emre397 » Thu Sep 07, 2006 4:24 pm

Hallo,
so wie es aktuell da steht nicht.
der JS Teil wird erst beim user ausgeführt. Wohingehend der abapteil schon vom webas gerendert wurde.

was genau möchtest du denn machen?
ich würde die tabelle myactions vorbereiten und gefüllt vom JS auswerten lassen.

gruß Aze
Emre397
...
...
 
Posts: 141
Joined: Mon Dec 09, 2002 1:53 pm

Postby Domenik4906 » Fri Sep 08, 2006 9:03 am

Genau da liegt mein Problem:

Ich muss für alle Mandanten ( ca. 20 ) jeweils eine eigene Liste erstellen.
Und diese sollen mit eigenem Kopf ausgegeben werden.

Also muss ich auch bei jedem durchlauf die passende Liste für den aktuellen Mandanten parat haben.
Mit dem schreiben der Liste habe ich dann kein Problem - mein Problem ist die dynamische Zuordnung des aktuellen Mandanten, also:

<% select * from CRMD_ORDERADM_H CLIENT SPECIFIED into table myactions where changed_by = 'user' and mandant='mandant[x]'.%>

das 'x' soll bei jedem Schleifendurchgang die ID den nächsten Mandanten erhalten.

Ich könnte das Ganze natürlich statisch lösen und kurz mal 2000 zeilen Code produzieren. Da ist die Schleifenlösung eindeutig die bessere - wenn diese Kleinigkeit nicht wäre....
Domenik4906
..
..
 
Posts: 21
Joined: Mon Sep 04, 2006 10:13 am

Postby Emre397 » Fri Sep 08, 2006 9:49 am

morgen!

dann würd ich dir doch folgendes vorschlagen.
1. den select im backend durchführen und die tabelle myactions befüllen.
2. folgendes coding beim java script:

<%
Field-symbols: <fs_actions> like line of my_actions.
data: myactions_2 like myactions.

loop at myactions assigning <fs_actions> where changed_by eq 'user' mandant='mandant[x].
append <fs_actions> to myactions_2.
endloop.
%>

Sprich: Datenaufbereitung am UI per loop in eine zweite tabelle, die dann entsprechend angezeigt wird.

Es gibt hierbei sicherlich noch performantere lösungen... aber die challange überlass ich dir ;)

gruß Aze
Emre397
...
...
 
Posts: 141
Joined: Mon Dec 09, 2002 1:53 pm

Postby Domenik4906 » Fri Sep 08, 2006 10:42 am

danke für den Vorschlag.
Doch sehe ich darin das gleiche Prob wie in meinem Ansatz.
Du hast weiterhin das JS-Feld 'Mandanten[x]' innerhalb vom Abap-Code:

loop at myactions assigning <fs_actions> where changed_by eq 'user' mandant='mandant[x].

würde das so funktionieren wäre ich schon lange fertig :=)
Dennoch ist deine Lösung performanter da ich mir die ganzen DB-Selects erspare.
Der Weg ist das Ziel *g*
Domenik4906
..
..
 
Posts: 21
Joined: Mon Sep 04, 2006 10:13 am

Postby Emre397 » Fri Sep 08, 2006 11:03 am

tja... netter versuch - sorry: hatte heut erst einen kaffee ;)

wenn du mehrer roundtrips verhindern möchtest dann kannst du die tabelle aufbereiten und den loop per java script realisieren. (ziemlich umständlich)

alternativ könntest du alles im backend selectieren und vorab rendern - alle tabellen. zusätzlich könntest du alle ergebnise per CSS auf visibla=false setzten. somit sind diese unsichtbar. und per java script die einzelnen stellen auf visible setzten.

oder und ich denke, daß ich die einfachste alternative: du machst einen roundtrip bei jeder auswahl vom mandanten und jeweils einen seperaten select.

wieviele datensätze werden da selektiert?

gruß Aze
Emre397
...
...
 
Posts: 141
Joined: Mon Dec 09, 2002 1:53 pm

Postby Domenik4906 » Fri Sep 08, 2006 11:43 am

Circa 4000. bei einem Select ist die Performance kein Thema - ich werde mal schauen wie es sich bei 20 verhält.
Ich habe gehofft das es eine Möglichkeit gibt Daten umzuwandeln ala. PHP zu JS und umgekehrt.
Damit wäre das Prob sofort aus der Welt.
Dennoch hab ich hier 1-2 nützliche Dinge gelernt. Danke
Domenik4906
..
..
 
Posts: 21
Joined: Mon Sep 04, 2006 10:13 am

Postby Emre397 » Fri Sep 08, 2006 11:50 am

mal so aus neugier weil ich auch gern mal mit php programmier? wie funktioniert es dort?? hast da evt. ein codingbeispiel?
immerhin basiert das doch auf dem gleichen prinzip: du hast auf der einen seite eine serverinterpretierte sprache und dann eine die beim user ausgeführt wird...

gruß Aze
Emre397
...
...
 
Posts: 141
Joined: Mon Dec 09, 2002 1:53 pm

Postby Domenik4906 » Fri Sep 08, 2006 12:07 pm

Hier ist ein Beispiel wie eine PHP-Variable in JS umgewandelt wird:
doktemp ist die JS-Variable.

echo "doktemp = '".$dokstring."';";

leider ist das im Bezug auf ABAP keine Erleuchtung....
Domenik4906
..
..
 
Posts: 21
Joined: Mon Sep 04, 2006 10:13 am

Postby Rafael4284 » Mon Sep 11, 2006 1:43 pm

Ich hab das Problem nicht ganz verstanden.
Sollen die verschiedenen Listen auf einmal ausgegeben werden, oder immer nur einzeln?

Entweder du machst deine Schleife aus dem ersten Beitrag komplett ABAP seitig ohne Javascript oder du machst sowas wie ein Auswahlfeld, mit dem der Mandant ausgewählt werden kann.

Bei ersterem musst du deine Tabelle mit den Mandanten im ABAP als Attribut verfügbar machen und dann über die Tabelle loopen.

Bei zweiterem wird nach einem Do_HANDLE_EVENT eine ABAP Variable mit dem Mandanten befüllt, die in das Select Statement eingebaut ist.
Nach dem Event wird dann automatisch die BSP aufgerufen und deine Ausgabe generiert.

Meines Erachtens sollte sowas eigentlich kein Problem sein.
Rafael4284
.
.
 
Posts: 4
Joined: Fri Sep 08, 2006 9:58 am


Return to BSP + BHTML

Who is online

Users browsing this forum: No registered users and 7 guests