GET TIME.
zTIME = SY-UZEIT.
LOOP AT zMARA1.
READ TABLE zMARA2
WITH KEY MATNR = zMARA1-MATNR
BINARY SEARCH
TRANSPORTING
MEINS.
1.get time은 시간을 가져오고 ztime = sy-uzeit는 현 시각을 ztime에 값을
넣어주는 것으로 알고 잇는데 구지 두개를 다 작성한 이유가 뭔지 궁금해서요.
2. binary search를 자료를 봤는데 이해가 잘 않가는데 좀 쉽게 설명부탁합니다.
간단 명료하게 해도 좋고.. 잘 이해가 않가서 위 소스에 BINARY SEARCH를 보니
더 해깔려서요.
3.TRANSPORTING MEINS를 f1를 눌러 확인해봤는데 도대체 뭔말인지 이해가 안가서
설명부탁합니다.
혼자 자료를 찾아보니 이해가 쉽지 않아 이렇게 질문을 합니다.
댓글 4
-
SAP폐인
2008.11.10 05:55
-
미소
2008.11.10 08:33
2. BINARY SEARCH는 SAP와 관련해서도 자료가 있지만. 기본적으로는 DB와 관련된 곳에서 찾아보세요.
아니면 주위에 DB공부하는 분에게 물어보시면 금방 알 수 있습니다.
-
지의
2008.11.10 17:24
3. read table 할 때 zMARA2 에서 데이타를 읽은 후 meins 라는 필드만 데이타를 넘겨 받아 사용하겠다는 의미입니다.
-
제임스
2008.11.10 20:34
Binary search는 2진트리의 개념에서 나온 검색 방법 입니다. 하나의 노드에 자식노드가 2개씩만 붙어있는 거죠.
예를 들어 1~100 까지 숫자를 찾는 개념으로 검색방법을 따라가 보겠습니다.
(찾으려는 숫자는 80 이라고 가정을 해봅시다.)
최상위 노드는 숫자 50이 됩니다. 자식노드는 25와 75를 가지고 있는거구요. (반씩 나누어서 가지고 있다고 보면 됩니다.)
만약 검색할 숫자가 50보다 작으면 왼쪽(25), 50보다 크면 오른쪽(75)으로 검색합니다.
1. 80은 50보다 크니 오른쪽으로 가겠죠 (50의 자식노드 25, 75)
2. 80은 75보다 크니 오른쪽으로 가겠죠 (75의 자식노드 62, 87)
3. 80은 87보다 작으니 왼쪽으로 가겠죠 (87의 자식노드 80, 83)
4. 80은 왼쪽.. 검색완료
이런식으로 처리가 됩니다. 때문에 1부터 순차적으로 검색하는것 보다 평균검색시간이 짧습니다.
데이터 양이 많으면 많을 수록 평균검색시간 차이는 기하급수적으로 증가합니다.
이러한 이진트리구조를 이용한 검색의 경우 수의 일정한 배열이 필수이므로
sort가 반드시 되어 있어야 한다는점 입니다.
때문에 abap에서도 binary search를 하기전엔 반드시 sort를 해주게 되는거죠.
자세한 내용은 자료구조 관련 서적을 찾아보시면 되구요.
해시테이블을 이용한 검색도 많이 쓰이니 한번쯤 찾아보시는것도 좋은 공부가 되실겁니다.
간단하게 설명드리면 hash table은 인덱스를 이용한 검색인데,
1~99의 숫자를 찾기위해 9개의 인덱스를 만들게 됩니다.
즉,
인덱스 0 : 1,2,3,4,5,6,7,8,9
인덱스 1 : 11,12,13,14,15,16,17,18,19
인덱스 2 : 21~29
...
인덱스 9 : 91~99
87을 찾기 위해선 인덱스 8을 바로 search하게 되구요.
인덱스 내의 숫자는 순차적으로 접근해서 검색하게 됩니다.
즉. 1~99 사이의 어느 숫자라도 검색 절차는 9를 넘지 않는다는거죠.
이또한 자료구조에 상세히 설명되어 있습니다.
abap에서도 hash table을 사용할 수 있구요..
한번쯤은 꼭 찾아서 읽어보시길 권합니다.
이런 지식들이 쌓인 상태에서의 코딩은 매우 beautiful 하지요.. ^^
1. get명령어로 sy-uzeit필드값을 가지고 오고, sy-datum필드값을 refresh해줍니다. system field의 refresh라고 보시면 될듯..
그리고 local time에 대한 특징이 있는데 이건 제가 확실히 잘 몰라서;; 좀더 공부해봐야 할것 같습니다.
2. Binary search는 특정 필드를 찾을 때 전체를 검색하지 않고 반씩 나눠가면서 찾게 됩니다. 퍼포먼스가 그만큼 좋죠