it_inpt-remamt = w_remamt.
~
LOOP AT gt_rows INTO gs_rows.
READ TABLE it_list INDEX gs_rows-index.
ENDLOOP.
MOVE-CORRESPONDING it_inpt TO it_list.
MODIFY it_list INDEX gs_rows-index.
저장시 자동채번하여 seq번호를 1씩 증가시켜 remseq에 넣으려고 합니다.
위의 로직에서 가능한가요..
댓글 7
-
초보아밥퍼
2008.06.03 19:06
-
풍뎅이
2008.06.03 19:28
답변감사드립니다..
add 1 to remseq.
it_inpt-remseq = w_remseq.
~
를 넣어서 데이터 저장시 cbo테이블의 remseq에 1이 저장되었습니다..
그런데 다른품목을 저장시 마찬가지 remseq에 1이 들어가는데요..
기존 remseq의 값에서 증가시킬수는 없나요..
-
넷가이
2008.06.03 19:37
저도 ABAP을 시작한지 얼마 되지 않았지만 얼마전에 자동 채번에 대해서 고민했던일이 있는데요.
자동 채번을 하시려는 목적이 테이블내에서 유니크 하게 하기위한 목적인가요? 아니면 다른용도로 사용하시려고 하는지 궁금한데요.
혹시 number range 를 아시는데 꼭 위의 로직을 사용하실 생각이라면 아래글을 읽지 않으셔도 될것 같네요.
abap 에 자동 채번 관련하여 number range 라는 기능이 있습니다. 함수라고 말하기도 조금 애매하고 아직 경력이 1달 남짓이라 어떤 용도로 더 활용되는지는 모르겠지만 일반적으로 T-SQL에서 identity 형태가 number range 라고 보시면 될것 같습니다.
t-code "snum" 에서 오브젝트를 신규로 생성한 후 시작번호와 step을 정의하시면 어떤 프로그램에서건 해당 number range를 호출하면 정해진 step 만큼 증가된 번호를 자동으로 리턴해 줍니다. 프로그램내에서는 그 번호를 사용만 하면 되구요.
어줍잖은 지식으로 답글을 다는건 아닌지 모르겠지만 코딩은 나름대로 개발자의 스타일이 반영되는게 당연하니까 여러가지 방법을 알고 있는 상태에서 선택취사 하시는게 좋을듯하네요.
-
풍뎅이
2008.06.03 20:41
idx = sy-dbcnt.로 가능하네요..
-
절대지존
2008.06.03 22:04
select max(seql) from table 싱글라인으로 받아서 더하기 1을 하심 어떠실련지...
-
준서기
2008.06.04 08:45
자동채번에 사용하시려면 앞에서 넷가이 님이 설명하신 번호범위 오브젝트를 사용하면 됩니다.
번호범위 오브젝트란 간단하게 FI모듈에서 전표번호와 같이 중복되지 않는 숫자가 필요할때 사용하게 됩니다.
자리수는 10자리를 사용할 수 있고 년도에 따라 또는 특정 번호에 따라 번호 범위를 지정할 수 있습니다.
생성 방법은 T-Code : snro(앞에서 작성하신 snum과 동일한 프로그램 같습니다.) 에서 번호범위 오브젝트를 하나 생성하고
CALL FUNCTION 'NUMBER_GET_NEXT'
EXPORTING
NR_RANGE_NR = '01'
"번호범위
OBJECT = 'ZNO_SAMPLE'
"번호범위 오브젝트 이름
TOYEAR = sy-datum(4)
"년도
IMPORTING
NUMBER = l_seq.
"생성된 번호값
와 같이 호출해서 사용하시면 됩니다.
-
별이고픈구름
2008.06.05 02:15
유니크한 시리얼넘버를 DB에 저장하려는 것 같은데요.
해당 테이블에서 읽어서 +1로 처리하면 동시에 처리하는 다른 프로세스에 의해 중복이 되거나
해당 필드가 Key일 경우 에러가 발생합니다.
그러므로 넷가이님, 준서기님 댓글에 한표~ ^^
add 1 to remseq 하시면 될듯... 루프문의 의미를 잘 모르겠네요.