form excel_to_datafile.
sort excel_tab by row col.
loop at excel_tab.
case excel_tab-col.
when '001'.
itab-matnr = excel_tab-value. <==1)
when '002'.
~
endloop.
endform.
loop at itab. <==2)
select scharg fcharg from ztpp0012
into corresponding fields of table itab_pp
where aufnr = itab-aufnr <==1')
and matnr = itab-matnr.
loop at itab_pp. <==3)
r_hogi-sign = 'I'.
r_hogi-option = 'BT'.
r_hogi-low = itab_pp-scharg .
r_hogi-high = itab_pp-fcharg .
append r_hogi.
if itab-hogi in r_hogi.
flag_ck = 0.
else.
flag_ck = 1.
endif.
endloop.
1)을 처리해서 itab에 값을 담고 itab인 2)를 돌려서 1')의 itab-aufnr과 itab-matnr을 조건으로
scharg와 fcharg의 번호를 가져와 3)과 같이 range를 주어야 합니다.
위와 같이 하면 실행은 되나 loop안에 select와 내부loop가 들어가 문제가 되는데요..
2)loop at itab. 를 read table로 처리해 레코드건수대로 읽어 처리할수 있는지요..
댓글 3
-
피크민
2008.04.11 18:59
-
초보아밥퍼
2008.04.11 23:18
제가 보기엔 위 로직이
loop at itab. <==2)
select scharg fcharg from ztpp0012
into corresponding fields of table itab_pp
where aufnr = itab-aufnr <==1')
and matnr = itab-matnr.
loop at itab_pp. <==3)
r_hogi-sign = 'I'.
r_hogi-option = 'BT'.
r_hogi-low = itab_pp-scharg .
r_hogi-high = itab_pp-fcharg .
append r_hogi.
if itab-hogi in r_hogi. <-- 필요없는 로직같은데요.
flag_ck = 0.
else.
flag_ck = 1.
endif.
endloop.
로직 보완이 조금 필요하시네요. 중첩루프등은 보완이 가능합니다.
-
쭌수야~!
2008.04.15 19:55
loop at itab 부분을 read table 로 바꾸려면...
do 문을 사용하여 itab의 건수만큼 read table 하는 수밖에 없을 것 같은데요.
결국 loop 문을 사용하던 do 문을 사용하던 루프를 돌려야 한다는 거죵.
실 사용은 do 문이 훨씬 번거롭겠죠.
제가 READ를 알기로는
READ는 KEY값에 만족하는 한건을 헤더로 올려서 그 데이터로 조작하는걸로알고있습니다..
레코드 건수대로하는것이 LOOP AT ITAB같습니다...제가 생각하기에는 그런데..아닐수도..ㅜㅜ