본문 바로가기
공부/SAP

report program <12 단원 복습>

by 채소 2024. 1. 22.
728x90

initialization -> selection-screen 사용자의 입력사항에 따라 해당하는 엔트리 읽고 , 데이터 가공하여 결과 보여줌

"1. 프로그램 및 데이터 선언

REPORT ZREPORT01.

TABLES : SFLIGHT.

DATA : L_CARRID TYPE SFLIGHT-CARRID.

*SELECTION SCREEN

SELECT-OPTIONS : SEL_CAR FOR SFLIGHT-CARRID.
PARAMETERS : P_CAR LIKE SFLIGHT-CARRID.

"2. 이벤트

INITIALIZATION.
AT SELECTION-SCREEN.
  START-OF-SELECTION.
* ( SELECT*FROM ~ 또는 GET<TABLE>)
  END-OF-SELECTION.


  "3. LIST PROCEESS 이벤트
  TOP-OF-PAGE.
  END-OF-PAGE.

 AT LINE-SELECTION.
   AT PF<NN>.
     AT USER-COMMAND.

 

1. 프로그램 선언문

 

1) 프로그램 LIST HEADING지정

기본 헤딩 제거 :  NO STANDARD PAGE HEADING.

 

2) LINE SIZE

OUTPUT LIST 넓이 지정 LINE-SIZE 숫자.

3) MESSAGE ID

 

MESSAGE-ID <MESSAGE-ID>.

 

2. DATA 선언

프로그램에서 사용하게 될 테이블 데이터 선언

INCLUDE PGM_IDTOP.

 

3.SELECTION SCREEN

프로그램의 조회 조건은 입력할 수 있는 SELECTION SCREEN을 생성하는 부분

리포트 프로그램이 실행되면, SELECTION SCREEN이 자동으로 생성된다.

SELECTION SCREEN은 사용자와 상호작용 하기 위한 INPUT 필드와 같이 선택 조건을 입력할 수 있는 화면을 제공한다.

"SELECT-OPTIONS : SEL_CARR FOR SFLIGHT-CARRID.
 PARAMETERS : P_CARR LIKE SFLIGHT-CARRID.
 SELECTION-SCREEN BEGIN OF BLOCK BL1 WITH FRAME TITLE TEXT-010.
 SELECTION-SCREEN END OF BLOCK BL1.

 

1) PARAMETERS

사용자가 값을 입력하도록 INPUT 필드 정의

PARAMETERS <P> <LENGTH> <TYPE> <DECIMALS>

DATA : l_fname(20)   TYPE c.
PARAMETERS: p_1       DEFAULT 'A',
              p_2      TYPE char10,
              p_3      TYPE c LENGTH 3 DEFAULT '123',
              p_4      TYPE p DECIMALS 2 DEFAULT '123.456789',
              p_5      LIKE sflight-carrid,
              p_6      MEMORY ID scl,
              p_7      MATCHCODE OBJECT zcarrid,
              p_8      MODIF ID mid,
              p_9      NO-DISPLAY,
              p_10     DEFAULT 'a' LOWER CASE,
              p_11     OBLIGATORY,
              p_12     AS CHECKBOX,
              p_13     RADIOBUTTON GROUP radi,
              p_13_2   RADIOBUTTON GROUP radi,
              p_14(10) VISIBLE LENGTH 3 DEFAULT '1234567890',
              p_15     LIKE sflight-carrid VALUE CHECK,
              p_16     LIKE (l_fname),
              p_17     LIKE sflight-carrid AS LISTBOX VISIBLE LENGTH 3,
              p_18         AS CHECKBOX USER-COMMAND abc.
*다음은 Logical Datagbase에서 사용됨.
*           P_19        for table sflight,
*           P_20        FOR NODE sflight,
*           P_21        AS SEARCH PATTERN,
*           P_22  VALUE-REQUEST .
*           P_23  HELP-REQUEST.

PARAMETER 구문 선언만 해도 1000번 화면 자동 생성

 

2)SELECTION -OPTIONS

 

2개의 INPUT필드 다양한 조건 입력받을 수 있다.

SELECT-OPTIONS FOR구문과 병행

SELECT-OPTIONS <SELTAB> FOR <선언된 테이블 필드 명 / DATA로 선언된 변수>

TABLES : sflight.
              DATA : gs_scarr TYPE scarr.
DATA : gv_val   TYPE char20.
SELECT-OPTIONS : s_1  FOR sflight-carrid    DEFAULT 'AC',
                    s_2  FOR gs_scarr-carrid  DEFAULT 'AA*'
                                               OPTION EQ SIGN I,
                    s_3  FOR gv_val           DEFAULT '1111' TO '9999',
                    s_4  FOR gv_val          DEFAULT 'AAAA' TO 'ZZZZ'
                                              OPTION BT SIGN E,
                    s_5  FOR sflight-carrid    MEMORY  ID scl,
                    s_6  FOR gv_val          MATCHCODE OBJECT zcarrid,
                    s_7  FOR sflight-carrid    MODIF ID car,
                    s_8  FOR sflight-carrid    NO-DISPLAY,
                    s_9  FOR sflight-carrid    LOWER CASE,
                    s_10 FOR sflight-carrid    OBLIGATORY,
                    s_11 FOR sflight-carrid    NO-EXTENSION,
                    s_12 FOR sflight-carrid    NO INTERVALS,
                    s_13 FOR sflight-carrid    VISIBLE LENGTH 1.

 

3) SELECTION-SCREEN

PARAMETER와 SELECT-OPTION을 사용하면 ABAP 프로글매이 자동으로 필드 내역과 길이를 좆러하여 화면ㅇ르 생성한다. 시스템이 생성하는 화면을 사용자 입맛에 맞게 화면 구성요소들을 배치하고 싶으면 SELECTION-SCREEN 구문을 이용할 수 있다.

 

TABLES : scarr, sscrfields.

SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT  1(10) text-001 FOR FIELD p_1.
PARAMETERS : p_1 LIKE  scarr-carrid.

SELECTION-SCREEN POSITION POS_LOW.
PARAMETERS : p_2 LIKE   scarr-carrname.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN SKIP 2.
SELECTION-SCREEN ULINE.
SELECTION-SCREEN ULINE /1(10).
SELECTION-SCREEN ULINE pos_low(10).
SELECTION-SCREEN ULINE pos_high(10).

SELECTION-SCREEN PUSHBUTTON /pos_low(10) text-002 USER-COMMAND btn01.

SELECTION-SCREEN BEGIN OF BLOCK block WITH FRAME TITLE text-003.
PARAMETERS : p_3 TYPE c.
SELECT-OPTIONS : s_1 FOR scarr-carrid.
SELECTION-SCREEN END OF BLOCK block.

SELECTION-SCREEN BEGIN OF BLOCK block2 WITH FRAME TITLE text-004
NO INTERVALS.
PARAMETERS : p_4 TYPE c.
SELECT-OPTIONS : s_2 FOR scarr-carrid.
SELECTION-SCREEN END OF BLOCK block2.
SELECTION-SCREEN FUNCTION KEY 1.

INITIALIZATION.
  MOVE 'Function key 1' TO sscrfields-functxt_01.

AT SELECTION-SCREEN.
  IF sscrfields-ucomm = 'FC01'.
    MESSAGE 'You clicked Function Key 1' TYPE 'I'.
  ENDIF.

  IF sscrfields-ucomm = 'BTN01'.
    MESSAGE 'You clicked Fuction Key button' TYPE 'I'.
  ENDIF.

 

TABLE 먼저 선언해주어야 TABLE에서 불러와서 사용을 함!

 

* TEXT SYMBOL 선언 방법

TEXT ELEMENTS에서

 

 

4. MESSAGE ID

 

REPORT <REPORTNAME> MESSAGE-ID <MESSAGE-ID>.

MESAGE ENN WITH <FIELD1> <FIELD4>.

 

T-CODE SE91

 

MESSAGE S001 WITH '1' '2'.
MESSAGE E001 WITH 'ERROR'.
MESSAGE W001 WITH 'WARINING'.
MESSAGE I001 WITH 'INFORMATION'.
MESSAGE S001 WITH 'SUCCESS'.
MESSAGE A001 WITH 'APPEND'.
MESSAGE X001 WITH 'DUMP'.

 

프로그램 구조

 

-  INITIALIZATION 초기화 하는데 주로 사용

- AT SELECTION-SCREEN 사용자가 SELECTION SCREEN 에 값을 입력하기 전/후에 작동

- START-OF SELECTION : 사용자가 F8 실행 버튼 클릭시 DB에서 값 읽어옴

- END-OF-SELECTION :데이터 읽은 후 작업 수행

 

1. INITIALIZATION

이벤트 중 프로그램 르 실행했을 때 가장 먼저 수행되는 것은  INITIALIZATION이다.

이 이벤트는 SELECTION-SCREEN이 조회되기 전 작동하므로 변수에 초깃값을 지정할 때  사용된다.

즉, INITIALIZATION 이벤트에서 SELECTION-SCREEN에 사용되는 필드들의 초깃값을 지정함으로써, 사용자가 자주 사용하는 값을 자동으로 입력되게 한다.

TABLES : sflight.

PARAMETERS: p_carrid      LIKE sflight-carrid,
              p_connid     LIKE sflight-connid.

SELECT-OPTIONS : s_fldate  FOR sflight-fldate.

INITIALIZATION.
*   SET TITLEBAR 'T1000'.
*   SET PF-STATUS 'TEST'.

  p_carrid = 'AA'.
  p_connid = '17'.

  s_fldate-low = '20150101'.
  s_fldate-high = '20151231'.
  APPEND s_fldate.

SELECT-OPTIONS은 인터널 테이블 형태이기 때문에 반드시 APPEND 구문으로 데이터를 추가하여야 한다.!(데이터 할당과 APPEND 항상 쌍으로 움직여야함)

 

=> 이거에 대한 CHATGPT 더 자세한 설명

SELECT-OPTIONS 문은 ABAP 언어에서 데이터베이스 쿼리를 수행할 때 사용되는 문입니다. SELECT-OPTIONS은 사용자에게 범위를 지정할 수 있는 입력 도구로, 특정 필드의 값을 선택할 수 있도록 하는데 사용됩니다.

SELECT-OPTIONS 선언은 내부 테이블 형태로 되어 있습니다. 이 선언은 사용자가 선택한 값을 저장할 내부 테이블을 만들어 놓는 것과 동일합니다. 내부 테이블은 특정 구조체 형식을 갖추고 있으며, 사용자가 선택한 값들을 저장하기 위해 사용됩니다.

APPEND 구문은 내부 테이블에 새로운 행을 추가하는 데 사용됩니다. SELECT-OPTIONS을 통해 사용자가 선택한 값은 내부 테이블에 APPEND를 통해 추가됩니다. 이렇게 하면 내부 테이블에는 사용자가 선택한 모든 값들이 저장되게 됩니다.

그 이유는 사용자가 여러 범위를 선택할 수 있기 때문입니다. SELECT-OPTIONS에 여러 범위를 지정하면 내부 테이블에는 각 범위에 해당하는 값을 따로따로 저장할 수 있어야 합니다. APPEND를 사용하면 새로운 행이 추가되기 때문에 각 범위에 대한 값을 따로 저장할 수 있게 됩니다.

간단한 예제로 설명하면:

ABAP
Copy code
DATA: lt_range TYPE TABLE OF s_range,
      ls_range TYPE s_range.

SELECT-OPTIONS s_matnr FOR mara-matnr.

LOOP AT s_matnr INTO ls_range.
  APPEND ls_range TO lt_range.
ENDLOOP.
위 코드에서 s_matnr은 SELECT-OPTIONS으로 정의된 범위를 저장하는 내부 테이블이고, lt_range는 실제로 데이터를 저장하는 내부 테이블입니다. APPEND를 사용하여 s_matnr의 각 범위를 lt_range에 추가합니다.

 

 

2. AT SELECTION-SCREEN

SELECTION-SCREEN에서 INPUT FIELD의 값이 변동되었을 때 실행되는 이벤트이며, INITIALIZATION 과 START OF SELECTION 사이 수행되어 사용자 액션에 대해 반응하고, 화면 필드 조절

 

AT SELECTION-SCREEN.
  AUTHORITY-CHECK OBJECT 'Z_TEST'
  ID 'CARRID' FIELD PA_CARR
  ID 'ACTVT' FIELD '03'.
  IF SY-SUBRC = 4.
    MESSAGE E00 WITH 'YOU NEED A AUTHORITY'.
    ENDIF.

 

1) AT SELECTION-SCREEN ON <FIELD>

SELECTION SCREEN에서 전달되는 특정 필드에 대해 수행한다. 오류 메시지가 발생하면 해당 필드는 다시 값을 입력받도록 커서가 위치하게한다.

TABLES : scarr.

SELECT-OPTIONS : s_carrid  FOR scarr-carrid.

AT SELECTION-SCREEN ON s_carrid.

  IF s_carrid-low NE 'AA'.
    MESSAGE 'It is required to Input AA' TYPE 'E'.
  ENDIF.

 

2) AT SELECTION-SCREEN ON END OF SEL

SELECTION SCREN 에서 여러 건의 값을 입력할 때 전체 SELECTION TABLE의 입력 값을 제어할 수 있다. 

즉 상한/하한 값 미입력값 등 체크 시 사용가능

 

AT SELECTION-SCREEN ON END OF SEL.
TABLES : scarr.
SELECT-OPTIONS : s_carrid  FOR scarr-carrid.

AT SELECTION-SCREEN ON END OF s_carrid.
  LOOP AT s_carrid.
    IF s_carrid-low IS INITIAL.
      MESSAGE 'It is required to Input Low Value' TYPE 'E'..
    ENDIF.
  ENDLOOP.

 

3) AT SELECTION-SCREEN OUTPUT

SELECTION-SCREEN 화면의 LAYOUT 속성을 설정할 수 있다. 

ELECT-OPTIONS : s_carrid  FOR scarr-carrid MODIF ID sc1.
PARAMETERS :  p_test(10)   TYPE c MODIF ID sc2.

AT SELECTION-SCREEN OUTPUT.
  LOOP AT SCREEN.
    IF screen-group1 = 'SC1'.
      screen-intensified = '1'. 
    ELSEIF screen-group1 = 'SC2'.
      screen-input = '0'.
    ENDIF.
    MODIFY SCREEN.
  ENDLOOP.

 

죄송합니다. 오해가 있었던 것 같습니다. SCREEN-INTENSIFIED와 MODIF ID에 대해 자세히 설명하겠습니다.

  1. SCREEN-INTENSIFIED:
    • SCREEN-INTENSIFIED는 화면 요소의 강조 표시 여부를 지정하는 속성입니다.
    • '1'로 설정하면 해당 화면 요소가 강조되어 표시되고, '0'으로 설정하면 강조가 해제됩니다.
    • 주로 특정 조건에 따라 사용자에게 주목해야 하는 메시지나 입력 필드 등을 강조하기 위해 사용됩니다.
  2. MODIF ID:
    • MODIF ID는 화면 요소의 수정 식별자를 나타냅니다.
    • 하나의 화면에 여러 그룹의 입력 필드나 출력 요소 등이 있을 때, 특정 그룹의 화면 요소를 동시에 수정하거나 특정 그룹에 속한 요소들에 대해 특별한 동작을 수행할 때 사용됩니다.
    • MODIF ID를 사용하여 그룹을 식별하고, 특정 그룹에 속한 화면 요소들에 동일한 설정을 적용할 수 있습니다.

이제 주어진 코드의 각 부분을 다시 설명해보겠습니다.

 

" SELECT-OPTIONS 문으로 s_carrid이라는 범위 선택 옵션을 선언하고, MODIF ID 'SC1'로 그룹 지정
SELECT-OPTIONS : s_carrid  FOR scarr-carrid MODIF ID sc1.

" PARAMETERS 문으로 p_test라는 10자리 문자열 파라미터를 선언하고, MODIF ID 'SC2'로 그룹 지정
PARAMETERS :  p_test(10)   TYPE c MODIF ID sc2.

" AT SELECTION-SCREEN OUTPUT 이벤트로 선택 화면이 화면에 출력되기 전에 발생하는 이벤트를 처리
AT SELECTION-SCREEN OUTPUT.
  
  " LOOP 문을 사용하여 모든 화면 요소에 대해 반복
  LOOP AT SCREEN.

    " screen-group1 값이 'SC1'인 경우 화면을 강조 표시
    IF screen-group1 = 'SC1'.
      screen-intensified = '1'. 
    " screen-group1 값이 'SC2'인 경우 해당 화면 요소를 비활성화
    ELSEIF screen-group1 = 'SC2'.
      screen-input = '0'.
    ENDIF.
    
    " MODIFY SCREEN 문으로 변경된 화면 속성을 적용
    MODIFY SCREEN.
    
  ENDLOOP.
  • s_carrid는 MODIF ID sc1로 그룹화되어 있습니다. 따라서 이 그룹에 속하는 화면 요소들을 설정할 때 screen-intensified 속성이 '1'로 설정되어 해당 화면 요소들이 강조됩니다.
  • p_test는 MODIF ID sc2로 그룹화되어 있습니다. 따라서 이 그룹에 속하는 화면 요소들을 설정할 때 screen-input 속성이 '0'으로 설정되어 해당 화면 요소들이 비활성화됩니다.

요약하면, MODIF ID를 사용하여 그룹화된 화면 요소들에 대해 특정한 설정을 적용하고, SCREEN-INTENSIFIED 속성을 사용하여 강조 표시 여부를 제어하는 것입니다.

 
 
4) ON VALUE-REQUEST FOR PSEL_LOW_HIGH
 

ABAP DICTIONARY에서 제공해주는 POSSIBLE ENTRY대신 사용자가 정의해준 ENTRY가 보이게 설정가능

AT SELECTION-SCREEN ON VALUE-REQUEST FOR PSEL_LOW_HIGH.
 

 

5) ON HELP-REQUEST FOR <FIELD>

ABAP DICTIONARY에 해당 도움말이 없거나 기존 도움말을 대신해서 표현하고자 할 때 사용된다.

SELECTION SCREEEN 필드를 선택하고  F1 눌렀을 때 수행된다.

AT SELECTION-SCREEN ON HELP-REQUEST FOR <FIELD>.

 

 

3. START-OF-SELECTION

조회화면 필드에 대한 초깃값 세팅 및 데이터 검증이 완료되었다면, 이제 db에서 원하는 데이터 가져오는 실질적 작업 수행

"START-OF-SELECTION

DATA : G_TOTAL TYPE I,
      G_CNT TYPE I,
      G_INDEX TYPE I.

DATA : GT_SFLIGHT TYPE TABLE OF SFLIGHT WITH HEADER LINE.

START-OF-SELECTION.
SELECT *
INTO CORRESPONDING FIELDS OF TABLE GT_SFLIGHT
FROM SFLIGHT.

DESCRIBE TABLE GT_SFLIGHT LINES G_TOTAL.

LOOP AT GT_SFLIGHT.
  G_CNT = G_CNT + 1.
  PERFORM PROGRESS_INDICATOR USING G_CNT G_TOTAL 'PROGRESSING..'.
  ENDLOOP.

WRITE 'SUCCESS'.

  FORM PROGRESS_INDICATOR USING VALUE(P_CUR)
        VALUE(P_TOTAL)
    VALUE(P_TEXT).

DATA : LV_TEXT(50) TYPE C,
      LV_IDX(3) TYPE N.

LV_IDX = ( P_CUR / P_TOTAL ) * 100.
CONCATENATE LV_IDX ' % : '               P_TEXT INTO LV_TEXT.

CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
 EXPORTING
  PERCENTAGE       = LV_IDX
  TEXT             = LV_TEXT
EXCEPTIONS
  OTHERS = 0.
ENDFORM.

 

 

 

4. END-OF-SELECTION

실행 환경에 호출되는 마지막 이벤트로 SELECT구문에서 모든 데이터를 읽은 후 화면에 WRITE하기 전 수행된다.

인터널 테이블에 저장된 데이터 들을 변형하는 작업 가능

DATA: GS_STR TYPE SCARR,
      GT_ITAB TYPE TABLE OF SCARR.

START-OF-SELECTION.
SELECT *
INTO CORRESPONDING FIELDS OF TABLE GT_ITAB
  FROM SCARR.

  END-OF-SELECTION.
  LOOP AT GT_ITAB INTO GS_STR.
    WRITE: / GS_STR-CARRID, GS_STR-CARRNAME.
    ENDLOOP.

 

 

05. 프로그램 구조(LIST PROCESS 이벤트)

 

1) TOP-OF-PAGE

새로운 페이지가 시작될 때 수행되는 LIST PROCESS 이벤트 ( 첫번재 데이터가 출력되기 전 수행)

SATRT OF SELECTION에서 첫번째 WRITE를 만나면 수행되고, 새로운 페이지마다 수행된다

*2) LINE-SIZE
REPORT ZREPORT01 MESSAGE-ID ZMESSAGE01 NO STANDARD PAGE HEADING.

INCLUDE ZREPORT01TOP.


"12-13
"TOP-OF-PAGE
TOP-OF-PAGE.
WRITE : SY-TITLE, 60 'AGE NO: ', SY-PAGNO.
ULINE.
WRITE : /'ENJOY EASY ABAP', SY-DATUM.
ULINE.

START-OF-SELECTION.
DO 30 TIMES.
WRITE / SY-INDEX.
ENDDO.

 

 

2) END-OF-PAGE

페이지 끝에서 수행되는 블록( 현재 페이지의 남은 공간이 부족할 때 수행되는 이벤트)

"12-14
"END-OF-PAGE
TOP-OF-PAGE.
WRITE:'TOP OF PAGE'.
ULINE AT /(60).

END-OF-PAGE.
ULINE.
WRITE: /30 'PAGE NO:', SY-PAGNO.

START-OF-SELECTION.
DO 10 TIMES.
  WRITE / SY-INDEX.
ENDDO.

 

라인사이즈 조절후

REPORT ZREPORT01 LINE-SIZE 20 LINE-COUNT 10(2) MESSAGE-ID ZMESSAGE01 NO STANDARD PAGE HEADING.

INCLUDE ZREPORT01TOP.

"12-15

"END-OF-PAGE
TOP-OF-PAGE.
WRITE:'TOP OF PAGE'.
ULINE AT /(60).

END-OF-PAGE.
ULINE.
WRITE: /30 'PAGE NO:', SY-PAGNO.

START-OF-SELECTION.
DO 20 TIMES.
  WRITE / SY-INDEX.
ENDDO.

 

 

3) AT LINE-SELECTION

LIST에서 라인을 더블클릭하거나 F2키 눌럿을 경우 수행되는 이벤트

SY-UCOMM 시스템 변수에는 'PICK'이 할당된다. FOR MAT HOTSPOT구문 사용, 더블클릭 효과를 갖고옴

색상 및 INVERSE를 다음과 같이 지정가능 

ON구문으로 시작했으면 OFF구문으로 끝내야함/

START-OF-SELECTION.
  WRITE 'FIRST LIST'.

  FORMAT HOTSPOT ON COLOR 7.
  WRITE: / 'CLIK THIS LINE'.

  FORMAT HOTSPOT OFF COLOR OFF.

  AT LINE-SELECTION.
    WRITE : 'SECONDARY LIST'.
    WRITE:/'SY-UCOMM =', SY-UCOMM.

명령어 창에 =PICK입력후 V버튼 클릭하면 더블클릭한 것 과 같은 효과 볼 수 있다.

DATA : GS_SCARR       TYPE SCARR,
        GT_SCARR        TYPE TABLE OF SCARR ,
        GV_FNAME(20)    TYPE C,
        GV_VALUE(20)    TYPE C,
        GV_CARRID       LIKE SCARR-CARRID,
        GV_CARRNAME   LIKE SCARR-CARRNAME.

AT LINE-SELECTION .
  GET CURSOR FIELD GV_FNAME VALUE GV_VALUE.

  CASE GV_FNAME.
    WHEN 'GS_SCARR-CARRID'.
      SPLIT SY-LISEL AT '  ' INTO GV_CARRID GV_CARRNAME.
      WRITE : GV_CARRID, GV_CARRNAME.

    WHEN OTHERS.
  ENDCASE.


START-OF-SELECTION.
  SELECT *
    INTO CORRESPONDING FIELDS OF
    TABLE  GT_SCARR
  FROM SCARR.

  LOOP AT GT_SCARR INTO GS_SCARR.
    WRITE : / GS_SCARR-CARRID,
              GS_SCARR-CARRNAME.
  ENDLOOP.

 

GET CURSOR 구문은 현재 커서의 필드명 라인 값 가져오는 명령어 이다.

결과에서 AF AIRFRANCE 라인 더블클릭하게 되면 AT LINE-SELECTION 부분 실행되고, GET CURSOR구문에서 필드명과 값을 할당받음

SY-LISEL 시스템 변수는 LIST에서 선택한 라인 값 전부 갖고 있다. SPLIT 구문 이용하여 시스템 변수 SY-LISEL 공백' ' 으로 구분하여 G_cARRID , G_CONNID 변수에 값을 할당함

 

GET CURSOR

... FIELD <FIELD1>

... VALUE <FIELD2>

... LINE <LIN>

 

4) AT PF>NN>

PF <NN>으로 선언된 FUNCTION수행

FUNCTION KEY NN번 눌렀을때 발생하는 이벤트 

< NN>은 1~ 24번 까지 의 숫자

 

"12-18
START-OF-SELECTION.
WRITE 'FUNCTION KEY TEST PF6,PF6,PF7'.

AT PF5.
  PERFORM WLIST.
  AT PF6.
    PERFORM WLIST.
    AT PF7.
      PERFORM WLIST.

      FORM WLIST.
        WRITE:
        /'YOU SELECTED BELOW FUNCTION KEY',
        / 'SY-UCOMM = ', SY-UCOMM.

        ENDFORM.

 

 

5) AT USER COMMAND

프로그램에서 FUNCTION으로 선언된 기능 수행

메뉴 바의 기능을 선택하거나 버튼을 눌렀을 때 발생하는 이벤트이다. 테스트를 위해 다음 페이지를 참고하여 guI status를 먼저 생성하자 

"12-19
START-OF-SELECTION.
SET PF-STATUS 'TEST'.
WRITE : 'CLICK THE BUTTON'.

AT USER-COMMAND.
  CASE SY-UCOMM.
    WHEN 'FC1'.
      LEAVE PROGRAM.
      ENDCASE.

 

6) TOP-OF-PAGE DURING LINE-SELECTION

SECONDARY LIST에서 HEADER를 CONTROL할때 사용되는 이벤트

시스템 변수 SY-LSIND에 현재 LIST INDEX를 갖고 있다.

 

TOP-OF-PAGE DURING LINE-SELECTION
TOP-OF-PAGE.
  WRITE 'First List TOP-OF-PAGE'.
  ULINE.

TOP-OF-PAGE DURING LINE-SELECTION.
  WRITE 'Secondary List TOP-OF-PAGE'.
  ULINE.

AT LINE-SELECTION.
  PERFORM write_list.

START-OF-SELECTION.
  WRITE: 'Double-click this line'.

FORM write_list.
  WRITE: 'Secondary List',

/ '  sy-pfkey:', sy-pfkey.
ENDFORM.

 

7. WRITE구문

OUTPUT리스트에 데이터를 쓰는 기능

값을 할당하는 MOVE 기능도 수행

- DATA 구문으로 선언된 필드

- TABLES 구문으로 선언된 구조체의 항목

- FIELD-SYMBOL로 선언된 필드 심볼

-언어에 종속적이지 않은 TEXT문장

 

1) AT PL

필드 위치와 길이 지정하여 준다.

/ 기호는 NEW LINE의미 숫자 앞에 선언되어야한다.

 

 

DATA : GT_DATA TYPE TABLE OF SFLIGHT WITH HEADER LINE.

TOP-OF-PAGE.
  WRITE:/50 'Report Format' CENTERED.
  WRITE:/48 '------------------' CENTERED.
  SKIP.


START-OF-SELECTION.
  WRITE:/(51) SY-ULINE, 53(68) SY-ULINE,
        /     SY-VLINE NO-GAP, 51 SY-VLINE NO-GAP, 53 SY-VLINE NO-GAP, 120 SY-VLINE NO-GAP.

  WRITE: 2(9) 'Report No' NO-GAP CENTERED, SY-VLINE NO-GAP.
  WRITE: 12(5) '00001' NO-GAP,  51 SY-VLINE NO-GAP.

  WRITE: 54(11) 'Report Date' NO-GAP CENTERED, SY-VLINE NO-GAP.
  WRITE: 66(10) SY-DATUM NO-GAP CENTERED,  120 SY-VLINE NO-GAP.
  WRITE:/(51) SY-ULINE, 53(68) SY-ULINE.
  SKIP.

  WRITE:/(120) SY-ULINE.

  SELECT * INTO CORRESPONDING FIELDS OF TABLE GT_DATA
    FROM SFLIGHT UP TO 10 ROWS.

  LOOP AT GT_DATA.

    WRITE :/ SY-VLINE NO-GAP, 2(10) 'Carrier ID', SY-VLINE NO-GAP.
    WRITE : 14(4) GT_DATA-CARRID, SY-VLINE NO-GAP.
    WRITE : 20(18) 'Connection Number', SY-VLINE NO-GAP.
    WRITE : 40(4) GT_DATA-CONNID, SY-VLINE NO-GAP.
    WRITE : 46(12) 'Flight date', SY-VLINE NO-GAP.
    WRITE : 60(12) GT_DATA-FLDATE, SY-VLINE NO-GAP.
    WRITE : 74(10) 'Air Fare', SY-VLINE NO-GAP.
    WRITE : 86(11) GT_DATA-PRICE, SY-VLINE NO-GAP.
    WRITE : 100(15) 'Local currency', SY-VLINE NO-GAP.
    WRITE : 116(3) GT_DATA-CURRENCY, SY-VLINE NO-GAP.
    WRITE:/(120) SY-ULINE.

  ENDLOOP.

 

2) WRITE OPTION

NO-ZERO 0을 출력하지 않음 * TYPE C인 경우 SPACE
NO-SIGN 부호 조회하지 않음
DD/MM/YY TYPE D 날짜 포맷 변경함 YY=YEAR MM =MONTH DD=DAY
CURRENCY W W에 정의된 통화 형식으로 금액 필드 값 나타냄
DECIMALS D 소수점 자릿수 조절(TYPE I,P,F)에서 사용
ROUND R R 수만큼 10진수는 10의 R승 이동함
UNIT U U에 정의된 단위 따라 출력 값의 포맷 결정
EXPONENT E E만큼 지수 설정하여 보여줌
LEFT-JUSTIFIED 왼쪽 정렬
RIGHT-JUSTIFIED 오른쪽 정렬
CENTERED 중앙정렬
NO-GAP 필드 사이 공백없어줌
USING EDIT MASK MASK USING NO EDIT MASK 사용자 정의한 포맷으로 화면에 보여줌

 

C 변수 길이 왼쪽정렬
D 8 "
F 22 오른쪽 정렬
I 11 "
N 변수길이 (LEN) 왼쪽정렬
P 2*LEN OR 2*LEN+1 오른쪽정렬
T 6 왼쪽정렬
X 2*LEN "
DATA: L_1 TYPE P DECIMALS 3 VALUE '0.000',
      L_2 TYPE P DECIMALS 3 VALUE '-1.234',
      L_3 TYPE D VALUE '20151231',
      L_4 TYPE P VALUE '1000',
      L_5 TYPE P DECIMALS 3 VALUE '1.234',
      L_6 TYPE P DECIMALS 3 VALUE '1.678',
      L_7 TYPE P DECIMALS 3 VALUE '1000',
      L_8 TYPE F VALUE '12345667789',
      L_9 TYPE D VALUE '20151231',
      L_10 TYPE D VALUE '20151231',
      L_12(1) TYPE C VALUE 'ALIGN',
      L_11(8) TYPE C VALUE 'YYYYMMDD'.


WRITE : / 'L_1', L_1, l_1 nO-ZERO.
WRITE : / 'L_2', L_2, l_2 nO-SIGN.
WRITE : / 'L_3', L_3, l_3 DD/MM/YY, l_3 DDMMYY.
WRITE : / 'L_4', L_4, l_4 CURRENCY 'USA'..
WRITE : / 'L_5', L_5, l_5 DECIMALS 2.
WRITE : / 'L_6', L_6, l_6 ROUND 2, L_6 ROUND -2.
WRITE : / 'L_7', L_7, l_7 UNIT 'STD', L_7 UNIT 'KM'.
WRITE : / 'L_8', L_8, l_8 EXPONENT 2.

 

3) WRITE OUTPUT 포맷

COLOR N [ON] OR ... COLOR OF 필드 색상 변경한다
-BACKGROUND
OFF = COL_BACKGROUND
-HEADERS (색상 : GRAISH BLUE)
1. =COL_HEADING
-LIST BODY (색상 : BRIGHT GRAY)
2. =COL_TOTAL
-KEY COLUMNS(색상 : BLUISH GREEN)
3. =COL_NORMAL
- TOTALS(색상 : YELLOW)
4. =COL_KEY
- POSITIVE THRESHOLD VALUE(색상 : GREEN)
5. =COL_POSITIVE
- NEGATIVE THRESOLD VALUE(색상 : RED)
6. =COL_NEGATIVE
- CONTROL LEVELS (색상 : VIOLET)
7. =COL_GROUP
INTENSIFIED [ON] OR. INTENSIFIED OFF 색상이 강조됨(색상 BLUE)
INVERSE [ON] INVERSE OFF 색상이 반전됨
HOTSPOT [ON] HOTSPOT OFF HOTSPOT 기능 활성화(클릭 = 더블클릭)
INPUT [ON] INPUT OFF 입력필드로 변환함
HOTSPOT과 같은 동작 작동X
RESET 다음 구문과 같은 효과 불러옴
FORMAT COLOR OFF INTENSIFIED OFF INVERSE OFF HOTSPOT OFF INPUT OFF.
DATA : l_color  TYPE char25 VALUE 'Color Test'.
DATA : l_intens  TYPE char25 VALUE 'Intensified test'.
DATA : l_inverse  TYPE char25 VALUE 'Inverse test'.
DATA : l_hotspot  TYPE char25 VALUE 'Hotspot test'.
DATA : l_input  TYPE char25 VALUE 'Input Test'.
DATA : l_frame  TYPE char25 VALUE 'Frame test'.

FORMAT COLOR COL_HEADING ON.
WRITE : / l_color.
FORMAT COLOR OFF.

FORMAT INTENSIFIED ON.
WRITE : / l_intens.
FORMAT INTENSIFIED OFF.

FORMAT INVERSE  ON .
WRITE : / l_inverse.
FORMAT INVERSE OFF.

FORMAT HOTSPOT  ON .
WRITE : / l_hotspot.
FORMAT HOTSPOT OFF.

FORMAT INPUT  ON .
WRITE : / l_input.
FORMAT INPUT OFF.

FORMAT FRAMES  ON .
WRITE : / l_frame.
FORMAT FRAMES OFF.

FORMAT RESET.

 

4. WRITE AS CHECKBOX

리스트의 필드를 체크박스로 보여준다. GUI STATUS 'CHECK'생성후 실습 따라하기

**12-25

DATA : gv_box(1) TYPE c,
       gv_lines TYPE i,
       gv_num(1) TYPE c.

DO 5 TIMES.
  gv_num = sy-index.
  WRITE: / gv_box AS CHECKBOX, 'Line NO: ', gv_num.
  HIDE: gv_box, gv_num.
ENDDO.

gv_lines = sy-linno.

TOP-OF-PAGE.
  WRITE  'After selecting a checkbox, double click'.
  ULINE.

AT LINE-SELECTION.
  DO gv_lines TIMES.
    READ LINE sy-index FIELD VALUE gv_box.
    if gv_box = 'X'.
       MODIFY LINE sy-index
              FIELD VALUE  gv_box
              FIELD FORMAT gv_box INPUT OFF
                           gv_num COLOR 7 INVERSE ON.
    ENDIF.
  ENDDO.

 

 

5. WRITE AS SYMBOL

 

IST필드를 심볼로 보여준당

INCLUDE <SYMBOL>.


WRITE: SYM_RIGHT_HAND AS SYMBOL,
       'Enjoy ABAP',
       SYM_LEFT_TRIANGLE AS SYMBOL.

심볼의 종류 알고자 할 때는 ABAP EDITOR를 조회 모드로 변경한후 ,INCLUDE <SYMBOL>구문 더블 클릭하고, TYPE-POOLS : SYM 다시 더블클릭하여 TYPE GROUP을 조회하면 된다. 포괄적 기능 사용하고자하면 INCLUDE<LIST>구문 사용하여도됨.

WRITE: / '  ' AS SYMBOL, 10 '''  ''', 20 'sym_space',

          / '! ' AS SYMBOL, 10 '''! ''', 20 'sym_plus_box',

          / '" ' AS SYMBOL, 10 '''" ''', 20 'sym_minus_box',

          / '# ' AS SYMBOL, 10 '''# ''', 20 'sym_plus_circle',

          / '$ ' AS SYMBOL, 10 '''$ ''', 20 'sym_minus_circle',

          / '% ' AS SYMBOL, 10 '''% ''', 20 'sym_filled_square',

          / '& ' AS SYMBOL, 10 '''& ''', 20 'sym_half_filled_square',

          / ''' ' AS SYMBOL, 10 ''''' ''', 20 'sym_square',

          / '( ' AS SYMBOL, 10 '''( ''', 20 'sym_filled_circle',

          / ') ' AS SYMBOL, 10 ''') ''', 20 'sym_half_filled_circle',

          / '* ' AS SYMBOL, 10 '''* ''', 20 'sym_circle',

          / '+ ' AS SYMBOL, 10 '''+ ''', 20 'sym_filled_diamond',

          / ', ' AS SYMBOL, 10 ''', ''', 20 'sym_diamond',

          / '. ' AS SYMBOL, 10 '''. ''', 20 'sym_bold_x',

          / '/ ' AS SYMBOL, 10 '''/ ''', 20 'sym_note',

          / '0 ' AS SYMBOL, 10 '''0 ''', 20 'sym_document',

          / '1 ' AS SYMBOL, 10 '''1 ''', 20 'sym_checked_document',

          / '2 ' AS SYMBOL, 10 '''2 ''', 20 'sym_documents',

          / '3 ' AS SYMBOL, 10 '''3 ''', 20 'sym_folder',

          / '4 ' AS SYMBOL, 10 '''4 ''', 20 'sym_plus_folder',

          / '5 ' AS SYMBOL, 10 '''5 ''', 20 'sym_minus_folder',

          / '6 ' AS SYMBOL, 10 '''6 ''', 20 'sym_open_folder',

          / '7 ' AS SYMBOL, 10 '''7 ''', 20 'sym_bold_minus',

          / '8 ' AS SYMBOL, 10 '''8 ''', 20 'sym_bold_plus',

          / '9 ' AS SYMBOL, 10 '''9 ''', 20 'sym_checkbox',

          / ': ' AS SYMBOL, 10 ''': ''', 20 'sym_radiobutton',

          / '; ' AS SYMBOL, 10 '''; ''', 20 'sym_left_triangle',

          / '< ' AS SYMBOL, 10 '''< ''', 20 'sym_right_triangle',

          / '= ' AS SYMBOL, 10 '''= ''', 20 'sym_up_triangle',

          / '> ' AS SYMBOL, 10 '''> ''', 20 'sym_down_triangle',

          / '? ' AS SYMBOL, 10 '''? ''', 20 'sym_left_hand',

          / 'A ' AS SYMBOL, 10 '''A ''', 20 'sym_1 sym_left_arrow',

          / 'B ' AS SYMBOL, 10 '''B ''', 20 'sym_1 sym_right_arrow',

          / 'C ' AS SYMBOL, 10 '''C ''', 20 'sym_1 sym_up_arrow',

          / 'D ' AS SYMBOL, 10 '''D ''', 20 'sym_1 sym_down_arrow',

          / 'E ' AS SYMBOL, 10 '''E ''', 20 'sym_1 sym_check_mark',

          / 'F ' AS SYMBOL, 10 '''F ''', 20 'sym_1 sym_pencil',

          / 'G ' AS SYMBOL, 10 '''G ''', 20 'sym_2 sym_glasses',

          / 'H ' AS SYMBOL, 10 '''H ''', 20 'sym_1 sym_locked',

          / 'I ' AS SYMBOL, 10 '''I ''', 20 'sym_1 sym_unlocked',

          / 'J ' AS SYMBOL, 10 '''J ''', 20 'sym_2 sym_phone',

          / 'K ' AS SYMBOL, 10 '''K ''', 20 'sym_2 sym_printer',

          / 'L ' AS SYMBOL, 10 '''L ''', 20 'sym_2 sym_fax',

          / 'M ' AS SYMBOL, 10 '''M ''', 20 'sym_1 sym_asterisk',

          / 'N ' AS SYMBOL, 10 '''N ''', 20 'sym_2 sym_right_hand',

          / 'O ' AS SYMBOL, 10 '''O ''', 20 'sym_2 sym_sorted_up',

          / 'P ' AS SYMBOL, 10 '''P ''', 20 'sym_2 sym_sorted_down',

          / 'Q ' AS SYMBOL, 10 '''Q ''', 20 'sym_2 sym_cumulated',

          / 'R ' AS SYMBOL, 10 '''R ''', 20 'sym_delete',

          / 'S ' AS SYMBOL, 10 '''S ''', 20 'sym_executable',

          / 'T ' AS SYMBOL, 10 '''T ''', 20 'sym_workflow_item',

          / 'U ' AS SYMBOL, 10 '''U ''', 20 'sym_caution',

          / 'V ' AS SYMBOL, 10 '''V ''', 20 'sym_flash',

           / 'W ' AS SYMBOL, 10 '''W ''', 20 'sym_large_square'.

 

6) WRITE AS ICON

LIST 필드를 아이콘으로 보여준다. AS ICON구문 사용하려면 INCLUDE<ICON>또는 INCLUDE<LIST>구문 사용해야함

INCLUDE <icon>.

 

WRITE: / 'Graphic ICON', icon_graphics AS ICON,

       / 'Alarm ICON:   ', icon_alarm AS ICON.

T-CODE SE11에서 ICON 테이블 데이터 리스트를 조회할 수 있슴다

7) WRITE AS LINE

기본적인 수평선 /수직선 외 라인 출력 가능

INCLUDE <line>.

 

TOP-OF-PAGE.

  WRITE : 'Line Test'.

  ULINE.

 

START-OF-SELECTION.

  ULINE /1(50).

  WRITE: / sy-vline NO-GAP.

  WRITE: / line_top_left_corner AS LINE.

8) WRITE AS QUICK INFO

QUICK INFO 선언된 필드 위에 마우스 커서 놓이면 정보가 보임

INCLUDE <LIST>는 INCLUDE<SYMBOL> <ICON> <LINES><COLORS>포함한다.

INCLUDE <list>.

DATA: gv_info(20) VALUE 'This is Quick Info.'.

 

TOP-OF-PAGE.

  WRITE : 'Quickinfo Test'.

  Uline.

 

START-OF-SELECTION.

WRITE : / icon_information AS ICON

QUICKINFO gv_info .

  WRITE : / 'Take a mouse on the Quickinfo Icon'.

 

1. NEW-PAGE : 새페이지 생성
2. NEW-LINE : 줄바꿈(=WRITE 문장의 슬래시 (/)
3. SKIP <N> : BLANK LINE <N>번 출력
4. RESERVE <N> LINES : 현재 페이지에 최소 <N>만큼 여유 없다면 자동으로 PAGE FEED 생성
5. BACK : RESERVE 다음에 사용시 커서 위치 RESERVE 문장 전의 위치로 이동
6.  POSITION <N> : COLUMN 상의 커서 위치 지정
7. SET BLANK LINES OFF : BLANK LINE 출력(삭제) 기본은 ON

 

CALLING PROGRAM

타프로그램 호출 후 복귀X SUBMIT LEAVE TO TRANSACTION
타 프로그램 호출 후 복귀 O SUBMIT AND RETURN CALL TRANSACTION

- TYPE-1 프로그램이 다른 프로그램의해 호출시 LOAD-OF-PROGRAM 이벤트 자동수행 됨

- 클래스 CONSTRUCTOR METHOD와 유사한 기능으로 수행 리포트 프로그램 첫 수행되는 INITIALIZATION 이벤트 전 사용

- 실행가능 프로그램 은 SUBMIT구문에 암묵적 포함하고 있다는것을 의미

- SUBMIT AND RETURN과 CALL TRANSACTION 구문 이용 다른 프로그램 호출 후 프로그램 빠져 나오면 호출한 프로그램에서 해당 구문 바로 다음 라인이 수행된다.

SUBMIT과 AND RETURN 함께 사용하면 된다.

REPORT ZTEST.
SUBMIT 'PROGRAM' AND RETURN.
IMPORT G_CARRID FROM MEMORY ID 'T_CID'.

 

1, 리포트 프로그램 호출

 TYPE-1 프로그램은 다음 구문과 같이 SUBMIT 구문으로 호출가능

SUBMIT <REP>|<FIELD> AND RETURN <OTPIONS>.

프로그램 호출 시 소스코드 레벨에서 직접 프로그램이름 입력하여 정적으로 지정할 수도 있고, '(프로그램 이름)'과 같이 괄호 사용해 동적으로 호출할 수도 있다.

시스템이 SUBMIT 구문 수행 적절한 프로그램 찾지 못하면 RUNTIME에러 발생함 그리고 AND RETURN 구문 사용하지 않으면 호출 프로그램 모든 데이터 리스트 삭제된다.

AND RETURN 구문 사용시 시스템 데이터 스택 저장하고 있다가 원래 프로그램으로 돌아오게 함.

 

1) 리포트 프로그램 호출과 SELECTION SCREEN

TYPE-1 프로그램 실행하게 되면 일반적으로 PARAMETERS와 SELECT-OPTION을 포함하는 표준 SELECTION SCREEN이 화면에 조회된다.

SUBMIT 구문 이용하여 SELECTION SCREEN입력 필드 값 채우는 다양한 옵션 수행 가능

 SELECTION-SCREEN 호출된 프로그램의 SELECTION SCREEN 화면이 나타남
이 구문 사용하지 않으면 SELECTION SCREEN 화면 보이지 않고 바로 호출된 프로그램 실행
USING SELECTION-SET <VAR> 호출된 프로그램 VARIANT사용하여 호출가능
WITH P OP F SIGN S SELECTIONS CREEN 구성요소에 값을 채우게 됨
WITH FREE SELECTION FREESEL 동적인 SELECTION 가능하며, 호출된 프로그램 LDB에 연결
WITH SELECTION-TABLE RSPAR RSPARAMS 구조체 이용 인터널 테이블 활용해 호출된 프로그램 SELECTION SCREEN입력값 동적으로 채울수 있음
INCLUDE ZREPORT01TOP.

*12-31
TABLES: SFLIGHT.
DATA: GT_SELTAB TYPE TABLE OF RSPARAMS WITH HEADER LINE.
DATA : GS_REPORT(40) TYPE C.

GS_REPORT = 'Z12_01'.

CLEAR GT_SELTAB.
GT_SEltAB-SELNAME = 'SEL_CARR'.
GT_SELTAB-KIND = 'S'.
GT_SELTAB-SIGN ='I'.
GT_SELTAB-OPTION ='EQ'.
GT_SELTAB-LOW = 'AA'.
APPEND GT_SELTAB.

SUBMIT (GS_REPORT) WITH SELECTION-TABLE GT_SELTAB.

2) 호출된 프로그램 리스트 설정

호출된 프로그램은 REPORT 구문이 존재하지 않기 때문에 LIST라인 수와 같은 포맷 설정 불가능

SUBMIT구문 이용하여 호출된 프로그램 LIST구조 변경가능

SUBMIT... [LINE-SIZE <WIDTH>] [LINE-COUNT <LENGTH>].
REPORT  z12_32.

DATA: gv_name(8) VALUE 'Z12_33',
      gv_wid TYPE i VALUE 40,
      gv_len TYPE i VALUE 0.

DATA : gt_seltab TYPE TABLE OF rsparams WITH HEADER LINE.

START-OF-SELECTION.
  WRITE: 'Double Click List',
    / '-------------------------'.

END-OF-SELECTION.
  WRITE: / 'Report     ',    gv_name INPUT ON,
         / 'Line size  ',    gv_wid  ,
         / 'Page LENgth',    gv_len  .

AT LINE-SELECTION.
  SUBMIT (gv_name) WITH SELECTION-TABLE gt_seltab
  LINE-SIZE gv_wid LINE-COUNT gv_len AND RETURN.

2. 트랜잭션 호출

LEAVE TO TRANSACTION TCOD [AND SKIP FIRST SCREEN].

호출한 프로그램 종료하고 새 프로그램 수행한다. 호출된 프로그램 종료하게 되면 처음 실행된 메뉴 화면으로 돌아간다.

LEAVE 구문은 COMMAND 창에서 /N+T-CODE 입력한 것과같은 효과가 있다.

CALL TRANSACTION TCOD [AND SKIP FIRST SCREEN].

LEAVE PROGRAM 구문 만나 호출된 프로그램 빠져 나오면 호출한 프로그램으로 되돌아간다.

AND SKIP FIRST SCREEN 옵션 메모리 파라미터 이용

SELECTION SCREEN 건너뛰고 바로 OUTPUT LIST조회되도록함

728x90

'공부 > SAP' 카테고리의 다른 글

constants || data, TYPE Pool 설명  (0) 2024.01.29
ALV 파라미터 (메서드 )  (1) 2024.01.24
ALV GRID 만들기  (1) 2024.01.24
SAP 단축키  (0) 2023.01.02