- PROGRAM - 1
*&---------------------------------------------------------------------*
*& 데이터 선언부
*&---------------------------------------------------------------------*
DATA: GS_ITAB TYPE SPFLI,
GT_ITAB TYPE TABLE OF SPFLI.
*&---------------------------------------------------------------------*
*& SELECTION SCREEN (PARAMETERS / SELECT-OPTIONS) 선언부
*&---------------------------------------------------------------------*
PARAMETERS: P_CARRID TYPE SPFLI-CARRID.
*&---------------------------------------------------------------------*
*&INITIALIZATION.
*&---------------------------------------------------------------------*
INITIALIZATION.
*&---------------------------------------------------------------------*
*&AT SELECTION-SCREEN OUTPUT.
*&---------------------------------------------------------------------*
AT SELECTION-SCREEN OUTPUT.
*&---------------------------------------------------------------------*
*&AT SELECTION-SCREEN.
*&---------------------------------------------------------------------*
AT SELECTION-SCREEN.
* User가 입력한 항공사 코드가 SPFLI테이블에 존재하지 않을 경우, 메시지를 띄우고 더이상 진행하지 않음.
SELECT SINGLE *
INTO @GS_ITAB
FROM SPFLI
WHERE CARRID = @P_CARRID.
IF SY-SUBRC <> 0.
MESSAGE E555(BC400) WITH '해당 항공사 코드에 대한 데이터가 존재하지 않습니다.'.
ENDIF.
*&---------------------------------------------------------------------*
*&START-OF-SELECTION.
*&---------------------------------------------------------------------*
START-OF-SELECTION.
* SPFLI테이블에 있는 모든 데이터를 GT_ITAB으로 이동.
SELECT * FROM SPFLI
INTO TABLE @GT_ITAB
WHERE CARRID = @P_CARRID.
* GT_ITAB을 ABAP Memory 'MM_ID'로 EXPORT (ABAP Memory에 저장!).
EXPORT M_SPFLI_DATA = GT_ITAB[]
TO MEMORY ID 'MM_ID'.
** SUBMIT 옵션 ---------------------------------------------------------------------------------------------------------
** SUBMIT { PROGRAM 이름 } RETURN - 다른프로그램으로 이동했다가 다시 돌아옴.
** SUBMIT { PROGRAM 이름 } VIA SELECTION-SCREEN - 다른프로그램으로 이동할 때, SELECTION-SCREEN 화면을 거쳐서 이동.
** SUBMIT { PROGRAM 이름 } VIA SELECTION-SCREEN AND RETURN - 다른프로그램으로 이동할 때, SELECTION- SCREEN 화면을 거쳐서 이동 후,
** 현재프로그램으로 복귀 함.
** SUBMIT { PROGRAM 이름 } VIA SELECTION-SCREEN AND RETURN WITH V1 EQ V2
** - 이동하는 프로그램의 SELECTION-SCREEN의 PARAMETER에 현재 프로그램의 V2값을 셋팅해줌.
** 이동하는 프로그램의 변수의 이름과 WITH 다음에 나오는 V1가 동일해야 함!
** 현재프로그램으로 복귀 함.
** ----------------------------------------------------------------------------------------------------------------------
** SUBMIT을 통해 다른 프로그램으로 이동.-----------------------------------------------------------------------------------------
** 하나씩 실행해 보자!
** 1.
*SUBMIT ZBD2_ABAP_MEMORY_02.
** 2.
*SUBMIT ZBD2_ABAP_MEMORY_02 AND RETURN.
** 3.
SUBMIT ZBD2_ABAP_MEMORY_02 VIA SELECTION-SCREEN
WITH P_CARRID2 EQ P_CARRID.
* 4.
*SUBMIT ZBD2_ABAP_MEMORY_02 VIA SELECTION-SCREEN AND RETURN
* WITH P_CARRID2 EQ P_CARRID.
* ZBD_ABAP_MEMORY_02 를 실행하고 다시 돌아올 경우에(RETURN) 실행 된다.
WRITE:/ 'ZBD2_ABAP_MEMORY_01 프로그램'.
SKIP.
WRITE:/ 'ZBD2_ABAP_MEMORY_02 프로그램으로 이동 후, 복귀 함.'.
- PROGRAM - 2
*&---------------------------------------------------------------------*
*& 데이터 선언부
*&---------------------------------------------------------------------*
DATA: GS_ITAB TYPE SPFLI,
GT_ITAB TYPE TABLE OF SPFLI.
*&---------------------------------------------------------------------*
*& SELECTION SCREEN (PARAMETERS / SELECT-OPTIONS) 선언부
*&---------------------------------------------------------------------*
PARAMETERS: P_CARRID TYPE SPFLI-CARRID.
*&---------------------------------------------------------------------*
*&INITIALIZATION.
*&---------------------------------------------------------------------*
INITIALIZATION.
* ABAP Memory 'MM_ID'에 저장 된 GT_ITAB을 IMPORT (ABAP Memory에서 가져 옴!).
IMPORT M_SPFLI_DATA = GT_ITAB[]
FROM MEMORY ID 'MM_ID'.
*&---------------------------------------------------------------------*
*&AT SELECTION-SCREEN OUTPUT.
*&---------------------------------------------------------------------*
AT SELECTION-SCREEN OUTPUT.
*&---------------------------------------------------------------------*
*&AT SELECTION-SCREEN.
*&---------------------------------------------------------------------*
AT SELECTION-SCREEN.
" User가 입력한 항공사 코드가 SPFLI테이블에 존재하지 않을 경우, 메시지를 띄우고 더이상 진행하지 않음.
SELECT SINGLE *
INTO @GS_ITAB
FROM SPFLI
WHERE CARRID = @P_CARRID.
IF SY-SUBRC <> 0.
MESSAGE E555(BC400) WITH '해당 항공사 코드에 대한 데이터가 존재하지 않습니다.'.
ENDIF.
*&---------------------------------------------------------------------*
*&START-OF-SELECTION.
*&---------------------------------------------------------------------*
START-OF-SELECTION.
WRITE:/ 'ZBD2_ABAP_MEMORY_02 프로그램'.
SKIP.
ULINE.
LOOP AT GT_ITAB INTO GS_ITAB.
WRITE:/
GS_ITAB-CARRID ,
GS_ITAB-CONNID ,
GS_ITAB-COUNTRYFR ,
GS_ITAB-CITYFROM ,
GS_ITAB-AIRPFROM ,
GS_ITAB-COUNTRYTO ,
GS_ITAB-CITYTO ,
GS_ITAB-AIRPTO ,
GS_ITAB-FLTIME ,
GS_ITAB-DEPTIME ,
GS_ITAB-ARRTIME ,
GS_ITAB-DISTANCE ,
GS_ITAB-DISTID ,
GS_ITAB-FLTYPE ,
GS_ITAB-PERIOD .
ENDLOOP.
'SAP > ABAP 코드' 카테고리의 다른 글
(ABAP 코드) New Open SQL - SELECT (CASE) (0) | 2021.06.25 |
---|---|
(ABAP 코드) SAP Memory (0) | 2021.06.23 |
(ABAP 코드) ABAP OPEN SQL 코드 (0) | 2021.06.13 |
(ABAP 코드) ABAP SQL QUERY (0) | 2021.06.13 |
(ABAP 코드) INTERNAL TABLE 코드 (0) | 2021.06.13 |