ABAP OBJECTS: aus einer Methode Inhalte einer itab exportier

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).

ABAP OBJECTS: aus einer Methode Inhalte einer itab exportier

Postby Cecilia1751 » Wed Dec 18, 2002 11:12 am

hallo liebe forumgemeinde,

habe mir zum ziel gemacht mittels einer methode einen bestimmten datenbestand zu selektieren. soweit sogut, die methode erfüllt ihren zweck, allein ausserhalb der methode kann ich nicht auf den selektierten inhalt der itab zugreifen. ergo, hab ich mir gedacht, exportier ich die itab samt inhalt.

aber!so leicht war es dann doch nicht! und jetzt bin ich fast am verzweifeln, weil ich innerhalb der PUBLIC SECTION bzw. METHODS
den export-parameter aend_tab nicht definiert kriege (s. Quellcode unten)

Bitte, bitte liebe(r) weihnachtsmannIN, erkläre sie/er mir, ob ich eigentlich total auf dem holzweg wandle, d.h. den inhalt der itab viel leichter zu fassen bekäme, oder wie ich denn die itab (aend_tab) gescheiht definiert bekomme damit ich sie auch vernuenftig exportieren kann. (waere schoen mit einem kleinen Bsp. dann kann ich das ganze ausprobieren und besser nachvollziehen)

im voraus, weihnachtlichen dank!

gse


*Teil der class defintion
CLASS lcl_aenderungen DEFINITION.
PUBLIC SECTION.

DATA: wa_aend_tab TYPE cdpos,
aend_tab LIKE STANDARD TABLE OF wa_aend_tab.

METHODS: constructor,
aend_lesen
IMPORTING l_changenr TYPE cdpos-changenr
-----> EXPORTING aend_tab TYPE standard table of cdpos, <----
aendliste_fuellen.

*Methodenaufruf im hauptprogramm:
DATA: l_aend_tab TYPE STANDARD TABLE OF cdpos.

CALL METHOD aend_ref->aend_lesen
EXPORTING l_changenr = cdpos-changenr
IMPORTING l_aend_tab = l_aend_tab.
Cecilia1751
...
...
 
Posts: 110
Joined: Wed Dec 18, 2002 11:04 am

Postby Emre397 » Wed Dec 18, 2002 11:34 am

Hallo nochmal,
habe mir nochmal dein coding angesehen. Wie schon einmal gesagt, ist das "Type standard Table of" irgendwie nicht erlaubt bei übergaben. Wenn du also bei TAbellenüberagaben innerhalb von Perform oder Methoden diese Anweisung benutzt dann meckert er.
ICh hatte ein ähnliches problem gehabt, und habe es folgender maßen gelößt.
Anstelle zu laufzeit eine Tabelle aus eine strucktur zu erzeugen (was du in deinem coding machst) habe ich mich auf ein transparente Tabelle innerhalb des DDIC´s bezogen. (siehe sflight)
HOffe ich konnte dir weiterhelfen.

Gruß Azreal

PS: Freue mich über weiter Fragen bezüglich Objects!
Emre397
...
...
 
Posts: 141
Joined: Mon Dec 09, 2002 1:53 pm

Postby Edin1867 » Wed Dec 18, 2002 11:50 am

Moin.

Leg Dir doch einfach einen Tabellentyp an, den Du dann für die typisierung verwendest:

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. TYPES: gyt_cdpos TYPE STANDARD TABLE OF cdpos.
GeSHi ©


Deinen EXPORTING-Parameter typisierst Du dann mit
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. ...EXPORTING aend_tab TYPE gyt_cdpos.
GeSHi ©


Gruß,
Haubi
Edin1867
...
...
 
Posts: 406
Joined: Wed Dec 18, 2002 11:50 am

itab und x-message im sap-programm

Postby Cecilia1751 » Wed Dec 18, 2002 1:08 pm

hallo IHR beiden,

vielen dank fuer EURE tipps. mittlerweile funktioniert die übergabe der internen tabelle. habe das problem so gelöst (vorschlag von azreal), indem ich mir einen tabellentypen mit zeilenstruktur cdpos im ddic angelegt habe. dann passte auch die typisierung mit
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1.  ... exporting aend_tab type y_tabtyp_cdpos
GeSHi ©
und der selektierte inhalt der itab ist auch ausserhalb verfügbar.

soweit, so gut. neuerdings kriege ich aber einen x-message dump
(MESSAGE_TYPE_X). *schluck*

Informationen zur Abbruchstelle

"......
Der Abbruch trat im ABAP-Programm "SAPLSLVC " auf, und zwar in
"LINE_OUT_NEW_2".
Das Hauptprogramm war "YRDSDWK1_MWKV_0107 ".

Im Source-Code findet sich die Abbruchstelle in Zeile 2239
(bei Anwahl des Editors: 22390) der ABAP-Source "LSLVCF01 ".
...."

wie man sieht "kracht" es da irgendwo in der sap-anwendung, wahrscheinlich habe ich in meinem coding irgendwo etwas nicht konsistent gehalten. bin aber im moment ratlos, wie ich herr dieses problems werden soll. beim debuggen durch das sABAP-coding verliere ich sehr schnell den überblick.

zum abbruch kommt es beim aufruf der methode
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1.  call method me->refresh_table_display.
  2.  
GeSHi ©


weiss jemand rat, wie man in solchen situationen am besten verfaehrt und dem fehler im eigenen coding auf die schliche kommt?

vielen dank im voraus!
gruss gse[/code]
Cecilia1751
...
...
 
Posts: 110
Joined: Wed Dec 18, 2002 11:04 am

Postby Alva1590 » Wed Dec 18, 2002 1:40 pm

Hallo,

kannst Du mal schauen, ob Du im Dump eine detailiertere Fehlermeldung findest? Schau mal bitte in der ta ST22 nach. Besonders interessant sind die Punkte 'Fehleranalyse', 'Hinweise zur Fehlerbehebung' und 'Ausschnitt Source-Code'. Wenn Du das posten könntest, wäre eine Fehleranalyse besser möglich :-)

Gruß,
Steff
Alva1590
.....
.....
 
Posts: 4387
Joined: Mon Dec 02, 2002 3:01 pm

Coding Dump-Analyse

Postby Cecilia1751 » Wed Dec 18, 2002 1:54 pm

*sorry, hab ins falsche forum gepostet*
*ooops


hi,

hier das coding aus dem dump. scheint mir irgendein problem mit dem fieldcat zu geben, aber bisher bin ich da noch nicht durchgestiegen, woran es liegen koennte.

gruss und danke fuer die muehe!

gse


Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. 022200     loop at rt_fieldcat assigning <ls_fieldcat> where tech ne 'X' and
  2. 022210                                                       no_out ne 'X'.  
  3. 022220                                                                      
  4. 022230       if gflg_invisible = 'X'.                                        
  5. 022240         if <ls_fieldcat>-do_sum is initial.                          
  6. 022250           clear gflg_invisible.                                      
  7. 022260           continue.                                                  
  8. 022270         else.                                                        
  9. 022280           clear g_col_counter.                                        
  10. 022290           clear gflg_invisible.                                      
  11. 022300         endif.                                                        
  12. 022310       endif.                                                          
  13. 022320                                                                      
  14. 022330       clear gs_lvc_data.                                              
  15. 022340       clear g_style.                                                  
  16. 022350                                                                      
  17. 022360       assign component                                                
  18. 022370              <ls_fieldcat>-fieldname of structure rt_data to <g_field>
  19. 022380       if sy-subrc ne 0.                                              
  20.      >         message x000&#40;0k&#41;.                                            
  21. 022400       endif.                                                          
  22. 022410                                                                      
  23. 022420       g_col_counter = g_col_counter + 1.                              
  24. 022430                                                                      
  25. 022440       gs_lvc_data-row_pos = r_row_counter.                            
  26. 022450       gs_lvc_data-col_pos = g_col_counter.                            
  27.  
  28.  
  29.  
GeSHi ©
Cecilia1751
...
...
 
Posts: 110
Joined: Wed Dec 18, 2002 11:04 am

Postby Quinn1225 » Fri Jan 03, 2003 11:44 am

Zu dem Problem mit Message type X kann ich leider keine Lösung beitragen. Prinzipiell sollte der Short-Dump abe alle notwendigen Informationen zur Fehlerbehebung enthalten. In der Regel wird eine deratige Message explizit aus einem Programm heraus ausgelöst (also nicht direkt vom ABAP-Laufzeitsystem).
Zur Parameterübergabe ist folgendes zu sagen: Bei den Anweisungen DATA und TYPES können deutlich komplexere "Typausdrücke" gebildet werden als bei der Parameterübergabe. Im Grunde sind bei der Parameterübergabe nur Bezüge auf bereits definierte Typen erlaubt (wurde ja bereits als Lösung vorgeschagen). Einzig die Typbildung mittels REF TO ist erlaubt. Der Grund für diese Einschränkung bei der Parameter Deklaration liegt darin, dass für jeden Parameter ein (globaler) eindeutiger Typ vereinbart werden sollte (z.B. im Data Dictionary), der sowohl innerhalb der gerufenen Einheit (Programm etc.) als auch innerhalb der rufenden Einheit bekannt ist. Hierdurch werden etwaige Typkonflikte beim Aufruf vermieden.
Quinn1225
..
..
 
Posts: 30
Joined: Thu Jan 02, 2003 4:16 pm


Return to ABAP Objects®

Who is online

Users browsing this forum: No registered users and 2 guests