From e4cccca4ba51339d4e97b21af16bc3f55eb5ff33 Mon Sep 17 00:00:00 2001 From: SCYOON Date: Thu, 22 Oct 2026 04:18:27 +0000 Subject: [PATCH] First Commit --- .abapgit.xml | 10 + src/package.devc.xml | 10 + src/zcme_code.dtel.xml | 30 + src/zcme_md_desc.dtel.xml | 30 + src/zcmh_zmodule.shlp.xml | 41 + src/zcmr0001.prog.abap | 63 ++ src/zcmr0001.prog.xml | 571 ++++++++++ src/zcmr0001c01.prog.abap | 109 ++ src/zcmr0001c01.prog.xml | 20 + src/zcmr0001f01.prog.abap | 2157 +++++++++++++++++++++++++++++++++++++ src/zcmr0001f01.prog.xml | 20 + src/zcmr0001pai.prog.abap | 90 ++ src/zcmr0001pai.prog.xml | 20 + src/zcmr0001pbo.prog.abap | 44 + src/zcmr0001pbo.prog.xml | 20 + src/zcmr0001s01.prog.abap | 12 + src/zcmr0001s01.prog.xml | 20 + src/zcmr0001top.prog.abap | 243 +++++ src/zcmr0001top.prog.xml | 20 + src/zcmr0002.prog.abap | 61 ++ src/zcmr0002.prog.xml | 1349 +++++++++++++++++++++++ src/zcmr0002c01.prog.abap | 120 +++ src/zcmr0002c01.prog.xml | 25 + src/zcmr0002f01.prog.abap | 1163 ++++++++++++++++++++ src/zcmr0002f01.prog.xml | 25 + src/zcmr0002pai.prog.abap | 169 +++ src/zcmr0002pai.prog.xml | 25 + src/zcmr0002pbo.prog.abap | 99 ++ src/zcmr0002pbo.prog.xml | 25 + src/zcmr0002s01.prog.abap | 14 + src/zcmr0002s01.prog.xml | 25 + src/zcmr0002top.prog.abap | 97 ++ src/zcmr0002top.prog.xml | 25 + src/zcmt0001.tabl.xml | 536 +++++++++ src/zcmt0002.tabl.xml | 272 +++++ src/zcmt0003.tabl.xml | 56 + 36 files changed, 7616 insertions(+) create mode 100644 .abapgit.xml create mode 100644 src/package.devc.xml create mode 100644 src/zcme_code.dtel.xml create mode 100644 src/zcme_md_desc.dtel.xml create mode 100644 src/zcmh_zmodule.shlp.xml create mode 100644 src/zcmr0001.prog.abap create mode 100644 src/zcmr0001.prog.xml create mode 100644 src/zcmr0001c01.prog.abap create mode 100644 src/zcmr0001c01.prog.xml create mode 100644 src/zcmr0001f01.prog.abap create mode 100644 src/zcmr0001f01.prog.xml create mode 100644 src/zcmr0001pai.prog.abap create mode 100644 src/zcmr0001pai.prog.xml create mode 100644 src/zcmr0001pbo.prog.abap create mode 100644 src/zcmr0001pbo.prog.xml create mode 100644 src/zcmr0001s01.prog.abap create mode 100644 src/zcmr0001s01.prog.xml create mode 100644 src/zcmr0001top.prog.abap create mode 100644 src/zcmr0001top.prog.xml create mode 100644 src/zcmr0002.prog.abap create mode 100644 src/zcmr0002.prog.xml create mode 100644 src/zcmr0002c01.prog.abap create mode 100644 src/zcmr0002c01.prog.xml create mode 100644 src/zcmr0002f01.prog.abap create mode 100644 src/zcmr0002f01.prog.xml create mode 100644 src/zcmr0002pai.prog.abap create mode 100644 src/zcmr0002pai.prog.xml create mode 100644 src/zcmr0002pbo.prog.abap create mode 100644 src/zcmr0002pbo.prog.xml create mode 100644 src/zcmr0002s01.prog.abap create mode 100644 src/zcmr0002s01.prog.xml create mode 100644 src/zcmr0002top.prog.abap create mode 100644 src/zcmr0002top.prog.xml create mode 100644 src/zcmt0001.tabl.xml create mode 100644 src/zcmt0002.tabl.xml create mode 100644 src/zcmt0003.tabl.xml diff --git a/.abapgit.xml b/.abapgit.xml new file mode 100644 index 0000000..5c616cb --- /dev/null +++ b/.abapgit.xml @@ -0,0 +1,10 @@ + + + + + 3 + /src/ + PREFIX + + + diff --git a/src/package.devc.xml b/src/package.devc.xml new file mode 100644 index 0000000..5e4a6de --- /dev/null +++ b/src/package.devc.xml @@ -0,0 +1,10 @@ + + + + + + 공통코드관리 + + + + diff --git a/src/zcme_code.dtel.xml b/src/zcme_code.dtel.xml new file mode 100644 index 0000000..899db3a --- /dev/null +++ b/src/zcme_code.dtel.xml @@ -0,0 +1,30 @@ + + + + + + ZCME_CODE + CHAR30LOW + 21 + 04 + 16 + 21 + E + D + + + E + + + + E + Code Management Field + Code Management Field + Code + Code Magt. Field + Code Management Field + + + + + diff --git a/src/zcme_md_desc.dtel.xml b/src/zcme_md_desc.dtel.xml new file mode 100644 index 0000000..e0ce837 --- /dev/null +++ b/src/zcme_md_desc.dtel.xml @@ -0,0 +1,30 @@ + + + + + + ZCME_MD_DESC + CHAR50LOW + 18 + 08 + 18 + 18 + E + D + + + E + + + + E + Module Description + Module Description + MD Desc. + Module Description + Module Description + + + + + diff --git a/src/zcmh_zmodule.shlp.xml b/src/zcmh_zmodule.shlp.xml new file mode 100644 index 0000000..1efe85f --- /dev/null +++ b/src/zcmh_zmodule.shlp.xml @@ -0,0 +1,41 @@ + + + + + + ZCMH_ZMODULE + 3 + Module + X + ZCMT0003 + T + D + 0.8 + + + + ZCMH_ZMODULE + ZMODULE + 0001 + ZCME_MODULE + X + X + 01 + 01 + 06 + + + ZCMH_ZMODULE + ZMD_DESC + 0002 + ZCME_MD_DESC + X + 02 + 02 + X + 18 + + + + + diff --git a/src/zcmr0001.prog.abap b/src/zcmr0001.prog.abap new file mode 100644 index 0000000..617cd80 --- /dev/null +++ b/src/zcmr0001.prog.abap @@ -0,0 +1,63 @@ +*&---------------------------------------------------------------------* +*& 프로그램 ID : ZCMR0001 +*& 프로그램 명 : [CM] Common Code Management +*& 생성일 : 2025.05.20 +*& 생성자 : ZENABAP04 +*& 프로그램 설명 : Common Code Management +*&---------------------------------------------------------------------* +* Modification Log +*----------------------------------------------------------------------* +* Tag Date Author Description +*----------------------------------------------------------------------* +* N 2025.05.20 Initial Release +*----------------------------------------------------------------------* +*& 변경번호 : #1(CTS No) 변경자 : XXX 변경일자 : YYYY..MM.DD +*& 변경내용 : 간단한 설명,(상세내용은 변경부분에 주석처리) +*&---------------------------------------------------------------------* +REPORT zcmr0001 MESSAGE-ID zcmm01. + +INCLUDE zcmr0001c01. "ALV Class +INCLUDE zcmr0001top. "Top Include +INCLUDE zcmr0001s01. "Screen +INCLUDE zcmr0001pbo. "PBO-Modules +INCLUDE zcmr0001pai. "PAI-Modules +INCLUDE zcmr0001f01. "Business FORM Routine + +*----------------------------------------------------------------------* +* AT SELECTION-SCREEN +*----------------------------------------------------------------------* +*AT SELECTION-SCREEN OUTPUT. +* PERFORM modify_screen. + + +AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_class-low. + PERFORM select_class USING s_module-low gv_f4_class. + s_class-low = gv_f4_class. + +AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_class-high. + PERFORM select_class USING s_module-low gv_f4_class. + s_class-high = gv_f4_class. + +*----------------------------------------------------------------------* +* START-OF-SELECTION +*----------------------------------------------------------------------* +START-OF-SELECTION. + CHECK gv_error <> 'X'. + PERFORM get_module_text. + PERFORM get_class_data. + PERFORM get_detail_data. + PERFORM make_data. + +*----------------------------------------------------------------------* +* END-OF-SELECTION +*----------------------------------------------------------------------* +END-OF-SELECTION. + CLEAR gv_total. + DESCRIBE TABLE gt_class LINES gv_total. + IF gv_total >= 0. + CALL SCREEN 100. + + ELSE. + MESSAGE s003 DISPLAY LIKE 'E'. + EXIT. + ENDIF. diff --git a/src/zcmr0001.prog.xml b/src/zcmr0001.prog.xml new file mode 100644 index 0000000..50d6b05 --- /dev/null +++ b/src/zcmr0001.prog.xml @@ -0,0 +1,571 @@ + + + + + + ZCMR0001 + 1 + 3 + X + X + + + +
+ ZCMR0001 + 0100 + E + N + 0100 + 027 + 120 +
+ + + SCREEN + SCREEN + + + + + SCREEN + SCREEN + OKCODE + GV_OKCODE + ____________________ + 020 + 020 + 001 + CHAR + X + + + + + PROCESS BEFORE OUTPUT. + + + MODULE STATUS_0100. + + + MODULE CREATE_ALV_0100. + + + + PROCESS AFTER INPUT. + + + MODULE EXIT AT EXIT-COMMAND. + + + MODULE USER_COMMAND_0100. + + + +
+ +
+ ZCMR0001 + 0110 + E + M + 0110 + 027 + 121 +
+ + + SCREEN + SCREEN + + + + + SCREEN + SCREEN + TEXT + %#AUTOTEXT001 + Language + 001 + 002 + 008 + 008 + 001 + CHAR + N + X + + + SCREEN + SCREEN + TEMPLATE + GV_LANGU + __ + 001 + 011 + 002 + 002 + 001 + CHAR + ISOLA + X + X + H_T002 + + + SCREEN + SCREEN + OKCODE + GV_OKCODE + ____________________ + 020 + 020 + 001 + CHAR + X + + + + + PROCESS BEFORE OUTPUT. + + + MODULE status_0110. + + + * + + + PROCESS AFTER INPUT. + + + MODULE exit_0110 AT EXIT-COMMAND. + + + MODULE user_command_0110. + + +
+
+ + + 000001 + 000002 + + + + 0100 + D + 000001 + 000001 + 0001 + zcmr0001 + + + 0110 + P + 000002 + 0001 + 공통 코드 관리 + + + + + BACK + 001 + E + S + 뒤로 + + + CANC + 001 + E + S + ICON_CANCEL + @0W@ + 취소 + + + CANCEL + 001 + S + ICON_CANCEL + @0W@ + Exit + Exit + Exit + + + COPY + 001 + S + ICON_CREATE_COPY + @EZ@ + 추가 언어적용 + 추가 언어적용 + 추가 언어적용 + + + EXIT + 001 + E + S + ICON_CANCEL + @0W@ + 나가기 + Exit + Exit + + + OKAY + 001 + S + ICON_OKAY + @0V@ + Okay + Okay + Okay + + + + + 000001 + 0001 + 01 + 08 + + + 000002 + 0001 + 01 + 00 + + + 000002 + 0001 + 02 + 12 + + + + + 000001 + 03 + BACK + 001 + + + 000001 + 08 + COPY + 001 + + + 000001 + 12 + CANC + 001 + + + 000001 + 15 + EXIT + 001 + + + 000002 + 00 + OKAY + 001 + + + 000002 + 02 + CANCEL + 001 + + + 000002 + 12 + CANCEL + 001 + + + + + 0100 + BACK + + + 0100 + CANC + + + 0100 + COPY + + + 0100 + EXIT + + + 0110 + CANCEL + + + 0110 + OKAY + + + + + A + 000001 + D + 공통 코드 관리공통 코드 관리 + + + P + 000001 + D + 공통 코드 관리 + + + B + 000001 + 0001 + D + 공통 코드 관리 + + + P + 000002 + P + Language + + + B + 000002 + 0001 + P + Language + + + + + + I + B01 + Conditions + 20 + + + I + E01 + Not found data. + 18 + + + I + E02 + Select at least one line + 48 + + + I + E03 + Error to save + 23 + + + I + E04 + Exist Duplicated Key + 40 + + + I + E05 + Key Field is Blank + 28 + + + I + E06 + Invalid Language ! + 28 + + + I + E07 + Selected Language is same with Logon Language ! + 94 + + + I + F01 + Class + 15 + + + I + F02 + Class Name + 20 + + + I + F03 + Sort Key + 18 + + + I + F04 + Changed by + 20 + + + I + F05 + Changed on + 20 + + + I + F06 + Changed at + 20 + + + I + F07 + Using Program + 23 + + + I + Q01 + Delete Selected Data + 40 + + + I + Q02 + Save Data + 19 + + + I + Q03 + Additional adjust for Other Language ? + 76 + + + I + S01 + Save Complete + 23 + + + I + T01 + Code + 14 + + + I + T02 + Field + 15 + + + I + T04 + Add Row + 17 + + + I + T05 + Del. Row + 18 + + + I + T06 + Delete Complete + 25 + + + I + T07 + Yes + 13 + + + I + T08 + No + 12 + + + I + T09 + Success : + 10 + + + I + T10 + , Fail : + 10 + + + I + T11 + Confirm + 17 + + + I + T12 + Refresh + 17 + + + I + T13 + Save + 14 + + + I + T14 + Additional Language + 30 + + + R + Common Code Management + 22 + + + S + S_CLASS + . + 9 + D + + + S + S_MODULE + . + 9 + D + + +
+
+
diff --git a/src/zcmr0001c01.prog.abap b/src/zcmr0001c01.prog.abap new file mode 100644 index 0000000..c9fa0b6 --- /dev/null +++ b/src/zcmr0001c01.prog.abap @@ -0,0 +1,109 @@ +*&---------------------------------------------------------------------* +*& Include ZCMR0001C01 +*&---------------------------------------------------------------------* + +*&---------------------------------------------------------------------* +*& LCL_EVEN_RECEIVER DEFINITION. +*&---------------------------------------------------------------------* +CLASS LCL_EVENT_RECEIVER DEFINITION. + PUBLIC SECTION. + METHODS : + HANDLE_DATA_CHANGED FOR EVENT DATA_CHANGED OF CL_GUI_ALV_GRID + IMPORTING ER_DATA_CHANGED + E_ONF4_AFTER, + + HANDLE_USER_COMMAND FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID + IMPORTING E_UCOMM, + + HANDLE_TOOLBAR FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID + IMPORTING E_OBJECT + E_INTERACTIVE, + + HANDLE_MENU_BUTTON FOR EVENT MENU_BUTTON OF CL_GUI_ALV_GRID + IMPORTING E_OBJECT + E_UCOMM, + + HANDLE_ONF4 FOR EVENT ONF4 OF CL_GUI_ALV_GRID + IMPORTING E_FIELDNAME + E_FIELDVALUE + ES_ROW_NO + ER_EVENT_DATA + ET_BAD_CELLS + E_DISPLAY, + + HANDLE_DATA_CHANGED_FINISHED + FOR EVENT DATA_CHANGED_FINISHED OF CL_GUI_ALV_GRID + IMPORTING E_MODIFIED + ET_GOOD_CELLS, + + HANDLE_DOUBLE_CLICK FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID + IMPORTING E_ROW + E_COLUMN + ES_ROW_NO, + + HANDLE_HOTSPOT_CLICK FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID + IMPORTING E_ROW_ID + E_COLUMN_ID + ES_ROW_NO, + + HANDLE_TOP_OF_PAGE FOR EVENT TOP_OF_PAGE OF CL_GUI_ALV_GRID + IMPORTING E_DYNDOC_ID. + + PRIVATE SECTION. + +ENDCLASS. "LCL_EVENT_RECEIVER + +*&---------------------------------------------------------------------* +*& LCL_EVENT_RECEIVER IMPLEMENTATION +*&---------------------------------------------------------------------* +CLASS LCL_EVENT_RECEIVER IMPLEMENTATION. + METHOD HANDLE_DATA_CHANGED. + PERFORM ALV_DATA_CHANGED USING ER_DATA_CHANGED + E_ONF4_AFTER. + ENDMETHOD. "HANDLE_DATA_CHANGED + + METHOD HANDLE_USER_COMMAND. + PERFORM ALV_USER_COMMAND USING E_UCOMM. + ENDMETHOD. "HANDLE_USER_COMMAND + + METHOD HANDLE_TOOLBAR. + PERFORM ALV_EVENT_TOOLBAR USING E_OBJECT + E_INTERACTIVE. + ENDMETHOD. "HANDLE_TOOLBAR + + METHOD HANDLE_MENU_BUTTON. +* PERFORM alv_menu_button USING e_object +* e_ucomm. + ENDMETHOD. "HANDLE_MENU_BUTTON + + METHOD HANDLE_ONF4. + ER_EVENT_DATA->M_EVENT_HANDLED = 'x'. +* PERFORM alv_onf4 USING e_fieldname +* e_fieldvalue +* es_row_no +* er_event_data +* et_bad_cells +* e_display. + ENDMETHOD. "HANDLE_ONF4 + + METHOD HANDLE_DATA_CHANGED_FINISHED. + PERFORM ALV_DATA_CHANGED_FINISHED TABLES ET_GOOD_CELLS USING E_MODIFIED. + ENDMETHOD. "HANDLE_CHANGED_FINISHED + + METHOD HANDLE_DOUBLE_CLICK. + PERFORM ALV_DOUBLE_CLICK USING E_ROW + E_COLUMN + ES_ROW_NO. + ENDMETHOD. "HANDLE_DOUBLE_CLICK + + METHOD HANDLE_HOTSPOT_CLICK. + PERFORM ALV_HOTSPOT_CLICK USING E_ROW_ID + E_COLUMN_ID + ES_ROW_NO. + ENDMETHOD. "HANDLE_HOTSPOT_CLICK + + METHOD HANDLE_TOP_OF_PAGE. +* PERFORM top_of_page USING e_dyndoc_id. + ENDMETHOD. "HANDLE_TOP_OF_PAGE + +ENDCLASS. "LCL_EVENT_RECEIVER diff --git a/src/zcmr0001c01.prog.xml b/src/zcmr0001c01.prog.xml new file mode 100644 index 0000000..c01373e --- /dev/null +++ b/src/zcmr0001c01.prog.xml @@ -0,0 +1,20 @@ + + + + + + ZCMR0001C01 + I + 3 + X + + + + R + Include ZCMR0001C01 + 19 + + + + + diff --git a/src/zcmr0001f01.prog.abap b/src/zcmr0001f01.prog.abap new file mode 100644 index 0000000..4316cc0 --- /dev/null +++ b/src/zcmr0001f01.prog.abap @@ -0,0 +1,2157 @@ +*&---------------------------------------------------------------------* +*& Include ZCMR0001F01 +*&---------------------------------------------------------------------* +*&---------------------------------------------------------------------* +*& Form MODIFY_SCREEN +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> p1 text +*& <-- p2 text +*&---------------------------------------------------------------------* +FORM modify_screen. + + LOOP AT SCREEN. +* IF SCREEN-GROUP1 = 'MOD'. +* SCREEN-INPUT = 0. +* MODIFY SCREEN. +* ENDIF. + ENDLOOP. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form GET_MODULE_TEXT +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> P_MODULE +*&---------------------------------------------------------------------* +FORM get_module_text. + + CLEAR : gv_module_desc. + +* SELECT DOMVALUE_L, DDTEXT FROM DD07T +* INTO TABLE @DATA(LT_DD07T) +* WHERE DOMNAME = @C_MODULE +* AND DDLANGUAGE = @SY-LANGU +* AND DOMVALUE_L IN @S_MODULE. + + SELECT * + INTO TABLE @DATA(lt_0030) + FROM zcmt0003 + WHERE zmodule IN @s_module. + + IF sy-subrc = 0 AND sy-dbcnt = 1. + READ TABLE lt_0030 INTO DATA(ls_0030) INDEX 1. + CONCATENATE '-' ls_0030-zmodule '(' INTO gv_module_desc SEPARATED BY space. + CONCATENATE gv_module_desc ls_0030-zmd_desc ')' INTO gv_module_desc. + + +* READ TABLE LT_DD07T INTO DATA(LS_DD07T) INDEX 1. +* CONCATENATE '-' LS_DD07T-DOMVALUE_L '(' INTO GV_MODULE_DESC SEPARATED BY SPACE. +* CONCATENATE GV_MODULE_DESC LS_DD07T-DDTEXT ')' INTO GV_MODULE_DESC. + ENDIF. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form GET_CLASS_DATA +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> p1 text +*& <-- p2 text +*&---------------------------------------------------------------------* +FORM get_class_data. + + CLEAR : gt_0070, gt_0070[]. + SELECT zmodule zclass zclss_desc zprgname + zcode2_ox zcode3_ox zcode4_ox + zcode5_ox zcode6_ox zcode7_ox zcode8_ox + zcd1_desc zcd2_desc zcd3_desc zcd4_desc + zcd5_desc zcd6_desc zcd7_desc zcd8_desc + zf01_ox zf01_desc zf02_ox zf02_desc + zf03_ox zf03_desc zf04_ox zf04_desc + zf05_ox zf05_desc zf06_ox zf06_desc + zf07_ox zf07_desc zf08_ox zf08_desc + zf09_ox zf09_desc zf10_ox zf10_desc + zf11_ox zf11_desc zf12_ox zf12_desc + zf13_ox zf13_desc zf14_ox zf14_desc + zf15_ox zf15_desc zf16_ox zf16_desc + zf17_ox zf17_desc + FROM zcmt0001 + INTO TABLE gt_0070 + WHERE spras = sy-langu + AND zmodule IN s_module + AND zclass IN s_class. + + CHECK sy-subrc = 0. + SORT gt_0070 BY zmodule zclass. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form GET_DETAIL_DATA +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> p1 text +*& <-- p2 text +*&---------------------------------------------------------------------* +FORM get_detail_data. + + CLEAR : gt_0071, gt_0071[]. + + READ TABLE gt_0070 INDEX 1. + CHECK sy-subrc = 0. + + SELECT zmodule zclass + zcm_code1 zcm_code2 zcm_code3 zcm_code4 + zcm_code5 zcm_code6 zcm_code7 zcm_code8 + zcmf01_ch zcmf02_ch zcmf03_ch zcmf04_ch + zcmf05_ch zcmf06_ch zcmf07_ch zcmf08_ch + zcmf09_ch zcmf10_ch zcmf11_qu zcmf12_ut + zcmf13_cr zcmf14_ck zcmf15_nm zcmf16_nm zcmf17_dc + zsort_key + ernam erdat erzet + aenam aedat aezet + FROM zcmt0002 + INTO CORRESPONDING FIELDS OF TABLE gt_0071 + WHERE spras = sy-langu + AND zmodule = gt_0070-zmodule + AND zclass = gt_0070-zclass. +* AND zclass IN s_class. + + CHECK sy-subrc = 0. + SORT gt_0071 BY zmodule zclass. + +* PERFORM check_cm_authority. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form MAKE_DATA +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> p1 text +*& <-- p2 text +*&---------------------------------------------------------------------* +FORM make_data. + + CLEAR : gv_class, gt_class, gt_class[]. + LOOP AT gt_0070. + MOVE-CORRESPONDING gt_0070 TO gt_class. + APPEND gt_class. + + CLEAR : gt_class, gt_0070. + ENDLOOP. + + CHECK NOT gt_class[] IS INITIAL. + + SORT gt_class BY zmodule zclass. + READ TABLE gt_class INDEX 1. + gv_module = gt_class-zmodule. + gv_class = gt_class-zclass. + READ TABLE gt_0070 WITH KEY zmodule = gt_class-zmodule + zclass = gt_class-zclass + BINARY SEARCH. + + PERFORM make_detail_data USING gt_0070. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form MAKE_DETAIL_DATA +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> GT_CLASS +*&---------------------------------------------------------------------* +FORM make_detail_data USING ps_0070 STRUCTURE gt_0070. + + CLEAR : gs_chk, gv_mode, + gt_detail, gt_detail[]. + + CLEAR gt_0071. + READ TABLE gt_0071 INDEX 1. + IF sy-subrc = 0. +* 첫번째 Class에 등록된 정보를 보여줌. + gv_mode = 'RO'. + + CLEAR gt_0071. + LOOP AT gt_0071 WHERE zmodule = ps_0070-zmodule AND zclass = ps_0070-zclass. + MOVE-CORRESPONDING gt_0071 TO gt_detail. + + PERFORM get_code_data USING ps_0070 + gt_0071. + + PERFORM get_field_data USING ps_0070 + gt_0071. + + REFRESH : gt_detail-celltab, gt_celltab. + + PERFORM append_celltab USING gv_mode. + + INSERT LINES OF gt_celltab INTO TABLE gt_detail-celltab. + + APPEND gt_detail. + CLEAR : gt_0071, gt_detail. + ENDLOOP. + ELSE. +* 신규의 경우에는 데이터는 없으나 헤더 구성을 위해 GS_CHK를 구성해야 함 + PERFORM get_code_data USING ps_0070 + gt_0071. + + PERFORM get_field_data USING ps_0070 + gt_0071. + ENDIF. + + SORT gt_detail BY zsort_key zcm_code1 zcm_code2 zcm_code3 + zcm_code4 zcm_code5 zcm_code6 zcm_code7 zcm_code8. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form GET_CODE_DATA +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> PS_0070 +*&---------------------------------------------------------------------* +FORM get_code_data USING ps_0070 STRUCTURE gt_0070 + ps_0071 STRUCTURE gt_0071. + + DATA : lv_no TYPE n, + lv_ox(17), + lv_chk_c(14), + lv_chk_ct(14), + lv_code(17). + + FIELD-SYMBOLS : , , , . + +* 코드1~8의 사용유무에 따라 itab GT_DETAIL에 추가한다. +* 코드1은 무조건 포함하나, +* 코드2~8는 사용유무가 'X'인 건만 추가한다. +* 코드 8은 자릿수 18자리이다. + CLEAR lv_no. + DO 8 TIMES. + CLEAR : lv_ox, lv_chk_c, lv_chk_ct, lv_code. + lv_no = lv_no + 1. + + CONCATENATE 'PS_0070-ZCODE' lv_no '_OX' INTO lv_ox. + CONCATENATE 'PS_0070-ZCD' lv_no '_DESC' INTO lv_code. + CONCATENATE 'GS_CHK-CD' lv_no INTO lv_chk_c. + CONCATENATE 'GS_CHK-F_CD' lv_no INTO lv_chk_ct. + + ASSIGN (lv_ox) TO . + ASSIGN (lv_code) TO . + ASSIGN (lv_chk_c) TO . + ASSIGN (lv_chk_ct) TO . + + IF lv_no = 1 OR = 'X'. + = 'X'. + + IF IS INITIAL. + CLEAR lv_code. + CONCATENATE TEXT-t01 lv_no INTO lv_code. + = lv_code. + ENDIF. + + = . + ENDIF. + ENDDO. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form GET_FIELD_DATA +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> PS_0070 +*&---------------------------------------------------------------------* +FORM get_field_data USING ps_0070 STRUCTURE gt_0070 + ps_0071 STRUCTURE gt_0071. + + DATA : lv_no TYPE n LENGTH 2, + lv_ox(15), + lv_chk_f(12), + lv_chk_t(14), + lv_field(17). + + FIELD-SYMBOLS : , , , . + +* 필드 1~17 사용유무에 따라 itab GT_DETAIL에 추가한다. +* 필드명은 zcmt0001-ZF1_DESC를 FIELD CATALOG에 표시 +* 없으면 ?? + CLEAR lv_no. + DO 17 TIMES. + CLEAR : lv_ox, lv_chk_f, lv_chk_t, lv_field. + lv_no = lv_no + 1. + + CONCATENATE 'PS_0070-ZF' lv_no '_OX' INTO lv_ox. + CONCATENATE 'PS_0070-ZF' lv_no '_DESC' INTO lv_field. + CONCATENATE 'GS_CHK-FLD' lv_no INTO lv_chk_f. + CONCATENATE 'GS_CHK-F_FLD' lv_no INTO lv_chk_t. + + ASSIGN (lv_ox) TO . + ASSIGN (lv_field) TO . + ASSIGN (lv_chk_f) TO . + ASSIGN (lv_chk_t) TO . + + IF = 'X'. + = 'X'. + + IF IS INITIAL. + CLEAR lv_field. + CONCATENATE TEXT-t02 lv_no INTO lv_field. + = lv_field. + ENDIF. + + = . + ENDIF. + ENDDO. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form APPEND_CELLTAB +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> GT_CELLTAB +*&---------------------------------------------------------------------* +FORM append_celltab USING pv_mode. + + DATA : lv_style TYPE raw4, + ls_style TYPE lvc_s_styl. + + CLEAR : lv_style, ls_style. + CASE pv_mode. + WHEN 'RO'. + lv_style = cl_gui_alv_grid=>mc_style_disabled. + + WHEN 'RW'. + lv_style = cl_gui_alv_grid=>mc_style_enabled. + ENDCASE. + +* ls_style-fieldname = 'ZCLASS'. +* ls_style-style = cl_gui_alv_grid=>mc_style_disabled. APPEND ls_style TO gt_celltab. + + CLEAR ls_style. + ls_style-fieldname = 'ZCM_CODE1'. + ls_style-style = lv_style. APPEND ls_style TO gt_celltab. + + CLEAR ls_style. + ls_style-fieldname = 'ZCM_CODE2'. + ls_style-style = lv_style. APPEND ls_style TO gt_celltab. + + CLEAR ls_style. + ls_style-fieldname = 'ZCM_CODE3'. + ls_style-style = lv_style. APPEND ls_style TO gt_celltab. + + CLEAR ls_style. + ls_style-fieldname = 'ZCM_CODE4'. + ls_style-style = lv_style. APPEND ls_style TO gt_celltab. + + CLEAR ls_style. + ls_style-fieldname = 'ZCM_CODE5'. + ls_style-style = lv_style. APPEND ls_style TO gt_celltab. + + CLEAR ls_style. + ls_style-fieldname = 'ZCM_CODE6'. + ls_style-style = lv_style. APPEND ls_style TO gt_celltab. + + CLEAR ls_style. + ls_style-fieldname = 'ZCM_CODE7'. + ls_style-style = lv_style. APPEND ls_style TO gt_celltab. + + CLEAR ls_style. + ls_style-fieldname = 'ZCM_CODE8'. + ls_style-style = lv_style. APPEND ls_style TO gt_celltab. + +* CLEAR ls_style. +* ls_style-fieldname = 'ZCMF1_CH'. +* ls_style-style = cl_gui_alv_grid=>mc_style_enabled. APPEND ls_style TO gt_celltab. +* +* CLEAR ls_style. +* ls_style-fieldname = 'ZCMF2_CH'. +* ls_style-style = cl_gui_alv_grid=>mc_style_enabled. APPEND ls_style TO gt_celltab. +* +* CLEAR ls_style. +* ls_style-fieldname = 'ZCMF3_CH'. +* ls_style-style = cl_gui_alv_grid=>mc_style_enabled. APPEND ls_style TO gt_celltab. +* +* CLEAR ls_style. +* ls_style-fieldname = 'ZCMF4_CH'. +* ls_style-style = cl_gui_alv_grid=>mc_style_enabled. APPEND ls_style TO gt_celltab. +* +* CLEAR ls_style. +* ls_style-fieldname = 'ZCMF5_CH'. +* ls_style-style = cl_gui_alv_grid=>mc_style_enabled. APPEND ls_style TO gt_celltab. +* +* CLEAR ls_style. +* ls_style-fieldname = 'ZCMF6_CH'. +* ls_style-style = cl_gui_alv_grid=>mc_style_enabled. APPEND ls_style TO gt_celltab. +* +* CLEAR ls_style. +* ls_style-fieldname = 'ZCMF7_CH'. +* ls_style-style = cl_gui_alv_grid=>mc_style_enabled. APPEND ls_style TO gt_celltab. +* +* CLEAR ls_style. +* ls_style-fieldname = 'ZCMF8_CH'. +* ls_style-style = cl_gui_alv_grid=>mc_style_enabled. APPEND ls_style TO gt_celltab. +* +* CLEAR ls_style. +* ls_style-fieldname = 'ZSORT_KEY'. +* ls_style-style = cl_gui_alv_grid=>mc_style_enabled. APPEND ls_style TO gt_celltab. +* +* CLEAR ls_style. +* ls_style-fieldname = 'ZCRNAME'. +* ls_style-style = cl_gui_alv_grid=>mc_style_disabled. APPEND ls_style TO gt_celltab. +* +* CLEAR ls_style. +* ls_style-fieldname = 'ZCRSDATE'. +* ls_style-style = cl_gui_alv_grid=>mc_style_disabled. APPEND ls_style TO gt_celltab. +* +* CLEAR ls_style. +* ls_style-fieldname = 'ZCRSTIME'. +* ls_style-style = cl_gui_alv_grid=>mc_style_disabled. APPEND ls_style TO gt_celltab. +* +* CLEAR ls_style. +* ls_style-fieldname = 'ZCRLDATE'. +* ls_style-style = cl_gui_alv_grid=>mc_style_disabled. APPEND ls_style TO gt_celltab. +* +* CLEAR ls_style. +* ls_style-fieldname = 'ZCRLTIME'. +* ls_style-style = cl_gui_alv_grid=>mc_style_disabled. APPEND ls_style TO gt_celltab. +* +* CLEAR ls_style. +* ls_style-fieldname = 'ZUDNAME'. +* ls_style-style = cl_gui_alv_grid=>mc_style_disabled. APPEND ls_style TO gt_celltab. +* +* CLEAR ls_style. +* ls_style-fieldname = 'ZUDSDATE'. +* ls_style-style = cl_gui_alv_grid=>mc_style_disabled. APPEND ls_style TO gt_celltab. +* +* CLEAR ls_style. +* ls_style-fieldname = 'ZUDSTIME'. +* ls_style-style = cl_gui_alv_grid=>mc_style_disabled. APPEND ls_style TO gt_celltab. +* +* CLEAR ls_style. +* ls_style-fieldname = 'ZUDLDATE'. +* ls_style-style = cl_gui_alv_grid=>mc_style_disabled. APPEND ls_style TO gt_celltab. +* +* CLEAR ls_style. +* ls_style-fieldname = 'ZUDLTIME'. +* ls_style-style = cl_gui_alv_grid=>mc_style_disabled. APPEND ls_style TO gt_celltab. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form CHECK_PK_DUPLICATE +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& <-- GV_ERROR +*&---------------------------------------------------------------------* +FORM check_pk_duplicate. + + CLEAR : gt_0071_pk, gt_0071_pk[]. + SELECT zmodule zclass + zcm_code1 zcm_code2 zcm_code3 zcm_code4 + zcm_code5 zcm_code6 zcm_code7 zcm_code8 + FROM zcmt0002 + INTO TABLE gt_0071_pk + WHERE spras = sy-langu + AND zmodule = gv_module. + + CHECK sy-subrc = 0. + SORT gt_0071_pk BY zmodule zclass + zcm_code1 zcm_code2 zcm_code3 zcm_code4 + zcm_code5 zcm_code6 zcm_code7 zcm_code8. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form MAKE_SAVE_DATA +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> p1 text +*& <-- p2 text +*&---------------------------------------------------------------------* +FORM make_save_data. + + DATA : lv_valid, + lt_data LIKE TABLE OF gt_detail WITH HEADER LINE, + ls_data LIKE LINE OF lt_data, + lt_save LIKE TABLE OF zcmt0002 WITH HEADER LINE. + + CLEAR : gv_error, lt_data, lt_data[], lt_save, lt_save[]. + +* 1. 변경된 데이터 여부 확인 + CLEAR lv_valid. + CALL METHOD g_grid2->check_changed_data + IMPORTING + e_valid = lv_valid. + +* 2. PK 중복 체크 + LOOP AT gt_detail. + " 문서에서 복사해서 저장하는 경우 클래스값이 공란으로 들어가는 현상 + IF gt_detail-zmodule IS INITIAL. + gt_detail-zmodule = gv_module. + ENDIF. + + IF gt_detail-zclass IS INITIAL. + gt_detail-zclass = gv_class. + ENDIF. + +* PK값이 모두 공란인 경우 >> 오류 처리 + IF gt_detail-zcm_code1 IS INITIAL AND + gt_detail-zcm_code2 IS INITIAL AND + gt_detail-zcm_code3 IS INITIAL AND + gt_detail-zcm_code4 IS INITIAL AND + gt_detail-zcm_code5 IS INITIAL AND + gt_detail-zcm_code6 IS INITIAL AND + gt_detail-zcm_code7 IS INITIAL AND + gt_detail-zcm_code8 IS INITIAL. + + gv_error = 'X'. + MESSAGE s000 WITH TEXT-e05 DISPLAY LIKE 'E'. + EXIT. + ELSE. + MOVE-CORRESPONDING gt_detail TO lt_data. + APPEND lt_data. + MODIFY gt_detail. + ENDIF. + + CLEAR : lt_data, gt_detail. + ENDLOOP. + + CHECK gv_error <> 'X'. + IF NOT lt_data[] IS INITIAL. + SORT lt_data BY zmodule zclass zcm_code1 zcm_code2 zcm_code3 zcm_code4 zcm_code5 zcm_code6 zcm_code7 zcm_code8. + ENDIF. + + CLEAR ls_data. + LOOP AT lt_data. + IF NOT ls_data IS INITIAL AND + ( ls_data-zmodule = lt_data-zmodule AND + ls_data-zclass = lt_data-zclass AND + ls_data-zcm_code1 = lt_data-zcm_code1 AND + ls_data-zcm_code2 = lt_data-zcm_code2 AND + ls_data-zcm_code3 = lt_data-zcm_code3 AND + ls_data-zcm_code4 = lt_data-zcm_code4 AND + ls_data-zcm_code5 = lt_data-zcm_code5 AND + ls_data-zcm_code6 = lt_data-zcm_code6 AND + ls_data-zcm_code7 = lt_data-zcm_code7 AND + ls_data-zcm_code8 = lt_data-zcm_code8 ). + + gv_error = 'X'. + MESSAGE e000 WITH TEXT-e04 DISPLAY LIKE 'E'. + EXIT. + ENDIF. + + CLEAR ls_data. + ls_data = lt_data. + CLEAR lt_data. + ENDLOOP. + + CHECK gv_error <> 'X'. + +* 3. 저장할 데이터 생성 + LOOP AT gt_detail. + MOVE-CORRESPONDING gt_detail TO lt_save. + lt_save-spras = sy-langu. +* lt_save-zmodule = p_module. + +* CALL FUNCTION 'ZCM_CBO_DATE_SINGLE' +* CHANGING +* c_data = lt_save. + + IF gt_detail-ernam IS INITIAL. + gt_detail-ernam = lt_save-ernam = sy-uname. + gt_detail-erdat = lt_save-erdat = sy-datum. + gt_detail-erzet = lt_save-erzet = sy-uzeit. + ENDIF. + + gt_detail-aenam = lt_save-aenam = sy-uname. + gt_detail-aedat = lt_save-aedat = sy-datum. + gt_detail-aezet = lt_save-aezet = sy-uzeit. + + gv_mode = 'RO'. + REFRESH : gt_detail-celltab, gt_celltab. + PERFORM append_celltab USING gv_mode. + INSERT LINES OF gt_celltab INTO TABLE gt_detail-celltab. + + MODIFY gt_detail. + APPEND lt_save. + + CLEAR : lt_save, gt_detail. + ENDLOOP. + + CHECK gv_error <> 'X'. + CHECK NOT lt_save[] IS INITIAL. + SORT lt_save BY zmodule zclass zcm_code1 zcm_code2 zcm_code3 zcm_code4 zcm_code5 zcm_code6 zcm_code7 zcm_code8 . + + MODIFY zcmt0002 FROM TABLE lt_save. + IF sy-subrc = 0. + COMMIT WORK. + MESSAGE s000 WITH TEXT-s01. + ELSE. + ROLLBACK WORK. + MESSAGE s000 WITH TEXT-e03 DISPLAY LIKE 'E'. + EXIT. + ENDIF. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form CHECK_CM_AUTHORITY +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> p1 text +*& <-- p2 text +*&---------------------------------------------------------------------* +FORM check_cm_authority. + + DATA: lv_check, lv_field1, lv_field2. + + RANGES: lr_zcode3 FOR zcmt0002-zcm_code3. + + CHECK gt_0070-zmodule = 'CM' AND gt_0070-zclass = 'CMART' AND gt_0071[] IS NOT INITIAL. + LOOP AT gt_0071. + REFRESH lr_zcode3. CLEAR lr_zcode3. + CONCATENATE 'ICP' gt_0071-zcm_code3 INTO lr_zcode3. APPEND lr_zcode3. + + IF sy-uname IN lr_zcode3. + lv_check = 'X'. + IF gt_0071-zcmf01_ch = 'Y'. + lv_field1 = 'X'. + ELSEIF gt_0071-zcmf02_ch = 'Y'. + lv_field2 = 'X'. + ENDIF. + ENDIF. + ENDLOOP. + + IF lv_check = space. + CLEAR gv_zauthority. " ID 미등록시 권한 없음 + ELSEIF lv_field1 = 'X'. " 전체권한 + ELSEIF lv_field2 = 'X'. " 조회권한 + gv_zauthority = 'D'. + ELSE. + CLEAR gv_zauthority. " 필드체크안한경우 권한없음 + ENDIF. + + IF gv_zauthority = space. + DELETE gt_0071 WHERE zclass = 'CMART'. + MESSAGE s000 WITH TEXT-m01. + ENDIF. + +ENDFORM. + + +*&---------------------------------------------------------------------* +*& Form SELECT_CLASS +*&---------------------------------------------------------------------* +FORM select_class USING p_module + p_class. + + DATA: BEGIN OF ls_class. + DATA: zmodule TYPE zcmt0001-zmodule, + zclss_desc TYPE zcmt0001-zclss_desc, + zclass TYPE zcmt0001-zclass. + DATA : END OF ls_class. + DATA: lt_class LIKE TABLE OF ls_class. + + DATA : BEGIN OF lt_popup OCCURS 0, "팝업의 데이타를 가지고 있을 테이블 + datas(50) TYPE c, + END OF lt_popup. + + DATA : lt_map LIKE STANDARD TABLE OF dselc INITIAL SIZE 0 WITH HEADER LINE. + + SELECT zmodule, + zclass, + zclss_desc + INTO CORRESPONDING FIELDS OF TABLE @lt_class + FROM zcmt0001 + WHERE zmodule = @p_module + AND spras = @sy-langu. + + SORT lt_class BY zclass. + + LOOP AT lt_class INTO ls_class. + lt_popup-datas = ls_class-zmodule. + APPEND lt_popup. + lt_popup-datas = ls_class-zclass. + APPEND lt_popup. + lt_popup-datas = ls_class-zclss_desc. + APPEND lt_popup. + ENDLOOP. + +*&---------------------------------------------------------------------* +*& Search Help 필드 카탈로그 +*&---------------------------------------------------------------------* + DATA : lt_field LIKE STANDARD TABLE OF dfies INITIAL SIZE 0 WITH HEADER LINE. + + CALL FUNCTION 'DDIF_FIELDINFO_GET' + EXPORTING + tabname = 'zcmt0001' + fieldname = 'ZMODULE' + lfieldname = 'ZMODULE' + IMPORTING + dfies_wa = lt_field. + + lt_field-scrtext_s = '모듈'. + lt_field-scrtext_m = '모듈'. + lt_field-scrtext_l = '모듈'. + lt_field-reptext = '모듈'. + APPEND lt_field. + CLEAR lt_field. + + CALL FUNCTION 'DDIF_FIELDINFO_GET' + EXPORTING + tabname = 'zcmt0001' + fieldname = 'ZCLASS' + lfieldname = 'ZCLASS' + IMPORTING + dfies_wa = lt_field. + + lt_field-scrtext_s = '클래스'. + lt_field-scrtext_m = '클래스'. + lt_field-scrtext_l = '클래스'. + lt_field-reptext = '클래스'. + APPEND lt_field. + CLEAR lt_field. + + CALL FUNCTION 'DDIF_FIELDINFO_GET' + EXPORTING + tabname = 'zcmt0001' + fieldname = 'ZCLSS_DESC' + lfieldname = 'ZCLSS_DESC' + IMPORTING + dfies_wa = lt_field. + + lt_field-scrtext_s = '클래스명'. + lt_field-scrtext_m = '클래스명'. + lt_field-scrtext_l = '클래스명'. + lt_field-reptext = '클래스명'. + APPEND lt_field. + CLEAR lt_field. + +*&---------------------------------------------------------------------* +*& Search Help DYFLDNAME +*&---------------------------------------------------------------------* + lt_map-fldname = 'ZCLASS'. + lt_map-dyfldname = 'P_CLASS'. + APPEND lt_map. + +*&---------------------------------------------------------------------* +*& Search Help 본 펑션 +*&---------------------------------------------------------------------* + CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST' + EXPORTING + retfield = 'ZCLASS' + dynpprog = sy-cprog + dynpnr = sy-dynnr + window_title = 'CLASS' + value_org = 'C' + TABLES + value_tab = lt_popup + field_tab = lt_field + return_tab = gt_rtntab + dynpfld_mapping = lt_map + EXCEPTIONS + parameter_error = 1 + no_values_found = 2 + OTHERS = 3. + + READ TABLE gt_rtntab INDEX 1 . + p_class = gt_rtntab-fieldval. + IF sy-subrc <> 0. +* Implement suitable error handling here + ENDIF. + + CLEAR :gt_rtntab, gt_rtntab[]. + +ENDFORM. +*&---------------------------------------------------------------------* +*& Form CREATE_GRID +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> p1 text +*& <-- p2 text +*&---------------------------------------------------------------------* +FORM create_grid. + +* Docking Container + CREATE OBJECT g_docking_container + EXPORTING + repid = sy-repid + dynnr = sy-dynnr + side = g_docking_container->dock_at_top + extension = 3000. + + CREATE OBJECT g_splitter + EXPORTING + parent = g_docking_container + rows = 1 + columns = 2. + + CALL METHOD g_splitter->set_column_width + EXPORTING + id = 1 + width = 35. + + CALL METHOD g_splitter->get_container + EXPORTING + row = 1 + column = 1 + RECEIVING + container = g_grid_left. + + CALL METHOD g_splitter->get_container + EXPORTING + row = 1 + column = 2 + RECEIVING + container = g_grid_right. + + CREATE OBJECT g_grid1 + EXPORTING + i_parent = g_grid_left. + + CREATE OBJECT g_grid2 + EXPORTING + i_parent = g_grid_right. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form SET_FCAT_CLASS +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> p1 text +*& <-- p2 text +*&---------------------------------------------------------------------* +FORM set_fcat_class. + + CLEAR col_pos. + REFRESH gt_fcat. + + PERFORM field_setting USING : +* option Field Text Ref_tab REF_FIELD Just EDIT + '1' 'ZCLASS' TEXT-f01 'zcmt0001' 'ZCLASS' 'C' ' ', + '1' 'ZCLSS_DESC' TEXT-f02 'zcmt0001' 'ZCLSS_DESC' 'L' ' ', + '1' 'ZPRGNAME' TEXT-f07 'zcmt0001' 'ZPRGNAME' 'L' ' '. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form SET_FCAT_DETAIL +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> p1 text +*& <-- p2 text +*&---------------------------------------------------------------------* +FORM set_fcat_detail. + + CLEAR col_pos. + REFRESH gt_fcat2. + + PERFORM field_setting USING +* option Field Text Ref_tab REF_FIELD Just EDIT + '2' 'ZCM_CODE1' gs_chk-f_cd1 'zcmt0002' 'ZCM_CODE1' 'L' 'X'. + + IF gs_chk-cd2 = 'X'. + PERFORM field_setting USING + '2' 'ZCM_CODE2' gs_chk-f_cd2 'zcmt0002' 'ZCM_CODE2' 'L' 'X'. + ENDIF. + + IF gs_chk-cd3 = 'X'. + PERFORM field_setting USING + '2' 'ZCM_CODE3' gs_chk-f_cd3 'zcmt0002' 'ZCM_CODE3' 'L' 'X'. + ENDIF. + + IF gs_chk-cd4 = 'X'. + PERFORM field_setting USING + '2' 'ZCM_CODE4' gs_chk-f_cd4 'zcmt0002' 'ZCM_CODE4' 'L' 'X'. + ENDIF. + + IF gs_chk-cd5 = 'X'. + PERFORM field_setting USING + '2' 'ZCM_CODE5' gs_chk-f_cd5 'zcmt0002' 'ZCM_CODE5' 'L' 'X'. + ENDIF. + + IF gs_chk-cd6 = 'X'. + PERFORM field_setting USING + '2' 'ZCM_CODE6' gs_chk-f_cd6 'zcmt0002' 'ZCM_CODE6' 'L' 'X'. + ENDIF. + + IF gs_chk-cd7 = 'X'. + PERFORM field_setting USING + '2' 'ZCM_CODE7' gs_chk-f_cd7 'zcmt0002' 'ZCM_CODE7' 'L' 'X'. + ENDIF. + + IF gs_chk-cd8 = 'X'. + PERFORM field_setting USING + '2' 'ZCM_CODE8' gs_chk-f_cd8 'zcmt0002' 'ZCM_CODE8' 'L' 'X'. + ENDIF. + + IF gs_chk-fld01 = 'X'. + PERFORM field_setting USING + '2' 'ZCMF01_CH' gs_chk-f_fld01 'zcmt0002' 'ZCMF01_CH' 'L' 'X'. + ENDIF. + + IF gs_chk-fld02 = 'X'. + PERFORM field_setting USING + '2' 'ZCMF02_CH' gs_chk-f_fld02 'zcmt0002' 'ZCMF02_CH' 'L' 'X'. + ENDIF. + + IF gs_chk-fld03 = 'X'. + PERFORM field_setting USING + '2' 'ZCMF03_CH' gs_chk-f_fld03 'zcmt0002' 'ZCMF03_CH' 'L' 'X'. + ENDIF. + + IF gs_chk-fld04 = 'X'. + PERFORM field_setting USING + '2' 'ZCMF04_CH' gs_chk-f_fld04 'zcmt0002' 'ZCMF04_CH' 'L' 'X'. + ENDIF. + + IF gs_chk-fld05 = 'X'. + PERFORM field_setting USING + '2' 'ZCMF05_CH' gs_chk-f_fld05 'zcmt0002' 'ZCMF05_CH' 'L' 'X'. + ENDIF. + + IF gs_chk-fld06 = 'X'. + PERFORM field_setting USING + '2' 'ZCMF06_CH' gs_chk-f_fld06 'zcmt0002' 'ZCMF06_CH' 'L' 'X'. + ENDIF. + + IF gs_chk-fld07 = 'X'. + PERFORM field_setting USING + '2' 'ZCMF07_CH' gs_chk-f_fld07 'zcmt0002' 'ZCMF07_CH' 'L' 'X'. + ENDIF. + + IF gs_chk-fld08 = 'X'. + PERFORM field_setting USING + '2' 'ZCMF08_CH' gs_chk-f_fld08 'zcmt0002' 'ZCMF08_CH' 'L' 'X'. + ENDIF. + + IF gs_chk-fld09 = 'X'. + PERFORM field_setting USING + '2' 'ZCMF09_CH' gs_chk-f_fld09 'zcmt0002' 'ZCMF09_CH' 'L' 'X'. + ENDIF. + + IF gs_chk-fld10 = 'X'. + PERFORM field_setting USING + '2' 'ZCMF10_CH' gs_chk-f_fld10 'zcmt0002' 'ZCMF10_CH' 'L' 'X'. + ENDIF. + + IF gs_chk-fld11 = 'X'. + PERFORM field_setting USING + '2' 'ZCMF11_QU' gs_chk-f_fld11 'zcmt0002' 'ZCMF11_QU' 'L' 'X'. + ENDIF. + + IF gs_chk-fld12 = 'X'. + PERFORM field_setting USING + '2' 'ZCMF12_UT' gs_chk-f_fld12 'zcmt0002' 'ZCMF12_UT' 'L' 'X'. + ENDIF. + + IF gs_chk-fld13 = 'X'. + PERFORM field_setting USING + '2' 'ZCMF13_CR' gs_chk-f_fld13 'zcmt0002' 'ZCMF13_CR' 'L' 'X'. + ENDIF. + + IF gs_chk-fld14 = 'X'. + PERFORM field_setting USING + '2' 'ZCMF14_CK' gs_chk-f_fld14 'zcmt0002' 'ZCMF14_CK' 'L' 'X'. + ENDIF. + + IF gs_chk-fld15 = 'X'. + PERFORM field_setting USING + '2' 'ZCMF15_NM' gs_chk-f_fld15 'zcmt0002' 'ZCMF15_NM' 'L' 'X'. + ENDIF. + + IF gs_chk-fld16 = 'X'. + PERFORM field_setting USING + '2' 'ZCMF16_NM' gs_chk-f_fld16 'zcmt0002' 'ZCMF16_NM' 'L' 'X'. + ENDIF. + + IF gs_chk-fld17 = 'X'. + PERFORM field_setting USING + '2' 'ZCMF17_DC' gs_chk-f_fld17 'zcmt0002' 'ZCMF17_DC' 'L' 'X'. + ENDIF. + + PERFORM field_setting USING : + '2' 'ZSORT_KEY' TEXT-f03 'zcmt0002' 'ZSORT_KEY' 'L' 'X', + '2' 'AENAM' TEXT-f04 'zcmt0002' 'AENAM' 'C' ' ', + '2' 'AEDAT' TEXT-f05 'zcmt0002' 'AEDAT' 'C' ' ', + '2' 'AEZET' TEXT-f06 'zcmt0002' 'AEZET' 'C' ' '. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form FIELD_SETTING +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> P_ +*& --> TEXT_F01 +*& --> P_ +*&---------------------------------------------------------------------* +FORM field_setting USING option field text ref_tab ref_fld just edit. + + DATA ls_fcat TYPE lvc_s_fcat. + + CLEAR ls_fcat. + col_pos = col_pos + 1. + + ls_fcat-col_pos = col_pos. + ls_fcat-fieldname = field. + ls_fcat-scrtext_l = + ls_fcat-scrtext_m = + ls_fcat-scrtext_s = + ls_fcat-reptext = text. + ls_fcat-just = just. + ls_fcat-edit = edit. + ls_fcat-lowercase = 'X'. + + CASE field. + WHEN 'ZCLASS'. + ls_fcat-outputlen = 6. + ls_fcat-hotspot = 'X'. + + WHEN 'ZCLSS_DESC' . + ls_fcat-outputlen = 50. + + WHEN 'ZCMF10_CH'. + ls_fcat-outputlen = 50. + ls_fcat-intlen = 400. + ls_fcat-ref_table = 'zcmt0002'. + ls_fcat-ref_field = 'ZCMF10_CH'. + + WHEN 'ZCMF11_QU'. + ls_fcat-outputlen = 18. + ls_fcat-ref_table = ref_tab. + ls_fcat-ref_field = ref_fld. + ls_fcat-qfieldname = 'ZCMF12_UT'. + + WHEN 'ZCMF12_UT'. + ls_fcat-outputlen = 3. + ls_fcat-ref_table = ref_tab. + ls_fcat-ref_field = ref_fld. + ls_fcat-f4availabl = 'X'. + ls_fcat-checktable = 'T006'. + + WHEN 'ZCMF13_CR'. + ls_fcat-outputlen = 17. + ls_fcat-ref_table = ref_tab. + ls_fcat-ref_field = ref_fld. + ls_fcat-cfieldname = 'ZCMF14_CK'. + + WHEN 'ZCMF14_CK'. + ls_fcat-outputlen = 5. + ls_fcat-ref_table = ref_tab. + ls_fcat-ref_field = ref_fld. + ls_fcat-f4availabl = 'X'. + ls_fcat-checktable = 'TCURC'. + + WHEN 'ZCMF17_DC'. + ls_fcat-outputlen = 17. + ls_fcat-ref_table = ref_tab. + ls_fcat-ref_field = ref_fld. + + WHEN OTHERS. + CASE field(4). + WHEN 'ZCM_'. + ls_fcat-dd_outlen = 20. + ls_fcat-key = 'X'. + + WHEN 'ZCMF'. + ls_fcat-dd_outlen = 30. + + WHEN OTHERS. + ENDCASE. + ENDCASE. + + CASE option. + WHEN '1'. + APPEND ls_fcat TO gt_fcat. + + WHEN '2'. + APPEND ls_fcat TO gt_fcat2. + ENDCASE. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form EXCLUDE_TOOLBAR +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> GT_EXCLUDE +*&---------------------------------------------------------------------* +FORM exclude_toolbar. + + CLEAR : gt_exclude, gt_exclude[]. + + APPEND: + cl_gui_alv_grid=>mc_fc_loc_undo TO gt_exclude, + cl_gui_alv_grid=>mc_fc_auf TO gt_exclude, + cl_gui_alv_grid=>mc_fc_average TO gt_exclude, + cl_gui_alv_grid=>mc_fc_back_classic TO gt_exclude, + cl_gui_alv_grid=>mc_fc_call_abc TO gt_exclude, + cl_gui_alv_grid=>mc_fc_call_chain TO gt_exclude, + cl_gui_alv_grid=>mc_fc_call_crbatch TO gt_exclude, + cl_gui_alv_grid=>mc_fc_call_crweb TO gt_exclude, + cl_gui_alv_grid=>mc_fc_call_lineitems TO gt_exclude, + cl_gui_alv_grid=>mc_fc_call_master_data TO gt_exclude, + cl_gui_alv_grid=>mc_fc_call_more TO gt_exclude, + cl_gui_alv_grid=>mc_fc_call_report TO gt_exclude, + cl_gui_alv_grid=>mc_fc_call_xint TO gt_exclude, + cl_gui_alv_grid=>mc_fc_call_xxl TO gt_exclude, + cl_gui_alv_grid=>mc_fc_col_invisible TO gt_exclude, +* cl_gui_alv_grid=>mc_fc_col_optimize TO gt_exclude, + cl_gui_alv_grid=>mc_fc_current_variant TO gt_exclude, + cl_gui_alv_grid=>mc_fc_data_save TO gt_exclude, + cl_gui_alv_grid=>mc_fc_delete_filter TO gt_exclude, + cl_gui_alv_grid=>mc_fc_deselect_all TO gt_exclude, + cl_gui_alv_grid=>mc_fc_detail TO gt_exclude, + cl_gui_alv_grid=>mc_fc_expcrdata TO gt_exclude, + cl_gui_alv_grid=>mc_fc_expcrdesig TO gt_exclude, + cl_gui_alv_grid=>mc_fc_expcrtempl TO gt_exclude, + cl_gui_alv_grid=>mc_fc_html TO gt_exclude, + cl_gui_alv_grid=>mc_fc_url_copy_to_clipboard TO gt_exclude, + cl_gui_alv_grid=>mc_fc_expmdb TO gt_exclude, + cl_gui_alv_grid=>mc_fc_extend TO gt_exclude, + cl_gui_alv_grid=>mc_fc_f4 TO gt_exclude, +* cl_gui_alv_grid=>mc_fc_filter TO gt_exclude, + cl_gui_alv_grid=>mc_fc_find TO gt_exclude, + cl_gui_alv_grid=>mc_fc_fix_columns TO gt_exclude, + cl_gui_alv_grid=>mc_fc_graph TO gt_exclude, + cl_gui_alv_grid=>mc_fc_help TO gt_exclude, + cl_gui_alv_grid=>mc_fc_info TO gt_exclude, + cl_gui_alv_grid=>mc_fc_load_variant TO gt_exclude, + cl_gui_alv_grid=>mc_fc_loc_copy TO gt_exclude, + cl_gui_alv_grid=>mc_fc_html TO gt_exclude, + cl_gui_alv_grid=>mc_fc_loc_copy_row TO gt_exclude, + cl_gui_alv_grid=>mc_fc_loc_cut TO gt_exclude, + cl_gui_alv_grid=>mc_fc_loc_delete_row TO gt_exclude, + cl_gui_alv_grid=>mc_fc_loc_insert_row TO gt_exclude, + cl_gui_alv_grid=>mc_fc_loc_move_row TO gt_exclude, + cl_gui_alv_grid=>mc_fc_loc_append_row TO gt_exclude, + cl_gui_alv_grid=>mc_fc_loc_paste TO gt_exclude, + cl_gui_alv_grid=>mc_fc_loc_paste_new_row TO gt_exclude, + cl_gui_alv_grid=>mc_fc_maintain_variant TO gt_exclude, + cl_gui_alv_grid=>mc_fc_maximum TO gt_exclude, + cl_gui_alv_grid=>mc_fc_minimum TO gt_exclude, +* cl_gui_alv_grid=>mc_fc_pc_file TO gt_exclude, + cl_gui_alv_grid=>mc_fc_call_xml_export TO gt_exclude, + cl_gui_alv_grid=>mc_fc_print TO gt_exclude, + cl_gui_alv_grid=>mc_fc_print_back TO gt_exclude, + cl_gui_alv_grid=>mc_fc_print_prev TO gt_exclude, + cl_gui_alv_grid=>mc_fc_refresh TO gt_exclude, + cl_gui_alv_grid=>mc_fc_reprep TO gt_exclude, + cl_gui_alv_grid=>mc_fc_save_variant TO gt_exclude, +* cl_gui_alv_grid=>mc_fc_select_all TO gt_exclude, + cl_gui_alv_grid=>mc_fc_send TO gt_exclude, +* cl_gui_alv_grid=>mc_fc_separator TO gt_exclude, +* cl_gui_alv_grid=>mc_fc_sort TO gt_exclude, +* cl_gui_alv_grid=>mc_fc_sort_asc TO gt_exclude, +* cl_gui_alv_grid=>mc_fc_sort_dsc TO gt_exclude, +* cl_gui_alv_grid=>mc_fc_sum TO gt_exclude, +* cl_gui_alv_grid=>mc_fc_subtot TO gt_exclude, + cl_gui_alv_grid=>mc_mb_sum TO gt_exclude, + cl_gui_alv_grid=>mc_fc_sum TO gt_exclude, +* cl_gui_alv_grid=>mc_mb_export TO gt_exclude, + cl_gui_alv_grid=>mc_fc_to_office TO gt_exclude, + cl_gui_alv_grid=>mc_fc_to_rep_tree TO gt_exclude, + cl_gui_alv_grid=>mc_fc_unfix_columns TO gt_exclude, + cl_gui_alv_grid=>mc_fc_views TO gt_exclude, + cl_gui_alv_grid=>mc_fc_view_crystal TO gt_exclude, + cl_gui_alv_grid=>mc_fc_view_excel TO gt_exclude, + cl_gui_alv_grid=>mc_fc_view_grid TO gt_exclude, + cl_gui_alv_grid=>mc_fc_word_processor TO gt_exclude. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form SET_LAYOUT +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> p1 text +*& <-- p2 text +*&---------------------------------------------------------------------* +FORM set_layout. + + CLEAR : gs_variant, gs_layout. + + gs_variant-report = sy-repid. + gs_variant-username = sy-uname. +* gs_variant-handle = 1. + +* gs_layout-grid_title = 'ALV TITLE'. "Alv title +* gs_layout-smalltitle = 'X'. "Small title + gs_layout-cwidth_opt = 'X'. "Optimize field + gs_layout-zebra = 'X'. "Zebra line color +* gs_layout-no_rowmark = ' '. "Hide rowmark + gs_layout-no_toolbar = 'X'. "Hide toolbar +* gs_layout-ctab_fname = 'COLOR'. "Cell color control field +* gs_layout-stylefname = 'CELLTAB'. "Cell edit control field +* gs_layout-excp_fname = 'ICON'. "Exception field + gs_layout-sel_mode = 'B'. "Alv selection mode +* 'A': Multiple Columns. Multiple Rows. Button Enable. Single Cell +* 'B': Multiple Columns. Single Rows. Button Disable. No Cell +* 'C': Multiple Columns. Multiple Rows. Button Disable. No Cell +* 'D': Multiple Columns. Multiple Rows. Button Enable. Multiple Cell + + CLEAR gs_layout2. + gs_layout2-cwidth_opt = 'A'. + gs_layout2-zebra = 'X'. + gs_layout2-smalltitle = 'X'. "Small title + gs_layout2-sel_mode = 'D'. + gs_layout2-stylefname = 'CELLTAB'. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form SET_EVENT_RECEIVER +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> p1 text +*& <-- p2 text +*&---------------------------------------------------------------------* +FORM set_event_receiver . + +** 0 - No Edit / 1 - Edit mode +* CALL METHOD g_grid2->set_ready_for_input +* EXPORTING +* i_ready_for_input = 1. + +** Enter +* CALL METHOD g_grid2->register_edit_event +* EXPORTING +* i_event_id = cl_gui_alv_grid=>mc_evt_enter. + +* Modify + CALL METHOD g_grid2->register_edit_event + EXPORTING + i_event_id = cl_gui_alv_grid=>mc_evt_enter. + +** Data Change +* CALL METHOD g_grid2->check_changed_data +* IMPORTING +* e_valid = g_valid. + +* Event receiver 생성 및 활성화 + CREATE OBJECT g_event_receiver. +* SET HANDLER g_event_receiver->handle_data_changed FOR g_grid1. +* SET HANDLER g_event_receiver->handle_user_command FOR g_grid1. +* SET HANDLER g_event_receiver->handle_toolbar FOR g_grid1. +* SET HANDLER g_event_receiver->handle_onf4 FOR g_grid1. +* SET HANDLER g_event_receiver->handle_double_click FOR g_grid1. + SET HANDLER g_event_receiver->handle_hotspot_click FOR g_grid1. +* SET HANDLER g_event_receiver->handle_top_of_page FOR g_grid1. + SET HANDLER g_event_receiver->handle_data_changed FOR g_grid2. +* SET HANDLER g_event_receiver->handle_data_changed_finished FOR g_grid2. + SET HANDLER g_event_receiver->handle_user_command FOR g_grid2. + SET HANDLER g_event_receiver->handle_toolbar FOR g_grid2. +* SET HANDLER g_event_receiver->handle_onf4 FOR g_grid2. +* SET HANDLER g_event_receiver->handle_double_click FOR g_grid2. +* SET HANDLER g_event_receiver->handle_hotspot_click FOR g_grid2. +* SET HANDLER g_event_receiver->handle_top_of_page FOR g_grid2. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form DISPLAY_GRID +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> p1 text +*& <-- p2 text +*&---------------------------------------------------------------------* +FORM display_grid. + + CALL METHOD g_grid1->set_table_for_first_display + EXPORTING + is_layout = gs_layout + is_variant = gs_variant +* it_toolbar_excluding = gt_exclude + i_save = 'A' +* 'A' : USER별, 기본세팅 선택 가능 / 'U' : USER별 / ' ' 저장불가 + i_default = 'X' +* 'X' DEFAULT 변형 저장 가능 / ' 'DEFAULT 변형 저장 불가능 + CHANGING + it_fieldcatalog = gt_fcat[] + it_outtab = gt_class[]. +* it_sort = gt_sort[]. + + CALL METHOD g_grid2->set_table_for_first_display + EXPORTING + is_layout = gs_layout2 + is_variant = gs_variant + it_toolbar_excluding = gt_exclude + i_save = 'A' +* 'A' : USER별, 기본세팅 선택 가능 / 'U' : USER별 / ' ' 저장불가 + i_default = 'X' +* 'X' DEFAULT 변형 저장 가능 / ' 'DEFAULT 변형 저장 불가능 + CHANGING + it_fieldcatalog = gt_fcat2[] + it_outtab = gt_detail[]. +* it_sort = gt_sort2[]. + + IF gv_zauthority = 'X'. + g_grid2->set_ready_for_input( 1 ). + ELSE. + g_grid2->set_ready_for_input( 0 ). + ENDIF. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form REFRESH_ALV +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> P_ +*&---------------------------------------------------------------------* +FORM refresh_alv. + + CLEAR gs_stbl. + gs_stbl-row = 'X'. + gs_stbl-col = 'X'. + + CALL METHOD g_grid1->refresh_table_display + EXPORTING + is_stable = gs_stbl. + + CALL METHOD g_grid2->refresh_table_display + EXPORTING + is_stable = gs_stbl. + + IF gv_zauthority = 'X'. + g_grid2->set_ready_for_input( 1 ). + ELSE. + g_grid2->set_ready_for_input( 0 ). + ENDIF. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form ALV_EVENT_TOOLBAR +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> E_OBJECT +*& --> E_INTERACTIVE +*&---------------------------------------------------------------------* +FORM alv_event_toolbar USING e_object TYPE REF TO cl_alv_event_toolbar_set + e_interactive TYPE c. + + IF gv_zauthority = 'X'. + PERFORM alv_append_toolbar USING + 'INSERT' + 0 + icon_system_save + 'SAVE' + TEXT-t13 "저장 + TEXT-t13 + ' ' + ' ' + 4 + CHANGING e_object->mt_toolbar. + + PERFORM alv_append_toolbar USING + 'INSERT' + 0 + icon_delete_row + 'DEL' + TEXT-t05 "행 삭제 + TEXT-t05 + ' ' + ' ' + 3 + CHANGING e_object->mt_toolbar. + + PERFORM alv_append_toolbar USING + 'INSERT' + 0 + icon_insert_row + 'NEW' + TEXT-t04 "행 추가 + TEXT-t04 + ' ' + ' ' + 2 + CHANGING e_object->mt_toolbar. + + PERFORM alv_append_toolbar USING + 'INSERT' + 0 + icon_refresh + 'REF' + TEXT-t12 "새로고침 + TEXT-t12 + ' ' + ' ' + 1 + CHANGING e_object->mt_toolbar. + +* .. Separator + PERFORM alv_append_toolbar USING + 'INSERT' + 0 + icon_create_copy + 'COPY' + TEXT-t14 "추가언어적용 + TEXT-t14 + ' ' + ' ' + 5 + CHANGING e_object->mt_toolbar. + + ENDIF. + +* .. Separator + PERFORM alv_append_toolbar USING + 'APPEND' + 3 + ' ' + ' ' + ' ' + ' ' + ' ' + ' ' + '3' + CHANGING e_object->mt_toolbar. + + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form ALV_APPEND_TOOLBAR +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> P_ +*& --> P_0 +*& --> ICON_SELECT_ALL +*& --> ZCMG1_UCOMM_SELA +*& --> LV_NATXT +*& --> P_ +*& --> P_d +*& --> P_ +*& <-- PRF_OBJECT_>MT_TOOLBAR +*&---------------------------------------------------------------------* +FORM alv_append_toolbar USING pv_ttype TYPE any + pv_btype TYPE tb_btype + pv_icon TYPE any + pv_function TYPE any + pv_quickinfo TYPE any + pv_text TYPE any + pv_disabled TYPE any + pv_checked TYPE any + pv_index TYPE any + CHANGING pt_button TYPE ttb_button. + + DATA ls_toolbar TYPE stb_button. + + CLEAR ls_toolbar. + CASE pv_btype. + WHEN 0. "0:Button (normal) + MOVE: pv_icon TO ls_toolbar-icon, + pv_function TO ls_toolbar-function, + pv_quickinfo TO ls_toolbar-quickinfo, + pv_text TO ls_toolbar-text, + pv_disabled TO ls_toolbar-disabled, + pv_checked TO ls_toolbar-checked. + + WHEN 3. "3:Separator + MOVE pv_btype TO ls_toolbar-butn_type. + + WHEN OTHERS. + EXIT. + ENDCASE. + + CASE pv_ttype. + WHEN 'INSERT'. + INSERT ls_toolbar INTO pt_button INDEX 1. + + WHEN OTHERS. + INSERT ls_toolbar INTO pt_button INDEX pv_index. + ENDCASE. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form ALV_USER_COMMAND +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> E_UCOMM +*&---------------------------------------------------------------------* +FORM alv_user_command USING e_ucomm TYPE sy-ucomm. + + DATA lv_ans. + + CASE e_ucomm. + WHEN 'NEW'. + PERFORM insert_row. + + WHEN 'DEL'. + PERFORM delete_row. + + WHEN 'SAVE'. + PERFORM popup_to_confirm USING TEXT-t11 + TEXT-q02 + TEXT-t07 + TEXT-t08 + space + CHANGING lv_ans. + + IF lv_ans = '1'. + PERFORM make_save_data. + ENDIF. + + WHEN 'REF'. + SORT gt_detail BY zsort_key zcm_code1 zcm_code2 zcm_code3 zcm_code4 zcm_code5 zcm_code6 zcm_code7 zcm_code8. + PERFORM refresh_alv. + + WHEN 'COPY'. " 언어별 라인 추가 + PERFORM data_copy_ind_languge. + + ENDCASE. + + CALL METHOD cl_gui_cfw=>set_new_ok_code + EXPORTING + new_code = 'REFRESH'. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form INSERT_ROW +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> p1 text +*& <-- p2 text +*&---------------------------------------------------------------------* +FORM insert_row. + + CLEAR gt_detail. + gt_detail-zclass = gv_class. + gt_detail-zmodule = gv_module. + + gv_mode = 'RW'. + REFRESH : gt_detail-celltab, gt_celltab. + PERFORM append_celltab USING gv_mode. + INSERT LINES OF gt_celltab INTO TABLE gt_detail-celltab. + + APPEND gt_detail. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form DELETE_ROW +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> p1 text +*& <-- p2 text +*&---------------------------------------------------------------------* +FORM delete_row. + + DATA lv_ans TYPE c. + +* 1. 선택한 행 체크 + PERFORM get_selected_rows CHANGING gv_error. + CHECK gv_error <> 'X'. + +* 2. 삭제 확인 Popup + PERFORM popup_to_confirm USING TEXT-t06 + TEXT-q01 + TEXT-t07 + TEXT-t08 + space + CHANGING lv_ans. + + IF lv_ans = '1'. + PERFORM check_pk_duplicate. + PERFORM delete_data. + ENDIF. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form GET_SELECTED_ROWS +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& <-- GV_ERROR +*&---------------------------------------------------------------------* +FORM get_selected_rows CHANGING o_error. + + DATA ls_row TYPE lvc_s_row. + + CLEAR o_error. + CALL METHOD g_grid2->get_selected_rows + IMPORTING + et_index_rows = gt_rows. + + IF gt_rows[] IS INITIAL. + o_error = 'X'. + MESSAGE s000 WITH TEXT-e02 DISPLAY LIKE 'E'. + EXIT. + ELSE. + LOOP AT gt_detail. + CLEAR gt_detail-mark. + MODIFY gt_detail TRANSPORTING mark. + ENDLOOP. + + CLEAR ls_row. + LOOP AT gt_rows INTO ls_row. + CLEAR gt_detail. + READ TABLE gt_detail INDEX ls_row-index. + IF sy-subrc = 0. + gt_detail-mark = 'X'. + MODIFY gt_detail INDEX ls_row-index. + ENDIF. + + CLEAR ls_row. + ENDLOOP. + ENDIF. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form POPUP_TO_CONFIRM +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> TEXT_T06 +*& --> TEXT_Q01 +*& --> TEXT_T12 +*& --> TEXT_T13 +*& --> SPACE +*& <-- LV_ANS +*&---------------------------------------------------------------------* +FORM popup_to_confirm USING title question button1 button2 cancel + CHANGING o_ans. + + CLEAR o_ans. + + CALL FUNCTION 'POPUP_TO_CONFIRM' + EXPORTING + titlebar = title + text_question = question + text_button_1 = button1 + text_button_2 = button2 + default_button = '2' + display_cancel_button = cancel + IMPORTING + answer = o_ans + EXCEPTIONS + text_not_found = 1 + OTHERS = 2. + + IF sy-subrc <> 0. +* Implement suitable error handling here + ENDIF. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form DELETE_DATA +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> GV_ERROR +*&---------------------------------------------------------------------* +FORM delete_data. + + DATA : lv_suc(5) , + lv_err(5). + + CLEAR : lv_suc, lv_err. + + LOOP AT gt_detail WHERE mark = 'X'. + CLEAR gt_0071_pk. + READ TABLE gt_0071_pk WITH KEY zmodule = gt_detail-zmodule + zclass = gt_detail-zclass + zcm_code1 = gt_detail-zcm_code1 + zcm_code2 = gt_detail-zcm_code2 + zcm_code3 = gt_detail-zcm_code3 + zcm_code4 = gt_detail-zcm_code4 + zcm_code5 = gt_detail-zcm_code5 + zcm_code6 = gt_detail-zcm_code6 + zcm_code7 = gt_detail-zcm_code7 + zcm_code8 = gt_detail-zcm_code8 + BINARY SEARCH. + + IF sy-subrc = 0. + DELETE FROM zcmt0002 WHERE spras = sy-langu + AND zmodule = gt_detail-zmodule + AND zclass = gt_detail-zclass + AND zcm_code1 = gt_detail-zcm_code1 + AND zcm_code2 = gt_detail-zcm_code2 + AND zcm_code3 = gt_detail-zcm_code3 + AND zcm_code4 = gt_detail-zcm_code4 + AND zcm_code5 = gt_detail-zcm_code5 + AND zcm_code6 = gt_detail-zcm_code6 + AND zcm_code7 = gt_detail-zcm_code7 + AND zcm_code8 = gt_detail-zcm_code8. + + IF sy-subrc = 0. + COMMIT WORK. + lv_suc = lv_suc + 1. + DELETE gt_detail. + ELSE. + ROLLBACK WORK. + lv_err = lv_err + 1. + ENDIF. + ELSE. + DELETE gt_detail. + IF sy-subrc = 0. + lv_suc = lv_suc + 1. + ELSE. + lv_err = lv_err + 1. + ENDIF. + ENDIF. + + CLEAR gt_detail. + ENDLOOP. + + CONDENSE : lv_suc NO-GAPS, + lv_err NO-GAPS. + + MESSAGE i000 WITH TEXT-t09 lv_suc TEXT-t10 lv_err. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form ALV_DOUBLE_CLICK +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> E_ROW +*& --> E_COLUMN +*& --> ES_ROW_NO +*&---------------------------------------------------------------------* +FORM alv_double_click USING e_row + e_column + es_row_no. + + DATA ls_class LIKE LINE OF gt_class. + + CLEAR ls_class. + + CASE e_column. + WHEN 'ZCLASS' OR 'ZCLSS_DESC'. + READ TABLE gt_class INTO ls_class INDEX e_row. + + IF ls_class-zclass IS INITIAL. + ELSE. + CLEAR : gv_module, gv_class. + gv_module = ls_class-zmodule. + gv_class = ls_class-zclass. + PERFORM display_detail_data USING ls_class. + ENDIF. + + CALL METHOD cl_gui_cfw=>set_new_ok_code + EXPORTING + new_code = 'REFRESH'. + + WHEN OTHERS. + ENDCASE. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form DISPLAY_DETAIL_DATA +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> LS_CLASS +*&---------------------------------------------------------------------* +FORM display_detail_data USING ps_class STRUCTURE gt_class. + + SORT gt_0070 BY zmodule zclass. + CLEAR gt_0070. + READ TABLE gt_0070 WITH KEY zmodule = ps_class-zmodule + zclass = ps_class-zclass BINARY SEARCH. + + CHECK sy-subrc = 0. + + CLEAR : gt_0071, gt_0071[]. + SELECT zmodule zclass + zcm_code1 zcm_code2 zcm_code3 zcm_code4 + zcm_code5 zcm_code6 zcm_code7 zcm_code8 + zcmf01_ch zcmf02_ch zcmf03_ch zcmf04_ch + zcmf05_ch zcmf06_ch zcmf07_ch zcmf08_ch + zcmf09_ch zcmf10_ch zcmf11_qu zcmf12_ut + zcmf13_cr zcmf14_ck zcmf15_nm zcmf16_nm zcmf17_dc + zsort_key + ernam erdat erzet + aenam aedat aezet + FROM zcmt0002 + INTO CORRESPONDING FIELDS OF TABLE gt_0071 + WHERE spras = sy-langu + AND zmodule = gt_0070-zmodule + AND zclass = gt_0070-zclass. + + IF sy-subrc = 0. + SORT gt_0071 BY zmodule zclass. + ENDIF. + + PERFORM check_cm_authority. + + PERFORM make_detail_data USING gt_0070. + + PERFORM set_fcat_detail. + + CALL METHOD g_grid2->set_frontend_fieldcatalog + EXPORTING + it_fieldcatalog = gt_fcat2. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form ALV_DATA_CHANGED +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> ER_DATA_CHANGED +*& --> E_ONF4_AFTER +*&---------------------------------------------------------------------* +FORM alv_data_changed USING er_data_changed TYPE REF TO cl_alv_changed_data_protocol + e_onf4_after. + + DATA : ls_mod_cells TYPE lvc_s_modi, + ls_cells TYPE lvc_s_modi, + lv_code LIKE zcmt0002-zcm_code1, + lv_fld_c LIKE zcmt0002-zcmf01_ch, + lv_fld_c2 LIKE zcmt0002-zcmf10_ch, + lv_fld_n LIKE zcmt0002-zcmf15_nm, + lv_fld_d LIKE zcmt0002-zcmf17_dc. + + LOOP AT er_data_changed->mt_good_cells INTO ls_mod_cells. + + CASE ls_mod_cells-fieldname. + WHEN 'ZCM_CODE1' OR 'ZCM_CODE2' OR + 'ZCM_CODE3' OR 'ZCM_CODE4' OR + 'ZCM_CODE5' OR 'ZCM_CODE6' OR + 'ZCM_CODE7' OR 'ZCM_CODE8' . + + PERFORM get_cell_value USING er_data_changed + ls_mod_cells-row_id + ls_mod_cells-fieldname + CHANGING lv_code. + + PERFORM modify_cell USING er_data_changed + ls_mod_cells-row_id + ls_mod_cells-fieldname + lv_code. + + WHEN 'ZCMF01_CH' OR 'ZCMF02_CH' OR 'ZCMF03_CH' OR + 'ZCMF04_CH' OR 'ZCMF05_CH' OR 'ZCM06_CH' OR + 'ZCMF07_CH' OR 'ZCMF08_CH' OR 'ZCM09_CH'. + + PERFORM get_cell_value USING er_data_changed + ls_mod_cells-row_id + ls_mod_cells-fieldname + CHANGING lv_fld_c. + + PERFORM modify_cell USING er_data_changed + ls_mod_cells-row_id + ls_mod_cells-fieldname + lv_fld_c. + + WHEN 'ZCMF10_CH'. + PERFORM get_cell_value USING er_data_changed + ls_mod_cells-row_id + ls_mod_cells-fieldname + CHANGING lv_fld_c2. + + PERFORM modify_cell USING er_data_changed + ls_mod_cells-row_id + ls_mod_cells-fieldname + lv_fld_c2. + + WHEN 'ZCMF15_NM' OR 'ZCMF16_NM'. + PERFORM get_cell_value USING er_data_changed + ls_mod_cells-row_id + ls_mod_cells-fieldname + CHANGING lv_fld_n. + + PERFORM modify_cell USING er_data_changed + ls_mod_cells-row_id + ls_mod_cells-fieldname + lv_fld_n. + + WHEN 'ZCMF17_DC' . + PERFORM get_cell_value USING er_data_changed + ls_mod_cells-row_id + ls_mod_cells-fieldname + CHANGING lv_fld_d. + + PERFORM modify_cell USING er_data_changed + ls_mod_cells-row_id + ls_mod_cells-fieldname + lv_fld_d. + + WHEN 'ZCMF11_QU' OR 'ZCMF12_UT' OR 'ZCM13_CR' OR + 'ZCMF14_CK'. + + PERFORM get_cell_value USING er_data_changed + ls_mod_cells-row_id + ls_mod_cells-fieldname + CHANGING lv_fld_c. + + PERFORM modify_cell USING er_data_changed + ls_mod_cells-row_id + ls_mod_cells-fieldname + lv_fld_c. + + PERFORM refresh_alv. + + WHEN OTHERS. + ENDCASE. + ENDLOOP. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form GET_CELL_VALUE +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> ER_DATA_CHANGED +*& --> LV_ROW_ID +*& --> LV_TABIX +*& --> LV_FNAME +*& <-- +*&---------------------------------------------------------------------* +FORM get_cell_value USING er_data_changed TYPE REF TO cl_alv_changed_data_protocol + pv_row_id TYPE lvc_s_modi-row_id + pv_fname TYPE any + CHANGING pv_value. + + CLEAR pv_value. + CALL METHOD er_data_changed->get_cell_value + EXPORTING + i_row_id = pv_row_id + i_fieldname = pv_fname + IMPORTING + e_value = pv_value. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form MODIFY_CELL +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> ER_DATA_CHANGED +*& --> LV_ROW_ID +*& --> LV_TABIX +*& --> P_ +*& --> _ZCM_CODE1 +*&---------------------------------------------------------------------* +FORM modify_cell USING er_data_changed TYPE REF TO cl_alv_changed_data_protocol + pv_row_id TYPE lvc_s_modi-row_id + pv_fname ": TYPE any + pv_value. " TYPE any. + + CALL METHOD er_data_changed->modify_cell + EXPORTING + i_row_id = pv_row_id + i_fieldname = pv_fname + i_value = pv_value. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form ALV_DATA_CHANGED_FINISHED +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> E_MODIFIED +*&---------------------------------------------------------------------* +FORM alv_data_changed_finished TABLES pt_good_cells TYPE lvc_t_modi + USING pv_modified TYPE c. + + DATA : lt_good_cells TYPE TABLE OF lvc_s_modi-fieldname, + ls_good_cells LIKE LINE OF lt_good_cells, + lv_refresh TYPE c. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form ALV_HOTSPOT_CLICK +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> E_ROW_ID +*& --> E_COLUMN_ID +*& --> ES_ROW_NO +*&---------------------------------------------------------------------* +FORM alv_hotspot_click USING e_row_id TYPE lvc_s_row + e_column_id TYPE lvc_s_col + es_row_no TYPE lvc_s_roid. + + DATA ls_class LIKE LINE OF gt_class. + + CLEAR ls_class. + + CHECK e_column_id-fieldname = 'ZCLASS' . + + gv_zauthority = 'X'. + + READ TABLE gt_class INTO ls_class INDEX es_row_no-row_id. + + IF ls_class-zclass IS INITIAL. + ELSE. + CLEAR gv_class. + gv_class = ls_class-zclass. + PERFORM display_detail_data USING ls_class. + ENDIF. + + CALL METHOD cl_gui_cfw=>set_new_ok_code + EXPORTING + new_code = 'REFRESH'. + + CALL METHOD cl_gui_control=>set_focus + EXPORTING + control = g_grid1. + + CONCATENATE '▶' ls_class-zclass ls_class-zclss_desc INTO gv_gridtitle SEPARATED BY space. + CALL METHOD g_grid2->set_gridtitle + EXPORTING + i_gridtitle = gv_gridtitle. + +ENDFORM. +*&---------------------------------------------------------------------* +*& Form data_copy_ind_languge +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> p1 text +*& <-- p2 text +*&---------------------------------------------------------------------* +FORM data_copy_ind_languge . + +* EN으로 Login 후에 작업한 내용을 KO로 로그인해서 별도 작업 없이 같은 값을 확장시켜 주고 싶은 경우 +* 해당언어를 입력하여 확장시키는 기능 구현 + +* 확인 Popup + CLEAR lv_ans. + PERFORM popup_to_confirm USING TEXT-t14 + TEXT-q03 + TEXT-t07 + TEXT-t08 + space + CHANGING lv_ans. + + IF lv_ans = '1'. + CLEAR gv_langu. + CALL SCREEN 0110 STARTING AT 35 10 . + ENDIF. + + +ENDFORM. +*&---------------------------------------------------------------------* +*& Form ADD_ADJUST_TABLE +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> p1 text +*& <-- p2 text +*&---------------------------------------------------------------------* +FORM add_adjust_table . + + DATA: lt_0010 LIKE zcmt0001 OCCURS 0 WITH HEADER LINE, + lt_0020 LIKE zcmt0002 OCCURS 0 WITH HEADER LINE. + +* 화면에 선택한 라인에 대한 code 값을 먼저 모두 삭제하고 다시 생성하는 형태 + + IF gt_detail[] IS INITIAL. + MESSAGE i001 WITH TEXT-e01. + ELSE. + + " 여기서 zcmt0001 을 굳이 삭제하지 않는 이유는 + " 어차피 한건당 1 line 으로 구성되어 있고 modify 작업시 없으면 insert 작업이 이루어지므로 여기서 굳이 삭제하지 않음. + + READ TABLE gt_detail INDEX 1. + CHECK sy-subrc = 0. + + + BREAK zenabap04. +* DELETE FROM zcmt0002 +* WHERE zmodule = gv_module +* AND zclass = gv_class +* AND spras = gv_langu. +* IF sy-subrc = 0. +* COMMIT WORK. +* ENDIF. + + " Time stamp......... 유저, 현재일, 현재시각 + gs_0000-ernam = gs_0000-aenam = sy-uname. + gs_0000-erdat = gs_0000-aedat = sy-datum. + gs_0000-erzet = gs_0000-aezet = sy-uzeit. + "======================================= + + SELECT * + INTO TABLE @lt_0010 + FROM zcmt0001 + WHERE zmodule = @gv_module + AND zclass = @gv_class + AND spras = @sy-langu. + + IF lt_0010[] IS NOT INITIAL. + lt_0010-spras = gv_langu. + MOVE-CORRESPONDING gs_0000 TO lt_0010. + + MODIFY lt_0010 TRANSPORTING spras ernam erdat erzet aenam aedat aezet + WHERE spras = sy-langu. + + MODIFY zcmt0001 FROM TABLE lt_0010. + IF sy-subrc = 0. + + COMMIT WORK. + SELECT * + INTO TABLE @lt_0020 + FROM zcmt0002 + WHERE zmodule = @gv_module + AND zclass = @gv_class + AND spras = @sy-langu. + + IF lt_0020[] IS NOT INITIAL. + lt_0020-spras = gv_langu. + MOVE-CORRESPONDING gs_0000 TO lt_0020. + + MODIFY lt_0020 TRANSPORTING spras ernam erdat erzet aenam aedat aezet + WHERE spras = sy-langu. + + MODIFY zcmt0002 FROM TABLE lt_0020. + IF sy-subrc = 0. + COMMIT WORK. + MESSAGE s001 WITH TEXT-s01. + ENDIF. + ENDIF. + + ENDIF. + ENDIF. + ENDIF. + +ENDFORM. diff --git a/src/zcmr0001f01.prog.xml b/src/zcmr0001f01.prog.xml new file mode 100644 index 0000000..f753640 --- /dev/null +++ b/src/zcmr0001f01.prog.xml @@ -0,0 +1,20 @@ + + + + + + ZCMR0001F01 + I + 3 + X + + + + R + Include ZCMR0001F01 + 19 + + + + + diff --git a/src/zcmr0001pai.prog.abap b/src/zcmr0001pai.prog.abap new file mode 100644 index 0000000..157f689 --- /dev/null +++ b/src/zcmr0001pai.prog.abap @@ -0,0 +1,90 @@ +*&---------------------------------------------------------------------* +*& Include ZCMR0001PAI +*&---------------------------------------------------------------------* +*&---------------------------------------------------------------------* +*& Module EXIT INPUT +*&---------------------------------------------------------------------* +* text +*----------------------------------------------------------------------* +MODULE exit INPUT. + + CHECK gv_okcode = 'EXIT'. + +ENDMODULE. + +*&---------------------------------------------------------------------* +*& Module USER_COMMAND_0100 INPUT +*&---------------------------------------------------------------------* +* text +*----------------------------------------------------------------------* +MODULE user_command_0100 INPUT. + + DATA lv_ans. + + CLEAR gv_saveok. + gv_saveok = gv_okcode. + CLEAR gv_okcode. + + CASE gv_saveok. + WHEN 'BACK' OR 'CANC'. + LEAVE TO SCREEN 0. + + WHEN 'SAVE'. +* 툴바 대체 요청 2020.03.30 +* . 삭제 확인 Popup +* PERFORM popup_to_confirm USING TEXT-t11 +* TEXT-q02 +* TEXT-t07 +* TEXT-t08 +* space +* CHANGING lv_ans. +* IF lv_ans = '1'. +* PERFORM make_save_data. +* ENDIF. + ENDCASE. + + cl_gui_cfw=>dispatch( ). + +ENDMODULE. +*&---------------------------------------------------------------------* +*& Module USER_COMMAND_0110 INPUT +*&---------------------------------------------------------------------* +* text +*----------------------------------------------------------------------* +MODULE user_command_0110 INPUT. + + CLEAR gv_saveok. + gv_saveok = gv_okcode. + CLEAR gv_okcode. + + CASE gv_saveok. + WHEN 'OKAY'. + SELECT SINGLE spras + INTO gv_langu + FROM t002 + WHERE spras = gv_langu. + IF sy-subrc = 0. + PERFORM ADD_ADJUST_TABLE. + LEAVE TO SCREEN 0. + ELSE. + IF gv_langu IS INITIAL. + MESSAGE i000 WITH TEXT-e05. + ELSE. + MESSAGE i000 WITH TEXT-e06. + ENDIF. + ENDIF. + WHEN OTHERS. + LEAVE TO SCREEN 0. + ENDCASE. + +ENDMODULE. +*&---------------------------------------------------------------------* +*& Module EXIT_0110 INPUT +*&---------------------------------------------------------------------* +* text +*----------------------------------------------------------------------* +MODULE exit_0110 INPUT. + + LEAVE TO SCREEN 0. + +ENDMODULE. diff --git a/src/zcmr0001pai.prog.xml b/src/zcmr0001pai.prog.xml new file mode 100644 index 0000000..ec16124 --- /dev/null +++ b/src/zcmr0001pai.prog.xml @@ -0,0 +1,20 @@ + + + + + + ZCMR0001PAI + I + 3 + X + + + + R + Include ZCMR0001PAI + 19 + + + + + diff --git a/src/zcmr0001pbo.prog.abap b/src/zcmr0001pbo.prog.abap new file mode 100644 index 0000000..fd78443 --- /dev/null +++ b/src/zcmr0001pbo.prog.abap @@ -0,0 +1,44 @@ +*&---------------------------------------------------------------------* +*& Include ZCMR0001PBO +*&---------------------------------------------------------------------* +*&---------------------------------------------------------------------* +*& Module STATUS_0100 OUTPUT +*&---------------------------------------------------------------------* +*& +*&---------------------------------------------------------------------* +MODULE STATUS_0100 OUTPUT. + + SET PF-STATUS '0100'. + SET TITLEBAR '0100' WITH GV_MODULE_DESC. + +ENDMODULE. + +*&---------------------------------------------------------------------* +*& Module CREATE_ALV_0100 OUTPUT +*&---------------------------------------------------------------------* +*& +*&---------------------------------------------------------------------* +MODULE CREATE_ALV_0100 OUTPUT. + + IF G_DOCKING_CONTAINER IS INITIAL. + PERFORM CREATE_GRID. + PERFORM SET_FCAT_CLASS. + PERFORM SET_FCAT_DETAIL. + PERFORM EXCLUDE_TOOLBAR. + PERFORM SET_LAYOUT. + PERFORM SET_EVENT_RECEIVER. + PERFORM DISPLAY_GRID. + ELSE. + PERFORM REFRESH_ALV. + ENDIF. + +ENDMODULE. +*&---------------------------------------------------------------------* +*& Module STATUS_0110 OUTPUT +*&---------------------------------------------------------------------* +*& +*&---------------------------------------------------------------------* +MODULE status_0110 OUTPUT. + SET PF-STATUS '0110'. + SET TITLEBAR '0110'. +ENDMODULE. diff --git a/src/zcmr0001pbo.prog.xml b/src/zcmr0001pbo.prog.xml new file mode 100644 index 0000000..7be2c73 --- /dev/null +++ b/src/zcmr0001pbo.prog.xml @@ -0,0 +1,20 @@ + + + + + + ZCMR0001PBO + I + 3 + X + + + + R + Include ZCMR0001PBO + 19 + + + + + diff --git a/src/zcmr0001s01.prog.abap b/src/zcmr0001s01.prog.abap new file mode 100644 index 0000000..c486403 --- /dev/null +++ b/src/zcmr0001s01.prog.abap @@ -0,0 +1,12 @@ +*&---------------------------------------------------------------------* +*& Include ZCMR0001S01 +*&---------------------------------------------------------------------* +*----------------------------------------------------------------------* +* SELECTION-SCREEN +*----------------------------------------------------------------------* +SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME. " TITLE TEXT-B01. + SELECT-OPTIONS: s_module FOR zcmt0002-zmodule + OBLIGATORY " MODIF ID mod + MATCHCODE OBJECT zcmh_zmodule, + s_class FOR zcmt0002-zclass. +SELECTION-SCREEN END OF BLOCK b1. diff --git a/src/zcmr0001s01.prog.xml b/src/zcmr0001s01.prog.xml new file mode 100644 index 0000000..100d73a --- /dev/null +++ b/src/zcmr0001s01.prog.xml @@ -0,0 +1,20 @@ + + + + + + ZCMR0001S01 + I + 3 + X + + + + R + Include ZCMR0001S01 + 19 + + + + + diff --git a/src/zcmr0001top.prog.abap b/src/zcmr0001top.prog.abap new file mode 100644 index 0000000..68d655c --- /dev/null +++ b/src/zcmr0001top.prog.abap @@ -0,0 +1,243 @@ + + +*----------------------------------------------------------------------* +* Tables +*----------------------------------------------------------------------* +TABLES: zcmt0003, zcmt0002. + +*----------------------------------------------------------------------* +* Types, Internal Table, Structure +*----------------------------------------------------------------------* +TYPES : BEGIN OF ty_chk, + cd1, "사용유무 + cd2, + cd3, + cd4, + cd5, "사용유무 + cd6, + cd7, + cd8, + f_cd1(30), "Code1 필드명 + f_cd2(30), "Code1 필드명 + f_cd3(30), "Code1 필드명 + f_cd4(30), "Code1 필드명 + f_cd5(30), "Code1 필드명 + f_cd6(30), "Code1 필드명 + f_cd7(30), "Code1 필드명 + f_cd8(30), "Code1 필드명 + fld01, "사용유무 + fld02, + fld03, + fld04, + fld05, + fld06, + fld07, + fld08, + fld09, + fld10, + fld11, + fld12, + fld13, + fld14, + fld15, + fld16, + fld17, + f_fld01(30), "Code1 필드 + f_fld02(30), "Code2 필드 + f_fld03(30), "Code3 필드 + f_fld04(30), "Code4 필드 + f_fld05(30), "Code5 필드 + f_fld06(30), "Code6 필드 + f_fld07(30), "Code7 필드 + f_fld08(30), "Code8 필드 + f_fld09(30), "Code9 필드 + f_fld10(30), "Code10 필드 + f_fld11(30), "Code11 필드 + f_fld12(30), "Code12 필드 + f_fld13(30), "Code13 필드 + f_fld14(30), "Code14 필드 + f_fld15(30), "Code15 필드 + f_fld16(30), "Code16 필드 + f_fld17(30), "Code17 필드 + END OF ty_chk. + +DATA gs_chk TYPE ty_chk. + +DATA : BEGIN OF gt_0070 OCCURS 0, + zmodule LIKE zcmt0001-zmodule, + zclass LIKE zcmt0001-zclass, + zclss_desc LIKE zcmt0001-zclss_desc, + zprgname LIKE zcmt0001-zprgname, + zcode2_ox LIKE zcmt0001-zcode2_ox, + zcode3_ox LIKE zcmt0001-zcode3_ox, + zcode4_ox LIKE zcmt0001-zcode4_ox, + zcode5_ox LIKE zcmt0001-zcode5_ox, + zcode6_ox LIKE zcmt0001-zcode6_ox, + zcode7_ox LIKE zcmt0001-zcode7_ox, + zcode8_ox LIKE zcmt0001-zcode8_ox, + zcd1_desc LIKE zcmt0001-zcd1_desc, + zcd2_desc LIKE zcmt0001-zcd2_desc, + zcd3_desc LIKE zcmt0001-zcd3_desc, + zcd4_desc LIKE zcmt0001-zcd4_desc, + zcd5_desc LIKE zcmt0001-zcd5_desc, + zcd6_desc LIKE zcmt0001-zcd6_desc, + zcd7_desc LIKE zcmt0001-zcd7_desc, + zcd8_desc LIKE zcmt0001-zcd8_desc, + zf01_ox LIKE zcmt0001-zf01_ox, + zf01_desc LIKE zcmt0001-zf01_desc, + zf02_ox LIKE zcmt0001-zf02_ox, + zf02_desc LIKE zcmt0001-zf02_desc, + zf03_ox LIKE zcmt0001-zf03_ox, + zf03_desc LIKE zcmt0001-zf03_desc, + zf04_ox LIKE zcmt0001-zf04_ox, + zf04_desc LIKE zcmt0001-zf04_desc, + zf05_ox LIKE zcmt0001-zf05_ox, + zf05_desc LIKE zcmt0001-zf05_desc, + zf06_ox LIKE zcmt0001-zf06_ox, + zf06_desc LIKE zcmt0001-zf06_desc, + zf07_ox LIKE zcmt0001-zf07_ox, + zf07_desc LIKE zcmt0001-zf07_desc, + zf08_ox LIKE zcmt0001-zf08_ox, + zf08_desc LIKE zcmt0001-zf08_desc, + zf09_ox LIKE zcmt0001-zf09_ox, + zf09_desc LIKE zcmt0001-zf09_desc, + zf10_ox LIKE zcmt0001-zf10_ox, + zf10_desc LIKE zcmt0001-zf10_desc, + zf11_ox LIKE zcmt0001-zf11_ox, + zf11_desc LIKE zcmt0001-zf11_desc, + zf12_ox LIKE zcmt0001-zf12_ox, + zf12_desc LIKE zcmt0001-zf12_desc, + zf13_ox LIKE zcmt0001-zf13_ox, + zf13_desc LIKE zcmt0001-zf13_desc, + zf14_ox LIKE zcmt0001-zf14_ox, + zf14_desc LIKE zcmt0001-zf14_desc, + zf15_ox LIKE zcmt0001-zf15_ox, + zf15_desc LIKE zcmt0001-zf15_desc, + zf16_ox LIKE zcmt0001-zf16_ox, + zf16_desc LIKE zcmt0001-zf16_desc, + zf17_ox LIKE zcmt0001-zf17_ox, + zf17_desc LIKE zcmt0001-zf17_desc, + END OF gt_0070. + +DATA gt_0071 TYPE TABLE OF zcmt0002 WITH HEADER LINE. + +DATA : BEGIN OF gt_0071_pk OCCURS 0, + zmodule LIKE zcmt0002-zmodule, + zclass LIKE zcmt0002-zclass, + zcm_code1 LIKE zcmt0002-zcm_code1, + zcm_code2 LIKE zcmt0002-zcm_code2, + zcm_code3 LIKE zcmt0002-zcm_code3, + zcm_code4 LIKE zcmt0002-zcm_code4, + zcm_code5 LIKE zcmt0002-zcm_code5, + zcm_code6 LIKE zcmt0002-zcm_code6, + zcm_code7 LIKE zcmt0002-zcm_code7, + zcm_code8 LIKE zcmt0002-zcm_code8, + END OF gt_0071_pk. + +* AL:V - 클래스 +DATA : BEGIN OF gt_class OCCURS 0, + zmodule LIKE zcmt0001-zmodule, + zclass LIKE zcmt0001-zclass, + zclss_desc LIKE zcmt0001-zclss_desc, + zprgname LIKE zcmt0001-zprgname, + END OF gt_class. + +* ALV - 클래스 별 상세 정보 +DATA : BEGIN OF gt_detail OCCURS 0, + mark, + zmodule LIKE zcmt0002-zmodule, + zclass LIKE zcmt0002-zclass, + zcm_code1 LIKE zcmt0002-zcm_code1, + zcm_code2 LIKE zcmt0002-zcm_code2, + zcm_code3 LIKE zcmt0002-zcm_code3, + zcm_code4 LIKE zcmt0002-zcm_code4, + zcm_code5 LIKE zcmt0002-zcm_code5, + zcm_code6 LIKE zcmt0002-zcm_code6, + zcm_code7 LIKE zcmt0002-zcm_code7, + zcm_code8 LIKE zcmt0002-zcm_code8, + zcmf01_ch LIKE zcmt0002-zcmf01_ch, + zcmf02_ch LIKE zcmt0002-zcmf02_ch, + zcmf03_ch LIKE zcmt0002-zcmf03_ch, + zcmf04_ch LIKE zcmt0002-zcmf04_ch, + zcmf05_ch LIKE zcmt0002-zcmf05_ch, + zcmf06_ch LIKE zcmt0002-zcmf06_ch, + zcmf07_ch LIKE zcmt0002-zcmf07_ch, + zcmf08_ch LIKE zcmt0002-zcmf08_ch, + zcmf09_ch LIKE zcmt0002-zcmf09_ch, + zcmf10_ch LIKE zcmt0002-zcmf10_ch, + zcmf11_qu LIKE zcmt0002-zcmf11_qu, + zcmf12_ut LIKE zcmt0002-zcmf12_ut, + zcmf13_cr LIKE zcmt0002-zcmf13_cr, + zcmf14_ck LIKE zcmt0002-zcmf14_ck, + zcmf15_nm LIKE zcmt0002-zcmf15_nm, + zcmf16_nm LIKE zcmt0002-zcmf16_nm, + zcmf17_dc LIKE zcmt0002-zcmf17_dc, + zsort_key LIKE zcmt0002-zsort_key, + ernam LIKE zcmt0001-ernam, + erdat LIKE zcmt0001-erdat, + erzet LIKE zcmt0001-erzet, + aenam LIKE zcmt0001-aenam, + aedat LIKE zcmt0001-aedat, + aezet LIKE zcmt0001-aezet, + celltab TYPE lvc_t_styl, "Cell Style, + colinfo TYPE lvc_t_scol, "Cell Color + END OF gt_detail. + +*----------------------------------------------------------------------* +* Global Variable +*----------------------------------------------------------------------* +DATA : gv_module_desc LIKE dd07t-ddtext, + gv_class LIKE zcmt0001-zclass, + gv_module LIKE zcmt0001-zmodule, + gv_total TYPE i, + gv_cursor(50) TYPE c, + gv_error, + gv_mode(2), "Edit Mode + gv_okcode TYPE sy-ucomm, + gv_saveok TYPE sy-ucomm. + +DATA: gv_zauthority VALUE 'X'. +DATA: gv_f4_module(2), + gv_f4_class(5). + +DATA: gv_langu LIKE sy-langu, + gs_0000 LIKE zcms0010. +*----------------------------------------------------------------------* +* Constants +*----------------------------------------------------------------------* +CONSTANTS c_module(15) TYPE c VALUE 'ZDMODULE'. + +*----------------------------------------------------------------------* +* Search Help +*----------------------------------------------------------------------* +DATA: gt_rtntab LIKE ddshretval OCCURS 0 WITH HEADER LINE, + gt_dynpread LIKE dynpread OCCURS 0 WITH HEADER LINE. + +*&---------------------------------------------------------------------* +*& Data & Variables +*&---------------------------------------------------------------------* +DATA : g_event_receiver TYPE REF TO lcl_event_receiver, + g_docking_container TYPE REF TO cl_gui_docking_container, + g_custom_container TYPE REF TO cl_gui_custom_container, + g_grid1 TYPE REF TO cl_gui_alv_grid, + g_grid2 TYPE REF TO cl_gui_alv_grid, + gs_variant TYPE disvariant, + gs_layout TYPE lvc_s_layo, + gs_layout2 TYPE lvc_s_layo, + col_pos TYPE i, + gt_fcat TYPE lvc_t_fcat, + gt_fcat2 TYPE lvc_t_fcat, + gt_sort TYPE lvc_t_sort WITH HEADER LINE, + gt_exclude TYPE ui_functions, + gs_stbl TYPE lvc_s_stbl, + gv_valid TYPE c, + gt_celltab TYPE lvc_t_styl, "ALV 제어: 셀에 대한 스타일 테이블 + gt_rows TYPE lvc_t_row, + gt_fcode TYPE TABLE OF sy-ucomm, + gv_gridtitle TYPE lvc_title. + +* Title +DATA : g_document TYPE REF TO cl_dd_document, + g_splitter TYPE REF TO cl_gui_splitter_container, + g_grid_left TYPE REF TO cl_gui_container, + g_grid_right TYPE REF TO cl_gui_container. diff --git a/src/zcmr0001top.prog.xml b/src/zcmr0001top.prog.xml new file mode 100644 index 0000000..ac8742f --- /dev/null +++ b/src/zcmr0001top.prog.xml @@ -0,0 +1,20 @@ + + + + + + ZCMR0001TOP + I + 3 + X + + + + R + Include ZCMR0001TOP + 19 + + + + + diff --git a/src/zcmr0002.prog.abap b/src/zcmr0002.prog.abap new file mode 100644 index 0000000..08581da --- /dev/null +++ b/src/zcmr0002.prog.abap @@ -0,0 +1,61 @@ +*&---------------------------------------------------------------------* +*& 프로그램 ID : ZCMR0002 +*& 프로그램 명 : [CM] Common Code Define +*& 생성일 : 2025.05.20 +*& 생성자 : +*& 프로그램 설명 : Common Code Define +*&---------------------------------------------------------------------* +* Modification Log +*----------------------------------------------------------------------* +* Tag Date Author Description +*----------------------------------------------------------------------* +* N 2025.05.20 Initial Release +*----------------------------------------------------------------------* +*& 변경번호 : #1(CTS No) 변경자 : XXX 변경일자 : YYYY..MM.DD +*& 변경내용 : 간단한 설명,(상세내용은 변경부분에 주석처리) +*&---------------------------------------------------------------------* +REPORT zcmr0002 MESSAGE-ID zcmm01. + +INCLUDE zcmr0002c01. "ALV Class +INCLUDE zcmr0002top. "Top Include +INCLUDE zcmr0002s01. "Screen +INCLUDE zcmr0002pbo. "PBO-Modules +INCLUDE zcmr0002pai. "PAI-Modules +INCLUDE zcmr0002f01. "Business FORM Routine + + +*----------------------------------------------------------------------* +* AT SELECTION-SCREEN +*----------------------------------------------------------------------* +*AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_MODULE-LOW. +* PERFORM SELECT_MODULE USING MODULE. +* S_MODULE-LOW = MODULE. + +*----------------------------------------------------------------------* +* INITIALIZATION +*----------------------------------------------------------------------* +INITIALIZATION. + PERFORM SCRFIELDS_FUNCTXT. + +*----------------------------------------------------------------------* +AT SELECTION-SCREEN. +*----------------------------------------------------------------------* + CASE SSCRFIELDS-UCOMM. + WHEN 'FC01'. + PERFORM SCR_USER_COMMAND. "Module Code Management + ENDCASE. + +*----------------------------------------------------------------------* +* START-OF-SELECTION +*----------------------------------------------------------------------* +START-OF-SELECTION. + PERFORM GET_TITLE. +* PERFORM CHECK_PARAM. + PERFORM GET_DATA. + PERFORM MAKE_DATA. + +*----------------------------------------------------------------------* +* END-OF-SELECTION +*----------------------------------------------------------------------* +END-OF-SELECTION. + CALL SCREEN 100. diff --git a/src/zcmr0002.prog.xml b/src/zcmr0002.prog.xml new file mode 100644 index 0000000..b8adf98 --- /dev/null +++ b/src/zcmr0002.prog.xml @@ -0,0 +1,1349 @@ + + + + + + ZCMR0002 + 1 + 3 + X + X + + + +
+ ZCMR0002 + 0100 + 3 + Common Code Define Screen + N + 0100 + 200 + 255 +
+ + + SCREEN + SCREEN + + + CUST_CTRL + CONT1 + SCREEN + 001 + 001 + 101 + 031 + X + X + 010 + 010 + + + TABLE_CTRL + TC_FLD + SCREEN + 017 + 104 + 066 + 015 + X + X + ENTRY + X + X + X + X + X + NONE + NONE + + + + + SCREEN + SCREEN + PUSH + %#AUTOTEXT001 + Create_ + ICON_CREATE + X + 001 + 105 + 012 + 009 + 001 + NEW + CHAR + N + + + SCREEN + SCREEN + PUSH + %#AUTOTEXT043 + Save__ + ICON_SYSTEM_SAVE + X + 001 + 116 + 011 + 009 + 001 + SAVE + CHAR + N + + + SCREEN + SCREEN + PUSH + %#AUTOTEXT002 + Delete_ + ICON_DELETE + X + 001 + 127 + 012 + 010 + 001 + DEL + CHAR + N + + + SCREEN + SCREEN + FRAME + %#AUTOTEXT041 + _________________________________________________________________ + 002 + 104 + 066 + 066 + 005 + CHAR + N + + + SCREEN + SCREEN + TEXT + %#AUTOTEXT053 + Module + 003 + 105 + 006 + 006 + 001 + CHAR + N + X + + + SCREEN + SCREEN + TEMPLATE + GS_DATA-ZMODULE + __ + 003 + 112 + 002 + 002 + 001 + GR1 + CHAR + X + X + ZCMH_ZMODULE + + + SCREEN + SCREEN + TEMPLATE + GS_DATA-MODULE_T + ____________________ + 003 + 115 + 020 + 020 + 001 + CHAR + X + X + N + + + SCREEN + SCREEN + TEXT + %#AUTOTEXT004 + Class + 004 + 105 + 005 + 005 + 001 + CHAR + N + X + + + SCREEN + SCREEN + TEMPLATE + GS_DATA-ZCLASS + ______ + 004 + 112 + 006 + 006 + 001 + GR1 + CHAR + X + X + + + SCREEN + SCREEN + TEMPLATE + GS_DATA-ZCLSS_DESC + _________________________________________________ + 004 + 119 + 049 + 049 + 001 + GR2 + CHAR + X + X + X + + + SCREEN + SCREEN + TEXT + %#AUTOTEXT052 + Using_Program + 005 + 105 + 013 + 013 + 001 + CHAR + N + X + + + SCREEN + SCREEN + TEMPLATE + GS_DATA-ZPRGNAME + _________________________________________________ + 005 + 119 + 049 + 049 + 001 + CHAR + X + X + X + + + SCREEN + SCREEN + FRAME + %#AUTOTEXT005 + Key_Field__________ + 007 + 104 + 020 + 020 + 010 + CHAR + N + + + SCREEN + SCREEN + FRAME + %#AUTOTEXT006 + Key_Field_Name______________________________ + 007 + 125 + 045 + 045 + 010 + CHAR + N + + + SCREEN + SCREEN + TEXT + %#AUTOTEXT042 + Key_1(13)__ + 008 + 106 + 011 + 011 + 001 + CHAR + N + + + SCREEN + SCREEN + CHECK + NO_MEANS + 008 + 121 + 001 + 001 + 001 + GR2 + CHAR + X + N + + + SCREEN + SCREEN + TEXT + %#AUTOTEXT008 + Key_1 + 008 + 127 + 005 + 005 + 001 + CHAR + N + X + + + SCREEN + SCREEN + TEMPLATE + GS_DATA-ZCD1_DESC + ______________________________ + 008 + 134 + 030 + 030 + 001 + GR3 + CHAR + X + X + X + + + SCREEN + SCREEN + TEXT + %#AUTOTEXT007 + Key_2(13)__ + 009 + 106 + 011 + 011 + 001 + CHAR + N + + + SCREEN + SCREEN + CHECK + GS_DATA-ZCODE2_OX + 009 + 121 + 001 + 001 + 001 + GR2 + CHAR + X + X + + + SCREEN + SCREEN + TEXT + %#AUTOTEXT010 + Key_2 + 009 + 127 + 005 + 005 + 001 + CHAR + N + X + + + SCREEN + SCREEN + TEMPLATE + GS_DATA-ZCD2_DESC + ______________________________ + 009 + 134 + 030 + 030 + 001 + GR3 + CHAR + X + X + X + + + SCREEN + SCREEN + TEXT + %#AUTOTEXT009 + Key_3(13)__ + 010 + 106 + 011 + 011 + 001 + CHAR + N + + + SCREEN + SCREEN + CHECK + GS_DATA-ZCODE3_OX + 010 + 121 + 001 + 001 + 001 + GR2 + CHAR + X + X + + + SCREEN + SCREEN + TEXT + %#AUTOTEXT012 + Key_3 + 010 + 127 + 005 + 005 + 001 + CHAR + N + X + + + SCREEN + SCREEN + TEMPLATE + GS_DATA-ZCD3_DESC + ______________________________ + 010 + 134 + 030 + 030 + 001 + GR3 + CHAR + X + X + X + + + SCREEN + SCREEN + TEXT + %#AUTOTEXT011 + Key_4(13)__ + 011 + 106 + 011 + 011 + 001 + CHAR + N + + + SCREEN + SCREEN + CHECK + GS_DATA-ZCODE4_OX + 011 + 121 + 001 + 001 + 001 + GR2 + CHAR + X + X + + + SCREEN + SCREEN + TEXT + %#AUTOTEXT013 + Key_4 + 011 + 127 + 005 + 005 + 001 + CHAR + N + X + + + SCREEN + SCREEN + TEMPLATE + GS_DATA-ZCD4_DESC + ______________________________ + 011 + 134 + 030 + 030 + 001 + GR3 + CHAR + X + X + X + + + SCREEN + SCREEN + TEXT + %#AUTOTEXT044 + Key_5(13)__ + 012 + 106 + 011 + 011 + 001 + CHAR + N + + + SCREEN + SCREEN + CHECK + GS_DATA-ZCODE5_OX + 012 + 121 + 001 + 001 + 001 + GR2 + CHAR + X + X + + + SCREEN + SCREEN + TEXT + %#AUTOTEXT048 + Key_5 + 012 + 127 + 005 + 005 + 001 + CHAR + N + + + SCREEN + SCREEN + TEMPLATE + GS_DATA-ZCD5_DESC + ______________________________ + 012 + 134 + 030 + 030 + 001 + GR3 + CHAR + X + X + X + + + SCREEN + SCREEN + TEXT + %#AUTOTEXT045 + Key_6(13)__ + 013 + 106 + 011 + 011 + 001 + CHAR + N + + + SCREEN + SCREEN + CHECK + GS_DATA-ZCODE6_OX + 013 + 121 + 001 + 001 + 001 + GR2 + CHAR + X + X + + + SCREEN + SCREEN + TEXT + %#AUTOTEXT049 + Key_6 + 013 + 127 + 005 + 005 + 001 + CHAR + N + + + SCREEN + SCREEN + TEMPLATE + GS_DATA-ZCD6_DESC + ______________________________ + 013 + 134 + 030 + 030 + 001 + GR3 + CHAR + X + X + X + + + SCREEN + SCREEN + TEXT + %#AUTOTEXT046 + Key_7(13)__ + 014 + 106 + 011 + 011 + 001 + CHAR + N + + + SCREEN + SCREEN + CHECK + GS_DATA-ZCODE7_OX + 014 + 121 + 001 + 001 + 001 + GR2 + CHAR + X + X + + + SCREEN + SCREEN + TEXT + %#AUTOTEXT050 + Key_7 + 014 + 127 + 005 + 005 + 001 + CHAR + N + + + SCREEN + SCREEN + TEMPLATE + GS_DATA-ZCD7_DESC + ______________________________ + 014 + 134 + 030 + 030 + 001 + GR3 + CHAR + X + X + X + + + SCREEN + SCREEN + TEXT + %#AUTOTEXT047 + Key_8(18)__ + 015 + 106 + 011 + 011 + 001 + CHAR + N + + + SCREEN + SCREEN + CHECK + GS_DATA-ZCODE8_OX + 015 + 121 + 001 + 001 + 001 + GR2 + CHAR + X + X + + + SCREEN + SCREEN + TEXT + %#AUTOTEXT051 + Key_8 + 015 + 127 + 005 + 005 + 001 + CHAR + N + + + SCREEN + SCREEN + TEMPLATE + GS_DATA-ZCD8_DESC + ______________________________ + 015 + 134 + 030 + 030 + 001 + GR3 + CHAR + X + X + X + + + SCREEN + SCREEN + OKCODE + GV_OKCODE + ____________________ + 020 + 020 + 001 + CHAR + X + + + TABLE_CTRL + TC_FLD + TEXT + %#AUTOTEXT035 + Field + 001 + 005 + 065 + 001 + CHAR + N + X + + + TABLE_CTRL + TC_FLD + TEXT + %#AUTOTEXT036 + Field + 001 + 001 + 005 + 009 + 001 + CHAR + N + X + + + TABLE_CTRL + TC_FLD + TEXT + %#AUTOTEXT037 + Type + 001 + 002 + 004 + 010 + 001 + CHAR + N + X + + + TABLE_CTRL + TC_FLD + TEXT + %#AUTOTEXT040 + Use + 001 + 003 + 003 + 004 + 001 + CHAR + N + X + + + TABLE_CTRL + TC_FLD + TEXT + %#AUTOTEXT039 + Filed_Name + 001 + 004 + 010 + 002 + 001 + CHAR + N + X + + + TABLE_CTRL + TC_FLD + TEMPLATE + GT_FLD-TXT1 + ______ + 001 + 001 + 006 + 009 + 001 + CHAR + X + X + N + + + TABLE_CTRL + TC_FLD + TEMPLATE + GT_FLD-TXT2 + __________ + 001 + 002 + 010 + 010 + 001 + CHAR + X + X + N + + + TABLE_CTRL + TC_FLD + CHECK + GT_FLD-OX + 001 + 003 + 001 + 008 + 001 + GR4 + CHAR + X + X + + + TABLE_CTRL + TC_FLD + TEMPLATE + GT_FLD-DESC + ______________________________ + 001 + 004 + 030 + 030 + 001 + GR4 + CHAR + X + X + X + + + + + PROCESS BEFORE OUTPUT. + + + MODULE STATUS_0100. + + + MODULE SET_SCREEN. + + + MODULE CREATE_ALV_0100. + + + + LOOP WITH CONTROL TC_FLD. + + + MODULE GET_FLD_DATA. + + + ENDLOOP. + + + + MODULE SET_CURSOR. + + + + PROCESS AFTER INPUT. + + + MODULE EXIT AT EXIT-COMMAND. + + + + FIELD GS_DATA-ZMODULE MODULE CHECK_ZMODULE ON REQUEST. + + + + CHAIN. + + + FIELD : GS_DATA-ZMODULE, GS_DATA-ZCLASS MODULE CHECK_KEY + + + ON CHAIN-REQUEST. + + + ENDCHAIN. + + + + LOOP WITH CONTROL TC_FLD. + + + MODULE MODIFY_FLD. + + + ENDLOOP. + + + + MODULE USER_COMMAND_0100. + + + + *PROCESS ON VALUE-REQUEST. + + + * FIELD GS_DATA-ZMODULE MODULE GET_MODULE_TEXT. + + +
+
+ + + 000001 + 000001 + + + + 100 + D + 000001 + 000001 + 0001 + ZCMR0002 + + + + + BACK + 001 + S + Back + + + CANC + 001 + S + ICON_CANCEL + @0W@ + Cancel + + + EXIT + 001 + E + S + Exit + + + SAVE + 001 + S + ICON_SYSTEM_SAVE + @2L@ + Save + + + + + 000001 + 03 + BACK + 001 + + + 000001 + 11 + SAVE + 001 + + + 000001 + 12 + CANC + 001 + + + 000001 + 15 + EXIT + 001 + + + + + 100 + BACK + + + 100 + CANC + + + 100 + EXIT + + + 100 + SAVE + + + + + A + 000001 + D + Common Code Define + + + P + 000001 + D + Common Code Define + + + B + 000001 + 0001 + D + Common Code Define + + + + + 100 + & + + + + + + I + E01 + Not found data + 17 + + + I + E02 + Exist Duplicated Data. + 44 + + + I + E03 + Save Fail + 19 + + + I + E04 + Delete Fail + 21 + + + I + E05 + Check Module Field + 28 + + + I + E06 + Check Module Field + 28 + + + I + E07 + Module and Class do not match. + 60 + + + I + F01 + Module + 16 + + + I + F02 + Class + 15 + + + I + F03 + Class Name + 20 + + + I + F04 + Changed by + 20 + + + I + F05 + Changed on + 20 + + + I + F06 + Changed at + 20 + + + I + F07 + Using Program + 23 + + + I + M01 + Progressing.... + 25 + + + I + M02 + Progressing.... + 25 + + + I + M03 + Not Exitst Module + 27 + + + I + M04 + Already Exist Class Name. + 50 + + + I + M05 + Save Complete + 23 + + + I + M06 + This module can't delete + 46 + + + I + M07 + Delete Complete + 25 + + + I + Q01 + There is data being generated. Would you want to exit? + 108 + + + I + Q02 + Delete Data + 21 + + + I + SB1 + % + 11 + + + I + T01 + Field + 10 + + + I + T02 + Char + 14 + + + I + T03 + Num + 13 + + + I + T04 + Dec. + 17 + + + I + T11 + Confirm + 13 + + + I + T12 + Yes + 12 + + + I + T13 + No + 12 + + + I + T21 + Fill out all required entry fields + 68 + + + I + T22 + Common Code + 21 + + + I + T23 + Common Class + 22 + + + I + T24 + Common Code Define + 28 + + + I + T25 + Module unavailable. Check again + 64 + + + I + U01 + Module Code Management + 44 + + + R + Common Code Define + 18 + + + S + S_MODULE + . + 14 + D + + +
+
+
diff --git a/src/zcmr0002c01.prog.abap b/src/zcmr0002c01.prog.abap new file mode 100644 index 0000000..ec37a4d --- /dev/null +++ b/src/zcmr0002c01.prog.abap @@ -0,0 +1,120 @@ +*&---------------------------------------------------------------------* +*& Include ZCMR0002C01 +*&---------------------------------------------------------------------* +CLASS LCL_EVENT_RECEIVER DEFINITION DEFERRED. + +DATA G_EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER. + +*----------------------------------------------------------------------* +* CLASS LCL_EVENT_HANDLER DEFINITION +*----------------------------------------------------------------------* +CLASS LCL_EVENT_RECEIVER DEFINITION. + PUBLIC SECTION. + + METHODS: + HANDLE_DATA_CHANGED + FOR EVENT DATA_CHANGED OF CL_GUI_ALV_GRID + IMPORTING ER_DATA_CHANGED + E_ONF4_AFTER, + + HANDLE_USER_COMMAND + FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID + IMPORTING E_UCOMM, + + HANDLE_TOOLBAR + FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID + IMPORTING E_OBJECT + E_INTERACTIVE, + + HANDLE_MENU_BUTTON + FOR EVENT MENU_BUTTON OF CL_GUI_ALV_GRID + IMPORTING E_OBJECT + E_UCOMM, + + HANDLE_ONF4 + FOR EVENT ONF4 OF CL_GUI_ALV_GRID + IMPORTING E_FIELDNAME + E_FIELDVALUE + ES_ROW_NO + ER_EVENT_DATA + ET_BAD_CELLS + E_DISPLAY, + + HANDLE_CHANGED_FINISHED + FOR EVENT DATA_CHANGED_FINISHED OF CL_GUI_ALV_GRID + IMPORTING E_MODIFIED, + + HANDLE_DOUBLE_CLICK + FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID + IMPORTING E_ROW + E_COLUMN + ES_ROW_NO, + + HANDLE_HOTSPOT_CLICK + FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID + IMPORTING E_ROW_ID + E_COLUMN_ID + ES_ROW_NO, + + HANDLE_TOP_OF_PAGE + FOR EVENT TOP_OF_PAGE OF CL_GUI_ALV_GRID + IMPORTING E_DYNDOC_ID. + + PRIVATE SECTION. + +ENDCLASS. + +*----------------------------------------------------------------------* +* CLASS LCL_EVENT_HANDLER IMPLEMENTATION +*----------------------------------------------------------------------* +CLASS LCL_EVENT_RECEIVER IMPLEMENTATION. + METHOD HANDLE_DATA_CHANGED. +* PERFORM alv_data_changed USING er_data_changed +* e_onf4_after. + ENDMETHOD. "HANDLE_DATA_CHANGED + + METHOD HANDLE_USER_COMMAND. +* PERFORM alv_user_command USING e_ucomm. + ENDMETHOD. "HANDLE_USER_COMMAND + + METHOD HANDLE_TOOLBAR. +* PERFORM alv_event_toolbar USING e_object +* e_interactive. + ENDMETHOD. "HANDLE_TOOLBAR + + METHOD HANDLE_MENU_BUTTON. +* PERFORM alv_menu_button USING e_object +* e_ucomm. + ENDMETHOD. "HANDLE_MENU_BUTTON + + METHOD HANDLE_ONF4. + ER_EVENT_DATA->M_EVENT_HANDLED = 'x'. +* PERFORM alv_onf4 USING e_fieldname +* e_fieldvalue +* es_row_no +* er_event_data +* et_bad_cells +* e_display. + ENDMETHOD. "HANDLE_ONF4 + + METHOD HANDLE_CHANGED_FINISHED. +* PERFORM alv_changed_finished USING e_modified. + ENDMETHOD. "HANDLE_CHANGED_FINISHED + + METHOD HANDLE_DOUBLE_CLICK. + PERFORM ALV_DOUBLE_CLICK USING E_ROW + E_COLUMN + ES_ROW_NO. + ENDMETHOD. "HANDLE_DOUBLE_CLICK + + METHOD HANDLE_HOTSPOT_CLICK. + PERFORM ALV_HOTSPOT_CLICK USING E_ROW_ID + E_COLUMN_ID + ES_ROW_NO. + ENDMETHOD. "HANDLE_HOTSPOT_CLICK + + METHOD HANDLE_TOP_OF_PAGE. +* PERFORM top_of_page USING e_dyndoc_id. + ENDMETHOD. "HANDLE_TOP_OF_PAGE + +ENDCLASS. diff --git a/src/zcmr0002c01.prog.xml b/src/zcmr0002c01.prog.xml new file mode 100644 index 0000000..1c6a5e8 --- /dev/null +++ b/src/zcmr0002c01.prog.xml @@ -0,0 +1,25 @@ + + + + + + ZCMR0002C01 + I + E + X + + + + E + + + R + Include ZCMR0002C01 + 19 + + + + + + + diff --git a/src/zcmr0002f01.prog.abap b/src/zcmr0002f01.prog.abap new file mode 100644 index 0000000..95bcb98 --- /dev/null +++ b/src/zcmr0002f01.prog.abap @@ -0,0 +1,1163 @@ +*&---------------------------------------------------------------------* +*& Include ZCMR0002F01 +*&---------------------------------------------------------------------* + +*&---------------------------------------------------------------------* +*& Form GET_DATA +*&---------------------------------------------------------------------* +*& 조회 조건에 해당하는 공통코드 관리 데이터를 추출한다. +*&---------------------------------------------------------------------* +*& --> p1 text +*& <-- p2 text +*&---------------------------------------------------------------------* +FORM get_data. + + PERFORM progress_indicator USING 1 TEXT-m01. + + CLEAR : gt_zcmt0001, gt_zcmt0001[]. + +* 1. 공통 코드 관리 테이블 데이터 추출 + SELECT zmodule zclass zclss_desc zprgname "ZAUTHORITY + zcode2_ox zcode3_ox zcode4_ox zcode5_ox + zcode6_ox zcode7_ox zcode8_ox + zcd1_desc zcd2_desc zcd3_desc zcd4_desc + zcd5_desc zcd6_desc zcd7_desc zcd8_desc + zf01_ox zf01_desc zf02_ox zf02_desc + zf03_ox zf03_desc zf04_ox zf04_desc + zf05_ox zf05_desc zf06_ox zf06_desc + zf07_ox zf07_desc zf08_ox zf08_desc + zf09_ox zf09_desc zf10_ox zf10_desc + zf11_ox zf11_desc zf12_ox zf12_desc + zf13_ox zf13_desc zf14_ox zf14_desc + zf15_ox zf15_desc zf16_ox zf16_desc + zf17_ox zf17_desc + ernam erdat erzet + aenam aedat aezet + FROM zcmt0001 + INTO CORRESPONDING FIELDS OF TABLE gt_zcmt0001 + WHERE spras = sy-langu + AND zmodule IN s_module. + + CHECK sy-subrc = 0. + SORT gt_zcmt0001 BY zmodule zclass. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form PROGRESS_INDICATOR +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> P_1 +*& --> TEXT_M01 +*&---------------------------------------------------------------------* +FORM progress_indicator USING percentage + text. + + DATA : lv_no TYPE p, "For Calculation + lv_perc TYPE sy-index, + lv_text(255). + + CLEAR : lv_perc, lv_text. + IF percentage IS INITIAL. + CLEAR lv_no. + + IF gv_total = 0. + lv_no = sy-tabix / gv_total * 100. "현재 건/ 총 건수 X 100 + ENDIF. + + lv_perc = lv_no. + lv_text = lv_perc. + CONDENSE lv_text NO-GAPS. + CONCATENATE lv_text TEXT-sb1 text INTO lv_text SEPARATED BY space. + ELSE. + lv_perc = percentage. + lv_text = text. + ENDIF. + + CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + EXPORTING + percentage = lv_perc + text = lv_text. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form MAKE_DATA +*&---------------------------------------------------------------------* +*& 결과 화면의 ALV를 구성한다. +*&---------------------------------------------------------------------* +*& --> p1 text +*& <-- p2 text +*&---------------------------------------------------------------------* +FORM make_data. + +* 1. 화면 오른쪽 내용은 모두 clear함 +* 단, 필드 정의 테이블 구성 (데이터 없음) + CLEAR : gs_data, gs_data_old. + PERFORM make_fld_data USING 'N'. + +* 2. 모듈 텍스트 구하기 + CLEAR : gt_module_t, gt_module_t[]. + SELECT * + INTO TABLE @gt_module_t + FROM zcmt0003. + IF sy-subrc = 0. + SORT gt_module_t. + ENDIF. + +* 3. ALV 데이터 + CLEAR gv_total. + DESCRIBE TABLE gt_zcmt0001 LINES gv_total. + CHECK gv_total >= 1. + + CLEAR : gt_disp, gt_disp[]. + LOOP AT gt_zcmt0001. + MOVE-CORRESPONDING gt_zcmt0001 TO gt_disp. + APPEND gt_disp. + CLEAR : gt_disp, gt_zcmt0001. + ENDLOOP. + + CHECK NOT gt_disp[] IS INITIAL. + SORT gt_disp BY zmodule zclass. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form CHECK_DATA_CHANGED +*&---------------------------------------------------------------------* +*& 변경된 데이터 유무체크 +*&---------------------------------------------------------------------* +*& <-- GV_ERROR +*&---------------------------------------------------------------------* +FORM check_data_changed CHANGING o_result. + + DATA lv_ans TYPE n. + + CLEAR o_result. + + IF gs_data_old <> gs_data. + PERFORM popup_to_confirm USING TEXT-t11 + TEXT-q01 + TEXT-t12 + TEXT-t13 + space + CHANGING lv_ans. + + IF lv_ans <> '1'. + o_result = 'X'. + ENDIF. + ENDIF. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form POPUP_TO_CONFIRM +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> TEXT_T11 +*& --> TEXT_Q01 +*& --> TEXT_T12 +*& --> TEXT_T13 +*& <-- LV_ANS +*&---------------------------------------------------------------------* +FORM popup_to_confirm USING title question button1 button2 cancel + CHANGING o_ans. + + CLEAR o_ans. + + CALL FUNCTION 'POPUP_TO_CONFIRM' + EXPORTING + titlebar = title + text_question = question + text_button_1 = button1 + text_button_2 = button2 + default_button = '2' + display_cancel_button = cancel + IMPORTING + answer = o_ans + EXCEPTIONS + text_not_found = 1 + OTHERS = 2. + + IF sy-subrc <> 0. +* Implement suitable error handling here + ENDIF. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form DISPLAY_CLASS_DATA +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> LS_DISP +*&---------------------------------------------------------------------* +FORM display_class_data USING ps_disp STRUCTURE gt_disp + CHANGING o_result. + + DATA ls_0070 LIKE zcmt0001. + + CLEAR : ls_0070, o_result. + + SELECT SINGLE zmodule zclass zclss_desc zprgname "zauthority + zcode2_ox zcode3_ox zcode4_ox + zcode5_ox zcode6_ox zcode7_ox zcode8_ox + zcd1_desc zcd2_desc zcd3_desc zcd4_desc + zcd5_desc zcd6_desc zcd7_desc zcd8_desc + zf01_ox zf01_desc zf02_ox zf02_desc + zf03_ox zf03_desc zf04_ox zf04_desc + zf05_ox zf05_desc zf06_ox zf06_desc + zf07_ox zf07_desc zf08_ox zf08_desc + zf09_ox zf09_desc zf10_ox zf10_desc + zf11_ox zf11_desc zf12_ox zf12_desc + zf13_ox zf13_desc zf14_ox zf14_desc + zf15_ox zf15_desc zf16_ox zf16_desc + zf17_ox zf17_desc + ernam erdat erzet + aenam aedat aezet + FROM zcmt0001 + INTO CORRESPONDING FIELDS OF ls_0070 + WHERE spras = sy-langu + AND zmodule = ps_disp-zmodule + AND zclass = ps_disp-zclass. + + IF sy-subrc = 0. + CLEAR : gs_data, gs_data_old. + MOVE-CORRESPONDING ls_0070 TO gs_data. + gs_data-mode = 'X'. + gs_data_old = gs_data. + + PERFORM make_fld_data USING 'D'. + + CALL METHOD cl_gui_cfw=>set_new_ok_code + EXPORTING + new_code = 'REFRESH'. + ELSE. + o_result = 'X'. + MESSAGE s000 WITH TEXT-e01 DISPLAY LIKE 'E'. + EXIT. + ENDIF. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form MAKE_FLD_DATA +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> P_ +*& --> GS_DATA +*&---------------------------------------------------------------------* +FORM make_fld_data USING option. + + DATA : lv_index(2) TYPE n, + lv_fld_ox(15), + lv_fld_desc(17), + lv_intig TYPE i, + lv_length(10), + lv_decimals(10). + + FIELD-SYMBOLS : , . + + REFRESH gt_fld. + + SELECT fieldname, datatype, leng, decimals, domname + FROM dd03l + WHERE tabname = 'ZCMT0002' + AND fieldname LIKE 'ZCMF%' + AND substring( fieldname,5,2 ) >= '01' + AND substring( fieldname,5,2 ) <= '17' + ORDER BY position + INTO TABLE @DATA(lt_dd03l). + + DO 17 TIMES. + CLEAR : lv_fld_ox, lv_fld_desc, gt_fld. + lv_index = lv_index + 1. + + CONCATENATE TEXT-t01 lv_index INTO gt_fld-txt1 SEPARATED BY space. + + READ TABLE lt_dd03l INTO DATA(ls_dd03l) INDEX lv_index. + + IF sy-subrc NE 0. CLEAR ls_dd03l. ENDIF. + lv_intig = ls_dd03l-leng. + lv_length = lv_intig. CONDENSE lv_length. + + CASE ls_dd03l-datatype. + WHEN 'DEC' OR 'QUAN' OR 'CURR'. + lv_intig = ls_dd03l-decimals. + lv_decimals = lv_intig. CONDENSE lv_decimals. + CONCATENATE ls_dd03l-datatype '(' lv_length '.' lv_decimals ')' INTO gt_fld-txt2. + + WHEN OTHERS. + CONCATENATE ls_dd03l-datatype '(' lv_length ')' INTO gt_fld-txt2. + ENDCASE. + +* CASE lv_index. +* WHEN '7' OR '8'. +* gt_fld-txt2 = TEXT-t03. +* +* WHEN '9'. +* gt_fld-txt2 = TEXT-t04. +* +* WHEN OTHERS. +* gt_fld-txt2 = TEXT-t02. +* ENDCASE. + +* 신규(N)일땐 공란으로 처리하고, +* 조회(D)일때만 사용유무와 필드명 데이터를 표시함. + IF option = 'D'. "D: Display + CONCATENATE 'GS_DATA-ZF' lv_index '_OX' INTO lv_fld_ox. + ASSIGN (lv_fld_ox) TO . + + CONCATENATE 'GS_DATA-ZF' lv_index '_DESC' INTO lv_fld_desc. + ASSIGN (lv_fld_desc) TO . + + gt_fld-ox = . + gt_fld-desc = . + ENDIF. + + APPEND gt_fld. + ENDDO. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form CHECK_MODULE +*&---------------------------------------------------------------------* +*& 프로그램 실행 시 모듈을 선택한 경우와 그냥 조회한 경우에 따라 모듈명 설정을 한다. +*&---------------------------------------------------------------------* +*& --> p1 text +*& <-- p2 text +*&---------------------------------------------------------------------* +FORM check_module. + + DATA : lv_no(3) TYPE n, + lv_class LIKE zcmt0001-zclass. + + CLEAR s_module. + READ TABLE s_module INDEX 1. + CHECK NOT s_module-low IS INITIAL. +* 모듈을 선택하고 프로그램을 실행한 상태에서 신규 버튼을 클릭 시, +* 모듈은 자동으로 입력 + +* 모듈을 선택하지 않고 실행한 경우는 그냥 공란으로 표시 + + gs_data-zmodule = s_module-low. + +* 클래스는 해당 모듈의 최종 번호 + 1로 자동 채번한다. (필수값) + CLEAR : lv_no, lv_class. + SELECT SINGLE MAX( zclass ) FROM zcmt0001 + INTO lv_class + WHERE spras = sy-langu + AND zmodule IN s_module. + + IF lv_class IS INITIAL. + CONCATENATE s_module-low '001' INTO gs_data-zclass. + ELSE. + lv_no = lv_class+2(3). + lv_no = lv_no + 1. + + PERFORM conversion_exit_alpha_input USING lv_no + CHANGING lv_no. + + CONCATENATE lv_class(2) lv_no INTO gs_data-zclass. + ENDIF. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form CONVERSION_EXIT_ALPHA_INPUT +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> LV_NO +*& <-- LV_NO +*&---------------------------------------------------------------------* +FORM conversion_exit_alpha_input USING input + CHANGING output. + + CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' + EXPORTING + input = input + IMPORTING + output = output. + +ENDFORM. +*&---------------------------------------------------------------------* +*& Module MODIFY_FLD INPUT +*&---------------------------------------------------------------------* +* text +*----------------------------------------------------------------------* +MODULE modify_fld INPUT. + + DATA : lv_no TYPE n LENGTH 2, + lv_ox(18), + lv_desc(18). + + FIELD-SYMBOLS : , . + + MODIFY gt_fld INDEX tc_fld-current_line FROM gt_fld. + + CLEAR : lv_no, lv_ox, lv_desc. + lv_no = tc_fld-current_line. + CONCATENATE 'GS_DATA-ZF' lv_no '_OX' INTO lv_ox. + CONCATENATE 'GS_DATA-ZF' lv_no '_DESC' INTO lv_desc. + + ASSIGN (lv_ox) TO . + ASSIGN (lv_desc) TO . + + = gt_fld-ox. + = gt_fld-desc. + +ENDMODULE. + +*&---------------------------------------------------------------------* +*& Form CHECK_PK_DATA +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& <-- GV_ERROR +*&---------------------------------------------------------------------* +FORM check_pk_data USING option + CHANGING o_result. + +* 모듈 - 필수 항목 + IF gs_data-zmodule IS INITIAL. + o_result = 'X'. + MESSAGE s000 WITH TEXT-f01 TEXT-t21 DISPLAY LIKE 'E'. + EXIT. + ENDIF. + +* 클래스 - 필수 항목 + IF gs_data-zclass IS INITIAL. + o_result = 'X'. + MESSAGE s000 WITH TEXT-f02 TEXT-t21 DISPLAY LIKE 'E'. + EXIT. + ENDIF. + + IF option = 'S'. "S: Save +* 클래스명 - 필수 항목 + IF gs_data-zclss_desc IS INITIAL. + o_result = 'X'. + MESSAGE s000 WITH TEXT-f03 TEXT-t21 DISPLAY LIKE 'E'. + EXIT. + ENDIF. + +* 모듈은 도메인에 등록된 건만 입력 가능 + IF s_module[] IS INITIAL. + READ TABLE gt_module_t WITH KEY zmodule = gs_data-zmodule + BINARY SEARCH. + IF sy-subrc <> 0. + o_result = 'X'. + MESSAGE s000 WITH TEXT-e05 DISPLAY LIKE 'E'. + EXIT. + ENDIF. + ELSE. + IF gs_data-zmodule NOT IN s_module. + o_result = 'X'. + MESSAGE s000 WITH TEXT-e06 DISPLAY LIKE 'E'. + EXIT. + ENDIF. + ENDIF. + +* 모듈 = 클래스 앞 2자리는 동일해야 함 + IF gs_data-zmodule <> gs_data-zclass(2). + o_result = 'X'. + MESSAGE s000 WITH TEXT-e07 DISPLAY LIKE 'E'. + EXIT. + ENDIF. + ENDIF. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form CHECK_PK_DUPLICATE +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& <-- G_ERROR +*&---------------------------------------------------------------------* +FORM check_pk_duplicate CHANGING o_result. + + DATA : BEGIN OF ls_0070_pk OCCURS 10, + zmodule LIKE zcmt0001-zmodule, + zclass LIKE zcmt0001-zclass, + END OF ls_0070_pk. + + CLEAR : ls_0070_pk, o_result. + + SELECT SINGLE zmodule zclass FROM zcmt0001 + INTO ls_0070_pk + WHERE spras = sy-langu + AND zmodule = gs_data-zmodule + AND zclass = gs_data-zclass. + + IF sy-subrc = 0. + o_result = 'X'. + MESSAGE s000 WITH TEXT-e02 DISPLAY LIKE 'E'. + EXIT. + ENDIF. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form SAVE_DATA +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& <-- GV_ERROR +*&---------------------------------------------------------------------* +FORM save_data USING option. + + DATA ls_save LIKE zcmt0001. + + CLEAR ls_save. + MOVE-CORRESPONDING gs_data TO ls_save. + ls_save-spras = sy-langu. + PERFORM move_gt_fld CHANGING ls_save. + +** TIme Stamp +* CALL FUNCTION 'ZCM_CBO_DATE_SINGLE' +* CHANGING +* c_data = ls_save. + + ls_save-aenam = sy-uname. + ls_save-aedat = sy-datum. + ls_save-aezet = sy-uzeit. + + CASE option. + WHEN 'X'. + UPDATE zcmt0001 FROM ls_save. + + WHEN OTHERS. + ls_save-ernam = sy-uname. + ls_save-erdat = sy-datum. + ls_save-erzet = sy-uzeit. + + INSERT zcmt0001 FROM ls_save. + ENDCASE. + + IF sy-subrc = 0. + COMMIT WORK. + MESSAGE s000 WITH TEXT-m05. "'저장완료'. + ELSE. + ROLLBACK WORK. + MESSAGE s000 WITH TEXT-e03 DISPLAY LIKE 'E'. + EXIT. + ENDIF. + + gs_data-ernam = ls_save-ernam. + gs_data-erdat = ls_save-erdat. + gs_data-erzet = ls_save-erzet. + gs_data-aenam = ls_save-aenam. + gs_data-aedat = ls_save-aedat. + gs_data-aezet = ls_save-aezet. + gs_data-mode = 'X'. + + CASE option. + WHEN 'X'. + PERFORM modify_alv_data USING 'U' gs_data. + + WHEN OTHERS. + PERFORM modify_alv_data USING 'I' gs_data. + ENDCASE. + + CLEAR gs_data_old. + MOVE-CORRESPONDING gs_data TO gs_data_old. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form MOVE_GT_FLD +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& <-- LS_SAVE +*&---------------------------------------------------------------------* +FORM move_gt_fld CHANGING ps_save STRUCTURE zcmt0001. + + DATA : lv_no TYPE n LENGTH 2, + lv_ox(15) TYPE c, + lv_desc(17) TYPE c. + FIELD-SYMBOLS : , . + + CLEAR : lv_no, lv_ox, lv_desc. + + LOOP AT gt_fld. + lv_no = lv_no + 1. + + CONCATENATE 'PS_SAVE-ZF' lv_no '_OX' INTO lv_ox. + CONCATENATE 'PS_SAVE-ZF' lv_no '_DESC' INTO lv_desc. + ASSIGN (lv_ox) TO . + ASSIGN (lv_desc) TO . + + = gt_fld-ox. + = gt_fld-desc. + + CLEAR gt_fld. + ENDLOOP. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form DELETE_DATA +*&---------------------------------------------------------------------* +*& 선택한 데이터를 DB table에서 삭제 +*&---------------------------------------------------------------------* +*& --> p1 text +*& <-- p2 text +*&---------------------------------------------------------------------* +FORM delete_data USING option. + + DATA ls_71 TYPE zcmt0002. + + IF gs_data-zmodule = 'CM' AND gs_data-zclass = 'CMART' AND sy-uname(1) <> 'C'. + MESSAGE s000 WITH TEXT-m06 DISPLAY LIKE 'E'. " '해당 클래스는 삭제 불가능 합니다.' + EXIT. + ENDIF. + + IF option = 'X'. "DB table에 존재하는 경우, + CLEAR : gv_error, ls_71. + SELECT SINGLE zmodule zclass FROM zcmt0002 + INTO CORRESPONDING FIELDS OF ls_71 + WHERE spras = sy-langu + AND zmodule = gs_data-zmodule + AND zclass = gs_data-zclass. + + IF ls_71-zmodule IS INITIAL. +* zcmt0001테이블에만 존재하고, 71번 테이블에는 데이터가 없는 경우 + PERFORM delete_db_data USING '70'. + ELSE. +* zcmt0001과 71번 2개의 테이블 모두에 데이터 존재하는 경우 +* 1. 상세 코드 내역 삭제 + PERFORM delete_db_data USING '71'. + +* 2. Class 데이터 삭제 + CHECK gv_error <> 'X'. + PERFORM delete_db_data USING '70'. + ENDIF. + ELSE. +* 아직 DB에 저장되지 않은 데이터의 경우, +* >> ALV리스트에서 삭제 함 + PERFORM modify_alv_data USING 'D' gs_data. + ENDIF. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form DELETE_DB_DATA +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> P_ +*& --> GS_DATA_ZMODULE +*& --> GS_DATA_ZCLASS +*&---------------------------------------------------------------------* +FORM delete_db_data USING tab_nm. + + DATA lv_text(100). + + CASE tab_nm. + WHEN '70'. + DELETE FROM zcmt0001 WHERE spras = sy-langu + AND zmodule = gs_data-zmodule + AND zclass = gs_data-zclass. + IF sy-subrc = 0. + COMMIT WORK. + MESSAGE s000 WITH TEXT-m07. "'삭제완료'. + + PERFORM modify_alv_data USING 'D' gs_data. + CLEAR : gs_data, gs_data_old. + + CLEAR : gt_fld-ox, gt_fld-desc. + MODIFY gt_fld TRANSPORTING ox desc WHERE ox NE space OR desc NE space. + ELSE. + ROLLBACK WORK. + + CLEAR lv_text. + CONCATENATE '(' TEXT-t23 ')' INTO lv_text. + MESSAGE s000 WITH TEXT-e04 lv_text DISPLAY LIKE 'E'. + EXIT. + ENDIF. + + WHEN '71'. + DELETE FROM zcmt0002 WHERE spras = sy-langu + AND zmodule = gs_data-zmodule + AND zclass = gs_data-zclass. + IF sy-subrc = 0. + COMMIT WORK. + + ELSE. + ROLLBACK WORK. + + gv_error = 'X'. + CLEAR lv_text. + CONCATENATE '(' TEXT-t22 ')' INTO lv_text. + MESSAGE s000 WITH TEXT-e04 lv_text DISPLAY LIKE 'E'. + EXIT. + ENDIF. + ENDCASE. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form MODIFY_ALV_DATA +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> P_ +*& --> GS_DATA +*&---------------------------------------------------------------------* +FORM modify_alv_data USING option + ps_data STRUCTURE gs_data. + + DATA ls_disp LIKE gt_disp. + + CASE option. + WHEN 'D'. + DELETE gt_disp WHERE zmodule = ps_data-zmodule + AND zclass = ps_data-zclass. + + WHEN 'I'. + CLEAR ls_disp. + MOVE-CORRESPONDING ps_data TO ls_disp. + APPEND ls_disp TO gt_disp. + SORT gt_disp BY zmodule zclass. + + WHEN 'U'. + CLEAR ls_disp. + MOVE-CORRESPONDING ps_data TO ls_disp. + MODIFY TABLE gt_disp FROM ls_disp. + ENDCASE. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form GET_MODULE_TEXT +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> GS_DATA_MODULE +*& <-- GS_DATA_MODULE_T +*&---------------------------------------------------------------------* +FORM get_module_text USING pv_module + CHANGING o_text. + + CLEAR : o_text, gt_module_t. + READ TABLE gt_module_t WITH KEY zmodule = pv_module + BINARY SEARCH. + + CHECK sy-subrc = 0. + o_text = gt_module_t-zmd_desc. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form SELECT_MODULE +*&---------------------------------------------------------------------* +FORM select_module USING p_module. + + SELECT domvalue_l, + ddtext + INTO TABLE @DATA(lt_ddtext) + FROM dd07t + WHERE domname = @c_module + AND ddlanguage = @sy-langu. + + DATA : lt_field LIKE STANDARD TABLE OF dfies INITIAL SIZE 0 WITH HEADER LINE. + CALL FUNCTION 'DDIF_FIELDINFO_GET' + EXPORTING + tabname = 'DD07T' + fieldname = 'DOMVALUE_L' + lfieldname = 'DOMVALUE_L' + IMPORTING + dfies_wa = lt_field. + +* LT_FIELD-SCRTEXT_S = '모듈'. +* LT_FIELD-SCRTEXT_M = '모듈'. +* LT_FIELD-SCRTEXT_L = '모듈'. +* LT_FIELD-REPTEXT = '모듈'. +* APPEND LT_FIELD. +* +* CALL FUNCTION 'DDIF_FIELDINFO_GET' +* EXPORTING +* TABNAME = 'DD07T' +* FIELDNAME = 'DDTEXT' +* LFIELDNAME = 'DDTEXT' +* IMPORTING +* DFIES_WA = LT_FIELD. +* +* LT_FIELD-SCRTEXT_S = '모듈'. +* LT_FIELD-SCRTEXT_M = '모듈'. +* LT_FIELD-SCRTEXT_L = '모듈'. +* LT_FIELD-REPTEXT = '모듈'. +* APPEND LT_FIELD. +* +* DATA : LT_MAP LIKE STANDARD TABLE OF DSELC INITIAL SIZE 0 WITH HEADER LINE. +* +* LT_MAP-FLDNAME = 'DOMVALUE_L'. +* APPEND LT_MAP. +* +* LT_MAP-FLDNAME = 'DDTEXT'. +* APPEND LT_MAP. + + CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST' + EXPORTING +* DDIC_STRUCTURE = ' ' + retfield = 'DOMVALUE_L' +* PVALKEY = ' ' + dynpprog = sy-cprog + dynpnr = sy-dynnr + dynprofield = 'S_MODULE' +* STEPL = 0 + window_title = 'MODULE' +* VALUE = ' ' + value_org = 'S' +* MULTIPLE_CHOICE = ' ' +* DISPLAY = ' ' +* CALLBACK_PROGRAM = ' ' +* CALLBACK_FORM = ' ' +* CALLBACK_METHOD = +* MARK_TAB = +* IMPORTING +* USER_RESET = + TABLES + value_tab = lt_ddtext + field_tab = lt_field + return_tab = gt_rtntab +* DYNPFLD_MAPPING = LT_MAP + EXCEPTIONS + parameter_error = 1 + no_values_found = 2 + OTHERS = 3. + + READ TABLE gt_rtntab INDEX 1. + + p_module = gt_rtntab-fieldval. + IF p_module IS INITIAL. + p_module = s_module-low . + ENDIF. + + IF sy-subrc <> 0. +* Implement suitable error handling here + ENDIF. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form CHECK_PARAM +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> p1 text +*& <-- p2 text +*&---------------------------------------------------------------------* +FORM check_param. + + SELECT domvalue_l, + ddtext + INTO TABLE @DATA(lt_ddtext) + FROM dd07t + WHERE domname = @c_module + AND ddlanguage = @sy-langu. + + READ TABLE lt_ddtext INTO DATA(ls_ddtext) WITH KEY domvalue_l = s_module-low. + + IF sy-subrc NE 0. +* MESSAGE S001 WITH '사용할 수 없는 모듈입니다 다시 확인해주세요' DISPLAY LIKE 'E'. + MESSAGE s001 WITH TEXT-t25 DISPLAY LIKE 'E'. + LEAVE TO LIST-PROCESSING. + LEAVE LIST-PROCESSING. + ENDIF. + +ENDFORM. +*&---------------------------------------------------------------------* +*& Form GET_TITLE +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> p1 text +*& <-- p2 text +*&---------------------------------------------------------------------* +FORM get_title. + + CLEAR : gv_module_desc. + +* SELECT DOMVALUE_L, DDTEXT FROM DD07T +* INTO TABLE @DATA(LT_DD07T) +* WHERE DOMNAME = @C_MODULE +* AND DDLANGUAGE = @SY-LANGU +* AND DOMVALUE_L IN @S_MODULE. + + SELECT * + INTO TABLE @DATA(lt_0030) + FROM zcmt0003 + WHERE zmodule IN @s_module. + + IF sy-subrc = 0 AND sy-dbcnt = 1. + READ TABLE lt_0030 INTO DATA(ls_0030) INDEX 1. + CONCATENATE '-' ls_0030-zmodule '(' INTO gv_module_desc SEPARATED BY space. + CONCATENATE gv_module_desc ls_0030-zmd_desc ')' INTO gv_module_desc. + + ELSE. + MESSAGE s001 WITH TEXT-t25 DISPLAY LIKE 'E'. + LEAVE TO LIST-PROCESSING. + LEAVE LIST-PROCESSING. +* READ TABLE LT_DD07T INTO DATA(LS_DD07T) INDEX 1. +* CONCATENATE '-' LS_DD07T-DOMVALUE_L '(' INTO GV_MODULE_DESC SEPARATED BY SPACE. +* CONCATENATE GV_MODULE_DESC LS_DD07T-DDTEXT ')' INTO GV_MODULE_DESC. + ENDIF. + +ENDFORM. +*&---------------------------------------------------------------------* +*& Form SET_FCAT +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> p1 text +*& <-- p2 text +*&---------------------------------------------------------------------* +FORM set_fcat. + + CLEAR gv_col_pos. + REFRESH gt_fcat. + + PERFORM field_setting USING : +* Field Text Just + 'ZMODULE' TEXT-f01 'C', + 'ZCLASS' TEXT-f02 'C', + 'ZCLSS_DESC' TEXT-f03 'L', + 'ZPRGNAME' TEXT-f07 'L', + 'AENAM' TEXT-f04 'C', + 'AEDAT' TEXT-f05 'C', + 'AEZET' TEXT-f06 'C'. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form FIELD_SETTING +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> P_ +*& --> TEXT_F01 +*& --> P_ +*&---------------------------------------------------------------------* +FORM field_setting USING field text just. + + DATA ls_fcat TYPE lvc_s_fcat. + + CLEAR ls_fcat. + gv_col_pos = gv_col_pos + 1. + + ls_fcat-col_pos = gv_col_pos. + ls_fcat-fieldname = field. + ls_fcat-scrtext_l = + ls_fcat-scrtext_m = + ls_fcat-scrtext_s = + ls_fcat-reptext = text. + ls_fcat-just = just. + + CASE ls_fcat-fieldname. + WHEN 'ZCLASS'. + ls_fcat-hotspot = 'X'. + ENDCASE. + + APPEND ls_fcat TO gt_fcat. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form SET_LAYOUT +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> p1 text +*& <-- p2 text +*&---------------------------------------------------------------------* +FORM set_layout. + + CLEAR : gs_variant, gs_layout. + gs_variant-report = sy-repid. + gs_variant-username = sy-uname. + gs_variant-handle = 1. + +* gs_layout-grid_title = 'ALV TITLE'. "Alv title +* gs_layout-smalltitle = 'X'. "Small title + gs_layout-cwidth_opt = 'A'. "Optimize field + gs_layout-zebra = 'X'. "Zebra line color +* gs_layout-no_rowmark = ' '. "Hide rowmark +* gs_layout-no_toolbar = 'X'. "Hide toolbar +* gs_layout-ctab_fname = 'COLOR'. "Cell color control field +* gs_layout-stylefname = 'CELLTAB'. "Cell edit control field +* gs_layout-excp_fname = 'ICON'. "Exception field + gs_layout-sel_mode = 'B'. "Alv selection mode +* 'A': Multiple Columns. Multiple Rows. Button Enable. Single Cell +* 'B': Multiple Columns. Single Rows. Button Disable. No Cell +* 'C': Multiple Columns. Multiple Rows. Button Disable. No Cell +* 'D': Multiple Columns. Multiple Rows. Button Enable. Multiple Cell + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form SET_EVENT_RECEIVER +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> p1 text +*& <-- p2 text +*&---------------------------------------------------------------------* +FORM set_event_receiver. + +* Event receiver 생성 및 활성화 + CREATE OBJECT g_event_receiver. +* SET HANDLER g_event_receiver->handle_data_changed FOR g_grid. +* SET HANDLER g_event_receiver->handle_user_command FOR g_grid. +* SET HANDLER g_event_receiver->handle_toolbar FOR g_grid. +* SET HANDLER g_event_receiver->handle_onf4 FOR g_grid. +* SET HANDLER g_event_receiver->handle_double_click FOR g_grid. + SET HANDLER g_event_receiver->handle_hotspot_click FOR g_grid. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form DISPLAY_GRID +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> p1 text +*& <-- p2 text +*&---------------------------------------------------------------------* +FORM display_grid. + + CALL METHOD g_grid->set_table_for_first_display + EXPORTING + is_layout = gs_layout + is_variant = gs_variant +* it_toolbar_excluding = gt_exclude + i_save = ' ' +* 'A' : USER별, 기본세팅 선택 가능 / 'U' : USER별 / ' ' 저장불가 + i_default = ' ' +* 'X' DEFAULT 변형 저장 가능 / ' 'DEFAULT 변형 저장 불가능 + CHANGING + it_fieldcatalog = gt_fcat[] + it_outtab = gt_disp[]. +* it_sort = gt_sort[]. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form REFRESH_ALV +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> p1 text +*& <-- p2 text +*&---------------------------------------------------------------------* +FORM refresh_alv. + + CLEAR gs_stbl. + gs_stbl-row = 'X'. + gs_stbl-col = 'X'. + + CALL METHOD g_grid->refresh_table_display + EXPORTING + is_stable = gs_stbl. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form ALV_DOUBLE_CLICK +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> E_ROW +*& --> E_COLUMN +*& --> ES_ROW_NO +*&---------------------------------------------------------------------* +FORM alv_double_click USING e_row_id TYPE lvc_s_row + e_column_id TYPE lvc_s_col + es_row_no TYPE lvc_s_roid. + + DATA ls_disp LIKE LINE OF gt_disp. + + CASE e_column_id-fieldname. + WHEN 'ZCLASS' OR 'ZCLSS_DESC'. + CLEAR ls_disp. + READ TABLE gt_disp INTO ls_disp INDEX es_row_no-row_id. + + IF NOT ls_disp-zclass IS INITIAL. + PERFORM check_data_changed CHANGING gv_error. + CHECK gv_error <> 'X'. + PERFORM display_class_data USING ls_disp + CHANGING gv_error. + ENDIF. + + WHEN OTHERS. + ENDCASE. + +ENDFORM. + +*&---------------------------------------------------------------------* +*& Form ALV_HOTSPOT_CLICK +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> E_ROW_ID +*& --> E_COLUMN_ID +*& --> ES_ROW_NO +*&---------------------------------------------------------------------* +FORM alv_hotspot_click USING e_row_id TYPE lvc_s_row + e_column_id TYPE lvc_s_col + es_row_no TYPE lvc_s_roid. + + DATA ls_disp LIKE LINE OF gt_disp. + + CASE e_column_id-fieldname. + WHEN 'ZCLASS'. + CLEAR ls_disp. + READ TABLE gt_disp INTO ls_disp INDEX es_row_no-row_id. + + IF NOT ls_disp-zclass IS INITIAL. + PERFORM check_data_changed CHANGING gv_error. + CHECK gv_error IS INITIAL. + PERFORM display_class_data USING ls_disp + CHANGING gv_error. + ENDIF. + + WHEN OTHERS. + ENDCASE. + +ENDFORM. +*&---------------------------------------------------------------------* +*& Form SCRFIELDS_FUNCTXT +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> p1 text +*& <-- p2 text +*&---------------------------------------------------------------------* +FORM scrfields_functxt . + + GS_FUNTXT-ICON_ID = ICON_IMPORT. + GS_FUNTXT-QUICKINFO = TEXT-U01. + GS_FUNTXT-ICON_TEXT = TEXT-U01. + + SSCRFIELDS-FUNCTXT_01 = GS_FUNTXT. + +ENDFORM. +*&---------------------------------------------------------------------* +*& Form SCR_USER_COMMAND +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> p1 text +*& <-- p2 text +*&---------------------------------------------------------------------* +FORM scr_user_command . + +call TRANSACTION 'zcmt0003'. + +ENDFORM. diff --git a/src/zcmr0002f01.prog.xml b/src/zcmr0002f01.prog.xml new file mode 100644 index 0000000..e327264 --- /dev/null +++ b/src/zcmr0002f01.prog.xml @@ -0,0 +1,25 @@ + + + + + + ZCMR0002F01 + I + E + X + + + + E + + + R + Include ZCMR0002F01 + 19 + + + + + + + diff --git a/src/zcmr0002pai.prog.abap b/src/zcmr0002pai.prog.abap new file mode 100644 index 0000000..cef78bd --- /dev/null +++ b/src/zcmr0002pai.prog.abap @@ -0,0 +1,169 @@ +*&---------------------------------------------------------------------* +*& Include ZCMR0002PAI +*&---------------------------------------------------------------------* +*&---------------------------------------------------------------------* +*& Module EXIT INPUT +*&---------------------------------------------------------------------* +* text +*----------------------------------------------------------------------* +MODULE exit INPUT. + + CHECK gv_OKCODE = 'EXIT'. + + PERFORM check_data_changed CHANGING gv_error. + CHECK gv_error IS INITIAL. + + LEAVE PROGRAM. + +ENDMODULE. + +*&---------------------------------------------------------------------* +*& Module USER_COMMAND_0100 INPUT +*&---------------------------------------------------------------------* +* text +*----------------------------------------------------------------------* +MODULE user_command_0100 INPUT. + + DATA lv_ans. + + GET CURSOR FIELD gv_field LINE gv_tcline. + + CLEAR gv_saveok. + gv_saveok = gv_okcode. + CLEAR gv_okcode. + + CASE gv_saveok. + WHEN 'BACK' OR 'CANC'. + PERFORM check_data_changed CHANGING gv_error. + CHECK gv_error IS INITIAL. + LEAVE TO SCREEN 0. + + WHEN 'NEW'. + PERFORM check_data_changed CHANGING gv_error. + CHECK gv_error IS INITIAL. + + CLEAR : gs_data, gs_data_old. + +* 모듈/ 클래스 값 설정 + PERFORM check_module. + +* 필드 정의 설정 + PERFORM make_fld_data USING 'N'. + + WHEN 'DEL'. + CLEAR gv_error. + +* 1. 필수 입력 항목 체크 + PERFORM check_pk_data USING 'D' + CHANGING gv_error. + +* 2. Popup + CHECK gv_error <> 'X'. + PERFORM popup_to_confirm USING TEXT-t11 + TEXT-q02 + TEXT-t12 + TEXT-t13 + space + CHANGING lv_ans. + + IF lv_ans = '1'. + PERFORM check_pk_duplicate CHANGING gv_error. + PERFORM delete_data USING gv_error. + ENDIF. + + WHEN 'SAVE'. + CLEAR gv_error. + +* 1. 필수 입력 항목 체크 + PERFORM check_pk_data USING 'S' + CHANGING gv_error. + +* 2. PK 중복값 체크 + CHECK gv_error <> 'X'. + PERFORM check_pk_duplicate CHANGING gv_error. + PERFORM save_data USING gv_error. + + WHEN OTHERS. + ENDCASE. + +ENDMODULE. + +*&---------------------------------------------------------------------* +*& Module GET_MODULE_TEXT INPUT +*&---------------------------------------------------------------------* +* text +*----------------------------------------------------------------------* +MODULE get_module_text INPUT. + + DATA lt_return LIKE TABLE OF ddshretval WITH HEADER LINE. + + CLEAR : lt_return, lt_return[]. + CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST' + EXPORTING + retfield = 'DOMVALUE_L' + dynpprog = sy-repid + dynpnr = sy-dynnr + value_org = 'S' " 'C' + TABLES + value_tab = gt_module_t + return_tab = lt_return + EXCEPTIONS + parameter_error = 1 + no_values_found = 2 + OTHERS = 3. + + IF NOT lt_return[] IS INITIAL. + CLEAR lt_return. + READ TABLE lt_return INDEX 1. + IF sy-subrc = 0. + gs_data-zmodule = lt_return-fieldval. + ENDIF. + ENDIF. + + PERFORM get_module_text USING gs_data-zmodule + CHANGING gs_data-module_t. + +ENDMODULE. + +*&---------------------------------------------------------------------* +*& Module CHECK_ZMODULE INPUT +*&---------------------------------------------------------------------* +* text +*----------------------------------------------------------------------* +MODULE check_zmodule INPUT. + + CLEAR gs_data-module_t. + + IF gs_data-zmodule IS NOT INITIAL. + + SELECT SINGLE zmd_desc + INTO gs_data-module_t + FROM zcmt0003 + WHERE zmodule = gs_data-zmodule. + + IF sy-subrc NE 0. + MESSAGE e000 WITH TEXT-m03. " '등록되지 않은 모듈입니다.'. + ENDIF. + ENDIF. + +ENDMODULE. + +*&---------------------------------------------------------------------* +*& Module CHECK_KEY INPUT +*&---------------------------------------------------------------------* +* text +*----------------------------------------------------------------------* +MODULE check_key INPUT. + + CHECK gs_data-zmodule IS NOT INITIAL AND gs_data-zclass IS NOT INITIAL. + + SELECT SINGLE mandt INTO @sy-mandt FROM zcmt0001 + WHERE spras = @sy-langu + AND zmodule = @gs_data-zmodule + AND zclass = @gs_data-zclass. + + IF sy-subrc = 0. + MESSAGE e000 WITH TEXT-m04. "'이미 등록된 클래스 입니다.'. + ENDIF. + +ENDMODULE. diff --git a/src/zcmr0002pai.prog.xml b/src/zcmr0002pai.prog.xml new file mode 100644 index 0000000..e2282df --- /dev/null +++ b/src/zcmr0002pai.prog.xml @@ -0,0 +1,25 @@ + + + + + + ZCMR0002PAI + I + E + X + + + + E + + + R + Include ZCMR0002PAI + 19 + + + + + + + diff --git a/src/zcmr0002pbo.prog.abap b/src/zcmr0002pbo.prog.abap new file mode 100644 index 0000000..e2ec3ca --- /dev/null +++ b/src/zcmr0002pbo.prog.abap @@ -0,0 +1,99 @@ +*&---------------------------------------------------------------------* +*& Include ZCMR0002PBO +*&---------------------------------------------------------------------* +*&---------------------------------------------------------------------* +*& Module STATUS_0100 OUTPUT +*&---------------------------------------------------------------------* +*& +*&---------------------------------------------------------------------* +MODULE STATUS_0100 OUTPUT. + + SET PF-STATUS '100'. + SET TITLEBAR '100' WITH GV_MODULE_DESC. + +ENDMODULE. + +*&---------------------------------------------------------------------* +*& Module SET_SCREEN OUTPUT +*&---------------------------------------------------------------------* +*& +*&---------------------------------------------------------------------* +MODULE SET_SCREEN OUTPUT. + + IF NO_MEANS IS INITIAL. + NO_MEANS = 'X'. + ENDIF. + + IF GS_DATA-ZMODULE IS INITIAL. + CLEAR GS_DATA-MODULE_T. + ELSE. + PERFORM GET_MODULE_TEXT USING GS_DATA-ZMODULE + CHANGING GS_DATA-MODULE_T. + ENDIF. + + IF GS_DATA_OLD-ZMODULE IS INITIAL. + CLEAR GS_DATA_OLD-MODULE_T. + ELSE. + PERFORM GET_MODULE_TEXT USING GS_DATA_OLD-ZMODULE + CHANGING GS_DATA_OLD-MODULE_T. + ENDIF. + + CHECK GS_DATA-MODE = 'X'. + LOOP AT SCREEN. + IF SCREEN-GROUP1 = 'GR1'. + SCREEN-INPUT = 0. + MODIFY SCREEN. + ENDIF. + ENDLOOP. + +ENDMODULE. + +*&---------------------------------------------------------------------* +*& Module CREATE_ALV_0100 OUTPUT +*&---------------------------------------------------------------------* +*& +*&---------------------------------------------------------------------* +MODULE CREATE_ALV_0100 OUTPUT. + + IF G_CUSTOM_CONTAINER IS INITIAL. + CREATE OBJECT G_CUSTOM_CONTAINER + EXPORTING + CONTAINER_NAME = 'CONT1'. + + CREATE OBJECT G_GRID + EXPORTING + I_PARENT = G_CUSTOM_CONTAINER + I_APPL_EVENTS = 'X'. "space + + PERFORM SET_FCAT. + PERFORM SET_LAYOUT. + PERFORM SET_EVENT_RECEIVER. + PERFORM DISPLAY_GRID. + ELSE. + PERFORM REFRESH_ALV . + ENDIF. + +ENDMODULE. + +*&---------------------------------------------------------------------* +*& Module GET_FLD_DATA OUTPUT +*&---------------------------------------------------------------------* +*& +*&---------------------------------------------------------------------* +MODULE GET_FLD_DATA OUTPUT. + + READ TABLE GT_FLD INDEX TC_FLD-CURRENT_LINE INTO GT_FLD. + TC_FLD-LINES = 17. + +ENDMODULE. + +*&---------------------------------------------------------------------* +*& Module SET_CURSOR OUTPUT +*&---------------------------------------------------------------------* +*& +*&---------------------------------------------------------------------* +MODULE SET_CURSOR OUTPUT. + + SET CURSOR FIELD GV_FIELD LINE GV_TCLINE. + +ENDMODULE. diff --git a/src/zcmr0002pbo.prog.xml b/src/zcmr0002pbo.prog.xml new file mode 100644 index 0000000..660b3ae --- /dev/null +++ b/src/zcmr0002pbo.prog.xml @@ -0,0 +1,25 @@ + + + + + + ZCMR0002PBO + I + E + X + + + + E + + + R + Include ZCMR0002PBO + 19 + + + + + + + diff --git a/src/zcmr0002s01.prog.abap b/src/zcmr0002s01.prog.abap new file mode 100644 index 0000000..d0c34fb --- /dev/null +++ b/src/zcmr0002s01.prog.abap @@ -0,0 +1,14 @@ +*&---------------------------------------------------------------------* +*& Include ZCMR0002S01 +*&---------------------------------------------------------------------* +*----------------------------------------------------------------------* +* SELECTION-SCREEN +*----------------------------------------------------------------------* +SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-B01. + SELECT-OPTIONS S_MODULE FOR ZCMT0002-ZMODULE NO-EXTENSION NO INTERVALS + "OBLIGATORY + MATCHCODE OBJECT zcmh_zmodule. +SELECTION-SCREEN END OF BLOCK B1. + + +SELECTION-SCREEN FUNCTION KEY 1. diff --git a/src/zcmr0002s01.prog.xml b/src/zcmr0002s01.prog.xml new file mode 100644 index 0000000..70d00c9 --- /dev/null +++ b/src/zcmr0002s01.prog.xml @@ -0,0 +1,25 @@ + + + + + + ZCMR0002S01 + I + E + X + + + + E + + + R + Include ZCMR0002S01 + 19 + + + + + + + diff --git a/src/zcmr0002top.prog.abap b/src/zcmr0002top.prog.abap new file mode 100644 index 0000000..5328105 --- /dev/null +++ b/src/zcmr0002top.prog.abap @@ -0,0 +1,97 @@ +*&---------------------------------------------------------------------* +*& Include ZCMR0002TOP +*&---------------------------------------------------------------------* + +*----------------------------------------------------------------------* +* Tables +*----------------------------------------------------------------------* +TABLES: zcmt0002, sscrfields. + +DATA: module(2), + no_means(1). + +*----------------------------------------------------------------------* +* Types +*----------------------------------------------------------------------* +TYPES : BEGIN OF ty_data. + INCLUDE STRUCTURE zcmt0001. +TYPES : module_t LIKE dd07t-ddtext, + mode, " X:수정 + END OF ty_data. + +*----------------------------------------------------------------------* +* Internal Table, Structure +*----------------------------------------------------------------------* + +DATA : gs_data TYPE ty_data, + gs_data_old TYPE ty_data, + + gt_zcmt0001 TYPE TABLE OF zcmt0001 WITH HEADER LINE. + +* ALV용 +DATA : BEGIN OF gt_disp OCCURS 0, + zmodule LIKE zcmt0001-zmodule, + zclass LIKE zcmt0001-zclass, + zclss_desc LIKE zcmt0001-zclss_desc, + zprgname LIKE zcmt0001-zprgname, + aenam LIKE zcmt0001-aenam, + aedat LIKE zcmt0001-aedat, + aezet LIKE zcmt0001-aezet, + END OF gt_disp. + +* 필드명 TC용 itab +DATA : BEGIN OF gt_fld OCCURS 0, + txt1(7), + txt2(15), + ox LIKE zcmt0001-zf01_ox, + desc LIKE zcmt0001-zf01_desc, + END OF gt_fld. + +* 모듈명 +DATA : gt_module_t LIKE zcmt0003 OCCURS 0 WITH HEADER LINE. + +DATA : gv_module_desc LIKE dd07t-ddtext, + gv_class LIKE zcmt0001-zclass, + gv_module LIKE zcmt0001-zmodule. + +CONTROLS tc_fld TYPE TABLEVIEW USING SCREEN 100. + +DATA: gs_funtxt TYPE smp_dyntxt. +*----------------------------------------------------------------------* +* Global Variable +*----------------------------------------------------------------------* +DATA : gv_total TYPE i, + gv_error, + gv_new, + gv_okcode TYPE sy-ucomm, + gv_saveok TYPE sy-ucomm, + gv_field(30), + gv_tcline TYPE i. + +*----------------------------------------------------------------------* +* Constants +*----------------------------------------------------------------------* +CONSTANTS c_module(15) TYPE c VALUE 'ZDMODULE'. + +*----------------------------------------------------------------------* +* Search Help +*----------------------------------------------------------------------* +DATA: gt_rtntab LIKE ddshretval OCCURS 0 WITH HEADER LINE, + gt_dynpread LIKE dynpread OCCURS 0 WITH HEADER LINE. + + +*&---------------------------------------------------------------------* +*& Include ZCMR1010ALV +*&---------------------------------------------------------------------* +DATA : g_custom_container TYPE REF TO cl_gui_custom_container, + g_grid TYPE REF TO cl_gui_alv_grid, + gs_variant TYPE disvariant, + gs_layout TYPE lvc_s_layo, + gv_col_pos TYPE i, + gt_fcat TYPE lvc_t_fcat, + gt_exclude TYPE ui_functions, + gt_sort TYPE lvc_t_sort, + gs_stbl TYPE lvc_s_stbl, + gv_valid TYPE c, + gt_rows TYPE lvc_t_row, + gt_fcode TYPE TABLE OF sy-ucomm. diff --git a/src/zcmr0002top.prog.xml b/src/zcmr0002top.prog.xml new file mode 100644 index 0000000..c27fe46 --- /dev/null +++ b/src/zcmr0002top.prog.xml @@ -0,0 +1,25 @@ + + + + + + ZCMR0002TOP + I + E + X + + + + E + + + R + Include ZCMR0002TOP + 19 + + + + + + + diff --git a/src/zcmt0001.tabl.xml b/src/zcmt0001.tabl.xml new file mode 100644 index 0000000..2907f27 --- /dev/null +++ b/src/zcmt0001.tabl.xml @@ -0,0 +1,536 @@ + + + + + + ZCMT0001 + TRANSP + X + X + X + A + 1 + + + ZCMT0001 + A + 3 + APPL0 + X + N + + + + MANDT + X + MANDT + 0 + X + E + + + SPRAS + X + SPRAS + 0 + X + D + E + X + + + ZMODULE + X + ZCME_MODULE + 0 + X + E + + + ZCLASS + X + ZCME_CLASS + 0 + X + E + + + ZCLSS_DESC + 0 + C + 000100 + CHAR + 000050 + CHAR + + + ZPRGNAME + 0 + C + 000100 + CHAR + 000050 + CHAR + + + ZCODE2_OX + 0 + C + 000002 + CHAR + 000001 + CHAR + + + ZCODE3_OX + 0 + C + 000002 + CHAR + 000001 + CHAR + + + ZCODE4_OX + 0 + C + 000002 + CHAR + 000001 + CHAR + + + ZCODE5_OX + 0 + C + 000002 + CHAR + 000001 + CHAR + + + ZCODE6_OX + 0 + C + 000002 + CHAR + 000001 + CHAR + + + ZCODE7_OX + 0 + C + 000002 + CHAR + 000001 + CHAR + + + ZCODE8_OX + 0 + C + 000002 + CHAR + 000001 + CHAR + + + ZCD1_DESC + 0 + C + 000060 + CHAR + 000030 + CHAR + + + ZCD2_DESC + 0 + C + 000060 + CHAR + 000030 + CHAR + + + ZCD3_DESC + 0 + C + 000060 + CHAR + 000030 + CHAR + + + ZCD4_DESC + 0 + C + 000060 + CHAR + 000030 + CHAR + + + ZCD5_DESC + 0 + C + 000060 + CHAR + 000030 + CHAR + + + ZCD6_DESC + 0 + C + 000060 + CHAR + 000030 + CHAR + + + ZCD7_DESC + 0 + C + 000060 + CHAR + 000030 + CHAR + + + ZCD8_DESC + 0 + C + 000060 + CHAR + 000030 + CHAR + + + ZF01_OX + 0 + C + 000002 + CHAR + 000001 + CHAR + + + ZF01_DESC + 0 + C + 000060 + CHAR + 000030 + CHAR + + + ZF02_OX + 0 + C + 000002 + CHAR + 000001 + CHAR + + + ZF02_DESC + 0 + C + 000060 + CHAR + 000030 + CHAR + + + ZF03_OX + 0 + C + 000002 + CHAR + 000001 + CHAR + + + ZF03_DESC + 0 + C + 000060 + CHAR + 000030 + CHAR + + + ZF04_OX + 0 + C + 000002 + CHAR + 000001 + CHAR + + + ZF04_DESC + 0 + C + 000060 + CHAR + 000030 + CHAR + + + ZF05_OX + 0 + C + 000002 + CHAR + 000001 + CHAR + + + ZF05_DESC + 0 + C + 000060 + CHAR + 000030 + CHAR + + + ZF06_OX + 0 + C + 000002 + CHAR + 000001 + CHAR + + + ZF06_DESC + 0 + C + 000060 + CHAR + 000030 + CHAR + + + ZF07_OX + 0 + C + 000002 + CHAR + 000001 + CHAR + + + ZF07_DESC + 0 + C + 000060 + CHAR + 000030 + CHAR + + + ZF08_OX + 0 + C + 000002 + CHAR + 000001 + CHAR + + + ZF08_DESC + 0 + C + 000060 + CHAR + 000030 + CHAR + + + ZF09_OX + 0 + C + 000002 + CHAR + 000001 + CHAR + + + ZF09_DESC + 0 + C + 000060 + CHAR + 000030 + CHAR + + + ZF10_OX + 0 + C + 000002 + CHAR + 000001 + CHAR + + + ZF10_DESC + 0 + C + 000060 + CHAR + 000030 + CHAR + + + ZF11_OX + 0 + C + 000002 + CHAR + 000001 + CHAR + + + ZF11_DESC + 0 + C + 000060 + CHAR + 000030 + CHAR + + + ZF12_OX + 0 + C + 000002 + CHAR + 000001 + CHAR + + + ZF12_DESC + 0 + C + 000060 + CHAR + 000030 + CHAR + + + ZF13_OX + 0 + C + 000002 + CHAR + 000001 + CHAR + + + ZF13_DESC + 0 + C + 000060 + CHAR + 000030 + CHAR + + + ZF14_OX + 0 + C + 000002 + CHAR + 000001 + CHAR + + + ZF14_DESC + 0 + C + 000060 + CHAR + 000030 + CHAR + + + ZF15_OX + 0 + C + 000002 + CHAR + 000001 + CHAR + + + ZF15_DESC + 0 + C + 000060 + CHAR + 000030 + CHAR + + + ZF16_OX + 0 + C + 000002 + CHAR + 000001 + CHAR + + + ZF16_DESC + 0 + C + 000060 + CHAR + 000030 + CHAR + + + ZF17_OX + 0 + C + 000002 + CHAR + 000001 + CHAR + + + ZF17_DESC + 0 + C + 000060 + CHAR + 000030 + CHAR + + + .INCLUDE + 0 + ZCMS0010 + S + log + S + + + + E + + + + E + [CM] 공통코드 클래스 관리 + + + + + diff --git a/src/zcmt0002.tabl.xml b/src/zcmt0002.tabl.xml new file mode 100644 index 0000000..b91a148 --- /dev/null +++ b/src/zcmt0002.tabl.xml @@ -0,0 +1,272 @@ + + + + + + ZCMT0002 + TRANSP + X + X + X + A + 1 + + + ZCMT0002 + A + 4 + APPL1 + X + N + + + + MANDT + X + MANDT + 0 + X + E + + + SPRAS + X + SPRAS + 0 + X + D + E + X + + + ZMODULE + X + ZCME_MODULE + 0 + X + E + + + ZCLASS + X + ZCME_CLASS + 0 + X + E + + + ZCM_CODE1 + X + ZCME_CODE + 0 + X + E + + + ZCM_CODE2 + X + ZCME_CODE + 0 + X + E + + + ZCM_CODE3 + X + ZCME_CODE + 0 + X + E + + + ZCM_CODE4 + X + ZCME_CODE + 0 + X + E + + + ZCM_CODE5 + X + ZCME_CODE + 0 + X + E + + + ZCM_CODE6 + X + ZCME_CODE + 0 + X + E + + + ZCM_CODE7 + X + ZCME_CODE + 0 + X + E + + + ZCM_CODE8 + X + ZCME_CODE + 0 + X + E + + + ZCMF01_CH + ZCME_CODE + 0 + E + + + ZCMF02_CH + ZCME_CODE + 0 + E + + + ZCMF03_CH + ZCME_CODE + 0 + E + + + ZCMF04_CH + ZCME_CODE + 0 + E + + + ZCMF05_CH + ZCME_CODE + 0 + E + + + ZCMF06_CH + ZCME_CODE + 0 + E + + + ZCMF07_CH + ZCME_CODE + 0 + E + + + ZCMF08_CH + ZCME_CODE + 0 + E + + + ZCMF09_CH + ZCME_CODE + 0 + E + + + ZCMF10_CH + CHAR200L + 0 + E + + + ZCMF11_QU + 0 + P + 000008 + ZCMT0002 + ZCMF12_UT + QUAN + 000015 + QUAN + + + ZCMF12_UT + MEINS + 0 + E + + + ZCMF13_CR + 0 + P + 000008 + ZCMT0002 + ZCMF14_CK + CURR + 000015 + 000002 + CURR + + + ZCMF14_CK + WAERS + 0 + E + + + ZCMF15_NM + 0 + N + 000040 + NUMC + 000020 + NUMC + + + ZCMF16_NM + 0 + N + 000040 + NUMC + 000020 + NUMC + + + ZCMF17_DC + 0 + P + 000007 + DEC + 000013 + DEC + + + ZSORT_KEY + 0 + C + 000006 + CHAR + 000003 + CHAR + + + .INCLUDE + 0 + ZCMS0010 + S + log + S + + + + E + + + + E + [CM] 공통코드 세부코드 + + + + + diff --git a/src/zcmt0003.tabl.xml b/src/zcmt0003.tabl.xml new file mode 100644 index 0000000..85f2d22 --- /dev/null +++ b/src/zcmt0003.tabl.xml @@ -0,0 +1,56 @@ + + + + + + ZCMT0003 + TRANSP + X + X + A + 1 + + + ZCMT0003 + A + 0 + APPL0 + N + + + + MANDT + X + MANDT + 0 + X + E + + + ZMODULE + X + ZCME_MODULE + 0 + X + E + + + ZMD_DESC + ZCME_MD_DESC + 0 + X + E + + + + E + + + + E + [CM] 모듈 정의 + + + + +