Testlauf erforderlich vor dem Echtlauf

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
8 Beiträge • Seite 1 von 1
8 Beiträge Seite 1 von 1

Testlauf erforderlich vor dem Echtlauf

Beitrag von Mockingbird (ForumUser / 12 / 8 / 0 ) »
Hallo Experten,

Ich stehe grade vor einer Herausforderung zu der mir keine Lösung einfallen möchte. Ich Programm welches ich geschrieben habe soll mit einer Testlauffunktion ausgestattet werden. So weit kein Problem, allerdings soll der Testlauf zwingend erforderlich sein bevor ein Echtlauf ausgeführt werden kann.

Meine erste Idee war eine globale Variable (Type xflag) zu verwenden. Diese sollte am Ende eines Testlaufs auf abap_true gesetzt werden, wodurch der Echtlauf ausgeführt werden sollte. Meine Hoffnung war das nach dem Testlauf man durch BACK zurück zum Selection Screen kommt und einen Echtlauf ausführen kann.

Allerdings wird dann trotzdem mein Popup getriggert welches mich auffordert erst einen Testlauf zu machen. Ergo wurde die gesetzte Variable nicht bis zum erneuten ausführen des Reports gespeichert.

Eventuell stand jemand schon vor einem ähnlichen Problem und könnte mich einweihen.

LG
Mockingbird

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


Re: Testlauf erforderlich vor dem Echtlauf

Beitrag von wreichelt (Top Expert / 1031 / 29 / 188 ) »
Hallo,

ein Möglichkeit wäre das:

https://www.berater-wiki.de/Schlüsselbe ... rom_memory

Gruß Wolfgang

Re: Testlauf erforderlich vor dem Echtlauf

Beitrag von jocoder (Specialist / 338 / 3 / 101 ) »
Programmglobale Variablen bleiben erhalten, bis das Programm verlassen wird oder mit SUBMIT in einen neuen Modus gewechselt wird.
Ein Wechsel zum SELECTION-SCREEN zerstört keine programmglobale Variablen.
Daher muss der Fehler woanders liegen.
Eventuell fehlt eine Prüfung, sodass das Popup nur beim Testlauf erscheint.

Re: Testlauf erforderlich vor dem Echtlauf

Beitrag von Mockingbird (ForumUser / 12 / 8 / 0 ) »
@jocoder

Mein Code sieht dafür wie folgt aus:

Code: Alles auswählen.

DATA: gv_real TYPE xflag.


  IF gv_real = abap_true.

    PERFORM create_appl_log.

    PERFORM excel_upload USING p_file
                         CHANGING gt_po_update.

    PERFORM check_upload CHANGING gt_po_update.

    PERFORM update USING  p_test
                          gt_po_update.

    PERFORM checkbox USING p_test
                           p_error.
  ELSEIF gv_real = abap_false.
    IF p_test = abap_true.

      PERFORM create_appl_log.

      PERFORM excel_upload USING p_file
                           CHANGING gt_po_update.

      PERFORM check_upload CHANGING gt_po_update.

      PERFORM update USING  p_test
                            gt_po_update.

      PERFORM checkbox USING p_test
                             p_error.
      gv_real = abap_true.
      p_test = abap_false.

    ELSEIF p_test = abap_false.

      CALL FUNCTION 'POPUP_TO_INFORM'
        EXPORTING
          titel = text-000
          txt1  = text-001
          txt2  = ''.

    ENDIF.
  ENDIF.
Ich weiß nicht ob dies von Bedeutung ist, durch den Report kommt man durch F8 am Selection Screen zum Display eines App Log. von diesem aus navigiere ich über F3 zurück zum Selection Screen und wähle die Checkbox für den Testrun ab und drücke wieder F8.

LG
Mockingbird

Re: Testlauf erforderlich vor dem Echtlauf

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »

Code: Alles auswählen.

PARAMETERS test AS CHECKBOX.
PARAMETERS testrun AS CHECKBOX MODIF ID d.

AT SELECTION-SCREEN OUTPUT.

  IMPORT testrun_executed TO testrun FROM MEMORY ID 'TESTRUN'.
  if testrun = abap_true.
    test = abap_false.
  else.
    test = abap_true.
  endif.

  LOOP AT SCREEN.
    IF screen-group1 = 'D'.
      screen-input = '0'.
      MODIFY SCREEN.
    ENDIF.
  ENDLOOP.

AT SELECTION-SCREEN.


  CASE test.
    WHEN abap_true.
      MESSAGE 'testrun executed' TYPE 'I'.
      test    = space.
      testrun = abap_true.
      EXPORT testrun_executed FROM testrun TO MEMORY ID 'TESTRUN'.
    WHEN space.
      IF testrun IS INITIAL.
        MESSAGE 'run test first!' TYPE 'I'.
        STOP.
      ELSE.
        testrun = space.
        EXPORT testrun_executed FROM testrun TO MEMORY ID 'TESTRUN'.
      ENDIF.
  ENDCASE.

START-OF-SELECTION.
  MESSAGE 'program executed.' TYPE 'S'.
Problem: Wenn der Echtlauf abbricht, ist evtl. das Testflag noch im Speicher vorhanden (oder nicht).
auch müsste man evtl. vorhandene Parameter (SELECT-OPTIONS) prüfen, ob es beim Echtlauf die gleichen sind, wie beim Testlauf.

Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag:
Mockingbird


Re: Testlauf erforderlich vor dem Echtlauf

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
jocoder hat geschrieben:
08.01.2020 16:15
Programmglobale Variablen bleiben erhalten, bis das Programm verlassen wird oder mit SUBMIT in einen neuen Modus gewechselt wird.
Ein Wechsel zum SELECTION-SCREEN zerstört keine programmglobale Variablen.
oh doch!
Nach Ausführung werden alle Variablen initialisiert.
Die Selektionsoptionen sind nur deswegen noch vorhanden, weil sie aufgrund des besonderen Verhaltens von Reports wieder geladen werden.

Deswegen kann man sich aber tatsächlich in meinem obigen Beispiel das ganze EXPORT und IMPORT sparen, da das Ergebnis im PARAMETER verwaltet wird.

Re: Testlauf erforderlich vor dem Echtlauf

Beitrag von Mockingbird (ForumUser / 12 / 8 / 0 ) »
@ewx
Nur damit ich das nun richtig verstanden habe:

Wenn ich statt einer globalen Variable eine Parameter TYPE Checkbox nehme müsste es funktionieren und ich brauche den EXPORT und IMPORT ins MEMORY nicht ?

Heißt am Ende des Testruns Parameter = abap_true und das sollte übernommen werden ?

LG
Mockingbird

Re: Testlauf erforderlich vor dem Echtlauf

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
Mockingbird hat geschrieben:
08.01.2020 16:53
@ewx
Nur damit ich das nun richtig verstanden habe:

Wenn ich statt einer globalen Variable eine Parameter TYPE Checkbox nehme müsste es funktionieren und ich brauche den EXPORT und IMPORT ins MEMORY nicht ?
ja.

wobei TYPE CHECKBOX egal ist.
Du kannst auch einfach schreiben:

Code: Alles auswählen.

PARAMETERS testrun NO-DISPLAY.
.
Damit wird der Parameter nach der Programmausführung wiederhergestellt.

Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag:
Mockingbird


Seite 1 von 1

Vergleichbare Themen

5
Antw.
5103
Views
Warenausgang buchen im Testlauf
von Legxis » 30.07.2018 10:27 • Verfasst in ABAP® Core
8
Antw.
3416
Views
Testlauf bei der Ausführung mehrerer BAPIs hintereinander
von FelixFICO » 20.04.2016 16:35 • Verfasst in ABAP® Core

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

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.