SAP ABAP-변수

변수는 프로그램의 할당 된 메모리 영역 내에 값을 저장하는 데 사용되는 명명 된 데이터 개체입니다. 이름에서 알 수 있듯이 사용자는 ABAP 문을 사용하여 변수의 내용을 변경할 수 있습니다. ABAP의 각 변수에는 변수 메모리의 크기와 레이아웃을 결정하는 특정 유형이 있습니다. 해당 메모리 내에 저장할 수있는 값의 범위 변수에 적용 할 수있는 일련의 작업입니다.

모든 변수를 사용하려면 먼저 선언해야합니다. 변수 선언의 기본 형식은 다음과 같습니다.

DATA <f> TYPE <type> VALUE <val>.

여기서 <f>는 변수의 이름을 지정합니다. 변수 이름은 최대 30 자까지 가능합니다. <type>은 변수의 유형을 지정합니다. 완전히 지정된 기술 속성을 가진 모든 데이터 유형을 <유형>이라고합니다. <val>은 of <f> 변수의 초기 값을 지정합니다. 기본 고정 길이 변수를 정의하는 경우 DATA 문은 변수 값을 유형별 초기 값으로 자동으로 채 웁니다. <val>에 대해 가능한 다른 값은 리터럴, 상수 또는 Is INITIAL과 같은 명시 적 절일 수 있습니다.

다음은 변수 선언의 유효한 예입니다.

DATA d1(2) TYPE C.  
DATA d2 LIKE d1.  
DATA minimum_value TYPE I VALUE 10.

위의 코드 조각에서 d1은 C 유형의 변수, d2는 d1 유형의 변수, minimum_value는 ABAP 정수 유형 I의 변수입니다.

이 장에서는 ABAP에서 사용할 수있는 다양한 변수 유형을 설명합니다. ABAP에는 세 종류의 변수가 있습니다.

  • 정적 변수
  • 참조 변수
  • 시스템 변수

정적 변수

  • 정적 변수는 서브 루틴, 함수 모듈 및 정적 메서드에서 선언됩니다.

  • 수명은 선언의 컨텍스트와 연결됩니다.

  • 'CLASS-DATA'문을 사용하면 클래스 내에서 변수를 선언 할 수 있습니다.

  • 'PARAMETERS'문은 선택 화면의 입력 필드에 연결된 기본 데이터 개체를 선언하는 데 사용할 수 있습니다.

  • 'SELECT-OPTIONS'문을 사용하여 선택 화면의 입력 필드에 연결된 내부 테이블을 선언 할 수도 있습니다.

다음은 변수 이름을 지정하는 동안 사용되는 규칙입니다.

  • "t"및 ","와 같은 특수 문자를 사용하여 변수 이름을 지정할 수 없습니다.

  • 미리 정의 된 데이터 개체의 이름은 변경할 수 없습니다.

  • 변수의 이름은 ABAP 키워드 또는 절과 같을 수 없습니다.

  • 변수의 이름은 추가 설명없이 변수의 의미를 전달해야합니다.

  • 하이픈은 구조의 구성 요소를 나타 내기 위해 예약되어 있습니다. 따라서 변수 이름에 하이픈을 사용하지 않아야합니다.

  • 밑줄 문자를 사용하여 복합어를 구분할 수 있습니다.

이 프로그램은 PARAMETERS 문을 사용하여 변수를 선언하는 방법을 보여줍니다-

REPORT ZTest123_01. 
PARAMETERS: NAME(10) TYPE C, 
CLASS TYPE I, 
SCORE TYPE P DECIMALS 2, 
CONNECT TYPE MARA-MATNR.

여기서 NAME은 10 자의 매개 변수를 나타내고, CLASS는 바이트 단위의 기본 크기를 가진 정수 유형의 매개 변수를 지정하고, SCORE는 소수점 이하 두 자리까지의 값을 가진 패킹 된 유형 매개 변수를, CONNECT는 ABAP 사전의 MARA-MATNF 유형을 나타냅니다. .

위의 코드는 다음 출력을 생성합니다.

참조 변수

참조 변수를 선언하는 구문은 다음과 같습니다.

DATA <ref> TYPE REF TO <type> VALUE IS INITIAL.
  • REF TO 추가는 참조 변수 ref를 선언합니다.

  • REF TO 이후의 사양은 참조 변수의 정적 유형을 지정합니다.

  • 정적 유형은 <ref>가 참조 할 수있는 개체 집합을 제한합니다.

  • 참조 변수의 동적 유형은 현재 참조하는 데이터 유형 또는 클래스입니다.

  • 정적 유형은 항상 더 일반적이거나 동적 유형과 동일합니다.

  • TYPE 추가는 바운드 참조 유형을 작성하고 시작 값으로 사용되며 VALUE 추가 후에는 IS INITIAL 만 지정할 수 있습니다.

CLASS C1 DEFINITION. 
PUBLIC SECTION. 
DATA Bl TYPE I VALUE 1. 
ENDCLASS. DATA: Oref TYPE REF TO C1 , 
Dref1 LIKE REF TO Oref, 
Dref2 TYPE REF TO I . 
CREATE OBJECT Oref. 
GET REFERENCE OF Oref INTO Dref1. 
CREATE DATA Dref2. 
Dref2→* = Dref1→*→Bl.
  • 위의 코드 조각에서 개체 참조 Oref와 두 개의 데이터 참조 변수 Dref1 및 Dref2가 선언됩니다.

  • 두 데이터 참조 변수는 모두 완전한 형식이며 피연산자 위치에서 역 참조 연산자 → *를 사용하여 역 참조 할 수 있습니다.

시스템 변수

  • ABAP 시스템 변수는 모든 ABAP 프로그램에서 액세스 할 수 있습니다.

  • 이러한 필드는 실제로 런타임 환경에 의해 채워집니다.

  • 이 필드의 값은 특정 시점의 시스템 상태를 나타냅니다.

  • SAP의 SYST 테이블에서 전체 시스템 변수 목록을 찾을 수 있습니다.

  • SYST 구조의 개별 필드는 "SYST-"또는 "SY-"를 사용하여 액세스 할 수 있습니다.

REPORT Z_Test123_01. 

WRITE:/'SY-ABCDE', SY-ABCDE,       
      /'SY-DATUM', SY-DATUM, 
      /'SY-DBSYS', SY-DBSYS, 
      /'SY-HOST ', SY-HOST, 
      /'SY-LANGU', SY-LANGU,
      /'SY-MANDT', SY-MANDT,
      /'SY-OPSYS', SY-OPSYS,
      /'SY-SAPRL', SY-SAPRL,
      /'SY-SYSID', SY-SYSID,
      /'SY-TCODE', SY-TCODE,
      /'SY-UNAME', SY-UNAME,
      /'SY-UZEIT', SY-UZEIT.

위의 코드는 다음 출력을 생성합니다.

SY-ABCDE ABCDEFGHIJKLMNOPQRSTUVWXYZ  
SY-DATUM 12.09.2015 
SY-DBSYS ORACLE                   
SY-HOST sapserver 
SY-LANGU EN 
SY-MANDT 800 
SY-OPSYS Windows NT 
SY-SAPRL 700 
SY-SYSID DMO 
SY-TCODE SE38 
SY-UNAME SAPUSER 
SY-UZEIT 14:25:48