모듈풀로 간단한 프로그램을 만들고 있는데요. 로그인 화면을 하는 스크린입니다.
아래 사진은 기본적인 1000번 스크린에서 '로그인' 버튼을 누르면 1100스크린이 뜨면서 로그인을 시도합니다.
그러려면 아래 사진과 같이 ID와 password를 입력받는데요
비밀번호 입력할 때 보통 웹페이지에서나 윈도 로그인할때 등등 비밀번호는 * 표시를 하잖아요
이를 구현하려 하는데 어떻게 하면 될까요?? 스크린페인터에서 이것저것 만져보고 설정하는데 잘 안되네요^^;;
그리고 로그인하는 로직을 1000번 스크린의 PAI의 USER_COMMAND_1000에 적었는데요.
module USER_COMMAND_1000 input.
case ok_code.
when 'LOGIN'.
call SCREEN 1100 STARTING AT 10 10.
WHEN 'CHECK'.
PERFORM check_login.
WHEN OTHERS.
ENDCASE.
---------------------------------------------------------------------
form check_login .
select SINGLE * FROM zsawon
WHERE id = zsawon-id
and password = zsawon-password.
if sy-subrc eq 0.
if zsawon-admin = 'O'.
call SCREEN 1210.
else
call SCREEN 1220.
ENDIF.
else.
MESSAGE e001 with 'Login Failed'.
ENDIF.
endform.
-----------------------------
라고 하니깐 에러가 납니다. zsawon 테이블은 id와 password가 담겨 있구요. 로그인시 관리자냐 일반 사용자냐를 확인하는데 이를 zsawon 테이블의 admin을 통해 확인합니다. zsawon 테이블은 아래와 같습니다.
<<에러내용>>
A target area must be declared either explicitly with an INTO clause or implicity with a TABLES statement.
이게 에러 메세지인데요.
제가 알기론 select문에서 처리할 into 구문이 없다....는 것같은데 그래서 ~top에 작업영역으로 table을 선언하려고 합니다..그런데 table을 어떻게 선언하는게 좋을까요?? ㅠㅠ
음....문제가 뭘까요...ㅠㅠ
그리고 위의 로그인화면에서요....모달로 뜬 팝업창....오른쪽 위에 X 누르면 창이 닫히는데 cancel 눌러도 닫히게끔 하였지만 먹히지 않네요.....ㅠㅠ
module USER_COMMAND_1100 input.
CASE OK_CODE.
WHEN 'CANCEL'.
LEAVE TO SCREEN 0.
WHEN OTHERS.
ENDCASE.
endmodule.
요렇게 하면...문제있나요?? ㅠㅠ 저 위에 에러때문에 컴파일도 안되네요...힝...
혹시 아시는 고수분 계시다면. 지식 좀 나눠주세요^^
select 에러는 into 절 이 없어 에러 가 난것 같습니다.
변경예)
data: ls_zsawon like zsawon.
select SINGLE * FROM zsawon
into ls_zsawon
WHERE id = zsawon-id
and password = zsawon-password.
또는 Top 부분에
tables zsawon. 추가
하시면 될것 같고,
암호필드에 '*' 표시는 스크린 Field 속성 Tab -> 조회 -> 비가시 에 check 하시면 됩니다.
참고 하세요..