REPORT Z15_033.
data : box(1) type c, lines type i,
num(1) type c.
set pf-status 'CHECK'.
do 5 times.
num = sy-index.
write : / box as checkbox, '라인 번호 : ', num.
hide : box, num.
enddo.
lines = sy-linno.
top-of-page.
write 'Select some checkboxes'.
uline.
at user-command.
case sy-ucomm.
when 'READ'.
set pf-status 'CHECK' excluding 'READ'.
box = space.
do lines times.
read line sy-index field value box.
if box = 'X'.
write : / '라인번호', num, '이 선택되었습니다'.
box = space.
modify line sy-index
field value box
field format box input off
num color 6 inverse on.
endif.
enddo.
endcase.
굵은부분만 이해가 되질 않네요.
1.linno는 각 페이지의 라인수인데 do구문에 적용되면 어케되나요?
2.read line 구문은 box 랑 인덱스변수는 어떻게 적용되나요?
3. space 라는 것은 체크박스가 빈공간으로 되나여?
4. X'라는 것은 무엇인지 궁금합니다!!
1. sy-linno 는 시스템 변수로서 화면상의 라인이 증가(WRITE OR ULINE) 되게 되면 그 수도 증가하게됩니다.
2. LINES 에 대한 내부 인덱스를 가지기 때문에 DO 를 하면서 1부터 1씩 증가됩니다.
3. Check BOX를 빈공간으로 하는것이 아닌 BOX 라는 변수의 값을 초기화시킨후
read line 구문으로 데이터값을 BOX 에 받아옵니다.
SY-SUBRC 를 CHECK 하여 분기하였다면 SPACE를 넣어줄 필요가 없겠지만
read line 시 데이터가 없을 경우 BOX 에는 이전 데이터값이 그대로 존재하여 원하지 않는 결과가 나올수 있습니다.
4. 'X'라는 것은 CHECK 박스의 경우 X OR NULL 값을 가지게 되기 때문에 선택을 했을경우 아래로직을 타도록 해놨네요.