(ABAP 코드) SAP Memory
- Program 1
*&---------------------------------------------------------------------*
*& 데이터 선언부
*&---------------------------------------------------------------------*
TABLES: SPFLI.
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 EQ @P_CARRID.
IF SY-SUBRC <> 0.
MESSAGE E555(BC400) WITH '해당 항공사 코드에 대한 데이터가 존재하지 않습니다.'.
ENDIF.
*&---------------------------------------------------------------------*
*&START-OF-SELECTION.
*&---------------------------------------------------------------------*
START-OF-SELECTION.
* SAP MEMORY ID 'CAR'에 유저로 부터 받은 항공사코드를 저장 함.
SET PARAMETER ID 'CAR' FIELD P_CARRID.
** Transaction 이동 옵션 --------------------------------------------------------------------------------------------------
** LEAVE TO TRANSACTION { Transaction } - Transaction으로 이동 후, 현재 프로그램은 종료 됨.
** LEAVE TO TRANSACTION { Transaction } AND SKIP FIRST SCREEN - Transaction으로 이동하지만, SELECTION-SCREEN을 건너 뛰고 실행 함.
** 현재 프로그램은 종료 됨.
** CALL TRANSACTION { Transaction } - Transaction으로 이동 후, 현재 프로그램으로 복귀 함.
** CALL TRANSACTION { Transaction } AND SKIP FIRST SCREEN - Transaction으로 이동하지만, SELECTION-SCREEN을 건너 뛰고 실행 함.
** 현재 프로그램으로 복귀 함.
** ----------------------------------------------------------------------------------------------------------------------
** CALL TRANSACTION으로 이동.-----------------------------------------------------------------------------------------------
* 1.
*LEAVE TO TRANSACTION 'ZBD2_SAP_MEMORY_02'.
* 2.
*LEAVE TO TRANSACTION 'ZBD2_SAP_MEMORY_02'
*AND SKIP FIRST SCREEN.
* 3.
*CALL TRANSACTION 'ZBD2_SAP_MEMORY_02'.
* 4.
CALL TRANSACTION 'ZBD2_SAP_MEMORY_02'
AND SKIP FIRST SCREEN.
WRITE:/ 'ZBD2_SAP_MEMORY_01 프로그램!'.
SKIP.
WRITE:/ 'ZBD2_SAP_MEMORY_02 Trasnaction으로부터 복귀 함.'.
- Program 2
*&---------------------------------------------------------------------*
*& 데이터 선언부
*&---------------------------------------------------------------------*
TABLES: spfli.
DATA: gs_itab TYPE spfli,
gt_itab TYPE TABLE OF spfli.
*&---------------------------------------------------------------------*
*& SELECTION SCREEN (PARAMETERS / SELECT-OPTIONS) 선언부
*&---------------------------------------------------------------------*
PARAMETERS: p_carid2 TYPE spfli-carrid.
*&---------------------------------------------------------------------*
*&INITIALIZATION.
*&---------------------------------------------------------------------*
INITIALIZATION.
* SAP MEMORY ID 'CAR'에 저장된 PARAMETER 값을 P_CARID2에 저장.
GET PARAMETER ID 'CAR' FIELD p_carid2.
*&---------------------------------------------------------------------*
*&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_carid2.
IF sy-subrc <> 0.
MESSAGE e555(bc400) WITH '해당 항공사 코드에 대한 데이터가 존재하지 않습니다.'.
ENDIF.
*&---------------------------------------------------------------------*
*&START-OF-SELECTION.
*&---------------------------------------------------------------------*
START-OF-SELECTION.
* SPFLI테이블에 데이터를 GT_ITAB으로 이동 (P_CARID2 기준).
SELECT * FROM spfli
INTO TABLE @gt_itab
WHERE carrid = @p_carid2.
* GT_ITAB에 있는 데이터 출력.
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.