공백제거

CONDENSE C3 NO-GAPS.


1. String의 길이구하기 

   i = STRLEN( string )


2. CONCATENATE F1 F2 F3 INTO G.

 - F1, F2, F3을 G에 넣는다.

 - SEPARATED BY <string>

   FI, F2, F3사이에 <string>을 넣는다.

   ex) DATA: FIRST(2)  VALUE 'BAE',

             SECOND(2) VALUE 'BYUNG',

             THIRD(2)  VALUE 'SUNG',

             NAME(20).

       CONCATENATE FIRST SECOND THIRD INTO NAME SEPARATED BY SPACE.

   결과 => 'BAE BYUNG SUNG'


3. SPLIT G AT <string> INTO F1 F2 F3.

 - G의 내용을 <string>으로 구분하여 F1, F2, F3에 나누어 넣는다.

   ex) DATA: NAME(20) VALUE ',BAE,BYUNG,SUNG',

             FIRST(2),

             SECOND(2),

             THIRD(2),

             FORTH(2),

             FIFTH(2).

       SPLIT NAME AT ',' INTO FIRST SECOND THIRD FORTH FIFTH.

   결과 => FIRST  = SPACE

           SECOND = 'BAE'

           THIRD  = 'BYUNG'

           FORTH  = 'SUNG'

           FIFTH  = SPACE


4. SHIFT

 - 변수에 들어있는 값을 이동한다. 모든 field를 type C로 간주하여 처리하기 때

   문에 type C, N, D외에는 사용할 때 주의하여야 한다.

 - Option : CIRCULAR - 잘려나간 문자를 맨뒤에 놓는다.

            RIGHT - 오른쪽으로 1칸 이동한다.

 - 좌측으로 1칸 이동한다.

 - SHIFT 문은 PERFORMANCE를 많이 요구하기 때문에 LOOP안에서는 사용을 하지 않

   는 것이 좋다.(1개의 문자를 이동하는데 5Microseconds 소요)


4-1. SHIFT c.  

 ex) DATA: FIRST(10) VALUE 'ABCEDFGHIJ'.

     SHIFT FIRST.

     결과 : FIRST = 'BCDEFGHIJ '.


4-2. SHIFT c BY n PLACES.

 - 변수 c를 자리만큼 좌측으로 이동한다. 만일 c의 length보다 n이 크면 c에는 

   blank가 들어간다.


4-3. SHIFT c UP TO c1.

 - 변수 c의 내부에 c1이라는 string을 만날 때까지 좌측으로 이동한다. 

 - c1이 없으면 아무변화도 일어나지 않는다. 

 - 이때 return value SY-SUBRC는 -4이다.


4-4. SHIFT c LEFT DELETING LEADING c1.

    SHIFT c RIGHT DELETING TRAILING c1.

 - string c의 첫 번째 혹은 마지막 character가 string c1에 포함되어 있다면 

   해당 character를 삭제하면서 이동한다. 

 - 첫 번째 혹은 마지막 character가 중복되어 있다면 다른 character가 나올 때

   까지 이동한다.

 - 같은 글자가 없다면 아무런 변화도 일어나지 않는다.


5. CONDENSE <string>.

 - string 내부 단어사이의 blank를 1개씩만 남기고 없앤다.

 - Option : NO-GAPS - 모든 blank를 없앤다.

 - type C를 제외한 다른 field를 포함한 field string을 변환시키지 말 것. 이

   상한 값이 들어갈 수 있다.


6. TRANSLATE c TO UPPER CASE.

  TRANSLATE c TO LOWER CASE.

 - 대소문자를 변환하는데 쓰인다.

 - 10byte이상의 긴 field를 변환하는 것은 performance에 좋지 않다.


7. OVERLAY c1 WITH c2.

 - c1의 character 중 blank의 자리에 c2의 character가 있다면 blank의 위치에 

   있는 c2의 character를 넣는다.

   ex) DATA: WORK(20) VALUE 'BA  B UNG-SU G',

             HELP(20) VALUE '  E AYY  - NNI'.

       OVERLAY WORK WITH HELP.

 

       결과 : WORK = 'BAE BYUNG-SUNG'.


 - Performance에 좋지 않기 때문에 많이 쓰지 않는 것이 좋다.


8. REPLACE c1 WITH c2 INTO c3.

 - string c3에 있는 c1이라는 string을 c2로 변환시킨다.


3-8. SEARCH 

3-8-1. SEARCH c1 FOR c2.

- c1에서 c2라는 string을 찾는다.

- c1의 단어사이는 blanck로 구분한다.

- c2에는 '_' , '*'를 포함하여 사용할 수 있다.

- SY-SUBRC = 0 일 때 SY-EDPOS에 찾은 단어의 위치정보가 들어 있다.


3-8-2. SEARCH itab FOR c2.

- itab이라는 internal table에서 c2라는 string을 찾는다.

- 나머지는 위와 상동

- SY-SYBRC = 0 일 때 SY-TABIX에는 internal table의 line number가 SY-EDPOS에는 위치정보가 들어 있다.



변수에서 특정 문자를 지정한 문자로 변경해주는 함수입니다. 


CALL FUNCTION 'STRING_REPLACE' 

      EXPORTING 

        pattern             = ','   " 변경할 문자열  

        substitute          = ''      " 변경될 문자열  

      CHANGING 

        text                = lv_var      "변경할 변수 

      EXCEPTIONS 

        wrong_string_length = 1 

        OTHERS              = 2. 



    REPLACE ALL OCCURRENCES OF '.' IN: LV_FROM_DATE WITH ''.

    REPLACE ALL OCCURRENCES OF '.' IN: LV_TO_DATE WITH ''.




    REPLACE ',' WITH '' INTO WA_CELL_DATA-FORMATTED_VALUE.

    CONDENSE WA_CELL_DATA-FORMATTED_VALUE NO-GAPS.

'ABAP' 카테고리의 다른 글

[ABAP / sproxy] proxy 생성 방법  (0) 2014.04.15
[ABAP] 날짜 관련 Function 모음  (0) 2013.08.12
[ABAP] Number RANGE 사용하기  (0) 2013.08.12
[ABAP] 다른 프로그램 호출 샘플  (0) 2013.08.12
[ABAP] 소스 수정하는 소스  (0) 2013.08.12
Posted by INSPIEN
,