글로벌 변수를 작성해보겠습니다.
Include ZTESTR1000_TOP
전역변수로 사용될 것을 정의합니다.
먼저 변수선인 규칙을 정의하겠습니다.
이것 또한 암묵적으로 사용하는 규칙일뿐 마음대로 정의하셔도 됩니다.
전역 변수 (Global Variable) | gv_ | Global Variable |
전역 구조 (Global Structure) | gs_ | Global Structure |
전역 내부 테이블 | gt_ | Global Table |
전역 상수 | gc_ | Global Constant |
전역 필드 심볼 | gf_ | Global Field Symbol |
필드 심볼 | <fs_> | 필드 심볼(Field Symbol) |
위 규칙데로 필요한 것을 정의하면 됩니다.
*&---------------------------------------------------------------------*
*& Tables
*&---------------------------------------------------------------------*
TABLES : MARA,MARC,MAKT, EKKO,EKPO,SSCRFIELDS.
*&---------------------------------------------------------------------*
*& Types & Internal tables
*&---------------------------------------------------------------------*
TYPES: BEGIN OF ty_out,
chk TYPE zcheck,
status TYPE icon-id,
ebeln TYPE ekko-ebeln, "STO
ebelp TYPE ekpo-ebelp, "STO item
"필요한것 정의
END OF ty_out.
TYPES: ty_t_out TYPE STANDARD TABLE OF ty_out WITH DEFAULT KEY.
*&---------------------------------------------------------------------*
*& Field-symbols
*&---------------------------------------------------------------------*
FIELD-SYMBOLS : <t_out> TYPE STANDARD TABLE.
*&---------------------------------------------------------------------*
*& DATA & Internal tables
*&---------------------------------------------------------------------*
DATA: lt_hist TYPE STANDARD TABLE OF MARA.
*&---------------------------------------------------------------------*
*& Cosntant
*&---------------------------------------------------------------------*
CONSTANTS : gc_abap_true VALUE 'X',
gc_main VALUE '0',
gc_sub VALUE '1',
gc_red TYPE icon-id VALUE icon_led_red,
gc_green TYPE icon-id VALUE icon_led_green.
*&---------------------------------------------------------------------*
*& Ranges
*&---------------------------------------------------------------------*
RANGES: r_mtart FOR mara-mtart,
r_matnr FOR makt-matnr.
*&---------------------------------------------------------------------*
*& Variables
*&---------------------------------------------------------------------*
DATA: gv_chk,
ok_code TYPE sy-ucomm,
gv_matnr_nozero TYPE matnr,
go_editor TYPE REF TO cl_gui_textedit,
go_container TYPE REF TO cl_gui_custom_container.
*&---------------------------------------------------------------------*
*& ALV
*&---------------------------------------------------------------------*
CLASS lcl_event_handler DEFINITION DEFERRED.
CLASS lcl_alv_grid DEFINITION DEFERRED.
Include ZTESTR_SEL
SELECTION-SCREEN 넣습니다.
[STEP-1]에서 보여준 화면의 코딩 예제입니다.
2025.06.22 - [SAP] - [step-1] executable program templete - 프로그램 구조
먼저 이번에도 생성 규칙을 정의해볼까 합니다.
ABAP SELECTION-SCREEN 선언 규칙 정리
SAP ABAP 보고서에서 사용자 입력을 처리할 때 가장 먼저 마주치는 영역이 SELECTION-SCREEN입니다.
명확한 명명 규칙과 UI 구성 원칙을 적용해 두면, 사용자는 편리하고 개발자는 유지보수가 쉬워집니다.
명명 규칙 (Naming Convention)
항목 유형접두어설명
파라미터(Parameter) | p_ | 단일 값 입력 |
셀렉션 옵션(Select-Options) | s_ | 범위·다중 값 입력(RANGES) |
블록(Block) 이름 | b_ | BLOCK ... END OF BLOCK 식별자 |
텍스트 심볼 | text-001 | TEXT- 영역에서 관리, 필요시 T01, S01, G01. 등으로 정이 |
블록 구성 (BLOCK 사용)
abap
복사편집
SELECTION-SCREEN BEGIN OF BLOCK blk_main WITH FRAME TITLE text-001. PARAMETERS: p_date TYPE sy-datum, p_user TYPE sy-uname. SELECT-OPTIONS: s_matnr FOR mara-matnr. SELECTION-SCREEN END OF BLOCK blk_main.
- 서로 연관된 필드를 그룹화하여 화면 가독성↑
- WITH FRAME TITLE text-001 : 블록 제목은 텍스트 심볼로 관리
화면 구성 요소
구문효과
SELECTION-SCREEN SKIP n. | n줄 띄우기 |
SELECTION-SCREEN COMMENT /pos(len) | 설명 라벨 출력 |
SELECTION-SCREEN ULINE /pos(len) | 구분선 |
SELECTION-SCREEN PUSHBUTTON /pos(len) text-xxx USER-COMMAND ucom | 버튼 생성 |
전체소스
프로그램적으로 추가 스크린을 정의가 필요한 것도 있어 스크린(301)도 있습니다.
나중에 보여드리겠습니다.
*&---------------------------------------------------------------------*
*& Include ZTESTR1000_sel
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-a00.
PARAMETERS: rb_isto RADIOBUTTON GROUP grp1 DEFAULT 'X' USER-COMMAND cmd MODIF ID m1,
rb_3rdp RADIOBUTTON GROUP grp1 MODIF ID m1.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE TEXT-a03.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(23) TEXT-a04 MODIF ID m2.
PARAMETERS: p_werks TYPE ekpo-werks MODIF ID m2.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(23) TEXT-a05 MODIF ID m2.
PARAMETERS: p_reswk TYPE ekko-reswk MODIF ID m2.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(23) TEXT-a07 MODIF ID m2.
PARAMETERS: p_vbelnc TYPE zict1070-vbeln_c MODIF ID m2.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(20) TEXT-a08 MODIF ID m2.
SELECT-OPTIONS: s_posnrc FOR zict1070-posnr_c MODIF ID m2.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(20) TEXT-a09 MODIF ID m2.
SELECT-OPTIONS: s_matnrc FOR zict1070-matnr_c MODIF ID m2.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(20) TEXT-a12 MODIF ID m2.
SELECT-OPTIONS: s_bstnk FOR zict1070-bstnk MODIF ID m2.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(20) TEXT-a10 MODIF ID m2.
SELECT-OPTIONS: s_erdat FOR ekko-aedat MODIF ID m2.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN SKIP 1.
PARAMETERS: p_ctrl AS CHECKBOX DEFAULT ' ' MODIF ID m2.
PARAMETERS: p_retpo AS CHECKBOX DEFAULT ' ' MODIF ID m2.
SELECTION-SCREEN END OF BLOCK b2.
*추가 스크린 조건
SELECTION-SCREEN BEGIN OF SCREEN 0301 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (8) TEXT-t01 FOR FIELD s_mtart.
SELECTION-SCREEN POSITION 12.
SELECT-OPTIONS s_mtart FOR mara-mtart NO-EXTENSION NO INTERVALS.
SELECTION-SCREEN COMMENT (12) TEXT-t02 FOR FIELD s_werks.
SELECTION-SCREEN POSITION 51.
SELECT-OPTIONS s_werks FOR marc-werks NO-EXTENSION NO INTERVALS MODIF ID b4.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (10) TEXT-t03 FOR FIELD s_matnr.
SELECT-OPTIONS s_matnr FOR mara-matnr.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (10) TEXT-t04 FOR FIELD s_maktx.
SELECTION-SCREEN POSITION 12.
SELECT-OPTIONS s_maktx FOR makt-maktx NO-EXTENSION NO INTERVALS.
SELECTION-SCREEN COMMENT (12) TEXT-t05 FOR FIELD s_spart.
SELECTION-SCREEN POSITION 51.
SELECT-OPTIONS s_spart FOR mara-spart NO-EXTENSION NO INTERVALS.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF SCREEN 0301.
여기까지는 무난하죠~
'ABAP' 카테고리의 다른 글
[ABAP] BAPI_PO_CREATE1(엑셀 업로드) (0) | 2025.06.28 |
---|---|
[ABAP] BAPI_PO_CREATE1을 활용한 마이그레이션용 구매오더(PO) 생성 가이드 (0) | 2025.06.24 |
[step-3] executable program templete - PBO,PAI,CLS,F01 (0) | 2025.06.24 |
[step-1] executable program templete - 프로그램 구조 (0) | 2025.06.22 |
SAP ADT 설치 – Eclipse에서 ABAP 개발 환경 만들기 (0) | 2025.06.21 |