-
테이블 90도 뒤집기(가로배열을 세로배열로)SAP/ABAP 2013. 4. 19. 16:20
술병을 눕혀보자!
*&---------------------------------------------------------------------*
*& Report ZSSTEST *
*& *
*&---------------------------------------------------------------------*
*& *
*& *
*&---------------------------------------------------------------------*
REPORT ZSSTEST.
" 소스 테이블
DATA: BEGIN OF GT_SRC_ITAB OCCURS 0,
A,
B,
C,
D,
E,
F,
END OF GT_SRC_ITAB.
" 타겟 테이블
DATA: BEGIN OF GT_TRG_ITAB OCCURS 0,
M01,
M02,
M03,
M04,
M05,
M06,
M07,
M08,
M09,
M10,
M11,
M12,
END OF GT_TRG_ITAB.
DATA : GV_VAL.
DATA : GV_TABIX(2) TYPE N.
DATA : GV_FNAME TYPE STRING.
FIELD-SYMBOLS : <FS_FIELD> TYPE ANY.
" 샘플데이터 만들기
DEFINE ADD_SRC.
CLEAR GT_SRC_ITAB.
GT_SRC_ITAB-A = &1.
GT_SRC_ITAB-B = &2.
GT_SRC_ITAB-C = &3.
GT_SRC_ITAB-D = &4.
GT_SRC_ITAB-E = &5.
GT_SRC_ITAB-F = &6.
APPEND GT_SRC_ITAB.
END-OF-DEFINITION.
ADD_SRC ' ' 'X' 'X' 'X' 'X' ' '.
ADD_SRC ' ' ' ' 'X' 'X' ' ' ' '.
ADD_SRC ' ' ' ' 'X' 'X' ' ' ' '.
ADD_SRC ' ' ' ' 'X' 'X' ' ' ' '.
ADD_SRC ' ' ' ' 'X' 'X' ' ' ' '.
ADD_SRC 'X' 'X' 'X' 'X' 'X' 'X'.
ADD_SRC 'X' ' ' ' ' ' ' ' ' 'X'.
ADD_SRC 'X' ' ' ' ' ' ' ' ' 'X'.
ADD_SRC 'X' ' ' ' ' ' ' ' ' 'X'.
ADD_SRC 'X' ' ' ' ' ' ' ' ' 'X'.
ADD_SRC 'X' ' ' ' ' ' ' ' ' 'X'.
ADD_SRC 'X' 'X' 'X' 'X' 'X' 'X'.
WRITE /'1. 소스데이터 출력'.
WRITE /.
LOOP AT GT_SRC_ITAB.
WRITE : /1 GT_SRC_ITAB-A, 3 GT_SRC_ITAB-B, 5 GT_SRC_ITAB-C,
7 GT_SRC_ITAB-D, 9 GT_SRC_ITAB-E, 10 GT_SRC_ITAB-F.
ENDLOOP.
" 변환
LOOP AT GT_SRC_ITAB.
GV_TABIX = SY-TABIX.
CONCATENATE 'GT_TRG_ITAB-M' GV_TABIX INTO GV_FNAME.
ASSIGN (GV_FNAME) TO <FS_FIELD>.
CHECK <FS_FIELD> IS ASSIGNED.
DO 6 TIMES VARYING GV_VAL FROM GT_SRC_ITAB-A NEXT GT_SRC_ITAB-B.
IF GV_TABIX EQ 1.
<FS_FIELD> = GV_VAL.
APPEND GT_TRG_ITAB.
ELSE.
READ TABLE GT_TRG_ITAB INDEX SY-INDEX.
<FS_FIELD> = GV_VAL.
MODIFY GT_TRG_ITAB INDEX SY-INDEX.
ENDIF.
CLEAR GT_TRG_ITAB.
ENDDO.
ENDLOOP.
WRITE /.
WRITE /'2. 변환데이터 출력'.
WRITE /.
LOOP AT GT_TRG_ITAB.
WRITE : /1 GT_TRG_ITAB-M01,
3 GT_TRG_ITAB-M02,
5 GT_TRG_ITAB-M03,
7 GT_TRG_ITAB-M04,
9 GT_TRG_ITAB-M05,
11 GT_TRG_ITAB-M06,
13 GT_TRG_ITAB-M07,
15 GT_TRG_ITAB-M08,
17 GT_TRG_ITAB-M09,
19 GT_TRG_ITAB-M10,
21 GT_TRG_ITAB-M11,
23 GT_TRG_ITAB-M12.
ENDLOOP.1~12월까지 있는 필드에 값을 넣는 다던지 통계 낼 때 가끔 쓰던 것 같은데 누가 궁금해하길래 내 방식대로 함 짜봤다.
수행하면 서있는 술병 형태의 소스데이터가 엎어진 술병이 된다.
'SAP > ABAP' 카테고리의 다른 글
Classic Debugger (1) 2013.07.02 한글포함여부 체크 (0) 2013.04.17 Dynamic Selection Screen (0) 2013.04.15 환율 그리고 독특한 날짜필드 TCURR-GDATU (0) 2013.04.11 ALV 셀별 스타일 지정 (0) 2013.03.25