gelöst OO ALV Toolbar -> Function


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

Moderatoren: Jan, Steff

gelöst OO ALV Toolbar -> Function

Beitragvon Icke0801 » 17.02.2017, 09:14

Hallo zusammen,

ich versuche einen Button in die Toolbar des OO-ALV korrekt einzubinden.
Leider bekomme ich einen inkorrekten ok_code zurück.
ok_code = '%_GC 102 11'
Erwartet habe ich allerdings 'EDIT'.

Hat da jemand einen Tipp, an welcher Schraube ich drehen muss?

Code: Alles auswählen
  DATA button  TYPE stb_button.
  CLEAR: e_object->mt_toolbar.
  CLEAR button.
  button-butn_type = 3. "Separator
  APPEND button TO e_object->mt_toolbar.

  " Einfügen Edit Button
  CLEAR button.
  button-function  = 'EDIT'.
  button-icon      = icon_toggle_display_change.
  button-quickinfo = 'Edit'.
  button-butn_type = '2' ."normaler Btn.
  button-disabled  = ' '.
  button-text      = 'Edit'.
  APPEND button TO e_object->mt_toolbar.

  CLEAR button.
  button-butn_type = 3. "Separator
  APPEND button TO e_object->mt_toolbar.
 
--
Grüße aus der Endlosschleife
-= Icke0801 =-
Icke0801
ForumUser
 
Beiträge: 57
Registriert: 28.12.2007, 19:08
Wohnort: Berlin
Dank erhalten: 1 mal
Ich bin: Entwickler/in

Sponsor

Alte ABAP-Entwicklerweisheit: Weißt du weder aus noch ein, baust du einen BADI ein

Re: OO ALV Toolbar -> Function

Beitragvon ewx » 17.02.2017, 09:27

Der Ok-Code "%_GC..." ist das Resultat eines gefeuerten Events, wenn es als "Applikationsevent" (APPL_EVENT = abap_true) definiert wurde.
Normalerweise wird es intern verarbeitet. Es wird aber vorher der PAI durchlaufen. Da der PAI diesen OK-Code aber nicht abfragt, gelangt er sozusagen wieder zurück in die Tiefen der ABAP-Steuerung und wird dort entsprechend verarbeitet.
ewx
Top Expert
 
Beiträge: 3345
Registriert: 04.08.2003, 19:55
Wohnort: Schleswig-Holstein
Dank erhalten: 194 mal

Re: OO ALV Toolbar -> Function

Beitragvon Icke0801 » 17.02.2017, 10:24

Hallo Enno,

so ganz werde ich daraus noch nicht schlau. Die ganze ALV Geschichte hatte ich schon lange nicht mehr angefasst.
Ob ich APPL_EVENT = abap_true oder false setze, ist dabei egal. Der ok_code bleibt so.
--
Grüße aus der Endlosschleife
-= Icke0801 =-
Icke0801
ForumUser
 
Beiträge: 57
Registriert: 28.12.2007, 19:08
Wohnort: Berlin
Dank erhalten: 1 mal
Ich bin: Entwickler/in

Re: OO ALV Toolbar -> Function

Beitragvon ewx » 17.02.2017, 10:33

Dann kommen wir mit dem Codeschnipsel nicht weiter, denke ich...
Poste mal dein Programm bzw. eine abgespeckte Version davon. Häufig hilft es, die grundlegenden Dinge heraus zu kopieren und sozusagen separat zu testen.
ewx
Top Expert
 
Beiträge: 3345
Registriert: 04.08.2003, 19:55
Wohnort: Schleswig-Holstein
Dank erhalten: 194 mal

Re: OO ALV Toolbar -> Function

Beitragvon Icke0801 » 17.02.2017, 10:44

Report
Code: Alles auswählen
PARAMETERS: pa_filt TYPE ppe_filter_name.

INITIALIZATION.
  PERFORM init.
START-OF-SELECTION.

AT SELECTION-SCREEN ON pa_filt.
  gv_filt = pa_filt.
  go_appl->get_data(
    EXPORTING
      iv_flt_name    = gv_filt
    CHANGING
      o_appl_message = go_appl_msg ).
  CALL SCREEN 2000.
 


PBO
Code: Alles auswählen
  SET PF-STATUS 'STATUS_2000'.
*  SET TITLEBAR 'xxx'.
  PERFORM init_dock.
  PERFORM init_alv.
  PERFORM set_handler.

  " output display
  IF go_alv IS BOUND.
    CALL METHOD go_alv->set_table_for_first_display
      EXPORTING
        is_layout                     = go_appl->gs_layout
        it_toolbar_excluding          = go_appl->gt_toolbar_exclude
        i_save                        = 'A'
      CHANGING
        it_outtab                     = go_appl->gt_alv
        it_fieldcatalog               = go_appl->gt_fieldcat
      EXCEPTIONS
        invalid_parameter_combination = 1
        program_error                 = 2
        too_many_lines                = 3
        OTHERS                        = 4.
    IF sy-subrc <> 0.
      MESSAGE e001(zplm_cc_change_txt).
      " Error in ALV generation
    ENDIF.

    CALL METHOD go_alv->set_ready_for_input
      EXPORTING
        i_ready_for_input = 1.


    CALL METHOD go_alv->refresh_table_display
      EXCEPTIONS
        finished = 1
        OTHERS   = 2.
    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
      WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.
  ENDIF.
 



Init
Code: Alles auswählen
  " Create a docking control at bottom
  CHECK go_dock IS INITIAL.
  CREATE OBJECT go_dock
    EXPORTING
      repid = sy-cprog
      dynnr = sy-dynnr
      ratio = 80
      side  = cl_gui_docking_container=>dock_at_bottom
      name  = 'DOCK_CONT'.
  IF sy-subrc <> 0.
    MESSAGE 'Error in the Docking control' TYPE 'S'.
  ENDIF.

  " Init a OO-ALV-Grid for output
  CHECK go_alv IS INITIAL.
  CREATE OBJECT go_alv
    EXPORTING
      i_parent          = go_dock
*      i_appl_events     = abap_true
    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.

  SET HANDLER go_appl->on_hotspot_click     FOR go_alv.
  SET HANDLER go_appl->handle_data_changed  FOR go_alv.
  SET HANDLER go_appl->handle_user_command  FOR go_alv.
  SET HANDLER go_appl->handle_toolbar       FOR go_alv.
 
--
Grüße aus der Endlosschleife
-= Icke0801 =-
Icke0801
ForumUser
 
Beiträge: 57
Registriert: 28.12.2007, 19:08
Wohnort: Berlin
Dank erhalten: 1 mal
Ich bin: Entwickler/in

Re: OO ALV Toolbar -> Function

Beitragvon a-dead-trousers » 17.02.2017, 10:51

Die Verarbeitung deines Funktionscodes musst du in der HANDLE_USER_COMMAND-Methode implementieren. Da kommt dann auch der korrekte Funktionscode an. OK_CODE schaut mir sehr nach PAI-Modul aus. Auch der Code %_GC wirkt sehr nach PAI-Modul. Der Parameter dafür im Handler zu CL_GUI_ALV_GRID=>USER_COMMAND lautet E_UCOMM.

lg ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.07
Basis: 7.40
a-dead-trousers
Top Expert
 
Beiträge: 2622
Registriert: 07.02.2011, 13:40
Dank erhalten: 599 mal
Ich bin: Entwickler/in

Re: OO ALV Toolbar -> Function

Beitragvon Icke0801 » 17.02.2017, 10:57

a-dead-trousers hat geschrieben:Die Verarbeitung deines Funktionscodes musst du in der handle_user_command-Methode implementieren. Da kommt dann auch der korrekte Funktionscode an.


Da springt er gar nicht rein.
--
Grüße aus der Endlosschleife
-= Icke0801 =-
Icke0801
ForumUser
 
Beiträge: 57
Registriert: 28.12.2007, 19:08
Wohnort: Berlin
Dank erhalten: 1 mal
Ich bin: Entwickler/in

Re: OO ALV Toolbar -> Function

Beitragvon Icke0801 » 17.02.2017, 11:00

ooh, ok, es war der Button-type = 2
Mit Type = 0 gehts.
--
Grüße aus der Endlosschleife
-= Icke0801 =-
Icke0801
ForumUser
 
Beiträge: 57
Registriert: 28.12.2007, 19:08
Wohnort: Berlin
Dank erhalten: 1 mal
Ich bin: Entwickler/in

Re: OO ALV Toolbar -> Function

Beitragvon a-dead-trousers » 17.02.2017, 11:07

Icke0801 hat geschrieben:ooh, ok, es war der Button-type = 2
Mit Type = 0 gehts.

CNTB_BTYPE_MENU oder 2 (siehe Typgruppe CNTB) ist für DropDown-Listen reserviert.
(Hab ich leider in deinem ersten Posting auch übersehen :oops: )
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.07
Basis: 7.40
a-dead-trousers
Top Expert
 
Beiträge: 2622
Registriert: 07.02.2011, 13:40
Dank erhalten: 599 mal
Ich bin: Entwickler/in

Re: OO ALV Toolbar -> Function

Beitragvon Icke0801 » 17.02.2017, 11:12

Frag bitte nicht, wie oft ich da drüber geschaut habe, ohne es zu bemerken :)
--
Grüße aus der Endlosschleife
-= Icke0801 =-
Icke0801
ForumUser
 
Beiträge: 57
Registriert: 28.12.2007, 19:08
Wohnort: Berlin
Dank erhalten: 1 mal
Ich bin: Entwickler/in


Zurück zu ABAP Objects®

  Aktuelle Beiträge   
User-Exit Arbeitsplananlage/-änderung
vor 9 Stunden von Romaniac 5 Antw.
gelöst Erweiterung im Selscreen --> Text für Radiobutton setzen
vor 10 Stunden von Romaniac 6 Antw.
Die Assert Bedingung wurde verletzt
Gestern von ralf.wenzel 1 Antw.
Dump bei SUSR_USER_BUFFERS_TO_DB
vor 13 Stunden von DeathAndPain 6 Antw.
OAuth 1.0 statt 2.0 in ABAP Web Dynpro verwenden?
Gestern von Mijira 0 Antw.

  Ähnliche Beiträge beta
ALV Toolbar
26.09.2005, 13:54 von Gast 6 Antw.
Ausblenden Toolbar im ALV
21.04.2004, 13:48 von Gast 2 Antw.
ALV Grid Toolbar
15.11.2004, 10:26 von hfahrian 1 Antw.
ALV: Toolbar menü
24.02.2006, 16:28 von Flo 1 Antw.
Schaltfläche in der ALV toolbar
11.12.2006, 09:40 von an4kh4 3 Antw.

 

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder

Feedback ...?

Was können wir verbessern? Hinterlasse deine Kontaktdaten, wenn du eine direkte Antwort möchtest.

... Absenden!
cron