안녕하세요,
MBEW 테이블에서 Select 시 특정 숫자로 시작하는 자재(matnr)는 제외하고 select 해오고싶은데요.
(특정 숫자로 시작하는 자재를 저장하는 테이블은 따로 있어서 이 부분은 select 해온 후 itab에 담아둔 상태입니다.)
문제는, MBEW 테이블에서 matnr이 다 숫자로만 되어 있어서 앞에 000000000 숫자가 붙어버리는 바람에
제외하는 로직이 제대로 걸리지 않는 것 같습니다.
제가 했던 방법 외에 다른 방법이 있는지 여쭙고 싶습니다 ㅠㅠ
[로직]
**------- 제외 자재번호 테이블
SELECT *
INTO CORRESPONDING FIELDS OF TABLE LT_ZDDEL
FROM ZDDEL.
IF LT_ZDDEL[] IS NOT INITIAL.
LOOP AT LT_ZDDEL ASSIGNING <LT_ZDDEL>.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'
EXPORTING
INPUT = <LT_ZDDEL>-MATNR
IMPORTING
OUTPUT = <LT_ZDDEL>-MATNR.
CONCATENATE <LT_ZDDEL>-MATNR '%' INTO <LT_ZDDEL>-MATNR.
LR_DELETE-SIGN = 'I'.
LR_DELETE-OPTION = 'EQ'.
LR_DELETE-LOW = <LT_ZDDEL>-MATNR.
APPEND LR_DELETE.
ENDLOOP.
ENDIF.
**---- SELECT
REFRESH LT_MBEW.
SELECT T1~MATNR
T1~BWKEY
T1~BKLAS
T2~MAKTX
INTO CORRESPONDING FIELDS OF TABLE LT_MBEW
FROM MBEW AS T1
LEFT OUTER JOIN MAKT AS T2 ON T2~MATNR EQ T1~MATNR
AND T2~SPRAS EQ SY-LANGU
INNER JOIN MARA AS T3 ON T3~MATNR EQ T1~MATNR
WHERE T1~MATNR NOT IN LR_DELETE[]. --> 왜 안걸릴까요..?
[데이터]
테이블 ZDDEL 데이터 : 000000000000000001, 000000000000000004
--> 1과 4로 시작하는 자재번호는 모두 제외하겠다는 의미입니다.
댓글 3
-
십년만에
2023.08.03 17:36
추천:1 댓글
-
Hwable
2023.08.03 22:07
안녕하세요.
CONCATENATE <LT_ZDDEL>-MATNR '*' INTO <LT_ZDDEL>-MATNR.
LR_DELETE-SIGN = 'E'. - 제외
LR_DELETE-OPTION = 'CP'. - 패턴비교
LR_DELETE-LOW = <LT_ZDDEL>-MATNR.
APPEND LR_DELETE.WHERE T1~MATNR IN LR_DELETE[]. " NOT IN -> IN 으로 변경
이렇게 해보시기 바랍니다.
참고로 % 는 LIKE 구문에만 사용가능합니다.
추천:1 댓글
-
MANG111
2023.08.04 19:14
감사합니다
로직 수정해서 select condition 잘 반영되는 것 확인했습니다!
conversion 함수가 맞는지 ...
CONVERSION_EXIT_MATN1_OUTPUT
INPUT 000000000000000001
OUTPUT 000000000000000001
CONVERSION_EXIT_ALPHA_OUTPUT
INPUT 000000000000000001
OUTPUT 1