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?
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....
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
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*
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.
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
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...
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.