Referenzvariablen dynamisch zuweisen

Getting started ... Alles für einen gelungenen Start.

Referenzvariablen dynamisch zuweisen

Postby Alena4613 » Sun Oct 19, 2014 9:18 pm

Hallo,
ich mache gerade meine ersten Schritte im bereich OO. Hab nach passenden Einträgen hier im Forum gesucht, bin aber nicht schlau geworden.
Problembeschreibung:

Ich habe ein Tab-Strip mit 5 Reitern. Die Container und ALV sind deklariert:

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. DATA:        go_2001_grid    TYPE REF TO cl_gui_alv_grid,
  2.                  go_2001_cont    TYPE REF TO cl_gui_custom_container,
  3.                  go_2002_grid    TYPE REF TO cl_gui_alv_grid,
  4.                  go_2002_cont    TYPE REF TO cl_gui_custom_container. "u.s.w.
  5.  
GeSHi ©


Ich möchte das aufbauen der Grids nicht 5 mal durchlaufen. Derzeit ist das der Art:

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. ** ALV-GRID
  2. *  IF go_2002_grid IS NOT INITIAL.
  3. *    CALL METHOD go_2002_grid->free.
  4. *    CLEAR go_2002_grid.
  5. *  ENDIF.
  6. ** CUSTOM CONTAINER
  7. *  IF go_2002_cont IS NOT INITIAL.
  8. *    CALL METHOD go_2002_cont->free.
  9. *    CLEAR go_2002_cont.
  10. *  ENDIF.
  11. *
  12. *  CREATE OBJECT go_2002_cont
  13. *    EXPORTING
  14. *      container_name              = 'CC_WUSER'
  15. *    EXCEPTIONS
  16. *      cntl_error                  = 1
  17. *      cntl_system_error           = 2
  18. *      create_error                = 3
  19. *      lifetime_error              = 4
  20. *      lifetime_dynpro_dynpro_link = 5
  21. *      OTHERS                      = 6.
  22. *  IF sy-subrc <> 0.
  23. *    CLEAR sy-subrc.
  24. *  ELSE.
  25. *    CREATE OBJECT go_2002_grid
  26. *      EXPORTING
  27. *        i_parent          = go_2002_cont
  28. *      EXCEPTIONS
  29. *        error_cntl_create = 1
  30. *        error_cntl_init   = 2
  31. *        error_cntl_link   = 3
  32. *        error_dp_create   = 4
  33. *        OTHERS            = 5.
  34. *    IF sy-subrc <> 0.
  35. *      CLEAR sy-subrc.
  36. *    ELSE..... u.s.w. dann die Feldkataloge und am Ende
  37.  
  38. **      SET HANDLER go_lcl_grid->handle_toolbar FOR go_2002_grid.
  39. **      SET HANDLER go_lcl_grid->handle_user_command FOR go_2002_grid.
  40. **      SET HANDLER go_lcl_grid->handle_hotspot_2002 FOR go_2002_grid.
  41. *
  42. *      CALL METHOD go_2002_grid->set_table_for_first_display
  43. *        EXPORTING
  44. *          is_variant                    = gs_variant
  45. *          i_save                        = s_save
  46. *          is_layout                     = gv_2002_layo
  47. *        CHANGING
  48. *          it_outtab                     = gt_2002_out
  49. *          it_fieldcatalog               = lt_fcat
  50. *        EXCEPTIONS
  51. *          invalid_parameter_combination = 1
  52. *          program_error                 = 2
  53. *          too_many_lines                = 3
  54. *          OTHERS                        = 4.
  55. *      IF sy-subrc <> 0.
  56. *        CLEAR sy-subrc.
  57. *      ENDIF.
  58. *    ENDIF.
  59. *  ENDIF.
  60. *
  61.  
GeSHi ©


Habe verzweifelt versucht diese Objekte dynamisch unter Zuhilfenahme von sy-dynnr zu erzeugen.

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. DATA grid TYPE REF TO data.
  2. DATA cont TYPE REF TO data.
  3.  
  4. FIELD-SYMBOLS: <grid> TYPE REF TO cl_gui_alv_grid.
  5. FIELD-SYMBOLS: <cont> TYPE REF TO cl_gui_custom_container.
  6.  
  7.   CLEAR: lv_container_name, lv_grid_title, lv_fcat.
  8.  
  9.   CASE gv_dynnr.
  10.     WHEN '2001'.
  11.       CREATE DATA grid LIKE go_2001_grid.
  12.       ASSIGN grid->* TO <grid>.
  13.       CREATE DATA cont LIKE go_2001_cont.
  14.       ASSIGN cont->* TO <cont>.
  15.       lv_container_name = 'OFFICE'.
  16.  
GeSHi ©


Die Daten werden wohl angezeigt, im Debugger sehe ich aber, dass die Objekte Null-Referenzen sind :(

Beim Refresh gehts dann ganz schief:

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. FORM refresh_2001.
  2.  
  3.   DATA: lv_stable TYPE lvc_s_stbl.
  4.  
  5.   lv_stable-row = 1.
  6.   lv_stable-col = 1.
  7.  
  8.   CALL METHOD <grid>->refresh_table_display
  9.     EXPORTING
  10.       is_stable      = lv_stable
  11.       i_soft_refresh = 'X'
  12.     EXCEPTIONS
  13.       finished       = 1
  14.       OTHERS         = 2.
  15.   IF sy-subrc <> 0.
  16.     CLEAR sy-subrc.
  17.   ENDIF.
  18.  
  19. ENDFORM.  
  20.  
GeSHi ©


Für sachdienliche Hinweise - im Vorab sehr bedankt. Diese Deklaration und Zuweiserei ist mir immer noch n Rätsel :roll:
Alena4613
...
...
 
Posts: 111
Joined: Thu Aug 03, 2006 12:20 pm

Re: Referenzvariablen dynamisch zuweisen

Postby Ayla149 » Tue Nov 18, 2014 9:08 pm

CREATE DATA grid LIKE go_2001_grid. -> CREATE OBJECT!?
Ayla149
..
..
 
Posts: 24
Joined: Wed Dec 17, 2003 5:22 pm


Return to ABAP® für Anfänger

Who is online

Users browsing this forum: No registered users and 2 guests