이글은 자료실에 있는 DynamicOpenSql 영문파일을 정리한 것이다.
Dynamic Open SQL.
내역 : UPDATE/DELETE절을 이용한 동적처리
---------------------------------------------------------------------
사전지식 : Oracle Native SQL사용가능( 집합함수를 사용할 줄 안다.)
---------------------------------------------------------------------
문법 : Rel6.10 이전 방식임
명령 동적처리부분 FROM work_area
DELETE ( <table_clause> ) FROM <fs_wa>.
UPDATE ( <table_clause> ) FROM <fs_wa>.
단점 : <fs_wa>를 통해서 update/delete되어야 하기 때문에 <fs_wa>를 명시적으로 사용하는데 한계가 있다.
이를 해결하기 위해 Rel6.10부터는 동적 UPDATE/DELETE 구문을 보다 상세히 제에할수 있게 하였다.
생각 : 본문의 주석을 잘 읽어 볼것.
프로그램 원문
---------------------------------------------------------------------
REPORT YTEST_DYNAMIC_OPEN_SQL04.
types: begin of key,
mandt type sflight-mandt,
carrid type sflight-carrid,
connid type sflight-connid,
end of key.
data: lt_tabnames type table of tabname,
lv_dref type ref to data.
field-symbols: <fs_tabname> type tabname,
<fs_wa> type any,
<fs_key> type key.
"3개의 Table을 대상으로 작업할 것이다.(작업대상을 추가한다)
append 'SFLIGHT' to lt_tabnames.
append 'SPFLI' to lt_tabnames.
append 'SBOOK' to lt_tabnames.
"작업대상을 기준으로 최외곽 Loop를 돌린다.
loop at lt_tabnames assigning <fs_tabname>.
"lv_dref를 table명으로 구조체를 만든다
create data lv_dref type (<fs_tabname>).
"만들어진 구조체를 가공하기 위한 Field Symbol에 역참조 시킨다.
assign lv_dref->* to <fs_wa>.
"실질적으로 가공할수 있는 <fs_wa>에서 Primary값을 명시적으로 변경하기위해 <fs_key>에 casting한다
assign <fs_wa> to <fs_key> casting.
"선택된 Table중 where carrid = 'LH' and connid = '0455'인 항목으로 Loop를 형상한다
select * from (<fs_tabname>) into <fs_wa>
where carrid = 'LH' and connid = '0455'.
"키값을 변경하기 때문에 Update는 사용할수 없다.
"따라서 기존 데이타를 삭제한후 키값을 변경하여
DELETE (<fs_tabname>) from <fs_wa>.
<fs_key>-carrid = 'UA'.
<fs_key>-connid = '3505'.
"데이타를 추가한다.
INSERT (<fs_tabname>) from <fs_wa>.
endselect.
endloop.
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
42 | ABAP [선언문] 명령어 정리표 Rev01 [57] | 문바이 | 2011.05.18 | 6220 |
41 | ABAP Certi 7.0 요약 정리 [101] | 뽀꼬 | 2011.06.15 | 5661 |
40 | [ABAPDOCU] 뜯어봅시다. 2 [42] | 뽀꼬 | 2011.09.06 | 2147 |
39 | [ABAPDOCU] 뜯어봅시다. 3 [30] | 뽀꼬 | 2011.09.07 | 937 |
38 | [ABAPDOCU] 뜯어봅시다 1 [54] | 뽀꼬 | 2011.09.08 | 1752 |
37 | [ABAPDOCU] 뜯어봅시다 4 [20] | 뽀꼬 | 2011.09.08 | 684 |
36 | [ABAPDOCU] 뜯어봅시다 5 [16] | 뽀꼬 | 2011.09.09 | 556 |
35 | [ABAPDOCU] 뜯어봅시다 6 [22] | 뽀꼬 | 2011.09.14 | 519 |
34 | [번외] Field symbol과 Data reference [14] | 뽀꼬 | 2011.09.14 | 949 |
33 | [ABAPDOCU] 뜯어봅시다 7 [14] | 뽀꼬 | 2011.09.15 | 525 |
32 | [ABAPDOCU] 뜯어봅시다 8 [14] | 뽀꼬 | 2011.09.19 | 466 |
31 | [ABAPDOCU] 뜯어봅시다 9 [15] | 뽀꼬 | 2011.09.20 | 386 |
30 | [ABAPDOCU] 뜯어봅시다 10 [14] | 뽀꼬 | 2011.09.22 | 389 |
29 | [ABAPDOCU] 뜯어봅시다 11 [14] | 뽀꼬 | 2011.09.26 | 385 |
28 | [ABAPDOCU] 뜯어봅시다 12 [7] | 뽀꼬 | 2011.09.28 | 294 |
27 | [ABAPDOCU] 뜯어봅시다 13 [7] | 뽀꼬 | 2011.09.29 | 260 |
26 | [ABAPDOCU] 뜯어봅시다 14 [10] | 뽀꼬 | 2011.09.30 | 275 |
25 | [ABAPDOCU] 뜯어봅시다 15 [7] | 뽀꼬 | 2011.10.04 | 315 |
24 | [ABAPDOCU] 뜯어봅시다 16 [8] | 뽀꼬 | 2011.10.07 | 285 |
23 | [ABAPDOCU] 뜯어봅시다 17 [6] | 뽀꼬 | 2011.10.11 | 484 |
좋은 정보 감사합니다. 잘 보고 갑니다.