이런식으로 테이블을 sort 하였습니다.
보시다 시피 TXT 부분에 중복되는항목이 있는데요
그 중복 되는 부분을 하나로 만들려고 합니다. 기존데 col에 존재 하는 값들은 전부 합산이 되고요..예를들면;;
TXT col1 col2 col3
001 1 1 1
001 2 2 2
이렇게 된걸
TXT col1 col2 col3
001 3 3 3
이렇게 만들려고 하는데...collect 문을 사용해도잘 안되서요...
답글 부탁 드림니다.
댓글 6
-
e-abap
2007.04.17 02:41
-
bd
2007.04.17 02:53
*&---------------------------------------------------------------------*
*& Report Z_BIRTHDAY_2
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT Z_BIRTHDAY_2.
TABLES ZTKKS01.
DATA : ITAB_ZTKKS01 LIKE ZTKKS01 OCCURS 0 WITH HEADER LINE.
DATA : ITAB_COMPARE LIKE ZTKKS01 OCCURS 0 WITH HEADER LINE.
DATA : G_NAME(30) TYPE C.
DATA : G_INDEX TYPE SY-TABIX.
FIELD-SYMBOLS <FS>.
DATA : BEGIN OF GT_DISP OCCURS 0,
TXT(30),
COL0 TYPE I,
COL1 TYPE I,
COL2 TYPE I,
COL3 TYPE I,
COL4 TYPE I,
COL5 TYPE I,
COL6 TYPE I,
COL7 TYPE I,
COL8 TYPE I,
COL9 TYPE I,
COL10 TYPE I,
COL11 TYPE I,
COL12 TYPE I,
COL13 TYPE I,
COL14 TYPE I,
COL15 TYPE I,
COL16 TYPE I,
COL17 TYPE I,
COL18 TYPE I,
COL19 TYPE I,
COL20 TYPE I,
COL21 TYPE I,
COL22 TYPE I,
COL23 TYPE I,
COL24 TYPE I,
COL25 TYPE I,
COL26 TYPE I,
COL27 TYPE I,
END OF GT_DISP.
DATA: GS_DISP LIKE GT_DISP OCCURS 0 WITH HEADER LINE.
START-OF-SELECTION.
SELECT * INTO CORRESPONDING FIELDS OF TABLE ITAB_ZTKKS01 FROM ZTKKS01.
SORT ITAB_ZTKKS01 BY BIRTH.
ITAB_COMPARE[] = ITAB_ZTKKS01[].
LOOP AT ITAB_ZTKKS01.
CONCATENATE '0' ITAB_ZTKKS01-BIRTH+4(2) INTO GS_DISP-TXT.
CONCATENATE 'GS_DISP-COL' ITAB_ZTKKS01-BIRTH+3(1) INTO G_NAME.
ASSIGN (G_NAME) TO <FS>.
ADD 1 TO <FS>.
G_INDEX = SY-TABIX + 1.
CLEAR : ITAB_COMPARE.
READ TABLE ITAB_COMPARE INDEX G_INDEX.
IF ITAB_COMPARE-BIRTH+3(1) <> ITAB_ZTKKS01-BIRTH+3(1).
APPEND GS_DISP TO GT_DISP.
CLEAR GS_DISP.
ENDIF.
ENDLOOP.
SORT GT_DISP BY TXT.
WRITE : /'OKOKK'.
일단 답 나올때 까지 무식하게 코딩한거라.... 흐흐 이해해주세요 ioi
-
e-abap
2007.04.17 03:08
collect 구문이 안 보이는데요
-
bd
2007.04.17 03:28
해결 했습니다. read table 다음부분에..
COLLECT GS_DISP INTO GT_DISP.
IF ITAB_COMPARE-BIRTH+3(2) NE ITAB_ZTKKS01-BIRTH+3(2).
CLEAR GS_DISP.
ENDIF.
ENDLOOP.
-
이종원
2007.04.17 19:36
헉.....해결했다니 헛수고 했넹..혹시 저도 몰라서 테스트 해봤습니다.
올려주신 ZTKKS01 구조를 몰라서 그냥 선언한 테이블로 정리해 봤구요..
결과값은 잘 나오네요.....collect로 해결하면 큰 어려움 없습니다. 저도 해보니깐 실력이 늘더라구요..ㅋㅋㅋㅋ 많이 숙제 좀 내주세요.
REPORT z_test_02.
DATA : BEGIN OF gt_disp OCCURS 0,
txt(30),
col0 TYPE i,
col1 TYPE i,
col2 TYPE i,
col3 TYPE i,
col4 TYPE i,
col5 TYPE i,
col6 TYPE i,
col7 TYPE i,
col8 TYPE i,
col9 TYPE i,
END OF gt_disp.
DATA: gs_disp LIKE gt_disp OCCURS 0 WITH HEADER LINE.
DATA: my_result LIKE gt_disp OCCURS 0 WITH HEADER LINE.
DATA: tabix TYPE sy-tabix.
* INSERT VALUE
START-OF-SELECTION.
DO 3 TIMES.
gs_disp-txt = '001'.
gs_disp-col0 = '1'.
gs_disp-col1 = '1'.
gs_disp-col2 = '1'.
gs_disp-col3 = '1'.
gs_disp-col4 = '1'.
gs_disp-col5 = '1'.
gs_disp-col6 = '1'.
gs_disp-col7 = '1'.
gs_disp-col8 = '1'.
gs_disp-col9 = '1'.
APPEND gs_disp.
ENDDO.
DO 2 TIMES.
gs_disp-txt = '002'.
gs_disp-col0 = '1'.
gs_disp-col1 = '1'.
gs_disp-col2 = '1'.
gs_disp-col3 = '1'.
gs_disp-col4 = '1'.
gs_disp-col5 = '1'.
gs_disp-col6 = '1'.
gs_disp-col7 = '1'.
gs_disp-col8 = '1'.
gs_disp-col9 = '1'.
APPEND gs_disp.
ENDDO.
LOOP AT gs_disp.
tabix = sy-tabix.
READ TABLE my_result WITH KEY txt = gs_disp-txt.
IF sy-subrc <> 0.
my_result-txt = gs_disp-txt.
my_result-col0 = gs_disp-col0.
my_result-col1 = gs_disp-col1.
my_result-col2 = gs_disp-col2.
my_result-col3 = gs_disp-col3.
my_result-col4 = gs_disp-col4.
my_result-col5 = gs_disp-col5.
my_result-col6 = gs_disp-col6.
my_result-col7 = gs_disp-col7.
my_result-col8 = gs_disp-col8.
my_result-col9 = gs_disp-col9.
APPEND my_result.
ELSE.
COLLECT gs_disp INTO my_result.
ENDIF.
ENDLOOP.
END-OF-SELECTION.
WRITE:/ 'GS_DISP DISPLAY'.
LOOP AT gs_disp.
WRITE:/ gs_disp-txt,
gs_disp-col0,
gs_disp-col1,
gs_disp-col2,
gs_disp-col3,
gs_disp-col4,
gs_disp-col5,
gs_disp-col6,
gs_disp-col7,
gs_disp-col8,
gs_disp-col9.
ENDLOOP.
WRITE:/ 'MY_RESULT DISPLAY'.
LOOP AT my_result.
WRITE:/ my_result-txt,
my_result-col0,
my_result-col1,
my_result-col2,
my_result-col3,
my_result-col4,
my_result-col5,
my_result-col6,
my_result-col7,
my_result-col8,
my_result-col9.
ENDLOOP. -
ABAP쟁이
2008.10.08 22:50
흠 이렇게 하는구나 흠나
collect문을 잘 쓰면 될텐데요...소스가 어떻게 되는지요?