diff --git a/.abapgit.xml b/.abapgit.xml
new file mode 100644
index 0000000..7c0506a
--- /dev/null
+++ b/.abapgit.xml
@@ -0,0 +1,10 @@
+
+
+
+
+ E
+ /src/
+ PREFIX
+
+
+
diff --git a/src/package.devc.xml b/src/package.devc.xml
new file mode 100644
index 0000000..bae7bf8
--- /dev/null
+++ b/src/package.devc.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+ TEST
+
+
+
+
diff --git a/src/zcl_custom_amdp_table.clas.abap b/src/zcl_custom_amdp_table.clas.abap
new file mode 100644
index 0000000..aff39c7
--- /dev/null
+++ b/src/zcl_custom_amdp_table.clas.abap
@@ -0,0 +1,85 @@
+CLASS zcl_custom_amdp_table DEFINITION
+ PUBLIC
+ FINAL
+ CREATE PUBLIC .
+
+ PUBLIC SECTION.
+ INTERFACES if_amdp_marker_hdb.
+
+ TYPES:
+ BEGIN OF ty_result,
+ carrid TYPE s_carr_id,
+ connid TYPE s_conn_id,
+ fldate TYPE s_date,
+ price TYPE s_price,
+ currency TYPE s_currcode,
+ planetype TYPE s_planetye,
+ seatsmax TYPE s_seatsmax,
+ seatsocc TYPE s_seatsocc,
+ seatsfree TYPE s_seatsocc,
+ END OF ty_result,
+ tt_result TYPE STANDARD TABLE OF ty_result WITH EMPTY KEY.
+
+ " AMDP Procedure
+ CLASS-METHODS get_flights_proc
+ IMPORTING VALUE(iv_carrid) TYPE s_carr_id
+ EXPORTING VALUE(et_result) TYPE tt_result
+ RAISING cx_amdp_execution_error.
+
+ CLASS-METHODS get_flights
+ FOR TABLE FUNCTION ztf_sflight_amdp.
+
+ PROTECTED SECTION.
+ PRIVATE SECTION.
+ENDCLASS.
+
+
+
+CLASS zcl_custom_amdp_table IMPLEMENTATION.
+ METHOD get_flights_proc
+ BY DATABASE PROCEDURE
+ FOR HDB
+ LANGUAGE SQLSCRIPT
+ OPTIONS READ-ONLY
+ USING sflight.
+
+ et_result =
+ SELECT carrid,
+ connid,
+ fldate,
+ price,
+ currency,
+ planetype,
+ seatsmax,
+ seatsocc,
+ seatsmax - seatsocc AS seatsfree
+ FROM sflight
+ WHERE mandt = SESSION_CONTEXT('CLIENT')
+ AND carrid = :iv_carrid;
+ ENDMETHOD.
+
+ METHOD get_flights
+ BY DATABASE FUNCTION
+ FOR HDB
+ LANGUAGE SQLSCRIPT
+ OPTIONS READ-ONLY
+ USING sflight.
+
+ RETURN
+ select
+ mandt,
+ carrid,
+ connid,
+ fldate,
+ price,
+ currency,
+ planetype,
+ seatsmax,
+ seatsocc,
+ seatsmax - seatsocc AS seatsfree
+ FROM sflight
+ WHERE carrid = :p_carrid;
+
+ ENDMETHOD.
+
+ENDCLASS.
diff --git a/src/zcl_custom_amdp_table.clas.xml b/src/zcl_custom_amdp_table.clas.xml
new file mode 100644
index 0000000..2ac2f39
--- /dev/null
+++ b/src/zcl_custom_amdp_table.clas.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+ ZCL_CUSTOM_AMDP_TABLE
+ E
+ CDS Table Function
+ 1
+ X
+ X
+ X
+
+
+
+
diff --git a/src/ztest001.prog.abap b/src/ztest001.prog.abap
new file mode 100644
index 0000000..6b03f7d
--- /dev/null
+++ b/src/ztest001.prog.abap
@@ -0,0 +1,69 @@
+REPORT ztest001.
+
+TYPE-POOLS: slis.
+TABLES: sflight.
+
+DATA: lt_flight TYPE TABLE OF sflight,
+ ls_layout TYPE slis_layout_alv,
+ lt_fieldcat TYPE slis_t_fieldcat_alv,
+ ls_fieldcat TYPE slis_fieldcat_alv,
+ lv_variant TYPE disvariant-variant VALUE 'ZTEST_VAR',
+ ls_variant TYPE disvariant,
+ lv_msg TYPE string.
+
+* 데이터 조회 (최대 200건)
+SELECT * FROM sflight INTO TABLE lt_flight UP TO 200 ROWS.
+IF sy-subrc <> 0.
+ MESSAGE '데이터를 가져오지 못했습니다.' TYPE 'E'.
+ EXIT.
+ENDIF.
+
+* ALV 레이아웃 정의
+ls_layout-zebra = abap_true.
+* ls_layout-sel_mode = 'A'. " ← 오류 원인이므로 주석 처리, 필요하면 box_fieldname 등 활용
+* ls_layout-edit_mode = 'X'. " ← 필요 시 편집 가능 설정 (생략 가능)
+
+* 필드카탈로그 생성 (SELTEXT_M 사용)
+CLEAR lt_fieldcat.
+CLEAR ls_fieldcat.
+
+ls_fieldcat-fieldname = 'CARRID'.
+ls_fieldcat-seltext_m = 'Carrier ID'.
+APPEND ls_fieldcat TO lt_fieldcat.
+
+CLEAR ls_fieldcat.
+ls_fieldcat-fieldname = 'CONNID'.
+ls_fieldcat-seltext_m = 'Connection ID'.
+APPEND ls_fieldcat TO lt_fieldcat.
+
+CLEAR ls_fieldcat.
+ls_fieldcat-fieldname = 'FLDATE'.
+ls_fieldcat-seltext_m = 'Flight Date'.
+APPEND ls_fieldcat TO lt_fieldcat.
+
+CLEAR ls_fieldcat.
+ls_fieldcat-fieldname = 'PRICE'.
+ls_fieldcat-seltext_m = 'Price'.
+APPEND ls_fieldcat TO lt_fieldcat.
+
+* Variant 저장 설정
+ls_variant-report = sy-repid.
+ls_variant-variant = lv_variant.
+ls_variant-username = sy-uname.
+
+* ALV 그리드 호출
+CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
+ EXPORTING
+ i_callback_program = sy-repid
+ is_variant = ls_variant
+ it_fieldcat = lt_fieldcat
+ is_layout = ls_layout
+ TABLES
+ t_outtab = lt_flight
+ EXCEPTIONS
+ program_error = 1 MESSAGE lv_msg
+ OTHERS = 2.
+IF sy-subrc <> 0.
+ MESSAGE ID 'SAPLALV' TYPE 'E' NUMBER 002 WITH lv_msg.
+ENDIF.
+
diff --git a/src/ztest001.prog.xml b/src/ztest001.prog.xml
new file mode 100644
index 0000000..f595098
--- /dev/null
+++ b/src/ztest001.prog.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+ ZTEST001
+ 1
+ E
+ X
+ X
+
+
+ -
+ R
+ Program ZTEST001
+ 16
+
+
+
+
+
diff --git a/src/ztest002.prog.abap b/src/ztest002.prog.abap
new file mode 100644
index 0000000..dff86fa
--- /dev/null
+++ b/src/ztest002.prog.abap
@@ -0,0 +1,39 @@
+*&---------------------------------------------------------------------*
+*& Report ZTEST002
+*&---------------------------------------------------------------------*
+*&
+*&---------------------------------------------------------------------*
+REPORT ZTEST002.
+
+TYPES: BEGIN OF ty_tab,
+ key1 TYPE c LENGTH 1,
+ key2 TYPE c LENGTH 1,
+ val1 TYPE i,
+ val2 TYPE i,
+ END OF ty_tab.
+
+DATA: lt_tab1 TYPE TABLE OF ty_tab,
+ lt_tab2 TYPE TABLE OF ty_tab,
+ lt_all TYPE TABLE OF ty_tab,
+ lt_result TYPE TABLE OF ty_tab,
+ wa_tab TYPE ty_tab.
+
+lt_tab1 = VALUE #(
+ ( key1 = 'A' key2 = 'A' val1 = 100 val2 = 0 )
+ ( key1 = 'B' key2 = 'B' val1 = 500 val2 = 0 )
+ ).
+lt_tab2 = VALUE #(
+ ( key1 = 'A' key2 = 'A' val1 = 0 val2 = 500 )
+ ( key1 = 'C' key2 = 'C' val1 = 0 val2 = 300 )
+ ).
+
+" 두 테이블을 합침
+APPEND LINES OF lt_tab1 TO lt_all.
+APPEND LINES OF lt_tab2 TO lt_all.
+
+" COLLECT로 키 기준 합산
+LOOP AT lt_all INTO wa_tab.
+ COLLECT wa_tab INTO lt_result.
+ENDLOOP.
+
+BREAK-POINT.
diff --git a/src/ztest002.prog.xml b/src/ztest002.prog.xml
new file mode 100644
index 0000000..5c32de3
--- /dev/null
+++ b/src/ztest002.prog.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+ ZTEST002
+ 1
+ E
+ X
+ X
+
+
+ -
+ R
+ Program ZTEST002
+ 16
+
+
+
+
+
diff --git a/src/ztest003.prog.abap b/src/ztest003.prog.abap
new file mode 100644
index 0000000..284c9cd
--- /dev/null
+++ b/src/ztest003.prog.abap
@@ -0,0 +1,45 @@
+*&---------------------------------------------------------------------*
+*& Report ZTEST003
+*&---------------------------------------------------------------------*
+*&
+*&---------------------------------------------------------------------*
+REPORT ZTEST003.
+
+TYPES: BEGIN OF ty_tab,
+ key1 TYPE c LENGTH 1,
+ key2 TYPE c LENGTH 1,
+ val1 TYPE i,
+ val2 TYPE i,
+ END OF ty_tab.
+
+DATA: lt_tab1 TYPE TABLE OF ty_tab,
+ lt_tab2 TYPE TABLE OF ty_tab,
+ lt_all TYPE TABLE OF ty_tab,
+ lt_result TYPE TABLE OF ty_tab.
+
+lt_tab1 = VALUE #(
+ ( key1 = 'A' key2 = 'A' val1 = 100 val2 = 0 )
+ ( key1 = 'B' key2 = 'B' val1 = 500 val2 = 0 )
+ ).
+lt_tab2 = VALUE #(
+ ( key1 = 'A' key2 = 'A' val1 = 0 val2 = 500 )
+ ( key1 = 'C' key2 = 'C' val1 = 0 val2 = 300 )
+ ).
+
+" 두 테이블 합치기
+APPEND LINES OF lt_tab1 TO lt_all.
+APPEND LINES OF lt_tab2 TO lt_all.
+
+" GROUP BY로 key 기준 집계
+lt_result = VALUE #( FOR GROUPS g OF row IN lt_all
+ GROUP BY ( key1 = row-key1 key2 = row-key2 )
+ ( key1 = g-key1
+ key2 = g-key2
+ val1 = REDUCE i( INIT sum = 0
+ FOR rec IN GROUP g
+ NEXT sum = sum + rec-val1 )
+ val2 = REDUCE i( INIT sum = 0
+ FOR rec IN GROUP g
+ NEXT sum = sum + rec-val2 ) ) ).
+
+BREAK-POINT.
diff --git a/src/ztest003.prog.xml b/src/ztest003.prog.xml
new file mode 100644
index 0000000..30018de
--- /dev/null
+++ b/src/ztest003.prog.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+ ZTEST003
+ 1
+ E
+ X
+ X
+
+
+ -
+ R
+ Report ZTEST003
+ 15
+
+
+
+
+
diff --git a/src/ztest004.prog.abap b/src/ztest004.prog.abap
new file mode 100644
index 0000000..7d3984b
--- /dev/null
+++ b/src/ztest004.prog.abap
@@ -0,0 +1,23 @@
+*&---------------------------------------------------------------------*
+*& Report ZTEST004
+*&---------------------------------------------------------------------*
+*&
+*&---------------------------------------------------------------------*
+REPORT ZTEST004.
+
+data : container type ref to cl_gui_custom_container,
+ editor type ref to cl_gui_textedit.
+
+START-OF-SELECTION.
+
+CREATE OBJECT container
+ EXPORTING
+ container_name = 'TEXTEDIT'.
+
+
+CREATE OBJECT editor
+ EXPORTING
+ parent = container.
+
+
+call screen 0100.
diff --git a/src/ztest004.prog.xml b/src/ztest004.prog.xml
new file mode 100644
index 0000000..53b9abb
--- /dev/null
+++ b/src/ztest004.prog.xml
@@ -0,0 +1,80 @@
+
+
+
+
+
+ ZTEST004
+ 1
+ E
+ X
+ X
+
+
+ -
+
+ ZTEST004
+ 0100
+ E
+ test
+ N
+ 0100
+ 045
+ 249
+
+
+
+ SCREEN
+ SCREEN
+
+
+ CUST_CTRL
+ TEXTEDIT
+ SCREEN
+ 002
+ 001
+ 242
+ 043
+
+
+
+
+ SCREEN
+ SCREEN
+ OKCODE
+ ____________________
+ 020
+ 020
+ 001
+ CHAR
+ X
+
+
+
+
+ PROCESS BEFORE OUTPUT.
+
+
+ * MODULE STATUS_0100.
+
+
+ *
+
+
+ PROCESS AFTER INPUT.
+
+
+ * MODULE USER_COMMAND_0100.
+
+
+
+
+
+ -
+ R
+ Program ZTEST004
+ 16
+
+
+
+
+
diff --git a/src/ztest005.prog.abap b/src/ztest005.prog.abap
new file mode 100644
index 0000000..9ee86c3
--- /dev/null
+++ b/src/ztest005.prog.abap
@@ -0,0 +1,11 @@
+*&---------------------------------------------------------------------*
+*& Report ZTEST005
+*&---------------------------------------------------------------------*
+*&
+*&---------------------------------------------------------------------*
+REPORT ZTEST005.
+
+*INCLUDE .
+DATA: msg(40) value '2010년12월17일 눈오는 아침'.
+WRITE : / ICON_PERSONAL_HELP AS ICON QUICKINFO msg.
+*HOTSPOT COLOR COL_POSITIVE.
diff --git a/src/ztest005.prog.xml b/src/ztest005.prog.xml
new file mode 100644
index 0000000..0ff9bd1
--- /dev/null
+++ b/src/ztest005.prog.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+ ZTEST005
+ 1
+ E
+ X
+ X
+
+
+ -
+ R
+ Program ZTEST005
+ 16
+
+
+
+
+
diff --git a/src/ztest006.prog.abap b/src/ztest006.prog.abap
new file mode 100644
index 0000000..6fc9e7a
--- /dev/null
+++ b/src/ztest006.prog.abap
@@ -0,0 +1,21 @@
+*&---------------------------------------------------------------------*
+*& Report ZTEST006
+*&---------------------------------------------------------------------*
+*&
+*&---------------------------------------------------------------------*
+REPORT ztest006.
+
+*SELECT assetcode, waers, SUM( dep_amt ) AS dep_amt
+SELECT assetcode, aname, waers, seq_no, dep_amt
+ FROM zvtax0008
+ order by assetcode, seq_no
+ INTO TABLE @DATA(lt_tab)
+ .
+
+LOOP AT lt_tab INTO DATA(ls_tab).
+
+ WRITE : at 10(5) ls_tab-assetcode, at 30(100) ls_tab-aname,
+ at 70(3) ls_tab-seq_no,
+ ls_tab-dep_amt CURRENCY ls_tab-waers.
+ NEW-LINE.
+ENDLOOP.
diff --git a/src/ztest006.prog.xml b/src/ztest006.prog.xml
new file mode 100644
index 0000000..1d2abfa
--- /dev/null
+++ b/src/ztest006.prog.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+ ZTEST006
+ 1
+ E
+ X
+ X
+
+
+ -
+ R
+ Program ZTEST006
+ 16
+
+
+
+
+
diff --git a/src/ztest007.prog.abap b/src/ztest007.prog.abap
new file mode 100644
index 0000000..1310a9c
--- /dev/null
+++ b/src/ztest007.prog.abap
@@ -0,0 +1,42 @@
+*&---------------------------------------------------------------------*
+*& Report ZTEST007
+*&---------------------------------------------------------------------*
+*&
+*&---------------------------------------------------------------------*
+REPORT ztest007.
+
+TABLES: scarr.
+PARAMETERS: p_carrid LIKE scarr-carrid.
+
+INITIALIZATION.
+ CALL FUNCTION 'SWU_OBJECT_PUBLISH'
+ EXPORTING
+ objtype = 'ZMYGOS'
+ objkey = p_carrid.
+
+START-OF-SELECTION.
+
+ CLEAR: scarr.
+ SELECT SINGLE *
+ FROM scarr
+
+ WHERE carrid = p_carrid.
+
+ IF sy-subrc NE 0.
+ LEAVE LIST-PROCESSING.
+ ENDIF.
+
+END-OF-SELECTION.
+
+ WRITE:/ '항공사 정보'.
+ SKIP 1.
+
+ WRITE: /(10) '항공사명함수:',
+ 12(50) scarr-carrname.
+ WRITE: /(10) '홈페이지:',
+ 12(50) scarr-url.
+
+ CALL FUNCTION 'SWU_OBJECT_PUBLISH'
+ EXPORTING
+ objtype = 'ZMYGOS'
+ objkey = p_carrid.
diff --git a/src/ztest007.prog.xml b/src/ztest007.prog.xml
new file mode 100644
index 0000000..16c0c36
--- /dev/null
+++ b/src/ztest007.prog.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+ ZTEST007
+ 1
+ E
+ X
+ X
+
+
+ -
+ R
+ GOS 테스트
+ 7
+
+
+
+
+
diff --git a/src/ztf_sflight_amdp.ddls.asddls b/src/ztf_sflight_amdp.ddls.asddls
new file mode 100644
index 0000000..e3ae2b8
--- /dev/null
+++ b/src/ztf_sflight_amdp.ddls.asddls
@@ -0,0 +1,18 @@
+@EndUserText.label: 'SFLIGHT AMDP Table Function'
+define table function ZTF_SFLIGHT_AMDP
+ with parameters
+ p_carrid : s_carr_id
+ returns
+ {
+ key mandt : s_mandt;
+ key carrid : s_carr_id;
+ key connid : s_conn_id;
+ key fldate : s_date;
+ price : s_price;
+ currency : s_currcode;
+ planetype : s_planetye;
+ seatsmax : s_seatsmax;
+ seatsocc : s_seatsocc;
+ seatsfree : s_seatsmax;
+ }
+ implemented by method zcl_custom_amdp_table=>GET_FLIGHTS;
diff --git a/src/ztf_sflight_amdp.ddls.baseinfo b/src/ztf_sflight_amdp.ddls.baseinfo
new file mode 100644
index 0000000..e69de29
diff --git a/src/ztf_sflight_amdp.ddls.xml b/src/ztf_sflight_amdp.ddls.xml
new file mode 100644
index 0000000..760f594
--- /dev/null
+++ b/src/ztf_sflight_amdp.ddls.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+ ZTF_SFLIGHT_AMDP
+ E
+ CDS Table Function
+ F
+
+
+
+
diff --git a/src/ztopdown.fugr.lztopdowntop.abap b/src/ztopdown.fugr.lztopdowntop.abap
new file mode 100644
index 0000000..776f4e8
--- /dev/null
+++ b/src/ztopdown.fugr.lztopdowntop.abap
@@ -0,0 +1,3 @@
+FUNCTION-POOL ZTOPDOWN. "MESSAGE-ID ..
+
+* INCLUDE LZTOPDOWND... " Local class definition
diff --git a/src/ztopdown.fugr.lztopdowntop.xml b/src/ztopdown.fugr.lztopdowntop.xml
new file mode 100644
index 0000000..3b6862d
--- /dev/null
+++ b/src/ztopdown.fugr.lztopdowntop.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+ LZTOPDOWNTOP
+ S
+ D$
+ I
+ S
+ X
+ D$S
+ X
+
+
+
+
diff --git a/src/ztopdown.fugr.saplztopdown.abap b/src/ztopdown.fugr.saplztopdown.abap
new file mode 100644
index 0000000..20be879
--- /dev/null
+++ b/src/ztopdown.fugr.saplztopdown.abap
@@ -0,0 +1,15 @@
+*******************************************************************
+* System-defined Include-files. *
+*******************************************************************
+ INCLUDE LZTOPDOWNTOP. " Global Declarations
+ INCLUDE LZTOPDOWNUXX. " Function Modules
+
+*******************************************************************
+* User-defined Include-files (if necessary). *
+*******************************************************************
+* INCLUDE LZTOPDOWNF... " Subroutines
+* INCLUDE LZTOPDOWNO... " PBO-Modules
+* INCLUDE LZTOPDOWNI... " PAI-Modules
+* INCLUDE LZTOPDOWNE... " Events
+* INCLUDE LZTOPDOWNP... " Local class implement.
+* INCLUDE LZTOPDOWNT99. " ABAP Unit tests
diff --git a/src/ztopdown.fugr.saplztopdown.xml b/src/ztopdown.fugr.saplztopdown.xml
new file mode 100644
index 0000000..43439c8
--- /dev/null
+++ b/src/ztopdown.fugr.saplztopdown.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+ SAPLZTOPDOWN
+ S
+ D$
+ F
+ S
+ E
+ X
+ D$S
+ X
+
+
+
+
diff --git a/src/ztopdown.fugr.xml b/src/ztopdown.fugr.xml
new file mode 100644
index 0000000..5707e73
--- /dev/null
+++ b/src/ztopdown.fugr.xml
@@ -0,0 +1,30 @@
+
+
+
+
+ test
+
+ LZTOPDOWNTOP
+ SAPLZTOPDOWN
+
+
+ -
+ ZTOPDOWN_ENV
+ 테이블명 반환 함수
+
+
+ TB_NAME
+ TABNAME
+
+
+
+
+ TB_NAME
+ P
+
+
+
+
+
+
+
diff --git a/src/ztopdown.fugr.ztopdown_env.abap b/src/ztopdown.fugr.ztopdown_env.abap
new file mode 100644
index 0000000..8433eb9
--- /dev/null
+++ b/src/ztopdown.fugr.ztopdown_env.abap
@@ -0,0 +1,13 @@
+FUNCTION ZTOPDOWN_ENV.
+*"--------------------------------------------------------------------
+*"*"Local Interface:
+*" EXPORTING
+*" VALUE(TB_NAME) TYPE TABNAME
+*"--------------------------------------------------------------------
+ tb_name = 'ZCOT1000'.
+
+
+
+
+
+ENDFUNCTION.