Probleme mit Scrollen im TC / Tablecontrol

Benutzeroberflächen in SAP®-Systemen.
7 Beiträge • Seite 1 von 1
7 Beiträge Seite 1 von 1

Probleme mit Scrollen im TC / Tablecontrol

Beitrag von olli-x (Specialist / 166 / 0 / 1 ) »
Hallo zusammen,

ich habe ein mächtig dringendes Problem..
Wie schon oft hier besprochen -> Scrollen im Table Control.
Ich habe ein Trägerdynpro, darauf 3 Subscreens.
Auf 2 der Subscreens befindet sich ein TC.

Auf dem Trägerdynpro wird zum PBO der OKCODE initialisiert. Desweiteren werden die EXIT-Commands behandelt und die Subscreens zu PBO & PAI aufgerufen.

Jeder Subscreen besorgt sich seine Daten und handhabt "seine" OK-Codes. Sollte der ausgelöste OK-Code das prozessierte Bild betreffen ( z.B. Zeile kopieren im 1 Subscreen) wird die Logik abgearbeitet und der OK-Code initialisiert, ansonsten wird weitergereicht.

Die auszugebenden Zeilen werden zum PBO mit Describe <Table> lines <tablecontrol-lines> geprüft. Refresh <Tablecontrol> from screen ... ist auch drin...

Prima, funktioniert aber nicht... :x
Ich könnte schreien, weil ich den Fehler nicht finde. Egal welches TC, ich kann nicht scrollen.

Hoffentlich kann mir einer helfen, ich komme so langsam in Terminprobleme.

Danke im Voraus.

Gruß,
Oliver

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
Hallo Oliver,

benutzt Du denn im Dynpro 'LOOP AT itab WITH CONTROL tc CURSOR tc-current_line.'?

Weiterhin wirst Du möglicherweise noch mit 'GET CURSOR' ermitteln müssen, in welchen TC Dein Cursor gerade steht, um das Scrollen (Du verwendest doch die FCodes P++, P+, P- und P--, oder?) für den aktuellen TC zu triggern.

Zum Setzen der aktuellen Position eignet sich der FB 'SCROLLING_IN_TABLE' hervorragend, so lange man obige FCodes benutzt.
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Beitrag von olli-x (Specialist / 166 / 0 / 1 ) »
Hallo Ereglam,
benutzt Du denn im Dynpro 'LOOP AT itab WITH CONTROL tc CURSOR tc-current_line.'?
Ja, hab ich drin.
Weiterhin wirst Du möglicherweise noch mit 'GET CURSOR' ermitteln müssen, in welchen TC Dein Cursor gerade steht, um das Scrollen (Du verwendest doch die FCodes P++, P+, P- und P--, oder?) für den aktuellen TC zu triggern.
Nutze ich nicht. Ich habe keine Logik zum Blättern über F-Codes implementiert. Das Scrollen über den Scrollbalken reicht bei mir vollkommen aus (vermutete Anzahl Datensätze).

Hast Du vielleicht noch eine Idee? :(

Gruß,
Oliver

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
dann poste mal den Dynpro-Code.
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Beitrag von olli-x (Specialist / 166 / 0 / 1 ) »
OK,

Trägerdynpro

Code: Alles auswählen.

*----------------------------------------------------------------------*
  PROCESS BEFORE OUTPUT.
*----------------------------------------------------------------------*
    MODULE clear_okcode.
    MODULE status_0100.
*
    CALL SUBSCREEN sub01 INCLUDING sy-repid '0120'.
    CALL SUBSCREEN sub02 INCLUDING sy-repid '0140'.
    CALL SUBSCREEN sub03 INCLUDING sy-repid '0160'.

*----------------------------------------------------------------------*
  PROCESS AFTER INPUT.
*----------------------------------------------------------------------*
    MODULE exit_0100 AT EXIT-COMMAND.

    CALL SUBSCREEN sub01.
    CALL SUBSCREEN sub02.
    CALL SUBSCREEN sub03.

    MODULE user_command_0100.
PBO dazu:

Code: Alles auswählen.

MODULE clear_okcode OUTPUT.
  CLEAR okcode.
ENDMODULE.                 " clear_okcode  OUTPUT

MODULE status_0100 OUTPUT.
  SET PF-STATUS 'STANDARD'.
ENDMODULE.                 " STATUS_0100  OUTPUT
PAI

Code: Alles auswählen.

MODULE exit_0100 INPUT.
  CASE okcode.
    WHEN co_exit OR co_back.
      SET SCREEN 0.
    WHEN OTHERS.
  ENDCASE.
  CLEAR okcode.
ENDMODULE.                 " exit_0100  INPUT

MODULE user_command_0100 INPUT.
* noch ungeklärt
  CLEAR okcode.
ENDMODULE.                 " USER_COMMAND_0100  INPUT

Eins der 2 Problemkinder:

Subscreen 0120.

Code: Alles auswählen.

*----------------------------------------------------------------------*
 PROCESS BEFORE OUTPUT.
*----------------------------------------------------------------------*
   MODULE prepare_tablecontrol_0120.

   LOOP AT gt_keym INTO wa_gt_keym
      WITH CONTROL tc_stedmd CURSOR tc_stedmd-current_line.
     MODULE fill_tc_0120.
   ENDLOOP.

*----------------------------------------------------------------------*
 PROCESS AFTER INPUT.
*----------------------------------------------------------------------*
   LOOP AT gt_keym.
     FIELD zzstedmd-lfdnr:
*   Eingaben vom TC übernehmen
     MODULE get_changes_from_tc.

     FIELD mark:
*   Kopieren eines markierten Eintrags
      MODULE copy_tc_entry ON INPUT,
*   Löschen eines markierten Eintrage
      MODULE delete_tc_entry ON INPUT,
*   Stufeneditor starten
      MODULE start_sted_for_marked_entry ON INPUT,
*   Ergebnisse anzeigen
      MODULE show_results_for_marked_entry ON INPUT.

     FIELD zzstedmd-lfdnr MODULE check_lfdnr.

   ENDLOOP.

   MODULE user_command_0120.
PBO

Code: Alles auswählen.

MODULE prepare_tablecontrol_0120 OUTPUT.

  REFRESH CONTROL 'TC_STEDMD' FROM SCREEN sy-dynnr.
  DESCRIBE TABLE gt_keym LINES tc_stedmd-lines.

ENDMODULE.                 " prepare_tablecontrol_0120  OUTPUT

MODULE fill_tc_0120 OUTPUT.

* Daten aus den Attributen des Exemplars lesen
  zzstedmd = wa_gt_keym-ref_detail->get_attributes_for_tc( ).

* prüfen, ob Arbeitsplatz in Fertigungsgrenzen liegt
  IF wa_gt_keym-ref_detail->check_arbpl( zzstedmd-arbpl ) = co_true.
    PERFORM icon_create USING co_green_light
                              text-100
                         CHANGING gv_tc_icon.
  ELSE.
    PERFORM icon_create USING co_red_light
                              text-110
                         CHANGING gv_tc_icon.
  ENDIF.

ENDMODULE.                 " fill_tc_0120  OUTPUT

PAI

Code: Alles auswählen.

MODULE get_changes_from_tc INPUT.

  IF NOT wa_gt_keym-ref_detail IS INITIAL.
* Änderungen in Attribute übernehmen
    CALL METHOD wa_gt_keym-ref_detail->set_attributes_from_tc
      EXPORTING
        is_zzstedmd = zzstedmd.

* Änderungen in itab übernehmen
    PERFORM set_curr_attributes_in_keytab USING tc_stedmd-current_line
                                          CHANGING gt_keym
                                                   gv_rc.
  ENDIF.

ENDMODULE.                 " get_changes_from_TC  INPUT

MODULE copy_tc_entry INPUT.

  CHECK okcode = co_copy.
  PERFORM copy_selected_entry USING tc_stedmd-current_line
                              CHANGING gt_keym
                                       gv_rc.
  CLEAR okcode.

ENDMODULE.                 " copy_tc_entry  INPUT

MODULE delete_tc_entry INPUT.

  CHECK okcode = co_delete.
  PERFORM delete_selected_entry USING tc_stedmd-current_line
                             CHANGING gt_keym
                                      gt_keym_delete
                                      gv_rc.
  CLEAR okcode.

ENDMODULE.                 " delete_tc_entry  INPUT

MODULE start_sted_for_marked_entry INPUT.

  CHECK okcode = co_calculate.
  PERFORM calc_selected_entry_with_sted USING tc_stedmd-current_line
                                     CHANGING gt_keym
                                              gv_rc.
  CLEAR okcode.

ENDMODULE.                 " start_sted_for_marked_entry  INPUT

MODULE show_results_for_marked_entry INPUT.
*...
ENDMODULE.                 " show_results_for_marked_entry  INPUT

MODULE check_lfdnr INPUT.
  PERFORM check_lfd_not_initial USING tc_stedmd-current_line
                                      gt_keym.
ENDMODULE.                 " check_lfdnr  INPUT

MODULE user_command_0120 INPUT.

  CASE okcode.
    WHEN co_sortup OR co_sortdown.
*   Sortieren derzeit ausschließlich nach Methode
      PERFORM sort_table_keym USING okcode.
      CLEAR okcode.
    WHEN co_copy OR co_delete OR co_calculate OR co_result.
*    -> module copy_tc_entry
*    -> module delete_tc_entry
*    -> module start_sted_for_marked_entry
*    -> module show_results_for_marked_entry
*      Falls okcode hier gefüllt ist fehlt auf dem TC die Markierung.
      MESSAGE w011.
    WHEN OTHERS.
  ENDCASE.


ENDMODULE.                 " USER_COMMAND_0120  INPUT


Gruß,
Oliver

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
ich glaube, ich habe es:

Code: Alles auswählen.

MODULE prepare_tablecontrol_0120 OUTPUT. 

*  REFRESH CONTROL 'TC_STEDMD' FROM SCREEN sy-dynnr. 
  DESCRIBE TABLE gt_keym LINES tc_stedmd-lines. 

ENDMODULE.                 " prepare_tablecontrol_0120  OUTPUT 
Der Refresh setzt Dir alle Werte des Controls zurück. U.a. auch TC-current_line und TC-top_line.
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Beitrag von olli-x (Specialist / 166 / 0 / 1 ) »
FANTASTISCH
Ich war mir zwar sicher, das ich das ausprobiert hatte... Ich werde wohl senil :oops:

Komm Du mir ins Oberbergische, kriegst direkt einen ausgegeben :wink:

Gruß & Dank,
Olli

Seite 1 von 1

Vergleichbare Themen

6
Antw.
3000
Views
Tablecontrol , ok_code wiederholt sich beim Scrollen
von dpz » 16.06.2021 11:59 • Verfasst in Dialogprogrammierung
2
Antw.
2853
Views
Probleme mit dem TableControl Wizard und Arbeitsbereich
von christoph2 » 08.09.2008 16:05 • Verfasst in Dialogprogrammierung
1
Antw.
1233
Views
scrollen?
von dimes » 10.10.2005 14:59 • Verfasst in ABAP® Core
2
Antw.
1796
Views
Listen scrollen?
von Spaulding » 16.08.2005 17:47 • Verfasst in ABAP® Core
2
Antw.
1204
Views
Windows 8.1 - Scrollen im Editor
von ralf.wenzel » 24.07.2014 14:14 • Verfasst in ABAP® Core

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Daten an Tabelle binden
vor einer Stunde von Lukas Sanders 2 / 792
Dialog-Container mit Toolbar/Status
vor 15 Stunden von black_adept gelöst 21 / 2619

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Daten an Tabelle binden
vor einer Stunde von Lukas Sanders 2 / 792
Dialog-Container mit Toolbar/Status
vor 15 Stunden von black_adept gelöst 21 / 2619

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2403
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 8987