CLASS lcl_airline DEFINITION. PUBLIC SECTION. METHODS: constructor IMPORTING iv_carrid TYPE scarr-carrid, get_info EXPORTING ev_info TYPE string. PRIVATE SECTION. DATA: carrid TYPE scarr-carrid, carrname TYPE scarr-carrname. ENDCLASS.Public Section:
- constructor: 객체 생성 시 호출되는 생성자 메서드. iv_carrid를 받아 객체의 carrid 필드를 초기화합니다.
- get_info: 항공사 정보를 문자열로 반환하는 메서드입니다.
Private Section:
CLASS lcl_airline IMPLEMENTATION. METHOD constructor. me->carrid = iv_carrid. SELECT SINGLE carrname FROM scarr INTO me->carrname WHERE carrid = me->carrid. ENDMETHOD. * METHOD get_info. ev_info = me->carrid && ':' && me->carrname. ENDMETHOD. ENDCLASS.Constructor:
- me->carrid = iv_carrid. : 전달받은 iv_carrid 값을 클래스의 carrid 필드에 저장합니다.
- scarr 테이블에서 carrid 에 해당하는 carrname(항공사 이름)을 조회하여 carrname 필드에 저장합니다.
get_info:- ev_info = me->carrid && ':' && me->carrname.:
carrid와 carrname을 결합하여 ev_info에 반환합니다. && 연산자는 문자열을 연결합니다.
DATA go_air01 TYPE REF TO lcl_airline. DATA go_air02 LIKE go_air01. DATA gv_info TYPE string.
- go_air01과 go_air02는 lcl_airline 클래스를 참조하는 객체 변수입니다.
- gv_info는 문자열을 저장할 변수로, get_info 메서드에서 반환된 정보를 담기 위해 사용됩니다.
START-OF-SELECTION. CREATE OBJECT go_air01 EXPORTING iv_carrid = 'AA'. CREATE OBJECT go_air02 EXPORTING iv_carrid = 'UA'.객체 생성:
- go_air01 객체를 생성하면서 iv_carrid = 'AA'를 전달합니다.
이 값은 carrid 필드에 저장되고, carrname 필드는 scarr 테이블에서 'AA'에 해당하는 이름을 조회하여 저장됩니다.- go_air02 객체도 같은 방식으로 생성되며, 'UA'라는 항공사 ID를 가지고 있습니다.
CLEAR gv_info. CALL METHOD go_air01->get_info IMPORTING ev_info = gv_info. WRITE gv_info.get_info 메서드 호출 및 출력:
go_air01->get_info를 호출하여 gv_info에 항공사 정보를 저장합니다.
WRITE gv_info.는 'AA'와 관련된 항공사 정보를 출력합니다.
NEW-LINE. CLEAR gv_info. go_air02->get_info( IMPORTING ev_info = gv_info ). WRITE gv_info.NEW-LINE으로 줄바꿈 후 go_air02 객체의 정보를 같은 방식으로 출력합니다.
WRITE go_air01->carrid. 이렇게 private을 그냥 볼 수는 없다.
WRITE go_air01->carrid.는 불가능합니다.
그 이유는 carrid 필드가 클래스의 PRIVATE SECTION에 정의되어 있기 때문입니다.
ABAP에서는 PRIVATE SECTION에 정의된 데이터는 클래스 외부에서 직접 접근할 수 없습니다.
go_air01->carrid와 같은 접근은 클래스 내부에서만 가능합니다.