SEARCH 함수

: 문자열 안에서 특정 문자나 문자열을 찾을 때 사용하는 함수.

java에서는 indexOf()함수로 쓴다.

 

🔍 기본 문법

SEARCH <string> FOR <substring>.

 

1. 예시

DATA(text) TYPE string VALUE 'I love ABAP!'.
SEARCH text FOR 'love'.

IF sy-subrc = 0.
  WRITE: 'Found!'.
ELSE.
  WRITE: 'Not found!'.
ENDIF.
  • 'love'라는 문자열이 text 안에 있으면 sy-subrc = 0
  • 없으면 sy-subrc ≠ 0

 

 sy-fdpos

 : 문자열이  어디에서 시작하는지 위치를 알려줌 (못찾으면 -1)

DATA(text) TYPE string VALUE 'banana'.

SEARCH text FOR 'na'.

IF sy-subrc = 0.
  WRITE: 'Found at position:', sy-fdpos.
ENDIF.

결과 : Found at position: 2

 

2. 예시 2

DATA(txt) = 'banana'.

SEARCH txt FOR 'na' STARTING AT 3.

WRITE: sy-fdpos.

결과는

Found at position: 4

 

'SAP' 카테고리의 다른 글

SAP ABAP DATE&TIME Fields  (0) 2025.04.23
SAP ABAP SPLIT함수  (0) 2025.04.23
SAP ABAP Replace함수  (0) 2025.04.23
SAP ABAP STRLEN - 문자열 길이 구하는 함수  (0) 2025.04.23
SAP ABAP CONDENSE 함수  (0) 2025.04.23

REPLACE함수란?

문자열 안에서 특정 부분 문자열을 찾아서 다른 문자열로 바꾸는 함수

 

🔤 기본 문법:

REPLACE <old_substring> IN <target_string> WITH <new_substring>.

 

1. 방법1

DATA(text) = 'I love coffee'.
REPLACE 'coffee' IN text WITH 'tea'.
WRITE text.   " 결과: I love tea

2. 방법 2 : 한글자만 바꾸기

DATA(word) = 'banana'.
REPLACE 'a' IN word WITH 'o'.
WRITE word.   " 결과: bonana

기본 REPLACE문은 가장 첫번째 나오는 것 하나만 바꿈!

3. 방법 3: 모든 항목 바꾸기

- REPLACE ALL OCCURRENCES OF

REPLACE ALL OCCURRENCES OF 'a' IN word WITH 'o'.
WRITE word.   " 결과: bonono

4. 특정 위치에서 바꾸기

REPLACE SECTION OFFSET 2 LENGTH 3 OF text WITH 'XXX'.

- 3번째 문자부터 3글자를 XXX로 바꾼다.

DATA(text) = 'ABCDEFG'.

REPLACE SECTION OFFSET 2 LENGTH 3 OF text WITH 'XXX'.

WRITE text.

// ABXXXFG

✅ 여기서 중요한 포인트:

  • OFFSET0부터 시작되기 때문에 3번째 글자부터 바뀜
  • LENGTH바꿀 문자 수

'SAP' 카테고리의 다른 글

SAP ABAP SPLIT함수  (0) 2025.04.23
SAP ABAP SEARCH 함수  (0) 2025.04.23
SAP ABAP STRLEN - 문자열 길이 구하는 함수  (0) 2025.04.23
SAP ABAP CONDENSE 함수  (0) 2025.04.23
SAP ABAP CONCATENATE 함수  (0) 2025.04.23

문자열 길이 구하는 함수인 strlen!

c언어와 똑같은 함수여서 반가웠다.

 

surname = "dev"
len = strlen(surname).
WRITE : 'The length of the surname field is', len.
ULINE.

The length of the surname field is 3
------------------------------------

출력 결과는 위와 같다. len은 3!

 

'SAP' 카테고리의 다른 글

SAP ABAP SEARCH 함수  (0) 2025.04.23
SAP ABAP Replace함수  (0) 2025.04.23
SAP ABAP CONDENSE 함수  (0) 2025.04.23
SAP ABAP CONCATENATE 함수  (0) 2025.04.23
SAP ABAP se38 initial screen attributes 타입의미  (0) 2025.04.22

CONDENSE 함수

= 문자열 안에 있는 불필요한 공백을 제거할 때 사용

CONDENSE <문자열 변수> [NO-GAPS].
  • 문자열 안의 여러 개의 연속된 공백을 하나의 공백으로 줄이고, 앞뒤 공백은 삭제함.
  • NO-GAPS 옵션을 사용하면 모든 공백을 제거한다.(중간 공백까지...!)

1. 예제1

DATA(text) = '   ABAP     Programming    is   fun!   '.
CONDENSE text.
WRITE: text.  " 결과: ABAP Programming is fun!

- 앞, 뒤 공백은 사라지고 중간의 연속된 공백은 하나로 준다.

 

2. 예제2 : No-gaps 사용

DATA(text) = '   ABAP     Programming    is   fun!   '.
CONDENSE text NO-GAPS.
WRITE: text.  " 결과: ABAPProgrammingisfun!

 

보통 입력값을 정리할 때나 SELECT조건에서 비교하기 전에 공백을 제거할 때,

파일에서 읽어온 문자열이 지저분할 때 쓴다고 한다.

 

'SAP' 카테고리의 다른 글

SAP ABAP Replace함수  (0) 2025.04.23
SAP ABAP STRLEN - 문자열 길이 구하는 함수  (0) 2025.04.23
SAP ABAP CONCATENATE 함수  (0) 2025.04.23
SAP ABAP se38 initial screen attributes 타입의미  (0) 2025.04.22
SAP ABAP se38 subobjects  (0) 2025.04.22

 

복습하다가 다시 재정리해야겠다고 생각이 든 함수정리! 

Concat은 여러 문자열을 하나로 이어붙이는 함수다 

문자열 + 문자열 = 결과 문자열 을 만든다.

CONCATENATE <문자열1> <문자열2> ... INTO <결과변수> [SEPARATED BY <구분자>].

 

예시1.

DATA: str1 TYPE string VALUE 'Hello',
      str2 TYPE string VALUE 'ABAP',
      result TYPE string.

CONCATENATE str1 str2 INTO result.
WRITE: result. " 출력: HelloABAP

 

예시2. 구분자 추가 (= SEPARATED BY)

DATA: fname TYPE string VALUE 'John',
      lname TYPE string VALUE 'Doe',
      full_name TYPE string.

CONCATENATE fname lname INTO full_name SEPARATED BY space.
WRITE: full_name. " 출력: John Doe

 

예시3. 고정길이 변수와 연결

DATA: str1 TYPE c LENGTH 10 VALUE 'SAP',
      str2 TYPE c LENGTH 10 VALUE 'ABAP',
      result TYPE c LENGTH 20.

CONCATENATE str1 str2 INTO result.
WRITE: result. " 출력: SAP       ABAP

 

구분자 하이픈 - 예시

DATA: year  TYPE string VALUE '2025',
      month TYPE string VALUE '04',
      day   TYPE string VALUE '23',
      date_result TYPE string.

CONCATENATE year month day INTO date_result SEPARATED BY '-'.
WRITE: date_result. " 출력: 2025-04-23

'SAP' 카테고리의 다른 글

SAP ABAP STRLEN - 문자열 길이 구하는 함수  (0) 2025.04.23
SAP ABAP CONDENSE 함수  (0) 2025.04.23
SAP ABAP se38 initial screen attributes 타입의미  (0) 2025.04.22
SAP ABAP se38 subobjects  (0) 2025.04.22
SAP ABAP Buffering, size category  (0) 2025.04.22

 

📌 각 상태의 의미 정리


U Unclassified 아직 상태가 지정되지 않은 프로그램. 테스트 중이거나 초기 상태
T Test Program 테스트 용도로 만든 프로그램. 예: 기능 시험, 디버깅용 프로그램.
K Customer Production Program 고객이 운영 환경에서 실제 사용하는 프로그램.
P SAP Standard Production Program SAP가 제공하는 표준 운영 프로그램. (수정 ❌)
S System Program SAP 내부에서만 사용하는 시스템 핵심 프로그램. (건드릴 일 X)
(없음) (기타) 선택하지 않았거나, 특수한 케이스. 거의 사용하지 않음.

✅ 개발 시 권장 사항

  • 개발 중 테스트 용도면 → T
  • 실제 운영 배포용이면 → K
  • 상태 미정일 때는 일단 U로 두고, 이후 변경 가능

'SAP' 카테고리의 다른 글

SAP ABAP CONDENSE 함수  (0) 2025.04.23
SAP ABAP CONCATENATE 함수  (0) 2025.04.23
SAP ABAP se38 subobjects  (0) 2025.04.22
SAP ABAP Buffering, size category  (0) 2025.04.22
SAP ABAP Data Class  (0) 2025.04.22

📂 각 Subobjects의 의미 정리


Source Code 📜 ABAP 코드가 실제로 들어 있는 메인 소스 코드 화면. 
Variants 🎛️ 실행 시 사용할 입력값(파라미터)을 저장한 실행 설정값. 보고서(Report)를 다양한 조건으로 실행하고 싶을 때 사용
Attributes 📝 프로그램의 속성 정보를 보여줌. 예: 프로그램 타입(Executable, Include 등), 개발자 이름, 생성일, 패키지 등.
Text Elements 🗣️ 메시지, 라벨, 버튼명 등에 사용되는 텍스트 문자열 관리.
프로그램에서 쓰는 text-001, text-002 같은 것들의 실내용 텍스트를 여기에 설정해.
Documentation 📘 이 프로그램에 대한 설명을 기록할 수 있는 영역. 개발자나 사용자가 이해하기 쉽도록 설명을 남길 수 있어. 거의 사용되지 않기도 함.

 

'SAP' 카테고리의 다른 글

SAP ABAP CONCATENATE 함수  (0) 2025.04.23
SAP ABAP se38 initial screen attributes 타입의미  (0) 2025.04.22
SAP ABAP Buffering, size category  (0) 2025.04.22
SAP ABAP Data Class  (0) 2025.04.22
SAP ABAP DATA TYPE  (0) 2025.04.22

📏 1. Size Category (사이즈 카테고리)

개념:
이 테이블에 얼마나 많은 양의 데이터가 저장될지 SAP에게 알려주는 설정이다.

SAP는 내부적으로 테이블이 저장될 데이터베이스 테이블 스페이스 크기를 미리 할당하는데, 이때 크기를 예측해서 효율적으로 공간을 배분하기 위해 사용함

📊 예시:

size 예상레코드수
0 ~600
1 ~3,700
2 ~18,500
3 ~92,000
4 ~460,000
5 ~2,300,000

숫자가 올라갈수록 테이블에 더 많은 데이터를 저장할 수 있다!

✅ 언제 쓰는지 예시:

  • 고객 테이블처럼 기본 정보만 몇 천 건 저장 → Size Category 0~1
  • 매출 내역, 로그 테이블처럼 수십만~수백만 건 저장될 것 같음 → Size Category 3~5

실제로 정확하게 사이즈를 모르더라도, 예상 수치에 따라 잡아주면 됨. 필요하면 SAP가 자동으로 확장함.


🚀 2. Buffering (버퍼링)

의미:
SAP 앱 서버가 테이블 데이터를 메모리에 저장해두고,
DB를 매번 조회하지 않고 빠르게 접근할 수 있도록 해주는 기능이야!

📦 왜 쓰는 걸까?

  • 읽기 위주 테이블에서 매번 DB를 조회하면 속도 저하
  • 버퍼링하면 빠르게 메모리에서 불러올 수 있음

🧰 Buffering 종류


❌ No buffering 버퍼링 안 함. (매번 DB 조회)
✅ Full buffering 전체 테이블을 통째로 메모리에 저장. 작은 기준 테이블에 적합.
⚠️ Generic buffering Key 필드를 기준으로 일부 데이터만 버퍼링. 큰 테이블에 적합.

💡 예시로 정리:

국가 코드, 통화 코드 (거의 안 바뀜) Full buffering 작고 자주 읽음
고객 주문 테이블 (자주 바뀜) No buffering 매번 최신 데이터가 필요
중간 크기 마스터 데이터 테이블 Generic buffering 키 기준으로 쪼개서 캐싱

⚠️ 참고: 버퍼링 사용 시 유의할 점!

  • 테이블이 자주 바뀌면 버퍼와 DB가 불일치할 수 있어서 주의가 필요함
  • 주로 읽기 전용 테이블, 기준 코드 테이블에 적용함

🧾 요약

Size Category 테이블에 저장될 데이터의 예상 크기 지정 (SAP가 공간 효율적으로 배정)
Buffering 테이블을 메모리에 캐싱해서 성능 향상 (작고 자주 읽는 테이블에 좋음)

 

'SAP' 카테고리의 다른 글

SAP ABAP se38 initial screen attributes 타입의미  (0) 2025.04.22
SAP ABAP se38 subobjects  (0) 2025.04.22
SAP ABAP Data Class  (0) 2025.04.22
SAP ABAP DATA TYPE  (0) 2025.04.22
SAP ABAP SE11  (0) 2025.04.22

✅ Data Class란?

 

Data Class는 SAP 내부에서 데이터가 물리적으로 저장될 테이블스페이스의 성격을 결정하는 분류값.

즉, 데이터가 어떤 **성격(성질)**을 가지는지에 따라 분류해서 데이터베이스에 저장될 물리적 위치를 다르게 관리함

 

 

🗂 주요 Data Class 종류


코드 의미 설명
APPL0 Master Data (마스터 데이터) 자주 변경되지 않는 기준 정보 (예: 고객, 자재)
APPL1 Transaction Data (트랜잭션 데이터) 자주 변경되는 데이터 (예: 주문, 구매, 재고 이동)
APPL2 Organization Data (조직 데이터) 조직 구조 정보 (예: 회사 코드, 부서 등)
USR User-specific Data 사용자 정의 데이터 (보통 테스트용이나 커스터마이징된 테이블)
CUSTOM Custom 개발용 (시스템에 따라 있음) 특정 고객사 환경에서 정의된 데이터 클래스

💡 예시

  • 고객 테이블 (ZCUSTOMERS) → APPL0
  • 주문 내역 테이블 (ZSALES_ORDERS) → APPL1
  • 조직 구조 테이블 (ZORG_STRUCTURE) → APPL2

 

SAP은 내부적으로 이 구분을 활용해서

- 데이터 저장 효율성을 높이고,

- 성능을 튜닝하고,

- 테이블 스페이스를 분리한다고한다.

 

📌 개발 시 선택

  • 기준 정보용 테이블 → APPL0
  • 실시간으로 많이 바뀌는 데이터 → APPL1
  • 조직 코드나 부서 같은 설정성 정보 → APPL2
  • 연습/실험/개인 테이블 → USR

'SAP' 카테고리의 다른 글

SAP ABAP se38 subobjects  (0) 2025.04.22
SAP ABAP Buffering, size category  (0) 2025.04.22
SAP ABAP DATA TYPE  (0) 2025.04.22
SAP ABAP SE11  (0) 2025.04.22
SAP ABAP 도메인  (0) 2025.04.22

기본적으로  데이터타입이 어떤 것이 있는 지 알아야 조금 더 개발에 대한 이해가 쉬워질 것이라 생각이 들었다.

ABAP데이터 타입은 "내장 데이터타입"과 "사용자 정의타입"으로 나뉘어진다.

📝 기본 내장 데이터 타입 (Elementary Types)

타입 설명 예시 값
C 문자형 (Character) 'ABC'
N 숫자형 문자 (Numeric text) '00123456'
D 날짜 (Date, YYYYMMDD) '20250422'
T 시간 (Time, HHMMSS) '154233'
I 정수형 (Integer, 4 bytes) 123
F 부동소수점 (Floating point) 3.14
P Packed number (소수 포함 숫자) 12345.67
X 이진형 (Raw byte) FF00A2
STRING 가변 길이 문자열 'Hello ABAP'
XSTRING 가변 길이 바이너리 데이터 파일, 이미지 등
CLNT 클라이언트 번호 (3자리 고정) '100'
LANG 언어 코드 (ISO 언어 코드) 'EN', 'KO'
UNIT 단위 (예: KG, M) 'KG', 'L'
CUKY 통화 코드 'USD', 'KRW'

 

📝 시스템 필드형 타입 (시스템 구조용 필드)

필드명 의미 기본타입
MANDT 클라이언트 번호 CLNT(3)
BUKRS 회사 코드 (Company Code) CHAR(4)
WERKS 플랜트 (Plant) CHAR(4)
MATNR 자재 번호 CHAR(18)
EBELN 구매오더 번호 CHAR(10)
VBELN 판매문서 번호 CHAR(10)
BELNR 회계문서 번호 CHAR(10)
LIFNR 공급업체 번호 CHAR(10)
KUNNR 고객 번호 CHAR(10)

 

이 값들은 대부분 도메인과 연결되어있으며, SAP내에서도 고유 의미와 형식이 지정되어있다.

 

사용자 정의타입으로 Domain+Date Element조합을 SAP표준 필드와 비슷하게 만들 수 있다.

 

'SAP' 카테고리의 다른 글

SAP ABAP Buffering, size category  (0) 2025.04.22
SAP ABAP Data Class  (0) 2025.04.22
SAP ABAP SE11  (0) 2025.04.22
SAP ABAP 도메인  (0) 2025.04.22
SAP ABAP Programming for Beginners - 67 Internal Table  (0) 2025.04.13

+ Recent posts