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..b8e25b6
--- /dev/null
+++ b/src/package.devc.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+ 간편장부및 부가세 신고
+
+
+
+
diff --git a/src/z_cds_date_param.ddls.asddls b/src/z_cds_date_param.ddls.asddls
new file mode 100644
index 0000000..192ccc4
--- /dev/null
+++ b/src/z_cds_date_param.ddls.asddls
@@ -0,0 +1,24 @@
+@AbapCatalog.sqlViewName: 'ZV_DATEPARM'
+@AbapCatalog.compiler.compareFilter: true
+@AbapCatalog.preserveKey: true
+@AccessControl.authorizationCheck: #NOT_REQUIRED
+@EndUserText.label: 'test'
+@Metadata.ignorePropagatedAnnotations: true
+define view Z_CDS_DATE_PARAM
+ with parameters p_date : abap.dats
+as select from zttax0020
+{
+ key reg_no,
+ key confirm_date,
+ shop_nm,
+
+ substring(
+ DATS_ADD_MONTHS(
+ confirm_date,
+ -1,
+ 'FAIL'
+ ), 1 , 6 ) as test
+
+}
+
+where confirm_date >= $parameters.p_date
diff --git a/src/z_cds_date_param.ddls.baseinfo b/src/z_cds_date_param.ddls.baseinfo
new file mode 100644
index 0000000..f09f305
--- /dev/null
+++ b/src/z_cds_date_param.ddls.baseinfo
@@ -0,0 +1,19 @@
+{
+"BASEINFO":
+{
+"FROM":
+[
+"ZTTAX0020"
+],
+"ASSOCIATED":
+[],
+"BASE":
+[],
+"ANNO_REF":
+[],
+"SCALAR_FUNCTION":
+[],
+"VERSION":0,
+"ANNOREF_EVALUATION_ERROR":""
+}
+}
\ No newline at end of file
diff --git a/src/z_cds_date_param.ddls.xml b/src/z_cds_date_param.ddls.xml
new file mode 100644
index 0000000..d1c863b
--- /dev/null
+++ b/src/z_cds_date_param.ddls.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+ Z_CDS_DATE_PARAM
+ E
+ test
+ V
+
+
+
+
diff --git a/src/zcds_vtax0008.ddls.asddls b/src/zcds_vtax0008.ddls.asddls
new file mode 100644
index 0000000..af20f64
--- /dev/null
+++ b/src/zcds_vtax0008.ddls.asddls
@@ -0,0 +1,30 @@
+@AbapCatalog.sqlViewName: 'ZVTAX0008'
+@AbapCatalog.compiler.compareFilter: true
+@AbapCatalog.preserveKey: true
+@AccessControl.authorizationCheck: #NOT_REQUIRED
+@EndUserText.label: '감가상각 스케쥴표'
+@Metadata.ignorePropagatedAnnotations: true
+define view zcds_vtax0008 as
+select
+ p.assettype,
+ p.assetcode,
+ q.seq_no,
+ q.yearmonth,
+ p.assetdate,
+ p.aname,
+ p.depr_method,
+ p.useful_life,
+ @Semantics.currencyCode: true
+ p.waers,
+ @Semantics.amount.currencyCode: 'waers'
+ p.assetprice,
+ q.start_ym,
+ q.end_ym,
+ @Semantics.amount.currencyCode: 'waers'
+ q.dep_amt
+ from zttax0008 as p
+ inner join ztf_asset_depr as q
+ on p.mandt = q.mandt
+ and p.assettype = q.assettype
+ and p.assetcode = q.assetcode
+ ;
diff --git a/src/zcds_vtax0008.ddls.baseinfo b/src/zcds_vtax0008.ddls.baseinfo
new file mode 100644
index 0000000..d838a8d
--- /dev/null
+++ b/src/zcds_vtax0008.ddls.baseinfo
@@ -0,0 +1,19 @@
+{
+"BASEINFO":
+{
+"FROM":
+[
+"ZTTAX0008"
+],
+"ASSOCIATED":
+[],
+"BASE":
+[],
+"ANNO_REF":
+[],
+"SCALAR_FUNCTION":
+[],
+"VERSION":0,
+"ANNOREF_EVALUATION_ERROR":""
+}
+}
\ No newline at end of file
diff --git a/src/zcds_vtax0008.ddls.xml b/src/zcds_vtax0008.ddls.xml
new file mode 100644
index 0000000..5f5d6fa
--- /dev/null
+++ b/src/zcds_vtax0008.ddls.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+ ZCDS_VTAX0008
+ E
+ 감가상각 스케쥴표
+ V
+
+
+
+
diff --git a/src/zcl_common_class.clas.abap b/src/zcl_common_class.clas.abap
new file mode 100644
index 0000000..1352a90
--- /dev/null
+++ b/src/zcl_common_class.clas.abap
@@ -0,0 +1,25 @@
+class ZCL_COMMON_CLASS definition
+ public
+ create public .
+
+public section.
+
+ types TY_ROW type STRING_TABLE .
+ types:
+ TY_T_ROW type STANDARD TABLE OF TY_ROW with DEFAULT KEY .
+
+ methods UPLOAD_EXCEL_TO_ITAB
+ returning
+ value(RR_DATA) type ref to DATA .
+protected section.
+private section.
+ENDCLASS.
+
+
+
+CLASS ZCL_COMMON_CLASS IMPLEMENTATION.
+
+
+ method UPLOAD_EXCEL_TO_ITAB.
+ endmethod.
+ENDCLASS.
diff --git a/src/zcl_common_class.clas.xml b/src/zcl_common_class.clas.xml
new file mode 100644
index 0000000..c7cded8
--- /dev/null
+++ b/src/zcl_common_class.clas.xml
@@ -0,0 +1,41 @@
+
+
+
+
+
+ ZCL_COMMON_CLASS
+ E
+ 공통 클래스
+ 1
+ X
+ X
+ X
+
+
+
+ TY_ROW
+ E
+ Table of Strings
+
+
+ TY_T_ROW
+ E
+ Table of Strings
+
+
+ UPLOAD_EXCEL_TO_ITAB
+ E
+ 선택된 xlsx 파일 내용을 Itab 으로 리턴
+
+
+
+
+ UPLOAD_EXCEL_TO_ITAB
+ RR_DATA
+ E
+ Table of Strings
+
+
+
+
+
diff --git a/src/zcl_custom_tax_amdp.clas.abap b/src/zcl_custom_tax_amdp.clas.abap
new file mode 100644
index 0000000..c6ed4aa
--- /dev/null
+++ b/src/zcl_custom_tax_amdp.clas.abap
@@ -0,0 +1,78 @@
+class ZCL_CUSTOM_TAX_AMDP definition
+ public
+ final
+ create public .
+
+public section.
+
+ interfaces IF_AMDP_MARKER_HDB .
+
+ class-methods GET_ASSET_DEPR_PLAN
+ for table function ZTF_ASSET_DEPR .
+protected section.
+private section.
+ENDCLASS.
+
+
+
+CLASS ZCL_CUSTOM_TAX_AMDP IMPLEMENTATION.
+
+
+ METHOD get_asset_depr_plan
+ BY DATABASE FUNCTION
+ FOR HDB
+ LANGUAGE SQLSCRIPT
+ OPTIONS READ-ONLY
+ USING zttax0008 scal_tt_month.
+
+ RETURN
+ select mandt,
+ assettype,
+ assetcode,
+* assetdate,
+* aname,
+* depr_method,
+* useful_life,
+ month_cnt,
+ start_ym,
+ end_ym,
+* assetprice,
+ yearmonth,
+ seq_no,
+
+* Round amt fixed.
+ CASE when seq_no = month_cnt then
+ ( dep_amt + assetprice - (dep_amt * month_cnt ))
+ ELSE dep_amt
+ END as dep_amt,
+ waers
+ from (
+ SELECT mandt,
+ assettype,
+ assetcode,
+* assetdate,
+* aname,
+* depr_method,
+* useful_life,
+ useful_life * 12 as month_cnt,
+ to_varchar(assetdate, 'yyyymm') as start_ym,
+ to_varchar(add_months(assetdate, useful_life * 12 - 1 ), 'YYYYMM') as end_ym,
+ assetprice,
+ q.yearmonth,
+ row_number() over (
+ partition by p.assetcode
+ order by q.yearmonth
+ ) as seq_no,
+
+ round(assetprice / (useful_life * 12), 2) as dep_amt,
+
+ waers
+ from zttax0008 as p
+ inner join scal_tt_month as q
+ ON q.yearmonth >= to_varchar(assetdate, 'yyyymm')
+ and q.yearmonth < to_varchar(add_months(assetdate, useful_life * 12 ), 'YYYYMM')
+ where p.depr_method = '1'
+ );
+
+ ENDMETHOD.
+ENDCLASS.
diff --git a/src/zcl_custom_tax_amdp.clas.xml b/src/zcl_custom_tax_amdp.clas.xml
new file mode 100644
index 0000000..7628fee
--- /dev/null
+++ b/src/zcl_custom_tax_amdp.clas.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+ ZCL_CUSTOM_TAX_AMDP
+ E
+ 조회
+ 1
+ X
+ X
+ X
+
+
+
+
diff --git a/src/zco_constants.prog.abap b/src/zco_constants.prog.abap
new file mode 100644
index 0000000..78fe1e1
--- /dev/null
+++ b/src/zco_constants.prog.abap
@@ -0,0 +1,168 @@
+*&---------------------------------------------------------------------*
+*& Include ZCO_CONSTANTS
+*&---------------------------------------------------------------------*
+
+*&---------------------------------------------------------------------*
+*& Include ZH_CONSTANTS
+*&---------------------------------------------------------------------*
+
+*-- ALV Grid 번호.
+CONSTANTS: gc_grid(5) VALUE'GRID',
+ gc_grid1(5) VALUE'GRID1',
+ gc_grid2(5) VALUE'GRID2',
+ gc_grid3(5) VALUE'GRID3',
+ gc_grid4(5) VALUE'GRID4',
+ gc_grid5(5) VALUE'GRID5'.
+
+*-- 수량 단위.
+CONSTANTS: BEGIN OF gc_quan,
+ pc TYPE t006-msehi VALUE 'PC',
+ st TYPE t006-msehi VALUE 'ST',
+ ea TYPE t006-msehi VALUE 'EA',
+ END OF gc_quan.
+
+*-- 금액 단위.
+CONSTANTS: BEGIN OF gc_waers,
+ krw TYPE tcurc-waers VALUE 'KRW',
+ usd TYPE tcurc-waers VALUE 'USD',
+ END OF gc_waers.
+
+*-- Icon.
+CONSTANTS: BEGIN OF gc_icon,
+ success LIKE icon-id VALUE '@08@', " 성공.
+ error LIKE icon-id VALUE '@0A@', " 에러.
+ warning LIKE icon-id VALUE '@09@', " 경고.
+
+ create LIKE icon-id VALUE '@0Y@', " 생성.
+ change LIKE icon-id VALUE '@0Z@', " 변경.
+ delete LIKE icon-id VALUE '@11@', " 삭제.
+
+ green LIKE icon-id VALUE '@5B@',
+ red LIKE icon-id VALUE '@5C@',
+ yellow LIKE icon-id VALUE '@5D@',
+
+ expand LIKE icon-id VALUE '@3S@', " 확장 - 펼치기.
+ collapse LIKE icon-id VALUE '@3T@', " 접기.
+ para LIKE icon-id VALUE '@77@', " Tree Value.
+ END OF gc_icon.
+
+*-- Fcode.
+CONSTANTS: BEGIN OF gc_fcode,
+ back LIKE sy-ucomm VALUE 'BACK',
+ canc LIKE sy-ucomm VALUE 'CANC',
+ exit LIKE sy-ucomm VALUE 'EXIT',
+
+ save LIKE sy-ucomm VALUE 'SAVE',
+ dele LIKE sy-ucomm VALUE 'DELE',
+ exec LIKE sy-ucomm VALUE 'EXEC',
+ excel LIKE sy-ucomm VALUE 'EXCEL',
+ dist LIKE sy-ucomm VALUE 'DIST',
+ disp LIKE sy-ucomm VALUE 'DISP',
+ link LIKE sy-ucomm VALUE 'LINK',
+ refresh LIKE sy-ucomm VALUE 'REFRESH',
+
+ pf01 LIKE sy-ucomm VALUE 'PF01', " BTN 1.
+ pf02 LIKE sy-ucomm VALUE 'PF02', " BTN 2.
+ pf03 LIKE sy-ucomm VALUE 'PF03', " BTN 3.
+ pf04 LIKE sy-ucomm VALUE 'PF04', " BTN 4.
+
+ pick LIKE sy-ucomm VALUE 'PICK',
+
+* 전표.
+ post LIKE sy-ucomm VALUE 'POST',
+ reve LIKE sy-ucomm VALUE 'REVE',
+
+ togg LIKE sy-ucomm VALUE 'TOGG',
+ END OF gc_fcode.
+
+*-- Popup Answer Code.
+CONSTANTS: BEGIN OF gc_answer,
+ yes TYPE c VALUE 'J',
+ no TYPE c VALUE 'N',
+ canc TYPE c VALUE 'A',
+ END OF gc_answer.
+
+*-- ALV Mode.
+CONSTANTS: BEGIN OF gc_mode,
+ create TYPE c VALUE 'C', " 생성.
+ modify TYPE c VALUE 'M', " 변경.
+ delete TYPE c VALUE 'D', " 삭제.
+ excel TYPE c VALUE 'A', " 엑셀.
+ error TYPE c VALUE 'E', " 에러.
+ save TYPE c VALUE 'S', " 저장.
+ disp TYPE c VALUE 'P', " 조회.
+ change TYPE c VALUE 'H', " 수정.
+ END OF gc_mode.
+
+*-- Tcode 관련.
+CONSTANTS: BEGIN OF gc_tcode,
+ fb01(4) TYPE c VALUE 'FB01', " 전표생성.
+ fb02(4) TYPE c VALUE 'FB02', " 전표변경.
+ fb03(4) TYPE c VALUE 'FB03', " 전표조회.
+ END OF gc_tcode.
+
+*-- 세트 값.
+*CONSTANTS: BEGIN OF gc_setcls,
+* set LIKE setnode-setclass VALUE '0000', " 세트
+* kostl LIKE setnode-setclass VALUE '0101', " 코스트센터 그룹.
+* kstar LIKE setnode-setclass VALUE '0102', " 원가요소
+* prctr LIKE setnode-setclass VALUE '0106', " 손익센터
+* racct LIKE setnode-setclass VALUE '0109', " 계정
+* END OF gc_setcls.
+
+**-- 공통 Code.
+*CONSTANTS : BEGIN OF gc_codegrp,
+* j001 LIKE zcot0021-codegrp VALUE 'J001', " 사업부문별 표준계층구조 매핑
+* j002 LIKE zcot0021-codegrp VALUE 'J002', " 판매오더 손익센터 대체
+* j003 LIKE zcot0021-codegrp VALUE 'J003', " 코스트센터-브랜드 매핑
+* a001 LIKE zcot0021-codegrp VALUE 'A001', " 점포사업장 매출원가 대체
+* k101 LIKE zcot0021-codegrp VALUE 'K101', " 경관차조정 - 성과급
+* k102 LIKE zcot0021-codegrp VALUE 'K102', " 경관차조정 - 전대
+* k103 LIKE zcot0021-codegrp VALUE 'K103', " 경관차조정 - 리스
+* k104 LIKE zcot0021-codegrp VALUE 'K104', " 경관차조정 - 손상관련 감가상각
+* k106 LIKE zcot0021-codegrp VALUE 'K106', " 경관차조정 - 손상처리 조정
+* k109 LIKE zcot0021-codegrp VALUE 'K109', " 경관차조정 - FE 물류비 대체
+* a011 LIKE zcot0021-codegrp VALUE 'A011', " 경관차조정 - 매출차감 복원
+*
+* a002 LIKE zcot0021-codegrp VALUE 'A002', " 점포수불부 생산입고/타계정출고계정(ZCOR0010)
+* a005 LIKE zcot0021-codegrp VALUE 'A005', " 재료비/생산금액집계(ZCOR0060)
+* c004 LIKE zcot0021-codegrp VALUE 'C004', " NRV 수불집계 출고유형(ZCOR0280)
+* c005 LIKE zcot0021-codegrp VALUE 'C005', " NRV 출고율적용플랜트(ZCOR0280)
+* c007 LIKE zcot0021-codegrp VALUE 'C007', " 후레쉬센터 경비종류별 원가요소그룹(ZCOR0650)
+* c009 LIKE zcot0021-codegrp VALUE 'C009', " 물류비 배부기준
+*
+* t001 LIKE zcot0021-codegrp VALUE 'T001', " 오더유형
+* t002 LIKE zcot0021-codegrp VALUE 'T002', " DEFAULT 오더그룹
+* END OF gc_codegrp.
+
+*-- SU01 - 파라미터.
+CONSTANTS: BEGIN OF gc_para_code,
+ cac(3) TYPE c VALUE 'CAC',
+ buk(3) TYPE c VALUE 'BUK',
+ END OF gc_para_code.
+
+*-- 계획버전
+*CONSTANTS: BEGIN OF gc_version,
+* 000 TYPE tkvs-versi VALUE '000', " 계획/실제
+* a00 TYPE tkvs-versi VALUE 'A00', " 경영
+* a10 TYPE tkvs-versi VALUE 'A10', " 수정
+* r00 TYPE tkvs-versi VALUE 'R00', " 실행
+* b00 TYPE tkvs-versi VALUE 'B00', " 예산(기초)
+* END OF gc_version.
+
+*-- 컨버전
+CONSTANTS: BEGIN OF gc_conv,
+ alpha TYPE convexit VALUE 'ALPHA',
+ matn1 TYPE convexit VALUE 'MATN1',
+ cunit TYPE convexit VALUE 'CUNIT',
+ END OF gc_conv.
+
+*-- 데이터타입
+CONSTANTS: BEGIN OF gc_datatype,
+ p(1) TYPE c VALUE 'P',
+ i(1) TYPE c VALUE 'I',
+ END OF gc_datatype.
+
+CONSTANTS : gc_e TYPE c VALUE 'E',
+ gc_s TYPE c VALUE 'S',
+ gc_d TYPE c VALUE 'D'.
diff --git a/src/zco_constants.prog.xml b/src/zco_constants.prog.xml
new file mode 100644
index 0000000..68af1e7
--- /dev/null
+++ b/src/zco_constants.prog.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+ ZCO_CONSTANTS
+ I
+ X
+
+
+
+
diff --git a/src/zco_macro.prog.abap b/src/zco_macro.prog.abap
new file mode 100644
index 0000000..5120f88
--- /dev/null
+++ b/src/zco_macro.prog.abap
@@ -0,0 +1,624 @@
+*&---------------------------------------------------------------------*
+*& Include ZCO_MACRO
+*&---------------------------------------------------------------------*
+
+*&---------------------------------------------------------------------*
+*& Include ZCO_MACRO
+*&---------------------------------------------------------------------*
+
+*&---------------------------------------------------------------------*
+*& Macro. *
+* 001. __ALV_REFRESH - Refresh ALV. *
+* 002. __ALV_OPTIMIZE - Set Optimize. *
+* 003. __ALV_EDITCELL - ALV Edit Cell *
+* 004. __ALV_GETCELL - ALV Cell. *
+* 005. __ALV_TOOLBAR - ALV Toolbar 생성 *
+* 006. __ALV_CELLSTYLE - Cellstyle 지정 (Enable / Disable) *
+* 007. __ALV_CELLCOLOR - Cellcolor 지정 *
+* 008. __ALV_CELLHOTSPOT - Cell Hotspot 지정 *
+* 009. __ALV_CURSOR - Cell Cursor 지정 *
+* *
+* 010. __GET_SELECT_ROWS - ALV 선택 Rows 가져오기 *
+* 011. __SET_SELECT_ROWS - ALV 선택 Rows 유지하기 *
+* 012. __SET_FRONTEND_FIELDCAT - 필드카다로그 재설정 *
+* 013. __SET_FRONTEND_LAYOUT - Layout 재설정 *
+* 014. __SET_READY_INPUT - ALV Input 활성 Check *
+* *
+* 020. __SPLITTER - 컨테이너 Split *
+* 021. __SET_SPLITTER - Split한 Container 연결 *
+* 022. __HEIGHT_SPLIT - Split 높이지정 *
+* 023. __WIDTH_SPLIT - Split 넓이지정 *
+* *
+* 030. __RANGES - Range 생성. *
+* 031. __ICON_CREATE - Button Icon 생성. *
+* 032. __POPUP_TO_CONFIRM_STEP - Yer / No Popup 실행 *
+* 033. __LASTDAY_OF_MONTHS - 월의 마지막날 가져오기 *
+* 034. __CONVERSION_ALPHA - Conversion Input/Output *
+* 035. __CONVERSION_MATNR - Conversion Material Input/Output *
+* 036. __CONVERSION_CURRENCY - 통화단위에 맞게 금액변경 *
+* 037. __SAPGUI_INDICATOR - SAPGUI 상태바 *
+* 038. __SF_SPECIALCHAR_DELETE - 특수문자 제거(EXCEL 업로드시) *
+* *
+* 040. __DATE_VALID_CHECK - 일자타입 Validation Check *
+* 041. __BETWEEN_DATES - 일간의 일자 구하기 *
+*&---------------------------------------------------------------------*
+
+*----------------------------------------------------------------------*
+* 001. __ALV_REFRESH - Refresh ALV.
+*----------------------------------------------------------------------*
+DEFINE __alv_refresh.
+
+*-- ALV Refresh.
+ CLEAR gs_stable.
+ gs_stable-row = &3. gs_stable-col = &4.
+ CALL METHOD &1->refresh_table_display
+ EXPORTING
+ i_soft_refresh = &2
+ is_stable = gs_stable.
+
+END-OF-DEFINITION.
+
+*----------------------------------------------------------------------*
+* 002. __ALV_OPTIMIZE - Set Optimize.
+*----------------------------------------------------------------------*
+DEFINE __alv_optimize.
+
+*-- Set_OPTIMIZE.
+ CALL METHOD &1->set_optimize_all_cols.
+
+END-OF-DEFINITION.
+
+*&---------------------------------------------------------------------*
+*& 003. __ALV_EDITCELL - ALV Edit Cell.
+*&---------------------------------------------------------------------*
+DATA: po_er_data_changed TYPE REF TO cl_alv_changed_data_protocol,
+ gv_cell_index TYPE lvc_s_modi-row_id.
+
+DEFINE __alv_editcell.
+
+*-- ALV Cell Modify.
+ CALL METHOD po_er_data_changed->modify_cell
+ EXPORTING
+ i_row_id = gv_cell_index
+ i_fieldname = &1
+ i_value = &2.
+
+END-OF-DEFINITION.
+
+*&---------------------------------------------------------------------*
+*& 004. __ALV_GETCELL - ALV Cell .
+*&---------------------------------------------------------------------*
+DEFINE __alv_getcell.
+
+*-- ALV Cell Value.
+ CALL METHOD po_er_data_changed->get_cell_value
+ EXPORTING
+ i_row_id = gv_cell_index
+ i_fieldname = &1
+ IMPORTING
+ e_value = &2.
+
+END-OF-DEFINITION.
+
+*&---------------------------------------------------------------------*
+*& 005. __ALV_TOOLBAR - ALV Toolbar 생성.
+*&---------------------------------------------------------------------*
+DEFINE __alv_toolbar.
+
+*-- Crete ALV Toolbar.
+ CLEAR: gs_toolbar.
+ MOVE : &3 TO gs_toolbar-function, " FUNCTION CODE.
+ &4 TO gs_toolbar-icon, " ICON.
+ &5 TO gs_toolbar-quickinfo, " ICON QUICKINFO.
+ &6 TO gs_toolbar-text, " BUTTON TEXT.
+ &7 TO gs_toolbar-butn_type, " BUTTON TYPE .
+ &8 TO gs_toolbar-disabled. " 'X' - 사용 불가능.
+
+ INSERT gs_toolbar INTO &1->mt_toolbar INDEX &2.
+
+END-OF-DEFINITION.
+
+*&---------------------------------------------------------------------*
+*& 006. __ALV_CELLSTYLE - Cellstyle 지정 (Enable / Disable).
+*&---------------------------------------------------------------------*
+DEFINE __alv_cellstyle.
+
+*-- SET ALV CELLSTYLE.
+ CLEAR: gs_style.
+ gs_style-fieldname = &1.
+
+ CASE &2.
+ WHEN 'E'.
+ gs_style-style = cl_gui_alv_grid=>mc_style_enabled.
+
+ WHEN 'D'.
+ gs_style-style = cl_gui_alv_grid=>mc_style_disabled.
+
+ WHEN 'H'.
+ gs_style-style = cl_gui_alv_grid=>mc_style_hotspot.
+ ENDCASE.
+
+*--//
+ INSERT gs_style INTO TABLE gt_style.
+
+END-OF-DEFINITION.
+
+*&---------------------------------------------------------------------*
+*& 007. __ALV_CELLCOLOR- Cellcolor 지정.
+*&---------------------------------------------------------------------*
+DEFINE __alv_cellcolor.
+
+*-- SET ALV CELLCOLOR.
+ CLEAR: gs_color.
+ gs_color-fname = &1. " Fieldname.
+ gs_color-color-col = &2. " 색상.
+ gs_color-color-int = &3. " 강조.
+ INSERT gs_color INTO TABLE gt_color.
+
+END-OF-DEFINITION.
+
+*&---------------------------------------------------------------------*
+*& 008. __ALV_CELLHOTSPOT - Cell Hotspot 지정.
+*&---------------------------------------------------------------------*
+DEFINE __alv_cellhotspot.
+
+*-- SET ALV CELLHOTSPOT.
+ CLEAR: gs_style.
+ gs_style-fieldname = &1.
+
+*--
+ gs_style-style = cl_gui_alv_grid=>mc_style_hotspot.
+ INSERT gs_style INTO TABLE gt_style.
+
+END-OF-DEFINITION.
+
+*&---------------------------------------------------------------------*
+*& 009. __ALV_CURSOR - ALC Cell Cursor 지정.
+*&---------------------------------------------------------------------*
+DEFINE __alv_cursor.
+
+ DATA: ls_col TYPE lvc_s_col,
+ ls_row TYPE lvc_s_row.
+
+ CLEAR: ls_col, ls_row.
+ ls_row-index = &2.
+ ls_col-fieldname = &3.
+
+*-- Cursor 지정.
+ CALL METHOD &1->set_current_cell_via_id
+ EXPORTING
+ is_row_id = ls_row
+ is_column_id = ls_col.
+
+***-- Cursor의 화면 지정.
+** CALL METHOD &1->set_scroll_info_via_id
+** EXPORTING
+** is_row_info = ls_row
+** is_col_info = ls_col.
+
+END-OF-DEFINITION.
+
+*&---------------------------------------------------------------------*
+*& 010. __GET_SELECT_ROWS - ALV 선택 Rows 가져오기
+*&---------------------------------------------------------------------*
+DEFINE __get_select_rows.
+
+ CLEAR: gs_rows, gt_rows, gt_rows[].
+
+*-- 선택 ROW 가져오기.
+ CALL METHOD &1->get_selected_rows
+ IMPORTING
+ et_index_rows = gt_rows.
+
+END-OF-DEFINITION.
+
+*&---------------------------------------------------------------------*
+*& 011. __SET_SELECT_ROWS - ALV 선택 Rows 유지하기
+*&---------------------------------------------------------------------*
+DEFINE __set_select_rows.
+
+*-- 선택 ROW 유지하기.
+ CALL METHOD &1->set_selected_rows
+ EXPORTING
+ it_index_rows = gt_rows.
+
+END-OF-DEFINITION.
+
+*&---------------------------------------------------------------------*
+*& 012. __SET_FRONTEND_FIELDCAT - 필드카다로그 재설정
+*&---------------------------------------------------------------------*
+DEFINE __set_frontend_fieldcat.
+
+*-- 필드카다로그 재설정.
+ CALL METHOD &1->set_frontend_fieldcatalog
+ EXPORTING
+ it_fieldcatalog = &2.
+
+END-OF-DEFINITION.
+
+*&---------------------------------------------------------------------*
+*& 013. __SET_FRONTEND_LAYOUT - Layout 재설정
+*&---------------------------------------------------------------------*
+DEFINE __set_frontend_layout.
+
+*-- 필드카다로그 재설정.
+ CALL METHOD &1->set_frontend_layout
+ EXPORTING
+ is_layout = &2.
+
+END-OF-DEFINITION.
+
+*&---------------------------------------------------------------------*
+*& 014. __SET_READY_INPUT - ALV Input 활성 Check
+*&---------------------------------------------------------------------*
+DEFINE __set_ready_input.
+
+*-- ALV Input 활성 Check
+ CALL METHOD &1->set_ready_for_input
+ EXPORTING
+ i_ready_for_input = &2.
+
+END-OF-DEFINITION.
+
+*&---------------------------------------------------------------------*
+*& 020. __SPLITTER - 컨테이너 Split.
+*&---------------------------------------------------------------------*
+DEFINE __splitter.
+
+*-- Create a splitter control for ALV Grid Control.
+ CREATE OBJECT &1
+ EXPORTING
+ parent = &2
+ rows = &3
+ columns = &4
+ EXCEPTIONS
+ cntl_error = 1
+ cntl_system_error = 2
+ OTHERS = 3.
+
+END-OF-DEFINITION.
+
+*&---------------------------------------------------------------------*
+*& 021. __SET_SPLITTER - Split한 Container 연결.
+*&---------------------------------------------------------------------*
+DEFINE __set_splitter.
+
+*-- Get the containers of the splitter control.
+ CALL METHOD &1->get_container
+ EXPORTING
+ row = &3
+ column = &4
+ RECEIVING
+ container = &2.
+
+END-OF-DEFINITION.
+
+*&---------------------------------------------------------------------*
+*& 022. __HEIGHT_SPLIT - Split 높이지정.
+*&---------------------------------------------------------------------*
+DEFINE __height_split.
+
+*--
+ CALL METHOD &1->set_row_height
+ EXPORTING
+ id = &2
+ height = &3
+ EXCEPTIONS
+ cntl_error = 1
+ cntl_system_error = 2
+ OTHERS = 3.
+
+END-OF-DEFINITION.
+
+*&---------------------------------------------------------------------*
+*& 023. __WIDTH_SPLIT - Split 넓이지정.
+*&---------------------------------------------------------------------*
+DEFINE __width_split.
+
+*--
+ CALL METHOD &1->set_column_width
+ EXPORTING
+ id = &2
+ width = &3
+ EXCEPTIONS
+ cntl_error = 1
+ cntl_system_error = 2
+ OTHERS = 3.
+
+END-OF-DEFINITION.
+
+*----------------------------------------------------------------------*
+* 030. __RANGES - Range 생성.
+*----------------------------------------------------------------------*
+DEFINE __ranges.
+
+*-- Ranges 변수 Setting.
+ MOVE : &2 TO &1-sign,
+ &3 TO &1-option,
+ &4 TO &1-low,
+ &5 TO &1-high.
+
+ COLLECT &1.
+ CLEAR: &1.
+
+END-OF-DEFINITION.
+
+*&---------------------------------------------------------------------*
+*& 031. __ICON_CREATE - Button Icon 생성.
+*&---------------------------------------------------------------------*
+DEFINE __icon_create.
+
+*-- Button Icon 설정.
+ CALL FUNCTION 'ICON_CREATE'
+ EXPORTING
+ name = &1 " 아이콘.
+ text = &2 " 텍스트.
+ info = &3 " 텍스트 정보.
+ IMPORTING
+ result = &4 " 변경할 Button.
+ EXCEPTIONS
+ icon_not_found = 1
+ outputfield_too_short = 2
+ OTHERS = 3.
+
+END-OF-DEFINITION.
+
+*&---------------------------------------------------------------------*
+*& 032. __POPUP_TO_CONFIRM_STEP - Yer / No Popup 실행.
+*&---------------------------------------------------------------------*
+DATA: gv_answer.
+
+DEFINE __popup_to_confirm_step.
+
+ CLEAR: gv_answer.
+
+*-- Yer / No / Cancel Popup.
+ CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
+ EXPORTING
+ defaultoption = 'Y'
+ textline1 = &1
+ textline2 = &2
+ titel = &3
+ IMPORTING
+ answer = gv_answer.
+
+END-OF-DEFINITION.
+
+*&---------------------------------------------------------------------*
+*& 033. __LASTDAY_OF_MONTHS - 월의 마지막날 가져오기.
+*&---------------------------------------------------------------------*
+DEFINE __lastday_of_months.
+
+*-- 월의 마지막날 가져오기.
+ CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS'
+ EXPORTING
+ day_in = &1
+ IMPORTING
+ last_day_of_month = &2
+ EXCEPTIONS
+ day_in_no_date = 1
+ OTHERS = 2.
+
+END-OF-DEFINITION.
+
+*&---------------------------------------------------------------------*
+*& 034. __CONVERSION_ALPHA - Conversion Input/Output .
+*&---------------------------------------------------------------------*
+DEFINE __conversion_alpha.
+
+ CASE &1.
+ WHEN 'I'.
+ CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
+ EXPORTING
+ input = &2
+ IMPORTING
+ output = &2.
+
+ WHEN 'O'.
+ CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
+ EXPORTING
+ input = &2
+ IMPORTING
+ output = &2.
+
+ ENDCASE.
+
+END-OF-DEFINITION.
+
+*&---------------------------------------------------------------------*
+*& 035. __CONVERSION_MATNR - Conversion Material Input/Output .
+*&---------------------------------------------------------------------*
+DEFINE __conversion_matnr.
+
+ CASE &1.
+ WHEN 'I'.
+ CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
+ EXPORTING
+ input = &2
+ IMPORTING
+ output = &2.
+
+ WHEN 'O'.
+ CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'
+ EXPORTING
+ input = &2
+ IMPORTING
+ output = &2.
+
+ ENDCASE.
+
+END-OF-DEFINITION.
+
+*&---------------------------------------------------------------------*
+*& 036. __CONVERSION_CURRENCY - 통화단위에 맞게 금액변경.
+*&---------------------------------------------------------------------*
+DATA : lv_amount(50).
+
+DEFINE __conversion_currency.
+
+ CLEAR: lv_amount.
+ lv_amount = &2.
+
+ CASE &1.
+ WHEN 'I'.
+
+*-- 통화단위에 맞게 금액변경.
+ CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP'
+ EXPORTING
+ currency = &3
+ idoc_amount = lv_amount
+ IMPORTING
+ sap_amount = lv_amount.
+
+ WHEN 'O'.
+
+*-- 통화단위에 맞게 금액변경.
+ CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC'
+ EXPORTING
+ currency = &3
+ sap_amount = lv_amount
+ IMPORTING
+ idoc_amount = lv_amount.
+
+ ENDCASE.
+
+ &2 = lv_amount.
+
+END-OF-DEFINITION.
+
+*&---------------------------------------------------------------------*
+*& 037. __SAPGUI_INDICATOR - SAPGUI 상태바
+*&---------------------------------------------------------------------*
+DEFINE __sapgui_indicator.
+
+*-- SAPGUI 상태바.
+ CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
+ EXPORTING
+ percentage = &1
+ text = &2.
+
+END-OF-DEFINITION.
+*&---------------------------------------------------------------------*
+*& 038. __SF_SPECIALCHAR_DELETE - 특수문자 제거(EXCEL 업로드시)
+*&---------------------------------------------------------------------*
+DATA gv_searchhw TYPE fist-searchw.
+
+DEFINE __sf_specialchar_delete.
+ gv_searchhw = &1.
+
+ CALL FUNCTION 'SF_SPECIALCHAR_DELETE'
+ EXPORTING
+ with_specialchar = gv_searchhw
+ IMPORTING
+ without_specialchar = gv_searchhw
+ EXCEPTIONS
+ result_word_empty = 1
+ OTHERS = 2.
+
+ &1 = gv_searchhw.
+END-OF-DEFINITION.
+
+*&---------------------------------------------------------------------*
+*& 040. __DATE_VALID_CHECK - 일자타입 Validation Check .
+*&---------------------------------------------------------------------*
+
+DATA : lv_value TYPE char20,
+ lv_int TYPE i,
+ lv_len TYPE i.
+
+DEFINE: __date_valid_check.
+
+ CLEAR: lv_int, lv_len, lv_value.
+ lv_len = strlen( &1 ).
+
+ DO lv_len TIMES.
+ IF &1+lv_int(1) CA '1234567890'.
+ CONCATENATE lv_value &1+lv_int(1) INTO lv_value.
+ ENDIF.
+
+ ADD 1 TO lv_int.
+ ENDDO.
+
+ &1 = lv_value.
+
+END-OF-DEFINITION.
+
+*&---------------------------------------------------------------------*
+*& 041. __BETWEEN_DATES - 일간의 일자 구하기.
+*&---------------------------------------------------------------------*
+DEFINE __between_dates.
+
+*-- 일과 일사이 일수 구하기..
+ CALL FUNCTION 'HR_MX_INTERVAL_BETWEEN_DATES'
+ EXPORTING
+ i_date_start = &1
+ i_date_end = &2
+ IMPORTING
+ e_days = &3.
+
+END-OF-DEFINITION.
+*&---------------------------------------------------------------------*
+*& Include ZPP_MACRO
+*&---------------------------------------------------------------------*
+"-* Clear
+DEFINE M_CLEAR.
+
+ clear: &1, &1[].
+
+END-OF-DEFINITION.
+
+"-*append
+DEFINE M_APPEND.
+
+ append &1. clear &1.
+
+END-OF-DEFINITION.
+
+"-*collect
+DEFINE M_COLLECT.
+
+ collect &1. clear &1.
+
+END-OF-DEFINITION.
+
+"-*range
+DEFINE M_RANGES.
+
+ clear &1.
+
+ move : &2 to &1-sign,
+
+ &3 to &1-option,
+
+ &4 to &1-low,
+
+ &5 to &1-high.
+
+
+
+ append &1.
+
+ clear &1.
+
+END-OF-DEFINITION.
+
+"-*Range copy
+DEFINE M_RANGES_COPY.
+
+ M_CLEAR &1.
+
+ LOOP AT &2.
+
+ &1-OPTION = &2-OPTION.
+
+ &1-SIGN = &2-SIGN.
+
+ &1-LOW = &2-LOW.
+
+ &1-HIGH = &2-HIGH.
+
+ M_APPEND &1.
+
+ ENDLOOP.
+
+END-OF-DEFINITION.
diff --git a/src/zco_macro.prog.xml b/src/zco_macro.prog.xml
new file mode 100644
index 0000000..d15ef8d
--- /dev/null
+++ b/src/zco_macro.prog.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+ ZCO_MACRO
+ I
+ X
+
+
+
+
diff --git a/src/zco_variant.prog.abap b/src/zco_variant.prog.abap
new file mode 100644
index 0000000..f30a7d9
--- /dev/null
+++ b/src/zco_variant.prog.abap
@@ -0,0 +1,168 @@
+*&---------------------------------------------------------------------*
+*& Include ZCO_VARIANT
+*&---------------------------------------------------------------------*
+
+*&---------------------------------------------------------------------*
+*& Include ZH_VARIANT
+*&---------------------------------------------------------------------*
+
+TABLES: sscrfields.
+
+DATA : gv_err.
+
+*----------------------------------------------------------------------*
+* ALV DEFINE *
+*----------------------------------------------------------------------*
+DATA :
+
+*-- Container.
+ go_docking_container TYPE REF TO cl_gui_docking_container,
+ go_docking_container1 TYPE REF TO cl_gui_docking_container,
+ go_docking_container2 TYPE REF TO cl_gui_docking_container,
+ go_docking_container3 TYPE REF TO cl_gui_docking_container,
+
+ go_custom_container TYPE REF TO cl_gui_custom_container,
+ go_custom_container1 TYPE REF TO cl_gui_custom_container,
+ go_custom_container2 TYPE REF TO cl_gui_custom_container,
+ go_custom_container3 TYPE REF TO cl_gui_custom_container,
+ go_custom_container4 TYPE REF TO cl_gui_custom_container,
+
+ go_splitter TYPE REF TO cl_gui_splitter_container,
+ go_splitter_w1 TYPE REF TO cl_gui_splitter_container,
+ go_splitter_w2 TYPE REF TO cl_gui_splitter_container,
+ go_splitter_w3 TYPE REF TO cl_gui_splitter_container,
+ go_splitter_h1 TYPE REF TO cl_gui_splitter_container,
+ go_splitter_h2 TYPE REF TO cl_gui_splitter_container,
+ go_splitter_h3 TYPE REF TO cl_gui_splitter_container,
+
+ go_container TYPE REF TO cl_gui_container,
+ go_container1 TYPE REF TO cl_gui_container,
+ go_container2 TYPE REF TO cl_gui_container,
+ go_container3 TYPE REF TO cl_gui_container,
+ go_container4 TYPE REF TO cl_gui_container,
+ go_container5 TYPE REF TO cl_gui_container,
+
+ go_container_top TYPE REF TO cl_gui_container,
+ go_container_end TYPE REF TO cl_gui_container,
+ go_container_l TYPE REF TO cl_gui_container,
+ go_container_r TYPE REF TO cl_gui_container,
+
+ go_top_of_list TYPE REF TO cl_gui_html_viewer,
+ go_end_of_list TYPE REF TO cl_gui_html_viewer,
+
+*-- ALV Grid.
+ go_grid TYPE REF TO lcl_alv_grid,
+ go_grid1 TYPE REF TO lcl_alv_grid,
+ go_grid2 TYPE REF TO lcl_alv_grid,
+ go_grid3 TYPE REF TO lcl_alv_grid,
+ go_grid4 TYPE REF TO lcl_alv_grid,
+ go_grid5 TYPE REF TO lcl_alv_grid,
+
+*-- ALV Tree.
+ go_tree1 TYPE REF TO cl_gui_alv_tree,
+ go_tree2 TYPE REF TO cl_gui_alv_tree,
+ go_tree3 TYPE REF TO cl_gui_alv_tree,
+ go_tree4 TYPE REF TO cl_gui_alv_tree,
+
+ gs_variant TYPE disvariant,
+ gs_variant1 TYPE disvariant,
+ gs_variant2 TYPE disvariant,
+ gs_variant3 TYPE disvariant,
+ gs_variant4 TYPE disvariant,
+ gs_variant5 TYPE disvariant,
+
+*-- ALV control: Layout
+ gs_layout TYPE lvc_s_layo,
+ gs_layout1 TYPE lvc_s_layo,
+ gs_layout2 TYPE lvc_s_layo,
+ gs_layout3 TYPE lvc_s_layo,
+ gs_layout4 TYPE lvc_s_layo,
+ gs_layout5 TYPE lvc_s_layo,
+
+*-- ALV LIst : Fieldcataolg.
+ gs_fieldcat TYPE lvc_s_fcat,
+ gt_fieldcat TYPE lvc_t_fcat,
+ gt_fieldcat1 TYPE lvc_t_fcat,
+ gt_fieldcat2 TYPE lvc_t_fcat,
+ gt_fieldcat3 TYPE lvc_t_fcat,
+ gt_fieldcat4 TYPE lvc_t_fcat,
+ gt_fieldcat5 TYPE lvc_t_fcat,
+ gt_fieldcat_popup TYPE lvc_t_fcat,
+
+*-- ALV F4 Help.
+ gt_f4 TYPE lvc_t_f4,
+ gs_f4 TYPE lvc_s_f4,
+
+*-- ALV Sorting.
+ gs_sort TYPE lvc_s_sort,
+ gt_sort TYPE lvc_t_sort,
+ gt_sort1 TYPE lvc_t_sort,
+ gt_sort2 TYPE lvc_t_sort,
+ gt_sort3 TYPE lvc_t_sort,
+ gt_sort4 TYPE lvc_t_sort,
+ gt_sort5 TYPE lvc_t_sort,
+
+*-- ALV Toolbar.
+ gs_toolbar TYPE stb_button,
+ go_toolbar TYPE REF TO cl_gui_toolbar,
+
+ gs_exclude TYPE ui_functions,
+ gs_exclude1 TYPE ui_functions,
+ gs_exclude2 TYPE ui_functions,
+ gs_exclude3 TYPE ui_functions,
+ gs_exclude4 TYPE ui_functions,
+ gs_exclude5 TYPE ui_functions,
+
+*-- ALV Color & Style
+ gs_color TYPE lvc_s_scol,
+ gt_color TYPE lvc_t_scol WITH HEADER LINE,
+ gs_style TYPE lvc_s_styl,
+ gt_style TYPE lvc_t_styl WITH HEADER LINE,
+ gs_stable TYPE lvc_s_stbl.
+
+
+DATA: gs_rows TYPE lvc_s_row,
+ gt_rows TYPE lvc_t_row.
+
+
+*-- Tree 관련.
+DATA: gs_hierarchy_header1 TYPE treev_hhdr,
+ gs_hierarchy_header2 TYPE treev_hhdr.
+
+DATA: gs_dynpro LIKE dynpread,
+ gt_dynpro LIKE TABLE OF gs_dynpro.
+
+*----------------------------------------------------------------------*
+* OK_CODE. *
+*----------------------------------------------------------------------*
+DATA: ok_code_0100 LIKE sy-ucomm,
+ ok_code_0110 LIKE sy-ucomm,
+ ok_code_0120 LIKE sy-ucomm,
+ ok_code_0200 LIKE sy-ucomm,
+ ok_code_0300 LIKE sy-ucomm,
+ ok_code_0400 LIKE sy-ucomm.
+
+
+*----------------------------------------------------------------------*
+* BDC DEFINE *
+*----------------------------------------------------------------------*
+DATA : gt_bdcdata LIKE TABLE OF bdcdata WITH HEADER LINE, " BDC Data.
+ gt_bdcmsg LIKE TABLE OF bdcmsgcoll WITH HEADER LINE, " BDC Message.
+ gv_bdcmode LIKE ctu_params-dismode VALUE 'N', " BDC Mode.
+ gv_bdcmsg LIKE bapireturn-message, " BDC Message.
+ gv_message LIKE bapireturn-message.
+
+*----------------------------------------------------------------------*
+* F4 Help. *
+*----------------------------------------------------------------------*
+DATA : gt_f4_fields LIKE help_value OCCURS 0 WITH HEADER LINE,
+ gt_f4_header TYPE f4typ_heading_tab WITH HEADER LINE,
+ gv_f4_fieldname LIKE help_info-fieldname,
+ gv_f4_fieldvalue LIKE help_info-fldvalue.
+
+
+TYPES : BEGIN OF ty_err,
+ fname TYPE lvc_fname,
+ index TYPE sy-index,
+ msg TYPE char100,
+ END OF ty_err.
diff --git a/src/zco_variant.prog.xml b/src/zco_variant.prog.xml
new file mode 100644
index 0000000..c4bad61
--- /dev/null
+++ b/src/zco_variant.prog.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+ ZCO_VARIANT
+ I
+ X
+
+
+
+
diff --git a/src/zmtax01.msag.xml b/src/zmtax01.msag.xml
new file mode 100644
index 0000000..a903255
--- /dev/null
+++ b/src/zmtax01.msag.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+ ZMTAX01
+ E
+
+
+
+ E
+ ZMTAX01
+ 000
+ &
+
+
+
+
+
diff --git a/src/ztax0010.prog.abap b/src/ztax0010.prog.abap
new file mode 100644
index 0000000..1512f9d
--- /dev/null
+++ b/src/ztax0010.prog.abap
@@ -0,0 +1,65 @@
+* Program Name : ZTAX0010 *
+* Description : 신용카드 사용 내역 등록 및 관리 *
+* Screen : 100 *
+* Transaction code : ZTAX0010 *
+* Updated Tables : N/A *
+* Input Parameters : *
+* Return Codes : *
+* Special Logic : *
+*----------------------------------------------------------------------*
+* MODIFICATION LOG *
+*----------------------------------------------------------------------*
+* Date Rev Programmer Description *
+*------------ -------- ------------- ----------------------------------*
+* 2026.06.05 N MYSAP Initial coding *
+* xlsx 파일만 업로드 가능.
+*----------------------------------------------------------------------*
+
+REPORT ZTAX0010 MESSAGE-ID zmtax01 NO STANDARD PAGE HEADING.
+
+*----------------------------------------------------------------------*
+* INCLUDE
+*----------------------------------------------------------------------*
+INCLUDE ZTAX0010_cls.
+INCLUDE ZTAX0010_top.
+INCLUDE ZTAX0010_sel.
+INCLUDE ZTAX0010_f01.
+INCLUDE ZTAX0010_o01.
+INCLUDE ZTAX0010_i01.
+
+*----------------------------------------------------------------------*
+* INITIALIZATION *
+*----------------------------------------------------------------------*
+INITIALIZATION.
+ PERFORM initialization.
+
+*----------------------------------------------------------------------*
+* START-OF-SELECTION *
+*----------------------------------------------------------------------*
+START-OF-SELECTION.
+ CLEAR: gv_err, gv_mode.
+
+*-- Authority Check(Company Code).
+* PERFORM authority_check.
+
+*-- Init & Check.
+ PERFORM init_data.
+
+*-- Select .
+ PERFORM get_data.
+
+*----------------------------------------------------------------------*
+* END-OF-SELECTION *
+*----------------------------------------------------------------------*
+END-OF-SELECTION.
+ CHECK: gv_err IS INITIAL.
+
+* DATA(lv_line) = lines( gt_grid ).
+*
+* IF lv_line = 0.
+* MESSAGE s003(zmco03) DISPLAY LIKE 'E'. EXIT.
+* ELSE.
+* MESSAGE s050(zmco03) WITH lv_line.
+
+ CALL SCREEN 100.
+* ENDIF.
diff --git a/src/ztax0010.prog.xml b/src/ztax0010.prog.xml
new file mode 100644
index 0000000..5492821
--- /dev/null
+++ b/src/ztax0010.prog.xml
@@ -0,0 +1,439 @@
+
+
+
+
+
+ ZTAX0010
+ 1
+ X
+ X
+
+
+ -
+
+ ZTAX0010
+ 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
+ E
+
+
+
+ PF_0100
+ D
+ 000001
+ 000001
+ 0001
+ PF_Status
+
+
+
+
+ BACK
+ 001
+ S
+ ICON_PDIR_BACK
+ @CF@
+ BACK
+
+
+ BACK
+ 002
+ S
+ Back
+
+
+ CANC
+ 001
+ S
+ Exit
+
+
+ DOWNLOAD
+ 001
+ S
+ ICON_XLS
+ @J2@
+ 엑셀 다운로드
+
+
+ EXCEL
+ 001
+ S
+ ICON_XLS
+ @J2@
+ 엑셀 다운로드
+ 간편 신고 데이타 파일 생성
+
+
+ EXIT
+ 001
+ S
+ ICON_CANCEL
+ @0W@
+ Cancel
+
+
+ SAVE
+ 001
+ S
+ ICON_SYSTEM_SAVE
+ @2L@
+ Save
+
+
+
+
+ 000001
+ 0001
+ 01
+ 02
+
+
+
+
+ 000001
+ 02
+ EXCEL
+ 001
+
+
+ 000001
+ 03
+ BACK
+ 002
+
+
+ 000001
+ 11
+ SAVE
+ 001
+
+
+ 000001
+ 12
+ EXIT
+ 001
+
+
+ 000001
+ 15
+ CANC
+ 001
+
+
+
+
+ PF_0100
+ BACK
+
+
+ PF_0100
+ CANC
+
+
+ PF_0100
+ DOWNLOAD
+
+
+ PF_0100
+ EXCEL
+
+
+ PF_0100
+ EXIT
+
+
+ PF_0100
+ SAVE
+
+
+
+
+ A
+ 000001
+ D
+ PF_Status
+
+
+ B
+ 000001
+ 0001
+ D
+ PF_Status
+
+
+ P
+ 000001
+ D
+ PF_Status
+
+
+
+
+ ST_0100
+ 신용카드 사용내역 관리
+
+
+
+
+ -
+ I
+ 001
+ 홈텍스
+ 13
+
+ -
+ I
+ 002
+ KB국민은행
+ 16
+
+ -
+ I
+ B01
+ 조회조건
+ 14
+
+ -
+ I
+ B02
+ 업로드 파일 선택
+ 19
+
+ -
+ I
+ G01
+ 승인일자
+ 10
+
+ -
+ I
+ G02
+ 카드번호
+ 14
+
+ -
+ I
+ G03
+ 가맹점사업자번호
+ 18
+
+ -
+ I
+ G04
+ 가맹점명
+ 14
+
+ -
+ I
+ G05
+ 통화키
+ 13
+
+ -
+ I
+ G06
+ 공급가액
+ 14
+
+ -
+ I
+ G07
+ 세액
+ 12
+
+ -
+ I
+ G08
+ 비과세
+ 13
+
+ -
+ I
+ G09
+ 합계
+ 12
+
+ -
+ I
+ G10
+ 가맹점유형(CODE)
+ 20
+
+ -
+ I
+ G11
+ 가맹점유형
+ 15
+
+ -
+ I
+ G12
+ 업태
+ 12
+
+ -
+ I
+ G13
+ 업종
+ 12
+
+ -
+ I
+ G14
+ 공제여부결정(CODE)
+ 20
+
+ -
+ I
+ G15
+ 공제여부결정
+ 16
+
+ -
+ I
+ G16
+ 비고
+ 12
+
+ -
+ I
+ G17
+ 카드사
+ 13
+
+ -
+ I
+ G18
+ 계정과목(CODE)
+ 16
+
+ -
+ I
+ G19
+ 계정과목(소)
+ 17
+
+ -
+ I
+ G20
+ 계정과목(대)
+ 17
+
+ -
+ I
+ G21
+ 출처(CODE)
+ 18
+
+ -
+ I
+ G22
+ 출처
+ 12
+
+ -
+ I
+ G23
+ 적요
+ 12
+
+ -
+ I
+ G24
+ 신고대상여부
+ 16
+
+ -
+ I
+ T01
+ 회계년도
+ 14
+
+ -
+ I
+ T02
+ 분기
+ 12
+
+ -
+ I
+ T03
+ 조회건수
+ 10
+
+ -
+ R
+ Program ZTAX0010
+ 16
+
+ -
+ S
+ P_GJAHR
+ 회계년도
+ 12
+
+ -
+ S
+ P_QUART
+ 분기
+ 10
+
+
+
+
+
diff --git a/src/ztax0010_cls.prog.abap b/src/ztax0010_cls.prog.abap
new file mode 100644
index 0000000..27f467a
--- /dev/null
+++ b/src/ztax0010_cls.prog.abap
@@ -0,0 +1,195 @@
+*&---------------------------------------------------------------------*
+*& Include ZTAX0010_CLS
+*&---------------------------------------------------------------------*
+
+CLASS: lcl_event_receiver DEFINITION DEFERRED.
+
+DATA : go_event_receiver TYPE REF TO lcl_event_receiver, " ALV Event
+ go_event_receiver1 TYPE REF TO lcl_event_receiver,
+ go_event_receiver2 TYPE REF TO lcl_event_receiver,
+ go_event_receiver3 TYPE REF TO lcl_event_receiver.
+
+*&---------------------------------------------------------------------
+*& CLASS DEFINITIAL
+*&---------------------------------------------------------------------*
+CLASS lcl_event_receiver DEFINITION.
+
+ PUBLIC SECTION.
+
+ DATA lv_object TYPE char30.
+
+*-- Constructor.
+ METHODS:
+ constructor
+ IMPORTING e_object_text TYPE c,
+
+*-- Toolbar.
+ handle_toolbar
+ FOR EVENT toolbar OF cl_gui_alv_grid
+ IMPORTING e_object e_interactive,
+
+*-- User_Command.
+ handle_user_command
+ FOR EVENT user_command OF cl_gui_alv_grid
+ IMPORTING e_ucomm,
+
+*-- Data_Changed.
+ handle_data_changed
+ FOR EVENT data_changed OF cl_gui_alv_grid
+ IMPORTING er_data_changed,
+
+*-- Data_Change Finished.
+ handle_data_changed_finished
+ FOR EVENT data_changed_finished OF cl_gui_alv_grid
+ IMPORTING e_modified et_good_cells,
+
+*-- Hotspot_Click.
+ handle_hotspot_click
+ FOR EVENT hotspot_click OF cl_gui_alv_grid
+ IMPORTING e_row_id e_column_id,
+
+*-- Double_Click.
+ handle_double_click
+ FOR EVENT double_click OF cl_gui_alv_grid
+ IMPORTING e_row e_column,
+
+*-- Button_Click.
+ handle_button_click
+ FOR EVENT button_click OF cl_gui_alv_grid
+ IMPORTING es_col_id es_row_no,
+
+*-- F4 Help.
+ handle_on_f4
+ FOR EVENT onf4 OF cl_gui_alv_grid
+ IMPORTING e_fieldname e_fieldvalue es_row_no
+ er_event_data et_bad_cells e_display.
+
+ENDCLASS. "LCL_EVENT_RECEIVER DEFINITION
+
+*---------------------------------------------------------------------
+* CLASS LCL_EVENT_RECEIVER IMPLEMENTATION
+*---------------------------------------------------------------------*
+CLASS lcl_event_receiver IMPLEMENTATION.
+
+*-- Constructor.
+ METHOD constructor.
+ CALL METHOD super->constructor.
+ lv_object = e_object_text.
+
+ ENDMETHOD. "CONSTRUCTOR
+
+*-- Tollbar.
+ METHOD handle_toolbar.
+*PERFORM toolbar_pros USING e_object e_interactive lv_object.
+
+ ENDMETHOD. "HANDLE_TOOLBAR
+
+*-- User_Command
+ METHOD handle_user_command.
+ CASE lv_object.
+ WHEN 'GRID'.
+*PERFORM handle_user_command USING e_ucomm.
+ ENDCASE.
+ ENDMETHOD. "HANDLE_USER_COMMAND
+
+*-- DATA_CHANGED.
+ METHOD handle_data_changed.
+
+ ENDMETHOD. "HANDLE_DATA_CHANGED
+
+*-- DATA_CHANGE FISNISHED.
+ METHOD handle_data_changed_finished.
+ PERFORM data_changed_finished USING e_modified et_good_cells.
+
+ ENDMETHOD. "HANDLE_DATA_CHANGED_FINISHED
+
+*-- HOTSPOT_CLICK.
+ METHOD handle_hotspot_click.
+* CASE lv_object.
+* WHEN 'GRID'.
+*PERFORM handle_hotspot_click USING e_row_id e_column_id.
+* ENDCASE.
+
+ ENDMETHOD. "HANDLE_HOTSPOT_CLICK
+
+*-- DOUBLE_CLICK.
+ METHOD handle_double_click.
+
+ ENDMETHOD. "HANDLE_DOUBLE_CLICK
+
+*-- BUTTON_CLICK.
+ METHOD handle_button_click.
+
+ ENDMETHOD. "HANDLE_BUTTON_CLICK
+
+*-- F4 HELP.
+ METHOD handle_on_f4.
+ CASE lv_object.
+ WHEN 'GRID'.
+ PERFORM on_f4 USING e_fieldname e_fieldvalue es_row_no
+ er_event_data et_bad_cells e_display.
+ ENDCASE.
+
+ ENDMETHOD.
+
+ENDCLASS. "LCL_EVENT_RECEIVER IMPLEMENTATION
+
+*---------------------------------------------------------------------
+*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/ztax0010_cls.prog.xml b/src/ztax0010_cls.prog.xml
new file mode 100644
index 0000000..79dbcba
--- /dev/null
+++ b/src/ztax0010_cls.prog.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+ ZTAX0010_CLS
+ I
+ X
+
+
+
+
diff --git a/src/ztax0010_f01.prog.abap b/src/ztax0010_f01.prog.abap
new file mode 100644
index 0000000..b8087ec
--- /dev/null
+++ b/src/ztax0010_f01.prog.abap
@@ -0,0 +1,1594 @@
+*&---------------------------------------------------------------------*
+*& Include ZTAX0010_F01
+*&---------------------------------------------------------------------*
+*&---------------------------------------------------------------------*
+*& Form initialization
+*&---------------------------------------------------------------------*
+*& text
+*&---------------------------------------------------------------------*
+*& --> p1 text
+*& <-- p2 text
+*&---------------------------------------------------------------------*
+FORM initialization .
+ MOVE 'Excel Upload' TO sscrfields-functxt_01.
+ENDFORM.
+*&---------------------------------------------------------------------*
+*& Form set_status
+*&---------------------------------------------------------------------*
+*& text
+*&---------------------------------------------------------------------*
+*& --> LT_FCODE
+*& --> LV_TEXT
+*&---------------------------------------------------------------------*
+
+FORM set_status TABLES pt_fcode USING pv_text.
+
+ pv_text = sy-title.
+
+ENDFORM.
+*&---------------------------------------------------------------------*
+*& Form create_container
+*&---------------------------------------------------------------------*
+*& text
+*&---------------------------------------------------------------------*
+*& --> GO_DOCKING_CONTAINER
+*&---------------------------------------------------------------------*
+FORM create_container USING po_docking_container TYPE REF TO cl_gui_docking_container.
+
+*-- Create Container.
+ CHECK: po_docking_container IS INITIAL.
+
+ CREATE OBJECT po_docking_container
+ EXPORTING
+ repid = sy-repid
+ dynnr = sy-dynnr
+* side = po_docking_container->dock_at_left
+* ratio = 20.
+ side = po_docking_container->property_floating
+ extension = 3000.
+
+ENDFORM.
+*&---------------------------------------------------------------------*
+*& Form split_container
+*&---------------------------------------------------------------------*
+*& text
+*&---------------------------------------------------------------------*
+*& --> p1 text
+*& <-- p2 text
+*&---------------------------------------------------------------------*
+FORM split_container .
+ DATA(lo_split) = NEW cl_gui_splitter_container( parent = go_docking_container
+ rows = 2
+ columns = 1 ).
+
+ go_container_top = lo_split->get_container( row = 1 column = 1 ).
+ go_container = lo_split->get_container( row = 2 column = 1 ).
+
+*-- Set Split Height.
+ __height_split : lo_split 1 10,
+ lo_split 2 90.
+ENDFORM.
+*&---------------------------------------------------------------------*
+*& Form create_alv
+*&---------------------------------------------------------------------*
+*& text
+*&---------------------------------------------------------------------*
+*& --> GO_GRID
+*& --> GO_CONTAINER
+*& --> GC_GRID
+*& --> GO_EVENT_RECEIVER
+*&---------------------------------------------------------------------*
+FORM create_grid USING po_grid TYPE REF TO lcl_alv_grid
+ po_container TYPE REF TO cl_gui_container.
+
+*-- Create Object : Grid.
+ po_grid = NEW lcl_alv_grid( i_parent = po_container ).
+
+**-- Create Object : Grid.
+* CREATE OBJECT po_grid
+* EXPORTING
+* i_parent = po_container.
+ENDFORM.
+*&---------------------------------------------------------------------*
+*& Form create_html_text
+*&---------------------------------------------------------------------*
+*& text
+*&---------------------------------------------------------------------*
+*& --> P_
+*& --> GO_TOP_OF_LIST
+*& --> GO_CONTAINER_TOP
+*&---------------------------------------------------------------------*
+FORM create_html_text USING pv_gubun
+ po_list TYPE REF TO cl_gui_html_viewer
+ po_container TYPE REF TO cl_gui_container.
+
+
+ DATA : lv_document TYPE REF TO cl_dd_document.
+ CLEAR: lv_document.
+
+ CHECK: po_list IS INITIAL.
+
+*-- Create HTML Object.
+ CREATE OBJECT po_list
+ EXPORTING
+ parent = po_container.
+
+*-- Create Document Object.
+ CREATE OBJECT lv_document
+ EXPORTING
+ no_margins = 'X'.
+
+*-- Set Text.
+ PERFORM fill_header_text USING pv_gubun lv_document.
+
+*--
+ CALL METHOD lv_document->merge_document.
+ lv_document->html_control = po_list.
+
+*-- Display TOP document.
+ CALL METHOD lv_document->display_document
+ EXPORTING
+ reuse_control = 'X'
+ EXCEPTIONS
+ html_display_error = 1.
+ENDFORM.
+*&---------------------------------------------------------------------*
+*& Form fill_header_text
+*&---------------------------------------------------------------------*
+*& text
+*&---------------------------------------------------------------------*
+*& --> PV_GUBUN
+*& --> LV_DOCUMENT
+*&---------------------------------------------------------------------*
+FORM fill_header_text USING pv_gubun
+ po_document TYPE REF TO cl_dd_document..
+
+ DATA : lv_cnt TYPE i.
+
+ DATA : lv_text TYPE sdydo_text_element.
+ CLEAR: lv_text.
+
+*--
+ CASE pv_gubun.
+
+*-- Header.
+ WHEN 'H'.
+
+ " Company Code.
+* CONCATENATE p_bukrs p_butxt INTO lv_text SEPARATED BY space.
+* PERFORM add_text_gap USING po_document TEXT-t01 lv_text 0.
+* CALL METHOD po_document->new_line( 0 ).
+
+ " 년도
+* lv_text = p_gjahr.
+ CONCATENATE p_gjahr '년' INTO lv_text.
+ PERFORM add_text_gap USING po_document TEXT-t01 lv_text 4.
+ CALL METHOD po_document->new_line( 0 ).
+
+ " 분기.
+ CASE p_quart.
+ WHEN '01'.
+ lv_text = '1분기'.
+ WHEN '02'.
+ lv_text = '2분기'.
+ WHEN '03'.
+ lv_text = '3분기'.
+ WHEN '04'.
+ lv_text = '4분기'.
+ ENDCASE.
+
+ PERFORM add_text_gap USING po_document TEXT-t02 lv_text 9.
+ CALL METHOD po_document->new_line( 0 ).
+
+ " 데이타 건수.
+ DESCRIBE TABLE gt_grid LINES lv_cnt.
+ lv_text = |{ lv_cnt }|.
+ PERFORM add_text_gap USING po_document TEXT-t03 lv_text 4.
+ CALL METHOD po_document->new_line( 0 ).
+
+ ENDCASE.
+ENDFORM.
+*&---------------------------------------------------------------------*
+*& Form add_text_gap
+*&---------------------------------------------------------------------*
+*& text
+*&---------------------------------------------------------------------*
+*& --> PO_DOCUMENT
+*& --> TEXT_T02
+*& --> LV_TEXT
+*& --> P_9
+*&---------------------------------------------------------------------*
+FORM add_text_gap USING po_document TYPE REF TO cl_dd_document
+ pv_title TYPE sdydo_text_element
+ pv_text TYPE sdydo_text_element
+ pv_width.
+
+ DATA : lo_table_area TYPE REF TO cl_dd_table_area.
+ CLEAR: lo_table_area.
+
+ CALL METHOD po_document->add_gap
+ EXPORTING
+ width = 1.
+
+*-- Add Title.
+ CONCATENATE TEXT-t00 pv_title INTO pv_title SEPARATED BY space.
+ CALL METHOD po_document->add_text
+ EXPORTING
+ text = pv_title
+ fix_lines = abap_on
+ sap_fontsize = cl_dd_document=>small
+ sap_emphasis = cl_dd_document=>strong.
+
+*-- Gap.
+ CALL METHOD po_document->add_gap
+ EXPORTING
+ width = pv_width.
+
+*-- Add Text.
+ CONCATENATE ':' pv_text INTO pv_text SEPARATED BY space.
+ CALL METHOD po_document->add_text
+ EXPORTING
+ text = pv_text
+ fix_lines = abap_on
+ sap_fontsize = cl_dd_document=>small.
+
+
+
+**-- Gap.
+* CALL METHOD PO_DOCUMENT->ADD_GAP
+* EXPORTING
+* WIDTH = PV_WIDTH.
+
+ENDFORM.
+*&---------------------------------------------------------------------*
+*& Form create_alv
+*&---------------------------------------------------------------------*
+*& text
+*&---------------------------------------------------------------------*
+*& --> GO_GRID
+*& --> GO_CONTAINER
+*& --> GC_GRID
+*& --> GO_EVENT_RECEIVER
+*&---------------------------------------------------------------------*
+FORM create_alv USING po_grid TYPE REF TO lcl_alv_grid
+ po_container TYPE REF TO cl_gui_container
+ pv_grid
+ po_event_receiver TYPE REF TO lcl_event_receiver.
+
+ IF po_grid IS INITIAL.
+
+*-- Create Object : Grid.
+ PERFORM: create_grid USING po_grid po_container.
+
+*-- ALV_Display.
+ PERFORM: alv_variant USING pv_grid,
+ alv_layout USING pv_grid, " Layout.
+ alv_sort USING pv_grid, " Sort.
+ alv_toolbar_exclude USING 'GS_EXCLUDE', " Toolbar Exclude.
+ alv_fieldcatalog USING pv_grid, " Field Catalog.
+ alv_event_handler USING pv_grid " Event Handler.
+ po_grid po_event_receiver,
+ alv_display USING pv_grid po_grid,
+ alv_on_f4 USING pv_grid.
+
+ ELSE.
+
+*-- Refresh Grid.
+ __alv_refresh: po_grid abap_on abap_on abap_on.
+
+ ENDIF.
+
+*-- Column Size Optimize.
+ __alv_optimize: po_grid.
+
+* CHECK: pv_grid EQ gc_grid OR pv_grid EQ gc_grid2.
+** CHECK: pv_grid EQ gc_grid.
+* DATA : lv_input TYPE int4.
+*
+* CASE gv_mode.
+* WHEN gc_mode-create OR gc_mode-modify.
+* lv_input = 1.
+* WHEN gc_mode-disp.
+* lv_input = 0.
+* ENDCASE.
+*
+**--
+* __set_ready_input : po_grid lv_input.
+*
+* CASE pv_grid.
+* WHEN gc_grid.
+* PERFORM set_focus_and_event_support USING go_grid.
+* WHEN gc_grid2.
+* PERFORM set_focus_and_event_support USING go_grid2.
+* ENDCASE.
+*
+* CALL METHOD cl_gui_cfw=>flush.
+
+ENDFORM.
+*&---------------------------------------------------------------------*
+*& Form alv_variant
+*&---------------------------------------------------------------------*
+*& text
+*&---------------------------------------------------------------------*
+*& --> PV_GRID
+*&---------------------------------------------------------------------*
+FORM alv_variant USING pv_grid.
+
+*-- Variant.
+ CASE pv_grid.
+ WHEN gc_grid.
+ CLEAR gs_variant.
+ gs_variant-report = sy-repid. " ABAP 프로그램이름.
+ gs_variant-username = sy-uname. " 고유사용자 저장에 대한 사용자이름.
+* gs_variant-handle = '0001'. " 동일프로그램에서 반복호출을 위한 관리 ID.
+
+ ENDCASE.
+
+* gs_variant-log_group = ''. " 논리그룹이름.
+* gs_variant-variant = ''. " 레이아웃.
+* gs_variant-text = ''. " 레이아웃내역.
+* gs_variant-dependvars = ''. " 종속변형 엔트리벡터.
+ENDFORM.
+*&---------------------------------------------------------------------*
+*& Form alv_layout
+*&---------------------------------------------------------------------*
+*& text
+*&---------------------------------------------------------------------*
+*& --> PV_GRID
+*&---------------------------------------------------------------------*
+FORM alv_layout USING pv_grid.
+
+*-- Layout.
+ CASE pv_grid.
+ WHEN gc_grid.
+ CLEAR gs_layout.
+ gs_layout-zebra = abap_on.
+ gs_layout-sel_mode = 'A'.
+ gs_layout-info_fname = 'LINECOLOR'. " Line Color.
+* gs_layout-ctab_fname = 'CELLCOLOR'. " Cell Color.
+* gs_layout-stylefname = 'CELLSTYLE'. " Cell Style.
+* GS_LAYOUT-CWIDTH_OPT = ABAP_TRUE. " ALV 제어: 열너비최적화.
+* GS_LAYOUT-GRID_TITLE = '*타발내도'.
+* GS_LAYOUT-SMALLTITLE = ABAP_ON.
+ gs_layout-no_rowmark = 'X'. "선택 버튼 숨기기.
+
+ ENDCASE.
+ENDFORM.
+*&---------------------------------------------------------------------*
+*& Form alv_sort
+*&---------------------------------------------------------------------*
+*& text
+*&---------------------------------------------------------------------*
+*& --> PV_GRID
+*&---------------------------------------------------------------------*
+FORM alv_sort USING pv_grid.
+
+ CLEAR: gs_sort, gt_sort, gt_sort[].
+
+ CASE pv_grid.
+ WHEN gc_grid.
+ PERFORM sort_field TABLES gt_sort USING :
+ '01' 'GJAHR' abap_on space space,
+ '02' 'QUARTER' abap_on space space.
+
+ ENDCASE.
+ENDFORM.
+*&---------------------------------------------------------------------*
+*& Form sort_field
+*&---------------------------------------------------------------------*
+*& text
+*&---------------------------------------------------------------------*
+*& --> GT_SORT
+*& --> P_
+*& --> P_
+*& --> ABAP_ON
+*& --> SPACE
+*& --> SPACE
+*&---------------------------------------------------------------------*
+FORM sort_field TABLES pt_sort TYPE lvc_t_sort
+ USING pv_spos
+ pv_fieldname
+ pv_up
+ pv_down
+ pv_subtot.
+* 아래 구문은 Call by value로 실행됨..
+* Call By Reference 수행을 위해 수정.
+* pt_sort = VALUE #( spos = pv_spos
+* fieldname = pv_fieldname
+* up = pv_up
+* down = pv_down
+* subtot = pv_subtot ).
+
+ DATA: ls_sort TYPE lvc_s_sort.
+ ls_sort-spos = pv_spos.
+ ls_sort-fieldname = pv_fieldname.
+ ls_sort-up = pv_up.
+ ls_sort-down = pv_down.
+ ls_sort-subtot = pv_subtot.
+
+ APPEND ls_sort TO pt_sort. " ← APPEND 사용!
+ENDFORM.
+*&---------------------------------------------------------------------*
+*& Form ALV_TOOLBAR_EXCLUDE
+*&---------------------------------------------------------------------*
+FORM alv_toolbar_exclude USING pv_tab.
+
+ DATA : p_tab(20).
+ CLEAR: p_tab.
+
+* p_tab = pv_tab.
+ p_tab = 'GS_EXCLUDE'.
+
+* DATA.
+ DATA: lv_con(40).
+ FIELD-SYMBOLS: TYPE ui_functions.
+
+* ASSIGN.
+ CONCATENATE p_tab '[]' INTO lv_con.
+ ASSIGN (lv_con) TO .
+
+* 제거할 버튼 지정
+ PERFORM alv_exclude_toolbar
+ TABLES
+* USING: cl_gui_alv_grid=>mc_fc_excl_all. "**툴바 모두제거 **
+ USING: cl_gui_alv_grid=>mc_fc_loc_undo, "실행취소
+* cl_gui_alv_grid=>mc_fc_auf, "소계확장
+* cl_gui_alv_grid=>mc_fc_average, "&AVERAGE
+* cl_gui_alv_grid=>mc_fc_back_classic,
+* cl_gui_alv_grid=>mc_fc_call_abc, "&ABC
+* cl_gui_alv_grid=>mc_fc_call_chain,
+* cl_gui_alv_grid=>mc_fc_call_crbatch,
+* cl_gui_alv_grid=>mc_fc_call_crweb,
+* cl_gui_alv_grid=>mc_fc_call_lineitems,
+* cl_gui_alv_grid=>mc_fc_call_master_data,
+* cl_gui_alv_grid=>mc_fc_call_more,
+* cl_gui_alv_grid=>mc_fc_call_report,
+* cl_gui_alv_grid=>mc_fc_call_xint,
+* cl_gui_alv_grid=>mc_fc_call_xxl,
+* cl_gui_alv_grid=>mc_fc_col_invisible,
+* cl_gui_alv_grid=>mc_fc_col_optimize,
+* cl_gui_alv_grid=>mc_fc_current_variant,
+* cl_gui_alv_grid=>mc_fc_data_save,
+* cl_gui_alv_grid=>mc_fc_delete_filter,
+* cl_gui_alv_grid=>mc_fc_deselect_all,
+* cl_gui_alv_grid=>mc_fc_detail,
+* cl_gui_alv_grid=>mc_fc_expcrdata,
+* cl_gui_alv_grid=>mc_fc_expcrdesig,
+* cl_gui_alv_grid=>mc_fc_expcrtempl,
+* cl_gui_alv_grid=>mc_fc_expmdb,
+* cl_gui_alv_grid=>mc_fc_extend,
+* cl_gui_alv_grid=>mc_fc_f4,
+* cl_gui_alv_grid=>mc_fc_filter,
+* cl_gui_alv_grid=>mc_fc_find,
+* cl_gui_alv_grid=>mc_fc_fix_columns,
+* cl_gui_alv_grid=>mc_fc_check,
+ cl_gui_alv_grid=>mc_fc_graph,
+ cl_gui_alv_grid=>mc_fc_help,
+ cl_gui_alv_grid=>mc_fc_info,
+* cl_gui_alv_grid=>mc_fc_load_variant,
+ cl_gui_alv_grid=>mc_fc_loc_copy, "행 카피.
+* cl_gui_alv_grid=>mc_fc_html,
+ cl_gui_alv_grid=>mc_fc_loc_copy_row, "행 카피.
+ cl_gui_alv_grid=>mc_fc_loc_cut, "가위.
+ cl_gui_alv_grid=>mc_fc_loc_delete_row, "행삭제.
+ cl_gui_alv_grid=>mc_fc_loc_insert_row, "행삽입.
+* cl_gui_alv_grid=>mc_fc_loc_move_row,
+ cl_gui_alv_grid=>mc_fc_loc_append_row, "라인생성.
+ cl_gui_alv_grid=>mc_fc_loc_paste, "겹쳐쓰기.
+ cl_gui_alv_grid=>mc_fc_loc_paste_new_row, "겹쳐쓰기.
+* cl_gui_alv_grid=>mc_fc_maintain_variant,
+* cl_gui_alv_grid=>mc_fc_maximum,
+* cl_gui_alv_grid=>mc_fc_minimum,
+* cl_gui_alv_grid=>mc_fc_pc_file,
+* cl_gui_alv_grid=>mc_fc_print,
+* cl_gui_alv_grid=>mc_fc_print_back,
+* cl_gui_alv_grid=>mc_fc_print_prev,
+ cl_gui_alv_grid=>mc_fc_refresh.
+* cl_gui_alv_grid=>mc_fc_reprep,
+* cl_gui_alv_grid=>mc_fc_save_variant,
+* cl_gui_alv_grid=>mc_fc_select_all.
+* cl_gui_alv_grid=>mc_fc_send,
+* cl_gui_alv_grid=>mc_fc_separator,
+* cl_gui_alv_grid=>mc_fc_sort,
+* cl_gui_alv_grid=>mc_fc_sort_asc,
+* cl_gui_alv_grid=>mc_fc_sort_dsc,
+* cl_gui_alv_grid=>mc_fc_subtot,
+* cl_gui_alv_grid=>mc_mb_sum, "SUM
+* cl_gui_alv_grid=>mc_fc_sum. "SUM
+* cl_gui_alv_grid=>mc_fc_to_office,
+* cl_gui_alv_grid=>mc_fc_to_rep_tree,
+* cl_gui_alv_grid=>mc_fc_unfix_columns,
+* cl_gui_alv_grid=>mc_fc_views,
+* cl_gui_alv_grid=>mc_fc_view_crystal,
+* cl_gui_alv_grid=>mc_fc_view_excel,
+* cl_gui_alv_grid=>mc_fc_view_grid,
+* cl_gui_alv_grid=>mc_fc_word_processor.
+
+ENDFORM. " ALV_TOOLBAR_EXCLUDE
+
+*&---------------------------------------------------------------------*
+*& Form ALV_EXCLUDE_TOOLBAR
+*&---------------------------------------------------------------------*
+FORM alv_exclude_toolbar TABLES pt_table
+ USING pv_value.
+
+*-- DATA
+ DATA : lv_exclude TYPE ui_func.
+ CLEAR: lv_exclude.
+
+*-- Append.
+ lv_exclude = pv_value.
+ APPEND lv_exclude TO pt_table.
+
+ENDFORM. " ALV_EXCLUDE_TOOLBAR
+
+*&---------------------------------------------------------------------*
+*& Form ALV_EVENT_HANDLER
+*&---------------------------------------------------------------------*
+FORM alv_event_handler USING pv_grid
+ po_grid TYPE REF TO lcl_alv_grid
+ po_event_receiver TYPE REF TO lcl_event_receiver.
+
+*-- Grid Object.
+ CREATE OBJECT po_event_receiver
+ EXPORTING
+ e_object_text = pv_grid.
+
+ CALL METHOD po_grid->register_edit_event
+ EXPORTING
+ i_event_id = cl_gui_alv_grid=>mc_evt_enter.
+
+ CALL METHOD po_grid->register_edit_event
+ EXPORTING
+ i_event_id = cl_gui_alv_grid=>mc_evt_modified.
+
+
+*--// ALV Data Changed Event.
+ SET HANDLER
+ po_event_receiver->handle_data_changed FOR po_grid.
+
+*-- ALV Data Change Finished Event.
+ SET HANDLER
+ po_event_receiver->handle_data_changed_finished FOR po_grid.
+
+*--// Hotspot click Event.
+ SET HANDLER
+ po_event_receiver->handle_hotspot_click FOR po_grid.
+
+*--// Double click Event.
+ SET HANDLER
+ po_event_receiver->handle_double_click FOR po_grid.
+
+*--// Toolbar.
+ SET HANDLER
+ po_event_receiver->handle_toolbar FOR po_grid.
+
+*--// User-Command
+ SET HANDLER
+ po_event_receiver->handle_user_command FOR po_grid.
+
+*--// Button click.
+ SET HANDLER
+ po_event_receiver->handle_button_click FOR po_grid.
+
+*--// F4 Help.
+ SET HANDLER
+ po_event_receiver->handle_on_f4 FOR po_grid.
+
+ENDFORM. " ALV_EVENT_HANDLER
+
+*&---------------------------------------------------------------------*
+*& Form ALV_FIELDCATALOG
+*&---------------------------------------------------------------------*
+FORM alv_fieldcatalog USING pv_grid.
+
+ CLEAR: gs_fieldcat.
+
+*-- Set Fieldcat.
+ CASE pv_grid.
+ WHEN gc_grid.
+ CLEAR : gt_fieldcat, gt_fieldcat[].
+
+* DATA : lv_fdseq(2) TYPE n,
+* lv_seqno(2) TYPE n.
+*
+ PERFORM fill_field_catalogs TABLES gt_fieldcat USING :
+ 01 abap_on 'GJAHR' '20' 'GJAHR' '' '',
+ 03 abap_on 'QUARTER' '02' 'QUARTER' '' '',
+ 05 abap_on 'REG_NO' '16' 'REG_NO' '' '',
+ 06 abap_OFF 'EXPORT' '1' TEXT-g24 '' '',
+ 07 abap_off 'CONFIRM_DATE' '10' TEXT-g01 '' '', "승인일자
+ 09 abap_off 'CARD_COMPANY' '20' TEXT-g17 '' '',
+ 11 abap_off 'CARD_NO' '16' TEXT-g02 '' '',
+ 13 abap_off 'SHOP_REG_NO' '16' TEXT-g03 '' '',
+ 15 abap_off 'SHOP_NM' '50' TEXT-g04 '' '',
+
+ 18 abap_off 'ACCT' '02' TEXT-g18 '' '',
+ 21 abap_off 'ACCT_NM' '40' TEXT-g19 '' '',
+ 23 abap_off 'GACCT_NM' '40' TEXT-g20 '' '',
+ 25 abap_off 'ORIGIN' '02' TEXT-g21 '' '',
+ 27 abap_off 'ORIGIN_NM' '40' TEXT-g22 '' '',
+ 29 abap_off 'DESCRIPT' '200' TEXT-g23 '' '',
+
+ 31 abap_off 'WAERS' '05' TEXT-g05 '' '',
+ 33 abap_off 'SUPPLY_VALUE' '22' TEXT-g06 '' '',
+ 35 abap_off 'TAX_AMOUNT' '22' TEXT-g07 '' '',
+ 37 abap_off 'NON_TAXABLE' '22' TEXT-g08 '' '',
+ 41 abap_off 'AMOUNT_SUPPLY' '22' TEXT-g09 '' '',
+ 43 abap_off 'SHOP_TYPE' '10' TEXT-g10 '' '',
+ 45 abap_off 'SHOP_TY_NAME' '10' TEXT-g11 '' '',
+ 47 abap_off 'BISINESS_TYPE' '30' TEXT-g12 '' '',
+ 49 abap_off 'BISINESS_CATEGORY' '30' TEXT-g13 '' '',
+ 51 abap_off 'DEDUCTION_STATUS' '25' TEXT-g14 '' '',
+ 53 abap_off 'DEDUCTION_DESC' '05' TEXT-g15 '' '',
+
+ 95 abap_off 'ETC' '40' TEXT-g16 'C500' ''.
+
+
+ ENDCASE.
+
+
+ENDFORM.
+
+*&---------------------------------------------------------------------*
+*& Form FILL_FIELD_CATALOGS
+*&---------------------------------------------------------------------*
+FORM fill_field_catalogs TABLES lt_fieldcat TYPE lvc_t_fcat
+ USING pv_col_pos
+ pv_key
+ pv_fieldname
+ pv_leng
+ pv_reptext
+ pv_color
+ pv_tech.
+
+ CLEAR gs_fieldcat.
+ gs_fieldcat-col_pos = pv_col_pos.
+ gs_fieldcat-key = pv_key.
+ gs_fieldcat-fieldname = pv_fieldname.
+ gs_fieldcat-intlen = gs_fieldcat-outputlen = pv_leng.
+ gs_fieldcat-reptext = pv_reptext.
+ gs_fieldcat-coltext = pv_reptext.
+ gs_fieldcat-scrtext_l = pv_reptext.
+ gs_fieldcat-scrtext_m = pv_reptext.
+ gs_fieldcat-scrtext_s = pv_reptext.
+ gs_fieldcat-emphasize = pv_color.
+ gs_fieldcat-tech = pv_tech.
+
+ CASE pv_fieldname.
+ WHEN 'REG_NO'.
+ gs_fieldcat-style = alv_style_font_bold.
+* + alv_style_font_underlined.
+
+ WHEN 'SUPPLY_VALUE' OR 'TAX_AMOUNT' OR 'NON_TAXABLE' OR 'AMOUNT_SUPPLY'.
+ gs_fieldcat-do_sum = 'X'.
+ gs_fieldcat-cfieldname = 'WAERS'.
+
+ WHEN 'ACCT' OR 'ORIGIN' OR 'DEDUCTION_STATUS'.
+ gs_fieldcat-f4availabl = 'X'.
+ gs_fieldcat-edit = 'X'.
+
+ WHEN 'EXPORT'.
+ gs_fieldcat-edit = 'X'.
+ gs_fieldcat-checkbox = 'X'.
+
+ WHEN 'DESCRIPT'.
+ gs_fieldcat-edit = 'X'.
+
+ ENDCASE.
+
+ APPEND gs_fieldcat TO lt_fieldcat.
+ CLEAR: gs_fieldcat.
+
+ENDFORM. " FILL_FIELD_CATALOGS
+*&---------------------------------------------------------------------*
+*& Form alv_display
+*&---------------------------------------------------------------------*
+*& text
+*&---------------------------------------------------------------------*
+*& --> PV_GRID
+*& --> PO_GRID
+*&---------------------------------------------------------------------*
+FORM alv_display USING pv_grid
+ po_grid TYPE REF TO lcl_alv_grid.
+
+ CASE pv_grid.
+ WHEN gc_grid.
+*-- Create grid control.
+ CALL METHOD po_grid->set_table_for_first_display
+ EXPORTING
+ i_bypassing_buffer = abap_on
+ i_default = abap_on
+ is_layout = gs_layout
+ is_variant = gs_variant
+ it_toolbar_excluding = gs_exclude
+ i_save = 'A'
+ CHANGING
+ it_outtab = gt_grid[]
+ it_fieldcatalog = gt_fieldcat[]
+ it_sort = gt_sort.
+
+ ENDCASE.
+ENDFORM.
+*&---------------------------------------------------------------------*
+*& Form alv_on_f4
+*&---------------------------------------------------------------------*
+*& text
+*&---------------------------------------------------------------------*
+*& --> PV_GRID
+*&---------------------------------------------------------------------*
+FORM alv_on_f4 USING pv_grid.
+
+ CLEAR: gs_f4, gt_f4, gt_f4[].
+
+ gs_f4-fieldname = 'ACCT'.
+ gs_f4-register = abap_on.
+ APPEND gs_f4 TO gt_f4.
+
+ gs_f4-fieldname = 'DEDUCTION_STATUS'.
+ gs_f4-register = abap_on.
+ APPEND gs_f4 TO gt_f4.
+
+ gs_f4-fieldname = 'EXPORT'.
+ gs_f4-register = abap_on.
+ APPEND gs_f4 TO gt_f4.
+
+ gs_f4-fieldname = 'ORIGIN'.
+ gs_f4-register = abap_on.
+ APPEND gs_f4 TO gt_f4.
+
+
+
+
+*--
+ CALL METHOD go_grid->register_f4_for_fields
+ EXPORTING
+ it_f4 = gt_f4.
+ENDFORM.
+*&---------------------------------------------------------------------*
+*& Form upload_excel
+*&---------------------------------------------------------------------*
+*& text
+*&---------------------------------------------------------------------*
+*& --> p1 text
+*& <-- p2 text
+*&---------------------------------------------------------------------*
+FORM upload_excel .
+ DATA : lt_excel TYPE TABLE OF ty_record.
+ DATA : ls_excel TYPE ty_record.
+
+ DATA: lo_excel_util TYPE REF TO zcl_common_class,
+ lr_data TYPE REF TO data.
+
+ DATA lv_seq TYPE n LENGTH 10.
+
+ TYPES: BEGIN OF ty_map,
+ src_idx TYPE i,
+ tgt_name TYPE fieldname,
+ END OF ty_map.
+
+ DATA lt_map TYPE STANDARD TABLE OF ty_map WITH EMPTY KEY.
+
+ lt_map = VALUE #(
+ ( src_idx = 1 tgt_name = 'CONFIRM_DATE' )
+ ( src_idx = 3 tgt_name = 'CARD_NO' )
+ ( src_idx = 4 tgt_name = 'SHOP_REG_NO' )
+ ( src_idx = 5 tgt_name = 'SHOP_NM' )
+ ( src_idx = 6 tgt_name = 'SUPPLY_VALUE' )
+ ( src_idx = 7 tgt_name = 'TAX_AMOUNT' )
+ ( src_idx = 8 tgt_name = 'NON_TAXABLE' )
+ ( src_idx = 9 tgt_name = 'AMOUNT_SUPPLY' )
+ ( src_idx = 10 tgt_name = 'SHOP_TYPE' )
+ ( src_idx = 11 tgt_name = 'BISINESS_TYPE' )
+ ( src_idx = 12 tgt_name = 'BISINESS_CATEGORY' )
+ ( src_idx = 13 tgt_name = 'DEDUCTION_STATUS' )
+ ( src_idx = 14 tgt_name = 'ETC' )
+ ).
+
+ FIELD-SYMBOLS: TYPE STANDARD TABLE,
+ TYPE any,
+ TYPE any,
+ TYPE any.
+
+ CREATE OBJECT lo_excel_util.
+
+ lr_data = lo_excel_util->upload_excel_to_itab( ).
+
+ IF lr_data IS BOUND.
+ ASSIGN lr_data->* TO .
+
+ "REG_NO 최대값 구하기.
+ PERFORM get_max_reg_no CHANGING lv_seq.
+
+ IF IS ASSIGNED.
+ LOOP AT ASSIGNING .
+ CLEAR ls_excel.
+ CHECK sy-tabix > 2.
+
+ LOOP AT lt_map INTO DATA(ls_map).
+ ASSIGN COMPONENT ls_map-src_idx OF STRUCTURE TO .
+ IF sy-subrc <> 0 OR IS NOT ASSIGNED.
+ CONTINUE.
+ ENDIF.
+
+ CASE ls_map-src_idx.
+ WHEN '01'. "Confirm Date yyyy-mm-dd => yyyymmdd 변환.
+ REPLACE ALL OCCURRENCES OF '-' IN WITH ''.
+
+ WHEN '6' OR '7' OR '8' OR '9'. "currency 변환 필요
+ PERFORM change_currency_amount USING
+ CHANGING .
+
+ WHEN '10'. "shop type
+ ls_excel-shop_ty_name = .
+
+ CASE .
+ WHEN '법인사업자'.
+ = '01'.
+ WHEN '일반과세자'.
+ = '02'.
+ WHEN '면세사업자'.
+ = '03'.
+ WHEN '간이과세자'.
+ = '04'.
+ ENDCASE.
+
+ WHEN '13'. "Deduction Status
+ ls_excel-deduction_desc = .
+
+ CASE .
+ WHEN '불공제'.
+ = '01'.
+ WHEN '공제'.
+ = '02'.
+ ENDCASE.
+ ENDCASE.
+
+ ASSIGN COMPONENT ls_map-tgt_name OF STRUCTURE ls_excel TO .
+ IF sy-subrc <> 0 OR IS NOT ASSIGNED.
+ CONTINUE.
+ ENDIF.
+
+* = .
+ = CONV #( ).
+ ENDLOOP.
+
+ ls_excel-gjahr = p_gjahr.
+ ls_excel-quarter = p_quart.
+ ls_excel-waers = gc_waers-krw. "KRW
+
+ lv_seq += 1.
+ ls_excel-reg_no = p_gjahr && p_quart && lv_seq.
+ APPEND ls_excel TO lt_excel.
+ ENDLOOP.
+ ENDIF.
+ ENDIF.
+
+ PERFORM make_report_layout CHANGING lt_excel.
+
+ gt_grid[] = lt_excel[].
+* MODIFY zttax0020 FROM TABLE lt_excel.
+ENDFORM.
+*&---------------------------------------------------------------------*
+*& Form get_max_reg_no
+*&---------------------------------------------------------------------*
+*& text
+*&---------------------------------------------------------------------*
+*& <-- LV_MAX
+*&---------------------------------------------------------------------*
+FORM get_max_reg_no CHANGING p_max.
+ DATA: p_max_reg_no TYPE zregno.
+
+ SELECT MAX( reg_no )
+ FROM zttax0020
+ INTO @p_max_reg_no
+ WHERE gjahr = @p_gjahr
+ AND quarter = @p_quart
+ .
+
+ p_max = p_max_reg_no+6(10).
+
+ENDFORM.
+*&---------------------------------------------------------------------*
+*& Form change_currency_amount
+*&---------------------------------------------------------------------*
+*& text
+*&---------------------------------------------------------------------*
+*& -->
+*& <--
+*&---------------------------------------------------------------------*
+FORM change_currency_amount USING p_in
+ CHANGING p_out.
+
+ DATA : lv_text TYPE string,
+ lv_amount_external TYPE bapicurr-bapicurr,
+ lv_amount_internal TYPE bapicurr-bapicurr.
+
+ lv_text = |{ p_in }|.
+ CONDENSE lv_text NO-GAPS.
+ REPLACE ALL OCCURRENCES OF ',' IN lv_text WITH ''.
+ TRY.
+ lv_amount_external = CONV #( lv_text ).
+ CATCH cx_sy_conversion_no_number cx_sy_conversion_overflow.
+ CLEAR lv_amount_external.
+ ENDTRY.
+
+ CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL'
+ EXPORTING
+ currency = gc_waers-krw "통화키 필드(KRW)
+ amount_external = lv_amount_external
+ max_number_of_digits = 15
+ IMPORTING
+ amount_internal = lv_amount_internal
+ EXCEPTIONS
+ OTHERS = 1.
+
+ p_out = lv_amount_internal.
+ENDFORM.
+*&---------------------------------------------------------------------*
+*& Form get_data
+*&---------------------------------------------------------------------*
+*& text
+*&---------------------------------------------------------------------*
+*& --> p1 text
+*& <-- p2 text
+*&---------------------------------------------------------------------*
+FORM get_data .
+ SELECT *
+ INTO CORRESPONDING FIELDS OF TABLE @gt_grid
+* FROM zvtax0020
+ FROM zcds_tax0020
+ WHERE gjahr = @p_gjahr
+ AND quarter = @p_quart.
+
+ IF sy-subrc NE 0 OR gt_grid[] IS INITIAL.
+ gv_err = abap_true.
+ MESSAGE s001 WITH '데이타'.
+ ENDIF.
+ENDFORM.
+*&---------------------------------------------------------------------*
+*& Form make_report_layout
+*&---------------------------------------------------------------------*
+*& text
+*&---------------------------------------------------------------------*
+*& <-- LT_EXCEL
+*&---------------------------------------------------------------------*
+FORM make_report_layout CHANGING pt_excel.
+
+ FIELD-SYMBOLS : TYPE ty_record.
+
+ SELECT card_no,
+ card_company
+ INTO TABLE @DATA(lt_card)
+ FROM zttax0010
+ ORDER BY card_no.
+
+ LOOP AT pt_excel ASSIGNING .
+ READ TABLE lt_card INTO DATA(ls_card) WITH KEY card_no = -card_no BINARY SEARCH.
+ IF sy-subrc EQ 0.
+ -card_company = ls_card-card_company.
+ ENDIF.
+ ENDLOOP.
+
+ENDFORM.
+*&---------------------------------------------------------------------*
+*& Form SAVE_DATA
+*&---------------------------------------------------------------------*
+*& text
+*&---------------------------------------------------------------------*
+*& --> p1 text
+*& <-- p2 text
+*&---------------------------------------------------------------------*
+FORM save_data .
+ CASE gv_mode.
+ WHEN gc_mode-excel. "excel 업로드
+ PERFORM save_data_from_excel.
+ WHEN OTHERS.
+ PERFORM modify_data.
+ ENDCASE.
+ENDFORM.
+*&---------------------------------------------------------------------*
+*& Form SAVE_DATA_FROM_EXCEL
+*&---------------------------------------------------------------------*
+*& text
+*&---------------------------------------------------------------------*
+*& --> p1 text
+*& <-- p2 text
+*&---------------------------------------------------------------------*
+FORM save_data_from_excel .
+ DATA : ls_data TYPE zttax0020,
+ lt_data TYPE TABLE OF zttax0020.
+
+ LOOP AT gt_grid INTO DATA(ls_list).
+ MOVE-CORRESPONDING ls_list TO ls_data.
+
+ APPEND ls_data TO lt_data.
+ ENDLOOP.
+
+ MODIFY zttax0020 FROM TABLE lt_data.
+
+ENDFORM.
+*&---------------------------------------------------------------------*
+*& Form MODIFY_DATA
+*&---------------------------------------------------------------------*
+*& text
+*&---------------------------------------------------------------------*
+*& --> p1 text
+*& <-- p2 text
+*&---------------------------------------------------------------------*
+FORM modify_data .
+ DATA : ls_data TYPE zttax0030,
+ lt_data TYPE TABLE OF zttax0030.
+
+ LOOP AT gt_grid INTO DATA(gs_grid) WHERE mark = 'X'.
+ "선택된 행 처리
+ MOVE-CORRESPONDING gs_grid TO ls_data.
+
+ APPEND ls_data TO lt_data.
+ ENDLOOP.
+
+ MODIFY zttax0030 FROM TABLE lt_data.
+ MESSAGE s002.
+ENDFORM.
+*&---------------------------------------------------------------------*
+*& Form on_f4
+*&---------------------------------------------------------------------*
+FORM on_f4 USING pv_fieldname TYPE lvc_fname
+ pv_fieldvalue TYPE lvc_value
+ ps_row_no TYPE lvc_s_roid
+ po_event_data TYPE REF TO cl_alv_event_data
+ pt_bad_cells TYPE lvc_t_modi
+ pv_display TYPE char01.
+
+ FIELD-SYMBOLS : TYPE lvc_t_modi.
+
+ DATA: lv_err,
+ ls_modi TYPE lvc_s_modi.
+
+ CLEAR: gt_f4_fields, gt_f4_fields[], gt_f4_header, gt_f4_header[],
+ gv_f4_fieldname, gv_f4_fieldvalue, lv_err, ls_modi.
+
+* READ TABLE INTO INDEX ps_row_no-row_id.
+ CASE pv_fieldname .
+
+*-- Account No.
+ WHEN 'ACCT'.
+ PERFORM on_f4_acct USING pv_fieldname CHANGING lv_err.
+
+ WHEN 'ORIGIN'.
+ PERFORM on_f4_origin USING pv_fieldname CHANGING lv_err.
+
+ WHEN 'DEDUCTION_STATUS'.
+ PERFORM on_f4_status USING pv_fieldname CHANGING lv_err.
+
+* WHEN 'EXPORT'.
+* PERFORM on_f4_export USING pv_fieldname CHANGING lv_err.
+
+ WHEN OTHERS.
+ lv_err = abap_on.
+
+ ENDCASE.
+
+*--
+ CHECK lv_err IS INITIAL AND gv_f4_fieldvalue IS NOT INITIAL.
+ ASSIGN po_event_data->m_data->* TO .
+ ls_modi-row_id = ps_row_no-row_id.
+ ls_modi-fieldname = pv_fieldname.
+ ls_modi-value = gv_f4_fieldvalue.
+ APPEND ls_modi TO .
+
+ po_event_data->m_event_handled = abap_on.
+
+ENDFORM.
+*&---------------------------------------------------------------------*
+*& Form on_f4_acct
+*&---------------------------------------------------------------------*
+FORM on_f4_acct USING pv_fieldname
+ CHANGING pv_err.
+ DATA : lt_return_tab TYPE TABLE OF ddshretval.
+ DATA : lv_fieldname TYPE lvc_fname.
+
+**-- Style Serial Code.
+* CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
+* EXPORTING
+* tabname = 'MARA'
+* fieldname = pv_fieldname
+* searchhelp = 'ZSH_ZSTYCD'.
+*
+* IF sy-subrc NE 0.
+* pv_err = abap_on.
+* ENDIF.
+
+ SELECT code, code_txt
+ FROM zcat0020
+ INTO TABLE @DATA(lt_user)
+ WHERE appli = 'TX'
+ AND grp = 'TAX01'
+ AND spras = @sy-langu
+ AND fld_03 = 'X'.
+
+ lv_fieldname = 'CODE'.
+
+*—- Search Help 띄우는 펑션 실행
+ CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
+ EXPORTING
+* RETFIELD = E_FIELDNAME
+ retfield = lv_FIELDNAME
+ dynpprog = sy-repid
+ dynpnr = sy-dynnr
+ value_org = 'S'
+ TABLES
+ value_tab = lt_user
+ return_tab = lt_return_tab
+ EXCEPTIONS
+ parameter_error = 1
+ no_values_found = 2
+ OTHERS = 3.
+
+* CHECK E_DISPLAY IS INITIAL.
+
+ IF sy-subrc <> 0.
+ EXIT.
+ ENDIF.
+
+ LOOP AT lt_return_tab INTO DATA(ls_return).
+ gv_f4_fieldvalue = ls_return-fieldval.
+ ENDLOOP.
+
+ENDFORM.
+*&---------------------------------------------------------------------*
+*& Form on_f4_origin
+*&---------------------------------------------------------------------*
+FORM on_f4_origin USING pv_fieldname
+ CHANGING pv_err.
+ DATA : lt_return_tab TYPE TABLE OF ddshretval.
+ DATA : lv_fieldname TYPE lvc_fname.
+
+**-- Style Serial Code.
+* CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
+* EXPORTING
+* tabname = 'MARA'
+* fieldname = pv_fieldname
+* searchhelp = 'ZSH_ZSTYCD'.
+*
+* IF sy-subrc NE 0.
+* pv_err = abap_on.
+* ENDIF.
+
+ SELECT code, code_txt
+ FROM zcat0020
+ INTO TABLE @DATA(lt_user)
+ WHERE appli = 'TX'
+ AND grp = 'TAX02'
+ AND spras = @sy-langu.
+
+ lv_fieldname = 'CODE'.
+
+*—- Search Help 띄우는 펑션 실행
+ CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
+ EXPORTING
+* RETFIELD = E_FIELDNAME
+ retfield = lv_FIELDNAME
+ dynpprog = sy-repid
+ dynpnr = sy-dynnr
+ value_org = 'S'
+ TABLES
+ value_tab = lt_user
+ return_tab = lt_return_tab
+ EXCEPTIONS
+ parameter_error = 1
+ no_values_found = 2
+ OTHERS = 3.
+
+* CHECK E_DISPLAY IS INITIAL.
+
+ IF sy-subrc <> 0.
+ EXIT.
+ ENDIF.
+
+ LOOP AT lt_return_tab INTO DATA(ls_return).
+ gv_f4_fieldvalue = ls_return-fieldval.
+ ENDLOOP.
+
+ENDFORM.
+*&---------------------------------------------------------------------*
+*& Form on_f4_status
+*&---------------------------------------------------------------------*
+FORM on_f4_status USING pv_fieldname
+ CHANGING pv_err.
+ DATA : lt_return_tab TYPE TABLE OF ddshretval.
+ DATA : lv_fieldname TYPE lvc_fname.
+
+**-- Style Serial Code.
+* CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
+* EXPORTING
+* tabname = 'MARA'
+* fieldname = pv_fieldname
+* searchhelp = 'ZSH_ZSTYCD'.
+*
+* IF sy-subrc NE 0.
+* pv_err = abap_on.
+* ENDIF.
+
+ SELECT domvalue_l AS code,
+ ddtext AS code_txt
+ FROM dd07t
+ INTO TABLE @DATA(lt_user)
+ WHERE domname = 'ZDEDSTATUS'
+ AND ddlanguage = @sy-langu.
+
+
+ lv_fieldname = 'CODE'.
+
+*—- Search Help 띄우는 펑션 실행
+ CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
+ EXPORTING
+* RETFIELD = E_FIELDNAME
+ retfield = lv_FIELDNAME
+ dynpprog = sy-repid
+ dynpnr = sy-dynnr
+ value_org = 'S'
+ TABLES
+ value_tab = lt_user
+ return_tab = lt_return_tab
+ EXCEPTIONS
+ parameter_error = 1
+ no_values_found = 2
+ OTHERS = 3.
+
+* CHECK E_DISPLAY IS INITIAL.
+
+ IF sy-subrc <> 0.
+ EXIT.
+ ENDIF.
+
+ LOOP AT lt_return_tab INTO DATA(ls_return).
+ gv_f4_fieldvalue = ls_return-fieldval.
+ ENDLOOP.
+
+ENDFORM.
+*&---------------------------------------------------------------------*
+*& Form data_changed_finished
+*&---------------------------------------------------------------------*
+*& text
+*&---------------------------------------------------------------------*
+*& --> E_MODIFIED
+*& --> ET_GOOD_CELLS
+*&---------------------------------------------------------------------*
+FORM data_changed_finished USING p_modified TYPE char01
+ pt_good_cells TYPE lvc_t_modi.
+
+ DATA: ls_row_id TYPE lvc_s_row,
+ ls_col_id TYPE lvc_s_col,
+ ls_row_no TYPE lvc_s_roid,
+ ls_stbl TYPE lvc_s_stbl.
+
+ CHECK p_modified = abap_true.
+
+ " 현재 셀 저장
+ go_grid->get_current_cell(
+ IMPORTING
+ es_row_id = ls_row_id
+ es_col_id = ls_col_id
+ es_row_no = ls_row_no ).
+
+ LOOP AT pt_good_cells INTO DATA(ls_cell).
+ READ TABLE gt_grid INTO DATA(ls_grid) INDEX ls_cell-row_id.
+
+ CASE ls_cell-fieldname.
+ WHEN 'ACCT'.
+ SELECT SINGLE p~code_txt, q~code_txt
+ INTO ( @ls_grid-acct_nm, @ls_grid-gacct_nm )
+ FROM zcat0020 AS p
+ LEFT OUTER JOIN zcat0020 AS q
+ ON p~appli = q~appli
+ AND p~grp = q~grp
+ AND p~spras = q~spras
+ AND q~code = p~fld_02
+ WHERE p~appli = 'TX'
+ AND p~grp = 'TAX01'
+ AND p~spras = @sy-langu
+ AND p~code = @ls_cell-value
+ AND p~fld_03 = 'X'.
+
+ IF sy-subrc NE 0.
+ CLEAR : ls_grid-acct, ls_grid-acct_nm, ls_grid-gacct_nm.
+* IF ls_cell-value IS NOT INITIAL.
+* gv_err = 'X'.
+* ENDIF.
+ ENDIF.
+
+ WHEN 'ORIGIN'.
+ SELECT SINGLE p~code_txt
+ INTO @ls_grid-origin_nm
+ FROM zcat0020 AS p
+ WHERE p~appli = 'TX'
+ AND p~grp = 'TAX02'
+ AND p~spras = @sy-langu
+ AND p~code = @ls_cell-value.
+
+ IF sy-subrc NE 0.
+ CLEAR : ls_grid-origin, ls_grid-origin_nm.
+* IF ls_cell-value IS NOT INITIAL.
+* gv_err = 'X'.
+* ENDIF.
+ ENDIF.
+
+ WHEN 'DEDUCTION_STATUS'.
+ CASE ls_cell-value.
+ WHEN '01'.
+ ls_grid-deduction_desc = '불공제'.
+ WHEN '02'.
+ ls_grid-deduction_desc = '공제'.
+ WHEN OTHERS.
+ CLEAR : ls_grid-deduction_status, ls_grid-deduction_desc.
+ ENDCASE.
+
+ WHEN 'DESCRIPT'.
+
+ WHEN OTHERS.
+ ENDCASE.
+
+ ls_grid-mark = 'X'.
+
+ CASE ls_grid-export.
+ WHEN 'X'.
+ IF ls_grid-gacct_nm IS INITIAL OR ls_grid-origin_nm IS INITIAL OR ls_grid-deduction_desc is INITIAL.
+ CLEAR ls_grid-export.
+ ENDIF.
+
+ ENDCASE.
+
+* ls_grid-export = 'X'.
+
+ MODIFY gt_grid FROM ls_grid INDEX ls_cell-row_id.
+
+ ENDLOOP.
+
+* Refresh 시 현재 위치 안정화
+ ls_stbl-row = abap_true.
+ ls_stbl-col = abap_true.
+
+ go_grid->refresh_table_display(
+ EXPORTING
+ is_stable = ls_stbl ).
+
+* CALL METHOD go_grid->refresh_table_display.
+
+* 원래 셀로 포커스 복원
+ IF ls_row_id-index IS NOT INITIAL
+ AND ls_col_id-fieldname IS NOT INITIAL.
+
+ go_grid->set_current_cell_via_id(
+ EXPORTING
+ is_row_id = ls_row_id
+ is_column_id = ls_col_id
+ is_row_no = ls_row_no ).
+
+ cl_gui_control=>set_focus(
+ EXPORTING
+ control = go_grid ).
+
+ cl_gui_cfw=>flush( ).
+ ENDIF.
+
+ENDFORM.
+*&---------------------------------------------------------------------*
+*& Form init_data
+*&---------------------------------------------------------------------*
+*& text
+*&---------------------------------------------------------------------*
+*& --> p1 text
+*& <-- p2 text
+*&---------------------------------------------------------------------*
+FORM init_data .
+
+
+ENDFORM.
+*&---------------------------------------------------------------------*
+*& Form export_excel_form_data
+*&---------------------------------------------------------------------*
+*& text
+*&---------------------------------------------------------------------*
+*& --> p1 text
+*& <-- p2 text
+*&---------------------------------------------------------------------*
+FORM export_excel_form_data .
+ TYPES : BEGIN OF ty_excel,
+ no TYPE c LENGTH 10,
+ result TYPE c LENGTH 10,
+ confirm_date TYPE c LENGTH 10,
+ gacct_nm TYPE string,
+ acct_nm TYPE string,
+ descript TYPE string,
+ shop_nm TYPE string,
+ supply_value TYPE string, "LIKE zttax0020-supply_value,
+ origin_nm TYPE string,
+ END OF ty_excel.
+
+ DATA : lt_excel TYPE STANDARD TABLE OF ty_excel,
+ ls_excel TYPE ty_excel,
+ lv_file TYPE string.
+
+ TYPES: BEGIN OF ty_head,
+ field(50) TYPE c,
+ END OF ty_head.
+
+ DATA: lt_header TYPE STANDARD TABLE OF ty_head,
+ ls_header TYPE ty_head.
+
+ DATA: lv_filename TYPE string,
+ lv_path TYPE string,
+ lv_fullpath TYPE string,
+ lv_user_action TYPE i.
+
+ " 1. GT_GRID -> 다운로드용 테이블로 필요한 컬럼만 이동
+ LOOP AT gt_grid INTO DATA(gs_grid) WHERE export = 'X'.
+ CLEAR ls_excel.
+ CLEAR : ls_excel-no, ls_excel-result. "공백으로 컬럼 채움
+* ls_excel-confirm_date = gs_grid-confirm_date.
+ ls_excel-confirm_date = gs_grid-confirm_date(4) && '-' && gs_grid-confirm_date+4(2) && '-' && gs_grid-confirm_date+6(2).
+
+ ls_excel-gacct_nm = gs_grid-gacct_nm.
+ CONDENSE ls_excel-gacct_nm NO-GAPS.
+
+ ls_excel-acct_nm = gs_grid-acct_nm.
+ CONDENSE ls_excel-acct_nm NO-GAPS.
+
+ ls_excel-descript = gs_grid-descript.
+* CONDENSE ls_excel-descript NO-GAPS.
+ SHIFT ls_excel-descript LEFT DELETING LEADING space. "앞 공백 제거
+ SHIFT ls_Excel-descript RIGHT DELETING TRAILING space. "맨 뒤 공백 제거
+
+ ls_excel-shop_nm = gs_grid-shop_nm.
+* CONDENSE ls_excel-shop_nm NO-GAPS.
+ SHIFT ls_excel-shop_nm LEFT DELETING LEADING space.
+ SHIFT ls_Excel-shop_nm RIGHT DELETING TRAILING space.
+
+ "통화 변환.
+ ls_excel-supply_value = |{ gs_grid-supply_value CURRENCY = gs_grid-waers SIGN = LEFT }|.
+ REPLACE ALL OCCURRENCES OF ',' IN ls_excel-supply_value WITH ''.
+ CONDENSE ls_excel-supply_value NO-GAPS.
+
+ ls_excel-origin_nm = gs_grid-origin_nm.
+
+ APPEND ls_excel TO lt_excel.
+ ENDLOOP.
+
+ IF lt_excel IS INITIAL.
+ MESSAGE '다운로드할 데이터가 없습니다.' TYPE 'S' DISPLAY LIKE 'E'.
+ EXIT.
+ ENDIF.
+
+ " 2. 헤더명 세팅
+ ls_header-field = 'NO'. APPEND ls_header TO lt_header.
+ ls_header-field = '처리결과'. APPEND ls_header TO lt_header.
+ ls_header-field = '날짜(필수)'. APPEND ls_header TO lt_header.
+ ls_header-field = '계정과목_대(필수)'. APPEND ls_header TO lt_header.
+ ls_header-field = '계정과목_소(필수)'. APPEND ls_header TO lt_header.
+ ls_header-field = '거래내용(필수)'. APPEND ls_header TO lt_header.
+ ls_header-field = '거래처(필수)'. APPEND ls_header TO lt_header.
+ ls_header-field = '금액(공급가액_필수)'. APPEND ls_header TO lt_header.
+ ls_header-field = '비고(필수)'. APPEND ls_header TO lt_header.
+
+
+ " 3. 저장 파일명 선택
+ CALL METHOD cl_gui_frontend_services=>file_save_dialog
+ EXPORTING
+ window_title = 'Excel 파일 저장'
+ default_extension = 'xls'
+ default_file_name = 'GT_GRID_DOWNLOAD.xls'
+ file_filter = 'Excel Files (*.xls)|*.xls|'
+ CHANGING
+ filename = lv_filename
+ path = lv_path
+ fullpath = lv_fullpath
+ user_action = lv_user_action
+ EXCEPTIONS
+ cntl_error = 1
+ error_no_gui = 2
+ not_supported_by_gui = 3
+ OTHERS = 4.
+
+ IF sy-subrc <> 0 OR lv_user_action <> cl_gui_frontend_services=>action_ok.
+ MESSAGE '파일 저장이 취소되었습니다.' TYPE 'S'.
+ EXIT.
+ ENDIF.
+
+ lv_file = lv_fullpath.
+
+ " 4. Excel 다운로드
+ CALL FUNCTION 'GUI_DOWNLOAD'
+ EXPORTING
+ filename = lv_file
+ filetype = 'ASC'
+ write_field_separator = 'X'
+* trunc_trailing_blanks = 'X'
+ TABLES
+ data_tab = lt_excel
+ fieldnames = lt_header
+ EXCEPTIONS
+ file_write_error = 1
+ no_batch = 2
+ gui_refuse_filetransfer = 3
+ invalid_type = 4
+ no_authority = 5
+ unknown_error = 6
+ header_not_allowed = 7
+ separator_not_allowed = 8
+ filesize_not_allowed = 9
+ header_too_long = 10
+ dp_error_create = 11
+ dp_error_send = 12
+ dp_error_write = 13
+ unknown_dp_error = 14
+ access_denied = 15
+ dp_out_of_memory = 16
+ disk_full = 17
+ dp_timeout = 18
+ file_not_found = 19
+ dataprovider_exception = 20
+ control_flush_error = 21
+ OTHERS = 22.
+
+ IF sy-subrc = 0.
+ MESSAGE |엑셀 파일이 저장되었습니다: { lv_file }| TYPE 'S'.
+ ELSE.
+ MESSAGE '엑셀 다운로드 중 오류가 발생했습니다.' TYPE 'S' DISPLAY LIKE 'E'.
+ ENDIF.
+
+ENDFORM.
+*&---------------------------------------------------------------------*
+*& Form on_f4_export
+*&---------------------------------------------------------------------*
+*& text
+*&---------------------------------------------------------------------*
+*& --> PV_FIELDNAME
+*& <-- LV_ERR
+*&---------------------------------------------------------------------*
+FORM on_f4_export USING pv_fieldname
+ CHANGING pv_err.
+
+ TYPES: BEGIN OF ty_user,
+ code TYPE char1,
+ code_txt TYPE char20,
+ END OF ty_user.
+
+ DATA lt_user TYPE STANDARD TABLE OF ty_user.
+
+ DATA : lt_return_tab TYPE TABLE OF ddshretval.
+ DATA : lv_fieldname TYPE lvc_fname.
+
+ lt_user = VALUE #(
+ ( code = 'X' code_txt = '추출' )
+ ( code = ' ' code_txt = '제외' )
+ ).
+
+ lv_fieldname = 'CODE'.
+
+*—- Search Help 띄우는 펑션 실행
+ CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
+ EXPORTING
+* RETFIELD = E_FIELDNAME
+ retfield = lv_FIELDNAME
+ dynpprog = sy-repid
+ dynpnr = sy-dynnr
+ value_org = 'S'
+ TABLES
+ value_tab = lt_user
+ return_tab = lt_return_tab
+ EXCEPTIONS
+ parameter_error = 1
+ no_values_found = 2
+ OTHERS = 3.
+
+* CHECK E_DISPLAY IS INITIAL.
+
+ IF sy-subrc <> 0.
+ EXIT.
+ ENDIF.
+
+ LOOP AT lt_return_tab INTO DATA(ls_return).
+ gv_f4_fieldvalue = ls_return-fieldval.
+ ENDLOOP.
+ENDFORM.
diff --git a/src/ztax0010_f01.prog.xml b/src/ztax0010_f01.prog.xml
new file mode 100644
index 0000000..dcc84ee
--- /dev/null
+++ b/src/ztax0010_f01.prog.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+ ZTAX0010_F01
+ I
+ X
+
+
+
+
diff --git a/src/ztax0010_i01.prog.abap b/src/ztax0010_i01.prog.abap
new file mode 100644
index 0000000..c078ed9
--- /dev/null
+++ b/src/ztax0010_i01.prog.abap
@@ -0,0 +1,3 @@
+*&---------------------------------------------------------------------*
+*& Include ZTAX0010_I01
+*&---------------------------------------------------------------------*
diff --git a/src/ztax0010_i01.prog.xml b/src/ztax0010_i01.prog.xml
new file mode 100644
index 0000000..b79db90
--- /dev/null
+++ b/src/ztax0010_i01.prog.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+ ZTAX0010_I01
+ I
+ X
+
+
+
+
diff --git a/src/ztax0010_o01.prog.abap b/src/ztax0010_o01.prog.abap
new file mode 100644
index 0000000..97ddaaf
--- /dev/null
+++ b/src/ztax0010_o01.prog.abap
@@ -0,0 +1,60 @@
+*&---------------------------------------------------------------------*
+*& Include ZTAX0010_O01
+*&---------------------------------------------------------------------*
+
+*&---------------------------------------------------------------------*
+*& Module STATUS_0100 OUTPUT
+*&---------------------------------------------------------------------*
+*&
+*&---------------------------------------------------------------------*
+MODULE status_0100 OUTPUT.
+ DATA : lv_text(200),
+ lt_fcode TYPE TABLE OF sy-ucomm.
+
+ CLEAR: lv_text, lt_fcode, lt_fcode[].
+
+*--
+ PERFORM set_status TABLES lt_fcode USING lv_text.
+
+ SET PF-STATUS 'PF_0100' EXCLUDING lt_fcode.
+ SET TITLEBAR 'ST_0100' WITH lv_text.
+
+ENDMODULE.
+*&---------------------------------------------------------------------*
+*& Module ALV_DISPLAY_0100 OUTPUT
+*&---------------------------------------------------------------------*
+*&
+*&---------------------------------------------------------------------*
+MODULE alv_display_0100 OUTPUT.
+ CHECK : go_docking_container IS INITIAL.
+
+*-- Create Object : Container.
+ PERFORM create_container USING go_docking_container.
+ PERFORM split_container.
+
+*-- ALV_Display.
+ PERFORM create_alv USING go_grid go_container
+ gc_grid go_event_receiver.
+
+*--
+ PERFORM create_html_text USING 'H' go_top_of_list go_container_top.
+ENDMODULE.
+*&---------------------------------------------------------------------*
+*& Module USER_COMMAND_0100 INPUT
+*&---------------------------------------------------------------------*
+* text
+*----------------------------------------------------------------------*
+MODULE user_command_0100 INPUT.
+ CASE ok_code_0100.
+ WHEN gc_fcode-back OR gc_fcode-exit OR gc_fcode-canc.
+ LEAVE TO SCREEN 0.
+
+ WHEN gc_fcode-save.
+ PERFORM save_data.
+
+ WHEN gc_fcode-excel.
+ PERFORM export_excel_form_data.
+
+
+ ENDCASE.
+ENDMODULE.
diff --git a/src/ztax0010_o01.prog.xml b/src/ztax0010_o01.prog.xml
new file mode 100644
index 0000000..afe3bfb
--- /dev/null
+++ b/src/ztax0010_o01.prog.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+ ZTAX0010_O01
+ I
+ X
+
+
+
+
diff --git a/src/ztax0010_sel.prog.abap b/src/ztax0010_sel.prog.abap
new file mode 100644
index 0000000..cbd620e
--- /dev/null
+++ b/src/ztax0010_sel.prog.abap
@@ -0,0 +1,48 @@
+*&---------------------------------------------------------------------*
+*& Include ZTAX0010_SEL
+*&---------------------------------------------------------------------*
+
+SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-b01.
+ PARAMETERS : p_gjahr TYPE gjahr DEFAULT sy-datum(4) OBLIGATORY.
+*-- 분기.
+ PARAMETERS : p_quart TYPE zquarter OBLIGATORY.
+
+SELECTION-SCREEN END OF BLOCK b1.
+
+SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE TEXT-b02.
+ SELECTION-SCREEN BEGIN OF LINE.
+
+ PARAMETERS: p_chk1 RADIOBUTTON GROUP rg1 DEFAULT 'X'.
+ SELECTION-SCREEN COMMENT 3(40) TEXT-001 FOR FIELD p_chk1.
+
+ PARAMETERS: p_chk2 RADIOBUTTON GROUP rg1.
+ SELECTION-SCREEN COMMENT 50(10) TEXT-002 FOR FIELD p_chk2.
+
+ SELECTION-SCREEN END OF LINE.
+
+SELECTION-SCREEN END OF BLOCK b2.
+
+SELECTION-SCREEN FUNCTION KEY 1. "Excel 업로드 버튼 추가
+
+
+* AT SELECTION-SCREEN *
+*======================================================================*
+AT SELECTION-SCREEN.
+* PERFORM selection_screen.
+ IF sscrfields-ucomm = 'FC01'.
+ PERFORM upload_excel.
+ gv_mode = gc_mode-excel.
+
+ CALL SCREEN 0100.
+* MESSAGE 'You clicked Function Key1' TYPE 'I'.
+ ENDIF.
+*&---------------------------------------------------------------------*
+* AT SELECTION-SCREEN ON
+*&---------------------------------------------------------------------*
+
+
+*&---------------------------------------------------------------------*
+* AT SELECTION-SCREEN OUTPUT
+*&---------------------------------------------------------------------*
+AT SELECTION-SCREEN OUTPUT.
+* PERFORM selection_screen_output.
diff --git a/src/ztax0010_sel.prog.xml b/src/ztax0010_sel.prog.xml
new file mode 100644
index 0000000..8793c6c
--- /dev/null
+++ b/src/ztax0010_sel.prog.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+ ZTAX0010_SEL
+ I
+ X
+
+
+
+
diff --git a/src/ztax0010_top.prog.abap b/src/ztax0010_top.prog.abap
new file mode 100644
index 0000000..4757c4f
--- /dev/null
+++ b/src/ztax0010_top.prog.abap
@@ -0,0 +1,56 @@
+*&---------------------------------------------------------------------*
+*& Include ZTAX0010_TOP
+*&---------------------------------------------------------------------*
+
+*-- 공통 Include.
+INCLUDE zco_constants. " Constants.
+INCLUDE zco_variant. " Variant.
+INCLUDE zco_macro. " Macro.
+INCLUDE .
+
+*&---------------------------------------------------------------------*
+*& TABLES
+*&---------------------------------------------------------------------*
+
+
+*&---------------------------------------------------------------------*
+*& CONSTANTS
+*&---------------------------------------------------------------------*
+
+
+*&---------------------------------------------------------------------*
+*& Variables
+*&---------------------------------------------------------------------*
+DATA : gv_mode TYPE c LENGTH 1.
+
+*&---------------------------------------------------------------------*
+*& Types
+*&---------------------------------------------------------------------*
+TYPES : BEGIN OF ty_record.
+ INCLUDE TYPE zttax0020.
+TYPES : card_company TYPE zcard_buk,
+ shop_ty_name TYPE c LENGTH 10,
+ deduction_desc TYPE c LENGTH 5,
+ acct LIKE zttax0030-acct,
+ acct_nm TYPE c LENGTH 40,
+ gacct_nm TYPE c LENGTH 40,
+ origin LIKE zttax0030-origin,
+ origin_nm TYPE c LENGTH 40,
+ descript LIKE Zttax0030-descript,
+ bp_no like zttax0009-bp_no,
+ bp_nm like zttax0009-bp_nm,
+ mark TYPE c LENGTH 1, "수정 여부
+ EXPORT TYPE C LENGTH 1, "신고 대상 여부
+ END OF ty_record.
+
+*&---------------------------------------------------------------------*
+*& Internal Table
+*&---------------------------------------------------------------------*
+*-- Main Internal Table.
+DATA : gt_grid TYPE TABLE OF ty_record.
+
+*&---------------------------------------------------------------------*
+*& Field Symbols
+*&---------------------------------------------------------------------*
+FIELD-SYMBOLS : TYPE table,
+ TYPE any.
diff --git a/src/ztax0010_top.prog.xml b/src/ztax0010_top.prog.xml
new file mode 100644
index 0000000..be6b30a
--- /dev/null
+++ b/src/ztax0010_top.prog.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+ ZTAX0010_TOP
+ I
+ X
+
+
+
+
diff --git a/src/ztf_asset_depr.ddls.asddls b/src/ztf_asset_depr.ddls.asddls
new file mode 100644
index 0000000..eda2f22
--- /dev/null
+++ b/src/ztf_asset_depr.ddls.asddls
@@ -0,0 +1,26 @@
+@EndUserText.label: '감가상각 스케쥴표'
+define table function ztf_asset_depr
+returns
+{
+ key mandt : mandt;
+ key assettype : zassettype;
+ key assetcode : mconame4;
+ // key ASSETDATE : /sapquery/s_bdate;
+ // aname : /bofu/text;
+ // depr_method : zdepmethod;
+ // useful_life : abap.int1;
+ month_cnt : abap.int1;
+ start_ym : zstart_ym;
+ end_ym : zend_ym;
+
+ // assetprice : s_sum;
+ yearmonth : vdm_yearmonth;
+ seq_no : zseq_no;
+
+ @Semantics.amount.currencyCode: 'waers'
+ dep_amt : zdepamt;
+ WAERS : waers;
+
+}
+implemented by method
+ zcl_custom_tax_amdp=>get_asset_depr_plan;
diff --git a/src/ztf_asset_depr.ddls.baseinfo b/src/ztf_asset_depr.ddls.baseinfo
new file mode 100644
index 0000000..e69de29
diff --git a/src/ztf_asset_depr.ddls.xml b/src/ztf_asset_depr.ddls.xml
new file mode 100644
index 0000000..97bb759
--- /dev/null
+++ b/src/ztf_asset_depr.ddls.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+ ZTF_ASSET_DEPR
+ E
+ 감가상각 스케쥴표
+ F
+
+
+
+
diff --git a/src/zttax0008.tabl.xml b/src/zttax0008.tabl.xml
new file mode 100644
index 0000000..3aa6fb0
--- /dev/null
+++ b/src/zttax0008.tabl.xml
@@ -0,0 +1,98 @@
+
+
+
+
+
+ ZTTAX0008
+ E
+ TRANSP
+ X
+ [HTAX]자산 관리
+ X
+ A
+ 1
+
+
+ ZTTAX0008
+ A
+ 0
+ APPL0
+ X
+ N
+
+
+
+ MANDT
+ X
+ MANDT
+ 0
+ X
+ E
+
+
+ ASSETTYPE
+ X
+ ZASSETTYPE
+ 0
+ X
+ X
+ F
+ E
+
+
+ ASSETCODE
+ X
+ MCONAME4
+ 0
+ X
+ E
+
+
+ ASSETDATE
+ /SAPQUERY/S_BDATE
+ 0
+ T
+ E
+
+
+ ANAME
+ /BOFU/TEXT
+ 0
+ E
+
+
+ DEPR_METHOD
+ ZDEPMETHOD
+ 0
+ X
+ F
+ E
+
+
+ USEFUL_LIFE
+ 0
+ X
+ 000001
+ INT1
+ 000003
+ INT1
+ 내용연수
+
+
+ ASSETPRICE
+ S_SUM
+ 0
+ ZTTAX0008
+ WAERS
+ E
+
+
+ WAERS
+ WAERS
+ 0
+ E
+
+
+
+
+
diff --git a/src/zttax0009.tabl.xml b/src/zttax0009.tabl.xml
new file mode 100644
index 0000000..43658db
--- /dev/null
+++ b/src/zttax0009.tabl.xml
@@ -0,0 +1,55 @@
+
+
+
+
+
+ ZTTAX0009
+ E
+ TRANSP
+ X
+ 거래처 관리
+ X
+ A
+ 1
+
+
+ ZTTAX0009
+ A
+ 0
+ APPL0
+ X
+ N
+
+
+
+ MANDT
+ X
+ MANDT
+ 0
+ X
+ E
+
+
+ BP_NO
+ X
+ ZBPNO
+ 0
+ X
+ E
+
+
+ BP_NM
+ ZBPNM
+ 0
+ E
+
+
+ TEL_NO
+ DSTEL
+ 0
+ E
+
+
+
+
+
diff --git a/src/zttax0010.tabl.xml b/src/zttax0010.tabl.xml
new file mode 100644
index 0000000..7693566
--- /dev/null
+++ b/src/zttax0010.tabl.xml
@@ -0,0 +1,48 @@
+
+
+
+
+
+ ZTTAX0010
+ E
+ TRANSP
+ X
+ [HTAX]신용카드 마스터
+ A
+ 1
+
+
+ ZTTAX0010
+ A
+ 0
+ APPL0
+ X
+ N
+
+
+
+ MANDT
+ X
+ MANDT
+ 0
+ X
+ E
+
+
+ CARD_NO
+ X
+ ZCARD_NO
+ 0
+ X
+ E
+
+
+ CARD_COMPANY
+ ZCARD_BUK
+ 0
+ E
+
+
+
+
+
diff --git a/src/zttax0020.tabl.xml b/src/zttax0020.tabl.xml
new file mode 100644
index 0000000..1340e17
--- /dev/null
+++ b/src/zttax0020.tabl.xml
@@ -0,0 +1,157 @@
+
+
+
+
+
+ ZTTAX0020
+ E
+ TRANSP
+ X
+ [HTAX]카드사용내역
+ X
+ A
+ 1
+
+
+ ZTTAX0020
+ A
+ 3
+ APPL1
+ N
+
+
+
+ MANDT
+ X
+ MANDT
+ 0
+ X
+ E
+
+
+ GJAHR
+ X
+ GJAHR
+ 0
+ X
+ E
+
+
+ QUARTER
+ X
+ ZQUARTER
+ 0
+ X
+ X
+ F
+ E
+
+
+ REG_NO
+ X
+ ZREGNO
+ 0
+ X
+ E
+
+
+ CONFIRM_DATE
+ ZCONF_DATE
+ 0
+ T
+ E
+
+
+ CARD_NO
+ ZCARD_NO
+ 0
+ E
+
+
+ SHOP_REG_NO
+ ZBUSI_REGNO
+ 0
+ E
+
+
+ SHOP_NM
+ ZSHOP_NM
+ 0
+ E
+
+
+ WAERS
+ WAERS
+ 0
+ E
+
+
+ SUPPLY_VALUE
+ ZSUPVAL
+ 0
+ ZTTAX0020
+ WAERS
+ E
+
+
+ TAX_AMOUNT
+ ZTAXAMT
+ 0
+ ZTTAX0020
+ WAERS
+ E
+
+
+ NON_TAXABLE
+ ZNOTAXABLE
+ 0
+ ZTTAX0020
+ WAERS
+ E
+
+
+ AMOUNT_SUPPLY
+ ZSUPAMT
+ 0
+ ZTTAX0020
+ WAERS
+ E
+
+
+ SHOP_TYPE
+ ZSHOPTYPE
+ 0
+ X
+ F
+ E
+
+
+ BISINESS_TYPE
+ ZBUSITYPE
+ 0
+ E
+
+
+ BISINESS_CATEGORY
+ ZBUSICATE
+ 0
+ E
+
+
+ DEDUCTION_STATUS
+ ZDEDSTATUS
+ 0
+ X
+ F
+ E
+
+
+ ETC
+ SWD_OBJTXT
+ 0
+ E
+
+
+
+
+
diff --git a/src/zttax0030.tabl.xml b/src/zttax0030.tabl.xml
new file mode 100644
index 0000000..3fc3618
--- /dev/null
+++ b/src/zttax0030.tabl.xml
@@ -0,0 +1,96 @@
+
+
+
+
+
+ ZTTAX0030
+ E
+ TRANSP
+ X
+ [HTAX]공제여부 확정 변경
+ X
+ A
+ 1
+
+
+ ZTTAX0030
+ A
+ 1
+ APPL1
+ N
+
+
+
+ MANDT
+ X
+ MANDT
+ 0
+ X
+ E
+
+
+ GJAHR
+ X
+ GJAHR
+ 0
+ X
+ E
+
+
+ QUARTER
+ X
+ ZQUARTER
+ 0
+ X
+ X
+ F
+ E
+
+
+ REG_NO
+ X
+ ZREGNO
+ 0
+ X
+ E
+
+
+ ACCT
+ ZACCT
+ 0
+ E
+
+
+ DEDUCTION_STATUS
+ ZDEDSTATUS
+ 0
+ X
+ F
+ E
+
+
+ ORIGIN
+ ZORIGIN
+ 0
+ E
+
+
+ DESCRIPT
+ ARBFND_DESCRIPTION
+ 0
+ E
+
+
+ EXPORT
+ 0
+ C
+ 000002
+ CHAR
+ 000001
+ CHAR
+ 신고 대상 여부
+
+
+
+
+
diff --git a/src/zvtax0020.ddls.asddls b/src/zvtax0020.ddls.asddls
new file mode 100644
index 0000000..f73a16b
--- /dev/null
+++ b/src/zvtax0020.ddls.asddls
@@ -0,0 +1,71 @@
+@AbapCatalog.sqlViewName: 'ZVTAX0020'
+@AbapCatalog.compiler.compareFilter: true
+@AbapCatalog.preserveKey: true
+@AccessControl.authorizationCheck: #NOT_REQUIRED
+@EndUserText.label: '사업자카드사용경비처리이력'
+@Metadata.ignorePropagatedAnnotations: true
+define view zcds_tax0020
+ as select
+ key p.gjahr,
+ key p.quarter,
+ key p.reg_no,
+ p.confirm_date,
+ q.card_company,
+ p.card_no,
+ p.shop_reg_no,
+ p.shop_nm,
+ @Semantics.currencyCode: true
+ p.waers,
+ @Semantics.amount.currencyCode: 'waers'
+ p.supply_value,
+ @Semantics.amount.currencyCode: 'waers'
+ p.tax_amount,
+ @Semantics.amount.currencyCode: 'waers'
+ p.non_taxable,
+ @Semantics.amount.currencyCode: 'waers'
+ p.amount_supply,
+ p.shop_type,
+ cast ( case p.shop_type
+ when '01' then '법인사업자'
+ when '02' then '일반과세자'
+ when '03' then '면세사업자'
+ when '04' then '간이과세자'
+ else ''
+ end as abap.char(10) ) as shop_ty_name,
+ p.bisiness_type,
+ p.bisiness_category,
+ cast( COALESCE(r.deduction_status, p.deduction_status) as zdedstatus) as deduction_status,
+ cast( case COALESCE(r.deduction_status, p.deduction_status)
+ when '01' then '불공제'
+ when '02' then '공제'
+ else ''
+ end as abap.char(5) ) as deduction_desc,
+ p.etc,
+ r.acct,
+ t.code_txt as acct_nm,
+ f.code_txt as gacct_nm,
+ r.origin,
+ s.code_txt as origin_nm,
+ r.descript,
+ r.export
+ from zttax0020 as p
+ left outer join zttax0010 as q on p.card_no = q.card_no
+ left outer join zttax0030 as r on p.gjahr = r.gjahr
+ and p.quarter = r.quarter
+ and p.reg_no = r.reg_no
+ left outer join zcat0020 as t
+ on t.appli = 'TX'
+ and t.grp = 'TAX01'
+ and t.spras = 'E'
+ and t.code = r.acct
+ left outer join zcat0020 as s
+ on s.appli = 'TX'
+ and s.grp = 'TAX02'
+ and s.spras = 'E'
+ and s.code = r.origin
+ left outer join zcat0020 as f
+ on f.appli = t.appli
+ and f.grp = t.grp
+ and f.spras = t.spras
+ and f.code = t.fld_02
+
diff --git a/src/zvtax0020.ddls.baseinfo b/src/zvtax0020.ddls.baseinfo
new file mode 100644
index 0000000..d343d15
--- /dev/null
+++ b/src/zvtax0020.ddls.baseinfo
@@ -0,0 +1,22 @@
+{
+"BASEINFO":
+{
+"FROM":
+[
+"ZCAT0020",
+"ZTTAX0010",
+"ZTTAX0020",
+"ZTTAX0030"
+],
+"ASSOCIATED":
+[],
+"BASE":
+[],
+"ANNO_REF":
+[],
+"SCALAR_FUNCTION":
+[],
+"VERSION":0,
+"ANNOREF_EVALUATION_ERROR":""
+}
+}
\ No newline at end of file
diff --git a/src/zvtax0020.ddls.xml b/src/zvtax0020.ddls.xml
new file mode 100644
index 0000000..92a8bd5
--- /dev/null
+++ b/src/zvtax0020.ddls.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+ ZVTAX0020
+ E
+ test
+ V
+
+
+
+