Benutzerinteraktion während PAI-Verarbeitung

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

Benutzerinteraktion während PAI-Verarbeitung

Beitrag von M@atze! (ForumUser / 92 / 6 / 21 ) »
Hallo zusammen,

für folgendes Problem fehlt mir im Moment eine Idee (oder es geht tatsächlich nicht ):

Aus einer Erweiterung zu einer SAP Standard-Transaktion heraus erzeuge ich ein modales Dialogfenster (Dynpro mit Custom-Container und Klasse "cl_gui_alv_grid").
Also quasi ein Pop-Up.
Dieses soll auf Knopfdruck Messwerte, welche via WebService angefordert werden, sofort nach deren Übermittlung anzeigen.
Die Anzahl der anzufragenden Messwerte steht zu diesem Zeitpunkt noch nicht fest.
Aktuell läuft im PAI-Teil des Dynpros im Modul user_command eine Do-Schleife welche andauernd Werte von einem Webserver abfragt und diese
automatisch und sofort im ALV anzeigt (Methoden refresh_table_display + check_changed_data).
Funktioniert auch,so weit so gut.
Nun ist das ALV während der Webserver-Anfragen für Benutzeraktionen gesperrt.
Der Benutzer hat also keine Möglichkeit die Verarbeitung zu unterbrechen (verlassen der Do-Schleife) wenn keine weiteren Messwerte mehr angefragt werden sollen.

Hat jemand eine Idee wie eine laufende PAI-Verarbeitung kontrolliert unterbrochen werden kann?
Vielleicht ist auch mein Ansatz ein falscher. Ich bin daher auch für alternative Lösungsvorschläge offen.

Ich steh halt grad auf dem Schlauch :(

Vielen Dank schon mal

Grüße
Matze

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


Re: Benutzerinteraktion während PAI-Verarbeitung

Beitrag von DeathAndPain (Top Expert / 1941 / 257 / 412 ) »
Für Echtzeitanwendungen ist SAP nicht ausgelegt...

Re: Benutzerinteraktion während PAI-Verarbeitung

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
Mit CL_GUI_TIMER ein automatisches Refresh veranlassen und den so wiederkehrenden PAI/PBO Lauf anstatt der DO-Schleife nutzen.

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag (Insgesamt 2):
M@atze!gtoXX

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.18
Basis: 7.50

Re: Benutzerinteraktion während PAI-Verarbeitung

Beitrag von Dele (Specialist / 307 / 4 / 47 ) »
cl_gui_timer wollte ich auch gerade sagen - ist wahrscheinlich die einfachste Lösung.

ggf. könnten "AMC - ABAP Messaging Channels" helfen. Ist höchst modern, aber wesentlich mehr Aufwand und funktioniert glaube ich nur, wenn der Webserver dahingehend angepasst werden kann.

Re: Benutzerinteraktion während PAI-Verarbeitung

Beitrag von black_adept (Top Expert / 4089 / 127 / 940 ) »
einen amodalen Container erzeugen und dort eine Toolbar anzeigen mit dem Abbrechen-Button. Eventhandler für den Button setzt ein Feld welches innerhalb der DO-Schleife abgefragt wird.

Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag (Insgesamt 2):
M@atze!gtoXX

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Benutzerinteraktion während PAI-Verarbeitung

Beitrag von M@atze! (ForumUser / 92 / 6 / 21 ) »
Erst einmal vielen Dank für Eure Vorschläge.

Ein Refresh mittels CL_GUI_TIMER ist eine gute Idee, allerdings müsste Dieser jede Sekunde ausgeführt werden.
Da bleibt dem Benutzer nicht viel Zeit für Interaktionen.

Den Vorschlag mit einem amodalen Container finde ich interessant.
Ich habe nun ein wenig mit den Klassen "cl_gui_dialogbox_container" und "cl_gui_docking_container" gespielt.
Leider bekomme ich es nicht hin, dass der zweite Container eingabebereit bleibt, wenn der Custom-Container im PAI verweilt :(
Mein Dynpro zur Darstellung der Messwerte müsste ja auf Interaktionen des amodalen Containers reagieren.

Jetzt bin ich leider nicht so der Crack in Sachen Dialogprogrammierung
Hat jemand einen Tipp für mich wie der amodale Container eingebunden werden muss?

Beispiel-Coding:

Modul im PBO

Code: Alles auswählen.

MODULE status_0100 OUTPUT.

  SET PF-STATUS 'ST_1234'.

  IF gr_alv_grid IS INITIAL.

    CREATE OBJECT gr_1234_cuscon
      EXPORTING
        container_name = '1234_CUSCON'.

    CREATE OBJECT gr_dialogbox
      EXPORTING
        width   = 600
        height  = 200
        top     = 70
        left    = 140
        caption = 'Test'.

    SET HANDLER lcl_event_handler=>on_close FOR gr_dialogbox.

    CREATE OBJECT gr_alv_grid
      EXPORTING
        i_parent = gr_1234_cuscon.

    CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
      EXPORTING
        i_structure_name       = 'ZQM_ALV_MESSWERTE'
      CHANGING
        ct_fieldcat            = gt_fcat[]
      EXCEPTIONS
        inconsistent_interface = 1
        program_error          = 2
        OTHERS                 = 3.

    gs_layo-cwidth_opt = abap_true.

    CALL METHOD gr_alv_grid->set_table_for_first_display
      EXPORTING
        i_buffer_active     = abap_false
        i_bypassing_buffer  = abap_true
        i_consistency_check = abap_false
*       is_variant          = ls_vari
        i_save              = 'A'
        is_layout           = gs_layo
      CHANGING
        it_outtab           = gt_alv
        it_fieldcatalog     = gt_fcat.
  ELSE.
    gr_alv_grid->refresh_table_display( ).
    gr_alv_grid->check_changed_data( ).
  ENDIF.
Modul im PAI (Wird durchlaufen wenn der Benutzer auf die Schaltfläche "Messung starten" klickt)

Code: Alles auswählen.

MODULE         user_command_0100 INPUT.

  CASE sy-ucomm.
    WHEN 'ONLI'.
      DO. "Diese Schleife soll mit einer Benutzeraktion verlassen werden
        IF gv_exit IS NOT INITIAL.
          EXIT.
        ENDIF.

*     Hier kommt die Anfrage an den Web-Service rein

      ENDDO.

    WHEN OTHERS.
      CLEAR gt_alv.
      gr_alv_grid->refresh_table_display( ).
      gr_alv_grid->check_changed_data( ).
      LEAVE TO SCREEN 0.
  ENDCASE.

ENDMODULE.

Re: Benutzerinteraktion während PAI-Verarbeitung

Beitrag von gtoXX (Specialist / 213 / 44 / 36 ) »
Spontan ein anderer Ansatz, ohne geprüfte Machbarkeit, da Schleifen m.E. nie eine Lösung darstellen :

Registriere ein SAP Event. Der WebService sollte m.E. dies ja nach Empfang von Daten auch raisen können ( oder Abfrage durch Service in einen Job auslagern ) Dein Programm reagiert dann auf dieses Event. So gibt es keine Dauerläufer.
"Code lügt nicht ^^"

Re: Benutzerinteraktion während PAI-Verarbeitung

Beitrag von ewx (Top Expert / 4846 / 311 / 641 ) »
ich würde mal ein HTML-Control ausprobieren und versuchen, die Werte per HTML zu erfragen.
Das HTML-Control kann einigermaßen unabhängig von der GUI agieren.

Ansonsten auch den Ansatz von black_adept ausprobieren. Wichtig: Den Dialogbox-Container benutzen, nicht den Docking-Container!

Re: Benutzerinteraktion während PAI-Verarbeitung

Beitrag von black_adept (Top Expert / 4089 / 127 / 940 ) »
Wahrscheinlich muss man beides kombinieren. HTML-Control im Dialogboxcontainer.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Seite 1 von 1

Vergleichbare Themen

1
Antw.
4762
Views
ALE Verarbeitung im Dialog
von ewx » 18.06.2013 16:36 • Verfasst in Exchange Infrastructure
0
Antw.
1205
Views
Verarbeitung von ALEAUD (Rückmeldung von CRM via PI)
von bapimueller » 08.06.2021 13:12 • Verfasst in Basis
3
Antw.
1911
Views
Programmgesteuerte Spool-Verarbeitung
von LedZ » 06.10.2008 20:01 • Verfasst in ABAP® Core
0
Antw.
1287
Views
0
Antw.
1272
Views

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.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
vor 2 Tagen von Bright4.5 1 / 744
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2368
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8953