정말 초보적일수도 있는데 예전에 써봤던것 같은데 기억이 안나는건지 모르는건지 모르겠어요.
plant, material 값을 input받아서 select해서 보내주는 간단한 내용인데요.
input
plant: G101
matnr: L (<- 얘는 L을 입력하면 select에서 L로시작하는 모든 자재를 가져오면 되는건데요..)
안의 로직
g_matnr = matnr.
CONCATENATE '%' matnr '%' into g_matnr_l.
SELECT A~MANDT A~MATNR c~MAKTX d~MEINH b~WERKS
INTO CORRESPONDING FIELDS OF TABLE GT_MASTER
FROM MARA AS A
INNER JOIN MARC AS B
ON A~MANDT = B~MANDT
AND A~MATNR = B~MATNR
INNER JOIN MAKT AS C
ON C~MATNR = A~MATNR
AND C~SPRAS = 'E'
INNER JOIN MARM AS D
ON B~MANDT = D~MANDT
AND B~MATNR = D~MATNR
WHERE A~MATNR = g_matnr_l
AND b~WERKS = plant.
이렇게해줬는데 안먹히는걸 보면 이게 아닌것 같은데 아시는분 답변좀 부탁드려여~~~~
제가 머리가 나쁜가바여 ㅠㅠ
댓글 12
-
버미!
2010.11.17 06:33
-
써언
2010.11.17 17:19
안녕하세요.
제가 첨에 CONCATENATE matnr '%' into g_matnr_l 이렇게 해주었는데도 안되더라구요...
왜 안먹히는 걸까요;;; input L로 받고 g_matnr_l에 보면 L% 이렇게 들어가있는데 말이죠;;;;
-
버미!
2010.11.17 17:31
각각의 테이블에 데이타가 있는 지 체크해보세요.. -
수갬
2010.11.17 17:49
where 조건에
WHERE A~MATNR LIKE g_matnr_l 로 써보세요.
= 'L%'은 'L%' 와 값이 같아야 결과값을 출력합니다.
LIKE 'L%' 은 로 시작하는 모든 문자열을 가져옵니다.
-
써언
2010.11.17 18:02
CONCATENATE p_matnr '%' into g_matnr_l.
SELECT A~MATNR A~WERKS C~MAKTX B~MEINH
INTO CORRESPONDING FIELDS OF TABLE GT_MASTER
FROM MARC AS A
INNER JOIN MARM AS B
ON A~MAtnr = B~MATNR
INNER JOIN MAKT AS C
ON C~MATNR = A~MATNR
AND C~SPRAS = 'E'
WHERE A~MATNR LIKE g_matnr_l
AND A~WERKS = P_WERKS.
이런식으로 바꿔줬구요...근데도 데이터 조회를 못해오세요
테이블에 L*로 해서 조회해보면 다 나오던데 세테이블 모두다요;;;
-
야생이
2010.11.17 18:05
위에 분들께 잘 안되시면 레인지 변수를 선언해서 사용하셔도 될꺼같아요
아니면 입력받은 값 자체를 SELECT OPTION 으로 하셔도 되지 않을까요?
= ex)
RANGE: R_MATNR FOR MARA-MATNAR.
DATA: LV_MATNR(10).
CLEAR: R_MATNR, R_MATNR[],
LV_MATNR.
CONCATENATE MATNR '*' INTO LV_MATNR. << " L* 형태로 만들어줌
R_MATNR-SIGN = ' I'.
R_MATNR-OPTION = 'CP'.
R_MATNR-LOW = LV_MATNR. "L*
APPEND R_MATNR.
CLEAR R_MATNR.
나중에 쿼리에서
WHERE MATNR IN R_MATNR 로 하시면 될꺼 같아요
-
써언
2010.11.17 18:19
많은분들이 도움 주시고 계신데 ...왜 select를 못해오는지 range도 써보는데;;;
무엇이 문제일까요 ㅠㅠㅠ
CLEAR: R_MATNR, R_MATNR[], LV_MATNR.
CONCATENATE P_MATNR '*' INTO LV_MATNR.
R_MATNR-SIGN = 'I'.
R_MATNR-OPTION = 'CP'.
R_MATNR-LOW = LV_MATNR. "L*
APPEND R_MATNR. CLEAR R_MATNR.
SELECT A~MATNR A~WERKS B~MEINH C~MAKTX
INTO CORRESPONDING FIELDS OF TABLE GT_MASTER
FROM MARC AS A
INNER JOIN MARM AS B
ON A~MAtnr = B~MATNR
INNER JOIN MAKT AS C
ON C~MATNR = A~MATNR
AND C~SPRAS = 'E'
* WHERE A~MATNR LIKE g_matnr_l
WHERE A~MATNR in r_matnr
AND A~WERKS = P_WERKS. -
써언
2010.11.17 18:35
앗 해결됐어요 range도 되고 CONCATENATE으로 해도 되고...
버미님, 야생님 수갬님 모두모두 너무 감사혀~~
-
버미!
2010.11.17 18:41
원인이 뭐던가요? -
이반아이작
2010.11.17 18:46
AND C~SPRAS = 'E' <-- 요거 였나요? -
양키
2010.11.17 19:49
g_matnr_l Type이 의심스럽습니다만...
1. MAKT테이블은 SPRAS따라 내역이 없는경우도 있어 Outter join을 쓸필요가 있어보입니다.
2. MARM 테이블을 뒤질필요가 따로 있는지요?
MARA테이블의 MEINs를 참조하면 될듯한데요. -
써언
2010.11.19 01:02
모두 너무 감사합니다. 제가 MM이 처음이고 스탠다드는 첨 써봐서 잘 몰라서 marm의 meinh를 사용했어요
참고할께용 양키님...
여러분들이 도움 주셨는데 원인은 SPRAS가 아니구
제가 조회하려고 했던 데이터의 문제였습니다.
matnr은 18자리로 가령 matnr이 5000 이라면 실제 자재테이블에는 5000으로 보이지만...0000000000050000이런식으로 갖고 있자나요
근데 제가 5%이렇게 주다보니 못찾더라구요 실제 스탠다드 테이블에가서 5*를 넣고 조회를 해보면 되던데 말이져
여러분들의 도움에 정말 감사드립니다.
%5%이렇게 해주었다면 찾아왔을껄요;;;;;;;
민망스릅네요 ㅎㅎㅎ 다시한번 정중히 감사합니다.
Select 구문은 맞구요. 다만 CONCATENATE '%' matnr '%' into g_matnr_l.
=>CONCATENATE matnr '%' into g_matnr_l. 해주시면 됩니다.(matnr로 시작되는 matnr를 조회)
근데 굳이 Client를 조회할 필요가..있는지요?