안녕하세요 SAP 초보입니다.
Report 프로그램에서 AT NEW f.에 대해서 질문 드립니다.
인터널 테이블에 현재 아래 표 모양으로 담겨져 있습니다.
자재번호 | 공정번호 | 공정 내역 | 작업장 | 작업장 내역 |
10004 | 30 | D/C casting | 88235 | D/C 1 |
10004 | 40 | Oil Pump | 88239 | D/C 2 |
10005 | 20 | Sock absobar | 77543 | S/A 1 |
대충 이런 식으로 되어 있습니다.
이 테이블의 데이터를 아래 표와 같이 보여 주려고 합니다.
자재번호 | 공정번호 | 공정 내역 | 작업장 | 작업장 내역 |
10004 | 30 | D/C casting | 88235 | D/C 1 |
40 | Oil Pump | 88239 | D/C 2 | |
10005 | 20 | Sock absobar | 77543 | S/A 1 |
인터널 테이블을 Loop 돌면서 AT NEW matnr.을 사용하여
중복 자재 번호를 지우려고 하는데 제가 초보인지라 At New의 사용법을 잘 모르겠습니다.
AT NEW f를 사용하면 f 이하 필드 값이(주로 문자열) ****이 모양으로 나오는데 저는 필드의 값을
다 Write를 써서 보여 줘야 하는데 화면에 * 표시가 나옵니다. * 표시를 안나오게 하는 방법 좀 알려 주십시요
질문 내용을 두서 없이 적어서 죄송합니다.
댓글 10
-
지의
2007.12.05 02:34
-
숟가락맨
2007.12.05 02:46
write문을 사용하는거면 인터널 테이블을 안지우고도 구현 가능하자나요...
at new f
일때... 라이트문으로 자재번호 공정번호 공정내역 .....등등
atnew f 가 종료 다음부터는..
공정번호 공정내역 .....등등 이렇게 해주면 돼자나요..자재번호 스페이스칸으로 주고요...
-
창천 구 만리
2007.12.05 03:41
internal table의 헤더를 structure 로 옮기면서 사용하시면 됩니다. -
제도스
2007.12.05 04:15
숟가락맨 님 답변 감사드립니다. 하지만 at new f.일때 write문으로 필드들을 뿌리면 문자열로 되어 있는 것들은 *로 나오게 됩니다.
질문 올리기전에 해봤는데 자재번호 이후의 필드 들은 ****로 출력됩니다.
10004 ***** ***** ***** ******
40 Oil Pump 8239 D/C 2
10005 ***** ***** **** ******
이런 식으로요.
-
디카초올~
2007.12.05 06:28
At new 구문 자체가 해당 필드 다음의 필드는 ** 으로 바꾸어 버립니다. F1 을 참조하시고.
해당 Logic 을 쉽게 If 어쩌구 Endif 로 구현하시는 것이 정신건강에 좋으실듯.
아니면 At new 구문 이전에 동일한 Structure 변수에 Internal Table 로 부터 읽은 내용을 저장했다가 처리하셔요.
쉽게 쉽게 하시죠.
-
숟가락맨
2007.12.05 18:49
아..그러네요...태스트 해보니..정말 글케 돼네요..좋은거 알고 가네요..ㅎ...그러면...이런식으로 바꿔서 해보세요..
data l_flag.
clear l_flag .
loop at itab.
at new a1.
l_flag = 'X'.
endat.
if l_flag = 'X'.
write : / itab-a1 , itab-a2 , itab-a3.
clear l_flag.
else.
write : / space , (10)itab-a2 , itab-a3.
endif.
endloop.
대충 이런식으로 at new에 플레그값을 집어넣어서 if문으로 처리 하면 될거같은데요?
-
초봡
2007.12.05 20:49
플래그를 사용하셔도 되고....
똑같은 구조의 복사본workarea에 담아서 출력을 복사본 workarea로 부터 하시면 됩니다 ㅇ_ㅇ......
아니면 matnr필드만 at new... endat 안에서만 출력하고 나머진 at구문 밖에서 출력하시면 되겠죠.... ㅇ_ㅇ
-
Wowking
2007.12.05 22:37
저같은경우에는 플래그를 써요.
at new f
flg = 'x'.
endat.
if flg = 'x'.
<로직>
endif.
이렇게요.. 이게 젤 좋은것 같아요. ^^
-
제도스
2007.12.06 03:54
모두들 감사합니다. 알려주신 것들 이용해서 처리하였습니다.^^
-
뱅가니
2007.12.06 21:10
좋은정보감사합니다.
없습니다. at new 에 사용할 필드보다 앞부분에 있으면 * 가 되지는 않지만 그렇게 되면 다른 문제가 또 발생할 것입니다.
대충 변수 하나 만들어서 넣어주시는 것이 좋을 것 같군요.