조회 스크린을 만드는데
로직이 잘 안풀려서요.
스크린 2000에서 조회조건인
IO DYSEQ BUINO를 만족하면
스크린 2100으로 이동하고
테이블에 있는 데이타를 스크린
2100에 뿌려줘야 하는 로직입니다.
근데 문제가 조건인 IO DYSEQ BUINO만
화면에 뿌려지고 나머지
BNAME BCOND BEVEN BUIBD BLANS WAERS
SUPPR TAXPR ARMCD MCCOD BLANK는
나오지를 않습니다. 어떻게 된 영문인지..;;
제가 초보라서 많이 서투릅니다.
고수님들 도와주세요.
DATA: l_flag TYPE c.
CLEAR l_flag.
IF gs_zsailing_s_001-io <> 0 AND gs_zsailing_s_001-dyseq <> 0 AND
gs_zcustom_s_001-buino <> 0.
ELSE.
MESSAGE i001(00) WITH '필수 항목에 0보다 큰수를 입력하세요'.
CLEAR : gs_zsailing_s_001-io, gs_zsailing_s_001-dyseq,
gs_zcustom_s_001-buino.
LEAVE TO SCREEN '2000'.
ENDIF.
SELECT B~IO B~DYSEQ A~BUINO A~BNAME A~BCOND A~BEVEN
B~BUIBD B~BLANS B~WAERS B~SUPPR B~TAXPR B~ARMCD
B~MCCOD B~BLANK
INTO CORRESPONDING FIELDS OF TABLE IT_DATA
FROM
ZCUSTOM_T_001 AS A INNER JOIN ZSAILING_T_001 AS B
ON A~MANDT = B~MANDT
AND A~BUINO = B~BUINO.
LOOP AT it_data WHERE io = gs_zsailing_s_001-io
AND dyseq = gs_zsailing_s_001-dyseq
AND buino = gs_zcustom_s_001-buino.
l_flag = 'X'.
ENDLOOP.
IF l_flag = 'X'.
MESSAGE i001(00) WITH 'DATA를 삭제하시겠습니까?'.
CALL SCREEN '2100'.
GS_ZSAILING_S_001-IO = IT_DATA-IO.
GS_ZSAILING_S_001-DYSEQ = IT_DATA-DYSEQ.
GS_ZCUSTOM_S_001-BUINO = IT_DATA-BUINO.
GS_ZCUSTOM_S_001-BNAME = IT_DATA-BNAME.
GS_ZCUSTOM_S_001-BCOND = IT_DATA-BCOND.
GS_ZCUSTOM_S_001-BEVEN = IT_DATA-BEVEN.
GS_ZSAILING_S_001-BUIBD = IT_DATA-BUIBD.
GS_ZSAILING_S_001-BLANS = IT_DATA-BLANS.
GS_ZSAILING_S_001-WAERS = IT_DATA-WAERS.
GS_ZSAILING_S_001-SUPPR = IT_DATA-SUPPR.
GS_ZSAILING_S_001-TAXPR = IT_DATA-TAXPR.
GS_ZSAILING_S_001-ARMCD = IT_DATA-ARMCD.
GS_ZSAILING_S_001-MCCOD = IT_DATA-MCCOD.
GS_ZSAILING_S_001-BLANK = IT_DATA-BLANK.
ELSE.
MESSAGE i001(00) WITH 'DATA가 존재하지 않습니다.'.
CLEAR : gs_zsailing_s_001-io, gs_zsailing_s_001-dyseq,
gs_zcustom_s_001-buino.
LEAVE TO SCREEN '2000'.
ENDIF.
CLEAR l_flag.
댓글 4
-
임재형
2007.05.29 02:12
GS_ZSAILING_S_001 구조에 값을 채우시고 CALL SCREEN '2100'을 하시면 될듯합니다. 순서가 바뀐거 같습니다. -
鵬의 날개
2007.05.29 02:38
internal table 의 값을 헤더로 올리셔야 합니다...
임재형님 말씀대로 하시기 전에...
loop...endloop. 이나 read 를 이용하셔서 헤더로 값을 올리시면 될 듯 하군요...
-
아밥초보생
2007.05.29 03:37
임재형님 날개님 감사드립니다.
죄송한데 한가지만 더 여쭈어 볼께요.
2100스크린에서 삭제 버튼을 눌렀을시
로직이
MESSAGE i001(00) WITH 'DATA를 삭제 하시겠습니까?'.
DELETE zsailing_t_001 FROM gs_zsailing_s_001.
DELETE zcustom_t_001 FROM gs_zcustom_s_001.
MESSAGE i001(00) WITH 'DATA가 삭제 되었습니다.'.
이렀습니다.
근데 문제가 zcustom_t_001에 있는 data는 지워지는데
zsailing_t_001에 data는 지워지지 않아요.
그 이유가 스크린상 buino가 두테이블에 존재하는 key인데
스크린 필드의 keyname이 gs_zcustom_s_001로 되어있기 때문입니다.
MODIFY에서도 이런 문제가 발생하는데 어떻게 해야될지 모르겠어요.
INSERT는
MESSAGE i001(00) WITH 'DATA를 저장 하시겠습니까?'.
gs_zsailing_s_001-buino = gs_zcustom_s_001-buino.
MODIFY zsailing_t_001 FROM gs_zsailing_s_001.
MODIFY zcustom_t_001 FROM gs_zcustom_s_001.
COMMIT WORK.
MESSAGE s301(zf) WITH '저장 되었습니다'.
이런식으로 해결했거든요. 근데 DELETE는 잘 모르겠습니다. -
임재형
2007.05.29 05:31
gs_zsailing_s_001-buino에 값이 제대로 매핑이 안된거 같습니다.
gs_zsailing_s_001-buino = gs_zcustom_s_001-buino.
DELETE zsailing_t_001 FROM gs_zsailing_s_001.
DELETE zcustom_t_001 FROM gs_zcustom_s_001.
하면 될듯한데요. 디버깅 걸어보시고 gs_zsailing_s_001-buino에 값이 제대로 들어 오는지 확인해보시고 위방법은 임시 방편일뿐이니 delete전에 pbo에 제대로 값을 전달해주셔야 할드합니다.
즐거운 하루되세요