Jump to content

[ABAP] Return Code auslesen (STMS)

Empfohlene Beiträge

Hallo Zusammen,

da ich leider bisher keine Antwort gefunden habe, versuche ich hier mal mein Glück.

ich habe ein Webdynpro, in dem alle Transportaufträge, inklusive System, Client, ect. angezeigt werden können.

Probleme habe ich beim Auslesen des Return Codes. Bisher kann ich leider nicht zwischen RC 0 und RC 4 unterscheiden. Die unterscheidung von RC 8 funktioniert aber.

    CASE ls_request-tracking_status.

              WHEN ''.     "Noch nicht transportiert

                ls_tr_info-tr_rcode = icon_led_inactive.

              WHEN '?'.    "Noch nicht transportiert

                ls_tr_info-tr_rcode = icon_led_inactive.

              WHEN 'S'.    "Erfolgreich

                ls_tr_info-tr_rcode = icon_led_green.

                <ls_reporting_data>-rcode = 0.

              WHEN 'W'.    "Mit Warnungen

                ls_tr_info-tr_rcode = icon_led_yellow.

                <ls_reporting_data>-rcode = 4.

              WHEN 'F'.    "Fehlerhaft

                ls_tr_info-tr_rcode = icon_led_red.

                <ls_reporting_data>-rcode = 8.

              WHEN 'Z'.    "Schwerwiegender Fehler

                ls_tr_info-tr_rcode = icon_status_critical.

              WHEN 'R'.    "Repariert

                ls_tr_info-tr_rcode = icon_wizard.

              WHEN OTHERS. "Unbekannter Status

                ls_tr_info-tr_rcode = icon_system_help.

            ENDCASE.

Bei allen Transporten wird mir der Status als 'S' ausgegeben. Ich habe aber Transporte, die einen RC4 haben.

Vielleicht kann mir von euch jemand weiter helfen.

Vielen Dank und Viele Grüße

neinal

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Wo wird denn die Struktur ls_request gefüllt? Hast du schonmal im Debugger geschaut, ob tracking_status überhaupt W enthält?

Das Feldsymbol zeigt dann jeweils auf eine Zeile deiner Ausgabetabelle?

Die Case-Kontrollstruktur alleine sagt ja nix aus.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hallo afo,

danke für deine Antwort.

Hier der komplette Teil des Codes:

LOOP AT <ls_reporting_data>-transport ASSIGNING <ls_transport>.

      CLEAR: lt_request, ls_request.

      CALL FUNCTION '/TMWFLOW/REP_EXPORT_BY_TRORDER'

        EXPORTING

          im_trorder    = <ls_transport>-tr_order

          im_request    = 'T'

          im_object     = ' '

        IMPORTING

          ex_lt_request = lt_request[].


      LOOP AT lt_request[] INTO ls_request.

        ls_tr_info-tr_system  = ls_request-tarsystem(3).

        ls_tr_info-tr_client  = ls_request-tarsystem+4.

        ls_tr_info-tr_date    = ls_request-as4date.

        ls_tr_info-tr_time    = ls_request-as4time.


*Transportstatus interpretieren.

        CASE ls_request-tracking_status.



          WHEN ''.     "Noch nicht transportiert

            ls_tr_info-tr_rcode = icon_led_inactive.

          WHEN '?'.    "Noch nicht transportiert

            ls_tr_info-tr_rcode = icon_led_inactive.

          WHEN 'S'.    "Erfolgreich

            ls_tr_info-tr_rcode = icon_led_green.

            <ls_reporting_data>-rcode = 0.

          WHEN 'W'.    "Mit Warnungen

            ls_tr_info-tr_rcode = icon_led_yellow.

            <ls_reporting_data>-rcode = 4.

          WHEN 'F'.    "Fehlerhaft

            ls_tr_info-tr_rcode = icon_led_red.

            <ls_reporting_data>-rcode = 8.

          WHEN 'Z'.    "Schwerwiegender Fehler

            ls_tr_info-tr_rcode = icon_status_critical.

          WHEN 'R'.    "Repariert

            ls_tr_info-tr_rcode = icon_wizard.

          WHEN OTHERS. "Unbekannter Status

            ls_tr_info-tr_rcode = icon_system_help.

        ENDCASE.


        CASE ls_request-tracking_step.

          WHEN 'E' OR 'I'.    "Export

            APPEND ls_tr_info TO <ls_transport>-tr_info.

          WHEN OTHERS.

        ENDCASE.

      ENDLOOP.


      SORT <ls_transport>-tr_info BY tr_date tr_time.

    ENDLOOP. 

tracking_status kann alle Werte enthalten, die in meiner Case-Anweisung abgefragt werden. In meinem Fall ist aber eben nur 'S' enhalten.

Richtig, das Feldsymbol zeigt auf eine Zeile der Ausgabetabelle.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

CALL FUNCTION '/TMWFLOW/REP_EXPORT_BY_TRORDER'

EXPORTING

im_trorder = <ls_transport>-tr_order

im_request = 'T'

im_object = ' '

IMPORTING

ex_lt_request = lt_request[].

LOOP AT lt_request[] INTO ls_request.

*Transportstatus interpretieren.

CASE ls_request-tracking_status.

(...)

ENDCASE.

ENDLOOP.

Mußt Du Debuggen. Der Funktionsbaustein liefert eine interne Tabelle lt_request[] zurück.

Schau Dir die Tabelle an, indem Du im Variablenfenster lt_request[] eingibst und Doppelklick darauf machst. Dann kommt die Tabellenübersicht.

Gibt der FB keine Fehler zurück, die abfangbar sind? Ein "refresh lt_request[]." vor dem FB-Aufruf schadet auch nicht, weil das "CLEAR: lt_request" nur die Kopfzeile zurücksetzt. Sonst bleibt eventuell die Tabelle aus dem vorigen Schleifendurchlauf bestehen.

Wenn in allen Zeilen der Tabelle der tracking_status falsch zurückkommt, kann die Fallunterscheidung nicht funktionieren. In einem solchen Fall mußt Du den FB in der SE37 untersuchen, indem Du die 3 Parameter als Test eintippst.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Ich möchte noch hinzufügen, dass du in beiden Schleifen über alle Sätze loopst und keine Abbruchbedingung oder ähnliches hast. Das heißt, dass am Ende nur der letzte Satz aus der zweiten Tabelle zum letzten Satz aus der ersten Tabelle ausschlaggebend ist.

Im Übrigen hoffe ich nicht, dass es sich bei der internen Tabelle um eine Tabelle mit Kopfzeile handelt. Außerdem würde ich für den zweiten Loop auch ein Fieldsymbol nehmen.

Den gerufenen FB kenne ich nicht. Ich vermute, dass das kein Standard-FB ist sondern eine kundeneigene oder Partner-Entwicklung in einem Kundennamensraum.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Guck dir mal die Tabelle E070 an. Hier sind die Kopfdaten der Transporte in deiner Importqueue enthalten.

Zum Hintergrund:

Die Daten die in deiner Importqueue angezeigt werden (Transaktion STMS_IMPORT) werden vom File System deines SAP-Systems gelesen. Deswegen musst du auch immer die Liste aktualisieren, wenn ein Transport nicht angezeigt wird.

Theoretisch können in deiner Importqueue also auch Transporte enthalten sein, welche in echt nie in dein SAP System importiert wurden. Dies ist z. B.: nach Systemkopien oder dem zurücksetzen deines Systems der Fall. Vorausgesetzt der Importbuffer wurde nicht zurückgesetzt sondern nur die Datenbank.

Wenn du mit Sicherheit sagen willst ob ein Transport in dein SAP System importiert wurde, musst du dir die Tabelle E070 ansehen. Ansonsten guck dir mal die Tabellen E07* an, hier gibt es noch weitere nützliche Tabellen zu den Transporten.

Gruß,

smite

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Vielen Dank für eure Antworten.

Leider bin ich noch nicht dazu gekommen mich darum zu kümmern und eure Tipps auszuprobieren, da ich leider krank bin. Nächste Woche geht's auch wieder in's Krankenhaus.

Wenn ich wieder fit bin, melde ich mich nochmal :)

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Nimm an der Diskussion teil

Du kannst jetzt hier posten und Dich später registrieren. Wenn Du bereits über eine Konto verfügst, melde Dich jetzt an, um mit Deinem Konto zu posten.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.


Fachinformatiker.de, 2019 SE Internet Services

fidelogo_small.png

if_icon-6-mail-envelope-closed_314900.pnSchicken Sie uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App


Get it on Google Play

Kontakt

Hier werben?
Oder senden Sie eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...

Wichtige Information

Fachinformatiker.de verwendet Cookies. Mehr dazu in unserer Datenschutzerklärung