Code: Alles auswählen.
" Erst ein gewöhnlicher SELECT für die Auftragsnummern, dann:
SELECT tnum
INTO CORRESPONDING FIELDS OF TABLE gt_pos
FROM zztpos
FOR ALL ENTRIES IN gt_auftr
WHERE aufnr = gt_auftr-aufnr.
IF sy-subrc <> 0.
" Fehlermeldung
RETURN.
ENDIF.
DELETE ADJACENT DUPLICATES FROM gt_pos COMPARING tnum.
SORT gt_pos BY tnum.
" und jetzt nochmal einen Schritt hoch zu den Kopfdaten:
SELECT tnum " und 10 weitere Felder
INTO CORRESPONDING FIELDS OF TABLE gt_kopf
FROM zztkopf
FOR ALL ENTRIES IN gt_pos
WHERE tnum = gt_pos-tnum.
IF sy-subrc <> 0.
" Fehlermeldung
RETURN.
ENDIF.
DELETE ADJACENT DUPLICATES FROM gt_kopf COMPARING tnum.
SORT gt_kopf BY tnum.
" Und hier ein gewöhnlicher LOOP mit WRITE für die 11 Felder in gt_kopf
Code: Alles auswählen.
FUNCTION ZZTK.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*" IMPORTING
*" VALUE(ITNUM) LIKE ZZTK-TNUM
*" EXPORTING
*" VALUE(WZTK) LIKE ZZTK STRUCTURE ZZTK
*" EXCEPTIONS
*" NOT_FOUND
*"----------------------------------------------------------------------
SELECT SINGLE * FROM ZZTK WHERE TNUM = ITNUM.
IF SY-SUBRC NE 0.
CLEAR WZTK.
RAISE NOT_FOUND.
ELSE.
MOVE ZZTK TO WZTK.
ENDIF.
Code: Alles auswählen.
CALL FUNCTION 'ZZTK'
EXPORTING
ITNUM = " hier muss ich wohl tnum übergeben
IMPORTING
WZTK = " hier bekomme ich nur einen Datensatz zurück
EXCEPTIONS
NOT_FOUND = 1
OTHERS = 2.
Code: Alles auswählen.
IF ITNUM = ZZTK-TNUM AND ITNUM NE 0.
MOVE ZZTK TO WZTK.
EXIT.
ENDIF.
wie sieht der Baustein konkret aus? Stand diese Abfrage vor, oder nach dem SELECT SINGLE?abgefragt, ob - äh, ja was genau? - ob der aktuelle Datensatz schon dem gewünschten Datensatz entspricht! Schätze ich. Damit wird wohl eine Art Puffer realisiert.
Der SORT muss VOR dem DELETE erfolgen!bliss hat geschrieben: DELETE ADJACENT DUPLICATES FROM gt_pos COMPARING tnum.
SORT gt_pos BY tnum.
*Klugscheißermodus an* Bloß weil etwas nicht im (vorgesehenen) Kundennamensraum liegt heißt noch lange nicht, dass es dadurch automatisch im SAP-Namensraum liegt. So eine Aussage würde nur dann gelten,wenn SAP- und Kundennamensraum die Gesamtheit der Namensräume vollständig überdecken *Klugscheißermodus aus*ewx hat geschrieben:Der Funktionsbaustein ZZTK liegt im SAP-Namensraum!!
Funktionsbausteine müssen mit Z_ oder Y_ beginnen!
Viel mehr Code? Das Problem ist, dass ich mit der Aufgabenstellung am Freitag schon fertig sein muss und dabei war die Datenbeschaffung erst die Hälfte der Arbeit. Ich muss dringend meine Arbeitsweise ändern!a-dead-trousers hat geschrieben:Wenn du jeden Satz einzeln liest wirst du nicht nur um einiges mehr Code schreiben müssen, sondern auch die DB unnötig belasten.