Split Container / Splitter

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).
7 Beiträge • Seite 1 von 1
7 Beiträge Seite 1 von 1

Split Container / Splitter

Beitrag von dawns (ForumUser / 99 / 0 / 0 ) » 21.03.2007 14:52
hi, ich habe meinen container nun gesplittet:
USING cv_container TYPE REF TO cl_gui_docking_container
CHANGING cv_splitter TYPE REF TO cl_gui_splitter_container
cv_top_alv TYPE REF TO cl_gui_container
cv_bottom_tree TYPE REF TO cl_gui_container.

* set container for horizontal split
CREATE OBJECT cv_splitter
EXPORTING
parent = cv_container
rows = 2
columns = 1.

* get front container
CALL METHOD cv_splitter->get_container
EXPORTING
row = 1
column = 1
RECEIVING
container = cv_top_alv.

* get bottom container
CALL METHOD cv_splitter->get_container
EXPORTING
row = 2
column = 1
RECEIVING
container = cv_bottom_tree.


allerdings ... wie soll ich das problem beschreiben... sieht der screen so aus:
_____________________________________
|____________________________________|ALV
|____________________________________| <------
|____________________________________|TREE


da wo der pfeil hinzeigt... die gesplitteten container liegen nicht direkt aneinander, sonder da iss halt noch luft zwischen. so ne art "dritter" container, den ich allerdings ja nich angelegt habe...

weiß einer rat wie ich die container aneinander"schweiße" ^^?

mfg olli
thx im voraus


Beitrag von dawns (ForumUser / 99 / 0 / 0 ) » 22.03.2007 12:09
kann doch nich sein das das keiner weiß... ^^:P

kann es sein das das mit dieser methode zu machen ist?
* set relative coordinates
cl_gui_splitter_container->set_column_mode(
EXPORTING
mode = cl_gui_splitter_container=>mode_relative
EXCEPTIONS
OTHERS = 1 ).

funktioniert bei mir zwar nich... aber könnte ja sein


habt ihr sonst echt keine vorschläge oder ideen...oder hab ich meine frage unklar gestellt?
thx im voraus

Beitrag von black_adept (Top Expert / 3412 / 66 / 656 ) » 22.03.2007 13:19
Hallo dawns,

das liegt eher daran, dass das von dir beschriebene Verhalten des Splitters absolut ungewöhnlich ist.

Extrahier doch ma ausl deinem Programm einen minimalen Part, den du dann hier posten kannst und der immer noch das seltsame Verhalten aufweist. Dann könnte man es wenigstens nachstellen und dir sagen ob es evtl. an der Gui liegt.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Beitrag von dawns (ForumUser / 99 / 0 / 0 ) » 22.03.2007 13:43
du hast recht, hab gerade ein extra programm angelegt und die container mit der von mir oben beschriebenen source angelegt. es funktioniert... komisch...

ich werde mal versuchen den fehler zu rekonstruieren ^^....

Beitrag von dawns (ForumUser / 99 / 0 / 0 ) » 22.03.2007 14:20
hatt mich nun zwar bisschen zeit gekostet, aber habe den fehler mit einem einfachen programm rekonstruieren können, hier die source:

*&---------------------------------------------------------------------*
*& Include ZPROBLEMTOP Modulpool *
*& *
*&---------------------------------------------------------------------*

PROGRAM zproblem .

TABLES sflight.
INCLUDE <icon>.


* Container variables
DATA: ref_container TYPE REF TO cl_gui_docking_container,
ref_splitter TYPE REF TO cl_gui_splitter_container,
ref_top_alv TYPE REF TO cl_gui_container,
ref_bottom_tree TYPE REF TO cl_gui_container,
ref_alv TYPE REF TO cl_gui_alv_grid,
ref_toolbar TYPE REF TO cl_gui_toolbar,
ref_tree TYPE REF TO cl_gui_alv_tree.

* ALV-Grid (Shipping Orders)
DATA: gt_fieldcat_alv TYPE lvc_t_fcat,
gs_layout_alv TYPE lvc_s_layo,
gt_exclude TYPE ui_functions. "Toolbarfunktionen ausblenden

* Tree
DATA: gt_number TYPE /lot/refnr, "Gruppierungsnummer
gf_act_imp TYPE char1,
gref_exit_01 TYPE REF TO /lot/if_ex_vl_snd_krit,
gt_fieldcat_tree TYPE lvc_t_fcat.

DATA: gt_sflight TYPE TABLE OF sflight,
gt_sflight_tree TYPE TABLE OF sflight.



*******************************
*******START OF SELECTION******
*******************************



************************************
************splitter******************
************************************

* create docking control
CREATE OBJECT ref_container
EXPORTING
repid = sy-repid "Programm
dynnr = sy-dynnr "Dynpronummer
side = cl_gui_docking_container=>dock_at_left
extension = 1800. "Containerbreite
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

* set container for horizontal split
CREATE OBJECT ref_splitter
EXPORTING
parent = ref_container
rows = 2
columns = 1.

* set relative coordinates
ref_splitter->set_column_mode(
EXPORTING
mode = cl_gui_splitter_container=>mode_relative
EXCEPTIONS
OTHERS = 1 ).

* get front container
CALL METHOD ref_splitter->get_container
EXPORTING
row = 1
column = 1
RECEIVING
container = ref_top_alv.

* get bottom container
CALL METHOD ref_splitter->get_container
EXPORTING
row = 2
column = 1
RECEIVING
container = ref_bottom_tree.


******************************************
**********Datenbeschaffung****************
*******************************************





**************************************
**************ALV*********************
**************************************

* create alv in the top
CREATE OBJECT ref_alv
EXPORTING
i_parent = ref_top_alv
EXCEPTIONS
error_cntl_create = 1
error_cntl_init = 2
error_cntl_link = 3
error_dp_create = 4
OTHERS = 5.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

* create fieldcat
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'SFLIGHT'
CHANGING
ct_fieldcat = gt_fieldcat_alv
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

* display alv
CALL METHOD ref_alv->set_table_for_first_display
EXPORTING
* is_layout = ref_layout
it_toolbar_excluding = gt_exclude
CHANGING
it_fieldcatalog = gt_fieldcat_alv
it_outtab = gt_sflight "Nicht in Sendg.
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.


**************************************
***************TREE*******************
**************************************

* create tree
CREATE OBJECT ref_tree
EXPORTING
parent = ref_bottom_tree
node_selection_mode = cl_gui_column_tree=>node_sel_mode_multiple
EXCEPTIONS
lifetime_error = 1
cntl_system_error = 2
create_error = 3
failed = 4
illegal_node_selection_mode = 5
OTHERS = 6.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

* The following function module generates a fieldcatalog according
* to a given structure.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'SFLIGHT'
i_client_never_display = 'X'
i_bypassing_buffer = 'X'
CHANGING
ct_fieldcat = gt_fieldcat_tree.


DATA: lv_treev_hhdr TYPE treev_hhdr.

* create header
lv_treev_hhdr-t_image = icon_delivery.
lv_treev_hhdr-heading = 'Versandauftrag'.
lv_treev_hhdr-tooltip = 'Versandauftrag'.
lv_treev_hhdr-width = 25.
lv_treev_hhdr-width_pix = 'X'.

* display alv tree
ref_tree->set_table_for_first_display(
EXPORTING
is_hierarchy_header = lv_treev_hhdr
CHANGING
it_outtab = gt_sflight_tree
it_fieldcatalog = gt_fieldcat_tree ).




Ihr könnt das Programm so kopieren (achtung: Modulpool ^^ ), müsste überall laufen, extra umgeschrieben.
Wenn ihr das Programm ausführt werdet ihr sehen was ich mein, iss voll komisch... wenn ihr den fehler gefunden habt, wäre ich euch äußert dankbar um nen verbesserungsvorschlag.
ps: ich glaube bis zur alv programmierung funktioniert es. erst wenn ich den tree anlege fabriziert er son müll...

thx im voraus

Beitrag von dawns (ForumUser / 99 / 0 / 0 ) » 23.03.2007 09:08
ich möchte hier keines wegs aufdringlich wirken!, es eilt mit leider nur ein wenig... aber es wundert mich das kein feadback kommt ^^... habt ihr so was noch nie gesehen, oder hatt bis jetzt erst nur einer diesen thread gelesen :P
mit meiner oben geposteten source müsstet ihr den fehler nachvollziehen können...
ich habe herausbekommen: wenn ich in der obrigen SOURCE im ***TREE*** part alles aussterne und nur:

CREATE OBJECT cv_tree
EXPORTING
parent = cv_bottom_tree.

....hinschreibe, der selbe fehler auftritt.
es muss also an diesem befehl liegen, hier, wo ich das treeobejekt anlege? ich bin mit meinem latein am ende, habe auch keine blasse ahnung wie das zu stande kommt.

wäre sehr nett wenn einer hier posten könnte ob mein fehler behebbar iss oder ob ich damit leben muss :P ^^? ich danke im voraus

Beitrag von abapfan (ForumUser / 3 / 0 / 0 ) » 23.03.2007 09:44
Hallo dawns
Du bist aufdringlich, wenn du alle paar Stunden postest. :?

Hab das Program mal nachgemacht.
Effekt: Die Container sind korrekt gesplittet: ohne Lücke.

Die Lücke die du siehst ist Teil deines Objekts CV_tree, nämlich der HTML-Header. Wenn du das nicht wilst musst du deinen cv_tree halt ohne diesen
Header instanzieren.

Bei mir funzts korrekt.

abapfan

Seite 1 von 1

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und besseren Inhalt:

Vergleichbare Themen

Andruck Splitter Container
von marc.luebeck » 28.10.2014 08:13
Container Splitter und Tabstrip
von Lukas R. » 27.01.2017 07:10
REUSE Splitter Container?
von Kleenmex » 18.06.2008 10:07
Control aus Splitter-Container entfernen
von olli-x » 10.01.2007 12:43
Split
von NLengner » 25.07.2019 11:16