gelöst starting in new task - messages


Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV

Moderatoren: Jan, Steff

gelöst starting in new task - messages

Beitragvon foxtrot » 11.10.2017, 07:47

Hallo liebe Kollegen!

Ich komme bei einem Problem nicht weiter - da reichen einfach meine ABAP-Kenntnisse nicht mehr:

Rahmengeschichte: der Anwender soll aus einer Servicemeldung heraus per "Aktivität" die Anlage einer Bestellung starten, die er dann nach initialem Füllen per Programm händisch fertigstellt und sichert. Dabei ist es u.a. stark gewünscht, dass die Anlage in einem neuen Fenster passiert, damit die Meldung parallel sichtbar bleibt.

Und jetzt zu ABAP:
Das heißt, ich bin in einem FuB, der durch die Aktivität aufgerufen wird, von dem aus letztlich ein "call transaction" ausgeht. In dem Fall mit einem "call function ... starting new task" dazwischen, um ein neues Fenster zu öffnen. Funktioniert soweit - nur ist nach dem Sichern die Bestellnummer für den Anwender nirgends zu sehen. Eine "message" aus dem neuen task habe ich nicht sichtbar hingebracht, und die Ursprungsfunktion erhält die retournierte "messtab" nicht, weil "new task", und der Programmablauf fortgesetzt wird.

Jetzt gibt es für mich im Wesentlichen zwei Ansätze:
- doch aus dem neuen task raus eine Meldung generieren, die sichtbar ist
- im aufrufenden FuB irgendwie doch die Rückgabewerte mitbekommen

Für letzteren Fall habe ich was von "PERFORMING subr ON END OF TASK" gelesen, und WAIT FOR ASYNCHRONOUS TASKS UNTIL..., aber ich bin ja in einem FuB - wo schreibe ich subr hin? Kann das wieder ein FuB sein? Was macht subr überhaupt, wenn es nur darum geht, die Rückgabewerte in den aufrufenden FuB zu bringen?

Bitte um Hilfe und vielen Dank im Voraus!
foxtrot
ForumUser
 
Beiträge: 12
Registriert: 28.12.2016, 15:08
Dank erhalten: 0 mal
Ich bin: Berater/in

Sponsor

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

Re: starting in new task - messages

Beitragvon a-dead-trousers » 11.10.2017, 07:57

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

Für diese Nachricht hat a-dead-trousers einen Dank bekommen :
foxtrot
a-dead-trousers
Top Expert
 
Beiträge: 2721
Registriert: 07.02.2011, 13:40
Dank erhalten: 635 mal
Ich bin: Entwickler/in

Re: starting in new task - messages

Beitragvon foxtrot » 11.10.2017, 08:48



Danke schon einmal, der erste link ist eh nur die ABAP-Hilfe, aber im zweiten link werden ein paar Fragen von mir beantwortet.
Eine jedoch noch nicht: ich bin in einem FuB. Die Callback-Routine wird nach, also außerhalb des FuBs deklariert, kennt also die Daten(deklarationen) des FuB nicht - wie kriege ich jetzt die Daten von der Callback-Routine in den FuB?
Im zweiten link wird ja von einem report ausgegangen, der globale Daten hat - die hab ich im FuB nicht...

lg, Wolfgang
foxtrot
ForumUser
 
Beiträge: 12
Registriert: 28.12.2016, 15:08
Dank erhalten: 0 mal
Ich bin: Berater/in

Re: starting in new task - messages

Beitragvon foxtrot » 11.10.2017, 09:01

...das mit den globalen Daten hat sich erübrigt... ein Kollege konnte mir den nötigen Hinweis geben.
Jetzt mal ausprobieren...
foxtrot
ForumUser
 
Beiträge: 12
Registriert: 28.12.2016, 15:08
Dank erhalten: 0 mal
Ich bin: Berater/in

Re: starting in new task - messages

Beitragvon foxtrot » 11.10.2017, 09:33

funktioniert!

WAIT UNTIL it_messtab IS NOT INITIAL.
...

FORM returns USING task.
RECEIVE RESULTS FROM FUNCTION 'Z_PM_SER_ME21N'
TABLES
messtab = it_messtab.

ENDFORM.
foxtrot
ForumUser
 
Beiträge: 12
Registriert: 28.12.2016, 15:08
Dank erhalten: 0 mal
Ich bin: Berater/in

Re: starting in new task - messages

Beitragvon a-dead-trousers » 11.10.2017, 11:38

ja, aber dann muss sichergestellt sein, dass über "messtab" immer Werte zurückgeliefert werden.
Außerdem vergisst du hier den "Fehlerfall", dass der aufgerufene Funktionsbaustein mit einer Ausnahme (Kurzdump) beendet wird. In dem Fall ist die "messtab" auch immer leer.

Die "Luxusvariante" würde ungefähr so ausschauen:
Code: Alles auswählen
DATA: result_received TYPE abap_bool.

CLEAR result_received.

CALL FUNCTION 'Z_PM_SER_ME21N'
  STARTING NEW TASK 'new_task' PERFORMING receiving_results ON END OF TASK
  EXPORTING
    parameter = 'XXX'
  EXCEPTIONS
    system_failure = 1
    communication_failure = 2
    resource_failure = 3
    OTHERS = 4.

IF sy-subrc EQ 0.
  WAIT FOR ASYNCHRONOUS TASKS UNITL result_received EQ abap_true.
ENDIF.

FORM receiving_results USING taskname.
  RECEIVE RESULTS FROM FUNCTION 'Z_PM_SER_ME21N'
    TABLES
      messtab = it_messtab
    EXCEPTIONS
      system_failure = 1
      communication_failure = 2
      OTHERS = 3.
 
  result_received = abap_true.
ENDFORM.

Damit werden alle Fehlersituationen zumindest abgefangen und es kommt zu keiner Endlosschleife. Wie du auf die jeweiligen Fehler reagierst bleibt dir überlassen.
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: 2721
Registriert: 07.02.2011, 13:40
Dank erhalten: 635 mal
Ich bin: Entwickler/in

Re: starting in new task - messages

Beitragvon foxtrot » 11.10.2017, 11:48

danke für die Hinweise, denke ich noch darüber nach...
foxtrot
ForumUser
 
Beiträge: 12
Registriert: 28.12.2016, 15:08
Dank erhalten: 0 mal
Ich bin: Berater/in


Zurück zu ABAP® Core

  Aktuelle Beiträge   
Barcodes in Warenbewegungen & Belegen
vor 14 Stunden von marc.braun 0 Antw.
HTML Daten als Anhang an Mail unter AOO
vor 16 Stunden von SAP_ENTWICKLER 0 Antw.
SAP Access & Identity Management - noch aktuell?
vor 19 Stunden von SaskuAc 0 Antw.
gelöst SELECT...WHERE mit ähnlichen String-Feldern
vor 18 Stunden von Suta_K 4 Antw.
gelöst Seitensteuerung Adobe Forms
vor 15 Stunden von Lucyalison 12 Antw.

  Ähnliche Beiträge beta
CALL FUNCTION ... STARTING NEW TASK ... Task nachverfolgbar?
03.02.2017, 09:41 von Obelix1 10 Antw.
starting new task <-> in update task
14.09.2007, 14:51 von Krueger 1 Antw.
FuBa in neuem Task starten "STARTING NEW TASK"
20.01.2006, 11:16 von Haubi 6 Antw.
CALL FUNCTION STARTING NEW TASK
04.04.2011, 10:58 von ewx 5 Antw.
FB zur Anzeige von Messages in Listen
30.11.2005, 17:36 von Gast 4 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!