Code: Alles auswählen.
DATA: l_alv TYPE REF TO cl_gui_alv_grid,
lt_sflight TYPE TABLE OF sflight.
SELECT * FROM sflight INTO TABLE lt_sflight.
* automatically use the full screen to display the grid,
* NO CONTAINER DEFINITION IS REQUIRED !
CREATE OBJECT l_alv
EXPORTING
i_parent = cl_gui_container=>screen0.
CALL METHOD l_alv->set_table_for_first_display
EXPORTING
i_structure_name = 'SFLIGHT'
CHANGING
it_outtab = lt_sflight.
* You have to create an EMPTY screen
CALL SCREEN 100.
Code: Alles auswählen.
method GENERATE_DYNPRO.
data: h type table of d020s with header line,
f type table of d021s with header line,
e type table of d022s with header line,
m type table of d023s with header line.
data: wa_h type d020s,
wa_f type d021s,
wa_e type d022s,
wa_m type d023s.
data: mess(50) type c,
line(50) type c,
word(50) type c.
data: dynproid(44).
dynproid = sy-repid.
dynproid+40(4) = '0001'.
*
*
wa_h-prog = sy-repid.
wa_h-dnum = '0001'.
append wa_h to h.
*
*
wa_f-fnam = 'GD_OK_CODE'.
wa_f-didx = '0000'.
wa_f-flg1 = '80'.
wa_f-flg2 = '10'.
wa_f-flg3 = '00'.
wa_f-leng = '14'.
wa_f-line = 'FF'.
wa_f-type = 'CHAR'.
wa_f-coln = '01'.
wa_f-stxt = '____________________'.
append wa_f to f.
wa_f-fnam = 'ALV'.
wa_f-didx = '001B'.
wa_f-flg1 = '00'.
wa_f-flg2 = '00'.
wa_f-flg3 = '00'.
wa_f-fill = 'U'.
wa_f-fmb1 = '30'.
wa_f-fmb2 = '00'.
wa_f-leng = '78'.
wa_f-line = '01'.
wa_f-coln = '02'.
wa_f-lanf = '00'.
wa_f-lblk = '00'.
wa_f-lrep = '00'.
wa_f-auth = '101'.
wa_f-aglt = '01'.
wa_f-adez = '01'.
append wa_f to f.
*
*
wa_e-line = 'PROCESS BEFORE OUTPUT.'.
append wa_e to e.
wa_e-line = 'MODULE STATUS_0001.'.
append wa_e to e.
wa_e-line = 'PROCESS AFTER INPUT.'.
append wa_e to e.
wa_e-line = 'MODULE PAI.'.
append wa_e to e.
generate dynpro h f e m id dynproid
message mess
line line
word word.
endmethod.
Module-Pools sind nix anderes wir Reports --> INSERT REPORTPaddy hat geschrieben:Sollte dies möglich sein, wäre es ganz interessant zu wissen, ob man die Module Pools und den Gui Status ebenfalls at runtime generieren kann.
Danke für die Info.ewx hat geschrieben:Wenn ich dich richtig verstanden habe, benötigst du gar kein Dynpro, sondern einen Container?!
Vielleicht hilft dir SCREEN0 weiter?!
* You have to create an EMPTY screen
CALL SCREEN 100.
Genau das ist mein Problem. So wie ich es verstanden habe, rufe ich mit screen0 einen bestehenden screen mit custom container auf. Ich will aber nicht, dass im Report ein Screen erstellt werden muss, sondern dieser soll at Runtime generiert werden. Deshalb versuche ich mit Generate Dynpro einen Screen zu erstellen und dort einen custom container zu platzieren. Als nächstes instantiiere ich in meiner Klasse einen Customon Contrainer und lege als letztes einen ALV als Anwendungs-Control drüber. Soweit die Theorie Ich hoffe, dass das einigermaßen verständlich ist und ich nicht komplett auf dem Holzweg bin.ewx hat geschrieben:) aber du brauchst natürlich ein aktuelles "Trägerdynpro".
Das kann durchaus sein.ewx hat geschrieben:Ich glaube, du denkst da zu kompliziert.
Ich fürchte nicht...Paddy hat geschrieben:Ist das soweit richtig?
Das ist quatsch.Paddy hat geschrieben:1. Ich rufe in der Klasse einen Funktionbaustein auf, der mit einen Screen erstellt (generate dynpro).
ansich ok.Paddy hat geschrieben:2. Ich erstelle einen CContainer mit Referenz auf das CCTRL im generierten Dynpro (Klassenmethode).
Was immer das heißt...Paddy hat geschrieben:3. Ich setze als letze Schicht das ALV auf (Klassenmethode).
Da bist du ja aber bereits in einem Dynpro.Paddy hat geschrieben:4. Ich rufe in der PBO den generierten Screen auf (Modul im Report)
ewx hat geschrieben: Letztendlich ist es egal WIE du die Bindung "Control - Container" vornimmst (Also Programm oder Methode oder Fuba) aber sie MUSS im PBO des Dynpros erfolgen. (Zumindest, wenn du nicht Screen0 verwendest...).