메뉴 건너뛰기

SAP 한국 커뮤니티



ABAP [Field-Symbol] 명령어 정리표

문바이 2011.05.16 16:36 조회 수 : 59469 추천:20

필드심볼 이놈.

잘만           사용하면 코딩량을 엉청나게 줄일수 잇는 명령어.

너무 많이 사용하면 나중에 유지보수 하기 무지하게 힘든 명령어.

그렇다고   쉽게사용하기에는 번거러운 명령어를 정리해 보았습니다.

 

정의

Generic

FIELD-SYMBOLS <fs1>.

임이의 필드 1개를 받는다.

FIELD-SYMBOLS <fs1> TYPE ANY.

임이의 Structure 1개를 받는다.

FIELD-SYMBOLS <fs1> TYPE ANY TABLE.

임이의 itab 1개를 받는다.

Fully

<fs1>-carrid
직접지정이 가능함

FIELD-SYMBOLS <fs1> TYPE SFLIGHT.

dbtab sflight와 동일한 structure 1개

FIELD-SYMBOLS <fs1> LIKE LINE OF gt_tab.

itab gt_tab와 동일한  structure 1개

FIELD-SYMBOLS <fs1> LIKE gt_tab.

itab gt_tab와 동일한  structure 1개

itab gt_tab와 동일한  itab 1개
[without header line]의 경

할당

Generic

Static Assign

[Field]

ASSIGN (dobj) TO <fs> [형식]
FIELD-SYMBOS <fs> TYPE ANY.
   ASSIGN line-col1+6(*) TO <fs>.

dobj는 필드자체이거나,
필드 1개짜리 Structure  여도 상관없다.

Generic

Dynamic Assign

[Field]

ASSIGN TABLE FIELD (dobj) TO <fs>
TABLES SFLIGHT.
name1 = 'SFLIGHT-CARRID'
FIELD-SYMBOS <fs> TYPE ANY.
   ASSIGN TABLE FIELD (name1) to <fs>

Tables 명령어로 선언된 테이블 사용시

Generic

Static Assign

[Structure]

ASSIGN COMPONENT comp OF STRUCTURE struc TO <fs>.
FIELD-SYMBOS <fs> TYPE ANY.
  ASSIGN COMPONENT sy-index OF STRUCTURE <f1> to <f2>.

comp : field column index를 의미한다.
struc : Structure 를 의미함.

Fully

Static Assign

[Structure]

TYPES : BEGIN OF line,
                        col1 TYPE c,col2 TYPE c,
             END OF line.
FIELD-SYMBOLS <fs> LIKE line.            (정상방법)
FIELD-SYMBOLS <fs> LIKE TYPE ANY.  (오류발생)
ASSIGN line TO <fs>.
MOVE <fs>-col2 TO <fs>-col1.

Generic

Dynamic Assign

[itab]

 

(Header line itab

사용 불가)

TYPES : BEGIN OF line,
                        col1 TYPE c,col2 TYPE c,
             END OF line.
DATA : wa TYPE line.
DATA : fname(4) TYPE c VALUE 'col1'.
DATA itab TYPE SORTED TABLE OF line WITH UNIQUE KEY col1.
FIELD-SYMBOLS <fs> TYPE ANY TABLE.
ASSIGN itab TO <fs>.

READ TABLE <fs> WITH TABLE KEY (fname) = 'X' INTO wa. (정상방법)
READ TABLE <fs> WITH TABLE KEY col1 = 'X' INTO wa.   (오류발생)

Cast

Implicit Casting.
 ASSIGN <var> TO <fs> CASTING.

Explicit Casting.
 ASSIGN <var> TO <fs> CASTING TYPE line.

암묵적 형변환
 Fully type의 경우 가능하다.
명시적 형변환
 Generic Type의 경우 가능하다

응용

코드

모음

Field명이
비슷한 경우
Field Name
sum01,sum02,

sum03~~sum12

FIELD-SYMBOLS <fs>.
DATA : fname(10),
          sum LIKE COSP-WTG001.

DO 12 TIMES.
   cc = sy-index.
   CONCATENATE 'COSP-WGT0' CC INTO fname.
   ASSIGN (fname) TO <fs>.
   sum = sum + <fs>.
   CLEAR : fname, <fs>.
ENDDO.

itab을 직접 수정.
itab의 일부내용을

찾아직접수정하고자

 할 때 유용함.

DATA : lt_fieldCat type lvc_t_fcat.
FIELD-SYMBOLS <fs> Type lvc_s_fcat.

Loop at lt_filedCat Assigning <fs>.
   if <ls_fcat>-fieldName = 'CUSTM'.
        <ls_fcat>-coltext = '고객명.
   endif.
ENDLOOP.

서브루틴에서

불특정 itab

을 받아서

가공해보기

 

(잘 응용하면

 아주 유용함 )

FORM fill_life  Using pt_t1 type ANY TABLE.

    FILED-SYMBOLS : <FS1> type any,

                                       <FS2>.

   

    DATA : lv_s1 Type String,

                  lv_s2  Type String,

                  lv_vbeln Type vbap-vbeln.

 

   lv_s1 = 'PSPID'.

   SORT pt_t1 By (lv_s1).

    

   Loop at pt_t1 Assgining <FS1>.

          indx1 = sy-tabix.

         

          At New (lv_s1).

                Assign component 'PSPID' of Structure <FS1> to <FS2>.

                SELECT Single c~vbeln

                     INTO lv_vbeln

                     FROM test_table1

                  WHERE pspid = <FS2>.

          EndAt.

      

          if not lv_vbeln is Inital.

                Assign Component 'VBELN' of structure <FS1> to <FS2>.

                <FS2> = lv_vbeln.

                Modify Table pt_t1 FROM <FS1>.

          Endif.

   EndLoop.

 

EndForm.

               

 

Data Reference Variable
 Field , Structure , itab을 받는다

DATA : name1 TYPE STRING VALUE 'sflight'.
DATA dref TYPE REF TO DATA
.           [dref를 Data 참조변수로 선언한다.]
CREATE DATA
dref TYPE (name1).      [선언된 dref에 sflight가 연결되도록 선언한다.]
ASSIGN dref->* TO <fs>.
                   [dref는 메모리 변수를 값으로 가지고 있으며
                                                      그 변수값에 해당하는 번지를 <fs>에 할당한다]