SAP Jobsuche bei DV-Treff


Suchen
daytona80
vor 7 Jahre
Hallo,

leider reichen meine ABAP Kenntnisse nicht, um folgendes Problem zu lösen: Ich möchte zuerst aus der EKKO bestimmte Einkaufsbelege suchen und dann mit diesen Treffern aus der EKPO weitere Datensätze finden und intern speichern:

Die lt_ekko und ls_ekko werden noch korrekt befüllt, nur beim lesen ekpo werden dann keine Daten in die ls_ekpo geschrieben bzw. nur 0000...

DATA:

lt_ekko TYPE TABLE OF ekko,

ls_ekko TYPE ekko,

lt_ekpo TYPE TABLE OF ekpo,

ls_ekpo TYPE ekpo,

lt_ekpo1 TYPE TABLE OF ekpo.

CLEAR: lt_ekko,

lt_ekpo.

SELECT * FROM ekko INTO TABLE lt_ekko

WHERE lifnr = Parameter 1 AND

aedat >= Paramter 2.

LOOP AT lt_ekko INTO ls_ekko.

SELECT * FROM ekpo INTO TABLE lt_ekpo

WHERE ebeln = ls_ekko-ebeln AND

matnr = Paramter 3 AND

elikz <> 'X'.

APPEND ls_ekpo TO lt_ekpo1.

ENDLOOP.


Vielen Dank und viele Grüße
Förderer

wreichelt
vor 7 Jahre
Hallo,

ist denn sichergestellt dass Parameter 3 auch auf 18 Stellen ist und mit

Vornullen ?

Evtl. mal mit dem Debugger prüfen.

Gruß

Wolfgang

daytona80
vor 7 Jahre
Hallo,

ja die Paramter kommen aus dem zugehörigen FuBa. Der Paramter 3 ist vom gleichen Typ C(18) und ebenfalls MATNR. Der Wert liegt vor...

Liegt es evtl. daran dass die EKPO 2 Schlüsselfelder hat, ich aber nur einen Schlüssel EBELN abfrage???


Vielen Dank und viele Grüße
wreichelt
vor 7 Jahre
Hallo,

nein das sollte nichts ausmachen wenn nur ein Schlüssel abgefragt wird.

Gruß

Wolfgang

daytona80
vor 7 Jahre
also Werte zu:

ls_ekko-ebeln AND

i_qinf-matnr AND

elikz <> 'X'

sind vorhanden.

Keine Idee? 😕


Vielen Dank und viele Grüße
MrBojangles
vor 7 Jahre
Hallo Daytona,

so funktioniert es nicht. Du müsstest ggf. noch eine Schleife über die lt_ekpo machen (s.u.) oder mit FOR ALL ENTRIES oder am besten mit einem SELECT ... (INNER) JOIN ... arbeiten. Schau Dir mal die genannten Konzepte mithilfe der ABAP-Doku an.


DATA:
lt_ekko TYPE TABLE OF ekko,
ls_ekko TYPE ekko,
lt_ekpo TYPE TABLE OF ekpo,
ls_ekpo TYPE ekpo,
lt_ekpo1 TYPE TABLE OF ekpo.

CLEAR: lt_ekko,
lt_ekpo.

SELECT * FROM ekko INTO TABLE lt_ekko
WHERE lifnr = Parameter 1 AND
aedat >= Paramter 2.

LOOP AT lt_ekko INTO ls_ekko.
  SELECT * FROM ekpo INTO TABLE lt_ekpo
  WHERE ebeln = ls_ekko-ebeln AND
          matnr = Paramter 3 AND
         elikz <> 'X'.
  LOOP AT lt_ekpo into ls_ekpo     ">>>INSERT MR.B
    APPEND ls_ekpo TO lt_ekpo1.  
    CLEAR lt_ekpo.
  ENDLOOP.                    ">>>INSERT MR.B
ENDLOOP.               

Weiterhin viel Freude mit SAP...

Cheers

MrB.

MrBojangles
vor 7 Jahre
...Alternativ kannst Du das INTO TABLE beim 2. SELECT auch weglassen und direkt in LS_EKPO lesen:


...
LOOP AT lt_ekko INTO ls_ekko.
  SELECT * FROM ekpo INTO ls_expo  ">>> EDIT MR.B
  WHERE ebeln = ls_ekko-ebeln AND
          matnr = Paramter 3 AND
         elikz <> 'X'.
    APPEND ls_ekpo TO lt_ekpo1.  
 ENDSELECT.                  "INSERT MR.B                   
ENDLOOP.                       

Weiterhin viel Freude mit SAP...

Cheers

MrB.

daytona80
vor 7 Jahre
Perfekt, Danke😁
Vielen Dank und viele Grüße