Code: Alles auswählen.
Insert LINES OF gt_bkpf from gt_bkpf-rfsch to gt_zzzz-object_id.
Code: Alles auswählen.
data: ls_zzzz like line of gt_zzzz,
ls_bkpf like line of gt_bkpf.
loop at gt_bkpf into ls_bkpf.
ls_zzzz-object_ID = ls_bkpf-rfsch.
append ls_zzzz to gt_zzzz.
endloop.
Code: Alles auswählen.
gt_zzzz = VALUE #( FOR <zeile> IN gt_bkpf ( object_ID = <zeile>-rfsch ) ).
SELECT ist ungeeignet, aber nicht aus dem von Dir genannten Grund, sondern weil man damit nur aus Datenbanktabellen lesen kann, und Du willst Deine Daten ja einer internen Tabelle entnehmen. Die WHERE-Bedingung hingegen ist kein Problem; es ist zulässig, bei SELECT die WHERE-Bedingung einfach wegzulassen, wenn man alle Zeilen einer Datenbanktabelle haben möchte.Julia hat geschrieben:Die zweite Überlegung war, dies mit einem SELECT zu lösen. Aber da bleibe ich dann sehr schnell stehen, da ich eigentlich keine WHERE-Bedingung habe. Ich möchte einfach generell alle Einträge übernehmen.
Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
Sonne1234
Code: Alles auswählen.
gt_zzzz = CORRESPONDING #( gt_bkpf MAPPING object_id = rfsch ).
Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag (Insgesamt 2):
DeathAndPain • Sonne1234
Code: Alles auswählen.
Loop at gt_vbrk into wa_vbrk
where fkart = 'X'.
move-CORRESPONDING wa_vbrk to gt_sap.
endloop.
Code: Alles auswählen.
types: BEGIN OF ty_vbrk,
vbeln TYPE c length 30,
fkart TYPE vbrk-fkart,
fkdat TYPE vbrk-fkdat,
rfbsk type vbrk-rfbsk,
END OF ty_vbrk.
data: wa_vbrk TYPE ty_vbrk,
gt_vbrk TYPE STANDARD TABLE OF ty_vbrk,
gt_sap type STANDARD TABLE OF ty_vbrk.
Code: Alles auswählen.
gt_sap = value #( for gt_vbrk_fkart = 'X' in gt_vbrk ).
Code: Alles auswählen.
gt_sap = value #( gt_vbrk[ fkart = 'X' ] ).
Code: Alles auswählen.
LOOP AT lt_file.
CASE lt_file-col.
WHEN '0001'.
MOVE lt_file-value TO lt_po_update-location.
WHEN '0002'.
MOVE lt_file-value TO lt_po_update-matnr.
WHEN '0003'.
MOVE lt_file-value TO lt_po_update-kurtxt.
WHEN '0004'.
MOVE lt_file-value TO lt_po_update-justit.
WHEN '0005'.
MOVE lt_file-value TO lt_po_update-menge.
WHEN '0006'.
MOVE lt_file-value TO lt_po_update-category.
WHEN '0007'.
MOVE lt_file-value TO lt_po_update-ebeln.
WHEN '0008'.
MOVE lt_file-value TO lt_po_update-eindt.
ENDCASE.
AT END OF row.
APPEND lt_po_update.
CLEAR lt_po_update.
ENDAT.
ENDLOOP.
Code: Alles auswählen.
DATA: ...
wa_sap TYPE ty_vbrk,
...
LOOP ...
MOVE-CORRESPONDING wa_vbrk TO wa_sap.
INSERT wa_sap INTO gt_sap. " oder APPEND ... TO ...
ENDLOOP.
Code: Alles auswählen.
LOOP ...
INSERT wa_vbrk INTO gt_sap. " oder APPEND ... TO ...
ENDLOOP.
Code: Alles auswählen.
gt_sap = FILTER #( gt_vbrk WHERE fkart = 'X' ).
Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
Sonne1234
Code: Alles auswählen.
TYPES: BEGIN OF type_one,
field TYPE c LENGTH 4,
flag TYPE abap_bool,
END OF type_one,
type_one_table TYPE STANDARD TABLE OF type_one WITH DEFAULT KEY,
BEGIN OF type_two,
field TYPE c LENGTH 4,
dummy TYPE c LENGTH 2,
END OF type_two,
type_two_table TYPE STANDARD TABLE OF type_two WITH DEFAULT KEY.
DATA(one) = VALUE type_one_table(
( field = 'aa' flag = abap_false )
( field = 'bb' flag = abap_true )
( field = 'cc' flag = abap_true )
( field = 'dd' flag = abap_false ) ).
DATA(two) = VALUE type_two_table( FOR line IN one WHERE ( flag = abap_true ) ( field = line-field ) ).
cl_demo_output=>display_data( two ).