ALV-Grid bleibt beim neuen Aufruf stehen

Benutzeroberflächen in SAP Systemen.

ALV-Grid bleibt beim neuen Aufruf stehen

Postby Malena4025 » Fri Feb 12, 2010 11:53 am

Hallo zusammen,

ich bekomme gerade eine Krise, habe folgendes Problem und weiß nicht woran das liegt.
Ich habe ein Modales Dialogfenster auf dem 2 Subscreens liegen und jedes beinhaltet eine Alv-Grid, wie es sich gehört man Subscreen, Container, etc, soweit auch so gut, aber beim Schliessen des Fensters und erneuten öffnen wird das ALV in der Befüllung vom letzten Aufruf wieder angezeigt, obwohl in dieser Konstellation der Container, Alv usw initial sind.
Wer kann mir hierzu einen Tip geben, ich hänge mal das Coding mit an.

Danke und viele Grüße
Ronny

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. MODULE display_alv_fehler_111 OUTPUT.
  2. DATA: lt_cellstyle  TYPE lvc_t_styl
  3.         , ls_variant  TYPE disvariant
  4.         , ls_layout   TYPE lvc_s_layo.
  5.   IF NOT gt_extfehler IS INITIAL.
  6.     IF go_extfehler_cont IS INITIAL.
  7.  
  8.       "Feldkatalog erstellen
  9.       CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
  10.         EXPORTING
  11.           i_structure_name       = 'BAPIRET2'
  12.         CHANGING
  13.           ct_fieldcat            = gt_fieldcat_extfehl
  14.         EXCEPTIONS
  15.           inconsistent_interface = 1
  16.           program_error          = 2
  17.           OTHERS                 = 3.
  18.       IF sy-subrc <> 0.
  19.         MESSAGE s471&#40;zl&#41;.
  20.         EXIT.
  21.       ENDIF.
  22.  
  23.       CREATE OBJECT go_extfehler_cont
  24.         EXPORTING
  25.           container_name              = '111_GRID_CONT'
  26.         EXCEPTIONS
  27.           cntl_error                  = 1
  28.           cntl_system_error           = 2
  29.           create_error                = 3
  30.           lifetime_error              = 4
  31.           lifetime_dynpro_dynpro_link = 5
  32.           OTHERS                      = 6.
  33.  
  34.       IF sy-subrc <> 0.
  35.         MESSAGE s407&#40;zl&#41;.
  36.         EXIT.
  37.       ENDIF.
  38.  
  39.       CREATE OBJECT go_alv_grid_extfehl
  40.         EXPORTING
  41.           i_parent          = go_extfehler_cont
  42.         EXCEPTIONS
  43.           error_cntl_create = 1
  44.           error_cntl_init   = 2
  45.           error_cntl_link   = 3
  46.           error_dp_create   = 4
  47.           OTHERS            = 5.
  48.  
  49.  
  50.       IF sy-subrc <> 0.
  51.         MESSAGE s407&#40;zl&#41;.
  52.         EXIT.
  53.       ENDIF.
  54.       "Layout
  55.       ls_layout-no_toolbar = 'X'.
  56.       ls_layout-no_totline = ''.
  57.       ls_layout-grid_title = text-025.
  58.       ls_layout-zebra      = 'X'.
  59.       ls_layout-cwidth_opt = 'X'.
  60.       ls_layout-no_keyfix  = 'X'.
  61.       ls_layout-sel_mode   = 'A'.
  62.       ls_layout-edit       = 'X'.
  63.       ls_layout-info_fname = 'COLOR'.       "Zeilenfarbe
  64.       ls_layout-stylefname = 'INPUT_STYLE'. "Zeilenstyle
  65.       ls_variant-report     = sy-repid.
  66.  
  67.  
  68.  
  69.       CALL METHOD go_alv_grid_extfehl->set_table_for_first_display
  70.         EXPORTING
  71.           i_structure_name              = 'BAPIRET2'
  72.           is_layout                     = ls_layout
  73.           is_variant                    = ls_variant
  74.           i_save                        = 'A'
  75.         CHANGING
  76.           it_outtab                     = gt_extfehler[]
  77.           it_fieldcatalog               = gt_fieldcat_extfehl
  78.         EXCEPTIONS
  79.           invalid_parameter_combination = 1
  80.           program_error                 = 2
  81.           too_many_lines                = 3
  82.           OTHERS                        = 4.
  83.  
  84.       IF sy-subrc <> 0.
  85.         MESSAGE s407&#40;zl&#41;.
  86.         EXIT.
  87.       ENDIF.
  88.  
  89.     ELSE.
  90.  
  91.       CALL METHOD go_alv_grid_extfehl->refresh_table_display
  92.         EXCEPTIONS
  93.           finished = 1
  94.           OTHERS   = 0.
  95.  
  96.     ENDIF.
  97.   ELSE.
  98.     FREE: go_extfehler_cont, gt_extfehler, go_alv_grid_extfehl.
  99.  
  100.   ENDIF.
  101.  
  102.  
GeSHi ©
Malena4025
.
.
 
Posts: 5
Joined: Fri Feb 12, 2010 11:53 am

Postby Vanessa2987 » Mon Feb 15, 2010 5:26 pm

Anhand des Codings kann ich das leider nicht erkennen. Ich würde aber grob verschiedene Dinge vermuten:

Einfach:
- Die interne Tabelle ist nicht bei jedem Aufruf initial bzw. neu gefüllt. Wird hier auf eine globale Tabell verwiesen?

Kompliziertere Möglichkeit:

- "Dein Objekt" ist initial, aber das Dynpro ist schon einmal gelaufen. Die Objekte werden zwar nicht mehr von deinen Variablen referenziert, sind aber noch an das Grid bzw. den Container gebunden. D.h. es existiert eine Referenz und das Objekt existiert in der "alten" Belegung ebenfalls noch. Hier würde ich versuchen die Objektreferenzen (container, alvgrid) global anzulegen und dann immer wieder zu verwenden. Objektinstanziierung evtl. besser (auch wenn erstmal nur zum Testen) nicht zum PBO, sondern im normalen Programmablauf vor Aufruf des Dynpros.

Gruß,
Martin
Vanessa2987
..
..
 
Posts: 44
Joined: Tue Feb 05, 2008 1:16 pm

Postby Ece333 » Wed Feb 24, 2010 1:49 pm

Hallo Ronny,

ruf doch einfach mal vor dem
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. FREE: go_extfehler_cont, gt_extfehler, go_alv_grid_extfehl.
GeSHi ©

die Methode free des ALV und danach die Methode free des Containers auf.
Dadurch wird der ALV und der Container abgebaut und dürften nicht mehr ans Dynpro gebunden sein.

Gruß
Andreas
Ece333
.
.
 
Posts: 1
Joined: Wed Feb 24, 2010 1:49 pm


Return to Dialogprogrammierung

Who is online

Users browsing this forum: No registered users and 8 guests