Code: Alles auswählen.
*&---------------------------------------------------------------------*
*& Include ZXV6PU08
*&---------------------------------------------------------------------*
*"*"Lokale Schnittstelle:
*" TABLES
*" C_VKDFIF STRUCTURE VKDFIF
* Autor: JOMA
* Datum: 13.12.2013
* KI23466
* Zu jeder Lieferung das entsprechende Planwarenausgangsdatum hinzulesen
break joma.
SELECT Wadat
FROM likp
into C_VKDFIF-zwadat.
endselect.
Hallo BarneyBarney hat geschrieben:Also wenn ich das richtig sehe, bist Du doch schon im Exit für die Transaktion VF04. Die Struktur C_VKDFIF ist doch der Changing-Parameter der Customer-Funktion - Du bist also auf einen guten Weg. Es reicht also aus, wenn Du den Wert des Feldes ZWADAT im Exit änderst. Dein Select ist da aber nicht hilfreich, weil Du ohne Selektionsbedingungen die ganze Datenbank abfragst und doch die Select-Schleife wird das Feld x-mal innerhalb des Exits geändert, bevor der Exit verlassen wird. Und das Ergebnis ist nur zufällig, weil am Ende der letzte gefundene Eintrag genommen wird.
Überlegt Dir also nach welchen Kriterien Du die Lieferung finden willst und baue dies als WHERE-Bedingung in Deinen Select ein.
Tot ziens
Code: Alles auswählen.
*&---------------------------------------------------------------------*
*& Include ZXV6PU08
*&---------------------------------------------------------------------*
*"*"Lokale Schnittstelle:
*" TABLES
*" C_VKDFIF STRUCTURE VKDFIF
* Autor: JOMA
* Datum: 13.12.2013
* KI23466
* Zu jeder Lieferung das entsprechende Planwarenausgangsdatum hinzulesen
break joma.
SELECT Wadat
FROM likp
into C_VKDFIF-zwadat
where likp-vbeln = C_VKDFIF-vbeln.
endselect.
jonas1996 hat geschrieben:Code: Alles auswählen.
SELECT Wadat FROM likp into C_VKDFIF-zwadat where likp-vbeln = C_VKDFIF-vbeln. endselect.
Code: Alles auswählen.
SELECT SINGLE Wadat
FROM likp
into C_VKDFIF-zwadat
where vbeln = C_VKDFIF-vbeln.
Ich habe jetzt den code angepasst nun findet er keine Syntaxfehler mehr und im debugger ist auch ersichtlich das ein datum in die variable C_VKDFIF-zwadat gespeichert wird.black_adept hat geschrieben:jonas1996 hat geschrieben:Code: Alles auswählen.
SELECT Wadat FROM likp into C_VKDFIF-zwadat where likp-vbeln = C_VKDFIF-vbeln. endselect.
Code: Alles auswählen.
SELECT SINGLE Wadat FROM likp into C_VKDFIF-zwadat where vbeln = C_VKDFIF-vbeln.
Hallo Stefanblack_adept hat geschrieben:Hallo Jonas,
beachte, dass der Übergabeparameter eine Tabelle (mit Kopfzeile) ist! Momentan änderst du Letztere - was du aber schlussendlich möchtest ist eine Änderung an der Tabelle selber.
Code: Alles auswählen.
*&---------------------------------------------------------------------*
*& Include ZXV6PU08
*&---------------------------------------------------------------------*
*"*"Lokale Schnittstelle:
*" TABLES
*" C_VKDFIF STRUCTURE VKDFIF
* Autor: JOMA
* Datum: 13.12.2013
* KI23466
* Zu jeder Lieferung das entsprechende Planwarenausgangsdatum hinzulesen
break joma.
SELECT Wadat
FROM likp
into C_VKDFIF-zwadat
where vbeln = C_VKDFIF-vbeln.
ENDSELECT.
Schau dir mal die Hilfe zum INTO und INTO TABLE an. Ansich machst du es schon richtig mit dem INTO.jonas1996 hat geschrieben:Weil der into zusatz sollte es meiner meinung nach in diese Tabelle hinein speichern oder nicht ?
C_VKDFIF ist eine interne Tabelle mit Kopfzeile. Es handelt sich also eigentlich um zwei Variablen, die unter dem selben Namen angesprochen werden. Dein Select liest das WADAT in die Kopfzeile C_VKDFIF. Du mußt diese Änderung wahrscheinlich noch in die interne Tabelle übernehmen (MODIFY ....).jonas1996 hat geschrieben: Wie soll ich den dies bewerkstelligen?
HalloJHM hat geschrieben:Schau dir mal die Hilfe zum INTO und INTO TABLE an. Ansich machst du es schon richtig mit dem INTO.jonas1996 hat geschrieben:Weil der into zusatz sollte es meiner meinung nach in diese Tabelle hinein speichern oder nicht ?
C_VKDFIF ist eine interne Tabelle mit Kopfzeile. Es handelt sich also eigentlich um zwei Variablen, die unter dem selben Namen angesprochen werden. Dein Select liest das WADAT in die Kopfzeile C_VKDFIF. Du mußt diese Änderung wahrscheinlich noch in die interne Tabelle übernehmen (MODIFY ....).jonas1996 hat geschrieben: Wie soll ich den dies bewerkstelligen?
Code: Alles auswählen.
*&---------------------------------------------------------------------*
*& Include ZXV6PU08
*&---------------------------------------------------------------------*
*"*"Lokale Schnittstelle:
*" TABLES
*" C_VKDFIF STRUCTURE VKDFIF
* Autor: JOMA
* Datum: 13.12.2013
* KI23466
* Zu jeder Lieferung das entsprechende Planwarenausgangsdatum hinzulesen
break joma.
SELECT Wadat
FROM likp
into C_VKDFIF-zwadat
where vbeln = C_VKDFIF-vbeln.
ENDSELECT.
MODIFY C_VKDFIF-zwadat[] from C_VKDFIF-zwadat.
Code: Alles auswählen.
LOOP AT c_vkdfif.
SELECT ... INTO c_vkdfif-zwadat.
MODIFY c_vkdfif.
Code: Alles auswählen.
LOOP AT c_vkdfif ASSIGNING <c_vkdfif>.
SELECT ... INTO <c_vkdfif>-zwadat.
Code: Alles auswählen.
* Entries: 100 (outer table), 20 (inner table)
* The entries to be modified: 50
* Actually, only the component FLAG is updated.
* However, the complete lines are moved.
LOOP AT ITAB INTO WA.
I = SY-TABIX MOD 2.
IF I = 0.
WA-FLAG = 'X'.
MODIFY ITAB FROM WA.
ENDIF.
ENDLOOP.
Code: Alles auswählen.
* Entries: 100 (outer table), 20 (inner table)
* Entries to be modified: 50
* The component FLAG is updated directly.
LOOP AT ITAB ASSIGNING <WA>.
I = SY-TABIX MOD 2.
IF I = 0.
<WA>-FLAG = 'X'.
ENDIF.
ENDLOOP.
Freundliche GrüsseAccessing the table entries directly in a "LOOP ... ASSIGNING ..."
accelerates the task of updating a set of lines of an internal table
considerably. Especially if inner tables must not be moved the
speed-up is high.
Code: Alles auswählen.
*&---------------------------------------------------------------------*
*& Include ZXV6PU08
*&---------------------------------------------------------------------*
*"*"Lokale Schnittstelle:
*" TABLES
*" C_VKDFIF STRUCTURE VKDFIF
* Autor: JOMA
* Datum: 13.12.2013
* KI23466
* Zu jeder Lieferung das entsprechende Planwarenausgangsdatum hinzulesen
break joma.
FIELD-SYMBOLS: <fs> type vkdfif.
ASSIGN C_vKDFIF TO <FS>.
LOOP AT c_VKDFIF
into <fs>.
SELECT SINGLE WADAT
from likp
into <fs>-zwadat
WHERE VBELN = <FS>-VBELN.
MODIFY c_vkdfif from <fs> INDEX sy-tabix.
ENDLOOP.
Code: Alles auswählen.
FIELD-SYMBOLS: <fs> TYPE vkdfif.
LOOP AT c_VKDFIF ASSIGNING <fs>.
SELECT SINGLE WADAT
FROM likp
INTO <fs>-zwadat
WHERE VBELN = <FS>-VBELN.
ENDLOOP.