Interne Tab. an nächste Seite übergeben

BusinessServerPages; Erstellung von Webapplikationen.

Interne Tab. an nächste Seite übergeben

Postby Alva1590 » Wed Jul 23, 2003 1:48 pm

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!
Alva1590
.....
.....
 
Posts: 4387
Joined: Mon Dec 02, 2002 3:01 pm

Postby Jonna699 » Wed Jul 23, 2003 3:10 pm

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: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. application->setmyTable ( mytable ).
  2.  
GeSHi ©


Bei der Folgeseite müßtest Du dann über eine entsprechende Methode die interne Tabelle wieder lesen, z.B.:
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. mytable = application->getmyTable( ).
  2.  
GeSHi ©


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)
Jonna699
.
.
 
Posts: 3
Joined: Sat Apr 26, 2003 2:21 pm

Postby Alva1590 » Fri Jul 25, 2003 8:56 am

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?
Alva1590
.....
.....
 
Posts: 4387
Joined: Mon Dec 02, 2002 3:01 pm

Postby Eric408 » Fri Jul 25, 2003 1:21 pm

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.
Eric408
..
..
 
Posts: 40
Joined: Fri Mar 14, 2003 7:11 pm

Postby Alva1590 » Fri Jul 25, 2003 2:06 pm

:? 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).
Alva1590
.....
.....
 
Posts: 4387
Joined: Mon Dec 02, 2002 3:01 pm

Postby Eric408 » Mon Jul 28, 2003 8:48 am

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.
Eric408
..
..
 
Posts: 40
Joined: Fri Mar 14, 2003 7:11 pm

Postby Alva1590 » Tue Jul 29, 2003 4:24 pm

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:
Alva1590
.....
.....
 
Posts: 4387
Joined: Mon Dec 02, 2002 3:01 pm

Postby Eric408 » Wed Jul 30, 2003 8:51 am

du kannst in den seitenattributen interne Tabellen deklarieren indem du vorher unter Typdefinitionen einen Tabellentyp(!) anlegst und den dann verwendest.

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. TYPES: BEGIN of t_ProMa,
  2.            Ma_Nr      type string,
  3.            Ma_Name    type string,
  4.        END   OF t_ProMa.
  5. TYPES: tt_ProMa TYPE TABLE of t_ProMa.
GeSHi ©
Eric408
..
..
 
Posts: 40
Joined: Fri Mar 14, 2003 7:11 pm

Postby Alva1590 » Thu Jul 31, 2003 12:17 pm

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: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. CALL FUNCTION 'GET_DATA_FROM_SAP'
  2.  
  3.          EXPORTING
  4.              P_DOKNR           =  DOKNR
  5.  
  6.          TABLES
  7.              ERG_TAB           =  ERG_TAB .
  8.  
  9. IF erg_tab IS NOT INITIAL.
  10.          navigation->set_parameter( 'ERG_TAB' ).
  11.          navigation->use_auto_submit_form( ).
  12.          navigation->next_page( 'TOLISTE2' ).
GeSHi ©


Typdefinitionen:

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. types: begin of z_weblinklist,
  2.                   DOKNR(25) type c,
  3.           end of z_weblinklist.
  4.  
  5. types: z_erg_tab type table of z_weblinklist.
GeSHi ©


autom. Seitenattribute:

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. DOKNR   TYPE   STRING
  2. ERG_TAB   TYPE   Z_ERG_TAB
GeSHi ©


liste2.htm

autom. Seitenattribute u. Typdefinitionen wie default.htm

Layout:
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. <%
  2.       data:   wa_tab type z_weblinklist.
  3.  
  4.       loop at erg_tab into wa_tab FROM 1 TO maxtr.
  5.             &#40;Ausgabe in html-Tab.&#41;
  6.       endloop.
  7. %>
GeSHi ©
[/code]
Alva1590
.....
.....
 
Posts: 4387
Joined: Mon Dec 02, 2002 3:01 pm

Postby Walter4536 » Thu Jul 31, 2003 3:49 pm

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
Walter4536
...
...
 
Posts: 315
Joined: Mon Dec 02, 2002 12:09 pm

Next

Return to BSP + BHTML

Who is online

Users browsing this forum: No registered users and 7 guests