ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 테이블 90도 뒤집기(가로배열을 세로배열로)
    SAP/ABAP 2013. 4. 19. 16:20

     

    술병을 눕혀보자!

     

     

     

    *&---------------------------------------------------------------------*
    *& Report  ZSSTEST                                                     *
    *&                                                                     *
    *&---------------------------------------------------------------------*
    *&                                                                     *
    *&                                                                     *
    *&---------------------------------------------------------------------*

    REPORT  ZSSTEST.

    " 소스 테이블
    DATABEGIN OF GT_SRC_ITAB OCCURS 0,
            A,
            B,
            C,
            D,
            E,
            F,
          END OF GT_SRC_ITAB.

    " 타겟 테이블
    DATABEGIN 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(2TYPE N.
    DATA GV_FNAME    TYPE STRING.
    FIELD-SYMBOLS <FS_FIELD> TYPE ANY.

    " 샘플데이터 만들기
    DEFINE ADD_SRC.
      CLEAR GT_SRC_ITAB.
      GT_SRC_ITAB-&1.
      GT_SRC_ITAB-&2.
      GT_SRC_ITAB-&3.
      GT_SRC_ITAB-&4.
      GT_SRC_ITAB-&5.
      GT_SRC_ITAB-&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-AGT_SRC_ITAB-B,  GT_SRC_ITAB-C,
               GT_SRC_ITAB-DGT_SRC_ITAB-E10 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_FNAMETO <FS_FIELD>.

      CHECK <FS_FIELD> IS ASSIGNED.
      DO TIMES VARYING GV_VAL FROM GT_SRC_ITAB-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,
               GT_TRG_ITAB-M02,
               GT_TRG_ITAB-M03,
               GT_TRG_ITAB-M04,
               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
Designed by Tistory.