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..c950028
--- /dev/null
+++ b/src/package.devc.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+ 공통코드 관리
+
+
+
+
diff --git a/src/zcat0010.tabl.xml b/src/zcat0010.tabl.xml
new file mode 100644
index 0000000..5addc17
--- /dev/null
+++ b/src/zcat0010.tabl.xml
@@ -0,0 +1,309 @@
+
+
+
+
+
+ ZCAT0010
+ E
+ TRANSP
+ X
+ X
+ [CA] Common Code Header
+ X
+ A
+ 1
+
+
+ ZCAT0010
+ A
+ 0
+ APPL0
+ X
+ N
+
+
+
+ MANDT
+ X
+ MANDT
+ 0
+ X
+ E
+
+
+ APPLI
+ X
+ ZE_APPLI_TR01
+ 0
+ X
+ X
+ F
+ E
+
+
+ GRP
+ X
+ 0
+ C
+ 000020
+ X
+ CHAR
+ 000010
+ CHAR
+ Code Group
+
+
+ SPRAS
+ X
+ 0
+ C
+ 000002
+ X
+ LANG
+ 000001
+ LANG
+ Language Key
+ X
+
+
+ GRP_TXT
+ 0
+ C
+ 000080
+ CHAR
+ 000040
+ CHAR
+ Short Text for Code Group
+
+
+ HDR_01
+ 0
+ C
+ 000040
+ CHAR
+ 000020
+ CHAR
+ Header Line 01
+
+
+ LEN_01
+ 0
+ P
+ 000002
+ DEC
+ 000002
+ DEC
+ Length 01
+
+
+ HDR_02
+ 0
+ C
+ 000040
+ CHAR
+ 000020
+ CHAR
+ Header Line 02
+
+
+ LEN_02
+ 0
+ P
+ 000002
+ DEC
+ 000002
+ DEC
+ Length 02
+
+
+ HDR_03
+ 0
+ C
+ 000040
+ CHAR
+ 000020
+ CHAR
+ Header Line 03
+
+
+ LEN_03
+ 0
+ P
+ 000002
+ DEC
+ 000002
+ DEC
+ Length 03
+
+
+ HDR_04
+ 0
+ C
+ 000040
+ CHAR
+ 000020
+ CHAR
+ Header Line 04
+
+
+ LEN_04
+ 0
+ P
+ 000002
+ DEC
+ 000002
+ DEC
+ Length 04
+
+
+ HDR_05
+ 0
+ C
+ 000040
+ CHAR
+ 000020
+ CHAR
+ Header Line 05
+
+
+ LEN_05
+ 0
+ P
+ 000002
+ DEC
+ 000002
+ DEC
+ Length 05
+
+
+ HDR_06
+ 0
+ C
+ 000040
+ CHAR
+ 000020
+ CHAR
+ Header Line 06
+
+
+ LEN_06
+ 0
+ P
+ 000002
+ DEC
+ 000002
+ DEC
+ Length 06
+
+
+ HDR_07
+ 0
+ C
+ 000040
+ CHAR
+ 000020
+ CHAR
+ Header Line 07
+
+
+ LEN_07
+ 0
+ P
+ 000002
+ DEC
+ 000002
+ DEC
+ Length 07
+
+
+ HDR_08
+ 0
+ C
+ 000040
+ CHAR
+ 000020
+ CHAR
+ Header Line 08
+
+
+ LEN_08
+ 0
+ P
+ 000002
+ DEC
+ 000002
+ DEC
+ Length 08
+
+
+ HDR_09
+ 0
+ C
+ 000040
+ CHAR
+ 000020
+ CHAR
+ Header Line 09
+
+
+ LEN_09
+ 0
+ P
+ 000002
+ DEC
+ 000002
+ DEC
+ Length 09
+
+
+ HDR_10
+ 0
+ C
+ 000040
+ CHAR
+ 000020
+ CHAR
+ Header Line 10
+
+
+ LEN_10
+ 0
+ P
+ 000002
+ DEC
+ 000002
+ DEC
+ Length 10
+
+
+ FCNT
+ 0
+ P
+ 000002
+ DEC
+ 000002
+ DEC
+ Header Count
+
+
+ REMK
+ 0
+ C
+ 000200
+ CHAR
+ 000100
+ CHAR
+ Comment
+
+
+ .INCLUDE
+ 0
+ ZRFKS0
+ S
+ Dialog Fields for Screens from Function Group FKS0
+ S
+
+
+
+
+
diff --git a/src/zcat0020.tabl.xml b/src/zcat0020.tabl.xml
new file mode 100644
index 0000000..d1a6a75
--- /dev/null
+++ b/src/zcat0020.tabl.xml
@@ -0,0 +1,210 @@
+
+
+
+
+
+ ZCAT0020
+ E
+ TRANSP
+ X
+ X
+ [CA] Common Code Item
+ X
+ A
+ 1
+
+
+ ZCAT0020
+ A
+ 0
+ APPL0
+ X
+ N
+
+
+
+ MANDT
+ X
+ MANDT
+ 0
+ X
+ E
+
+
+ APPLI
+ X
+ ZE_APPLI_TR01
+ 0
+ X
+ X
+ F
+ E
+
+
+ GRP
+ X
+ 0
+ C
+ 000020
+ X
+ CHAR
+ 000010
+ CHAR
+ Code Group
+
+
+ SPRAS
+ X
+ SPRAS
+ 0
+ X
+ D
+ E
+ X
+
+
+ CODE
+ X
+ ZE_SE_CODE_VALUE
+ 0
+ X
+ E
+
+
+ CODE_TXT
+ ZQTXT_CODE
+ 0
+ E
+
+
+ FLD_01
+ 0
+ C
+ 000198
+ CHAR
+ 000099
+ CHAR
+ Field 01
+
+
+ FLD_02
+ 0
+ C
+ 000198
+ CHAR
+ 000099
+ CHAR
+ Field 02
+
+
+ FLD_03
+ 0
+ C
+ 000198
+ CHAR
+ 000099
+ CHAR
+ Field 03
+
+
+ FLD_04
+ 0
+ C
+ 000198
+ CHAR
+ 000099
+ CHAR
+ Field 04
+
+
+ FLD_05
+ 0
+ C
+ 000198
+ CHAR
+ 000099
+ CHAR
+ Field 05
+
+
+ FLD_06
+ 0
+ C
+ 000198
+ CHAR
+ 000099
+ CHAR
+ Field 06
+
+
+ FLD_07
+ 0
+ C
+ 000198
+ CHAR
+ 000099
+ CHAR
+ Field 07
+
+
+ FLD_08
+ 0
+ C
+ 000198
+ CHAR
+ 000099
+ CHAR
+ Field 08
+
+
+ FLD_09
+ 0
+ C
+ 000198
+ CHAR
+ 000099
+ CHAR
+ Field 09
+
+
+ FLD_10
+ 0
+ C
+ 000198
+ CHAR
+ 000099
+ CHAR
+ Field 10
+
+
+ USEYN
+ 0
+ C
+ 000002
+ CHAR
+ 000001
+ CHAR
+ indicator : YES/NO(Y/N)
+
+
+ SORTSEQ
+ 0
+ N
+ 000008
+ NUMC
+ 000004
+ NUMC
+ Sort Order
+
+
+ .INCLUDE
+ 0
+ ZRFKS0
+ S
+ Dialog Fields for Screens from Function Group FKS0
+ S
+
+
+
+
+
diff --git a/src/zcom0010.prog.abap b/src/zcom0010.prog.abap
new file mode 100644
index 0000000..3ceea41
--- /dev/null
+++ b/src/zcom0010.prog.abap
@@ -0,0 +1,41 @@
+* Program Name : ZCOM0010 *
+* Description : 공통 코드 관리 *
+* Screen : 100 *
+* Transaction code : ZCOM0010 *
+* Updated Tables : N/A *
+* Input Parameters : *
+* Return Codes : *
+* Special Logic : *
+*----------------------------------------------------------------------*
+* MODIFICATION LOG *
+*----------------------------------------------------------------------*
+* Date Rev Programmer Description *
+*------------ -------- ------------- ----------------------------------*
+* 2026.09.04 N MYSAP Initial coding *
+*----------------------------------------------------------------------*
+
+REPORT zcom0010 MESSAGE-ID zmcom01 NO STANDARD PAGE HEADING.
+
+*----------------------------------------------------------------------*
+* INCLUDE
+*----------------------------------------------------------------------*
+
+INCLUDE zcom0010c01 . " event.
+
+INCLUDE zcom0010top . " Global Data
+
+
+INCLUDE zcom0010o01 . " PBO-Modules
+INCLUDE zcom0010i01 . " PAI-Modules
+INCLUDE zcom0010f01 . " FORM-Routines
+
+
+INITIALIZATION.
+ p_spras = sy-langu.
+
+AT SELECTION-SCREEN OUTPUT.
+ PERFORM set_selection_screen.
+
+START-OF-SELECTION.
+ PERFORM read_header.
+ CALL SCREEN 0100.
diff --git a/src/zcom0010.prog.xml b/src/zcom0010.prog.xml
new file mode 100644
index 0000000..acdc88d
--- /dev/null
+++ b/src/zcom0010.prog.xml
@@ -0,0 +1,167 @@
+
+
+
+
+
+ ZCOM0010
+ 1
+ E
+ X
+ X
+
+
+ -
+
+ ZCOM0010
+ 0100
+ E
+ 조회
+ N
+ 0100
+ 027
+ 120
+
+
+
+ SCREEN
+ SCREEN
+
+
+
+
+ SCREEN
+ SCREEN
+ OKCODE
+ OK_CODE_0100
+ ____________________
+ 020
+ 020
+ 001
+ CHAR
+ X
+
+
+
+
+ PROCESS BEFORE OUTPUT.
+
+
+ MODULE status_0100.
+
+
+
+ MODULE alv_display_0100.
+
+
+
+ PROCESS AFTER INPUT.
+
+
+ MODULE user_command_0100.
+
+
+
+
+
+
+ 000001
+ 000001
+
+
+
+ ZCOM0010
+ D
+ 000001
+ 000001
+ 0001
+ 조회
+
+
+
+
+ BACK
+ 001
+ S
+ Back
+
+
+ CANC
+ 001
+ S
+ Exit
+
+
+ EXIT
+ 001
+ S
+ ICON_CANCEL
+ @0W@
+ Cancel
+
+
+
+
+ 000001
+ 03
+ BACK
+ 001
+
+
+ 000001
+ 12
+ EXIT
+ 001
+
+
+ 000001
+ 15
+ CANC
+ 001
+
+
+
+
+ ZCOM0010
+ BACK
+
+
+ ZCOM0010
+ CANC
+
+
+ ZCOM0010
+ EXIT
+
+
+
+
+ A
+ 000001
+ D
+ 조회
+
+
+ P
+ 000001
+ D
+ 조회
+
+
+ B
+ 000001
+ 0001
+ D
+ 조회
+
+
+
+
+ -
+ R
+ 공통코드 관리
+ 7
+
+
+
+
+
diff --git a/src/zcom0010c01.prog.abap b/src/zcom0010c01.prog.abap
new file mode 100644
index 0000000..51b1cc2
--- /dev/null
+++ b/src/zcom0010c01.prog.abap
@@ -0,0 +1,124 @@
+*&---------------------------------------------------------------------*
+*& Include ZCOM0010C01
+*&---------------------------------------------------------------------*
+
+CLASS lcl_events DEFINITION.
+ PUBLIC SECTION.
+* METHODS on_toolbar FOR EVENT toolbar OF cl_gui_alv_grid
+* IMPORTING e_object e_interactive sender.
+* METHODS on_user_command FOR EVENT user_command OF cl_gui_alv_grid
+* IMPORTING e_ucomm sender.
+ METHODS on_double_click FOR EVENT double_click OF cl_gui_alv_grid
+ IMPORTING e_row e_column sender.
+* METHODS on_data_changed FOR EVENT data_changed OF cl_gui_alv_grid
+* IMPORTING er_data_changed sender.
+ENDCLASS.
+
+
+CLASS lcl_events IMPLEMENTATION.
+* METHOD on_toolbar.
+* IF e_object IS INITIAL.
+* RETURN.
+* ENDIF.
+*
+** IF sender = go_grid.
+** __alv_toolbar e_object 1 'ADDH' gc_icon-create '그룹코드 추가' '그룹 추가' 0 space.
+** __alv_toolbar e_object 2 'DELH' gc_icon-delete '선택 그룹 삭제' '그룹 삭제' 0 space.
+** __alv_toolbar e_object 3 'SAVEH' icon_system_save '그룹코드 저장' '그룹 저장' 0 space.
+** ELSEIF sender = go_grid1.
+** __alv_toolbar e_object 1 'ADDI' gc_icon-create '상세코드 추가' '상세 추가' 0 space.
+** __alv_toolbar e_object 2 'ADDIM' gc_icon-create '상세코드 복수 추가' '복수열 추가' 0 space.
+** __alv_toolbar e_object 3 'DELI' gc_icon-delete '선택 상세 삭제' '상세 삭제' 0 space.
+** __alv_toolbar e_object 4 'SAVEI' icon_system_save '상세코드 저장' '상세 저장' 0 space.
+** ENDIF.
+* ENDMETHOD.
+
+* METHOD on_user_command.
+* ok_code_0100 = e_ucomm.
+* CALL METHOD cl_gui_cfw=>set_new_ok_code
+* EXPORTING new_code = ok_code_0100.
+* ENDMETHOD.
+
+ METHOD on_double_click.
+ perform handle_double_click using e_row e_column sender.
+ ENDMETHOD.
+
+* METHOD on_data_changed.
+* IF sender = go_grid.
+* LOOP AT er_data_changed->mt_mod_cells INTO DATA(ls_mod_header).
+* READ TABLE gt_header ASSIGNING FIELD-SYMBOL() INDEX ls_mod_header-row_id.
+* IF sy-subrc = 0 AND -mode = gc_mode-disp.
+* -mode = gc_mode-modify.
+* ENDIF.
+* ENDLOOP.
+* ELSEIF sender = go_grid1.
+* LOOP AT er_data_changed->mt_mod_cells INTO DATA(ls_mod_item).
+* READ TABLE gt_item ASSIGNING FIELD-SYMBOL() INDEX ls_mod_item-row_id.
+* IF sy-subrc = 0 AND -mode = gc_mode-disp.
+* -mode = gc_mode-modify.
+* ENDIF.
+* ENDLOOP.
+* ENDIF.
+* ENDMETHOD.
+ENDCLASS.
+
+*---------------------------------------------------------------------*
+* LOCAL CLASSES: Definition
+*---------------------------------------------------------------------*
+CLASS lcl_alv_grid DEFINITION INHERITING FROM cl_gui_alv_grid.
+
+ PUBLIC SECTION.
+
+ METHODS: set_optimize_all_cols.
+
+ METHODS: set_cursor IMPORTING row TYPE i
+ col TYPE i.
+ METHODS: set_fixed_column.
+
+ METHODS: set_row_resize.
+
+ METHODS: set_err_cells IMPORTING it_err TYPE lvc_t_err.
+
+
+ENDCLASS. "LCL_AlV_GRID DEFINITION
+
+*---------------------------------------------------------------------*
+* CLASS LCL_AlV_GRID IMPLEMENTATION
+*---------------------------------------------------------------------*
+CLASS lcl_alv_grid IMPLEMENTATION.
+ METHOD set_optimize_all_cols.
+ CALL METHOD me->optimize_all_cols
+ EXPORTING
+ include_header = 1.
+ ENDMETHOD. "SET_OPTIMIZE_ALL_COLS
+
+ METHOD set_cursor.
+ CALL METHOD me->set_current_cell_base
+ EXPORTING
+ row = row
+ col = col.
+ ENDMETHOD. " SET_CURSOR
+
+ METHOD set_fixed_column.
+ CALL METHOD me->set_fixed_cols
+ EXPORTING
+ cols = 5.
+ ENDMETHOD. "SET_FIXED_COLUMN
+
+ METHOD set_row_resize.
+ CALL METHOD me->set_resize_rows
+ EXPORTING
+ enable = 1.
+ ENDMETHOD. " SET_ROW_RESIZE
+
+ METHOD set_err_cells.
+ CALL METHOD me->set_error_cells
+ EXPORTING
+ cell_table = it_err
+ EXCEPTIONS
+ error = 1
+ OTHERS = 2.
+
+ ENDMETHOD. "GET_CURRENT_COL
+
+ENDCLASS. "LCL_ALV_GRID IMPLEMENTATION
diff --git a/src/zcom0010c01.prog.xml b/src/zcom0010c01.prog.xml
new file mode 100644
index 0000000..0c890c0
--- /dev/null
+++ b/src/zcom0010c01.prog.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+ ZCOM0010C01
+ I
+ E
+ X
+
+
+ -
+ R
+ Include ZCOM0010C01
+ 19
+
+
+
+
+
diff --git a/src/zcom0010f01.prog.abap b/src/zcom0010f01.prog.abap
new file mode 100644
index 0000000..1774ea2
--- /dev/null
+++ b/src/zcom0010f01.prog.abap
@@ -0,0 +1,286 @@
+*&---------------------------------------------------------------------*
+*& Include ZCOM0010F01
+*&---------------------------------------------------------------------*
+
+FORM set_selection_screen.
+ p_spras = sy-langu.
+ENDFORM.
+
+FORM read_header.
+ CLEAR gt_header.
+ SELECT * FROM zcat0010
+ WHERE appli = @p_appli
+ AND spras = @p_spras
+ AND ( grp = @p_grp OR @p_grp IS INITIAL )
+ ORDER BY grp
+ INTO CORRESPONDING FIELDS OF TABLE @gt_header.
+
+ LOOP AT gt_header ASSIGNING FIELD-SYMBOL().
+ -mode = gc_mode-disp.
+ ENDLOOP.
+ENDFORM.
+
+FORM read_item USING iv_grp TYPE zcat0020-grp.
+ CLEAR gt_item.
+ SELECT * FROM zcat0020
+ INTO CORRESPONDING FIELDS OF TABLE @gt_item
+ WHERE appli = @p_appli
+ AND grp = @iv_grp
+ AND spras = @p_spras
+ ORDER BY sortseq, code.
+
+ LOOP AT gt_item ASSIGNING FIELD-SYMBOL().
+ -mode = gc_mode-disp.
+ ENDLOOP.
+ENDFORM.
+
+FORM build_header_fcat.
+ CLEAR gt_fieldcat.
+ PERFORM add_fcat USING 'MARK' '선택' 4 abap_true abap_false CHANGING gt_fieldcat.
+ PERFORM add_fcat USING 'GRP' '그룹코드' 12 abap_false abap_false CHANGING gt_fieldcat.
+ PERFORM add_fcat USING 'GRP_TXT' '그룹코드명' 25 abap_false abap_false CHANGING gt_fieldcat.
+ PERFORM add_fcat USING 'FCNT' '필드수' 7 abap_false abap_false CHANGING gt_fieldcat.
+ENDFORM.
+
+FORM build_item_fcat.
+ CLEAR gt_fieldcat1.
+ PERFORM add_fcat USING 'MARK' '선택' 4 abap_true abap_false CHANGING gt_fieldcat1.
+ PERFORM add_fcat USING 'CODE' '코드' 14 abap_false abap_false CHANGING gt_fieldcat1.
+ PERFORM add_fcat USING 'CODE_TXT' '코드명' 25 abap_false abap_false CHANGING gt_fieldcat1.
+ PERFORM add_fcat USING 'FLD_01' 'FLD_01' 12 abap_false abap_false CHANGING gt_fieldcat1.
+ PERFORM add_fcat USING 'FLD_02' 'FLD_02' 12 abap_false abap_false CHANGING gt_fieldcat1.
+ PERFORM add_fcat USING 'FLD_03' 'FLD_03' 12 abap_false abap_false CHANGING gt_fieldcat1.
+ PERFORM add_fcat USING 'FLD_04' 'FLD_04' 12 abap_false abap_false CHANGING gt_fieldcat1.
+ PERFORM add_fcat USING 'FLD_05' 'FLD_05' 12 abap_false abap_false CHANGING gt_fieldcat1.
+ PERFORM add_fcat USING 'FLD_06' 'FLD_06' 12 abap_false abap_false CHANGING gt_fieldcat1.
+ PERFORM add_fcat USING 'FLD_07' 'FLD_07' 12 abap_false abap_false CHANGING gt_fieldcat1.
+ PERFORM add_fcat USING 'FLD_08' 'FLD_08' 12 abap_false abap_false CHANGING gt_fieldcat1.
+ PERFORM add_fcat USING 'FLD_09' 'FLD_09' 12 abap_false abap_false CHANGING gt_fieldcat1.
+ PERFORM add_fcat USING 'FLD_10' 'FLD_10' 12 abap_false abap_false CHANGING gt_fieldcat1.
+ PERFORM add_fcat USING 'USEYN' '사용' 6 abap_false abap_false CHANGING gt_fieldcat1.
+ PERFORM add_fcat USING 'SORTSEQ' 'Sort Order' 10 abap_false abap_false CHANGING gt_fieldcat1.
+ENDFORM.
+
+FORM add_fcat USING iv_field TYPE lvc_fname
+ iv_text TYPE lvc_txt
+ iv_width TYPE i
+ iv_checkbox TYPE abap_bool
+ iv_hotspot TYPE abap_bool
+ CHANGING ct_fcat TYPE lvc_t_fcat.
+ DATA ls_fcat TYPE lvc_s_fcat.
+
+ ls_fcat-fieldname = iv_field.
+ ls_fcat-coltext = iv_text.
+ ls_fcat-scrtext_l = iv_text.
+ ls_fcat-outputlen = iv_width.
+ ls_fcat-checkbox = iv_checkbox.
+ ls_fcat-hotspot = iv_hotspot.
+ ls_fcat-edit = abap_true.
+ APPEND ls_fcat TO ct_fcat.
+ENDFORM.
+
+FORM apply_dynamic_item_fcat.
+ DATA: ls_fcat TYPE lvc_s_fcat,
+ lv_idx TYPE n LENGTH 2,
+ lv_hdr TYPE char20,
+ lv_len TYPE i.
+
+ IF go_grid1 IS INITIAL OR gv_selected_grp IS INITIAL.
+ RETURN.
+ ENDIF.
+
+ READ TABLE gt_header INTO gs_header WITH KEY grp = gv_selected_grp.
+ IF sy-subrc <> 0.
+ RETURN.
+ ENDIF.
+
+ LOOP AT gt_fieldcat1 INTO ls_fcat.
+ IF ls_fcat-fieldname CP 'FLD_*'.
+ lv_idx = ls_fcat-fieldname+4(2).
+ ASSIGN COMPONENT |HDR_{ lv_idx }| OF STRUCTURE gs_header TO FIELD-SYMBOL().
+ ASSIGN COMPONENT |LEN_{ lv_idx }| OF STRUCTURE gs_header TO FIELD-SYMBOL().
+
+ CLEAR: lv_hdr, lv_len.
+ IF IS ASSIGNED.
+ lv_hdr = .
+ ENDIF.
+ IF IS ASSIGNED.
+ lv_len = .
+ ENDIF.
+
+ IF lv_hdr IS INITIAL OR lv_len IS INITIAL.
+ ls_fcat-no_out = abap_true.
+ ELSE.
+ ls_fcat-no_out = abap_false.
+ ls_fcat-coltext = lv_hdr.
+ ls_fcat-scrtext_l = lv_hdr.
+ ls_fcat-outputlen = lv_len.
+ ENDIF.
+ MODIFY gt_fieldcat1 FROM ls_fcat.
+ ENDIF.
+ ENDLOOP.
+
+ __set_frontend_fieldcat go_grid1 gt_fieldcat1.
+ENDFORM.
+
+FORM refresh_grid USING io_grid TYPE REF TO lcl_alv_grid. "cl_gui_alv_grid.
+ IF io_grid IS BOUND.
+ __alv_refresh io_grid abap_false abap_true abap_true.
+ ENDIF.
+ENDFORM.
+
+FORM calculate_fcnt USING is_header TYPE ty_header
+ CHANGING cv_count TYPE i.
+ cv_count = 0.
+ IF is_header-hdr_01 IS NOT INITIAL AND is_header-len_01 IS NOT INITIAL. cv_count += 1. ENDIF.
+ IF is_header-hdr_02 IS NOT INITIAL AND is_header-len_02 IS NOT INITIAL. cv_count += 1. ENDIF.
+ IF is_header-hdr_03 IS NOT INITIAL AND is_header-len_03 IS NOT INITIAL. cv_count += 1. ENDIF.
+ IF is_header-hdr_04 IS NOT INITIAL AND is_header-len_04 IS NOT INITIAL. cv_count += 1. ENDIF.
+ IF is_header-hdr_05 IS NOT INITIAL AND is_header-len_05 IS NOT INITIAL. cv_count += 1. ENDIF.
+ IF is_header-hdr_06 IS NOT INITIAL AND is_header-len_06 IS NOT INITIAL. cv_count += 1. ENDIF.
+ IF is_header-hdr_07 IS NOT INITIAL AND is_header-len_07 IS NOT INITIAL. cv_count += 1. ENDIF.
+ IF is_header-hdr_08 IS NOT INITIAL AND is_header-len_08 IS NOT INITIAL. cv_count += 1. ENDIF.
+ IF is_header-hdr_09 IS NOT INITIAL AND is_header-len_09 IS NOT INITIAL. cv_count += 1. ENDIF.
+ IF is_header-hdr_10 IS NOT INITIAL AND is_header-len_10 IS NOT INITIAL. cv_count += 1. ENDIF.
+ENDFORM.
+
+FORM save_header.
+ DATA: ls_db TYPE zcat0010,
+ lv_count TYPE i.
+
+ IF go_grid IS BOUND.
+ go_grid->check_changed_data( ).
+ ENDIF.
+
+ LOOP AT gt_header INTO gs_header WHERE mode <> gc_mode-disp OR mark = abap_true.
+ IF gs_header-mode <> gc_mode-delete
+ AND ( gs_header-grp IS INITIAL OR gs_header-grp_txt IS INITIAL ).
+ MESSAGE '그룹코드와 그룹코드명은 필수입니다.' TYPE 'S' DISPLAY LIKE 'E'.
+ RETURN.
+ ENDIF.
+
+ IF gs_header-mode = gc_mode-delete.
+ DELETE FROM zcat0020
+ WHERE appli = @p_appli AND grp = @gs_header-grp AND spras = @p_spras.
+ DELETE FROM zcat0010
+ WHERE appli = @p_appli AND grp = @gs_header-grp AND spras = @p_spras.
+ CONTINUE.
+ ENDIF.
+
+ PERFORM calculate_fcnt USING gs_header CHANGING lv_count.
+ gs_header-fcnt = lv_count.
+ MOVE-CORRESPONDING gs_header TO ls_db.
+ ls_db-mandt = sy-mandt.
+ ls_db-appli = p_appli.
+ ls_db-spras = p_spras.
+ MODIFY zcat0010 FROM @ls_db.
+ ENDLOOP.
+
+ COMMIT WORK AND WAIT.
+ PERFORM read_header.
+* PERFORM refresh_grid USING go_grid.
+ MESSAGE '그룹코드가 저장되었습니다.' TYPE 'S'.
+ENDFORM.
+
+FORM save_item.
+ DATA ls_db TYPE zcat0020.
+
+ IF gv_selected_grp IS INITIAL.
+ MESSAGE '먼저 좌측에서 그룹코드를 선택하십시오.' TYPE 'S' DISPLAY LIKE 'E'.
+ RETURN.
+ ENDIF.
+
+ IF go_grid1 IS BOUND.
+ go_grid1->check_changed_data( ).
+ ENDIF.
+
+ LOOP AT gt_item INTO gs_item WHERE mode <> gc_mode-disp OR mark = abap_true.
+ IF gs_item-mode <> gc_mode-delete AND gs_item-code IS INITIAL.
+ MESSAGE '상세코드는 필수입니다.' TYPE 'S' DISPLAY LIKE 'E'.
+ RETURN.
+ ENDIF.
+
+ IF gs_item-mode = gc_mode-delete.
+ DELETE FROM zcat0020
+ WHERE appli = @p_appli
+ AND grp = @gv_selected_grp
+ AND spras = @p_spras
+ AND code = @gs_item-code.
+ CONTINUE.
+ ENDIF.
+
+ MOVE-CORRESPONDING gs_item TO ls_db.
+ ls_db-mandt = sy-mandt.
+ ls_db-appli = p_appli.
+ ls_db-grp = gv_selected_grp.
+ ls_db-spras = p_spras.
+ MODIFY zcat0020 FROM @ls_db.
+ ENDLOOP.
+
+ COMMIT WORK AND WAIT.
+ PERFORM read_item USING gv_selected_grp.
+* PERFORM refresh_grid USING go_grid1.
+ MESSAGE '세부코드가 저장되었습니다.' TYPE 'S'.
+ENDFORM.
+
+FORM mark_new_headers USING iv_lines TYPE i.
+ DO iv_lines TIMES.
+ CLEAR gs_header.
+ gs_header-appli = p_appli.
+ gs_header-spras = p_spras.
+ gs_header-mode = gc_mode-create.
+ APPEND gs_header TO gt_header.
+ ENDDO.
+ENDFORM.
+
+FORM mark_new_items USING iv_lines TYPE i.
+ DO iv_lines TIMES.
+ CLEAR gs_item.
+ gs_item-appli = p_appli.
+ gs_item-grp = gv_selected_grp.
+ gs_item-spras = p_spras.
+ gs_item-useyn = 'Y'.
+ gs_item-mode = gc_mode-create.
+ APPEND gs_item TO gt_item.
+ ENDDO.
+ENDFORM.
+
+FORM delete_marked_headers.
+ LOOP AT gt_header ASSIGNING FIELD-SYMBOL() WHERE mark = abap_true.
+ -mode = gc_mode-delete.
+ ENDLOOP.
+ PERFORM save_header.
+ENDFORM.
+
+FORM delete_marked_items.
+ LOOP AT gt_item ASSIGNING FIELD-SYMBOL() WHERE mark = abap_true.
+ -mode = gc_mode-delete.
+ ENDLOOP.
+ PERFORM save_item.
+ENDFORM.
+*&---------------------------------------------------------------------*
+*& Form handle_double_click
+*&---------------------------------------------------------------------*
+*& text
+*&---------------------------------------------------------------------*
+*& --> E_ROW
+*& --> E_COLUMN
+*& --> SENDER
+*&---------------------------------------------------------------------*
+FORM handle_double_click USING p_row
+ p_column
+ p_sender.
+
+ IF p_sender <> go_grid OR p_row IS INITIAL.
+ RETURN.
+ ENDIF.
+
+ READ TABLE gt_header INTO gs_header INDEX p_row.
+ IF sy-subrc = 0.
+ gv_selected_grp = gs_header-grp.
+ PERFORM read_item USING gv_selected_grp.
+ PERFORM apply_dynamic_item_fcat.
+ PERFORM refresh_grid USING go_grid1.
+ ENDIF.
+
+ENDFORM.
diff --git a/src/zcom0010f01.prog.xml b/src/zcom0010f01.prog.xml
new file mode 100644
index 0000000..4ef1345
--- /dev/null
+++ b/src/zcom0010f01.prog.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+ ZCOM0010F01
+ I
+ E
+ X
+
+
+ -
+ R
+ Include ZCOM0010F01
+ 19
+
+
+
+
+
diff --git a/src/zcom0010i01.prog.abap b/src/zcom0010i01.prog.abap
new file mode 100644
index 0000000..5025a2c
--- /dev/null
+++ b/src/zcom0010i01.prog.abap
@@ -0,0 +1,63 @@
+*&---------------------------------------------------------------------*
+*& Include ZCOM0010I01
+*&---------------------------------------------------------------------*
+MODULE user_command_0100 INPUT.
+ CASE ok_code_0100.
+ WHEN gc_fcode-back OR gc_fcode-canc OR gc_fcode-exit.
+ LEAVE TO SCREEN 0.
+
+ WHEN 'ADDH'.
+ PERFORM mark_new_headers USING 1.
+* PERFORM refresh_grid USING go_grid.
+
+ WHEN 'EDTH'.
+ __set_ready_input go_grid 1.
+
+ WHEN 'DELH'.
+ __popup_to_confirm_step '선택한 그룹코드와 모든 하위코드를 삭제합니다.' '' '그룹코드 삭제'.
+ IF gv_answer = gc_answer-yes.
+ PERFORM delete_marked_headers.
+ ENDIF.
+
+ WHEN 'SAVEH'.
+ PERFORM save_header.
+
+ WHEN 'ADDI'.
+ IF gv_selected_grp IS INITIAL.
+ MESSAGE '먼저 좌측에서 그룹코드를 선택하십시오.' TYPE 'S' DISPLAY LIKE 'E'.
+ ELSE.
+ PERFORM mark_new_items USING 1.
+* PERFORM refresh_grid USING go_grid1.
+ ENDIF.
+
+ WHEN 'ADDIM'.
+ IF gv_selected_grp IS INITIAL.
+ MESSAGE '먼저 좌측에서 그룹코드를 선택하십시오.' TYPE 'S' DISPLAY LIKE 'E'.
+ ELSE.
+ CLEAR gv_lines.
+ CALL FUNCTION 'POPUP_TO_GET_VALUE'
+ EXPORTING
+ fieldname = 'GV_LINES'
+ tabname = 'ZCOM0010'
+ titel = '추가 라인 수'
+ IMPORTING
+ value = gv_lines.
+ IF gv_lines IS INITIAL OR gv_lines < 1.
+ gv_lines = 1.
+ ENDIF.
+ PERFORM mark_new_items USING gv_lines.
+* PERFORM refresh_grid USING go_grid1.
+ ENDIF.
+
+ WHEN 'DELI'.
+ __popup_to_confirm_step '선택한 세부코드를 삭제합니다.' '' '세부코드 삭제'.
+ IF gv_answer = gc_answer-yes.
+ PERFORM delete_marked_items.
+ ENDIF.
+
+ WHEN 'SAVEI'.
+ PERFORM save_item.
+ ENDCASE.
+
+ CLEAR ok_code_0100.
+ENDMODULE.
diff --git a/src/zcom0010i01.prog.xml b/src/zcom0010i01.prog.xml
new file mode 100644
index 0000000..a35366d
--- /dev/null
+++ b/src/zcom0010i01.prog.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+ ZCOM0010I01
+ I
+ E
+ X
+
+
+ -
+ R
+ Include ZCOM0010I01
+ 19
+
+
+
+
+
diff --git a/src/zcom0010o01.prog.abap b/src/zcom0010o01.prog.abap
new file mode 100644
index 0000000..ab28463
--- /dev/null
+++ b/src/zcom0010o01.prog.abap
@@ -0,0 +1,83 @@
+*&---------------------------------------------------------------------*
+*& Include ZCOM0010O01
+*&---------------------------------------------------------------------*
+MODULE status_0100 OUTPUT.
+ DATA : lv_text(200),
+ lt_fcode TYPE TABLE OF sy-ucomm.
+ CLEAR: lv_text, lt_fcode, lt_fcode[].
+
+ SET PF-STATUS 'ZCOM0010' EXCLUDING lt_fcode.
+ lv_text = sy-title.
+ SET TITLEBAR 'ZCOM0010' WITH lv_text.
+
+
+ENDMODULE.
+
+MODULE clear_okcode_0100 OUTPUT.
+ CLEAR ok_code_0100.
+ENDMODULE.
+
+FORM create_controls.
+ CREATE OBJECT go_docking_container
+ EXPORTING
+ side = cl_gui_docking_container=>dock_at_left
+ extension = 3000.
+
+ __splitter go_splitter go_docking_container 1 2.
+ __set_splitter go_splitter go_container_l 1 1.
+ __set_splitter go_splitter go_container_r 1 2.
+ __width_split go_splitter 1 20.
+ __width_split go_splitter 2 80.
+
+ CREATE OBJECT go_grid
+ EXPORTING
+ i_parent = go_container_l.
+ CREATE OBJECT go_grid1
+ EXPORTING
+ i_parent = go_container_r.
+
+
+ PERFORM build_header_fcat.
+ PERFORM build_item_fcat.
+
+ gs_layout-zebra = abap_true.
+ gs_layout-sel_mode = 'A'.
+ gs_layout1-zebra = abap_true.
+ gs_layout1-sel_mode = 'A'.
+
+ go_grid->set_table_for_first_display(
+ EXPORTING is_layout = gs_layout
+ CHANGING it_outtab = gt_header it_fieldcatalog = gt_fieldcat ).
+
+ go_grid1->set_table_for_first_display(
+ EXPORTING is_layout = gs_layout1
+ CHANGING it_outtab = gt_item it_fieldcatalog = gt_fieldcat1 ).
+
+ IF gt_header IS NOT INITIAL.
+ READ TABLE gt_header INTO gs_header INDEX 1.
+ gv_selected_grp = gs_header-grp.
+ PERFORM read_item USING gv_selected_grp.
+ PERFORM apply_dynamic_item_fcat.
+ PERFORM refresh_grid USING go_grid1.
+ ENDIF.
+
+ CREATE OBJECT go_events.
+* SET HANDLER go_events->on_toolbar FOR go_grid.
+* SET HANDLER go_events->on_user_command FOR go_grid.
+ SET HANDLER go_events->on_double_click FOR go_grid.
+* SET HANDLER go_events->on_data_changed FOR go_grid.
+* SET HANDLER go_events->on_toolbar FOR go_grid1.
+* SET HANDLER go_events->on_user_command FOR go_grid1.
+* SET HANDLER go_events->on_data_changed FOR go_grid1.
+
+ENDFORM.
+*&---------------------------------------------------------------------*
+*& Module ALV_DISPLAY_0100 OUTPUT
+*&---------------------------------------------------------------------*
+*&
+*&---------------------------------------------------------------------*
+MODULE alv_display_0100 OUTPUT.
+ IF go_docking_container IS INITIAL.
+ PERFORM create_controls.
+ ENDIF.
+ENDMODULE.
diff --git a/src/zcom0010o01.prog.xml b/src/zcom0010o01.prog.xml
new file mode 100644
index 0000000..9e47bdd
--- /dev/null
+++ b/src/zcom0010o01.prog.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+ ZCOM0010O01
+ I
+ E
+ X
+
+
+ -
+ R
+ Include ZCOM0010O01
+ 19
+
+
+
+
+
diff --git a/src/zcom0010top.prog.abap b/src/zcom0010top.prog.abap
new file mode 100644
index 0000000..b731044
--- /dev/null
+++ b/src/zcom0010top.prog.abap
@@ -0,0 +1,80 @@
+*&---------------------------------------------------------------------*
+*& Include ZCOM0010TOP - Report ZCOM0010
+*&---------------------------------------------------------------------*
+INCLUDE zco_constants.
+INCLUDE zco_variant.
+INCLUDE zco_macro.
+
+TABLES: zcat0010, zcat0020.
+
+SELECTION-SCREEN BEGIN OF BLOCK b01 WITH FRAME TITLE TEXT-t01.
+ PARAMETERS: p_appli TYPE zcat0010-appli OBLIGATORY DEFAULT 'CO',
+ p_grp TYPE zcat0010-grp,
+ p_spras TYPE zcat0010-spras NO-DISPLAY.
+SELECTION-SCREEN END OF BLOCK b01.
+
+TYPES: BEGIN OF ty_header,
+ mark TYPE c LENGTH 1,
+ appli TYPE zcat0010-appli,
+ grp TYPE zcat0010-grp,
+ spras TYPE zcat0010-spras,
+ grp_txt TYPE zcat0010-grp_txt,
+ hdr_01 TYPE zcat0010-hdr_01,
+ len_01 TYPE zcat0010-len_01,
+ hdr_02 TYPE zcat0010-hdr_02,
+ len_02 TYPE zcat0010-len_02,
+ hdr_03 TYPE zcat0010-hdr_03,
+ len_03 TYPE zcat0010-len_03,
+ hdr_04 TYPE zcat0010-hdr_04,
+ len_04 TYPE zcat0010-len_04,
+ hdr_05 TYPE zcat0010-hdr_05,
+ len_05 TYPE zcat0010-len_05,
+ hdr_06 TYPE zcat0010-hdr_06,
+ len_06 TYPE zcat0010-len_06,
+ hdr_07 TYPE zcat0010-hdr_07,
+ len_07 TYPE zcat0010-len_07,
+ hdr_08 TYPE zcat0010-hdr_08,
+ len_08 TYPE zcat0010-len_08,
+ hdr_09 TYPE zcat0010-hdr_09,
+ len_09 TYPE zcat0010-len_09,
+ hdr_10 TYPE zcat0010-hdr_10,
+ len_10 TYPE zcat0010-len_10,
+ fcnt TYPE zcat0010-fcnt,
+ remk TYPE zcat0010-remk,
+ mode TYPE c LENGTH 1,
+ END OF ty_header.
+TYPES tt_header TYPE STANDARD TABLE OF ty_header WITH DEFAULT KEY.
+
+TYPES: BEGIN OF ty_item,
+ mark TYPE c LENGTH 1,
+ appli TYPE zcat0020-appli,
+ grp TYPE zcat0020-grp,
+ spras TYPE zcat0020-spras,
+ code TYPE zcat0020-code,
+ code_txt TYPE zcat0020-code_txt,
+ fld_01 TYPE zcat0020-fld_01,
+ fld_02 TYPE zcat0020-fld_02,
+ fld_03 TYPE zcat0020-fld_03,
+ fld_04 TYPE zcat0020-fld_04,
+ fld_05 TYPE zcat0020-fld_05,
+ fld_06 TYPE zcat0020-fld_06,
+ fld_07 TYPE zcat0020-fld_07,
+ fld_08 TYPE zcat0020-fld_08,
+ fld_09 TYPE zcat0020-fld_09,
+ fld_10 TYPE zcat0020-fld_10,
+ useyn TYPE zcat0020-useyn,
+ sortseq TYPE zcat0020-sortseq,
+ mode TYPE c LENGTH 1,
+ END OF ty_item.
+TYPES tt_item TYPE STANDARD TABLE OF ty_item WITH DEFAULT KEY.
+
+DATA: gt_header TYPE tt_header,
+ gs_header TYPE ty_header,
+ gt_item TYPE tt_item,
+ gs_item TYPE ty_item,
+ gv_selected_grp TYPE zcat0010-grp,
+ gv_lines TYPE i.
+
+
+
+DATA go_events TYPE REF TO lcl_events.
diff --git a/src/zcom0010top.prog.xml b/src/zcom0010top.prog.xml
new file mode 100644
index 0000000..00632ad
--- /dev/null
+++ b/src/zcom0010top.prog.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+ ZCOM0010TOP
+ I
+ E
+ X
+
+
+ -
+ R
+ Include ZCOM0010TOP
+ 19
+
+
+
+
+
diff --git a/src/zd_appli_tr01.doma.xml b/src/zd_appli_tr01.doma.xml
new file mode 100644
index 0000000..5763b13
--- /dev/null
+++ b/src/zd_appli_tr01.doma.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+ ZD_APPLI_TR01
+ E
+ CHAR
+ 000002
+ 000002
+ X
+ SAP applications
+
+
+
+ 0001
+ E
+ CO
+ Controlling
+
+
+ 0002
+ E
+ TX
+ TAX
+
+
+
+
+
diff --git a/src/ze_appli_tr01.dtel.xml b/src/ze_appli_tr01.dtel.xml
new file mode 100644
index 0000000..bbe304e
--- /dev/null
+++ b/src/ze_appli_tr01.dtel.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+ ZE_APPLI_TR01
+ E
+ ZD_APPLI_TR01
+ 05
+ 10
+ 15
+ 20
+ Application area
+ AppAr
+ Applicat.
+ ApplicationArea
+ Application area
+ E
+ D
+
+
+
+
diff --git a/src/ze_se_code_value.dtel.xml b/src/ze_se_code_value.dtel.xml
new file mode 100644
index 0000000..7cca372
--- /dev/null
+++ b/src/ze_se_code_value.dtel.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+ ZE_SE_CODE_VALUE
+ E
+ 15
+ 10
+ 15
+ 20
+ Code value
+ Code value
+ Code value
+ Code value
+ Code value
+ E
+ CHAR
+ 000012
+ 000012
+
+
+
+
diff --git a/src/zqtxt_code.dtel.xml b/src/zqtxt_code.dtel.xml
new file mode 100644
index 0000000..24b9ac9
--- /dev/null
+++ b/src/zqtxt_code.dtel.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+ ZQTXT_CODE
+ E
+ 40
+ 10
+ 15
+ 20
+ Short Text for Code
+ Short Text for Code
+ Short Text
+ Short Text
+ Short Text for Code
+ E
+ CHAR
+ 000040
+ 000040
+
+
+
+
diff --git a/src/zrfks0.tabl.xml b/src/zrfks0.tabl.xml
new file mode 100644
index 0000000..fd62abe
--- /dev/null
+++ b/src/zrfks0.tabl.xml
@@ -0,0 +1,64 @@
+
+
+
+
+
+ ZRFKS0
+ E
+ INTTAB
+ Dialog Fields for Screens from Function Group FKS0
+ 1
+
+
+
+ ERNAM
+ ERNAM
+ 0
+ E
+
+
+ ERDAT
+ ERDAT
+ 0
+ T
+ E
+
+
+ ERTIM
+ 0
+ T
+ 000012
+ TIMS
+ 000006
+ TIMS
+ Time at which the object was created
+ T
+
+
+ AENAM
+ AENAM
+ 0
+ E
+
+
+ AEDAT
+ AEDAT
+ 0
+ T
+ E
+
+
+ AETIM
+ 0
+ T
+ 000012
+ TIMS
+ 000006
+ TIMS
+ Time at Which the Object Was Last Changed
+ T
+
+
+
+
+