본문 바로가기

ABAP 프로그래밍 개념/User Interaction

2.1 PARAMETERS

파라미터는 ABAP 프로그램에서 Global Elementary Data Object와 Selection Screen의 입력 필드에 할당되는 Selection Screen의 구성 요소입니다. 즉, PARAMETERS 키워드는 두 가지 작업을 수행합니다.

1) 프로그램 내에서 데이터 객체를 정의합니다.
2) 선택 화면에서 화면 요소(예: 입력 필드 또는 체크박스)를 정의합니다.

시스템은 프로그램 데이터 객체를 화면 필드와 자동으로 연결하여 Selection Screen과 프로그램 간에 자동 데이터 전송을 용이하게 합니다. 이렇게 함으로써 사용자가 Selection Screen에 입력한 내용은 자동으로 ABAP 프로그램으로 전송되어 해당 데이터 객체에 저장되며, 이후 ABAP 문장에서 액세스할 수 있습니다.

PARAMETERS 키워드를 사용하는 구문은 DATA 키워드와 다소 유사하며, 각각의 고유한 Addition 기능이 있습니다. PARAMETERS 필드는 기술적 속성을 가져올 데이터 유형(Data Type)을 참조하여 입력됩니다. 아래는 PARAMETERS 문을 사용하는 구문의 예시입니다.

PARAMETERS {para TYPE data_type} [type_options]
                                 [screen_options]
                                 [value_options]

아래는 PARAMETERS 키워드를 사용하는 예시 코드입니다.

PARAMETERS p_name TYPE c LENGTH 20.
PARAMETERS p_name(20) TYPE c.
PARAMETERS p_carrid TYPE s_carr_id.
PARAMETERS p_chk AS CHECKBOX DEFAULT 'X'.

위 구문에서, PARAMETER 구문의 변수 para의 이름은 "최대 여덟 개의 문자"를 포함할 수 있습니다. 이 문장은 프로그램의 전역 선언 부분에서 허용됩니다.

DATA 문과 유사하게, TYPE_OPTIONS에 구체화 된 데이터 유형이 일반적인 길이(general length)를 가지는 유형 (c, n, p, x 유형)를 가지고 있는 경우에만 PARAMETERS 문에서 길이를 지정할 수 있습니다.

PARAMETER 구문은 다음과 같은 효과를 가지고 있습니다.

● 프로그램에서 지정된 길이와 유형의 전역 변수를 선언합니다.
● 현재 Selection Screen면의 새 행에 동일한 이름과 해당 유형과 일치하는 입력 필드를 생성합니다. 화면의 입력 필드 길이는 Parameter 정의에서 결정됩니다. 입력 필드의 최대 표시 길이는 45이므로 Parameter 길이가 45보다 길 경우 이동 가능한 콘텐츠(Movable Content)로 표시됩니다. 입력 필드의 표시 길이는 PARAMETERS 키워드와 함께 VISIBLE LENGTH 라는 Addition를 사용하여 제어할 수 있습니다.
●자동으로 각 필드 왼쪽에 라벨(Label)을 생성합니다. 필드 라벨(Field Label)의 최대 길이는 30이며, Parameter 필드의 이름 또는 프로그램의 텍스트 요소(Text Element)에 할당된 선택 텍스트(selection text)를 표시합니다.
●PARAMETERS 문의 선언 중 SCREEN_OPTIONS를 전달하여 화면 요소(Screen Element)의 속성을 수정할 수 있습니다.

다음 아래 글을 통해서 PARAMETERS 문과 함께 제공할 수 있는 Type Option, Selection Option 및 Value Option에 대해 설명하겠습니다.


TYPE_OPTIONS


PARAMETERS 키워드는 다양한 유형 옵션(Type Option)으로 제공될 수 있습니다. 이러한 옵션은 PARAMETER의 Data Type을 정의합니다. Type Option이 지정되지 않은 경우, 기본 옵션은 LENGTH 1과 함께 TYPE c입니다. Data Type은 프로그램의 존재하는 Data Type, Data Object 또는 ABAP Data Dictionary의 Data Type을 참조하여 정의할 수 있습니다.

PARAMETERS 필드가 ABAP Data Dictionary의 Data Type을 참조하는 경우, ABAP Data Dictionary에서 Data Type에 정의된 모든 화면에 관련된 속성(예: Field Label 또는 Input Help)을 적용합니다. Data Element에 도메인이 연결된 경우, 도메인에서 정의한 변환 루틴(Conversion Routine)이 각각 입력 필드에서 내부 및 외부 형식으로 데이터 전송 중에 데이터를 변환하기 위해 실행됩니다.

TYPE_OPTIONS을 제공하는데는 세가지 방법이 있습니다.

1) TYPE data_type[DECIMALS dec]
2) LIKE dobj
3) LIKE (name)

1) TYPE data_type [DECIMALS dec]
 TYPE data_type [DECIMALS dec] 이라는 Addition은 data_type으로 PARAMETER을 타입화 합니다. data_type은 다음과 같은 대상들이 올 수 있습니다.

■ x와 xstring을 제외한 Predefined ABAP Type
■ ABAP Data Dicionary로부터 가져온 Nongeneric Data Type
■ Global Class의 Nongeneric Public Data Type
 TYPES 키워드로 같은 프로그램에서 정의된 x와 xstring이 아닌 User-Defined Elementary Data Type

predefined TYPE p (packed decimal)이 지정된 경우, DECIMALS 추가 구문을 사용하여 소수점 이하 자릿수를 정의할 수 있습니다.

Parameter가 TYPE CHAR, LENGTH 1, "X" 및 공백이라는 고정값을 가진 도메인이 부착된 Data Element에 참조된 경우, Selection Screen의 입력 필드는 자동으로 체크박스로 표시됩니다.

elementary data type을 사용한 PARAMETER의 예시는 다음과 같습니다.

PARAMETERS p_carrid TYPE c LENGTH 3.

다음 예시는 Data Element를 언급하여 ABAP Data DIctionary에서 F1와 F4를 자동으로 상속받는 경우입니다.

PARAMETERS p_carrid TYPE s_carr_id.

다음 에시는 SPFLI 테이블의 Carrid라는 Component를 언급하여 PARAMETER를 선언하는 예시입니다.

PARAMETERS p_carrid TYPE spfli-carrid.

 

2) LIKE dobj(data object)

LIKE dobj 라는 addition을 사용하여, Parameter는 이미 프로그램에서 선언된 Data Object dobj의 모든 속성을 받아올 수 있습니다.

이 addition의 사용 예시는 다음과 같습니다.

DATA v_carrid TYPE s_carr_id.
PARAMETERS p_carrid LIKE v_carrid.

3) LIKE (name)

LIKE (name) 라는 Addition 구문은 동적으로 필드 참조(field reference)를 가능하도록 합니다. (name)은 ABAP Data Dictionary의 flat Structure의 Component의 이름이 포함된 평면 문자 데이터 객체(flat character data object)를 예상합니다. Parameter는 내부적으로 데이터 TYPE c 와 LENGTH 132로 생성되지만, (name)에 지정된 데이터 유형에 따라 선택 화면에 길이, 필드 레이블, 입력 도움말 및 필드 도움말이 표시됩니다.

아래 예시는 입력 필드에 동적으로 데이터 유형(Data Type)을 할당하는 예제를 보여줍니다.

이 예제에서는 런타임 때 필드 이름 SCOL_FLIGHT_MEAL-CARRID를 전달합니다. 예제에서의 문장 comp = 'SCOL_FLIGHT_MEAL-CARRID'는 Selection Screen이 호출되기 전에 실행되는데 이는 AT SELECTION-SCREEN OUTPUT 이벤트 하에서 유지되기 때문입니다. ABAP 런타임 환경은 Selection Screen을 양한 Selection Screen Events를 트리거하고 이 Selection Screen Events는 프로그램에서 Selection Screen를 처리하기 위해 유지됩니다.

DATA comp TYPE c LENGTH 30.
PARAMETERS p_dyn LIKE (comp).

AT SELECTION-SCREEN OUTPUT.
 comp = 'SCOL_FLIGHT_MEAL-CARRID'.

 

위 예시에서 AT SELECTION-SCREEN OUTPUT 키워드는 해당 이벤트가 Selection Screen이 호출되기 전에 실행되도록 보장합니다. 이 이벤트가 사용자에게 Selection Screen을 보여주기 전에 트리거되기 때문에, 우리는 이것을 이용하여 Selection Screen에 동적으로 속성을 할당할 수 있습니다.


SCREEN_OPTIONS


이 옵션은 Selection Screen에서 입력 필드를 선언하는 것을 포함하여 화면의 필드를 조작할 수 있게 해줍니다. SCREEN_OPTIONS을 사용하여 입력 필드를 체크박스, 라디오 버튼 또는 드롭다운 목록 상자로 표시할 수 있으며 필수 입력 필드로 선언하거나 선택 화면에서 입력 필드를 숨길 수도 있습니다.

아래 설명하는 내용은 SCREEN_OPTIONS를 위한 Addition들 입니다.

1) OBLIGATORY

OBLIGATORY 라는 Addition은 Selection Screen에서 입력 필드를 필수 필드로 정의합니다. 필수 필드가 비어 있으면 프로그램을 실행할 수 없습니다. 사용자가 Selection Screen에서 Execute(실행 기능, F8)를 선택하여 Selection Screen을 나갈 때 런타임 시스템은 자동으로 검증을 수행하여 모든 필수 필드가 입력 값으로 채워졌는지 확인합니다. 필수 필드가 채워지지 않은 경우, 사용자는 Selection Screen을 나가기 위해 뒤로, 종료 또는 취소 기능만 사용할 수 있습니다.

OBLIGATORY를 사용한 예시는 아래와 같습니다.

PARAMETERS p_carrid TYPE s_carr_id OBLIGATORY.

2) NO-DISPLAY

NO-DISPLAY 이라는 Addition을 사용하면 Selection Screen에서 해당 Parameter를 위한 화면 요소가 생성되지 않습니다. 이는 SUBMIT 구문을 사용하여 호출되는 프로그램 간 인터페이스의 일부로 Parameter를 사용하고자 할 때 유용합니다. 호출하는 프로그램에서 Parameter의 값이 제공될 수 있습니다. SUBMIT 문은 다른 프로그램 내에서 실행 가능한 프로그램을 실행하는 데 사용됩니다.

NO-DISPLAY를 사용한 예시는 아래와 같습니다.

PARAMETERS p_carrid TYPE s_carr_id NO-DISPLAY.

3) VISIBLE LENGTH vlen

VISIBLE LENGTH vlen라는 Addition은 화면 필드의 표시 길이를 제어합니다. 여기서 vlen은 양수 숫자로 직접 입력됩니다. vlen이 Parameter의 길이보다 작고 최대 표시 길이 (45)보다 작으면 입력 필드는 vlen에서 정의된 길이로 이동 가능한 콘텐츠와 함께 표시됩니다. 그렇지 않으면 추가 구문은 무시됩니다.

VISIBLE LENGTH 를 사용한 예시는 아래와 같습니다.

PARAMETERS: p_carrid TYPE s_carr_id VISIBLE LENGTH 2.

4) AS CHECKBOX

AS CHECKBOX 라는 Addition은 해당 Label이 오른쪽에 있는 체크박스로 입력 필드를 생성합니다. 필드 값은 체크박스가 선택되거나 선택 해제되면 각각 'X' 또는 공백(Space)으로 채워집니다. 선언 시 기본값  'X'를 할당하여 기본적으로 체크박스를 선택할 수 있습니다. 이 매개 변수는 TYPE c와 LENGTH 1로 생성됩니다. 체크박스는 다중 선택을 허용하기 위해 사용됩니다.

CHECKBOX를 사용한 예시는 아래와 같습니다.

PARAMETERS p_chk AS CHECKBOX.
PARAMETERS p_chk AS CHECKBOX DEFAULT 'X'.

5) RADIOBUTTON GROUP

RADIOBUTTON GROUP 라는 Addition은 해당 Label이 오른쪽에 있는 라디오 버튼으로 입력 필드를 생성합니다. 필드 값이 X이면 라디오 버튼이 선택되고 그렇지 않으면 선택이 해제됩니다.

라디오 버튼은 사용자가 여러 옵션 중에서 선택할 수 있도록 하기 때문에 항상 함께 그룹화됩니다. 그룹 내에서는 하나의 라디오 버튼만 선택할 수 있습니다.

GROUPS는 Parameter에 대한 라디오 버튼 그룹을 정의합니다. 최대 네 글자의 문자열로 그룹 이름을 직접 입력하여 두 개 이상의 라디오 버튼을 동일한 그룹에 할당합니다. 선택 화면 내에서 동일한 라디오 버튼 그룹에 최소 두 개의 Parameter가 있어야 합니다. 한 프로그램 내에 동일한 이름을 가진 라디오 버튼 그룹이 하나 이상 있을 수 없습니다.

라디오 버튼 그룹에서는 기본적으로 하나의 Parameter만 선택할 수 있으므로 DEFAULT 추가 구문은 그룹의 하나의 Parameter에만 사용할 수 있습니다. 기본적으로 라디오 버튼 그룹에서 첫 번째 Parameter는 값을 'X'로, 나머지는 공백으로 설정합니다. 이 매개 변수는 TYPE c와 LENGTH 1로 생성됩니다.

예시는 아래와 같습니다.

PARAMETERS: p_day RADIOBUTTON GROUP rb1,
            p_month RADIOBUTTON GROUP rb1 DEFAULT 'X'.
            
PARAMETERS: p_hour RADIOBUTTON GROUP rb2,
            p_sec RADIOBUTTON GROUP rb2

 

6) AS LISTBOX VISIBLE LENGTH vlen

AS LISTBOX VISIBLE LENGTH vlen 라는 Addition은 Selection Screen에서 입력 필드에 대해 드롭다운 List Box를 생성합니다. Parameter가 ABAP 데이터 사전의 데이터 유형으로 생성되고 데이터 유형이 ABAP Data Dictionary의 Input Help과 연결된 경우, List Box는 자동으로 값으로 채워집니다. 그렇지 않으면 현재 Parameter 값이 포함된 단일 행(Single-Row) 목List Box가 표시됩니다.

반드시 VISIBLE LENGTH라는 Addition을 사용하여 입력 필드의 가시 길이를 구체화 해주어야 합니다.

PARAMETERS p_carrid TYPE spfli-carrid 
                    AS LISTBOX VISIBLE LENGTH 20
                    DEFAULT 'LH'.

아래 예시는 PARAMETER 키워드를 사용하여 정의된 Selection Screen의 다양한 Screen Element입니다.


VALUE_OPTIONS


VALUE_OPTIONS를 사용하여 기본값을 정의하거나 Data Object로 소문자가 전달되게 할 수 있습니다. 또한 검색 도움말(Search Help), 바인딩할 SPA/GPA PARAMETER ID 또는 Value List에 대한 검사를 설정할 수 있습니다.

 

반응형

'ABAP 프로그래밍 개념 > User Interaction' 카테고리의 다른 글

3. Messages  (0) 2023.05.11
2.4 Selection Texts  (0) 2023.05.11
2.3 SELECTION-SCREEN  (0) 2023.05.10
2.2 SELECT-OPTIONS  (0) 2023.05.10
1.User Interaction  (0) 2023.05.07