1)
loop at iqals.
move-corresponding iqals to iqals_i.
if iqals-value01 is not initial.
iqals_i-input = iqals-value01.
append iqals_i .
endif.
~
endloop.
iqals_k
matnr aufnr hogi merknr c_sol val1 val2 val3 val4 val5
c31207 1012306 6447 10 190 189.3 149.8 139.3
c31207 1012306 6447 20 150.5 189.3 149.8 139.3
c31207 1012306 6447 30 140 189.3 149.8 139.3
c31207 1012306 6447 40 180 189.3 149.8 139.3
c31207 1012306 6447 50 75 189.3 149.8 139.3
value1~5까지 값이 있는것만 input에 넣어주기 위해 1)과 같이 하여 아래의 1)'를 만들었습니다.
iqals_i <===1)'
matnr aufnr hogi INPUT
c31207 1012306 6447 189.3
c31207 1012306 6447 149.8
c31207 1012306 6447 139.3
출력형태를 c_sol에 맞는 input(null은제외)을 차례로 주기 위해 1)와 같이 loop를 돌리는데
iqals_k에 해당하는 iqals_i의 값이 tabix의 값으로 들어가므로 제대로 들어가지 않습니다.
<출력형태>
matnr aufnr hogi c_sol INPUT
c31207 1012306 6447 190 189.3
c31207 1012306 6447 150.5 149.8
c31207 1012306 6447 140 139.3
2)
loop at iqals_k.
read table iqals_i index sy-tabix. <==가)
modify iqals_k .
endloop.
가)의 내용을
read table iqals_i with key aufnr = iqals_i-aufnr
matnr = iqals_i-matnr
hogi = iqals_i-hogi
binary search.
와 같이 해보았지만 key값에 c_sol의 순서를 정해야 할거 같은데..
해결이 잘 되지 않습니다.
제가 궁금한건 출력형태처럼 좌측의val1 ~val5까지의 값을 아래로 출력되게 오라클의 case when처럼 만들때
1)과 같이 하는게 맞는지 궁금하구요..
원본인 iqals_k에 아래로 출력되게 만든 1)의 input값을 붙힐때 2)와 같이 처리시 read table를 어떻게 쓰는
지 고수님들의 의견을 듣고 싶습니다.
댓글 12
-
할일없는무급개발자
2008.05.02 22:22
-
풍뎅이
2008.05.02 23:08
필드심벌을 써서 do로 돌린다는건.. 조금더 자세한 설명해 주시면 고맙겠습니다..
-
할일없는무급개발자
2008.05.03 01:06
FIELD-SYMBOLS <FIELD>.
DATA :FNAME(20).
DATA : CN(1) TYPE N.
DATA : CC(1) TYPE N.
cn = '5'.
CLEAR : FNAME.
LOOP AT iqals_k
DO CN TIMES.
CC = CC + 1 .
CONCATENATE 'iqals_k-VAL' CC INTO FNAME. "이러면 필드이름이 iqals_k-VAL1, iqals_k-VAL2,
" iqals_k-VAL3, iqals_k-VAL4, iqals_k-VAL5
"이런식으로 들어 오겠죠?
ASSIGN (FNAME) TO <FIELD>.
MOVE 필요한필드 TO 필요한필드.
MOVE <FIELD> TO ITAB-INPUT.
APPEND ITAB.
ENDDO.
CLEAR CC.
ENDLOOP. -
할일없는무급개발자
2008.05.03 01:08
대충 이런식으로 하면될듯한대용...
구문에러 날 확율이 많네요.
ABAP 시작한지가 얼마안되서 ;;
구문에러 고치시고 디버깅 해서 FNAME 필드에 값들어가시는거 보면 대충 이해하실꺼에용..
-
풍뎅이
2008.05.03 02:24
제가 read table를 쓴것처럼..
이렇게 해주면 input는 바로 들어오지만 앞의 c_sol이 반복되어 들어옵니다.
matnr aufnr hogi c_sol INPUT
c31207 1012306 6447 190 189.3
c31207 1012306 6447 190 149.8
c31207 1012306 6447 190 139.3
c31207 1012306 6447 150.5 189.3
c31207 1012306 6447 150.5 149.8
c31207 1012306 6447 150.5 139.3
c31207 1012306 6447 140 189.3
c31207 1012306 6447 140 149.8
c31207 1012306 6447 140 139.3 -
풍뎅이
2008.05.03 02:25
결과는
matnr aufnr hogi c_sol INPUT
c31207 1012306 6447 190 189.3
c31207 1012306 6447 150.5 149.8
c31207 1012306 6447 140 139.3
c31207 1012306 6447 190 189.3
c31207 1012306 6447 150.5 149.8
c31207 1012306 6447 140 139.3
c31207 1012306 6447 190 189.3
c31207 1012306 6447 150.5 149.8
c31207 1012306 6447 140 139.3
이렇게 들어와야 되거든요..
-
할일없는무급개발자
2008.05.03 02:37
제가 이해를 잘못해서 그런지 모르겠는대용 val1 val2 val3 val4 val5 이 값을 세로로 표현하고 싶은게 아니면
제가 이해를 잘못했네요..
근댕
matnr aufnr hogi c_sol INPUT
c31207 1012306 6447 190 189.3
c31207 1012306 6447 190 149.8
c31207 1012306 6447 190 139.3
c31207 1012306 6447 150.5 189.3
c31207 1012306 6447 150.5 149.8
c31207 1012306 6447 150.5 139.3
c31207 1012306 6447 140 189.3
c31207 1012306 6447 140 149.8
c31207 1012306 6447 140 139.3
제생각은 이게 맞는거 같은대용..
-
할일없는무급개발자
2008.05.03 02:39
matnr aufnr hogi c_sol 이거까지 WHERE 조건걸고 LOOP 안에 룹 돌리면 어떨까용???? -
풍뎅이
2008.05.03 02:54
LOOP AT iqals_k where matnr = ~
로 조건을 주신다는 말씀이신가요?
1)에서 iqals_i가 만들어지므로 그럴수가 없는데요..
LOOP AT iqals_k .
DO CN TIMES.
CC = CC + 1 .
CONCATENATE 'iqals_k-value' CC INTO FNAME.
ASSIGN (FNAME) TO <FIELD>.
move-corresponding iqals_k to iqals_i. ==>1)
MOVE <FIELD> TO iqals_i-INPUT.
APPEND Iqals_i.
ENDDO. -
할일없는무급개발자
2008.05.03 03:03
고수님들 한티 물어봐야할듯하네여
아직 실력이 부족해서 도움이 안됬네요 ㅜㅜ.......
-
초보아밥퍼
2008.05.06 17:51
우선 iqals_K에 필요없는 레코드는 제거하시공
FIELD-SYMBOLS
.
DATA :FNAME(20).
DATA : CN(1) TYPE N.
DATA : CC(1) TYPE N.
cn = '3'.
CLEAR : FNAME.
DO CN TIMES.
CLEAR : CC.
LOOP AT iqals_k.
MOVE-CORRESPONDING iqals_K TO iqals_I.
CC = CC + 1 .
CONCATENATE 'iqals_k-VAL' CC INTO FNAME.
ASSIGN (FNAME) TO.
MOVETO iqals_I-INPUT.
APPEND iqals_I.
CLEAR iqals_I.
ENDLOOP.
ENDDO.
DO 와 LOOP만 위치 바꿔주시면 나올듯 하네요.
단 레코드가 3개이고 VAL값도 3개만 있을경우 가능하겠네요. 소스 빼끼기 ^^ㅋ
-
풍뎅이
2008.05.07 01:57
답변주신 모든 분께 감사드립니다..
이럴 경우는 read table로는 불가능할꺼 같고 LOOP 안에 LOOP 을하거나
형태가 같으면 필드심벌을 써서 DO 로 돌려서 보통 해결하는걸로 알고 있습니당.