Search
Duplicate
🙂

필드 카탈로그 & 도움말

ALV 필드 카탈로그 속성 정리

필드 카탈로그는 ALV(Grid Control)에서 각 필드의 속성을 설정하는 부분이다. 필드의 표시 방법을 제어하거나 데이터를 처리하는데 중요한 역할을 한다.

필드 카탈로그 속성

fieldcatalog-edit_mask: 데이터를 특정 포맷으로 표시한다.
fieldcatalog-edit_mask = '________'는 8자리 값을 출력할 때 사용함.
fieldcatalog-decimals_out: 소수점 이하 자릿수를 제어한다.
fieldcatalog-decimals_out = '0'을 설정하면 소수점이 표시되지 않음.
fieldcatalog-seltext_l: 필드의 설명(라벨)을 설정한다.
fieldcatalog-seltext_l = 'Local currency of airline'을 설정하여 사용자 지정 라벨을 사용할 수 있음.
fieldcatalog-do_sum: 합계나 평균값을 표시한다.
fieldcatalog-do_sum = 'X'는 총합계를 출력함.
fieldcatalog-do_sum = 'C'는 평균값을 출력함.
fieldcatalog-hotspot: 핫스팟 기능을 추가하여 클릭 가능하게 설정한다.
fieldcatalog-hotspot = 'X'를 설정하면 필드를 클릭할 수 있음.
예)
* 필드 카탈로그 선언 CLEAR LS_FIELDCAT. * 필드명 및 주요 속성 설정 LS_FIELDCAT-FIELDNAME = 'EMP_NO'. " 필드명 설정 LS_FIELDCAT-KEY = 'X'. " 키 필드 설정 LS_FIELDCAT-SELTEXT_L = '사원번호'. " 라벨 설정 LS_FIELDCAT-SP_GROUP = 'X'. " 그룹핑 설정 * LS_FIELDCAT-HOTSPOT = 'X'. " 핫스팟 설정 (옵션) * 데이터 타입 설정 LS_FIELDCAT-DATATYPE = 'CHAR'. " 문자형 데이터 타입 * LS_FIELDCAT-CURRENCY = 'KRW'. " 통화 필드 설정 (옵션) * 합계 설정 LS_FIELDCAT-DO_SUM = 'X'. " 합계 출력 APPEND LS_FIELDCAT TO FIELD_CATALOG.
ABAP
복사

ALV 레이아웃 속성 설정

ALV(Grid Control)에서 레이아웃을 조정하여 가독성을 높이거나 특정 기능을 추가할 수 있다.
gs_layout-box_fieldname: 각 행에 체크박스를 추가하여 선택 가능하게 설정한다.
gs_layout-zebra: 지그재그 스타일의 줄무늬를 적용하여 가독성을 높인다.
gs_layout-colwidth_optimize: 컬럼의 너비를 자동으로 최적화한다.
gs_layout-totals_before_items: 합계를 데이터 항목보다 앞에 표시한다.
gs_layout-numc_sum: 숫자형 필드의 합계를 계산한다.
예)
* 레이아웃 설정 CLEAR gs_layout. gs_layout-zebra = 'X'. " 지그재그 스타일 적용 gs_layout-colwidth_optimize = 'X'. " 컬럼 너비 최적화 gs_layout-box_fieldname = 'BOX'. " 체크박스 추가 gs_layout-totals_before_items = 'X'. " 합계를 데이터 항목 앞에 출력 gs_layout-numc_sum = 'X'. " 숫자형 필드의 합계 표시
ABAP
복사

ALV 데이터 정렬 (IT_SORT 설정)

데이터를 특정 필드를 기준으로 정렬하려면 IT_SORT를 사용한다.
예를 들어, 사원 번호를 기준으로 정렬할 수 있음.
예시 코드
* 데이터 정렬 설정 DATA: IT_SORT TYPE slis_t_sortinfo_alv WITH HEADER LINE. IT_SORT-FIELDNAME = 'EMP_NO'. " 정렬할 필드명 IT_SORT-SP_GROUP = 'X'. " 그룹핑 설정 APPEND IT_SORT TO IT_SORT.
ABAP
복사

PARAMETERS 및 SELECT OPTIONS 설정

PARAMETERSSELECT-OPTIONS는 SAP 조회 화면에서 값을 입력받을 때 사용함.
PARAMETERS는 단일 값 입력, SELECT-OPTIONS는 범위나 여러 조건을 입력받는다.
OBLIGATORY: 필수 입력 필드로 설정하여 값이 입력되지 않으면 프로그램 실행이 불가능하게 함.
DEFAULT: 필드의 기본값을 설정함.
예시 코드
* 필수 입력 및 기본값 설정 PARAMETERS: p_airport TYPE spfli-airport OBLIGATORY DEFAULT 'JFK'.
ABAP
복사

조회화면 - ABAP selection screen example 소스 실습

구글에 abap selection screen example 이라고 쳐준다.
첫번째 링크가 나올텐데 해당 사이트로 들어가서
SELECTION-SCREEN BEGIN OF SCREEN 100. SELECTION-SCREEN BEGIN OF BLOCK part1 WITH FRAME TITLE text-001. PARAMETERS field(10) TYPE c OBLIGATORY. SELECTION-SCREEN END OF BLOCK part1. SELECTION-SCREEN BEGIN OF BLOCK part2 WITH FRAME TITLE text-002. PARAMETERS: p1(10) TYPE c VISIBLE LENGTH 1, p2(10) TYPE c VISIBLE LENGTH 5, p3(10) TYPE c VISIBLE LENGTH 10. SELECTION-SCREEN END OF BLOCK part2. SELECTION-SCREEN BEGIN OF BLOCK part3 WITH FRAME TITLE text-003. PARAMETERS: a AS CHECKBOX USER-COMMAND flag, b AS CHECKBOX DEFAULT 'X' USER-COMMAND flag. SELECTION-SCREEN END OF BLOCK part3. SELECTION-SCREEN BEGIN OF BLOCK part4 WITH FRAME TITLE text-004. PARAMETERS: r1 RADIOBUTTON GROUP rad1, r2 RADIOBUTTON GROUP rad1 DEFAULT 'X', r3 RADIOBUTTON GROUP rad1, s1 RADIOBUTTON GROUP rad2, s2 RADIOBUTTON GROUP rad2, s3 RADIOBUTTON GROUP rad2 DEFAULT 'X'. SELECTION-SCREEN END OF BLOCK part4. SELECTION-SCREEN BEGIN OF BLOCK part5 WITH FRAME TITLE text-005. PARAMETERS p_carrid TYPE spfli-carrid AS LISTBOX VISIBLE LENGTH 20 DEFAULT 'LH'. SELECTION-SCREEN END OF BLOCK part5. SELECTION-SCREEN BEGIN OF BLOCK part6 WITH FRAME TITLE text-006. PARAMETERS: test1(10) TYPE c MODIF ID sc1, test2(10) TYPE c MODIF ID sc2, test3(10) TYPE c MODIF ID sc1, test4(10) TYPE c MODIF ID sc2. SELECTION-SCREEN END OF BLOCK part6. SELECTION-SCREEN END OF SCREEN 100. AT SELECTION-SCREEN OUTPUT. LOOP AT screen INTO DATA(screen_wa). IF a <> 'X' AND screen_wa-group1 = 'SC1'. screen_wa-active = '0'. ENDIF. IF b <> 'X' AND screen_wa-group1 = 'SC2'. screen_wa-active = '0'. ENDIF. IF screen_wa-group1 = 'SC1'. screen_wa-intensified = '1'. MODIFY screen FROM screen_wa. CONTINUE. ENDIF. IF screen_wa-group1 = 'SC2'. screen_wa-intensified = '0'. MODIFY screen FROM screen_wa. ENDIF. ENDLOOP. CLASS start DEFINITION. PUBLIC SECTION. CLASS-METHODS main. ENDCLASS. CLASS start IMPLEMENTATION. METHOD main. CALL SELECTION-SCREEN 100 STARTING AT 10 10. IF sy-subrc <> 0. RETURN. ENDIF. WRITE: / 'P1:', p1, / 'P2:', p2, / 'P3:', p3. ENDMETHOD. ENDCLASS. START-OF-SELECTION. start=>main( ).
ABAP
복사
이정도만 소스를 가지고 연습해보자.
프로그램에 Z3WEEK_SEL00이라는 파일을 생성해주고
소스 붙어넣고 실행시켜주면
이렇게 팝업이 뜬다.
지금은 어려운 문구들이다보니까 이런게 있다고만 알면된다.
다시 도움말 공부할 수 있게 소스를 이 정도만 써주자
SELECTION-SCREEN BEGIN OF BLOCK part1 WITH FRAME TITLE text-001. PARAMETERS field(10) TYPE c OBLIGATORY. SELECTION-SCREEN END OF BLOCK part1. SELECTION-SCREEN BEGIN OF BLOCK part2 WITH FRAME TITLE text-002. PARAMETERS: p1(10) TYPE c VISIBLE LENGTH 1, p2(10) TYPE c VISIBLE LENGTH 5, p3(10) TYPE c VISIBLE LENGTH 10. SELECTION-SCREEN END OF BLOCK part2. SELECTION-SCREEN BEGIN OF BLOCK part3 WITH FRAME TITLE text-003. PARAMETERS: a AS CHECKBOX USER-COMMAND flag, b AS CHECKBOX DEFAULT 'X' USER-COMMAND flag. SELECTION-SCREEN END OF BLOCK part3. SELECTION-SCREEN BEGIN OF BLOCK part4 WITH FRAME TITLE text-004. PARAMETERS: r1 RADIOBUTTON GROUP rad1, r2 RADIOBUTTON GROUP rad1 DEFAULT 'X', r3 RADIOBUTTON GROUP rad1, s1 RADIOBUTTON GROUP rad2, s2 RADIOBUTTON GROUP rad2, s3 RADIOBUTTON GROUP rad2 DEFAULT 'X'. SELECTION-SCREEN END OF BLOCK part4. SELECTION-SCREEN BEGIN OF BLOCK part5 WITH FRAME TITLE text-005. PARAMETERS p_carrid TYPE spfli-carrid AS LISTBOX VISIBLE LENGTH 20 DEFAULT 'LH'. SELECTION-SCREEN END OF BLOCK part5.
ABAP
복사
출력
* 블록 1: 필수 입력 필드 * "FIELD"라는 이름의 텍스트 필드, 길이는 10이며 필수 입력 값임 * BLOCK 의 이름으 고유해야 한다.(ex)part1 ) SELECTION-SCREEN BEGIN OF BLOCK part1 WITH FRAME TITLE text-001. " 블록 시작, 제목은 text-001 PARAMETERS field(10) TYPE c OBLIGATORY. " 필수 입력 필드 선언 (문자열 길이 10) SELECTION-SCREEN END OF BLOCK part1. " 블록 종료 * 블록 2: 가변 길이 필드 (각 필드의 입력 칸 크기 다름) * 세 개의 필드 선언, 각 필드마다 화면에 표시되는 길이가 다름 SELECTION-SCREEN BEGIN OF BLOCK part2 WITH FRAME TITLE text-002. " 블록 시작, 제목은 text-002 PARAMETERS: p1(10) TYPE c VISIBLE LENGTH 1, " 첫 번째 필드, 화면에 1자리만 보임 p2(10) TYPE c VISIBLE LENGTH 5, " 두 번째 필드, 화면에 5자리 보임 p3(10) TYPE c VISIBLE LENGTH 10. " 세 번째 필드, 화면에 10자리 보임 SELECTION-SCREEN END OF BLOCK part2. " 블록 종료 * 블록 3: 체크박스 * "A"와 "B" 체크박스, B는 기본적으로 체크됨 SELECTION-SCREEN BEGIN OF BLOCK part3 WITH FRAME TITLE text-003. " 블록 시작, 제목은 text-003 PARAMETERS: a AS CHECKBOX USER-COMMAND flag, " 체크박스 A b AS CHECKBOX DEFAULT 'X' USER-COMMAND flag. " 체크박스 B, 기본 체크됨 SELECTION-SCREEN END OF BLOCK part3. " 블록 종료 * 블록 4: 라디오버튼 그룹 * rad1과 rad2라는 두 개의 라디오 버튼 그룹 * rad1 그룹에서 R2가 기본 선택됨, rad2 그룹에서 S3가 기본 선택됨 SELECTION-SCREEN BEGIN OF BLOCK part4 WITH FRAME TITLE text-004. " 블록 시작, 제목은 text-004 PARAMETERS: r1 RADIOBUTTON GROUP rad1, " 첫 번째 라디오 버튼 그룹 (rad1) - R1 r2 RADIOBUTTON GROUP rad1 DEFAULT 'X', " 첫 번째 라디오 버튼 그룹 (rad1) - R2, 기본 선택됨 r3 RADIOBUTTON GROUP rad1, " 첫 번째 라디오 버튼 그룹 (rad1) - R3 s1 RADIOBUTTON GROUP rad2, " 두 번째 라디오 버튼 그룹 (rad2) - S1 s2 RADIOBUTTON GROUP rad2, " 두 번째 라디오 버튼 그룹 (rad2) - S2 s3 RADIOBUTTON GROUP rad2 DEFAULT 'X'. " 두 번째 라디오 버튼 그룹 (rad2) - S3, 기본 선택됨 SELECTION-SCREEN END OF BLOCK part4. " 블록 종료 * 블록 5: 리스트 박스 * "p_carrid" 필드는 리스트 박스로 나타나며, 기본값은 'LH' (Lufthansa) SELECTION-SCREEN BEGIN OF BLOCK part5 WITH FRAME TITLE text-005. " 블록 시작, 제목은 text-005 PARAMETERS p_carrid TYPE spfli-carrid " 필드 타입은 spfli 테이블의 carrid (항공사 코드) AS LISTBOX VISIBLE LENGTH 20 " 리스트박스 형태, 화면에 20자리 보임 DEFAULT 'LH'. " 기본값은 'Lufthansa (LH)' SELECTION-SCREEN END OF BLOCK part5. " 블록 종료
ABAP
복사

코드 설명

1.
블록 1
필수 입력 필드: field 필드는 필수 입력값으로 설정됨. → OBLIGATORY
사용자는 반드시 값을 입력해야만 프로그램이 실행됨.
2.
블록 2
가변 길이 필드: p1, p2, p3 세 개의 필드가 선언되었으며, 각 필드가 화면에 보이는 길이가 다름.
p1은 1자리만 표시되고, p2는 5자리, p3는 10자리가 표시됨.
3.
블록 3
체크박스: a, b라는 두 개의 체크박스가 있음.
b는 기본적으로 체크된 상태로 설정됨. → 'X' 를 넣으면 체크됨
4.
블록 4
라디오 버튼 그룹: r1, r2, r3는 첫 번째 그룹 (rad1)에 속해 있으며, r2가 기본 선택됨.
s1, s2, s3는 두 번째 그룹 (rad2)에 속해 있으며, s3가 기본 선택됨.
5.
블록 5
리스트 박스: p_carrid 필드는 리스트 박스로 나타남. 사용자는 여러 옵션 중에서 선택할 수 있으며, 기본값은 'Lufthansa' (LH)로 설정됨.
6.
그 외
BEGIN OF BLOCK 하고 END OF BLOCK 은 박스를 그려주는 애들이다.

이어서 실습

text-001을 더블 클릭하면
없으니 만들라고 뜬다. yes 누르고
한글은 그리고 입력하면 마지막글자가 먹히기 때문에 커서를 맨뒤로 꼭 빼주자
필수값입력해주는 화면이 뜬다. 값을 넣어주고 꼭 active버튼을 눌러줘야지만 활성화 된다
그러고 뒤로 빠져나와서 소스화면으로 갔다가 다시 그화면으로 가고 싶으면 Text Elementes 버튼 눌러주면 아까 그 화면으로 이동
이제 다시 출력해보면
그럼 이제 그 밑에 FIELD라는 명도 바꿔줄 수 있을까?
또 다른것들도 추가해서 가능하다

디버깅

SELECTION-SCREEN BEGIN OF BLOCK part5 WITH FRAME TITLE text-005. PARAMETERS p_carrid TYPE spfli-carrid AS LISTBOX VISIBLE LENGTH 20 DEFAULT 'LH'. SELECTION-SCREEN END OF BLOCK part5. field = 10.
ABAP
복사
파트5 밑에 field = 10. 이라고 넣어주고 디버깅체크해주고 실행시켜주자
출력화면에서 실행시켜주면 하단에 필수값 비어져있다고 오류를 뱉음.
PARAMETERS field(10) TYPE c OBLIGATORY.
ABAP
복사
PARAMETERS 한 칸의 조회 화면. 단일값을 조회화면으로 만들때 사용.
OBLIGATORY. 가 들어가면 필수값 입력이다. 안 넣으면 안돌가게끔 되어있다.
그러면 이제 값을 넣어주고 실행시켜주면 디버깅이 걸릴거다.
필드값을 더블 클릭해주고 타입을 보면 c(1)인 애들은 라디오버튼 체크박스 문자 1자리.

도움말

SELECTION-SCREEN BEGIN OF BLOCK part5 WITH FRAME TITLE text-005. PARAMETERS p_carrid TYPE spfli-carrid AS LISTBOX VISIBLE LENGTH 20 DEFAULT 'LH'. SELECTION-SCREEN END OF BLOCK part5.
ABAP
복사
DEFAULT 'LH'는 뭘까? spfli를 더블클릭해서 해당 테이블로 가고 거기서 Input Help/Check 도움말 탭으로 이동하자. 그러면 도움말에 나오는 데이터들이 나온다.
위에 contents 버튼누르고
조회화면에서 돋보기 부분이 이제 도움말을 말함!
이런 가이드를 통해서 갖고올 수 있다.
도메인에 Value range에 들어간 것들은 몇개 안되는 도움말을 넣은거다
보통 Origin of Input Help 에 있어야지 도움말이 있음.
근데 CONNID는 예외적인 상황이라 내장된걸로 도움말을 갖고오고 있다.(SFLIGHT 참고)

Foreign Key (외래키) 설정

외래키는 두 테이블 간의 관계를 정의하는데 사용됨.
필드 카탈로그에서 REF_FIELDNAME을 통해 참조 필드를 설정할 수 있음.
T000테이블의 MANDT랑 현재 SPFLI의 MANDT랑 같다고 연결시켜줬다. 연결고리를 만들어준거다.
그래서 T000을 가지고 도움말로 쓴거다
관계도 보면 연관된 테이블들이 보여진다.
SPFLI 에서 Srch Help 눌러보고 그 중 아무거나 눌러서 들어가보자.

도움말 출력 방식

1.
immediately (즉시 출력하는 조회 창)
도움말을 호출할 때 팝업 없이 즉시 값을 필드에 출력하는 방식.
2.
depends on set of values (값 개수에 따른 팝업 또는 즉시 출력)
데이터의 개수가 100개 이상이면 팝업 창으로 검색할 수 있게 하고, 100개 이하면 즉시 필드에 출력.
3.
Dialog with value restriction (팝업 창으로 검색)
항상 팝업 창을 띄워서 값을 검색할 수 있는 방식.
사용자가 직접 값을 필터링해서 선택할 수 있다.

입력 및 출력 필드 관련

IMP (입력 필터 기능)
입력 필드를 통해 값에 제한을 걸 수 있다.
예를 들어, "000"을 입력하고 도움말을 누르면 "000"과 관련된 데이터만 필터링되어 조회.
EXP (출력 기능)
선택된 값들이 필드에 자동으로 입력된다.
여러 개의 값을 선택해도 클릭 시 모두 필드로 전송. 주로 하늘색으로 표시된 필드에서 사용.

조회 및 필드 설정

LPOS (list position)
즉시 조회 시 출력될 칼럼의 순서를 정의. 즉, 조회 창에서 필드가 어느 위치에 출력될지를 설정.
SPOS (selection position)
조회 화면에서 필드가 출력될 순서를 정의합니다. 필드 선택 시 나타나는 순서를 의미.
0이면 필드가 안나오게 설정 가능.
SDIS (selection display)
체크 시 해당 필드가 비활성화됨. 조회 창에서 사용자가 해당 필드를 수정할 수 없도록 설정할 수 있다.
Default Value (기본 값 설정)
조회 창에서 특정 값을 기본값으로 설정해 고정할 수 있다. 예를 들어 "000"을 기본값으로 설정하면 "000"에 해당하는 데이터만 도움말로 표시.
조회 화면에서 기본값을 임의로 수정할 수 없도록 하여, 마치 필터가 하나 더 적용된 것처럼 동작하게 한다.

REF_FIELDNAME

지정해주면 데이터 엘리먼트에 있는 필드 라벨 저장된대로 길이에 맞춰서 자동으로 출력된다.
더블클릭
길이 별로 컬럼별로 셋팅. 길이에 맞춰서 자동으로 출력

도움말 테스트

* 블록 6: SPFLI 테이블의 다양한 필드를 파라미터로 설정한 조회 화면 * 항공사 코드, 항공편 연결 번호, 국가, 도시, 공항 등의 필드를 파라미터로 설정 SELECTION-SCREEN BEGIN OF BLOCK part6 WITH FRAME TITLE text-005. " 블록 시작, 제목은 text-005 * SPFLI 테이블의 필드를 파라미터로 설정 PARAMETERS p_carr1 TYPE spfli-carrid. " 항공사 코드 (CARRID) PARAMETERS p_carr2 TYPE spfli-CONNID. " 연결 번호 (CONNID) PARAMETERS p_carr3 TYPE spfli-COUNTRYFR. " 출발 국가 (COUNTRYFR) PARAMETERS p_carr4 TYPE spfli-CITYFROM. " 출발 도시 (CITYFROM) PARAMETERS p_carr5 TYPE spfli-AIRPFROM. " 출발 공항 (AIRPFROM) PARAMETERS p_carr6 TYPE spfli-COUNTRYTO. " 도착 국가 (COUNTRYTO) PARAMETERS p_carr7 TYPE spfli-CITYTO. " 도착 도시 (CITYTO) PARAMETERS p_carr8 TYPE spfli-AIRPTO. " 도착 공항 (AIRPTO) PARAMETERS p_carr9 TYPE spfli-FLTIME. " 비행 시간 (FLTIME) PARAMETERS p_carr10 TYPE spfli-DEPTIME. " 출발 시간 (DEPTIME) PARAMETERS p_carr11 TYPE spfli-ARRTIME. " 도착 시간 (ARRTIME) PARAMETERS p_carr12 TYPE spfli-DISTANCE. " 거리 (DISTANCE) PARAMETERS p_carr13 TYPE spfli-DISTID. " 거리 단위 (DISTID) PARAMETERS p_carr14 TYPE spfli-FLTYPE. " 항공편 유형 (FLTYPE) PARAMETERS p_carr15 TYPE spfli-PERIOD. " 기간 (PERIOD) SELECTION-SCREEN END OF BLOCK part6. " 블록 종료
ABAP
복사
무슨 도움말이 뜨는지 테스트해 볼 수 있다.
조회 화면에서 파라미터로 했을 때 도움말이 X 거나 비어있거나 하면 체크박스로 나온다.
범위값을 넣는거는 SELECT OPTIONS 하면 제대로 나온다

조회 화면에서 SELECT OPTIONS 설정

SELECT-OPTIONS는 범위를 지정하여 데이터를 필터링할 때 사용한다.
예시 코드
* SELECT OPTIONS 설정 SELECT-OPTIONS: s_carrid FOR spfli-carrid.
ABAP
복사

AS LISTBOX

SELECTION-SCREEN BEGIN OF BLOCK part6 WITH FRAME TITLE text-005. PARAMETERS p_carr1 TYPE spfli-carrid AS LISTBOX VISIBLE LENGTH 20. " 항공사 코드 (CARRID) PARAMETERS p_carr2 TYPE spfli-CONNID AS LISTBOX VISIBLE LENGTH 20. " 연결 번호 (CONNID) PARAMETERS p_carr3 TYPE spfli-COUNTRYFR AS LISTBOX VISIBLE LENGTH 20. " 출발 국가 (COUNTRYFR) PARAMETERS p_carr4 TYPE spfli-CITYFROM AS LISTBOX VISIBLE LENGTH 20. " 출발 도시 (CITYFROM) PARAMETERS p_carr5 TYPE spfli-AIRPFROM AS LISTBOX VISIBLE LENGTH 20. " 출발 공항 (AIRPFROM) PARAMETERS p_carr6 TYPE spfli-COUNTRYTO AS LISTBOX VISIBLE LENGTH 20. " 도착 국가 (COUNTRYTO) PARAMETERS p_carr7 TYPE spfli-CITYTO AS LISTBOX VISIBLE LENGTH 20. " 도착 도시 (CITYTO) PARAMETERS p_carr8 TYPE spfli-AIRPTO AS LISTBOX VISIBLE LENGTH 20. " 도착 공항 (AIRPTO) PARAMETERS p_carr9 TYPE spfli-FLTIME AS LISTBOX VISIBLE LENGTH 20. " 비행 시간 (FLTIME) PARAMETERS p_carr10 TYPE spfli-DEPTIME AS LISTBOX VISIBLE LENGTH 20. " 출발 시간 (DEPTIME) PARAMETERS p_carr11 TYPE spfli-ARRTIME AS LISTBOX VISIBLE LENGTH 20. " 도착 시간 (ARRTIME) PARAMETERS p_carr12 TYPE spfli-DISTANCE AS LISTBOX VISIBLE LENGTH 20. " 거리 (DISTANCE) PARAMETERS p_carr13 TYPE spfli-DISTID AS LISTBOX VISIBLE LENGTH 20. " 거리 단위 (DISTID) PARAMETERS p_carr14 TYPE spfli-FLTYPE AS LISTBOX VISIBLE LENGTH 20. " 항공편 유형 (FLTYPE) PARAMETERS p_carr15 TYPE spfli-PERIOD AS LISTBOX VISIBLE LENGTH 20. " 기간 (PERIOD) SELECTION-SCREEN END OF BLOCK part6.
ABAP
복사
CARR1이랑 CARR14만 리스트에 나오고 나머진 데이터가 안나온다
나머지가 안나오는 이유는 리스트박스 속성때문이다
리스트박스는
키값 필드
선택하는 필드
실제 변수에 들어가는 값
텍스트값 필드
설명해주는 필드
리스트 박스에 보여지는 텍스트
이렇게 2개로 구성되어 있다.
자세히 보면 나오는 FLTYPE을 봐보자.
2개가 등록되어있고
안나오는거 하나로 예시로 보면
여기는 2개이상인 3개가 있어서 안나옴…
거참 신기함..

SE11 SCARR 복사

패키지에 $TMP 없으면 직접 쳐서 넣으면된다.
활성화 시켜줘서 Active로 해줘야지 가져다가 쓸 수 있다.
현재 독일어로 되어있어서 영어로 바꿔주자.
하면 계속 팝업창 뜨는데 쭉 체크버튼 누르고 넘겨주고
이 화면에서 저장버튼 클릭 해주고 뒤로 나오면
이제 바꿔서 나온다.
근데 설정 보면 CARRNAME 을 체크해주면 CARRNAME값도 맵핑될 줄 알았는데 안된다.
Search Help 누르고
Create Proposal 누르면 밑에 이제 자동으로 셋팅되고 다시 active 시켜준다음에 CARRID 누르면 CARRNAME 까지 같이 맵핑된다.

Srch Help를 새로 만들어볼거다.

새로 se11를 띄워서

1. Elementary search help (단일 검색 도움말)

기능: 단일 테이블 또는 단일 데이터 소스를 기준으로 검색 도움말을 제공.
용도: 하나의 테이블이나 뷰에서 데이터를 가져와 도움말로 사용할 때 사용.
활용: 검색 시 단순한 데이터 조회를 원하는 경우에 사용되며, 하나의 테이블 또는 뷰에 대한 검색을 제공한다.

2. Collective search help (집합 검색 도움말)

기능: 여러 개의 Elementary search help(단일 검색 도움말)를 하나로 묶어 사용. 사용자가 여러 검색 옵션 중 선택할 수 있도록 함.
용도: 여러 테이블이나 데이터 소스를 기반으로 다양한 검색 옵션을 제공할 때 사용.
활용: 복잡한 검색 조건이 필요한 경우에 유용하며, 여러 개의 검색 기준을 하나의 검색 도움말로 통합할 수 있다.
더블클릭하면
scarr 넣고 체크버튼 클릭
SDis 하면은
조회화면에서 해당버튼 누르면
해당 부분은 검색이 안된다.
그러고 활성화시켜주고 저장
그럼 이제 아까 창으로 돌아와서 ZCARRID1이거를 넣어볼거다
출력할때 이렇게 맵핑해서 출력해주겠다고 팝업창이 뜬다
리프레쉬 안되기때문에 create proposal 한번 해주고 copy
활성화 해주고 이제 contents 버튼 누르면
와 도움말 만드니까 이제 4개의 필드가 쏵다 채워진다
근데 아까 만들어준 ZCARR1을 넣어주기전에꺼는
두개만 체크되어있으면 원래 값이 하나더 맵핑되어야하는데 그러지 않았다.
이렇게 출력한개만 하겠다고 뺄 수도 있다.
그래서 이렇게 한개만 채워진다

SPFLI 복사

그러고 언어 또 바꿔주고 반복…
여기에 이제 도움말을 만들어줄거다
se11에서 ZSGEOCITY1 도움말 만들어주기
하고 활성화하고 저장.
IMP 가지고 한개만 체크해보고 두개만 체크해보고 어떻게 제약이 먹는지 한번 테스트 해보시길…
다시 돌아와서
파라매터가 유니크하지 않다고 뜨고 체크버튼누르면
이렇게 CITY부분은 CITYFROM으로 제안해준다.
이게 두개가 정의가 똑같이 되어있어서 헷갈려서 그렇다.
그냥 이상태로 copy 하고 활성화하고 실행 화면으로 가면
CITYTO에 들어가야하는데 엉뚱한데 들어간다.
아까 FROM을 TO로 변경하고 활성화해주고 다시 실행화면으로
이제 잘들어간다.
총 4개에 맵핑 해주면 끝
그러면 오늘 했던 리스트박스에 2개 있으면 노출된다고 했던거 기억해서
SELECTION-SCREEN BEGIN OF BLOCK part6 WITH FRAME TITLE text-005. PARAMETERS p_carr1 TYPE spfli-carrid AS LISTBOX VISIBLE LENGTH 20. " 항공사 코드 (CARRID) PARAMETERS p_carr2 TYPE spfli-CONNID AS LISTBOX VISIBLE LENGTH 20. " 연결 번호 (CONNID) PARAMETERS p_carr3 TYPE zspfli-COUNTRYFR AS LISTBOX VISIBLE LENGTH 20. " 출발 국가 (COUNTRYFR) PARAMETERS p_carr4 TYPE spfli-CITYFROM AS LISTBOX VISIBLE LENGTH 20. " 출발 도시 (CITYFROM) PARAMETERS p_carr5 TYPE spfli-AIRPFROM AS LISTBOX VISIBLE LENGTH 20. " 출발 공항 (AIRPFROM) PARAMETERS p_carr6 TYPE spfli-COUNTRYTO AS LISTBOX VISIBLE LENGTH 20. " 도착 국가 (COUNTRYTO) PARAMETERS p_carr7 TYPE spfli-CITYTO AS LISTBOX VISIBLE LENGTH 20. " 도착 도시 (CITYTO) PARAMETERS p_carr8 TYPE spfli-AIRPTO AS LISTBOX VISIBLE LENGTH 20. " 도착 공항 (AIRPTO) PARAMETERS p_carr9 TYPE spfli-FLTIME AS LISTBOX VISIBLE LENGTH 20. " 비행 시간 (FLTIME) PARAMETERS p_carr10 TYPE spfli-DEPTIME AS LISTBOX VISIBLE LENGTH 20. " 출발 시간 (DEPTIME) PARAMETERS p_carr11 TYPE spfli-ARRTIME AS LISTBOX VISIBLE LENGTH 20. " 도착 시간 (ARRTIME) PARAMETERS p_carr12 TYPE spfli-DISTANCE AS LISTBOX VISIBLE LENGTH 20. " 거리 (DISTANCE) PARAMETERS p_carr13 TYPE spfli-DISTID AS LISTBOX VISIBLE LENGTH 20. " 거리 단위 (DISTID) PARAMETERS p_carr14 TYPE spfli-FLTYPE AS LISTBOX VISIBLE LENGTH 20. " 항공편 유형 (FLTYPE) PARAMETERS p_carr15 TYPE spfli-PERIOD AS LISTBOX VISIBLE LENGTH 20. " 기간 (PERIOD) SELECTION-SCREEN END OF BLOCK part6.
ABAP
복사
PARAMETERS p_carr3 TYPE zspfli-COUNTRYFR AS LISTBOX VISIBLE LENGTH 20.
ABAP
복사
이걸로 바꾸고 조회화면에서 보면
짜잔- 나온다.

abap select option example 구글링

abap select option example 로 구글링해서
해당 소스만 복사
SELECTION-SCREEN BEGIN OF BLOCK part8 WITH FRAME TITLE text-007. SELECT-OPTIONS s_carrid FOR spfli_wa-carrid. SELECTION-SCREEN END OF BLOCK part8.
ABAP
복사
SELECT-OPTIONS은 범위를 넣는건데 활성화 하면 바로 오류가 난다
TABLES SPFLI. SELECTION-SCREEN BEGIN OF BLOCK part8 WITH FRAME TITLE text-007. SELECT-OPTIONS s_carrid FOR spfli-carrid. SELECTION-SCREEN END OF BLOCK part8.
ABAP
복사
처음에 필수값 오류날텐데 필수값 컬럼 값 넣어주고 다시 멀티버튼 눌러주기
SELECTION-SCREEN BEGIN OF BLOCK part8 WITH FRAME TITLE text-007. PARAMETERS p_carrid TYPE scarr-carrid. SELECTION-SCREEN END OF BLOCK part8. * 중간 소스 ... FORM data_retrieval. DATA: ld_color(1) TYPE c. SELECT mandt carrid carrname currcode url * UP TO 10 ROWS FROM scarr INTO TABLE it_scarr WHERE carrid IN s_carrid. ENDFORM. " DATA_RETRIEVAL
ABAP
복사
SELECTION-SCREEN BEGIN OF BLOCK part8 WITH FRAME TITLE text-007. *SELECT-OPTIONS s_carrid FOR scarr-carrid. PARAMETERS p_carrid TYPE scarr-carrid. SELECTION-SCREEN END OF BLOCK part8. * 중간 소스 ... FORM data_retrieval. DATA: ld_color(1) TYPE c. SELECT mandt carrid carrname currcode url * UP TO 10 ROWS FROM scarr INTO TABLE it_scarr * WHERE carrid IN s_carrid. WHERE carrid = p_carrid. ENDFORM. " DATA_RETRIEVAL
ABAP
복사