Skip to Content
0
Sep 14, 2023 at 04:57 PM

How to perform this UPDATE

166 Views

Hey guys,

Help me with this problem:

I'm trying to make an UPDATE of just two pieces of data in my table, however, I don't understand how I can make this WHERE work, if I put it as IN the UPDATE will be done in all the fields in my table, this shouldn't happen, the UPDATE will be done only in the field selected in SALV.

*&---------------------------------------------------------------------*
*& Report zcadr_canteen_register
*&---------------------------------------------------------------------*
REPORT zcadr_canteen_register.
INCLUDE zcadr_canteen_register_s01.
INCLUDE zcadr_canteen_register_f01.
START-OF-SELECTION.
PERFORM read_data.
PERFORM display_alv.
*&---------------------------------------------------------------------*
*& Include zcadr_canteen_register_s01
*&---------------------------------------------------------------------*
TABLES: zcr_canteen, t001w.
DATA: gt_canteen TYPE STANDARD TABLE OF zcr_canteen,
gs_cant TYPE zcr_canteen,
go_alv TYPE REF TO cl_salv_table.
SELECTION-SCREEN BEGIN OF BLOCK b1.
SELECT-OPTIONS: so_werk FOR t001w-werks.
SELECTION-SCREEN END OF BLOCK b1.
*&---------------------------------------------------------------------*
*& Include zcadr_canteen_register_f01
*&---------------------------------------------------------------------*
FORM save_canteen.
DATA lv_werk_valid TYPE abap_bool.
SELECT code name werk FROM zcr_canteen INTO TABLE gt_canteen.
SELECT SINGLE * FROM t001w WHERE werks = zcr_canteen-werk.
gs_cant-code = zcr_canteen-code.
gs_cant-name = zcr_canteen-name.
gs_cant-werk = zcr_canteen-werk.
UPDATE zcr_canteen SET name = zcr_canteen-name, werk = zcr_canteen-werk WHERE code IN @so_werk.
ENDFORM.
FORM read_data.
SELECT * FROM zcr_canteen INTO TABLE gt_canteen
WHERE code IN so_werk.
ENDFORM.