neinal Geschrieben 19. Mai 2014 Geschrieben 19. Mai 2014 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 Zitieren
afo Geschrieben 19. Mai 2014 Geschrieben 19. Mai 2014 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. Zitieren
neinal Geschrieben 19. Mai 2014 Autor Geschrieben 19. Mai 2014 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. Zitieren
Wurmi Geschrieben 20. Mai 2014 Geschrieben 20. Mai 2014 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. Zitieren
afo Geschrieben 20. Mai 2014 Geschrieben 20. Mai 2014 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. Zitieren
smite Geschrieben 26. Mai 2014 Geschrieben 26. Mai 2014 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 Zitieren
neinal Geschrieben 18. Juni 2014 Autor Geschrieben 18. Juni 2014 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 Zitieren
smite Geschrieben 20. Juni 2014 Geschrieben 20. Juni 2014 Kein Problem, Gute Besserung :-). Gesendet von meinem iPhone mit Tapatalk Zitieren
neinal Geschrieben 12. Oktober 2014 Autor Geschrieben 12. Oktober 2014 Sooo... ich bin auch wieder da. Habe jetzt einen FuBa gefunden, der die Cofiles liest. Jetzt klappt auch alles wunderbar und der Kunde ist glücklich Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.