oder den select in der Loop...Endloop-Schleife machen.black_adept hat geschrieben:1.) Du liese hier maximal einen! Satz aus der JEST - was du möchtest ist doch sicher ein "... FOR ALL ENTRIES" - oder?
Bisher baust du dir den Schlüssel für den letzten Eintrag aus deiner i_viqmel zusammen und liest den.
Ernsthaft? Ist ja tollereglam hat geschrieben:halte ich für keine gute Idee, denn die Statusbezeichner unterscheiden sich z.T. in den verschiedenen Sprachen...Andrea F. hat geschrieben:...
Ja, das wäre noch eine Möglichkeit. Ich wollt aber evtl. eh noch schauen, dass ich mir die TJ02T zur Hilfe nehme und den Statustext dazunehme (also z.B. TABG statt I0045)...
Code: Alles auswählen.
**************
* DEKLARATIONEN
*****************************************************
* Die JEST Tabelle noch um AUFNR ergänzen
TYPES: BEGIN OF t_jest,
AUFNR TYPE viqmel-aufnr,
OBJNR type jest-OBJNR,
STAT type jest-STAT,
INACT type jest-INACT,
CHGNR type jest-CHGNR,
END OF t_jest.
* Definition des Hilfstabellentyps
TYPES: BEGIN OF t_tab,
* Tabellenschlüssel
AUFNR TYPE viqmel-aufnr,
* Je Status ein Feld zum ankreuzen
I0001(1) type c,
I0002(1) type c,
I0003(1) type c,
I0004(1) type c,
I0045(1) type c,
I0027(1) type c,
END OF t_tab,
* Hilfstabelle definieren
DATA: i_help_jest TYPE TABLE OF t_tab WITH HEADER LINE,
i_jest TYPE TABLE OF t_jest WITH HEADER LINE.
*&---------------------------------------------------------------------*
*& Form read_jest
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM read_jest .
* Alle Statussätze über ONROR lesen
SELECT ONOR~AUFNR
JEST~OBJNR
JEST~STAT
JEST~INACT
JEST~CHGNR
INTO TABLE i_jest
FROM onror
* Left Join, falls es keinen Eintrag in JEST zur AUFNR gibt, wird torzdem ein Satzt benötigt!
LEFT JOIN jest
ON jest~OBJNR EQ onror~objnr
FOR ALL ENTRIES IN i_viqmel
WHERE onror-aufnr EQ i_viqmel-aufnr.
SORT i_jest BY aufnr.
* Jetzt die Hilfstabelle füllen, mittels Assign
* könnte man hier noch ein paas Millisekunden sparen
LOOP AT i_jest.
AT NEW aufnr.
clear i_help_jest.
i_help_jest-aufnr = i_jest-aufnr.
ENDAT.
CASE i_jest-istat.
WHEN 'I0001'.
i_jest-istat-I0001 = 'X'.
WHEN 'I0002'.
i_jest-istat-I0002 = 'X'.
WHEN 'I0003'.
i_jest-istat-I0003 = 'X'.
WHEN 'I0004'.
i_jest-istat-I0004 = 'X'.
WHEN 'I0045'.
i_jest-istat-I0045 = 'X'.
WHEN 'I0027'.
i_jest-istat-I0027 = 'X'.
ENDCASE.
AT END aufnr.
APPEND i_help_jest.
ENDAT.
ENDLOOP.
ENDFORM. " read_aufk
*&---------------------------------------------------------------------*
*& Form ausgabe
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM ausgabe .
LOOP AT i_viqmel.
CLEAR: equi, makt, kna1, i_jest.
READ TABLE i_equi WITH KEY equnr = i_viqmel-equnr BINARY SEARCH.
READ TABLE i_makt WITH KEY matnr = i_equi-matnr BINARY SEARCH.
READ TABLE i_kna1 WITH KEY kunnr = i_viqmel-kunum BINARY SEARCH.
READ TABLE i_aufk WITH KEY aufnr = i_viqmel-aufnr BINARY SEARCH.
* Hilfstabelle lesen
READ TABLE i_help_jest WITH KEY objnr = i_viqmel-aufnr BINARY SEARCH.
CASE i_viqmel-qmart.
WHEN 'Z1'.
WRITE: 'Achtung! Es wurde bereits vorab ein Teil im Austausch geliefert!' COLOR 6 INVERSE INTENSIFIED.
WHEN 'Z4'.
WRITE: 'Achtung! Das Material ist zur Gutschrift eingegangen!' COLOR 6 INVERSE INTENSIFIED.
WHEN 'Z7'.
WRITE: 'Achtung! Dieser Vorgang ist eine Kundenleihgabe!' COLOR 6 INVERSE INTENSIFIED.
ENDCASE.
WRITE: / 'CS-Meldungs-Nr.:', i_viqmel-qmnum.
WRITE: / 'CS-Auftrags-Nr.:', i_viqmel-aufnr.
WRITE: / 'Equipment :', i_viqmel-equnr, i_makt-matnr, i_makt-maktx.
WRITE: / 'Kunde :', i_viqmel-kunum.
WRITE: / i_kna1-name1 UNDER i_viqmel-kunum.
SKIP.
WRITE: / 'Eingegangen am :', i_viqmel-strmn.
WRITE: / 'Bearbeiter (CS):', i_viqmel-qmnam.
SKIP.
WRITE: / 'Statusübersicht:'.
SKIP.
* Ampeln anhand der Hilfstabelle ausgeben
* Status von i_jest-stat abfragen -> Auftrag erledigt wenn i_jest-stat = 'I0045'
IF i_help_jest-I0045 = 'X'.
WRITE: / icon_green_light AS ICON, ' Auftrag komplett erledigt?'..
ELSE.
WRITE: / icon_red_light AS ICON, ' Auftrag komplett erledigt?'..
ENDIF.
SKIP.
IF i_help_jest-I0001 = 'X'.
WRITE: / icon_green_light AS ICON, ' Gerät eingegangen (noch nicht in Reparatur)? '.
ELSE.
WRITE: / icon_red_light AS ICON, ' Gerät eingegangen (noch nicht in Reparatur)? '.
ENDIF.
*** Und soweiter für jeden Status ***
SKIP.
ULINE.
ENDLOOP.
ENDFORM. " ausgabe