제가 특정화면 데이타를 일정 시간별(예를 들어30초마다 재조회)로 다시 refresh 하고 싶어서 관련 소스를 찾아봤더니 아래와 같은 소스가 있던데
아래 소스중
CALL FUNCTION 'Z_WAIT_30_SECS'
STARTING NEW TASK 'IF'
PERFORMING START_REFRESH ON END OF TASK.
여기에서 STARTING NEW TASK 'IF' 이게 무슨 의미인지 이해가 잘 안되네요. IF는 모가 들어가야 되는 거죠
제가 초보라 쉬운 설명 부탁드려요...
FUNCTION Z_WAIT_30_SECS.
DATA: ZTIME LIKE SY-UZEIT.
GET TIME.
ZTIME = SY-UZEIT + 30.
DO.
GET TIME.
IF SY-UZEIT >= ZTIME.
EXIT.
ENDIF.
ENDDO.
ENDFUNCTION.
Then create this test program.
REPORT ZREFRESH LINE-SIZE 132 no standard page heading.
DATA: ZNUM LIKE SY-TABIX.
GET TIME.
WRITE: /01 'Update Number:', ZNUM, SY-UZEIT.
CALL FUNCTION 'Z_WAIT_30_SECS'
STARTING NEW TASK 'IF'
PERFORMING START_REFRESH ON END OF TASK.
AT USER-COMMAND.
IF SY-UCOMM = 'REFR'.
SY-LSIND = SY-LSIND - 1.
ADD 1 TO ZNUM.
GET TIME.
WRITE: /01 'Update Number:', ZNUM, SY-UZEIT.
CALL FUNCTION 'Z_WAIT_30_SECS'
STARTING NEW TASK 'IF'
PERFORMING START_REFRESH ON END OF TASK.
ENDIF.
*----------------------------------------------------------------
* Program Subroutines
*----------------------------------------------------------------
FORM START_REFRESH USING TASKNAME.
* The SET USER-COMMAND initiates the communication back to the program
SET USER-COMMAND 'REFR'.
안녕하세요.
Starting new task 구문을 사용하면 새로운 세션을 하나 열어서 펑션을 실행하게 됩니다.
펑션 실행이 끝나는것과 상관없이 다음 구문으로 넘어가지요. 어싱크 방식으로 처리할때 사용합니다.
'IF' 요것은 태스크 이름을 쓰는것인데 펑션 다 끝나면 실행되는 FROM START_REFRESH USING TASKNAME.
에서 TASKNAME에 해당 태스크명이 옵니다.