문자열 길이 구하는 함수인 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

 

SE11은 무슨 일을 하는 화면일까? 

라는 질문에 테이블의 열 구조를 정의하는 작업이 아닐까 생각했다. => 정답은 맞다! 

 

SE11 은 ABAP Dictionary로써, 하는 일은 데이터베이스 객체 설계다.

데이터를 넣기 전에 어떤 형태로 데이터를 저장할 지 미리 설계하는 것!!!

필드 이름 데이터타입
EMPLOYEE_ID ZEENUM 회원번호 (숫자형 8자리)
NAME ZENAME 이름 (CHAR 30)
DOB ZEDOB 생년월일 (YYYYMMDD)

각 필드는 data Element를 통해 타입과 포맷을 정하고, domain을 통해 기본적인 타입,길이,허용값을 결정할 수 있다.

 

TABLE ZEMPLOYEES.
  EMPLOYEE_ID   NUMC(8)
  NAME          CHAR(30)
  DOB           DATS

=> 이런 구조를 만드는 것! 

se11은 설계도라고 할 수 있다.

 

그렇다면 se38이나 80에서 코드로 테이블을 만들 수. 있지않을까? 

만들수는 있지만 프로그램 내부에서만 사용하기 때문에 메모리에 저장되어있다. 

정식 테이블이 아니기 때문에, 테이블 보기, 수정, 콘텐츠입력, 다른 프로그램에서 쓰기 위해서는 se11에서 테이블을 만들어야한다.

 

 

 

 

 

'SAP' 카테고리의 다른 글

SAP ABAP Data Class  (0) 2025.04.22
SAP ABAP DATA TYPE  (0) 2025.04.22
SAP ABAP 도메인  (0) 2025.04.22
SAP ABAP Programming for Beginners - 67 Internal Table  (0) 2025.04.13
SAP ABAP Programming for Beginners - 66 Element block  (0) 2025.04.13

 

문득 테이블을 만들 때 개념이 헷갈렸다.

ABAP의 도메인 개념과 SQL의 도메인 개념은 비슷한건가? 

 

도메인에 ZEENUM을 넣는 것을 보면 개념이 같지는 않다는 것은 느껴지지만, 비슷하다고 느껴졌다.

ABAP의 도메인이 좀 더 상위개념인 느낌?

 

그래서 알아본 결과, 

ABAP과 SQL의 공통점은 *값의 형식과 제약*을 정의한다는 점이이다.

항목 ABAP의 Domain SQL의 Domain
의미 필드의 데이터 타입, 길이, 포맷, 값 범위(Value Range) 를 정의하는 객체 사용자 정의 데이터 타입처럼 특정 컬럼에 적용되는 형식과 제약 조건
사용 목적 여러 Data Element가 공통 속성(타입, 범위) 을 공유할 수 있게 함 여러 테이블에서 일관된 제약 조건을 사용 가능하게 함
예시 ZEENUM → NUMC(8), Value Range(00000001 ~ 99999999) CREATE DOMAIN age_domain AS INT CHECK (value >= 0 AND value <= 120);

 

차이점은 APAB은 "Domain + Data Element + Field" 구조로 계층적이라는 점이다.

텍스트, 단위, 설명, 도움말도 추가정보로 연결한다.

결론적으로는 ABAP도메인은 SQL의 domain과 목적은 비슷하지만, 데이터 형식 +.제약의 재사용 가능한 객체다.

 

+ Recent posts