IMPORT/ EXPORT DYNPRO

Benutzeroberflächen in SAP Systemen.

IMPORT/ EXPORT DYNPRO

Postby Shane1331 » Fri Aug 01, 2003 1:22 pm

Hallo,

ich lese eine Dynpro-Definition mittels IMPORT DYNPRO.
Diese verändere ich (ich kopiere einen TabReiter) und speichere sie mit EXPORT DYNPRO wieder ab und generiere sie mit GENERATE DYNPRO.

soweit so gut.
nur Leider steht in der Tabelle mit den Objektdefinitionen des Dynpros nirgendwo ein OK_CODE. Den muss ich aber natürlich hinterlegen.

Weiss jemand wo die gepeichert werden??

fragt Enno.
Shane1331
.
.
 
Posts: 2
Joined: Fri Aug 01, 2003 1:22 pm

Hat sich erledigt...

Postby ewx » Mon Aug 04, 2003 9:02 pm

Hat sich erledigt...
ewx
.....
.....
 
Posts: 2840
Joined: Mon Aug 04, 2003 9:02 pm

Postby Philippa2744 » Tue Aug 05, 2003 8:44 am

die Lösung würde mich interessieren, woran lag es denn?

LoLo
Philippa2744
...
...
 
Posts: 303
Joined: Fri Mar 07, 2003 5:17 pm

Postby Willy1492 » Tue Aug 05, 2003 11:54 am

s. Thread im forum von abap-fans.de:
http://members3.boardhost.com/luisgarcia/msg/14837.html

Frank
Willy1492
....
....
 
Posts: 581
Joined: Tue Dec 03, 2002 4:44 pm

Postby Philippa2744 » Tue Aug 05, 2003 12:23 pm

thnx :D
Philippa2744
...
...
 
Posts: 303
Joined: Fri Mar 07, 2003 5:17 pm

Anwendungsmöglichkeit

Postby ewx » Fri Aug 08, 2003 1:39 am

Ich habe mal etwas gebastelt...

Die Anwendungsmöglichkeiten sind wahrscheinlich eher begrenzt, aber gut wenn man weiss, dass es geht:

Ich habe ein Dynpro 9000 in dem Programm SAPMZTESTTAB1 angelegt. Auf diesem Dynpro ist nur ein TabstripControl mit einem Reiter. Das Control heisst DYNA1 und der Reiter DYNA1_TAB1.

in dem folgenden Programm kann man die Anzahl der zu generierenden TabReiter angeben. Das Programm liest dann soviele Einträge aus der Ländertabelle -- einfach nur damit die Reiter einen anständigen Namen kriegen und nicht TAB01 TAB02 TAB03 usw heissen.

Die DynproDefinition wird gelesen und alle zuvor generierten Reiter werden gelöscht. Dann wird der Reiter DYNA1_TAB1 als Referenz immer wieder mit anderem Text und anderem Funktionscode (Danke Frank für die Struktur RES1!) dazugefügt. Danach bleibt noch der Export der Dynprodefinition und die Generierung.

Danach wird die Transaktion aufgerufen, die das Dynpro 9000 aufruft.

In diesem Falle könnte man sich ja sogar auf dem einzigen Subscreen, der dann ja jedem Reiter zugeordnet ist, ein TableControl vorstellen, auf dem dann die Umsätze der einzelnen Länder aufgelistet werden. So oder so ähnlich.
Ach ja: Der Reiter, der kopiert wird, ist im Dynpro als "Unsichtbar markiert", so dass er nicht angezeigt wird.

.eNNo. :wink:

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. REPORT ztest3 .
  2. DATA: d1(100),
  3.       d2(10) TYPE n,
  4.       d3(30),
  5.       tabname(20),
  6.       xres1 like D021S_RES1,
  7.       landx TYPE landx,
  8.       nummer(2) TYPE n,
  9.       tabix TYPE sytabix.
  10.   h TYPE d020s,
  11.   f LIKE d021s OCCURS 0 WITH HEADER LINE,
  12.   e LIKE d022s OCCURS 0 WITH HEADER LINE,
  13.   m LIKE d023s OCCURS 0 WITH HEADER LINE.
  14.  
  15. PARAMETERS: p_anz(2) TYPE n DEFAULT 7.
  16.  
  17.  
  18.   IMPORT DYNPRO h f e m
  19.     ID 'SAPMZTESTTAB1                           9000'.
  20.  
  21.   READ TABLE f WITH KEY fnam = 'DYNA1_SCA'.
  22.   IF sy-subrc = 0.
  23.     f-line = p_anz.
  24.     f-coln = '99'.
  25.     MODIFY f INDEX sy-tabix.
  26.   ENDIF.
  27.  
  28. ******** Alte Reiter löschen ************
  29.   LOOP AT f WHERE fnam(4) = 'TAB_' AND coln > 1.
  30.     DELETE f.
  31.  
  32. **** Referenz-Reiter lesen
  33.   READ TABLE f WITH KEY fnam = 'DYNA1_TAB1'.
  34.   IF sy-subrc = 0.
  35.     CLEAR nummer.
  36.     SELECT landx FROM t005t INTO landx UP TO p_anz ROWS
  37.     WHERE spras = 'D'.
  38.       nummer = sy-dbcnt.
  39.       CONCATENATE 'DYNA1_TAB' nummer INTO tabname.
  40.       READ TABLE f WITH KEY fnam = tabname.
  41.       IF sy-subrc > 0.
  42.         tabix = sy-tabix + 1.
  43.         f-coln = f-coln + 1.
  44.         f-auth = '100'.
  45.         f-leng = 12.
  46.         SET BIT 6 OF f-fmb1 TO 0.
  47.         CONCATENATE 'TAB_' nummer INTO f-fnam.
  48.         xres1 = f-res1.
  49.         xres1-funccode = f-fnam.
  50.         f-res1 = xres1.
  51.         f-stxt = landx.
  52.         INSERT f INTO f INDEX tabix.
  53.       ENDIF.
  54.     ENDSELECT.
  55.     EXPORT DYNPRO h f e m
  56.         ID 'SAPMZTESTTAB1                           9000'.
  57.     GENERATE DYNPRO h f e m
  58.         ID 'SAPMZTESTTAB1                           9000'
  59.       MESSAGE d1 LINE d2 WORD d3.
  60.   ENDIF.
  61.  
  62.   CALL TRANSACTION 'ZTESTTAB'.
GeSHi ©
ewx
.....
.....
 
Posts: 2840
Joined: Mon Aug 04, 2003 9:02 pm

Postby Willy1492 » Fri Aug 08, 2003 10:38 am

Ist da die Systembelastung nicht ein wenig hoch?
Für jeden Transaktionsaufruf Dynpro lesen, ändern generieren...
Und was machst Du, wenn 2 User gleichzeitig Dein Programm starten?
Willy1492
....
....
 
Posts: 581
Joined: Tue Dec 03, 2002 4:44 pm

Nörgler

Postby ewx » Fri Aug 08, 2003 5:32 pm

Hi Frank,

die Systembelastung sollte sich eigentlich in Grenzen halten. Und ob ich nun eine umfangreiche Selektion mache und dann merke -- uups, das war ja viel zu viel: BACK, neu selektieren etc. oder das Programm ein bisschen verspielt ist... ;--)

Aber mit deinem anderen Einwand hast du nicht hanz unrecht... Dann muss man das eben so konzipieren, dass das so eine Art InitialGenerierung sein muss: Per Customizing kann man verschiedene "Länder" (siehe Beispiel) auswählen und dafür wird dann das Programm generiert. Dann ist auch die Systembelastung wech...!

Gruß, Enno.
PS Ich nehme mal an, du bist Systemadministrator...?
ewx
.....
.....
 
Posts: 2840
Joined: Mon Aug 04, 2003 9:02 pm


Return to Dialogprogrammierung

Who is online

Users browsing this forum: No registered users and 13 guests

cron