기존의 Table 에 데이터 변경이 일어나면
신규로 만든 테이블에 기존의 데이터, 변경후 데이터를 신규 테이블에 넣고, 기존의 테이블은 바뀐 데이터를 넣어주는데,
특정 액션 발생시 기존의 Table에 문자열을 비교하여 바뀌기전의 데이터로 돌리는 로직을 구현해야 하는데,
잘되지 않아 고수님들의 조언좀 구해봅니다.
ex)
기존의 테이블 (A) 신규테이블
key 변경데이터 Key 이전 데이터(aa) 변경데이터
가 a 가 a b c d a v n d k e
가 v
가 d
가 k
가 e
저런식인데 신규테이블의 변경데이터를 이전데이터와 비교해서 이전 데이터를 기존의 (A)라는 테이블에 넣어주고 싶습니다.
가 a
가 b
가 c
가 d
<==요렇게
SPLIT wa-aa AT ' ' INTO TABLE itab.
신규테이블에 저 두값을 비교를 어떻게 하면 될까요? ㅠㅠ
댓글 5
-
Kate
2010.10.13 23:03
-
Begining ABAP
2010.10.13 23:09
네 ...
필드를 다 나열할수는 없으니, 하나만 적은거에요.
-
Kate
2010.10.14 01:36
sort 기존테이블.
loop at 기존테이블 into wa.
read table 신규테이블 with key 키필드 = wa-키필드 into wa2.
at new wa-키필드.
clear cnt.
SPLIT wa2-변경데이터 at space into itab.
endat.
cnt = cnt +1.
read table itab index cnt into itab .
wa-이전데이터 = itab-변경데이터.
modify.
endloop.
대충 제가 짜봤는데요..... 실해해본건 아니라서 오류가 생길거 같구요...문법도 그렇고..
그냥 생각나는대로 써본거라서 아이디어만 참고하시라고.....
더 좋은 방법도 물론 있겠지요..
그리고 보니까.... 해당키에 값의 수가 서로 달라지는 것 같은데요..
그럴거 같으면 아예 해당 키에 해당하는 값 모두를 그냥 delete하시고
SPLIT 한 값으로 Insert 하는 방법도 있을 것 같네요
-
Kate
2010.10.14 02:22
DATA: BEGIN OF WA1,
KEY1 TYPE C,
KEY2 TYPE C,
DATA1 TYPE STRING,
END OF WA1.
DATA: ITAB1 LIKE TABLE OF WA1 WITH HEADER LINE,
ITAB2 LIKE TABLE OF WA1 WITH HEADER LINE,
CNT TYPE INT4,
ITAB TYPE TABLE OF STRING,
WA TYPE STRING.
ITAB1-KEY1 = 1.
ITAB1-KEY2 = 'a'.
ITAB1-DATA1 = 'd'.
APPEND ITAB1.
ITAB1-KEY1 = 1.
ITAB1-KEY2 = 'a'.
ITAB1-DATA1 = 'e'.
APPEND ITAB1.
ITAB1-KEY1 = 1.
ITAB1-KEY2 = 'a'.
ITAB1-DATA1 = 'a'.
APPEND ITAB1.
ITAB1-KEY1 = 1.
ITAB1-KEY2 = 'a'.
ITAB1-DATA1 = 'b'.
APPEND ITAB1.
ITAB2-KEY1 = 1.
ITAB2-KEY2 = 'a'.
ITAB2-DATA1 = 'a b c d'.
APPEND ITAB2.
SORT ITAB1.
LOOP AT ITAB1.
READ TABLE ITAB2 WITH KEY KEY2 = ITAB1-KEY2.
AT NEW KEY2.
CLEAR CNT.
SPLIT ITAB2-DATA1 AT SPACE INTO TABLE ITAB.
ENDAT.
CNT = CNT + 1.
READ TABLE ITAB INDEX CNT INTO WA.
ITAB1-DATA1 = WA.
MODIFY ITAB1.
ENDLOOP.
LOOP AT ITAB1.
WRITE:/ ITAB1-DATA1.
ENDLOOP.
WRITE:/ '구분'.
LOOP AT ITAB2.
WRITE:/ ITAB2-DATA1.
ENDLOOP.
대충 짜본거고요.. 이 소스를 좀 변형해보시면 될 것 같은데.. 참고하세요
-
Begining ABAP
2010.10.14 18:10
케이트님 답변 감사합니다.
응용해서 한번 해봐야겠네요 ^- ^
근데.. 키가 좀 이상합니다.. 키값이 어떻게 '가'로 다 같을 수가 있죠? key라는 것은 해당 테이블에 유니크한 값인데....
다른 키 값이 또 있는건가요?