안녕하세요
초보입니다.
오라클이나 다른 DB에서는 like기능이 있어
사원번호 조회시
조건에 1개의사번을 등록하면 하나의 데이타가 나오고
공란으로 입력하면 전체 데이타가 나오는데
예)
select *
from hr_info
where emp_no like :사원번호 변수'%'
가 가능합니다.
sap에서는 어떻게 쓰는지 조언 바랍니다.
SELECT * INTO TABLE gt_z034
FROM zthrp034
WHERE stddate = p_date
AND zyymm = p_yymm
and pernr ?????
ORDER BY pernr.
댓글 4
-
ASDF
2010.10.15 01:55
-
아바압
2010.10.15 02:13
where절에 사번필드 pernr에
(1) SELECT * INTO TABLE gt_z034
FROM zthrp034
WHERE stddate = p_date
AND zyymm = p_yymm
AND pernr = '사번값이 입력된 필드'. -> 이렇게 쓰시면 위의 두 조건을 만족하는 레코드 중 입력한 사번에 대한 레코드만
zthrp034 테이블에서 select가 될꺼구요
(2) SELECT * INTO TABLE gt_z034
FROM zthrp034
WHERE stddate = p_date
AND zyymm = p_yymm. -> 처럼 pernr 필드를 빼시면 zthrp034 테이블에서 위의 두 조건을 만족하는 모든 사번이 select 되겠죠
ASDF님 설명처럼 SELECT-OPTIONS이나 RANGES 변수를 이용하여 IN을 사용하셔도 되구요
-
無念군
2010.10.15 02:30
위에 두분께서 .. 잘 답을 달아 주신거 같으신데요 ;;;
SQL구문중에 ...
p_date (일자)
p_yymm (년도) 로 추청되어 지는데요.. <<< 2개의 필드는 변수 (selection-option 혹은, 기타 변수 로.. 쓰신게 아니신가요??)
사번 부분도 p_date 나 p_yymm 처럼 .. p_pernr 이라고 선언 해서 쓰시면 됩니다만...
1. 입력 안하는 경우 ,
2. 1명만 입력하는 경우 (or 해당 사번을 제외하는 경우..)
3. 범위로 입력하는 경우 (or 해당 범위의 사번을 제외하는 경우..)
모든 조건에 만족해야 되는 경우엔 ...
Selection-screen 선언 하는 부분에 SELECT-OPTIONS 변수로 선언하시거나 .. (User 의 입력)
RANGES 변수로 선언 하시고 (이 경우 프로그래머가 강제 입력(APPEND) 해주어야 됨)
where 사원번호 in 변수 (사원번호가 들어가게 되는 변수) 로 선언 하셔서 쓰시면 됩니다...
-
맑은하늘
2010.10.15 02:56
사원번호일 경우 numc로 되어 있어서 like로 찾을수는 없을 겁니다.
문자열필드라면 pernr like '8000%'. 으로 사용할 수 있겠지만요.
이럴경우 like 대신 in 을 써도 좋지만 like와 비슷하게 사용하시려면
between a and b 를 사용하셔도 좋을 것 같네요
찾으려고 하는 사번이 81 로 시작하는 번호일 경우
data lv_pernr_start type pernr_d.
data lv_pernr_end type pernr_d.
lv_pernr_start = lv_pernr_end = '81000000'.
lv_pernr_end+2 = '999999'.
select *
from ~
where pernr between lv_pernr_start and lv_pernr_end.
제가 도움이 될지는 모르겠습니다만..
SELECTION-SCREEN에서 P_YYMM(아마 날짜..죠?) 이외에 사원번호 조건을 추가해서 사용자 입력받도록 하면 될거 같은데요
AND zyymm = p_yymm
AND 사원번호 in s_사원번호 이런식으로요~