본문 바로가기

SAP셀프스터디/삼성에서 ERP로 먹고사는 컨설턴트가 알려주는 ABAP of SAP

Part 1 기본 프로그램 - 02. ABAP의 T코스(2/4)

최초 작성일: 25.09.02

최종 작성일: 25.09.02

*&---------------------------------------------------------------------*
*& Report ZSAP04
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZSAP05.
TABLES : SBOOK, SCUSTOM.
DATA : g_GRID1 TYPE REF TO cl_gui_alv_grid.
DATA : g_GRID2 TYPE REF TO cl_gui_alv_grid.
DATA : g_container1 TYPE REF TO cl_gui_custom_container.
DATA : g_container2 TYPE REF TO cl_gui_custom_container.
DATA : gt_sbook TYPE TABLE OF SBOOK.
DATA : gt_scustom TYPE TABLE OF Scustom.

SELECT-OPTIONS : S_CARRID FOR SBOOK-CARRID.
SELECT-OPTIONS : S_ID FOR Scustom-ID.

START-OF-SELECTION.
SELECT *
  FROM SBOOK
  WHERE CARRID IN @S_CARRID
  INTO table @gt_sbook.

START-OF-SELECTION.
SELECT *
  FROM Scustom
  WHERE ID IN @S_ID
  INTO table @gt_scustom.



END-OF-SELECTION.
  CALL SCREEN 100.
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
 SET PF-STATUS 'GUI_STATUS_001'.
 SET TITLEBAR 'GUI_TITLE_001'.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module PBO_0100 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE pbo_0100 OUTPUT.

CREATE OBJECT g_container1
EXPORTING
  container_name = 'CONTAINER1'.

CREATE OBJECT g_container2
EXPORTING
  container_name = 'CONTAINER2'.

CREATE OBJECT g_grid1
EXPORTING
  i_parent = g_container1.

CREATE OBJECT g_grid2
EXPORTING
  i_parent = g_container2.

CALL METHOD g_grid1->set_table_for_first_display
EXPORTING i_structure_name = 'sbook'
  CHANGING
    it_outtab = gt_sbook[].

CALL METHOD g_grid2->set_table_for_first_display
EXPORTING i_structure_name = 'scustom'
  CHANGING
    it_outtab = gt_scustom[].

ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  EXIT  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE exit INPUT.
LEAVE TO SCREEN 0.
ENDMODULE.

 

[1단계]스크린 100번에 물리적인 영역 표시인 커스텀 컨트롤 그리기

[2단계]그 기초 위에 커스텀 컨테이너 클래스(CL_GUI_CUSTOM_CONTAINER)를 참조한 g_container 객체를 생성하고 연결

MODULE pbo_0100 OUTPUT.

CREATE OBJECT g_container1
EXPORTING
  container_name = 'CONTAINER1'.

CREATE OBJECT g_container2
EXPORTING
  container_name = 'CONTAINER2'.


[3단계]다시 그 위에 그리드 형태의 리스트를 만들어줄 ALV Grid 객체 'g_grid'를 모자 관계로 묶어줌

CREATE OBJECT g_grid1
EXPORTING
  i_parent = g_container1.

CREATE OBJECT g_grid2
EXPORTING
  i_parent = g_container2.

[4단계]실제 alv grid의 구조를 만들고 데이터를 뿌려주는 'set_table_for_first_disply' 메서도를 호출함

CALL METHOD g_grid1->set_table_for_first_display
EXPORTING i_structure_name = 'sbook'
  CHANGING
    it_outtab = gt_sbook[].

CALL METHOD g_grid2->set_table_for_first_display
EXPORTING i_structure_name = 'scustom'
  CHANGING
    it_outtab = gt_scustom[].

 

*리스트를 2개 만들어야 한다면 객체를 2개씩 만들면 되고, alv grid가 아닌 다른 객체를 새용하고 싶다면 해당 클래스를 찾아서 객체를 만든 다음 유사한 방식으로 연결해주면 됨