selection screen

3809271·2025년 3월 19일

selection screens

프로그램을 실행하기 위한 조건을 입력 받는 화면.

sql 뿐만 아니라 다양한 조건 모두 가능함.

selection screen은 parameters와 select-options로 양분됨.

image.png

selection screen의 번호는 1000번이라고 정해져 있음. 실무에서 1000번에 추가하자 ~ 라고 말하면 parameters, select-options에 추가하자는 뜻임. 실무에서는 1000번 스크린이라고 부르기도 함

image.png

selection screen으로 값을 넣으면 abap program에서 쿼리를 날려서 db 접근

image.png

필드를 더블클릭해서 연산자를 변경할 수 있음

image.png

parameter를 선언하면 전역변수와 똑같이 생긴 모습으로 생성,

전역 변수와 똑같이 사용할 수 있음

image.png

parameters와 select-options의 차이

image.png

파라미터를 프로그램에서 쓸 때 일어나는 동작

입력받은 데이터를 셀렉해서 데이터를 가져옴

image.png

select options를 프로그램에서 쓸 때 일어나는 동작

select options가 텅 비어 있으면 조건으로 넣지 않고 pass해버림.

image.png

selection screen의 block 그리는 법, title 꼭 줘야 함.

프로그램 작성할 때 selection screen 마지막에 완성하려고 하지 말고

처음에 그릴 때부터 완성해 놓기.

image.png

begin of line → 밑으로 나열되는 파라미터를 옆으로 나란히 나오게 할 때.

comment → 체크 박스 이름을 줌. 길이 지정을 하기가 까다로움. 사이즈 계산을 잘해서 써야 함. 1(20) text-s03 ⇒ 시작부터 20번째 칸까지 text-s03 출력하기. 이런 게 있다는 걸 알고 나중에 쓸 일 있으면 쓰기.

Parameters

  • parameters, select-options는 프로그램의 전반에 영향을 주어야 하기 때문에 전역변수의 성격을 가지고 있음, 하지만 사용하는 명령어와 존재하는 위치가 다름.
  • pa_carrid 와 같이 이름 붙이고 type 으로 참조. 참조 유형은 변수와 같음. parameters는 선언문만 다르고 그 이후의 코딩은 전역 변수하고 똑같음.

image.png

parameters에 대한 문법

PARAMETERS <f> "필드
[TYPE <type>] [LIKE <f1>] [DECIMALS <n>] [MEMORY ID <pid>]
[OBLIGATORY] [DEFAULT <value>] [LOWER CASE] [VALUE CHECK]
[AS CHECKBOX]
[RADIOBUTTON GROUP <grp>] [MODIF ID <mod>].

: 필드

LENGTH : TYPE C, N, X or P에만 적용되며,길이를 정의함
LIKE : 오브젝트와 같은 데이터 타입 선언
DECIMALS : dec 소수점 자리를 지정함

MEMORY ID : 메모리 파라미터를 할당함, sap 메모리를 줄 수 있음. 나중에 다루게 됨.

OBLIGATORY를 주면 필수입력 항목에 값을 전부 입력하라고 sap가 직접 체크해줌. 해당 파라미터가 필수 입력 속성이 됨. 화면 필드에는 물음표(?)가 표시됨

default: 파라미터의 기본값을 설정할 수 있음. 예를 들면, 오늘 날짜.

lower case: 파라미터가 소문자를 입력받을 수 있게 됨.

value check: 체크 테이블을 이용해서 사용자가 넣은 데이터와 일치하는지, 올바른 값인지 확인. 참조하고 있는 데이터 엘리먼트가 도메인에 check table 을 가지고 있어야 함.

as checkbox: 이 파라미터는 체크박스로 표시해라.

radiobutton group : 체크박스는 여러 개를 선택할 수 있지만 라디오 버튼은 여러 개 중에서 하나만 선택할 수 있음. 라디오버튼 여러 개를 그룹으로 묶어서 그 중에 하나만 선택하는 것.

MODIF ID : 이건 나중에. 해당 속성을 변경하는 id를 부여하는 것까지만 알기.

PARAMETERS: pa_carr TYPE sflight-carrid,
pa_name AS CHECKBOX DEFAULT 'X',
pa_curr AS CHECKBOX DEFAULT 'X',
pa_lim_1 RADIOBUTTON GROUP lim DEFAULT 'X',
pa_lim 2 RADIOBUTTON GROUP lim,
pa_lim_3 RADIOBUTTON GROUP lim.
CONSTANTS gc_mark VALUE 'X'.

* Check if any checkbox has been selected
IF pa_name EQ gc_mark. 
 ENDIF.
IF pa_curr EQ gc_mark.
 ENDIF.

* Check which radiobutton has been selected
CASE gc_mark.
WHEN pa_lim 1.
WHEN pa_lim_2.
WHEN pa_lim_3.
ENDCASE.

pa : prefix, parameter라는 뜻.

parameters: 선언

pa_name AS CHECKBOX DEFAULT 'X' : 에서 X에 대한 설명, 체크 박스는 character 한자리이고 x값이 들어가는데, x가 있으면 선택되었다는 뜻.

pa_lim_1 RADIOBUTTON GROUP lim DEFAULT 'X',
pa_lim 2 RADIOBUTTON GROUP lim,
pa_lim_3 RADIOBUTTON GROUP lim.

: 그룹이 같은 것 중에서 하나만 선택. 그룹의 이름이 같으면 그룹으로 묶이는 검

CONSTANTS gc_mark VALUE 'X': 선택 여부를 확인하기 위해 X라는 상수를 선언

여기까지하고 활성화하면 1000번 스크린이 생성됨.

  • Check if any checkbox has been selected

IF pa_name EQ gc_mark.
ENDIF.
IF pa_curr EQ gc_mark.
ENDIF.

체크박스는 하나씩 if문으로 체크 했는지 아닌지 확인해야 하고

  • Check which radiobutton has been selected
    CASE gc_mark.
    WHEN pa_lim 1.
    WHEN pa_lim_2.
    WHEN pa_lim_3.
    ENDCASE.

라디오버튼도 if문으로 확인하는 것 가능하지만, 그룹에서 하나만 선택하는 것이기 때문에 case-when절을 사용한다. case 절에 상수로 x값이 오고 when절에는 라디오버튼 변수 이름.

select-option

  • select-options : 구간에 대한 조건이나, 불특정 다수의 조건을 주는 in 연산자처럼 던질 수도 있음.

image.png

type 대신 for를 사용. standard table이 아닌 field를 참조함.

다양한 조건을 담을 수 있음

select options 는 internal table의 형태임, 생성하면 자동으로 internal table이 됨. sign, option, low, high의 네 개 column도 자동으로 생김.

  • sign i는 include low에 들어간 값을 포함한다는 뜻이고 e는 그 값을 제외
  • -option: sql 연산자 low 시작값 high 최대값
  • low - high에 대한 범위를 넣을 수 있는 두 개의 입력 필드가 제공됨, low-high 연산자를 같이 쓰면 between 연산자가 자동으로 들어가게 됨, low에만 값을 넣으면 eq연산자가 자동으로 들어가고 parameter 처럼 작동함.

화살표 모양으로 생긴 multiple selection button을 누르면 여러 개의 조건을 선택할 수 있게 되고 in 연산자처럼 쓸 수 있음.

append신경 안 써도 됨. 자동으로 됨.

select options 사용할 수 있는 연산자

image.png

image.png

두 줄 이상이 append 되면 녹색 불이 들어옴.

image.png

select options 의 기본 문법

진짜 프로라면 값을 줄 때 parameter에서 배운 것처럼 report 프로그램의 이벤트를 통해서 parameter나 select option의 기본값을 세팅함. default to 등과 같은 방식으로 하지 않음

select options에만 있는 옵션.

no-extension

여러 조건을 허용하지 않겠다는 뜻으로 확장 검색을 하는 화살표 버튼이 사라짐.

no intervals

범위 검색을 막겠다는 뜻으로 high 필드를 숨김, parameter처럼 보이게 됨

tables

table을 structure처럼 쓰겠다, select options 전에 선행되어야 함, tables 선언되어야 해당 객체를 사용할 수 있음, 프로그램으로부터 해당 테이블의 layout을 사용하겠

image.png

select에서 필드명을 주면 에러, *로 가져와야

headerline internal table

select options는 headerline internal table이라서 work area와 internal table이 한 몸이고, 둘이 이름이 똑같음, [ ]가 있으면 internal table이고 없으면 workarea(=headerline)임. headerline은 internal table위에 있음. 프로그램에서 자주 쓰면 퍼포먼스에 영향을 미치기 때문에 좋지 않음.

image.png

select-options에 값을 적재하는 법.

headerline internal table

header line = work area.

work area가 탑재된 internal table를 선언하기.

image.png

with hearder line 구문을 추가하면 header line이 있는 테이블이 선언됨.

internal table의 이름이 work area 이름으로 사용됨.

into 생략해도 알아서 수행이 됨, 문법이 더 간략해짐.

예를 들면, append gs into gt → append itab.

이름이 같을 때, itab과 work area를 구분하는 법.

itab [] : internal table,

itab : work area.

만약, internal table 전용 명령어 일 때는 [] 없어도 알아서 잘 수행됨.

명확하게 구분을 할 필요가 있을 때, 예를 들면, clear할 때는 [] 필요.

select options가 header line table이니까 append 하려면

so_carr-sing = i.

so_carr-option = eq.

so_carr-low = ‘AA’

append so_carr.

read table so_carr index 1.

이벤트

지금 개발하고 있는 report program의 특징

  • selection screen (1000번 스크린)이 있음
  • 이벤트가 있음

이벤트 .

image.png

화살표는 이벤트가 흘러가는 순서.

이벤트 자체가 type 1 program에만 가능함. type 1 = report program.

initialization

  • initialization = 해당 프로그램의 사용할 변수, work area, internal table, selection screen element 등을 모두 초기화 작업함. 초기화 = 기본값 세팅. 따라서 기본값을 세팅하려면 initialization 이벤트를 설치해야 함. 이후에 selection screen으로 가면 기본값이 들어가 있음. 프로그램을 시작하고 가장 먼저 실행되는 이벤트.

at selection-screen output

  • at selection-screen output = selection screen의 parameter나 select options 같은 요소의 출력 속성을 담당. 필요에 의해서 read only 모드로 막거나 화면에서 보이지 않게 숨길 때. selection screen에서 발생함.

at selection-screen

  • at selection-screen = 해당 프로그램을 본격적으로 실행을 해도 괜찮은지, 실행 조건을 판단해주는 역할. 권한 체크.

start-of-selection

  • start-of-selection ⇒ 필수. ★. 프로그램 본문 시작을 알리는 이벤트.

이벤트가 선언되면 이벤트가 시작되고, 다음 이벤트가 선언되는 부분에서 현재 진행 중인 이벤트가 종료됨.

이벤트의 실행 순서

image.png

실행 가능한 아밥 프로그램에서 처리가 일어나는 과정.

program strat = f8. → initialization을 찾아 감 → 디폴트 값 세팅 → selection screen을 보여줌 → at selection screen을 찾아 감. (pai는 나중에 100번 스크린 할 때 배울 것 ) → 오류 / 권한 체크 → 올바르지 않은 값이면 에러 메세지를 뿌리고 display selection screen으로 돌아감 → 올바른 값일 때 start of selection → 본론으로 들어가서 메인 로직을 수행함 .

display list buffer as list는 전혀 중요하지 않음.

image.png

각각의 이벤트에 따라서 어떤 동작이 일어나야 하는지.

initialization = dynamic preassignment. 동적인 기본값 할당.

at selection screen = 유효성, 권한 check 로직

start-of-selection = 처리부분.

image.png

event blocks의 순서가 바뀐다고 해도 정상적으로 수행은 됨.

image.png

하지만 이게 상식적으로 위와 같은 이벤트 블록의 순서를 지켜야 함.

abap program의 동작 예시.

image.png

AT selection-screen 이벤트에서 값이 들어왔을 때

image.png

만약 잘못된 값이면 에러 메세지 + stop

image.png

initialization의 예시.

modify screen

At selection screen output

modify id

image.png

출력 속성을 통제하고 싶은 아이들에게 modif id를 줘야 함. 변경될 아이들이라는 표시임. 출력 속성은 modif id가 있는 걸로 대상을 구분지어서 사용함.

예를 들면, modif id가 있는 것만 읽기 전용 속성으로 출력하기.

image.png

지금은 오른쪽 내용만 보기.

screen에는 이런 속성이 있다.

loop at screen 그림에, modify screen에 붙이기.

진한 파란색 = 키가 되는 정보. 개체를 그룹으로 다룰 것인지, 개별적으로 관리할 것인지.

screen-group1은 다수의 개체에 한 번에 동일한 속성을 주고자 할 때, modif id를 줘서 group1로 묶어서 사용할 수 있음.

연한 파란색 = 선택한 개체에 대해 줄 수 있는 속성들.

image.png

group1만 신경쓰기.

group1의 이름이 sel.

image.png

modify screen의 기본 문법.

위에 process before output은 100번 스크린에서 하는 거니까 신경쓰지 않기.

image.png

같은 이름으로 묶인 modif id는 group1 으로 들어가서 통제할 수 있게 됨.

name은 선언한 파라미터, select option의 이름이 들어감. modify id를 주지 않아도 이름으로 판단해서 개별적으로 출력 속성을 통제할 수 있음.

반드시 name, group1을 사용해서 출력 속성을 통제해야 함.

required =

input= 1 활성화 0 비활성화

intensified = 글자가 파란색으로 강조됨. 아밥퍼 개인 취향으로 .

active = 활성화 시키면 화면에 나오고, 비활성화 시키면 화면에서 사라짐.

필드를 더블클릭해서 연산자를 변경할 수 있음

0개의 댓글