TABLES: scarr. " DATA: scarr TYPE scarr와 같음.
SELECT-OPTIONS: so_carr FOR scarr-carrid.
" data object: field급이 나와야 함. so_carr: header line을 가진 internal table
SELECT *
FROM spfli
INTO TABLE @DATA(it1)
WHERE carrid IN @so_carr.
cl_demo_output=>display( it1 ).
TABLES: spfli.
SELECT-OPTIONS: so_carr FOR spfli-carrid,
so_conn FOR spfli-connid.
" so_carr, so_conn: header line을 가진 internal table
SELECT *
FROM spfli
INTO TABLE @DATA(it1)
WHERE carrid IN @so_carr
AND connid IN @so_conn.
cl_demo_output=>display( it1 ).
TABLES: spfli. " DATA: scarr TYPE scarr와 같음.
PARAMETERS: pa_date type sy-datum.
SELECT-OPTIONS: so_carr FOR spfli-carrid,
so_conn FOR spfli-connid.
INITIALIZATION.
pa_date = sy-datum.
START-OF-SELECTION.
SELECT *
FROM spfli
INTO TABLE @DATA(it1)
WHERE carrid IN @so_carr
AND connid IN @so_conn.
cl_demo_output=>display( it1 ).
initialization이 있으면 반드시 START-OF-SELECTION이 있어야 함.
initialization의 범위가 정해짐
INITIALIZATION.
pa_date = sy-datum.
pa_date+6(2) = '01'.
INITIALIZATION.
pa_date = sy-datum.
pa_date+6(2) = '01'.
pa_date = pa_date - 1.
TABLES: spfli. " DATA: scarr TYPE scarr와 같음.
PARAMETERS: pa_date TYPE sy-datum.
SELECT-OPTIONS: so_carr FOR spfli-carrid,
so_conn FOR spfli-connid.
INITIALIZATION.
pa_date = sy-datum.
pa_date+6(2) = '01'.
pa_date = pa_date - 1.
AT SELECTION-SCREEN. " 실제 스크인의 PAI. Enter 누르면 호출됨
pa_date = sy-datum.
IF sy-uname <> 'TRAIN-03'.
MESSAGE e002(zt_msg_03) WITH sy-uname.
ENDIF.
START-OF-SELECTION.
SELECT *
FROM spfli
INTO TABLE @DATA(it1)
WHERE carrid IN @so_carr
AND connid IN @so_conn.
cl_demo_output=>display( it1 ).
AT SELECTION-SCREEN
: 사용자가 입력을 완료한 후 호출되어, 입력값에 대한 검증이나 추가 처리를 수행합니다.AT SELECTION-SCREEN
은 PAI
이벤트의 일부로, PAI
처리 후에 입력 데이터의 검증을 추가로 처리하는 데 사용됩니다.A
(Abap Message): 프로그램을 중지하고 오류를 강제합니다.E
(Error Message): 오류를 경고하지만 프로그램은 계속 실행됩니다.W
(Warning Message): 경고를 표시하고 사용자에게 주의를 환기시킵니다.I
(Information Message): 정보를 제공하고 프로그램 실행에는 영향이 없습니다.S
(Success Message): 작업의 성공을 알립니다.X
(Exit Message): 메시지와 함께 프로그램을 종료합니다.module user_command_0100
screen 0100
PROCESS BEFORE OUTPUT.
MODULE STATUS_0100.
MODULE fill_scarr. " 데이터 처리는 PBO에 넣기
PROCESS AFTER INPUT.
MODULE USER_COMMAND_0100.
PROCESS BEFORE OUTPUT.
MODULE STATUS_0100.
MODULE fill_spfli.
PROCESS AFTER INPUT.
MODULE USER_COMMAND_0100.
REPORT zt_03_screen.
TABLES: scarr, spfli.
DATA: ok_code TYPE sy-ucomm.
START-OF-SELECTION.
CALL SCREEN 100.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'GO'.
CALL SCREEN 200.
ENDCASE.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module FILL_SCARR OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE fill_scarr OUTPUT.
select single *
from scarr
where carrid = scarr-carrid.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module FILL_SPFLI OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE fill_spfli OUTPUT.
select single *
from spfli
where carrid = scarr-carrid.
ENDMODULE.
select *
from spfli
into table @DATA(it1).
cl_salv_table=>factory(
IMPORTING
r_salv_table = DATA(GO_ALV)
CHANGING
t_table = it1
).
go_alv->display( ).
custom area
: 화면에서 ALV 그리드와 같은 컴포넌트를 배치할 수 있는 공간입니다. cl_gui_custom_container
: 화면에 사용자 정의 컨테이너를 생성합니다. 이 컨테이너는 ALV Grid와 같은 컴포넌트를 포함할 공간을 제공합니다.cl_gui_alv_grid
: ALV Grid를 생성하고, 데이터 표시 및 조작을 지원합니다. 데이터의 구조와 내용을 ALV Grid에 설정하고 표시합니다.PROCESS BEFORE OUTPUT.
MODULE create_object.
PROCESS AFTER INPUT.
MODULE user_command.
PROCESS BEFORE OUTPUT.
MODULE create_object.
PROCESS AFTER INPUT.
MODULE user_command.
REPORT zt_03_alv.
DATA: ok_code TYPE sy-ucomm.
DATA: go_container TYPE REF TO cl_gui_custom_container,
go_alv_grid TYPE REF TO cl_gui_alv_grid.
START-OF-SELECTION.
CALL SCREEN 200.
*&---------------------------------------------------------------------*
*& Module CREATE_OBJECT OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE create_object OUTPUT.
IF go_container IS INITIAL.
CREATE OBJECT go_container
EXPORTING
container_name = 'CONTROL_AREA_1'.
CREATE OBJECT go_alv_grid
EXPORTING
i_parent = go_container.
CASE sy-dynnr.
WHEN '0100'.
SELECT * FROM scarr INTO TABLE @DATA(it_scarr).
go_alv_grid->set_table_for_first_display(
EXPORTING
i_structure_name = 'SCARR'
CHANGING
it_outtab = it_scarr
).
WHEN '0200'.
SELECT * FROM spfli INTO TABLE @DATA(it_spfli).
go_alv_grid->set_table_for_first_display(
EXPORTING
i_structure_name = 'SPFLI'
CHANGING
it_outtab = it_spfli
).
ENDCASE.
ELSE.
go_alv_grid->refresh_table_display( ).
ENDIF.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command INPUT.
CASE ok_code.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE.
go_container
: ALV Grid를 표시할 컨테이너 객체를 참조하는 변수입니다.go_alv_grid
: ALV Grid 객체를 참조하는 변수입니다.