SELECT A~MATNR
A~MAKTX
S~SDDAT
S~SDTIM
S~SALER
INTO CORRESPONDING FIELDS OF TABLE GT_LIST
FROM Z002_MATT AS A
INNER JOIN Z002_SALE AS S
ON A~MANDT EQ S~MANDT
WHERE R_01 EQ 'X'.
셀렉터는 다음과 같이 했고,
오류는 위의 그림과 같습니다.
1. 라디오 버튼으로 파라미터를 생성했는데, 파라미터를 본문에서 인식 못하는거 같은데 왜인지는 모르겟씁니다. ㅠㅠㅠ 수정도 같이 좀 도와주세요 ㅠ
2. 그리고 테이블 만들때 enhancement category 요거가 안되있다고 워닝뜨고 활성화가 안되서
허용 비슷한걸로 다 바꿔줬거든요 ! 그래서 그런지 지금 코딩에서는 또 enhancement category가 설정되있어서 안된다는 식의 오류 같은데 이 부분도 좀 알려주세요
3. 마지막으로 enhancement category 가 무엇인지도 좀 알려주세요. ㅠㅠ (이 내용은 easy abap책에도 안나와 있더라구요 )
셀렉터 하나밖에 안썼는데 벌써 오류뜨네요 ㅠㅠㅠ 아직 완전 초보라 ㅠㅠㅠㅠ아밥인들 도와주세요 !
댓글 8
-
특정단어
2010.08.06 20:16
-
갈매기
2010.08.06 20:19
1.
SELECT A~MATNR
A~MAKTX
S~SDDAT
S~SDTIM
S~SALER
INTO CORRESPONDING FIELDS OF TABLE GT_LIST
FROM Z002_MATT AS A
INNER JOIN Z002_SALE AS S
ON A~MANDT EQ S~MANDT
WHERE R_01 EQ 'X'.
이런식으로는 안되구요 R_1의 값에 따라 해당 쿼리를 진행하고 싶으시면 위에서 case 나 if를 통해 제어하셔야 할것 같네요
2. 마지막으로 enhancement category 가 무엇인지도 좀 알려주세요. ㅠㅠ (이 내용은 easy abap책에도 안나와 있더라구요 )
se11 테이블 변경으로 가셔서 메뉴중 extras - enhancement category 에서 설정하시면 됩니다. 이건 딱히 문제가 되지 않을거 같은데요.
3.
https://forums.sdn.sap.com/thread.jspa?tstart=4470&threadID=961805
이 주소에 가셔서 보시면 아실수 있을 겁니다.
이지 아밥 책도 훌륭한 책이지만 가장 좋은 것은 sdn이나 구글링을 활용하는게 길게 봐서는 더 큰 도움이 되실겁니다.
수고하세요.
-
특정단어
2010.08.06 20:23
아. 그리고 하나 더요..
현 상태에서 활성화가 안되는 까닭은 enhacement category 어쩌구 하는 warning 때문이 아니라, where 존거에 쓰인 R_01이 발생시킨 error 때문입니다.
warning은 활성화에 영향을 주지는 않습니다.
따라서, enhacement category를 바꿔주는 작업은 처음부터 필요하지 않았던 작업입니다.
-
오렌지겅주님
2010.08.06 20:24
특정단어님 조언 감사드립니다
지금부터 차근차근 배우는 단계라서 거의 기본이 되있지 않다는것은 저도 압니다
그래서 지금 물어보는것이구요 그리고 이 이후부터는 ABAP HELP를 사용해서 공부해 보겠습니다.
이런 따끔한 조언을 해주졌으니 질문만큼은 해결해주시는게 저에게 도움이 될 듯 싶습니다.
셀렉트 화면에서 이미
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-002.
PARAMETERS : R_01 RADIOBUTTON GROUP R1 DEFAULT 'X' , " DEFAULT 판매
R_02 RADIOBUTTON GROUP R1 MODIF ID RAD,
R_03 RADIOBUTTON GROUP R1 MODIF ID RAD.
SELECTION-SCREEN END OF BLOCK B2.
이것으로 R_01을 정의해줫는데 그럼 왜라는 답변말고 "어떻게 고치는지" 좀 알려주세요 !
-
오렌지겅주님
2010.08.06 20:28
갈매기님 답변 고맙슴돵 ~~ㅎ 그럼 CASE나 IF로 R_01버튼은 제어하고
셀렉트 WHERE조건에는 무엇을 써줘야 좋은가요?
그냥 라디오 버튼1을 조회하면 내용이 나오도록 만들려고 생각했던거라 딱히 조건을 어떤것을 넣어줘야할지 모르겠네요 ㅠ
-
갈매기
2010.08.06 20:36
오렌지 겅주님께서 좀 잘못 생각하시는 부분이 있는것 같습니다.
어느 언어든 개발툴이든 개발자 입장에서 가장 중요한 부분은 여러가지가 있겠지만 가장 중요한 부분은 품질이라고 생각합니다.
그 품질이라는 부분은 개발자 스스로가 많이 알아야 한다고 생각합니다.
단순히 납기만 맞출려고 당장 데이타 나오게 다른 사람 코딩을 이유도 모르면서 카피해나가는건 결코 좋은 방법이 아닌것 같습니다.
ABAP는 다른 언어에 비해서 정말 쉬운 언어입니다. 물론 고급 스킬을 구현하려면 쉽지만은 않겠지만
어느 정도 필요한 리포트나 트랜잭션 프로그램등을 구현하는건 정말 초급 스킬만 가지고도 충분히 구현할 수 있습니다.
그렇게 초급스킬만 가지고 구현했다고 해서 그 프로그램의 품질이 나쁘다고만 할 수도 없는거구요.
자체에 수많은 예제와 헬프 그리고 구글을 통해서 찾으시는 정보의 95%이상 찾을 수 있을거라 장담합니다.
F1과 구글링을 많이 해보면 해볼수록 더 큰 도움이 될 겁니다.
-
특정단어
2010.08.06 20:43
답변은 위에서 이미 드렸듯이..
1번> R_01은 테이블 Z002_MATT의 필드도, 테이블 Z002_SALE의 필드도 아닙니다. where 조건의 왼편에는 테이블의 필드를 명시하도록 되어있습니다. 참고로 R_01은 파라메터로, 일반 클로벌 변수로 취급됩니다.
[어떻게 고치는가?]
파라메터로 R_01 부터 R_03 까지는 이미 정의하셨고,
이 라디오 버튼들이 각각 의미를 담고 있겠죠?
다음은 [명제]들입니다.
1. 라디오 버튼 파라메터는 말씀 드렸다시피 [변수]입니다.
2. SELECT 구문의 WHERE 절의 왼편에는 [테이블]의 [필드]를 사용해야합니다.
3. 따라서, SELECT 구문의 WHERE 절의 왼편에는 라디오버튼 파라메터를 직접 사용할 수 없습니다.
다음은, SELECT 할 때의 라디오 버튼 활용법입니다.
1. 제3의 변수를 설정해서, 각각의 라디오버튼 선택에 대해 그 제3의 변수에 적절한 값을 할당해서 사용.
i.e)
DATA: the_3rd type z002_sale-saler.
case 'X'.
when r_01.
the_3rd = 'A'.
when r_02.
the_3rd = 'B'.
when r_03.
the_3rd = 'C'.
endcase.
SELECT
...
WHERE s~saler eq the_3rd.
2. RANGE 변수를 하나 선언하고 라디오 버튼에 따라 적절한 RANGE를 만들어 사용
i.e)
RANGES: lr_3rd for z002_sale-saler.
lr_saler = 'IEQ'.
case 'X'.
when r_01. "A only
lr_3rd-low = 'A'.
append lr_3rd.
when r_02. "B only
lr_3rd-low = 'B'.
append lr_3rd.
when r_03. "ALL
lr_3rd-low = 'A'.
append lr_3rd.
lr_3rd-low = 'B'.
append lr_3rd.
endcase.
SELECT
...
WHERE s~saler in lr_3rd.
대략 이렇습니다.
WHERE 조건에서 사용하지 않고, 전부 쿼리한 다음, 갈매기님 의견처럼 로직에서 IF/CASE와 함께 사용해도 되겠죠.
이렇게 설명드려서 이해가 되셨다면 다행이구요..
-
오렌지겅주님
2010.08.06 21:48
도와주셔서 감사합니다 ^^
그리고 특정단어님과 갈매기님의 충고도 깊이 받아드리겠슴돵
제가 아직 ABAP을 배운지 일주일 밖에 되지 않아서 천천히 만들어가면서 품질과 퍼포먼스들을 비교할 생각이였거든요
모두 성공하는 아밥인 되세욧!
1. 글쎄요..
2. 대부분의 일반적인 경우에, [not classified] 로 설정하시면 됩니다.
3. http://www.e-abap.net/zb/bbs/zboard.php?id=abapQNA&page=1&sn1=on&divpage=1&sn=on&ss=off&sc=off&keyword=darkangel&select_arrange=subject&desc=asc&no=2018
1번의 경우는.. 뭐랄까요.. 적절한 비유가 잘 떠오르지는 않습니다만..
가령, 님에게 조카가 있는데, 이 어린 조카가 아직 영어 알파벳을 전부 외우지 못하는 상황이라고 가정하겠습니다.
어느 날, 이 조카분께서 토플 교재를 들고와서 문제 하나를 가리키며 "이건 왜 정답이 이거야?" 라고 물어본다면...
어떤 대답을 주시겠습니까?
제 견해로는, ABAP도 C나 JAVA와 같은 넓은 의미의 프로그래밍 언어구요..
또한 특히 ABAP은 데이터베이스를 주로 다루는 프로그래밍 언어입니다.
님께서 데이터베이스에 대한 어떠한 배경 지식도 없이 ABAP만을 공부하실 생각이시라면, 취미생활로서 받아들이시나보다.. 하는 생각이 들겁니다.
님께서 올려 주신 구문은 "아예 말도 안되는, 정말 기본이 안된" 구문입니다.
이것에 대해 "왜 에러인가?"라고 답을 구하신다면, 솔직히 "대략 난감"하다고 밖에는 말씀을 못 드리겠습니다.
답은 드리겠습니다.
1번> R_01은 테이블 Z002_MATT의 필드도, 테이블 Z002_SALE의 필드도 아닙니다. where 조건의 왼편에는 테이블의 필드를 명시하도록 되어있습니다. 참고로 R_01은 파라메터로, 일반 클로벌 변수로 취급됩니다.
기분이 몹시 상하시더라도, 그게 님의 현실입니다.
님의 실력을 이 질문 하나로 가늠하는 건 분명 잘못된 일인 줄 압니다만, 이 질문에서 엿볼 수 있는 님의 현 상태에서의 가장 좋은 처방은, 게시판이 아니라 제 1순위로 ABAP HELP를 찾아보시고, 님이 사용하는 커맨드와 키워드의 정확한 의미와 사용법을 익히시는 겁니다.
게시판은 그 이후에 벌어지는 [응용편]을 다루기 위해 존재한다고 봅니다.
다소 답답하시더라도.. 당분간 이런 게시판은 [안녕~]하시고, 먼저 ABAP HELP와 친해지시는 것이 좋겠습니다..라고 감히 조언 드립니다.
그래도 맘 상하셨을테니, 그 부분에 대해서는 정중히 사과의 말씀 전합니다.
주제넘은 발언, 죄송합니다.