메뉴 건너뛰기

SAP 한국 커뮤니티



FIELD-SYMBOL 정리

하얀천군 2007.11.02 09:46 조회 수 : 5701 추천:1

우선 FIELD-SYMBOL 의 여러가지 변형을 살펴보면


  1. ASSIGN f TO <fs>.
      단순히 field f의 값을 <fs>가 가리키도록 한다.


  2. ASSIGN (f) TO <fs>.
      동적 field를 이용한것인데 field f안의 값을 또 field명으로 보고 그 field의 값
      을 <fs>가 가리키도록 한다.


  3. ASSIGN TABLE FIELD (f) TO <fs>.
      2와 같은 경우이나 f 의 값이 table의 field명 일때 그 table field의 값을 
      <fs>가 가리키도록 한다.


  4. ASSIGN LOCAL COPY OF MAIN TABLE FIELD (f) TO <fs>.
      3와 같은 경우이나 tables로 선언된 main program의 table field값을 
      <fs>가 가리키는 것이 아니라 값만 복사 하여 사용하기 때문에 변경할 수 없다. 


  5. ASSIGN COMPONENT idx OF STRUCTURE rec TO <fs>.
      structure의 구성요소 순서를 idx에서 읽어 그 순서에 위치한 구성요소의 값을
      <fs>에 할당한다. 


  6. ASSIGN COMPONENT name OF STRUCTURE rec TO <fs>.
      structure의 구성요소명(field명)을 name에서 읽어 그 구성요소의 값을
      <fs>에 할당한다. 


  5번을 제외한 모든 경우는 field명을 사용하는 것이라서 field명에 규칙이 없으면   
  coding line 줄이는데 효과를 보지 못한다.   
  따라서 여기서는 field명에 규칙이 없더라도 coding line을 획기 적으로 줄일 수 있는
  5번경우를 사용한 예제만 소개하겠다. 
   
예제)


 FIELD-SYMBOLS : <FS1>, <FS2>.
 DATA:IDX1 LIKE SY-INDEX.     


 DATA: BEGIN OF ITAB1 OCCURS 0,
        CCYYMM(8),
        WERKS LIKE MARD-WERKS,
        MATNR LIKE MARD-MATNR,
        LABST LIKE MARD-LABST,
        UMLME LIKE MARD-UMLME,
        INSME LIKE MARD-INSME,
        EINME LIKE MARD-EINME,
        SPEME LIKE MARD-SPEME,
        RETME LIKE MARD-RETME,
        VMLAB LIKE MARD-VMLAB,
        VMUML LIKE MARD-VMUML,
        VMINS LIKE MARD-VMINS,
        VMEIN LIKE MARD-VMEIN,
        VMSPE LIKE MARD-VMSPE,
        VMRET LIKE MARD-VMRET,
      END OF ITAB1.


 DATA: ITAB2 LIKE ITAB1 OCCURS 0 WITH HEADER LINE.   



경우1) FIELD-SYMBOL 사용하지 않았을 경우


 LOOP AT ITAB1.
    READ TABLE ITAB2 WITH KEY CCYYMM = ITAB1-PERIOD
                              WERKS  = ITAB1-WERKS
                              MATNR  = ITAB1-MATNR
                              BINARY SEARCH.
 
    IF SY-SUBRC <> 0. 
      WRITE : / 'Not found in ITAB2 : ',
                 ITAB1-CCYYMM,
                 ITAB1-WERKS,
                 ITAB1-MATNR.                 
    ELSE.
        IF ITAB1-LABST <> ITAB2-LABST.
          WRITE : / SY-INDEX,
                    ITAB2-CCYYMM,
                    ITAB2-WERKS,
                    ITAB2-MATNR,
                    ITAB1-LABST,
                    ITAB2-LABST.
        ENDIF.
 
        IF ITAB1-UMLME <> ITAB2-UMLME.
          WRITE : / SY-INDEX,
                    ITAB2-CCYYMM,
                    ITAB2-WERKS,
                    ITAB2-MATNR,
                    ITAB1-UMLME,
                    ITAB2-UMLME.
        ENDIF.
       


        .............. 12번 반복 ........



    ENDIF.
 ENDLOOP.


경우2) FIELD-SYMBOL 사용했을 경우


 LOOP AT ITAB1.
    READ TABLE ITAB2 WITH KEY CCYYMM = ITAB1-PERIOD
                              WERKS  = ITAB1-WERKS
                              MATNR  = ITAB1-MATNR
                              BINARY SEARCH.
 
    IF SY-SUBRC <> 0. 
      WRITE : / 'Not found in ITAB2 : ',
                 ITAB1-CCYYMM,
                 ITAB1-WERKS,
                 ITAB1-MATNR.                 
    ELSE.


      IDX1 = 3.
     
      DO 12 TIMES.
        IDX1 = IDX1 + 1.
        ASSIGN COMPONENT IDX1  OF STRUCTURE ITAB1 TO <FS1>.
        ASSIGN COMPONENT IDX1  OF STRUCTURE ITAB2 TO <FS2>.


        IF <FS1> <> <FS2>.
          WRITE : / SY-INDEX,
                    ITAB2-CCYYMM,
                    ITAB2-WERKS,
                    ITAB2-MATNR,
                    <FS1>,
                    <FS2>.
        ENDIF.
      ENDDO.
    ENDIF.
 ENDLOOP.

번호 제목 글쓴이 날짜 조회 수
984 ABAP 정의 및 FAQ(영문) [7] sapjoy 2008.05.26 5739
983 Long Text [6] file BLISS 2007.05.30 5732
982 open sql [1] file 김경재 2008.01.07 5721
981 SAP 아이콘 모음 [3] file sapjoy 2007.03.11 5717
980 User Exit 질문 [3] 푸딩딩 2017.04.17 5704
» FIELD-SYMBOL 정리 [1] 하얀천군 2007.11.02 5701
978 로컬 파일 삭제 [2] 밤의화신 2014.12.23 5693
977 bdc레코딩및예제 [31] file BC고 2009.05.14 5684
976 ABAP INTERPACE에 관한 개념정리 문서 [5] file 초보보초보 2007.02.28 5665
975 유용한 함수 모음 입니다...^^; [11] file 이원욱 2007.03.15 5660
974 Essential_ABAP_Objects file 우하하 2007.06.27 5648
973 ALV개념 정리 [20] file 팡다루 2007.03.22 5614
972 Sap User-Exit [13] file 곰돌이 2007.07.27 5611
971 APO&BW [1] file sonata 2009.09.22 5608
970 ABAP 개발 가이드 입니다. [6] file pimpjin 2008.03.03 5600
969 selection screen program [1] 철죽1 2012.09.02 5573
968 NEW ABAP EDITOR [9] file sapjoy 2007.03.02 5561
967 ABAP Debugging Tips and Tricks [4] file 아밥뽀 2016.03.31 5549
966 Web Dynpro를 아세요? - III [6] file 이선구 2007.03.06 5546
965 SAPSCRIPTS Guide (ACCENTURE).pdf [6] file sapjoy 2007.02.15 5537