TABLES sflight.
DATA wa TYPE sflight.
MOVE 'LH' TO wa-carrid.
MOVE '0064' TO wa-connid.
UPDATE sflight FROM wa.
UPDATE sflight
SET price = '100'
WHERE carrid = 'AZ'
AND connid = '0011'.
IF sy-subrc EQ 0.
WRITE 'Update를 성공하였습니다'.
ENDIF.
오류가 뜨는건 아닌데 업데이트가 성공했으면 '
'Update를 성공하였습니다'. 이 문장이 떠야 하는거 아닌가요?
아무런 반응이 없네요...^^;;; 왜 그럴까요???? Update를 실패해서 그런가요??(실패라면 왜 실패했는지도 좀...^^;;;)
(혹시 테이블에 데이터가 없어서 그런건가요??)
일단 안뜨는건 데이터가 없어서 그럽니다. TD를 CARRId = 'AA, CONNID = '0017'로 두고 해보세요.
첫번째 UPDATE FROM 은 단일 레코드만 업데이트 하는 구문입니다.
따라서, CARRID와, CONNID만으로는 하나의 엔트리만을 추출할수가없겠죠? AA/0017인게 많으니깐요.
그래서 키값은 FLDATE 필드까지 지정해주시고..
값을 봐꿀필드.. 에도 값을 넣어주시면 그 필드가 값이 봐뀌게 될겁니다.
예를들면..
MOVE 'AA' TO wa-carrid.
MOVE '0017' TO wa-connid.
MOVE '20120215' to wa-FLDATE.
MOVE 1000 to wa-PRICE.
UPDATE sflight FROM wa.
이렇게..?
그리구 두번째 방법은 조건에 맞는 여러 엔트리의 값을 봐꾸는거구요 결과가 안뜨는건 AZ/0011인 값이 없어서 그렇습니다.
UPDATE sflight
SET price = '100'
WHERE carrid = 'AA'
AND connid = '0017'. 로 해보시면 price 가 100으로 바뀐걸 확인 하실 수 있으실겁니다.
그리구 위 코드대로하면.. 첫번째 방법이 성공해도 두번째방법이 실패하면 결과가 뜨지 않아요..
첫번째 방법 후에
IF sy-subrc EQ 0.
WRITE '1번방법으로 Update를 성공하였습니다'.
ENDIF.
2번째 방법 후에
IF sy-subrc EQ 0.
WRITE '2번방법으로 Update를 성공하였습니다'.
ENDIF.
요렇게 넣어주시면 결과 확인하기도 쉬우실꺼같아요 '_'..