Interne Tab. an nächste Seite übergeben

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

ABAP Web Dynpro, BusinessServerPages; Erstellung von Webapplikationen.
22 Beiträge • Seite 1 von 2 (current) Nächste
22 Beiträge Seite 1 von 2 (current) Nächste

Interne Tab. an nächste Seite übergeben

Beitrag von Gast ( / / 0 / 3 ) »
Hallo Leute,
kann mir von euch einer sagen, wie ich eine int.Tab. beim Seitenaufruf an eine neue Seite übergeben kann?
Ich hab mir die Methode USE_AUTO_SUBMIT_FORM angeschaut u. auch ausprobiert:

IF erg_tab IS NOT INITIAL.
navigation->use_auto_submit_form( ).
navigation->next_page( 'TOLISTE' ).
ELSE.
navigation->next_page( 'TOCHECK' ).
ENDIF.

:roll: Jetzt meine Fragen:
Wie bring ich erg_tab von default.htm auf die nächste Seite liste.htm?
Was für Coding ist dazu auf beiden Seiten nötig?
Oder ist es besser hier mit einem serverseitigem Cookie zu arbeiten?

Danke schon mal vorab!

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Beitrag von C3PO ( / / 0 / 3 ) »
Servus Anja,

würde vorschlagen, dass ganze über eine Applikationsklasse zu machen. Die kannst du selbst anlegen und entsprechende Methoden zur Verfügung stellen, mit denen Du z.B. eine interne Tabelle über mehrere Seiten hinweg halten kannst. Das Coding wäre dann relativ einfach. Bei der Ausgangs-BSP würdest Du im OnInputProcessing-Event die Methode zum Speichern der internen Tabelle aufrufen, z.b.:

Code: Alles auswählen.

application->setmyTable ( mytable ).
Bei der Folgeseite müßtest Du dann über eine entsprechende Methode die interne Tabelle wieder lesen, z.B.:

Code: Alles auswählen.

mytable = application->getmyTable( ).
Zu Informationen hinsichtlich Applikationsklasse siehe hier:

siehe F1-Hilfe zum Feld Applikationsklasse unter 'Eigenschaften' Deiner BSP-Applikation oder hier: (WebApplikationen und BusinessServerPages)

http://help.sap.com/saphelp_webas620sp1 ... ameset.htm

C3PO 8)

Beitrag von Gast ( / / 0 / 3 ) »
Danke für den Tipp mit der Applikationsklasse. Da werd ich mich jetzt erstmal einlesen müssen ...
Mich würde aber trotzdem interessieren wie es mit der Methode use_auto_submit_form funktioniert.
Hat da jemand schon Erfahrung damit?

Beitrag von B707 (ForumUser / 40 / 0 / 0 ) »
also um eine inter tabelle zu übergeben, muss du nicht extra mit der Applikationsklasse arbeiten. du kannst die tabelle, wie jeden parameter auch, mit navigation->set_parameter übergeben.

wichtig ist nur die tabelle auf der zielseite in den seitenattributen zu deklarien. Um tabellen in den seitenattributen deklarieren zu können muss man unter typdefinitionen einen entsprechenden tabellentyp anlegen.

grüße,

stefan.

Beitrag von Gast ( / / 0 / 3 ) »
:? ups, hab ganz vergessen zu erwähnen, daß ich evtl. größere Datenmengen rumschieben darf. Und das geht mit set_parameter aufgrund der http-get-Restriktion nur bis max. 1KB. Bei > 1KB soll man die Methode use_auto_submit_form verwenden (steht jedenfalls im Buch).

Beitrag von B707 (ForumUser / 40 / 0 / 0 ) »
use_auto_submit_form erlaubt Dir die 1kb beschränkung aufzuheben. d.h. Du übergibst mit set_parameter deine tabelle und rufst noch im onInputProcessing die use_auto_submit_form methode auf.
Die Doku hat geschrieben:Diese Methode veranlasst, dass bei der Navigation zu einer Folgeseite kein HTTP-Redirect verwendet wird, sondern stattdessen eine HTML-Seite mit eingebettetem Formular eingesetzt wird. Die zu übergebenden Parameter werden in das Formular als verborgene Felder eingemischt, und das Formular wird direkt nach dem Erhalt im Browser automatisch wieder an die Folgeseite abgeschickt (auto-submit).

Durch diese Methode können Sie die Datenmengebegrenzung bei Query-String-Parametern im Redirect-Fall umgehen. Beachten Sie jedoch, dass Auto-Submit-Formulare in der Browser-Historie zu Problemen führen können und dieser Mechanismus z.B. mit WAP-Devices nicht verwendet werden kann.

Über den Parameter target_frame können Sie steuern, in welchem HTML-Frame (ggfs. neues Browser-Fenster) die Folgeseite zur Anzeige kommen soll.

Beitrag von Gast ( / / 0 / 3 ) »
Das Problem ist nur, daß ich eine Fehlermeldung bekomm, wenn ich die int.Tab. im Eventhandler so an die nächste Seite übergebe:

navigation->set_parameter( 'erg_tab' ).
navigation->use_auto_submit_form( ).
navigation->next_page( 'TOLISTE' ).

... und auf liste.htm als autom. Seitenattribut mit "TYPE structure" deklariere. Fehler: "Tab. erg_tab ist keine int. Tab". Wenn ich sie aber mit DATA als int. Tab. deklariere wird sie ja beim Seitenaufruf gelöscht ...

Wie schick ich also eine int. Tab. an die nächste Seite ohne sie dort als int. Tab. deklarieren zu müssen?
:cry:

Beitrag von B707 (ForumUser / 40 / 0 / 0 ) »
du kannst in den seitenattributen interne Tabellen deklarieren indem du vorher unter Typdefinitionen einen Tabellentyp(!) anlegst und den dann verwendest.

Code: Alles auswählen.

TYPES: BEGIN of t_ProMa,
           Ma_Nr      type string,
           Ma_Name    type string,
       END   OF t_ProMa.
TYPES: tt_ProMa TYPE TABLE of t_ProMa.

Beitrag von Gast ( / / 0 / 3 ) »
Danke für den Tipp mit dem Tabellentyp anlegen. Jetzt hab ich zwar diesen Fehler weg, aber meine int.Tab. wird immer noch nicht an die nächste Seite übergeben. Ich hab jetzt mal meine BSP-Application "stateful" gesetzt, da ich gelesen hab, daß dann die Daten über die gesamte Dauer erhalten bleiben sollen. Aber nützt alles nix ... ich bekomm sie einfach nicht auf meine 2.Seite :-(

Hier mal ein stark gekürzter Ausschnitt meines Coding:

default.htm

OnInputProcessing:

Code: Alles auswählen.

CALL FUNCTION 'GET_DATA_FROM_SAP'

         EXPORTING
             P_DOKNR           =  DOKNR
 
         TABLES
             ERG_TAB           =  ERG_TAB .

IF erg_tab IS NOT INITIAL.
         navigation->set_parameter( 'ERG_TAB' ).
         navigation->use_auto_submit_form( ).
         navigation->next_page( 'TOLISTE2' ).
ENDIF.
Typdefinitionen:

Code: Alles auswählen.

types: begin of z_weblinklist,
                  DOKNR(25) type c,
          end of z_weblinklist.

types: z_erg_tab type table of z_weblinklist.
autom. Seitenattribute:

Code: Alles auswählen.

DOKNR	TYPE	STRING
ERG_TAB	TYPE	Z_ERG_TAB
liste2.htm

autom. Seitenattribute u. Typdefinitionen wie default.htm

Layout:

Code: Alles auswählen.

<%
      data:   wa_tab type z_weblinklist.

      loop at erg_tab into wa_tab FROM 1 TO maxtr.
            (Ausgabe in html-Tab.)
      endloop.
%>
[/code]

Beitrag von Steff (Site Admin / 386 / 0 / 1 ) »
Hallo Anja,

Wenn Du auf stateful setzt, dann bezieht sich das im wesentlichen auf Objekte, wie bpsw. die Applikationsklasse, die dann über mehrere Requests hinweg erhalten bleibt.

Dein Coding sieht soweit eigentlich gut aus (ich nehme an, Du hast in der Folgeseite für die Tabelle das 'auto'-flag gesetzt und Namensgleichheit der Parameter ist gegeben.), insofern kann ich so keinen Fehler entdecken. Ich muss allerdings dazu sagen, dass ich bisher nicht mit der auto_submit_form gearbeitet habe, sondern mit der Applikationsklasse. Das ist meiner Ansicht nach wesentlich flexibler und transparenter. Damit ist es ein leichtes, eine Tabelle über mehrere Requests hinweg zu erhalten. Vielleicht solltest Du besser diesen Weg gehen, anstatt über die auto_submit_form.

Viele Grüße,
Steff

Beitrag von Gast ( / / 0 / 3 ) »
Hi Steff,
danke für Deinen aufmunterden Kommentar. Ich bin nämlich schon fast am Verzweifeln mit dem sch... auto_submit, da ich keine Fehler gefunden hab. Ich hab auch die verschiedensten Sachen ausprobiert: BSP stateful gesetzt, alle Parameter groß geschrieben etc. Aber nix half. Hab schon überlegt mit einem serverseitigem Cookie zu arbeiten. Aber ich denk ich werd mich doch in die Applikationsklassen einarbeiten müssen ...

So, etz mach ich aber erstmal ne Woche Urlaub :D

Bis denn,
Anja

Beitrag von Steff (Site Admin / 386 / 0 / 1 ) »
Hi Anja,

wünsche einen schönen Urlaub. 8) Wenn Du wieder da bist, können wir ja weitermachen ... mit Applikationsklasse. Damit bekommen wir's in den Griff, wirst sehen ;-)
Bis dann.

Gruß,
Steff

Beitrag von Steff (Site Admin / 386 / 0 / 1 ) »
Kleiner Nachtrag am Rande. Hab's zwischenzeitlich mal selbst ausprobiert und eigentlich müßte es wie folgt funktionieren:

Statt:

Code: Alles auswählen.

IF erg_tab IS NOT INITIAL. 
         navigation->set_parameter( 'ERG_TAB' ). 
         navigation->use_auto_submit_form( ). 
         navigation->next_page( 'TOLISTE2' ). 
ENDIF.
müsste es so erfolgen:

Code: Alles auswählen.

IF erg_tab IS NOT INITIAL. 
         navigation->use_auto_submit_form( ). 
         navigation->set_parameter( 'ERG_TAB' ). 
         navigation->next_page( 'TOLISTE2' ). 
ENDIF.
Gruß,
Steff

Beitrag von Gast ( / / 0 / 3 ) »
Hi Steff,
danke für all Deine Hilfe! Bin wieder aus dem Urlaub zurück, aber schon wieder ziemlich frustriert, weil´s einfach nicht funktioniert. Ich kann zwar Attribute an die nächste Seite übergeben, aber sobald es sich um eine Struktur oder int. Tab. handelt fungiert es nicht mehr, d.h. der Inhalt geht verloren u. wird auf der nächsten Seite nicht angezeigt

Ich hab auf Start- und(!) Zielseite:
- unter Typdefinitionen die Struktur der int. Tab. u. sie selbst angelegt
- bei den Seitenattributen die int.Tab. als autom. Attribut angelegt

Im Eventhandler der Startseite habe ich set_parameter u. use_auto_submit_form wie von Dir empfohlen angegeben.

Und natürlich hab ich auch auf Namensgleichheit geachtet.

Außerdem hab ich noch festegestellt, daß wenn man/frau Attributen im Eventhandler einen Inhalt zuweist der Inhalt auch nicht an die nächste Seite übergeben wird. Weil meine int.Tab. im Eventhandler durch einen Funktions-Aufruf gefüllt wird hab ich probehalber mal eine Struktur u. eine int. Tab. auf der Layoutseite gefüllt u. an die nächste Seite übergeben, aber es kam trotzdem kein Inhalt an.

Ehrlichgesagt weiß ich jetzt nicht mehr weiter u. bin am Überlegen, ob ich´s mit einem servereitigem Cookie oder einer DB zum Zwischenspeichern versuchen soll ...

Schöne Grüße,
Anja

Beitrag von Enrique Gonzales ( / / 0 / 3 ) »
Hi Anja,

das gleiche problem hatte ich auch. Mein fehler war, daß ich auf der startseite lokal eine tabelle definiert hab. Scheinbar hat das abap anstelle meines Seitenattributs nur die lokale tabelle befüllt... 8)

Gruß Enrique

Vergleichbare Themen

5
Antw.
3454
Views
Inhalt interne Tabelle an andere interne Tabelle übergeben
von L0w-RiDer » 30.01.2020 16:28 • Verfasst in ABAP® für Anfänger
8
Antw.
3984
Views
Interne Tabelenname auslesen/Übergeben
von autohandel7 » 14.09.2018 11:47 • Verfasst in ABAP® für Anfänger
16
Antw.
6174
Views
interne tabelle per rfc übergeben und annehmen
von theuser » 12.06.2014 14:31 • Verfasst in ABAP® für Anfänger
1
Antw.
4315
Views
interne Tabelle als Parameter zu übergeben?
von oo » 25.05.2006 10:46 • Verfasst in Web-Dynpro, BSP + BHTML
3
Antw.
7102
Views
interne Tabelle an Form übergeben
von Andrzej » 17.05.2017 14:14 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

TABSTRIP oder Subscreen
vor 21 Stunden von ewx 2 / 1928
SELECT SUM CUST
vor 22 Stunden von wreichelt 4 / 2037
Banf anlegen
Gestern von IHe 3 / 13556
FS-CD schnellstmöglich lernen
vor 3 Tagen von waltersen 3 / 6223
Banf anlegen
vor einer Woche von wreichelt 2 / 13911

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

TABSTRIP oder Subscreen
vor 21 Stunden von ewx 2 / 1928
SELECT SUM CUST
vor 22 Stunden von wreichelt 4 / 2037
Banf anlegen
Gestern von IHe 3 / 13556
FS-CD schnellstmöglich lernen
vor 3 Tagen von waltersen 3 / 6223
Banf anlegen
vor einer Woche von wreichelt 2 / 13911