본문 바로가기
ABAP

[step-2] executable program templete - TOP,SEL

by 키노s 2025. 6. 23.

글로벌 변수를 작성해보겠습니다.

 

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.

 

 

여기까지는 무난하죠~