员工信息维护
************************************************************************
*?Program?Title:?員工信息維護
*
*?Created?by:maojian@sunny-china.com????????????????Date?:2012年5月14日
*
*?Description:?員工信息的維護
*?Module?name:?無
*?Type:?REPORT
*?Special?note:?None
**----------------------------------------------------------------------
*?Associated?program:?No?programs?are?associated
*-----------------------------------------------------------------------
*?Restriction:??No?restriction
*按鈕開發程序:RSTXICON
************************************************************************
REPORT??ZSTAFF_MAINTAIN?NO?STANDARD?PAGE?HEADING.
*----------------------------------------------------------------------*
*?TABLE?DECLARATION
*----------------------------------------------------------------------*
TABLES?:?ZSTAFF,
?????????SSCRFIELDS.
TYPE-POOLS:SLIS.
TYPE-POOLS?VRM.
INCLUDE?<ICON>.
*&---------------------------------------------------------------------*
*?STRUCTURE?DECLARATION
*&---------------------------------------------------------------------*
TYPES?:?BEGIN?OF?T_STAFF.
????????INCLUDE?STRUCTURE?ZSTAFF.
TYPES?:??MARK?TYPE?C,
?????????TEXT?TYPE?CHAR10,
?????????ICON?TYPE?CHAR10,
?????????NAME?TYPE?CHAR20,
?????????BZ?TYPE?CHAR20.
TYPES?:?END?OF?T_STAFF.
*?Type?:?Download?content
TYPES?:?BEGIN?OF?T_DATA,
??????????F_01(40)??TYPE?C,
??????????F_02(40)??TYPE?C,
??????????F_03(40)??TYPE?C,
??????????F_04(40)??TYPE?C,
??????????F_05(40)??TYPE?C,
??????????F_06(40)??TYPE?C,
??????????F_07(40)??TYPE?C,
????????END?OF?T_DATA.
*&---------------------------------------------------------------------*
*?INTERNAL?TABLE?DECLARATION
*&---------------------------------------------------------------------*
DATA?:
??????I_LIST????????TYPE?VRM_VALUES,
??????ITAB_CATA_TK??TYPE?LVC_T_FCAT,
??????I_STAFF???????TYPE?STANDARD?TABLE?OF?T_STAFF,
??????I_UPLOAD??????TYPE?STANDARD?TABLE?OF?ZSTAFF.
*&---------------------------------------------------------------------*
*?WORK?AREA?DECLARATION
*&---------------------------------------------------------------------*
DATA?:
??????WA_LIST??LIKE?LINE?OF?I_LIST,
??????WA_STAFF?LIKE?LINE?OF?I_STAFF,
??????WA_UPLOAD?LIKE?LINE?OF?I_UPLOAD.
*&---------------------------------------------------------------------*
*?VARIANT?DECLARATION
*&---------------------------------------------------------------------*
DATA?:
*?功能代碼
??????OK_CODE?TYPE?SY-UCOMM,????????????????????????????????"9000
??????OK_CODE1?TYPE?SY-UCOMM,???????????????????????????????"9001
??????OK_CODE2?TYPE?SY-UCOMM,???????????????????????????????"9002
??????OK_CODE3?TYPE?SY-UCOMM,???????????????????????????????"9003
??????OK_CODE4?TYPE?SY-UCOMM,???????????????????????????????"9004
*?容器名稱
??????GV_CNAME?TYPE?SCRFNAME?VALUE?'CONTAINER',
*?容器對象
??????GV_CONTAINER?TYPE?REF?TO?CL_GUI_CUSTOM_CONTAINER,
*?ALV對象
??????GV_ALV?TYPE?REF?TO?CL_GUI_ALV_GRID,
*?ALV布局
??????GV_LAYOUT????TYPE?LVC_S_LAYO,
*?僅顯示標志
??????GV_FLAG?TYPE?C,
*?雙擊顯示標志
??????GV_DOUBLE?TYPE?C,
*?上傳文件路徑
??????GV_UPLOAD?TYPE?LOCALFILE,
*?下載到路徑名
??????GV_FILE?TYPE?LOCALFILE,
*?上傳到表格中
??????GV_TFLAG?TYPE?C,
*記錄數目
??????GV_NUM?TYPE?I.
*&---------------------------------------------------------------------*
*?Constant?DECLARATION
*&---------------------------------------------------------------------*
CONSTANTS:
*?File?type?for?open
???????????C_MASK(20)????TYPE?C?VALUE?',*.XLSX,*.XLSX.',
*?Mode?type
???????????C_MODE_O??????TYPE?C?VALUE?'O',
*?CSV?split
???????????C_SPLIT???????TYPE?C?VALUE?',',
*?Defult?fold
???????????C_FOLD(20)????TYPE?C?VALUE?'D:\',
*?Pop-up?box?name
???????????C_NAME(20)????TYPE?C?VALUE?'File?Select',
*?File?name
???????????C_FILE(20)????TYPE?C?VALUE?'Temp.xlsx'.
*----------------------------------------------------------------------*
*???????CLASS?lcl_event_handler?DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS?LCL_EVENT_HANDLER?DEFINITION?.
??PUBLIC?SECTION?.
????METHODS:
*??????Double-click?control
??????HANDLE_DOUBLE_CLICK
??????FOR?EVENT?DOUBLE_CLICK?OF?CL_GUI_ALV_GRID
??????IMPORTING?E_ROW?E_COLUMN.
ENDCLASS.????????????????????"lcl_event_handler?DEFINITION
*----------------------------------------------------------------------*
*???????CLASS?lcl_event_handler?IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS?LCL_EVENT_HANDLER?IMPLEMENTATION?.
*??Handle?Double?Click
??METHOD?HANDLE_DOUBLE_CLICK?.
????PERFORM?HANDLE_DOUBLE_CLICK?USING?E_ROW?E_COLUMN.
??ENDMETHOD?.????????????????????"handle_double_click
ENDCLASS?.????????????????????"lcl_event_handler?IMPLEMENTATION
DATA?:?GR_EVENT_HANDLER?TYPE?REF?TO?LCL_EVENT_HANDLER.
*&---------------------------------------------------------------------*
*?SELECTION?SCREEN?DECLARATION
*&---------------------------------------------------------------------*
*SELECTION-SCREEN?FUNCTION?KEY?1.
SELECTION-SCREEN?FUNCTION?KEY?2.
SELECTION-SCREEN?FUNCTION?KEY?3.
SELECTION-SCREEN?BEGIN?OF?BLOCK?B1?WITH?FRAME?TITLE?TEXT-B01.
SELECTION-SCREEN?BEGIN?OF?LINE.
SELECTION-SCREEN?POSITION?1.
PARAMETERS?:?P_R1?RADIOBUTTON?GROUP?G1?DEFAULT?'X'?USER-COMMAND?UC.
SELECTION-SCREEN?COMMENT?2(20)?TEXT-002??FOR?FIELD?P_R1.
SELECTION-SCREEN?POSITION?30.
PARAMETERS?:?P_R2?RADIOBUTTON?GROUP?G1.
SELECTION-SCREEN?COMMENT?31(20)?TEXT-003??FOR?FIELD?P_R2.
SELECTION-SCREEN?END?OF?LINE.
SELECTION-SCREEN?BEGIN?OF?LINE.
SELECTION-SCREEN?POSITION?1.
PARAMETERS?:?P_R3?RADIOBUTTON?GROUP?G1.
SELECTION-SCREEN?COMMENT?2(20)?TEXT-004??FOR?FIELD?P_R3.
SELECTION-SCREEN?POSITION?30.
PARAMETERS?:?P_R4?RADIOBUTTON?GROUP?G1.
SELECTION-SCREEN?COMMENT?31(20)?TEXT-005??FOR?FIELD?P_R4.
SELECTION-SCREEN?END?OF?LINE.
SELECTION-SCREEN?BEGIN?OF?LINE.
SELECTION-SCREEN?POSITION?1.
PARAMETERS?:?P_R5?RADIOBUTTON?GROUP?G1.
SELECTION-SCREEN?COMMENT?2(20)?TEXT-006??FOR?FIELD?P_R5.
SELECTION-SCREEN?POSITION?30.
PARAMETERS?:?P_R6?RADIOBUTTON?GROUP?G1.
SELECTION-SCREEN?COMMENT?31(20)?TEXT-007??FOR?FIELD?P_R6.
SELECTION-SCREEN?END?OF?LINE.
SELECTION-SCREEN?SKIP?1.
PARAMETERS?:?P_NUM?TYPE?ZSTAFF-ZNUM?.
SELECTION-SCREEN?SKIP?1.
SELECT-OPTIONS?:?S_DATE?FOR?ZSTAFF-EDATE?NO-EXTENSION?MODIF?ID?G1,
?????????????????S_DEPT?FOR?ZSTAFF-DEPT?NO-EXTENSION?MODIF?ID?G1,
?????????????????S_INPUT?FOR?ZSTAFF-ERDAT?NO-EXTENSION?MODIF?ID?G1.
SELECTION-SCREEN?SKIP?1.
PARAMETERS?:?P_CH?AS?CHECKBOX?DEFAULT?'X'?MODIF?ID?G1.
SELECTION-SCREEN?END?OF?BLOCK?B1.
SELECTION-SCREEN?COMMENT?1(82)?TEXT-030.
SELECTION-SCREEN?SKIP?1.
SELECTION-SCREEN?COMMENT?3(82)?TEXT-031.
SELECTION-SCREEN?SKIP?1.
SELECTION-SCREEN?COMMENT?1(82)?TEXT-032.
*&---------------------------------------------------------------------*
*?INITIALIZATION
*&---------------------------------------------------------------------*
INITIALIZATION.
??SSCRFIELDS-FUNCTXT_01?=?TEXT-021.
??SSCRFIELDS-FUNCTXT_02?=?TEXT-022.
??SSCRFIELDS-FUNCTXT_03?=?TEXT-033.
??CLEAR?:
????????GV_NUM,
????????GV_FLAG.
*&---------------------------------------------------------------------*
*?AT?SELECTION-SCREEN?OUTPUT
*&---------------------------------------------------------------------*
AT?SELECTION-SCREEN?OUTPUT.
??PERFORM?SET_SELECT_SCREEN.
*&---------------------------------------------------------------------*
*?AT?SELECTION-SCREEN
*&---------------------------------------------------------------------*
AT?SELECTION-SCREEN.
*??DATA?:?LV_TCODE?TYPE?TSTC-TCODE.
*??LV_TCODE?=?'ZPP125'.
*??CALL?FUNCTION?'AUTHORITY_CHECK_TCODE'
*????EXPORTING
*??????TCODE??=?LV_TCODE
*????EXCEPTIONS
*??????OK?????=?1
*??????NOT_OK?=?2
*??????OTHERS?=?3.
*??IF?SY-SUBRC?<>?1.
*????MESSAGE?TEXT-034?TYPE?'S'?DISPLAY?LIKE?'E'.
*????STOP.
*??ENDIF.
??PERFORM?FRM_CHECK_INPUT.
??IF?SSCRFIELDS-UCOMM?=?'FC01'.
????CALL?SCREEN?9003?STARTING?AT?20?10?ENDING?AT?90?16.
??ELSEIF?SSCRFIELDS-UCOMM?=?'FC02'.
????CALL?SCREEN?9004?STARTING?AT?20?10?ENDING?AT?90?16.
??ELSEIF?SSCRFIELDS-UCOMM?=?'FC03'.
????PERFORM?FRM_UPDATE_STAUTS.
??ENDIF.
*&---------------------------------------------------------------------*
*?START-OF-SELECTION
*&---------------------------------------------------------------------*
START-OF-SELECTION.
??IF?P_R1?=?'X'
????OR?P_R3?=?'X'
????OR?P_R4?=?'X'
????OR?P_R5?=?'X'
.
????IF?P_NUM?IS?INITIAL.
??????SET?CURSOR?FIELD?'P_NUM'.
??????MESSAGE?TEXT-009?TYPE?'S'?DISPLAY?LIKE?'E'.
??????EXIT.
????ENDIF.
????IF?STRLEN(?P_NUM?)?<?6.
??????SET?CURSOR?FIELD?'P_NUM'.
??????MESSAGE?TEXT-010?TYPE?'S'?DISPLAY?LIKE?'E'.
??????EXIT.
????ENDIF.
????IF?P_R1?=?'X'.?????"添加單條員工信息
??????SELECT?SINGLE?*
????????FROM?ZSTAFF
????????WHERE?ZNUM?=?P_NUM.
??????IF?SY-SUBRC?=?0.
????????SET?CURSOR?FIELD?'P_NUM'.
????????MESSAGE?TEXT-011?TYPE?'S'?DISPLAY?LIKE?'E'.
????????EXIT.
??????ENDIF.
??????CALL?SCREEN?9000.
????ENDIF.
????IF?P_R3?=?'X'?OR?P_R4?=?'X'.???"顯示單條員工信息
??????IF?P_R3?=?'X'.
????????GV_FLAG?=?''.
??????ELSE.
????????GV_FLAG?=?'X'.
??????ENDIF.
??????SELECT?SINGLE?*
????????FROM?ZSTAFF
????????INTO?ZSTAFF
????????WHERE?ZNUM?=?P_NUM.
??????IF?SY-SUBRC?<>?0.
????????SET?CURSOR?FIELD?'P_NUM'.
????????MESSAGE?TEXT-017?TYPE?'S'?DISPLAY?LIKE?'E'.
??????ELSE.
????????CALL?SCREEN?9000.
??????ENDIF.
????ENDIF.
????IF?P_R5?=?'X'.???"刪除單條員工信息
??????PERFORM?FRM_DEL_RECORD.
????ENDIF.
*??ELSEIF?P_R5?=?'X'.
*????PERFORM?FRM_DEL_RECORD.
??ELSEIF?P_R6?=?'X'.
????PERFORM?FRM_GET_DATA.
????IF?I_STAFF?IS?NOT?INITIAL.
??????CALL?SCREEN?9001.
????ELSE.
??????MESSAGE?TEXT-012?TYPE?'S'?DISPLAY?LIKE?'E'.
??????EXIT.
????ENDIF.
??ELSEIF?P_R2?=?'X'.
????CALL?SCREEN?9002.
??ENDIF.
*&---------------------------------------------------------------------*
*?END-OF-SELECTION
*&---------------------------------------------------------------------*
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*&??????Form??SET_SELECT_SCREEN
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?SET_SELECT_SCREEN?.
??LOOP?AT?SCREEN.
????IF?P_R1?=?'X'?OR?P_R3?=?'X'?OR?P_R4?=?'X'?OR?P_R5?=?'X'.
??????IF?SCREEN-GROUP1?=?'G1'.
????????SCREEN-INPUT?=?0.
??????ELSE.
????????SCREEN-INPUT?=?1.
??????ENDIF.
??????MODIFY?SCREEN.
????ELSEIF??P_R2?=?'X'.
??????IF?SCREEN-GROUP1?=?'G1'?OR?SCREEN-NAME?=?'P_NUM'.
????????SCREEN-INPUT?=?0.
??????ELSE.
????????SCREEN-INPUT?=?1.
??????ENDIF.
??????MODIFY?SCREEN.
????ENDIF.
??ENDLOOP.
ENDFORM.????????????????????"?SET_SELECT_SCREEN
*&---------------------------------------------------------------------*
*&??????Module??STATUS_9000??OUTPUT
*&---------------------------------------------------------------------*
*???????9000?PBO
*----------------------------------------------------------------------*
MODULE?STATUS_9000?OUTPUT.
??IF?P_R1?=?'X'.
????SET?PF-STATUS?'9000'.
????SET?TITLEBAR?'TITLE'?WITH?TEXT-002.
????LOOP?AT?SCREEN.
??????IF?SCREEN-GROUP1?=?'GP2'.
????????SCREEN-INPUT?=?0.
??????ENDIF.
??????MODIFY?SCREEN.
????ENDLOOP.
??ELSEIF?P_R3?=?'X'.
????SET?PF-STATUS?'9000'.
????SET?TITLEBAR?'TITLE'?WITH?TEXT-001.
??ELSEIF?P_R4?=?'X'.
????SET?PF-STATUS?'9000'?EXCLUDING?'SAVE'.
????SET?TITLEBAR?'TITLE'?WITH?TEXT-018.
??ENDIF.
*?set?the?initial?value
??PERFORM?FRM_SET_INITIAL.
*?set?the?list?value
??PERFORM?SET_LIST_VALUE.
ENDMODULE.?????????????????"?STATUS_9000??OUTPUT
*&---------------------------------------------------------------------*
*&??????Form??FRM_SET_INITIAL
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?FRM_SET_INITIAL?.
??IF?ZSTAFF-ZNUM?IS?INITIAL.
????ZSTAFF-ZNUM?=?P_NUM.
??ENDIF.
??LOOP?AT?SCREEN?.
????IF?P_R4?=?'X'?OR?GV_DOUBLE?=?'X'.
??????IF?SCREEN-GROUP1?=?'GP1'?OR?SCREEN-GROUP1?=?'GP2'?.
????????SCREEN-INPUT?=?0.
??????ELSE.
????????SCREEN-INPUT?=?1.
??????ENDIF.
??????MODIFY?SCREEN?.
????ENDIF.
??ENDLOOP.
ENDFORM.????????????????????"?FRM_SET_INITIAL
*&---------------------------------------------------------------------*
*&??????Module??USER_COMMAND_9000??INPUT
*&---------------------------------------------------------------------*
*???????9000?PAI
*----------------------------------------------------------------------*
MODULE?USER_COMMAND_9000?INPUT.
??CASE?OK_CODE.
*????WHEN?'BACK'?OR?'EXIT'.
*??????LEAVE?TO?SCREEN?0.
*????WHEN?'CANCEL'.
*??????LEAVE?PROGRAM.
????WHEN?'SAVE'.
??????PERFORM?FRM_SAVE_INFO.
????WHEN?OTHERS.
??ENDCASE.
??CLEAR?:?OK_CODE.
ENDMODULE.?????????????????"?USER_COMMAND_9000??INPUT
*&---------------------------------------------------------------------*
*&??????Form??SET_LIST_VALUE
*&---------------------------------------------------------------------*
*???????設置部門下拉框的值
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?SET_LIST_VALUE?.
??DATA:
????????LV_I_DOMTAB??TYPE?STANDARD?TABLE?OF?DD07V,
????????LV_WA_DOMTAB?TYPE?DD07V.
??IF?I_LIST?IS?INITIAL.
????CALL?FUNCTION?'DD_DOMVALUES_GET'
??????EXPORTING
????????DOMNAME??????????????=?'ZDEPT'
???????TEXT?????????????????=?'X'
???????LANGU????????????????=?SY-LANGU
*???BYPASS_BUFFER????????=?'?'
*?IMPORTING
*???RC???????????????????=
??????TABLES
????????DD07V_TAB????????????=?LV_I_DOMTAB
*?EXCEPTIONS
*???WRONG_TEXTFLAG???????=?1
*???OTHERS???????????????=?2
??????????????.
????IF?SY-SUBRC?=?0.
??????LOOP?AT?LV_I_DOMTAB?INTO?LV_WA_DOMTAB.
????????CLEAR?WA_LIST.
????????WA_LIST-KEY?=?LV_WA_DOMTAB-DOMVALUE_L.
????????WA_LIST-TEXT?=?LV_WA_DOMTAB-DDTEXT.
????????APPEND?WA_LIST?TO?I_LIST.
??????ENDLOOP.
????ENDIF.
??ENDIF.
??CALL?FUNCTION?'VRM_SET_VALUES'
????EXPORTING
??????ID????????????????????=?'ZSTAFF-DEPT'
??????VALUES????????????????=?I_LIST
*???EXCEPTIONS
*?????ID_ILLEGAL_NAME???????=?1
*?????OTHERS????????????????=?2
????????????.
??IF?SY-SUBRC?<>?0.
*?MESSAGE?ID?SY-MSGID?TYPE?SY-MSGTY?NUMBER?SY-MSGNO
*?????????WITH?SY-MSGV1?SY-MSGV2?SY-MSGV3?SY-MSGV4.
??ENDIF.
ENDFORM.????????????????????"?SET_LIST_VALUE
*&---------------------------------------------------------------------*
*&??????Form??FRM_CHECK_INPUT
*&---------------------------------------------------------------------*
*???????選擇屏幕校驗
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?FRM_CHECK_INPUT?.
*??IF?P_R1?=?'X'?OR?P_R3?=?'X'?OR?P_R4?=?'X'?OR?P_R5?=?'X'.
*????IF?P_NUM?IS?INITIAL.
*??????SET?CURSOR?FIELD?'P_NUM'.
*??????MESSAGE?TEXT-009?TYPE?'S'?DISPLAY?LIKE?'E'.
*??????GV_STATUS?=?'X'.
*??????EXIT.
*????ENDIF.
*
*????IF?STRLEN(?P_NUM?)?<?6.
*??????SET?CURSOR?FIELD?'P_NUM'.
*??????MESSAGE?TEXT-010?TYPE?'S'?DISPLAY?LIKE?'E'.
*??????GV_STATUS?=?'X'.
*??????EXIT.
*????ENDIF.
*
*????SELECT?SINGLE?*
*??????FROM?ZSTAFF
*??????WHERE?ZNUM?=?P_NUM.
*????IF?SY-SUBRC?=?0.
*??????SET?CURSOR?FIELD?'P_NUM'.
*??????MESSAGE?TEXT-011?TYPE?'S'?DISPLAY?LIKE?'E'.
*??????GV_STATUS?=?'X'.
*??????EXIT.
*????ENDIF.
*??ENDIF.
ENDFORM.????????????????????"?FRM_CHECK_INPUT
*&---------------------------------------------------------------------*
*&??????Module??EXIT??INPUT
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
MODULE?EXIT?INPUT.
??DATA?:?LV_RETURN?TYPE?C.??????????????????????????????????"#EC?*
??CLEAR?:?LV_RETURN.
*?Exit?the?screen
??IF?OK_CODE??=?'CANCEL'.
????IF?GV_FLAG?=?'X'.
??????LEAVE?PROGRAM.
????ELSE.
??????CALL?FUNCTION?'POPUP_TO_CONFIRM_STEP'?????????????????"#EC?*
???????EXPORTING
?????????DEFAULTOPTION??=?'Y'
?????????TEXTLINE1??????=?TEXT-I01
?????????TITEL??????????=?TEXT-I02
?????????CANCEL_DISPLAY?=?''
???????IMPORTING
?????????ANSWER?????????=?LV_RETURN.
??????IF?LV_RETURN?=?'J'.
????????LEAVE?PROGRAM.
??????ENDIF.
????ENDIF.
*?Back?to?the?previous?screen
??ELSEIF?OK_CODE?=?'BACK'?OR?OK_CODE?=?'EXIT'.
????IF?GV_FLAG?=?'X'.
??????LEAVE?TO?SCREEN?0.
????ELSE.
??????CALL?FUNCTION?'POPUP_TO_CONFIRM_STEP'?????????????????"#EC?*
????????EXPORTING
??????????DEFAULTOPTION??=?'Y'
??????????TEXTLINE1??????=?TEXT-I01
??????????TITEL??????????=?TEXT-I02
??????????CANCEL_DISPLAY?=?''
????????IMPORTING
??????????ANSWER?????????=?LV_RETURN.
??????IF?LV_RETURN?=?'J'.
????????LEAVE?TO?SCREEN?0.
??????ENDIF.
????ENDIF.
??ENDIF.
??CLEAR?:?OK_CODE.
ENDMODULE.?????????????????"?EXIT??INPUT
*&---------------------------------------------------------------------*
*&??????Module??INITIAL_CONTAINER??OUTPUT
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
MODULE?INITIAL_CONTAINER?OUTPUT.
??IF?GV_CONTAINER?IS?INITIAL.
????PERFORM?CREATE_ALV_CONTAINER.
??ENDIF.
??PERFORM?FRM_SET_ALV.
ENDMODULE.?????????????????"?INITIAL_CONTAINER??OUTPUT
*&---------------------------------------------------------------------*
*&??????Form??CREATE_ALV_CONTAINER
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?CREATE_ALV_CONTAINER?.
??IF?NOT?GV_CONTAINER?IS?INITIAL.
????CALL?METHOD?GV_CONTAINER->FREE
??????EXCEPTIONS
????????CNTL_SYSTEM_ERROR?=?1
????????CNTL_ERROR????????=?2.
*????IF?SY-SUBRC?<>?0.
*????ENDIF.
????CLEAR?GV_CONTAINER.
????CLEAR?GV_ALV.
??ENDIF.
??CREATE?OBJECT?GV_CONTAINER
????EXPORTING
??????CONTAINER_NAME??????????????=?GV_CNAME
????EXCEPTIONS
??????CNTL_ERROR??????????????????=?1
??????CNTL_SYSTEM_ERROR???????????=?2
??????CREATE_ERROR????????????????=?3
??????LIFETIME_ERROR??????????????=?4
??????LIFETIME_DYNPRO_DYNPRO_LINK?=?5.
ENDFORM.????????????????????"?CREATE_ALV_CONTAINER
*&---------------------------------------------------------------------*
*&??????Form??FRM_SET_ALV
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?FRM_SET_ALV?.
??IF?GV_ALV?IS?INITIAL.
????CREATE?OBJECT?GV_ALV
??????EXPORTING
????????I_PARENT??????????=?GV_CONTAINER
??????EXCEPTIONS
????????ERROR_CNTL_CREATE?=?1
????????ERROR_CNTL_INIT???=?2
????????ERROR_CNTL_LINK???=?3
????????ERROR_DP_CREATE???=?4.
????PERFORM?FRM_ALV_LIST.
*???display?alv
????CALL?METHOD?GV_ALV->SET_TABLE_FOR_FIRST_DISPLAY
??????EXPORTING
????????IS_LAYOUT?????????????????????=?GV_LAYOUT
??????CHANGING
????????IT_OUTTAB?????????????????????=?I_STAFF
????????IT_FIELDCATALOG???????????????=?ITAB_CATA_TK
??????EXCEPTIONS
????????INVALID_PARAMETER_COMBINATION?=?1
????????PROGRAM_ERROR?????????????????=?2
????????TOO_MANY_LINES????????????????=?3
????????OTHERS????????????????????????=?4.
*????--Creating?an?instance?for?the?event?handler
????CREATE?OBJECT?GR_EVENT_HANDLER?.
*????--Registering?handler?methods?to?handle?ALV?Grid?events
????SET?HANDLER?GR_EVENT_HANDLER->HANDLE_DOUBLE_CLICK?FOR?GV_ALV.
??ELSE.
*????PERFORM?FRM_REFRESH_DATA.
????CALL?METHOD?GV_ALV->REFRESH_TABLE_DISPLAY(?).
??ENDIF.
ENDFORM.????????????????????"?FRM_SET_ALV
*&---------------------------------------------------------------------*
*&??????Form??FRM_ALV_LIST
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?FRM_ALV_LIST?.
*?set?fieldcatalog
??PERFORM?FRM_SET_FIELDCAT.
*?set?layout
??PERFORM?FRM_SET_LAYOUT.
ENDFORM.????????????????????"?FRM_ALV_LIST
*&---------------------------------------------------------------------*
*&??????Form??FRM_SET_FIELDCAT
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?FRM_SET_FIELDCAT?.
??DATA:
??????LV_WA_FCAT?TYPE?LVC_S_FCAT.
??CLEAR?LV_WA_FCAT.
??LV_WA_FCAT-FIELDNAME?=?'ZNUM'.
??LV_WA_FCAT-COLTEXT?=?TEXT-H01.
??LV_WA_FCAT-OUTPUTLEN?=?10.
??APPEND?LV_WA_FCAT?TO?ITAB_CATA_TK.
??CLEAR?LV_WA_FCAT.
??LV_WA_FCAT-FIELDNAME?=?'ZNAME'.
??LV_WA_FCAT-COLTEXT?=?TEXT-H02.
??LV_WA_FCAT-OUTPUTLEN?=?10.
??APPEND?LV_WA_FCAT?TO?ITAB_CATA_TK.
??CLEAR?LV_WA_FCAT.
??LV_WA_FCAT-FIELDNAME?=?'ZPOST'.
??LV_WA_FCAT-COLTEXT?=?TEXT-H03.
??LV_WA_FCAT-OUTPUTLEN?=?15.
??APPEND?LV_WA_FCAT?TO?ITAB_CATA_TK.
??CLEAR?LV_WA_FCAT.
??LV_WA_FCAT-FIELDNAME?=?'EDATE'.
??LV_WA_FCAT-COLTEXT?=?TEXT-H04.
??LV_WA_FCAT-OUTPUTLEN?=?10.
??APPEND?LV_WA_FCAT?TO?ITAB_CATA_TK.
??CLEAR?LV_WA_FCAT.
??LV_WA_FCAT-FIELDNAME?=?'ZID'.
??LV_WA_FCAT-COLTEXT?=?TEXT-H05.
??LV_WA_FCAT-OUTPUTLEN?=?20.
??APPEND?LV_WA_FCAT?TO?ITAB_CATA_TK.
??CLEAR?LV_WA_FCAT.
??LV_WA_FCAT-FIELDNAME?=?'REMARK'.
??LV_WA_FCAT-COLTEXT?=?TEXT-H06.
??LV_WA_FCAT-OUTPUTLEN?=?25.
??LV_WA_FCAT-NO_OUT?=?'X'.
??APPEND?LV_WA_FCAT?TO?ITAB_CATA_TK.
??CLEAR?LV_WA_FCAT.
??LV_WA_FCAT-FIELDNAME?=?'NAME'.
??LV_WA_FCAT-COLTEXT?=?TEXT-H07.
??LV_WA_FCAT-OUTPUTLEN?=?15.
??APPEND?LV_WA_FCAT?TO?ITAB_CATA_TK.
??CLEAR?LV_WA_FCAT.
??LV_WA_FCAT-FIELDNAME?=?'BZ'.
??LV_WA_FCAT-COLTEXT?=?TEXT-H10.
??LV_WA_FCAT-OUTPUTLEN?=?10.
??APPEND?LV_WA_FCAT?TO?ITAB_CATA_TK.
??CLEAR?LV_WA_FCAT.
??LV_WA_FCAT-FIELDNAME?=?'ICON'.
??LV_WA_FCAT-COLTEXT?=?TEXT-H09.
??LV_WA_FCAT-OUTPUTLEN?=?4.
??LV_WA_FCAT-ICON?=?'X'.
??APPEND?LV_WA_FCAT?TO?ITAB_CATA_TK.
??CLEAR?LV_WA_FCAT.
??LV_WA_FCAT-FIELDNAME?=?'TEXT'.
??LV_WA_FCAT-COLTEXT?=?TEXT-H08.
??LV_WA_FCAT-OUTPUTLEN?=?8.
??APPEND?LV_WA_FCAT?TO?ITAB_CATA_TK.
ENDFORM.????????????????????"?FRM_SET_FIELDCAT
*&---------------------------------------------------------------------*
*&??????Form??FRM_SET_LAYOUT
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?FRM_SET_LAYOUT?.
??GV_LAYOUT-SEL_MODE?=?'D'.
??GV_LAYOUT-ZEBRA?=?'X'?.
*??GV_LAYOUT-CWIDTH_OPT?=?'X'.
ENDFORM.????????????????????"?FRM_SET_LAYOUT
*&---------------------------------------------------------------------*
*&??????Form??FRM_GET_DATA
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?FRM_GET_DATA?.
??DATA:
????????LV_CHAR?TYPE?CHAR50,
????????LV_I_DOMTAB??TYPE?STANDARD?TABLE?OF?DD07V,
????????LV_WA_DOMTAB?TYPE?DD07V.
??CALL?FUNCTION?'DD_DOMVALUES_GET'
????EXPORTING
??????DOMNAME??????????????=?'ZDEPT'
?????TEXT?????????????????=?'X'
?????LANGU????????????????=?SY-LANGU
*???BYPASS_BUFFER????????=?'?'
*?IMPORTING
*???RC???????????????????=
????TABLES
??????DD07V_TAB????????????=?LV_I_DOMTAB
*?EXCEPTIONS
*???WRONG_TEXTFLAG???????=?1
*???OTHERS???????????????=?2
????????????.
??IF?SY-SUBRC?=?0.
????LOOP?AT?LV_I_DOMTAB?INTO?LV_WA_DOMTAB.
??????CLEAR?WA_LIST.
??????WA_LIST-KEY?=?LV_WA_DOMTAB-DOMVALUE_L.
??????WA_LIST-TEXT?=?LV_WA_DOMTAB-DDTEXT.
??????APPEND?WA_LIST?TO?I_LIST.
????ENDLOOP.
??ENDIF.
??IF?P_NUM?IS?NOT?INITIAL.
????IF?P_CH?=?'X'.
??????SELECT?*
????????FROM?ZSTAFF
????????INTO?CORRESPONDING?FIELDS?OF?TABLE?I_STAFF
????????WHERE?EDATE?IN?S_DATE
??????????AND?DEPT?IN?S_DEPT
??????????AND?ERDAT?IN?S_INPUT
??????????AND?ZNUM?=?P_NUM
??????????AND?STATUS?=?''.
????ELSE.
??????SELECT?*
????????FROM?ZSTAFF
????????INTO?CORRESPONDING?FIELDS?OF?TABLE?I_STAFF
????????WHERE?EDATE?IN?S_DATE
??????????AND?DEPT?IN?S_DEPT
??????????AND?ERDAT?IN?S_INPUT
??????????AND?ZNUM?=?P_NUM.
????ENDIF.
??ELSE.
????IF?P_CH?=?'X'.
??????SELECT?*
????????FROM?ZSTAFF
????????INTO?CORRESPONDING?FIELDS?OF?TABLE?I_STAFF
????????WHERE?EDATE?IN?S_DATE
??????????AND?DEPT?IN?S_DEPT
??????????AND?ERDAT?IN?S_INPUT
??????????AND?STATUS?=?''.
????ELSE.
??????SELECT?*
????????FROM?ZSTAFF
????????INTO?CORRESPONDING?FIELDS?OF?TABLE?I_STAFF
????????WHERE?EDATE?IN?S_DATE
??????????AND?DEPT?IN?S_DEPT
??????????AND?ERDAT?IN?S_INPUT.
????ENDIF.
??ENDIF.
??LOOP?AT?I_STAFF?INTO?WA_STAFF.
????CLEAR?LV_CHAR.
????READ?TABLE?LV_I_DOMTAB?INTO?LV_WA_DOMTAB
??????WITH?KEY?DOMVALUE_L?=?WA_STAFF-DEPT.
????IF?SY-SUBRC?=?0.
??????WA_STAFF-NAME?=?LV_WA_DOMTAB-DDTEXT.
????ENDIF.
????IF?WA_STAFF-STATUS?=?''.
??????WA_STAFF-TEXT?=?TEXT-S01.
??????WA_STAFF-ICON?=?ICON_LED_GREEN.
????ELSE.
??????WA_STAFF-TEXT?=?TEXT-S02.
??????WA_STAFF-ICON?=?ICON_LED_RED.
????ENDIF.
????IF?WA_STAFF-LEADER?=?'X'.
??????WA_STAFF-BZ?=?TEXT-S03.
????ELSE.
??????WA_STAFF-BZ?=?''.
????ENDIF.
????MODIFY?I_STAFF?FROM?WA_STAFF.
??ENDLOOP.
??DESCRIBE?TABLE?I_STAFF?LINES?GV_NUM.
ENDFORM.????????????????????"?FRM_GET_DATA
*&---------------------------------------------------------------------*
*&??????Module??STATUS_9001??OUTPUT
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
MODULE?STATUS_9001?OUTPUT.
??SET?PF-STATUS?'9001'.
??IF?P_CH?=?'X'.
????SET?TITLEBAR?'TITLE'?WITH?TEXT-007?'-'?'已激活'.
??ELSE.
????SET?TITLEBAR?'TITLE'?WITH?TEXT-007?'-'?'全部'.
??ENDIF.
ENDMODULE.?????????????????"?STATUS_9001??OUTPUT
*&---------------------------------------------------------------------*
*&??????Module??USER_COMMAND_9001??INPUT
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
MODULE?USER_COMMAND_9001?INPUT.
??DATA?:
?????????LT_ROW?TYPE??LVC_T_ROID,???????????????????????????"#EC?*
?????????LS_ROW?TYPE??LVC_S_ROID.???????????????????????????"#EC?*
??CASE?OK_CODE1.
????WHEN?'BACK'?OR?'EXIT'.
??????LEAVE?TO?SCREEN?0.
????WHEN?'CANCEL'.
??????LEAVE?PROGRAM.
????WHEN?'DELALL'.
??????PERFORM?FRM_DEL_SEL.
????WHEN?OTHERS.
??ENDCASE.
??CLEAR?:?OK_CODE1.
ENDMODULE.?????????????????"?USER_COMMAND_9001??INPUT
*&---------------------------------------------------------------------*
*&??????Form??FRM_DEL_RECORD
*&---------------------------------------------------------------------*
*???????刪除記錄
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?FRM_DEL_RECORD?.
??DATA?:
??????LV_ANSWER?TYPE?C,
??????LV_CHAR01?TYPE?CHAR255,
??????LV_CHAR02?TYPE?CHAR255,
??????LV_CHAR03?TYPE?CHAR255.
??CLEAR?:?WA_STAFF.
??SELECT?SINGLE?*
????INTO?WA_STAFF
????FROM?ZSTAFF
????WHERE?ZNUM?=?P_NUM.
??IF?SY-SUBRC?=?0.
????CONCATENATE?TEXT-H02?':'?WA_STAFF-ZNAME
??????INTO?LV_CHAR01?SEPARATED?BY?SPACE.
????CONCATENATE?TEXT-H03?':'?WA_STAFF-ZPOST
??????INTO?LV_CHAR02?SEPARATED?BY?SPACE.
????CONCATENATE?TEXT-H04?':'?WA_STAFF-EDATE+0(4)?'年'
??????WA_STAFF-EDATE+4(2)?'月'?WA_STAFF-EDATE+6(2)?'日'
??????INTO?LV_CHAR03?SEPARATED?BY?SPACE.
??ELSE.
????MESSAGE?TEXT-017?TYPE?'S'?DISPLAY?LIKE?'E'.
????EXIT.
??ENDIF.
??CALL?FUNCTION?'POPUP_TO_CONFIRM_WITH_MESSAGE'???????????"#EC?FB_OLDED
??????EXPORTING
??????DEFAULTOPTION??=?'N'
????????TEXTLINE1??????=?TEXT-014
*?????TEXTLINE2??????=?'?'
????????DIAGNOSETEXT1??=?LV_CHAR01
????????DIAGNOSETEXT2??=?LV_CHAR02
????????DIAGNOSETEXT3??=?LV_CHAR03
????????TITEL??????????=?TEXT-015
*?????START_COLUMN???=?25
*?????START_ROW??????=?6
????????CANCEL_DISPLAY?=?''
??????IMPORTING
????????ANSWER?????????=?LV_ANSWER.
??CHECK?LV_ANSWER?=?'J'.
??DELETE?ZSTAFF?FROM?WA_STAFF.
??IF?SY-SUBRC?=?0.
????MESSAGE?TEXT-013?TYPE?'S'.
????COMMIT?WORK.
??ENDIF.
ENDFORM.????????????????????"?FRM_DEL_RECORD
*&---------------------------------------------------------------------*
*&??????Form??FRM_SAVE_INFO
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?FRM_SAVE_INFO?.
??CALL?FUNCTION?'ENQUEUE_EZSTAFF'
???EXPORTING
?????MODE_ZSTAFF??????????=?'E'
?????MANDT????????????????=?SY-MANDT
?????ZNUM?????????????????=?ZSTAFF-ZNUM
*?????X_ZNUM???????????????=?'?'
*?????_SCOPE???????????????=?'2'
*?????_WAIT????????????????=?'?'
*?????_COLLECT?????????????=?'?'
???EXCEPTIONS
?????FOREIGN_LOCK?????????=?1
?????SYSTEM_FAILURE???????=?2
?????OTHERS???????????????=?3
????????????.
??IF?SY-SUBRC?<>?0.
*?MESSAGE?ID?SY-MSGID?TYPE?SY-MSGTY?NUMBER?SY-MSGNO
*?????????WITH?SY-MSGV1?SY-MSGV2?SY-MSGV3?SY-MSGV4.
??ENDIF.
??IF?ZSTAFF?IS?NOT?INITIAL.
????ZSTAFF-ERDAT?=?SY-DATUM.
????ZSTAFF-UZEIT?=?SY-UZEIT.
????ZSTAFF-UNAME?=?SY-UNAME.
??ENDIF.
*??IF?GV_STATUS?=??''.
*????ZSTAFF-STATUS?=?''.
*??ELSE.
*????ZSTAFF-STATUS?=?'X'.
*??ENDIF.
??MODIFY?ZSTAFF?FROM?ZSTAFF.
??IF?SY-SUBRC?=?0.
????CALL?FUNCTION?'DEQUEUE_EZSTAFF'
?????EXPORTING
???????MODE_ZSTAFF???????=?'E'
???????MANDT?????????????=?SY-MANDT
???????ZNUM??????????????=?ZSTAFF-ZNUM
*???????X_ZNUM????????????=?'?'
*???????_SCOPE????????????=?'3'
*???????_SYNCHRON?????????=?'?'
*???????_COLLECT??????????=?'?'
??????????????.
????MESSAGE?TEXT-008?TYPE?'S'.
????COMMIT?WORK.
????LEAVE?TO?SCREEN?0.
??ELSE.
????CALL?FUNCTION?'DEQUEUE_EZSTAFF'
?????EXPORTING
???????MODE_ZSTAFF???????=?'E'
???????MANDT?????????????=?SY-MANDT
???????ZNUM??????????????=?ZSTAFF-ZNUM
*???????X_ZNUM????????????=?'?'
*???????_SCOPE????????????=?'3'
*???????_SYNCHRON?????????=?'?'
*???????_COLLECT??????????=?'?'
??????????????.
????MESSAGE?TEXT-019?TYPE?'I'.
????ROLLBACK?WORK.
????LEAVE?TO?SCREEN?0.
??ENDIF.
ENDFORM.????????????????????"?FRM_SAVE_INFO
*&---------------------------------------------------------------------*
*&??????Module??STATUS_9002??OUTPUT
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
MODULE?STATUS_9002?OUTPUT.
??SET?PF-STATUS?'9000'.
??SET?TITLEBAR?'TITLE'?WITH?TEXT-003.
??PERFORM?SET_LISTBOX_VALUE.
ENDMODULE.?????????????????"?STATUS_9002??OUTPUT
*&---------------------------------------------------------------------*
*&??????Module??USER_COMMAND_9002??INPUT
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
MODULE?USER_COMMAND_9002?INPUT.
??CASE?OK_CODE2.
????WHEN?'BACK'?OR?'EXIT'.
??????IF?I_STAFF?IS?NOT?INITIAL.
????????CALL?FUNCTION?'POPUP_TO_CONFIRM_STEP'???????????????"#EC?*
????????EXPORTING
??????????DEFAULTOPTION??=?'Y'
??????????TEXTLINE1??????=?TEXT-I01
??????????TITEL??????????=?TEXT-I02
??????????CANCEL_DISPLAY?=?''
????????IMPORTING
??????????ANSWER?????????=?LV_RETURN.
????????IF?LV_RETURN?=?'J'.
??????????LEAVE?TO?SCREEN?0.
????????ENDIF.
??????ELSE.
????????LEAVE?TO?SCREEN?0.
??????ENDIF.
????WHEN?'CANCEL'.
??????IF?I_STAFF?IS?NOT?INITIAL.
????????CALL?FUNCTION?'POPUP_TO_CONFIRM_STEP'???????????????"#EC?*
?????????EXPORTING
???????????DEFAULTOPTION??=?'Y'
???????????TEXTLINE1??????=?TEXT-I01
???????????TITEL??????????=?TEXT-I02
???????????CANCEL_DISPLAY?=?''
?????????IMPORTING
???????????ANSWER?????????=?LV_RETURN.
????????IF?LV_RETURN?=?'J'.
??????????LEAVE?PROGRAM.
????????ENDIF.
??????ELSE.
????????LEAVE?PROGRAM.
??????ENDIF.
????WHEN?'SAVE'.
*?批量保存
??????PERFORM?FRM_SAVE_RECORDS.
????WHEN?'UP'.
*?上傳至Table中
??????GV_TFLAG?=?'X'.
??????CALL?SCREEN?9004?STARTING?AT?20?10?ENDING?AT?90?16.
????WHEN?OTHERS.
??ENDCASE.
??CLEAR?:?OK_CODE2.
ENDMODULE.?????????????????"?USER_COMMAND_9002??INPUT
*&SPWizard:?Data?incl.?inserted?by?SP?Wizard.?DO?NOT?CHANGE?THIS?LINE!
INCLUDE?ZSTAFF_MAINTAIN_TBL?.
*&---------------------------------------------------------------------*
*&??????Form??FRM_SAVE_RECORDS
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?FRM_SAVE_RECORDS?.
??IF?I_STAFF?IS?NOT?INITIAL.
????INSERT?ZSTAFF?FROM?TABLE?I_STAFF?ACCEPTING?DUPLICATE?KEYS.
????IF?SY-SUBRC?=?0.
??????MESSAGE?TEXT-008?TYPE?'S'.
??????COMMIT?WORK.
??????LEAVE?TO?SCREEN?0.
????ELSE.
??????MESSAGE?TEXT-019?TYPE?'I'.
??????ROLLBACK?WORK.
??????LEAVE?TO?SCREEN?0.
????ENDIF.
??ELSE.
????MESSAGE?TEXT-020?TYPE?'I'.
??ENDIF.
ENDFORM.????????????????????"?FRM_SAVE_RECORDS
*&---------------------------------------------------------------------*
*&??????Form??SET_LISTBOX_VALUE
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?SET_LISTBOX_VALUE?.
??DATA:
??????????LV_I_DOMTAB??TYPE?STANDARD?TABLE?OF?DD07V,
??????????LV_WA_DOMTAB?TYPE?DD07V.
??IF?I_LIST?IS?INITIAL.
????CALL?FUNCTION?'DD_DOMVALUES_GET'
??????EXPORTING
????????DOMNAME??????????????=?'ZDEPT'
???????TEXT?????????????????=?'X'
???????LANGU????????????????=?SY-LANGU
*???BYPASS_BUFFER????????=?'?'
*?IMPORTING
*???RC???????????????????=
??????TABLES
????????DD07V_TAB????????????=?LV_I_DOMTAB
*?EXCEPTIONS
*???WRONG_TEXTFLAG???????=?1
*???OTHERS???????????????=?2
??????????????.
????IF?SY-SUBRC?=?0.
??????LOOP?AT?LV_I_DOMTAB?INTO?LV_WA_DOMTAB.
????????CLEAR?WA_LIST.
????????WA_LIST-KEY?=?LV_WA_DOMTAB-DOMVALUE_L.
????????WA_LIST-TEXT?=?LV_WA_DOMTAB-DDTEXT.
????????APPEND?WA_LIST?TO?I_LIST.
??????ENDLOOP.
????ENDIF.
??ENDIF.
??CALL?FUNCTION?'VRM_SET_VALUES'
????EXPORTING
??????ID????????????????????=?'WA_STAFF-DEPT'
??????VALUES????????????????=?I_LIST
*???EXCEPTIONS
*?????ID_ILLEGAL_NAME???????=?1
*?????OTHERS????????????????=?2
????????????.
??IF?SY-SUBRC?<>?0.
*?MESSAGE?ID?SY-MSGID?TYPE?SY-MSGTY?NUMBER?SY-MSGNO
*?????????WITH?SY-MSGV1?SY-MSGV2?SY-MSGV3?SY-MSGV4.
??ENDIF.
ENDFORM.????????????????????"?SET_LISTBOX_VALUE
*&---------------------------------------------------------------------*
*&??????Form??HANDLE_DOUBLE_CLICK
*&---------------------------------------------------------------------*
*???????Double?Click?method
*----------------------------------------------------------------------*
*??????-->P_E_ROW??text
*??????-->P_E_COLUMN??text
*----------------------------------------------------------------------*
FORM?HANDLE_DOUBLE_CLICK??USING?FU_ROW??FU_COLUMN.????????"#EC?*?"#EC?*
??READ?TABLE?I_STAFF?INTO?WA_STAFF?INDEX?FU_ROW.
??SELECT?SINGLE?*
????FROM?ZSTAFF
????INTO?ZSTAFF
????WHERE?ZNUM?=?WA_STAFF-ZNUM.
??GV_DOUBLE?=?'X'.
??GV_FLAG?=?'X'.
??CALL?SCREEN?9000.
ENDFORM.????????????????????"?HANDLE_DOUBLE_CLICK
*&---------------------------------------------------------------------*
*&??????Module??STATUS_9003??OUTPUT
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
MODULE?STATUS_9003?OUTPUT.
??SET?PF-STATUS?'9003'.
??SET?TITLEBAR?'TITLE'?WITH?TEXT-023.
ENDMODULE.?????????????????"?STATUS_9003??OUTPUT
*&---------------------------------------------------------------------*
*&??????Module??USER_COMMAND_9003??INPUT
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
MODULE?USER_COMMAND_9003?INPUT.
??CASE?OK_CODE3.
????WHEN?'CANCEL'?OR?'CANC'.
??????LEAVE?TO?SCREEN?0.
????WHEN?'DOWN'.
??????PERFORM?FRM_CHECK_FOLD.
??????PERFORM?FRM_DOWNLOAD_EXCEL.
????WHEN?OTHERS.
??ENDCASE.
??CLEAR?:?OK_CODE3.
ENDMODULE.?????????????????"?USER_COMMAND_9003??INPUT
*&---------------------------------------------------------------------*
*&??????Form??FRM_CHECK_FOLD
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?FRM_CHECK_FOLD?.
??DATA:
*?Return?value
????????LV_RETURN??????TYPE?C.
*?Check?file?path?for?downloading?valid
??CALL?FUNCTION?'WS_QUERY'
????EXPORTING
??????FILENAME?=?GV_FILE
??????QUERY????=?'DE'
????IMPORTING
??????RETURN???=?LV_RETURN
????EXCEPTIONS??????????????????????????????????????????????"#EC?*
??????OTHERS???=?1.
??IF?LV_RETURN?<>?'1'.
????SET?CURSOR?FIELD?'GV_FILE'.
????MESSAGE?TEXT-028?TYPE?'I'.
??ELSE.
????CONCATENATE?GV_FILE?C_FILE?INTO?GV_FILE.
??ENDIF.
ENDFORM.????????????????????"?FRM_CHECK_FOLD
*&---------------------------------------------------------------------*
*&??????Form??FRM_DOWNLOAD_EXCEL
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?FRM_DOWNLOAD_EXCEL?.
??DATA:
??????LV_STR????TYPE?CHAR255,
??????LV_RETURN?TYPE?I,
??????LV_RESULT?TYPE?C,
??????LV_FILENAME1?TYPE?STRING,
??????LV_FILENAME??TYPE?LOCALFILE,
??????I_DOWN_DATA??TYPE?STANDARD?TABLE?OF?T_DATA,
??????LV_WA_DATA???TYPE?T_DATA.
??LV_FILENAME?=?GV_FILE.
*?set?excel?head?name
??CLEAR?LV_WA_DATA.
??REFRESH?I_DOWN_DATA.
??LV_WA_DATA-F_01?=?TEXT-H01.
??LV_WA_DATA-F_02?=?TEXT-H02.
??LV_WA_DATA-F_03?=?TEXT-H03.
??LV_WA_DATA-F_04?=?TEXT-H04.
??LV_WA_DATA-F_05?=?TEXT-H05.
??LV_WA_DATA-F_06?=?TEXT-H06.
??LV_WA_DATA-F_07?=?TEXT-H07.
??APPEND?LV_WA_DATA?TO?I_DOWN_DATA.
??LV_FILENAME1?=?LV_FILENAME.
??CALL?METHOD?CL_GUI_FRONTEND_SERVICES=>FILE_EXIST
????EXPORTING
??????FILE?????????????????=?LV_FILENAME1
????RECEIVING
??????RESULT???????????????=?LV_RESULT
????EXCEPTIONS
??????CNTL_ERROR???????????=?1
??????ERROR_NO_GUI?????????=?2
??????WRONG_PARAMETER??????=?3
??????NOT_SUPPORTED_BY_GUI?=?4
??????OTHERS???????????????=?5.
??IF?LV_RESULT?=?'X'.
????CALL?METHOD?CL_GUI_FRONTEND_SERVICES=>FILE_DELETE
??????EXPORTING
????????FILENAME?????????????=?LV_FILENAME1
??????CHANGING
????????RC???????????????????=?LV_RETURN
??????EXCEPTIONS
????????FILE_DELETE_FAILED???=?1
????????CNTL_ERROR???????????=?2
????????ERROR_NO_GUI?????????=?3
????????FILE_NOT_FOUND???????=?4
????????ACCESS_DENIED????????=?5
????????UNKNOWN_ERROR????????=?6
????????NOT_SUPPORTED_BY_GUI?=?7
????????WRONG_PARAMETER??????=?8
????????OTHERS???????????????=?9.
??ENDIF.
??CALL?FUNCTION?'SAP_CONVERT_TO_XLS_FORMAT'
????EXPORTING
*?????I_FIELD_SEPERATOR??????????=?'X'
*?????I_LINE_HEADER??????????????=
??????I_FILENAME?????????????????=?LV_FILENAME
*?????I_APPL_KEEP????????????????=?'?'
????TABLES
??????I_TAB_SAP_DATA?????????????=?I_DOWN_DATA
*???CHANGING
*?????I_TAB_CONVERTED_DATA???????=
???EXCEPTIONS
?????CONVERSION_FAILED??????????=?1
?????OTHERS?????????????????????=?2.
??IF?SY-SUBRC?=?0.
????CONCATENATE?TEXT-029?LV_FILENAME?INTO?LV_STR.
????MESSAGE?LV_STR?TYPE?'S'.
????CLEAR?:LV_FILENAME?,?GV_FILE.
????LEAVE?TO?SCREEN?0.
??ELSE.
????MESSAGE?ID?SY-MSGID?TYPE?'I'?NUMBER?SY-MSGNO
??????????WITH?SY-MSGV1?SY-MSGV2?SY-MSGV3?SY-MSGV4
??????????DISPLAY?LIKE?SY-MSGTY.
??ENDIF.
ENDFORM.????????????????????"?FRM_DOWNLOAD_EXCEL
*&---------------------------------------------------------------------*
*&??????Module??GET_FILENAME??INPUT
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
MODULE?GET_FILEPATH?INPUT.
*?Get?file?path
??CALL?FUNCTION?'TMP_GUI_BROWSE_FOR_FOLDER'
????EXPORTING
??????WINDOW_TITLE????=?''
??????INITIAL_FOLDER??=?'D:\'
????IMPORTING
??????SELECTED_FOLDER?=?GV_FILE
????EXCEPTIONS??????????????????????????????????????????????"#EC?*
??????CNTL_ERROR??????=?1
??????OTHERS??????????=?2.
??IF?SY-SUBRC?=?0.
*????CONCATENATE?GV_FILE?C_FILE?INTO?GV_FILE.
??ENDIF.
ENDMODULE.?????????????????"?GET_FILENAME??INPUT
*&---------------------------------------------------------------------*
*&??????Module??STATUS_9004??OUTPUT
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
MODULE?STATUS_9004?OUTPUT.
??SET?PF-STATUS?'9003'.
??SET?TITLEBAR?'TITLE'?WITH?TEXT-024.
ENDMODULE.?????????????????"?STATUS_9004??OUTPUT
*&---------------------------------------------------------------------*
*&??????Module??USER_COMMAND_9004??INPUT
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
MODULE?USER_COMMAND_9004?INPUT.
??CASE?OK_CODE4.
????WHEN?'CANCEL'.
??????LEAVE?TO?SCREEN?0.
????WHEN?'UPLOAD'.
??????PERFORM?FRM_CHECK_FILE.
????WHEN?OTHERS.
??ENDCASE.
??CLEAR?:?OK_CODE4.
ENDMODULE.?????????????????"?USER_COMMAND_9004??INPUT
*&---------------------------------------------------------------------*
*&??????Form??FRM_UPLOAD_EXCEL
*&---------------------------------------------------------------------*
*???????文件上傳
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?FRM_UPLOAD_EXCEL?.
??DATA?:
????????LV_W_EXCEL???TYPE?ALSMEX_TABLINE,
????????LV_I_EXCEL???TYPE?STANDARD?TABLE?OF?ALSMEX_TABLINE.
??CALL?FUNCTION?'ALSM_EXCEL_TO_INTERNAL_TABLE'
????EXPORTING
??????FILENAME??????????????????????=?GV_UPLOAD
??????I_BEGIN_COL???????????????????=?1?????????"起始列
??????I_BEGIN_ROW???????????????????=?2?????????"起始行
??????I_END_COL?????????????????????=?7
??????I_END_ROW?????????????????????=?9999
????TABLES
??????INTERN????????????????????????=?LV_I_EXCEL
*?EXCEPTIONS
*???INCONSISTENT_PARAMETERS???????=?1
*???UPLOAD_OLE????????????????????=?2
*???OTHERS????????????????????????=?3
????????????.
??IF?SY-SUBRC?<>?0.
*?MESSAGE?ID?SY-MSGID?TYPE?SY-MSGTY?NUMBER?SY-MSGNO
*?????????WITH?SY-MSGV1?SY-MSGV2?SY-MSGV3?SY-MSGV4.
??ENDIF.
??SORT?LV_I_EXCEL?BY?ROW?COL.
??LOOP?AT?LV_I_EXCEL?INTO?LV_W_EXCEL?.
????IF?LV_W_EXCEL-COL?=?1.
??????WA_UPLOAD-ZNUM?=?LV_W_EXCEL-VALUE.
????ENDIF.
????IF?LV_W_EXCEL-COL?=?2.
??????WA_UPLOAD-ZNAME?=?LV_W_EXCEL-VALUE.
????ENDIF.
????IF?LV_W_EXCEL-COL?=?3.
??????WA_UPLOAD-ZPOST?=?LV_W_EXCEL-VALUE.
????ENDIF.
????IF?LV_W_EXCEL-COL?=?4.
??????WA_UPLOAD-EDATE?=?LV_W_EXCEL-VALUE.
????ENDIF.
????IF?LV_W_EXCEL-COL?=?5.
??????WA_UPLOAD-ZID?=?LV_W_EXCEL-VALUE.
????ENDIF.
????IF?LV_W_EXCEL-COL?=?6.
??????WA_UPLOAD-REMARK?=?LV_W_EXCEL-VALUE.
????ENDIF.
????IF?LV_W_EXCEL-COL?=?7.
??????WA_UPLOAD-DEPT?=?LV_W_EXCEL-VALUE.
????ENDIF.
????AT?END?OF?ROW.
??????WA_UPLOAD-UNAME?=?SY-UNAME.
??????WA_UPLOAD-ERDAT?=?SY-DATUM.
??????WA_UPLOAD-UZEIT?=?SY-UZEIT.
??????APPEND?WA_UPLOAD?TO?I_UPLOAD.
??????CLEAR?WA_UPLOAD.
????ENDAT.
??ENDLOOP.
??IF?GV_TFLAG?=?''.
*?直接上傳
????IF?I_UPLOAD?IS?NOT?INITIAL.
??????INSERT?ZSTAFF?FROM?TABLE?I_UPLOAD?ACCEPTING?DUPLICATE?KEYS.
??????IF?SY-SUBRC?=?0.
????????COMMIT?WORK.
????????MESSAGE?TEXT-008?TYPE?'S'.
????????CLEAR?:?GV_UPLOAD.
????????LEAVE?TO?SCREEN?0.
??????ELSE.
????????ROLLBACK?WORK.
????????MESSAGE?TEXT-019?TYPE?'I'.
????????CLEAR?:?GV_UPLOAD.
????????LEAVE?TO?SCREEN?0.
??????ENDIF.
????ENDIF.
??ELSE.
*?上傳到Table
????LOOP?AT?I_UPLOAD?INTO?WA_UPLOAD.
??????MOVE-CORRESPONDING?WA_UPLOAD?TO?WA_STAFF.
??????APPEND?WA_STAFF?TO?I_STAFF.
????ENDLOOP.
????LEAVE?TO?SCREEN?0.
??ENDIF.
ENDFORM.????????????????????"?FRM_UPLOAD_EXCEL
*&---------------------------------------------------------------------*
*&??????Module??GET_F4_HELP??INPUT
*&---------------------------------------------------------------------*
*???????上傳文件F4幫助
*----------------------------------------------------------------------*
MODULE?GET_F4_HELP?INPUT.
??CALL?FUNCTION?'WS_FILENAME_GET'
?????EXPORTING
*???DEF_FILENAME???????????=?'?'
???????DEF_PATH???????????????=?C_FOLD
???????MASK???????????????????=?C_MASK
???????MODE???????????????????=?C_MODE_O
???????TITLE??????????????????=?C_NAME
?????IMPORTING
???????FILENAME???????????????=??GV_UPLOAD
*???RC?????????????????????=
???EXCEPTIONS
?????INV_WINSYS?????????????=?1
?????NO_BATCH???????????????=?2
?????SELECTION_CANCEL???????=?3
?????SELECTION_ERROR????????=?4
?????OTHERS?????????????????=?5
??????????????.
??IF?SY-SUBRC?<>?0.
*?MESSAGE?ID?SY-MSGID?TYPE?SY-MSGTY?NUMBER?SY-MSGNO
*?????????WITH?SY-MSGV1?SY-MSGV2?SY-MSGV3?SY-MSGV4.
??ENDIF.
ENDMODULE.?????????????????"?GET_F4_HELP??INPUT
*&---------------------------------------------------------------------*
*&??????Form??FRM_CHECK_FILE
*&---------------------------------------------------------------------*
*???????檢查上傳文件有效性
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?FRM_CHECK_FILE?.
??DATA?:
??????????LV_RESULT?TYPE?C.
??IF?GV_UPLOAD?IS?NOT?INITIAL.
????CALL?FUNCTION?'TMP_GUI_GET_FILE_EXIST'
??????EXPORTING
????????FNAME??????????=?GV_UPLOAD
??????IMPORTING
????????EXIST??????????=?LV_RESULT
*???????ISDIR??????????=
*???????FILESIZE???????=
??????EXCEPTIONS
????????FILEINFO_ERROR?=?1
????????OTHERS?????????=?2.
????IF?LV_RESULT?<>?'X'.
??????SET?CURSOR?FIELD?'GV_UPLOAD'.
??????MESSAGE?TEXT-025?TYPE?'I'.
????ELSE.
??????PERFORM?FRM_UPLOAD_EXCEL.
????ENDIF.
??ELSE.
????SET?CURSOR?FIELD?'GV_UPLOAD'.
????MESSAGE?TEXT-026?TYPE?'I'.
??ENDIF.
ENDFORM.????????????????????"?FRM_CHECK_FILE
*&---------------------------------------------------------------------*
*&??????Form??FRM_DEL_SEL
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?FRM_DEL_SEL?.
??DATA?:?LV_RETURN?TYPE?C.??????????????????????????????????"#EC?*
??CLEAR?:?WA_STAFF?,?LV_RETURN.
*?Get?the?selected?line?in?ALV
??CALL?METHOD?GV_ALV->GET_SELECTED_ROWS
????IMPORTING
??????ET_ROW_NO?=?LT_ROW.
??IF?LT_ROW?IS?INITIAL.
????MESSAGE?TEXT-027?TYPE?'I'.
??ENDIF.
??LOOP??AT??LT_ROW?INTO??LS_ROW?FROM?1?TO?1.
????READ??TABLE??I_STAFF?INTO?WA_STAFF?INDEX??LS_ROW-ROW_ID.
??ENDLOOP?.
??IF?WA_STAFF?IS?NOT?INITIAL.
????CALL?FUNCTION?'POPUP_TO_CONFIRM_STEP'???????????????????"#EC?*
???????EXPORTING
?????????DEFAULTOPTION??=?'Y'
?????????TEXTLINE1??????=?TEXT-I03
?????????TITEL??????????=?TEXT-I04
?????????CANCEL_DISPLAY?=?''
???????IMPORTING
?????????ANSWER?????????=?LV_RETURN.
????IF?LV_RETURN?=?'J'.
??????MESSAGE?TEXT-035?TYPE?'W'.
??????CALL?FUNCTION?'ENQUEUE_EZSTAFF'
????????EXPORTING
??????????MODE_ZSTAFF??????????=?'E'
??????????MANDT????????????????=?SY-MANDT
??????????ZNUM?????????????????=?WA_STAFF-ZNUM
*????????????X_ZNUM???????????????=?'?'
*????????????_SCOPE???????????????=?'2'
*????????????_WAIT????????????????=?'?'
*????????????_COLLECT?????????????=?'?'
????????EXCEPTIONS
??????????FOREIGN_LOCK?????????=?1
??????????SYSTEM_FAILURE???????=?2
??????????OTHERS???????????????=?3
?????????????????.
??????DELETE?ZSTAFF?FROM?WA_STAFF.
??????IF?SY-SUBRC?=?0.
????????CALL?FUNCTION?'DEQUEUE_EZSTAFF'
?????????EXPORTING
???????????MODE_ZSTAFF???????=?'E'
???????????MANDT?????????????=?SY-MANDT
???????????ZNUM??????????????=?ZSTAFF-ZNUM
*???????X_ZNUM????????????=?'?'
*???????_SCOPE????????????=?'3'
*???????_SYNCHRON?????????=?'?'
*???????_COLLECT??????????=?'?'
??????????????????.
????????COMMIT?WORK.
????????MESSAGE?TEXT-013?TYPE?'S'.
????????PERFORM?FRM_GET_DATA.
????????CALL?METHOD?GV_ALV->REFRESH_TABLE_DISPLAY(?).
??????ENDIF.
????ENDIF.
??ENDIF.
ENDFORM.????????????????????"?FRM_DEL_SEL
*&---------------------------------------------------------------------*
*&??????Form??FRM_UPDATE_STAUTS
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?FRM_UPDATE_STAUTS?.
??DATA?:?I_UPDATE?TYPE?STANDARD?TABLE?OF?ZSTAFF,
?????????WA_UPDATE?TYPE?ZSTAFF.
??SELECT?*
????FROM?ZSTAFF
????INTO?CORRESPONDING?FIELDS?OF?TABLE?I_UPDATE.
??IF?SY-SUBRC?=?0.
????LOOP?AT?I_UPDATE?INTO?WA_UPDATE.
??????IF?WA_UPDATE-STATUS?<>?'X'.
????????WA_UPDATE-STATUS?=?''.
??????ENDIF.
??????IF?WA_UPDATE-LEADER?<>?'X'.
????????WA_UPDATE-LEADER?=?''.
??????ENDIF.
??????MODIFY?I_UPDATE?FROM?WA_UPDATE.
????ENDLOOP.
????MODIFY?ZSTAFF?FROM?TABLE?I_UPDATE.
????IF?SY-SUBRC?=?0?.
??????COMMIT?WORK.
??????CLEAR?:?WA_UPDATE.
??????REFRESH?:?I_UPDATE.
??????MESSAGE?'人員狀態更新成功!'?TYPE?'S'.
????ELSE.
??????ROLLBACK?WORK.
??????CLEAR?:?WA_UPDATE.
??????REFRESH?:?I_UPDATE.
??????MESSAGE?'更新失敗,請自尋原因!'?TYPE?'S'.
????ENDIF.
??ENDIF.
ENDFORM.????????????????????"?FRM_UPDATE_STAUTS
*?Program?Title:?員工信息維護
*
*?Created?by:maojian@sunny-china.com????????????????Date?:2012年5月14日
*
*?Description:?員工信息的維護
*?Module?name:?無
*?Type:?REPORT
*?Special?note:?None
**----------------------------------------------------------------------
*?Associated?program:?No?programs?are?associated
*-----------------------------------------------------------------------
*?Restriction:??No?restriction
*按鈕開發程序:RSTXICON
************************************************************************
REPORT??ZSTAFF_MAINTAIN?NO?STANDARD?PAGE?HEADING.
*----------------------------------------------------------------------*
*?TABLE?DECLARATION
*----------------------------------------------------------------------*
TABLES?:?ZSTAFF,
?????????SSCRFIELDS.
TYPE-POOLS:SLIS.
TYPE-POOLS?VRM.
INCLUDE?<ICON>.
*&---------------------------------------------------------------------*
*?STRUCTURE?DECLARATION
*&---------------------------------------------------------------------*
TYPES?:?BEGIN?OF?T_STAFF.
????????INCLUDE?STRUCTURE?ZSTAFF.
TYPES?:??MARK?TYPE?C,
?????????TEXT?TYPE?CHAR10,
?????????ICON?TYPE?CHAR10,
?????????NAME?TYPE?CHAR20,
?????????BZ?TYPE?CHAR20.
TYPES?:?END?OF?T_STAFF.
*?Type?:?Download?content
TYPES?:?BEGIN?OF?T_DATA,
??????????F_01(40)??TYPE?C,
??????????F_02(40)??TYPE?C,
??????????F_03(40)??TYPE?C,
??????????F_04(40)??TYPE?C,
??????????F_05(40)??TYPE?C,
??????????F_06(40)??TYPE?C,
??????????F_07(40)??TYPE?C,
????????END?OF?T_DATA.
*&---------------------------------------------------------------------*
*?INTERNAL?TABLE?DECLARATION
*&---------------------------------------------------------------------*
DATA?:
??????I_LIST????????TYPE?VRM_VALUES,
??????ITAB_CATA_TK??TYPE?LVC_T_FCAT,
??????I_STAFF???????TYPE?STANDARD?TABLE?OF?T_STAFF,
??????I_UPLOAD??????TYPE?STANDARD?TABLE?OF?ZSTAFF.
*&---------------------------------------------------------------------*
*?WORK?AREA?DECLARATION
*&---------------------------------------------------------------------*
DATA?:
??????WA_LIST??LIKE?LINE?OF?I_LIST,
??????WA_STAFF?LIKE?LINE?OF?I_STAFF,
??????WA_UPLOAD?LIKE?LINE?OF?I_UPLOAD.
*&---------------------------------------------------------------------*
*?VARIANT?DECLARATION
*&---------------------------------------------------------------------*
DATA?:
*?功能代碼
??????OK_CODE?TYPE?SY-UCOMM,????????????????????????????????"9000
??????OK_CODE1?TYPE?SY-UCOMM,???????????????????????????????"9001
??????OK_CODE2?TYPE?SY-UCOMM,???????????????????????????????"9002
??????OK_CODE3?TYPE?SY-UCOMM,???????????????????????????????"9003
??????OK_CODE4?TYPE?SY-UCOMM,???????????????????????????????"9004
*?容器名稱
??????GV_CNAME?TYPE?SCRFNAME?VALUE?'CONTAINER',
*?容器對象
??????GV_CONTAINER?TYPE?REF?TO?CL_GUI_CUSTOM_CONTAINER,
*?ALV對象
??????GV_ALV?TYPE?REF?TO?CL_GUI_ALV_GRID,
*?ALV布局
??????GV_LAYOUT????TYPE?LVC_S_LAYO,
*?僅顯示標志
??????GV_FLAG?TYPE?C,
*?雙擊顯示標志
??????GV_DOUBLE?TYPE?C,
*?上傳文件路徑
??????GV_UPLOAD?TYPE?LOCALFILE,
*?下載到路徑名
??????GV_FILE?TYPE?LOCALFILE,
*?上傳到表格中
??????GV_TFLAG?TYPE?C,
*記錄數目
??????GV_NUM?TYPE?I.
*&---------------------------------------------------------------------*
*?Constant?DECLARATION
*&---------------------------------------------------------------------*
CONSTANTS:
*?File?type?for?open
???????????C_MASK(20)????TYPE?C?VALUE?',*.XLSX,*.XLSX.',
*?Mode?type
???????????C_MODE_O??????TYPE?C?VALUE?'O',
*?CSV?split
???????????C_SPLIT???????TYPE?C?VALUE?',',
*?Defult?fold
???????????C_FOLD(20)????TYPE?C?VALUE?'D:\',
*?Pop-up?box?name
???????????C_NAME(20)????TYPE?C?VALUE?'File?Select',
*?File?name
???????????C_FILE(20)????TYPE?C?VALUE?'Temp.xlsx'.
*----------------------------------------------------------------------*
*???????CLASS?lcl_event_handler?DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS?LCL_EVENT_HANDLER?DEFINITION?.
??PUBLIC?SECTION?.
????METHODS:
*??????Double-click?control
??????HANDLE_DOUBLE_CLICK
??????FOR?EVENT?DOUBLE_CLICK?OF?CL_GUI_ALV_GRID
??????IMPORTING?E_ROW?E_COLUMN.
ENDCLASS.????????????????????"lcl_event_handler?DEFINITION
*----------------------------------------------------------------------*
*???????CLASS?lcl_event_handler?IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS?LCL_EVENT_HANDLER?IMPLEMENTATION?.
*??Handle?Double?Click
??METHOD?HANDLE_DOUBLE_CLICK?.
????PERFORM?HANDLE_DOUBLE_CLICK?USING?E_ROW?E_COLUMN.
??ENDMETHOD?.????????????????????"handle_double_click
ENDCLASS?.????????????????????"lcl_event_handler?IMPLEMENTATION
DATA?:?GR_EVENT_HANDLER?TYPE?REF?TO?LCL_EVENT_HANDLER.
*&---------------------------------------------------------------------*
*?SELECTION?SCREEN?DECLARATION
*&---------------------------------------------------------------------*
*SELECTION-SCREEN?FUNCTION?KEY?1.
SELECTION-SCREEN?FUNCTION?KEY?2.
SELECTION-SCREEN?FUNCTION?KEY?3.
SELECTION-SCREEN?BEGIN?OF?BLOCK?B1?WITH?FRAME?TITLE?TEXT-B01.
SELECTION-SCREEN?BEGIN?OF?LINE.
SELECTION-SCREEN?POSITION?1.
PARAMETERS?:?P_R1?RADIOBUTTON?GROUP?G1?DEFAULT?'X'?USER-COMMAND?UC.
SELECTION-SCREEN?COMMENT?2(20)?TEXT-002??FOR?FIELD?P_R1.
SELECTION-SCREEN?POSITION?30.
PARAMETERS?:?P_R2?RADIOBUTTON?GROUP?G1.
SELECTION-SCREEN?COMMENT?31(20)?TEXT-003??FOR?FIELD?P_R2.
SELECTION-SCREEN?END?OF?LINE.
SELECTION-SCREEN?BEGIN?OF?LINE.
SELECTION-SCREEN?POSITION?1.
PARAMETERS?:?P_R3?RADIOBUTTON?GROUP?G1.
SELECTION-SCREEN?COMMENT?2(20)?TEXT-004??FOR?FIELD?P_R3.
SELECTION-SCREEN?POSITION?30.
PARAMETERS?:?P_R4?RADIOBUTTON?GROUP?G1.
SELECTION-SCREEN?COMMENT?31(20)?TEXT-005??FOR?FIELD?P_R4.
SELECTION-SCREEN?END?OF?LINE.
SELECTION-SCREEN?BEGIN?OF?LINE.
SELECTION-SCREEN?POSITION?1.
PARAMETERS?:?P_R5?RADIOBUTTON?GROUP?G1.
SELECTION-SCREEN?COMMENT?2(20)?TEXT-006??FOR?FIELD?P_R5.
SELECTION-SCREEN?POSITION?30.
PARAMETERS?:?P_R6?RADIOBUTTON?GROUP?G1.
SELECTION-SCREEN?COMMENT?31(20)?TEXT-007??FOR?FIELD?P_R6.
SELECTION-SCREEN?END?OF?LINE.
SELECTION-SCREEN?SKIP?1.
PARAMETERS?:?P_NUM?TYPE?ZSTAFF-ZNUM?.
SELECTION-SCREEN?SKIP?1.
SELECT-OPTIONS?:?S_DATE?FOR?ZSTAFF-EDATE?NO-EXTENSION?MODIF?ID?G1,
?????????????????S_DEPT?FOR?ZSTAFF-DEPT?NO-EXTENSION?MODIF?ID?G1,
?????????????????S_INPUT?FOR?ZSTAFF-ERDAT?NO-EXTENSION?MODIF?ID?G1.
SELECTION-SCREEN?SKIP?1.
PARAMETERS?:?P_CH?AS?CHECKBOX?DEFAULT?'X'?MODIF?ID?G1.
SELECTION-SCREEN?END?OF?BLOCK?B1.
SELECTION-SCREEN?COMMENT?1(82)?TEXT-030.
SELECTION-SCREEN?SKIP?1.
SELECTION-SCREEN?COMMENT?3(82)?TEXT-031.
SELECTION-SCREEN?SKIP?1.
SELECTION-SCREEN?COMMENT?1(82)?TEXT-032.
*&---------------------------------------------------------------------*
*?INITIALIZATION
*&---------------------------------------------------------------------*
INITIALIZATION.
??SSCRFIELDS-FUNCTXT_01?=?TEXT-021.
??SSCRFIELDS-FUNCTXT_02?=?TEXT-022.
??SSCRFIELDS-FUNCTXT_03?=?TEXT-033.
??CLEAR?:
????????GV_NUM,
????????GV_FLAG.
*&---------------------------------------------------------------------*
*?AT?SELECTION-SCREEN?OUTPUT
*&---------------------------------------------------------------------*
AT?SELECTION-SCREEN?OUTPUT.
??PERFORM?SET_SELECT_SCREEN.
*&---------------------------------------------------------------------*
*?AT?SELECTION-SCREEN
*&---------------------------------------------------------------------*
AT?SELECTION-SCREEN.
*??DATA?:?LV_TCODE?TYPE?TSTC-TCODE.
*??LV_TCODE?=?'ZPP125'.
*??CALL?FUNCTION?'AUTHORITY_CHECK_TCODE'
*????EXPORTING
*??????TCODE??=?LV_TCODE
*????EXCEPTIONS
*??????OK?????=?1
*??????NOT_OK?=?2
*??????OTHERS?=?3.
*??IF?SY-SUBRC?<>?1.
*????MESSAGE?TEXT-034?TYPE?'S'?DISPLAY?LIKE?'E'.
*????STOP.
*??ENDIF.
??PERFORM?FRM_CHECK_INPUT.
??IF?SSCRFIELDS-UCOMM?=?'FC01'.
????CALL?SCREEN?9003?STARTING?AT?20?10?ENDING?AT?90?16.
??ELSEIF?SSCRFIELDS-UCOMM?=?'FC02'.
????CALL?SCREEN?9004?STARTING?AT?20?10?ENDING?AT?90?16.
??ELSEIF?SSCRFIELDS-UCOMM?=?'FC03'.
????PERFORM?FRM_UPDATE_STAUTS.
??ENDIF.
*&---------------------------------------------------------------------*
*?START-OF-SELECTION
*&---------------------------------------------------------------------*
START-OF-SELECTION.
??IF?P_R1?=?'X'
????OR?P_R3?=?'X'
????OR?P_R4?=?'X'
????OR?P_R5?=?'X'
.
????IF?P_NUM?IS?INITIAL.
??????SET?CURSOR?FIELD?'P_NUM'.
??????MESSAGE?TEXT-009?TYPE?'S'?DISPLAY?LIKE?'E'.
??????EXIT.
????ENDIF.
????IF?STRLEN(?P_NUM?)?<?6.
??????SET?CURSOR?FIELD?'P_NUM'.
??????MESSAGE?TEXT-010?TYPE?'S'?DISPLAY?LIKE?'E'.
??????EXIT.
????ENDIF.
????IF?P_R1?=?'X'.?????"添加單條員工信息
??????SELECT?SINGLE?*
????????FROM?ZSTAFF
????????WHERE?ZNUM?=?P_NUM.
??????IF?SY-SUBRC?=?0.
????????SET?CURSOR?FIELD?'P_NUM'.
????????MESSAGE?TEXT-011?TYPE?'S'?DISPLAY?LIKE?'E'.
????????EXIT.
??????ENDIF.
??????CALL?SCREEN?9000.
????ENDIF.
????IF?P_R3?=?'X'?OR?P_R4?=?'X'.???"顯示單條員工信息
??????IF?P_R3?=?'X'.
????????GV_FLAG?=?''.
??????ELSE.
????????GV_FLAG?=?'X'.
??????ENDIF.
??????SELECT?SINGLE?*
????????FROM?ZSTAFF
????????INTO?ZSTAFF
????????WHERE?ZNUM?=?P_NUM.
??????IF?SY-SUBRC?<>?0.
????????SET?CURSOR?FIELD?'P_NUM'.
????????MESSAGE?TEXT-017?TYPE?'S'?DISPLAY?LIKE?'E'.
??????ELSE.
????????CALL?SCREEN?9000.
??????ENDIF.
????ENDIF.
????IF?P_R5?=?'X'.???"刪除單條員工信息
??????PERFORM?FRM_DEL_RECORD.
????ENDIF.
*??ELSEIF?P_R5?=?'X'.
*????PERFORM?FRM_DEL_RECORD.
??ELSEIF?P_R6?=?'X'.
????PERFORM?FRM_GET_DATA.
????IF?I_STAFF?IS?NOT?INITIAL.
??????CALL?SCREEN?9001.
????ELSE.
??????MESSAGE?TEXT-012?TYPE?'S'?DISPLAY?LIKE?'E'.
??????EXIT.
????ENDIF.
??ELSEIF?P_R2?=?'X'.
????CALL?SCREEN?9002.
??ENDIF.
*&---------------------------------------------------------------------*
*?END-OF-SELECTION
*&---------------------------------------------------------------------*
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*&??????Form??SET_SELECT_SCREEN
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?SET_SELECT_SCREEN?.
??LOOP?AT?SCREEN.
????IF?P_R1?=?'X'?OR?P_R3?=?'X'?OR?P_R4?=?'X'?OR?P_R5?=?'X'.
??????IF?SCREEN-GROUP1?=?'G1'.
????????SCREEN-INPUT?=?0.
??????ELSE.
????????SCREEN-INPUT?=?1.
??????ENDIF.
??????MODIFY?SCREEN.
????ELSEIF??P_R2?=?'X'.
??????IF?SCREEN-GROUP1?=?'G1'?OR?SCREEN-NAME?=?'P_NUM'.
????????SCREEN-INPUT?=?0.
??????ELSE.
????????SCREEN-INPUT?=?1.
??????ENDIF.
??????MODIFY?SCREEN.
????ENDIF.
??ENDLOOP.
ENDFORM.????????????????????"?SET_SELECT_SCREEN
*&---------------------------------------------------------------------*
*&??????Module??STATUS_9000??OUTPUT
*&---------------------------------------------------------------------*
*???????9000?PBO
*----------------------------------------------------------------------*
MODULE?STATUS_9000?OUTPUT.
??IF?P_R1?=?'X'.
????SET?PF-STATUS?'9000'.
????SET?TITLEBAR?'TITLE'?WITH?TEXT-002.
????LOOP?AT?SCREEN.
??????IF?SCREEN-GROUP1?=?'GP2'.
????????SCREEN-INPUT?=?0.
??????ENDIF.
??????MODIFY?SCREEN.
????ENDLOOP.
??ELSEIF?P_R3?=?'X'.
????SET?PF-STATUS?'9000'.
????SET?TITLEBAR?'TITLE'?WITH?TEXT-001.
??ELSEIF?P_R4?=?'X'.
????SET?PF-STATUS?'9000'?EXCLUDING?'SAVE'.
????SET?TITLEBAR?'TITLE'?WITH?TEXT-018.
??ENDIF.
*?set?the?initial?value
??PERFORM?FRM_SET_INITIAL.
*?set?the?list?value
??PERFORM?SET_LIST_VALUE.
ENDMODULE.?????????????????"?STATUS_9000??OUTPUT
*&---------------------------------------------------------------------*
*&??????Form??FRM_SET_INITIAL
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?FRM_SET_INITIAL?.
??IF?ZSTAFF-ZNUM?IS?INITIAL.
????ZSTAFF-ZNUM?=?P_NUM.
??ENDIF.
??LOOP?AT?SCREEN?.
????IF?P_R4?=?'X'?OR?GV_DOUBLE?=?'X'.
??????IF?SCREEN-GROUP1?=?'GP1'?OR?SCREEN-GROUP1?=?'GP2'?.
????????SCREEN-INPUT?=?0.
??????ELSE.
????????SCREEN-INPUT?=?1.
??????ENDIF.
??????MODIFY?SCREEN?.
????ENDIF.
??ENDLOOP.
ENDFORM.????????????????????"?FRM_SET_INITIAL
*&---------------------------------------------------------------------*
*&??????Module??USER_COMMAND_9000??INPUT
*&---------------------------------------------------------------------*
*???????9000?PAI
*----------------------------------------------------------------------*
MODULE?USER_COMMAND_9000?INPUT.
??CASE?OK_CODE.
*????WHEN?'BACK'?OR?'EXIT'.
*??????LEAVE?TO?SCREEN?0.
*????WHEN?'CANCEL'.
*??????LEAVE?PROGRAM.
????WHEN?'SAVE'.
??????PERFORM?FRM_SAVE_INFO.
????WHEN?OTHERS.
??ENDCASE.
??CLEAR?:?OK_CODE.
ENDMODULE.?????????????????"?USER_COMMAND_9000??INPUT
*&---------------------------------------------------------------------*
*&??????Form??SET_LIST_VALUE
*&---------------------------------------------------------------------*
*???????設置部門下拉框的值
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?SET_LIST_VALUE?.
??DATA:
????????LV_I_DOMTAB??TYPE?STANDARD?TABLE?OF?DD07V,
????????LV_WA_DOMTAB?TYPE?DD07V.
??IF?I_LIST?IS?INITIAL.
????CALL?FUNCTION?'DD_DOMVALUES_GET'
??????EXPORTING
????????DOMNAME??????????????=?'ZDEPT'
???????TEXT?????????????????=?'X'
???????LANGU????????????????=?SY-LANGU
*???BYPASS_BUFFER????????=?'?'
*?IMPORTING
*???RC???????????????????=
??????TABLES
????????DD07V_TAB????????????=?LV_I_DOMTAB
*?EXCEPTIONS
*???WRONG_TEXTFLAG???????=?1
*???OTHERS???????????????=?2
??????????????.
????IF?SY-SUBRC?=?0.
??????LOOP?AT?LV_I_DOMTAB?INTO?LV_WA_DOMTAB.
????????CLEAR?WA_LIST.
????????WA_LIST-KEY?=?LV_WA_DOMTAB-DOMVALUE_L.
????????WA_LIST-TEXT?=?LV_WA_DOMTAB-DDTEXT.
????????APPEND?WA_LIST?TO?I_LIST.
??????ENDLOOP.
????ENDIF.
??ENDIF.
??CALL?FUNCTION?'VRM_SET_VALUES'
????EXPORTING
??????ID????????????????????=?'ZSTAFF-DEPT'
??????VALUES????????????????=?I_LIST
*???EXCEPTIONS
*?????ID_ILLEGAL_NAME???????=?1
*?????OTHERS????????????????=?2
????????????.
??IF?SY-SUBRC?<>?0.
*?MESSAGE?ID?SY-MSGID?TYPE?SY-MSGTY?NUMBER?SY-MSGNO
*?????????WITH?SY-MSGV1?SY-MSGV2?SY-MSGV3?SY-MSGV4.
??ENDIF.
ENDFORM.????????????????????"?SET_LIST_VALUE
*&---------------------------------------------------------------------*
*&??????Form??FRM_CHECK_INPUT
*&---------------------------------------------------------------------*
*???????選擇屏幕校驗
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?FRM_CHECK_INPUT?.
*??IF?P_R1?=?'X'?OR?P_R3?=?'X'?OR?P_R4?=?'X'?OR?P_R5?=?'X'.
*????IF?P_NUM?IS?INITIAL.
*??????SET?CURSOR?FIELD?'P_NUM'.
*??????MESSAGE?TEXT-009?TYPE?'S'?DISPLAY?LIKE?'E'.
*??????GV_STATUS?=?'X'.
*??????EXIT.
*????ENDIF.
*
*????IF?STRLEN(?P_NUM?)?<?6.
*??????SET?CURSOR?FIELD?'P_NUM'.
*??????MESSAGE?TEXT-010?TYPE?'S'?DISPLAY?LIKE?'E'.
*??????GV_STATUS?=?'X'.
*??????EXIT.
*????ENDIF.
*
*????SELECT?SINGLE?*
*??????FROM?ZSTAFF
*??????WHERE?ZNUM?=?P_NUM.
*????IF?SY-SUBRC?=?0.
*??????SET?CURSOR?FIELD?'P_NUM'.
*??????MESSAGE?TEXT-011?TYPE?'S'?DISPLAY?LIKE?'E'.
*??????GV_STATUS?=?'X'.
*??????EXIT.
*????ENDIF.
*??ENDIF.
ENDFORM.????????????????????"?FRM_CHECK_INPUT
*&---------------------------------------------------------------------*
*&??????Module??EXIT??INPUT
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
MODULE?EXIT?INPUT.
??DATA?:?LV_RETURN?TYPE?C.??????????????????????????????????"#EC?*
??CLEAR?:?LV_RETURN.
*?Exit?the?screen
??IF?OK_CODE??=?'CANCEL'.
????IF?GV_FLAG?=?'X'.
??????LEAVE?PROGRAM.
????ELSE.
??????CALL?FUNCTION?'POPUP_TO_CONFIRM_STEP'?????????????????"#EC?*
???????EXPORTING
?????????DEFAULTOPTION??=?'Y'
?????????TEXTLINE1??????=?TEXT-I01
?????????TITEL??????????=?TEXT-I02
?????????CANCEL_DISPLAY?=?''
???????IMPORTING
?????????ANSWER?????????=?LV_RETURN.
??????IF?LV_RETURN?=?'J'.
????????LEAVE?PROGRAM.
??????ENDIF.
????ENDIF.
*?Back?to?the?previous?screen
??ELSEIF?OK_CODE?=?'BACK'?OR?OK_CODE?=?'EXIT'.
????IF?GV_FLAG?=?'X'.
??????LEAVE?TO?SCREEN?0.
????ELSE.
??????CALL?FUNCTION?'POPUP_TO_CONFIRM_STEP'?????????????????"#EC?*
????????EXPORTING
??????????DEFAULTOPTION??=?'Y'
??????????TEXTLINE1??????=?TEXT-I01
??????????TITEL??????????=?TEXT-I02
??????????CANCEL_DISPLAY?=?''
????????IMPORTING
??????????ANSWER?????????=?LV_RETURN.
??????IF?LV_RETURN?=?'J'.
????????LEAVE?TO?SCREEN?0.
??????ENDIF.
????ENDIF.
??ENDIF.
??CLEAR?:?OK_CODE.
ENDMODULE.?????????????????"?EXIT??INPUT
*&---------------------------------------------------------------------*
*&??????Module??INITIAL_CONTAINER??OUTPUT
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
MODULE?INITIAL_CONTAINER?OUTPUT.
??IF?GV_CONTAINER?IS?INITIAL.
????PERFORM?CREATE_ALV_CONTAINER.
??ENDIF.
??PERFORM?FRM_SET_ALV.
ENDMODULE.?????????????????"?INITIAL_CONTAINER??OUTPUT
*&---------------------------------------------------------------------*
*&??????Form??CREATE_ALV_CONTAINER
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?CREATE_ALV_CONTAINER?.
??IF?NOT?GV_CONTAINER?IS?INITIAL.
????CALL?METHOD?GV_CONTAINER->FREE
??????EXCEPTIONS
????????CNTL_SYSTEM_ERROR?=?1
????????CNTL_ERROR????????=?2.
*????IF?SY-SUBRC?<>?0.
*????ENDIF.
????CLEAR?GV_CONTAINER.
????CLEAR?GV_ALV.
??ENDIF.
??CREATE?OBJECT?GV_CONTAINER
????EXPORTING
??????CONTAINER_NAME??????????????=?GV_CNAME
????EXCEPTIONS
??????CNTL_ERROR??????????????????=?1
??????CNTL_SYSTEM_ERROR???????????=?2
??????CREATE_ERROR????????????????=?3
??????LIFETIME_ERROR??????????????=?4
??????LIFETIME_DYNPRO_DYNPRO_LINK?=?5.
ENDFORM.????????????????????"?CREATE_ALV_CONTAINER
*&---------------------------------------------------------------------*
*&??????Form??FRM_SET_ALV
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?FRM_SET_ALV?.
??IF?GV_ALV?IS?INITIAL.
????CREATE?OBJECT?GV_ALV
??????EXPORTING
????????I_PARENT??????????=?GV_CONTAINER
??????EXCEPTIONS
????????ERROR_CNTL_CREATE?=?1
????????ERROR_CNTL_INIT???=?2
????????ERROR_CNTL_LINK???=?3
????????ERROR_DP_CREATE???=?4.
????PERFORM?FRM_ALV_LIST.
*???display?alv
????CALL?METHOD?GV_ALV->SET_TABLE_FOR_FIRST_DISPLAY
??????EXPORTING
????????IS_LAYOUT?????????????????????=?GV_LAYOUT
??????CHANGING
????????IT_OUTTAB?????????????????????=?I_STAFF
????????IT_FIELDCATALOG???????????????=?ITAB_CATA_TK
??????EXCEPTIONS
????????INVALID_PARAMETER_COMBINATION?=?1
????????PROGRAM_ERROR?????????????????=?2
????????TOO_MANY_LINES????????????????=?3
????????OTHERS????????????????????????=?4.
*????--Creating?an?instance?for?the?event?handler
????CREATE?OBJECT?GR_EVENT_HANDLER?.
*????--Registering?handler?methods?to?handle?ALV?Grid?events
????SET?HANDLER?GR_EVENT_HANDLER->HANDLE_DOUBLE_CLICK?FOR?GV_ALV.
??ELSE.
*????PERFORM?FRM_REFRESH_DATA.
????CALL?METHOD?GV_ALV->REFRESH_TABLE_DISPLAY(?).
??ENDIF.
ENDFORM.????????????????????"?FRM_SET_ALV
*&---------------------------------------------------------------------*
*&??????Form??FRM_ALV_LIST
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?FRM_ALV_LIST?.
*?set?fieldcatalog
??PERFORM?FRM_SET_FIELDCAT.
*?set?layout
??PERFORM?FRM_SET_LAYOUT.
ENDFORM.????????????????????"?FRM_ALV_LIST
*&---------------------------------------------------------------------*
*&??????Form??FRM_SET_FIELDCAT
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?FRM_SET_FIELDCAT?.
??DATA:
??????LV_WA_FCAT?TYPE?LVC_S_FCAT.
??CLEAR?LV_WA_FCAT.
??LV_WA_FCAT-FIELDNAME?=?'ZNUM'.
??LV_WA_FCAT-COLTEXT?=?TEXT-H01.
??LV_WA_FCAT-OUTPUTLEN?=?10.
??APPEND?LV_WA_FCAT?TO?ITAB_CATA_TK.
??CLEAR?LV_WA_FCAT.
??LV_WA_FCAT-FIELDNAME?=?'ZNAME'.
??LV_WA_FCAT-COLTEXT?=?TEXT-H02.
??LV_WA_FCAT-OUTPUTLEN?=?10.
??APPEND?LV_WA_FCAT?TO?ITAB_CATA_TK.
??CLEAR?LV_WA_FCAT.
??LV_WA_FCAT-FIELDNAME?=?'ZPOST'.
??LV_WA_FCAT-COLTEXT?=?TEXT-H03.
??LV_WA_FCAT-OUTPUTLEN?=?15.
??APPEND?LV_WA_FCAT?TO?ITAB_CATA_TK.
??CLEAR?LV_WA_FCAT.
??LV_WA_FCAT-FIELDNAME?=?'EDATE'.
??LV_WA_FCAT-COLTEXT?=?TEXT-H04.
??LV_WA_FCAT-OUTPUTLEN?=?10.
??APPEND?LV_WA_FCAT?TO?ITAB_CATA_TK.
??CLEAR?LV_WA_FCAT.
??LV_WA_FCAT-FIELDNAME?=?'ZID'.
??LV_WA_FCAT-COLTEXT?=?TEXT-H05.
??LV_WA_FCAT-OUTPUTLEN?=?20.
??APPEND?LV_WA_FCAT?TO?ITAB_CATA_TK.
??CLEAR?LV_WA_FCAT.
??LV_WA_FCAT-FIELDNAME?=?'REMARK'.
??LV_WA_FCAT-COLTEXT?=?TEXT-H06.
??LV_WA_FCAT-OUTPUTLEN?=?25.
??LV_WA_FCAT-NO_OUT?=?'X'.
??APPEND?LV_WA_FCAT?TO?ITAB_CATA_TK.
??CLEAR?LV_WA_FCAT.
??LV_WA_FCAT-FIELDNAME?=?'NAME'.
??LV_WA_FCAT-COLTEXT?=?TEXT-H07.
??LV_WA_FCAT-OUTPUTLEN?=?15.
??APPEND?LV_WA_FCAT?TO?ITAB_CATA_TK.
??CLEAR?LV_WA_FCAT.
??LV_WA_FCAT-FIELDNAME?=?'BZ'.
??LV_WA_FCAT-COLTEXT?=?TEXT-H10.
??LV_WA_FCAT-OUTPUTLEN?=?10.
??APPEND?LV_WA_FCAT?TO?ITAB_CATA_TK.
??CLEAR?LV_WA_FCAT.
??LV_WA_FCAT-FIELDNAME?=?'ICON'.
??LV_WA_FCAT-COLTEXT?=?TEXT-H09.
??LV_WA_FCAT-OUTPUTLEN?=?4.
??LV_WA_FCAT-ICON?=?'X'.
??APPEND?LV_WA_FCAT?TO?ITAB_CATA_TK.
??CLEAR?LV_WA_FCAT.
??LV_WA_FCAT-FIELDNAME?=?'TEXT'.
??LV_WA_FCAT-COLTEXT?=?TEXT-H08.
??LV_WA_FCAT-OUTPUTLEN?=?8.
??APPEND?LV_WA_FCAT?TO?ITAB_CATA_TK.
ENDFORM.????????????????????"?FRM_SET_FIELDCAT
*&---------------------------------------------------------------------*
*&??????Form??FRM_SET_LAYOUT
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?FRM_SET_LAYOUT?.
??GV_LAYOUT-SEL_MODE?=?'D'.
??GV_LAYOUT-ZEBRA?=?'X'?.
*??GV_LAYOUT-CWIDTH_OPT?=?'X'.
ENDFORM.????????????????????"?FRM_SET_LAYOUT
*&---------------------------------------------------------------------*
*&??????Form??FRM_GET_DATA
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?FRM_GET_DATA?.
??DATA:
????????LV_CHAR?TYPE?CHAR50,
????????LV_I_DOMTAB??TYPE?STANDARD?TABLE?OF?DD07V,
????????LV_WA_DOMTAB?TYPE?DD07V.
??CALL?FUNCTION?'DD_DOMVALUES_GET'
????EXPORTING
??????DOMNAME??????????????=?'ZDEPT'
?????TEXT?????????????????=?'X'
?????LANGU????????????????=?SY-LANGU
*???BYPASS_BUFFER????????=?'?'
*?IMPORTING
*???RC???????????????????=
????TABLES
??????DD07V_TAB????????????=?LV_I_DOMTAB
*?EXCEPTIONS
*???WRONG_TEXTFLAG???????=?1
*???OTHERS???????????????=?2
????????????.
??IF?SY-SUBRC?=?0.
????LOOP?AT?LV_I_DOMTAB?INTO?LV_WA_DOMTAB.
??????CLEAR?WA_LIST.
??????WA_LIST-KEY?=?LV_WA_DOMTAB-DOMVALUE_L.
??????WA_LIST-TEXT?=?LV_WA_DOMTAB-DDTEXT.
??????APPEND?WA_LIST?TO?I_LIST.
????ENDLOOP.
??ENDIF.
??IF?P_NUM?IS?NOT?INITIAL.
????IF?P_CH?=?'X'.
??????SELECT?*
????????FROM?ZSTAFF
????????INTO?CORRESPONDING?FIELDS?OF?TABLE?I_STAFF
????????WHERE?EDATE?IN?S_DATE
??????????AND?DEPT?IN?S_DEPT
??????????AND?ERDAT?IN?S_INPUT
??????????AND?ZNUM?=?P_NUM
??????????AND?STATUS?=?''.
????ELSE.
??????SELECT?*
????????FROM?ZSTAFF
????????INTO?CORRESPONDING?FIELDS?OF?TABLE?I_STAFF
????????WHERE?EDATE?IN?S_DATE
??????????AND?DEPT?IN?S_DEPT
??????????AND?ERDAT?IN?S_INPUT
??????????AND?ZNUM?=?P_NUM.
????ENDIF.
??ELSE.
????IF?P_CH?=?'X'.
??????SELECT?*
????????FROM?ZSTAFF
????????INTO?CORRESPONDING?FIELDS?OF?TABLE?I_STAFF
????????WHERE?EDATE?IN?S_DATE
??????????AND?DEPT?IN?S_DEPT
??????????AND?ERDAT?IN?S_INPUT
??????????AND?STATUS?=?''.
????ELSE.
??????SELECT?*
????????FROM?ZSTAFF
????????INTO?CORRESPONDING?FIELDS?OF?TABLE?I_STAFF
????????WHERE?EDATE?IN?S_DATE
??????????AND?DEPT?IN?S_DEPT
??????????AND?ERDAT?IN?S_INPUT.
????ENDIF.
??ENDIF.
??LOOP?AT?I_STAFF?INTO?WA_STAFF.
????CLEAR?LV_CHAR.
????READ?TABLE?LV_I_DOMTAB?INTO?LV_WA_DOMTAB
??????WITH?KEY?DOMVALUE_L?=?WA_STAFF-DEPT.
????IF?SY-SUBRC?=?0.
??????WA_STAFF-NAME?=?LV_WA_DOMTAB-DDTEXT.
????ENDIF.
????IF?WA_STAFF-STATUS?=?''.
??????WA_STAFF-TEXT?=?TEXT-S01.
??????WA_STAFF-ICON?=?ICON_LED_GREEN.
????ELSE.
??????WA_STAFF-TEXT?=?TEXT-S02.
??????WA_STAFF-ICON?=?ICON_LED_RED.
????ENDIF.
????IF?WA_STAFF-LEADER?=?'X'.
??????WA_STAFF-BZ?=?TEXT-S03.
????ELSE.
??????WA_STAFF-BZ?=?''.
????ENDIF.
????MODIFY?I_STAFF?FROM?WA_STAFF.
??ENDLOOP.
??DESCRIBE?TABLE?I_STAFF?LINES?GV_NUM.
ENDFORM.????????????????????"?FRM_GET_DATA
*&---------------------------------------------------------------------*
*&??????Module??STATUS_9001??OUTPUT
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
MODULE?STATUS_9001?OUTPUT.
??SET?PF-STATUS?'9001'.
??IF?P_CH?=?'X'.
????SET?TITLEBAR?'TITLE'?WITH?TEXT-007?'-'?'已激活'.
??ELSE.
????SET?TITLEBAR?'TITLE'?WITH?TEXT-007?'-'?'全部'.
??ENDIF.
ENDMODULE.?????????????????"?STATUS_9001??OUTPUT
*&---------------------------------------------------------------------*
*&??????Module??USER_COMMAND_9001??INPUT
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
MODULE?USER_COMMAND_9001?INPUT.
??DATA?:
?????????LT_ROW?TYPE??LVC_T_ROID,???????????????????????????"#EC?*
?????????LS_ROW?TYPE??LVC_S_ROID.???????????????????????????"#EC?*
??CASE?OK_CODE1.
????WHEN?'BACK'?OR?'EXIT'.
??????LEAVE?TO?SCREEN?0.
????WHEN?'CANCEL'.
??????LEAVE?PROGRAM.
????WHEN?'DELALL'.
??????PERFORM?FRM_DEL_SEL.
????WHEN?OTHERS.
??ENDCASE.
??CLEAR?:?OK_CODE1.
ENDMODULE.?????????????????"?USER_COMMAND_9001??INPUT
*&---------------------------------------------------------------------*
*&??????Form??FRM_DEL_RECORD
*&---------------------------------------------------------------------*
*???????刪除記錄
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?FRM_DEL_RECORD?.
??DATA?:
??????LV_ANSWER?TYPE?C,
??????LV_CHAR01?TYPE?CHAR255,
??????LV_CHAR02?TYPE?CHAR255,
??????LV_CHAR03?TYPE?CHAR255.
??CLEAR?:?WA_STAFF.
??SELECT?SINGLE?*
????INTO?WA_STAFF
????FROM?ZSTAFF
????WHERE?ZNUM?=?P_NUM.
??IF?SY-SUBRC?=?0.
????CONCATENATE?TEXT-H02?':'?WA_STAFF-ZNAME
??????INTO?LV_CHAR01?SEPARATED?BY?SPACE.
????CONCATENATE?TEXT-H03?':'?WA_STAFF-ZPOST
??????INTO?LV_CHAR02?SEPARATED?BY?SPACE.
????CONCATENATE?TEXT-H04?':'?WA_STAFF-EDATE+0(4)?'年'
??????WA_STAFF-EDATE+4(2)?'月'?WA_STAFF-EDATE+6(2)?'日'
??????INTO?LV_CHAR03?SEPARATED?BY?SPACE.
??ELSE.
????MESSAGE?TEXT-017?TYPE?'S'?DISPLAY?LIKE?'E'.
????EXIT.
??ENDIF.
??CALL?FUNCTION?'POPUP_TO_CONFIRM_WITH_MESSAGE'???????????"#EC?FB_OLDED
??????EXPORTING
??????DEFAULTOPTION??=?'N'
????????TEXTLINE1??????=?TEXT-014
*?????TEXTLINE2??????=?'?'
????????DIAGNOSETEXT1??=?LV_CHAR01
????????DIAGNOSETEXT2??=?LV_CHAR02
????????DIAGNOSETEXT3??=?LV_CHAR03
????????TITEL??????????=?TEXT-015
*?????START_COLUMN???=?25
*?????START_ROW??????=?6
????????CANCEL_DISPLAY?=?''
??????IMPORTING
????????ANSWER?????????=?LV_ANSWER.
??CHECK?LV_ANSWER?=?'J'.
??DELETE?ZSTAFF?FROM?WA_STAFF.
??IF?SY-SUBRC?=?0.
????MESSAGE?TEXT-013?TYPE?'S'.
????COMMIT?WORK.
??ENDIF.
ENDFORM.????????????????????"?FRM_DEL_RECORD
*&---------------------------------------------------------------------*
*&??????Form??FRM_SAVE_INFO
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?FRM_SAVE_INFO?.
??CALL?FUNCTION?'ENQUEUE_EZSTAFF'
???EXPORTING
?????MODE_ZSTAFF??????????=?'E'
?????MANDT????????????????=?SY-MANDT
?????ZNUM?????????????????=?ZSTAFF-ZNUM
*?????X_ZNUM???????????????=?'?'
*?????_SCOPE???????????????=?'2'
*?????_WAIT????????????????=?'?'
*?????_COLLECT?????????????=?'?'
???EXCEPTIONS
?????FOREIGN_LOCK?????????=?1
?????SYSTEM_FAILURE???????=?2
?????OTHERS???????????????=?3
????????????.
??IF?SY-SUBRC?<>?0.
*?MESSAGE?ID?SY-MSGID?TYPE?SY-MSGTY?NUMBER?SY-MSGNO
*?????????WITH?SY-MSGV1?SY-MSGV2?SY-MSGV3?SY-MSGV4.
??ENDIF.
??IF?ZSTAFF?IS?NOT?INITIAL.
????ZSTAFF-ERDAT?=?SY-DATUM.
????ZSTAFF-UZEIT?=?SY-UZEIT.
????ZSTAFF-UNAME?=?SY-UNAME.
??ENDIF.
*??IF?GV_STATUS?=??''.
*????ZSTAFF-STATUS?=?''.
*??ELSE.
*????ZSTAFF-STATUS?=?'X'.
*??ENDIF.
??MODIFY?ZSTAFF?FROM?ZSTAFF.
??IF?SY-SUBRC?=?0.
????CALL?FUNCTION?'DEQUEUE_EZSTAFF'
?????EXPORTING
???????MODE_ZSTAFF???????=?'E'
???????MANDT?????????????=?SY-MANDT
???????ZNUM??????????????=?ZSTAFF-ZNUM
*???????X_ZNUM????????????=?'?'
*???????_SCOPE????????????=?'3'
*???????_SYNCHRON?????????=?'?'
*???????_COLLECT??????????=?'?'
??????????????.
????MESSAGE?TEXT-008?TYPE?'S'.
????COMMIT?WORK.
????LEAVE?TO?SCREEN?0.
??ELSE.
????CALL?FUNCTION?'DEQUEUE_EZSTAFF'
?????EXPORTING
???????MODE_ZSTAFF???????=?'E'
???????MANDT?????????????=?SY-MANDT
???????ZNUM??????????????=?ZSTAFF-ZNUM
*???????X_ZNUM????????????=?'?'
*???????_SCOPE????????????=?'3'
*???????_SYNCHRON?????????=?'?'
*???????_COLLECT??????????=?'?'
??????????????.
????MESSAGE?TEXT-019?TYPE?'I'.
????ROLLBACK?WORK.
????LEAVE?TO?SCREEN?0.
??ENDIF.
ENDFORM.????????????????????"?FRM_SAVE_INFO
*&---------------------------------------------------------------------*
*&??????Module??STATUS_9002??OUTPUT
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
MODULE?STATUS_9002?OUTPUT.
??SET?PF-STATUS?'9000'.
??SET?TITLEBAR?'TITLE'?WITH?TEXT-003.
??PERFORM?SET_LISTBOX_VALUE.
ENDMODULE.?????????????????"?STATUS_9002??OUTPUT
*&---------------------------------------------------------------------*
*&??????Module??USER_COMMAND_9002??INPUT
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
MODULE?USER_COMMAND_9002?INPUT.
??CASE?OK_CODE2.
????WHEN?'BACK'?OR?'EXIT'.
??????IF?I_STAFF?IS?NOT?INITIAL.
????????CALL?FUNCTION?'POPUP_TO_CONFIRM_STEP'???????????????"#EC?*
????????EXPORTING
??????????DEFAULTOPTION??=?'Y'
??????????TEXTLINE1??????=?TEXT-I01
??????????TITEL??????????=?TEXT-I02
??????????CANCEL_DISPLAY?=?''
????????IMPORTING
??????????ANSWER?????????=?LV_RETURN.
????????IF?LV_RETURN?=?'J'.
??????????LEAVE?TO?SCREEN?0.
????????ENDIF.
??????ELSE.
????????LEAVE?TO?SCREEN?0.
??????ENDIF.
????WHEN?'CANCEL'.
??????IF?I_STAFF?IS?NOT?INITIAL.
????????CALL?FUNCTION?'POPUP_TO_CONFIRM_STEP'???????????????"#EC?*
?????????EXPORTING
???????????DEFAULTOPTION??=?'Y'
???????????TEXTLINE1??????=?TEXT-I01
???????????TITEL??????????=?TEXT-I02
???????????CANCEL_DISPLAY?=?''
?????????IMPORTING
???????????ANSWER?????????=?LV_RETURN.
????????IF?LV_RETURN?=?'J'.
??????????LEAVE?PROGRAM.
????????ENDIF.
??????ELSE.
????????LEAVE?PROGRAM.
??????ENDIF.
????WHEN?'SAVE'.
*?批量保存
??????PERFORM?FRM_SAVE_RECORDS.
????WHEN?'UP'.
*?上傳至Table中
??????GV_TFLAG?=?'X'.
??????CALL?SCREEN?9004?STARTING?AT?20?10?ENDING?AT?90?16.
????WHEN?OTHERS.
??ENDCASE.
??CLEAR?:?OK_CODE2.
ENDMODULE.?????????????????"?USER_COMMAND_9002??INPUT
*&SPWizard:?Data?incl.?inserted?by?SP?Wizard.?DO?NOT?CHANGE?THIS?LINE!
INCLUDE?ZSTAFF_MAINTAIN_TBL?.
*&---------------------------------------------------------------------*
*&??????Form??FRM_SAVE_RECORDS
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?FRM_SAVE_RECORDS?.
??IF?I_STAFF?IS?NOT?INITIAL.
????INSERT?ZSTAFF?FROM?TABLE?I_STAFF?ACCEPTING?DUPLICATE?KEYS.
????IF?SY-SUBRC?=?0.
??????MESSAGE?TEXT-008?TYPE?'S'.
??????COMMIT?WORK.
??????LEAVE?TO?SCREEN?0.
????ELSE.
??????MESSAGE?TEXT-019?TYPE?'I'.
??????ROLLBACK?WORK.
??????LEAVE?TO?SCREEN?0.
????ENDIF.
??ELSE.
????MESSAGE?TEXT-020?TYPE?'I'.
??ENDIF.
ENDFORM.????????????????????"?FRM_SAVE_RECORDS
*&---------------------------------------------------------------------*
*&??????Form??SET_LISTBOX_VALUE
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?SET_LISTBOX_VALUE?.
??DATA:
??????????LV_I_DOMTAB??TYPE?STANDARD?TABLE?OF?DD07V,
??????????LV_WA_DOMTAB?TYPE?DD07V.
??IF?I_LIST?IS?INITIAL.
????CALL?FUNCTION?'DD_DOMVALUES_GET'
??????EXPORTING
????????DOMNAME??????????????=?'ZDEPT'
???????TEXT?????????????????=?'X'
???????LANGU????????????????=?SY-LANGU
*???BYPASS_BUFFER????????=?'?'
*?IMPORTING
*???RC???????????????????=
??????TABLES
????????DD07V_TAB????????????=?LV_I_DOMTAB
*?EXCEPTIONS
*???WRONG_TEXTFLAG???????=?1
*???OTHERS???????????????=?2
??????????????.
????IF?SY-SUBRC?=?0.
??????LOOP?AT?LV_I_DOMTAB?INTO?LV_WA_DOMTAB.
????????CLEAR?WA_LIST.
????????WA_LIST-KEY?=?LV_WA_DOMTAB-DOMVALUE_L.
????????WA_LIST-TEXT?=?LV_WA_DOMTAB-DDTEXT.
????????APPEND?WA_LIST?TO?I_LIST.
??????ENDLOOP.
????ENDIF.
??ENDIF.
??CALL?FUNCTION?'VRM_SET_VALUES'
????EXPORTING
??????ID????????????????????=?'WA_STAFF-DEPT'
??????VALUES????????????????=?I_LIST
*???EXCEPTIONS
*?????ID_ILLEGAL_NAME???????=?1
*?????OTHERS????????????????=?2
????????????.
??IF?SY-SUBRC?<>?0.
*?MESSAGE?ID?SY-MSGID?TYPE?SY-MSGTY?NUMBER?SY-MSGNO
*?????????WITH?SY-MSGV1?SY-MSGV2?SY-MSGV3?SY-MSGV4.
??ENDIF.
ENDFORM.????????????????????"?SET_LISTBOX_VALUE
*&---------------------------------------------------------------------*
*&??????Form??HANDLE_DOUBLE_CLICK
*&---------------------------------------------------------------------*
*???????Double?Click?method
*----------------------------------------------------------------------*
*??????-->P_E_ROW??text
*??????-->P_E_COLUMN??text
*----------------------------------------------------------------------*
FORM?HANDLE_DOUBLE_CLICK??USING?FU_ROW??FU_COLUMN.????????"#EC?*?"#EC?*
??READ?TABLE?I_STAFF?INTO?WA_STAFF?INDEX?FU_ROW.
??SELECT?SINGLE?*
????FROM?ZSTAFF
????INTO?ZSTAFF
????WHERE?ZNUM?=?WA_STAFF-ZNUM.
??GV_DOUBLE?=?'X'.
??GV_FLAG?=?'X'.
??CALL?SCREEN?9000.
ENDFORM.????????????????????"?HANDLE_DOUBLE_CLICK
*&---------------------------------------------------------------------*
*&??????Module??STATUS_9003??OUTPUT
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
MODULE?STATUS_9003?OUTPUT.
??SET?PF-STATUS?'9003'.
??SET?TITLEBAR?'TITLE'?WITH?TEXT-023.
ENDMODULE.?????????????????"?STATUS_9003??OUTPUT
*&---------------------------------------------------------------------*
*&??????Module??USER_COMMAND_9003??INPUT
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
MODULE?USER_COMMAND_9003?INPUT.
??CASE?OK_CODE3.
????WHEN?'CANCEL'?OR?'CANC'.
??????LEAVE?TO?SCREEN?0.
????WHEN?'DOWN'.
??????PERFORM?FRM_CHECK_FOLD.
??????PERFORM?FRM_DOWNLOAD_EXCEL.
????WHEN?OTHERS.
??ENDCASE.
??CLEAR?:?OK_CODE3.
ENDMODULE.?????????????????"?USER_COMMAND_9003??INPUT
*&---------------------------------------------------------------------*
*&??????Form??FRM_CHECK_FOLD
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?FRM_CHECK_FOLD?.
??DATA:
*?Return?value
????????LV_RETURN??????TYPE?C.
*?Check?file?path?for?downloading?valid
??CALL?FUNCTION?'WS_QUERY'
????EXPORTING
??????FILENAME?=?GV_FILE
??????QUERY????=?'DE'
????IMPORTING
??????RETURN???=?LV_RETURN
????EXCEPTIONS??????????????????????????????????????????????"#EC?*
??????OTHERS???=?1.
??IF?LV_RETURN?<>?'1'.
????SET?CURSOR?FIELD?'GV_FILE'.
????MESSAGE?TEXT-028?TYPE?'I'.
??ELSE.
????CONCATENATE?GV_FILE?C_FILE?INTO?GV_FILE.
??ENDIF.
ENDFORM.????????????????????"?FRM_CHECK_FOLD
*&---------------------------------------------------------------------*
*&??????Form??FRM_DOWNLOAD_EXCEL
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?FRM_DOWNLOAD_EXCEL?.
??DATA:
??????LV_STR????TYPE?CHAR255,
??????LV_RETURN?TYPE?I,
??????LV_RESULT?TYPE?C,
??????LV_FILENAME1?TYPE?STRING,
??????LV_FILENAME??TYPE?LOCALFILE,
??????I_DOWN_DATA??TYPE?STANDARD?TABLE?OF?T_DATA,
??????LV_WA_DATA???TYPE?T_DATA.
??LV_FILENAME?=?GV_FILE.
*?set?excel?head?name
??CLEAR?LV_WA_DATA.
??REFRESH?I_DOWN_DATA.
??LV_WA_DATA-F_01?=?TEXT-H01.
??LV_WA_DATA-F_02?=?TEXT-H02.
??LV_WA_DATA-F_03?=?TEXT-H03.
??LV_WA_DATA-F_04?=?TEXT-H04.
??LV_WA_DATA-F_05?=?TEXT-H05.
??LV_WA_DATA-F_06?=?TEXT-H06.
??LV_WA_DATA-F_07?=?TEXT-H07.
??APPEND?LV_WA_DATA?TO?I_DOWN_DATA.
??LV_FILENAME1?=?LV_FILENAME.
??CALL?METHOD?CL_GUI_FRONTEND_SERVICES=>FILE_EXIST
????EXPORTING
??????FILE?????????????????=?LV_FILENAME1
????RECEIVING
??????RESULT???????????????=?LV_RESULT
????EXCEPTIONS
??????CNTL_ERROR???????????=?1
??????ERROR_NO_GUI?????????=?2
??????WRONG_PARAMETER??????=?3
??????NOT_SUPPORTED_BY_GUI?=?4
??????OTHERS???????????????=?5.
??IF?LV_RESULT?=?'X'.
????CALL?METHOD?CL_GUI_FRONTEND_SERVICES=>FILE_DELETE
??????EXPORTING
????????FILENAME?????????????=?LV_FILENAME1
??????CHANGING
????????RC???????????????????=?LV_RETURN
??????EXCEPTIONS
????????FILE_DELETE_FAILED???=?1
????????CNTL_ERROR???????????=?2
????????ERROR_NO_GUI?????????=?3
????????FILE_NOT_FOUND???????=?4
????????ACCESS_DENIED????????=?5
????????UNKNOWN_ERROR????????=?6
????????NOT_SUPPORTED_BY_GUI?=?7
????????WRONG_PARAMETER??????=?8
????????OTHERS???????????????=?9.
??ENDIF.
??CALL?FUNCTION?'SAP_CONVERT_TO_XLS_FORMAT'
????EXPORTING
*?????I_FIELD_SEPERATOR??????????=?'X'
*?????I_LINE_HEADER??????????????=
??????I_FILENAME?????????????????=?LV_FILENAME
*?????I_APPL_KEEP????????????????=?'?'
????TABLES
??????I_TAB_SAP_DATA?????????????=?I_DOWN_DATA
*???CHANGING
*?????I_TAB_CONVERTED_DATA???????=
???EXCEPTIONS
?????CONVERSION_FAILED??????????=?1
?????OTHERS?????????????????????=?2.
??IF?SY-SUBRC?=?0.
????CONCATENATE?TEXT-029?LV_FILENAME?INTO?LV_STR.
????MESSAGE?LV_STR?TYPE?'S'.
????CLEAR?:LV_FILENAME?,?GV_FILE.
????LEAVE?TO?SCREEN?0.
??ELSE.
????MESSAGE?ID?SY-MSGID?TYPE?'I'?NUMBER?SY-MSGNO
??????????WITH?SY-MSGV1?SY-MSGV2?SY-MSGV3?SY-MSGV4
??????????DISPLAY?LIKE?SY-MSGTY.
??ENDIF.
ENDFORM.????????????????????"?FRM_DOWNLOAD_EXCEL
*&---------------------------------------------------------------------*
*&??????Module??GET_FILENAME??INPUT
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
MODULE?GET_FILEPATH?INPUT.
*?Get?file?path
??CALL?FUNCTION?'TMP_GUI_BROWSE_FOR_FOLDER'
????EXPORTING
??????WINDOW_TITLE????=?''
??????INITIAL_FOLDER??=?'D:\'
????IMPORTING
??????SELECTED_FOLDER?=?GV_FILE
????EXCEPTIONS??????????????????????????????????????????????"#EC?*
??????CNTL_ERROR??????=?1
??????OTHERS??????????=?2.
??IF?SY-SUBRC?=?0.
*????CONCATENATE?GV_FILE?C_FILE?INTO?GV_FILE.
??ENDIF.
ENDMODULE.?????????????????"?GET_FILENAME??INPUT
*&---------------------------------------------------------------------*
*&??????Module??STATUS_9004??OUTPUT
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
MODULE?STATUS_9004?OUTPUT.
??SET?PF-STATUS?'9003'.
??SET?TITLEBAR?'TITLE'?WITH?TEXT-024.
ENDMODULE.?????????????????"?STATUS_9004??OUTPUT
*&---------------------------------------------------------------------*
*&??????Module??USER_COMMAND_9004??INPUT
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
MODULE?USER_COMMAND_9004?INPUT.
??CASE?OK_CODE4.
????WHEN?'CANCEL'.
??????LEAVE?TO?SCREEN?0.
????WHEN?'UPLOAD'.
??????PERFORM?FRM_CHECK_FILE.
????WHEN?OTHERS.
??ENDCASE.
??CLEAR?:?OK_CODE4.
ENDMODULE.?????????????????"?USER_COMMAND_9004??INPUT
*&---------------------------------------------------------------------*
*&??????Form??FRM_UPLOAD_EXCEL
*&---------------------------------------------------------------------*
*???????文件上傳
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?FRM_UPLOAD_EXCEL?.
??DATA?:
????????LV_W_EXCEL???TYPE?ALSMEX_TABLINE,
????????LV_I_EXCEL???TYPE?STANDARD?TABLE?OF?ALSMEX_TABLINE.
??CALL?FUNCTION?'ALSM_EXCEL_TO_INTERNAL_TABLE'
????EXPORTING
??????FILENAME??????????????????????=?GV_UPLOAD
??????I_BEGIN_COL???????????????????=?1?????????"起始列
??????I_BEGIN_ROW???????????????????=?2?????????"起始行
??????I_END_COL?????????????????????=?7
??????I_END_ROW?????????????????????=?9999
????TABLES
??????INTERN????????????????????????=?LV_I_EXCEL
*?EXCEPTIONS
*???INCONSISTENT_PARAMETERS???????=?1
*???UPLOAD_OLE????????????????????=?2
*???OTHERS????????????????????????=?3
????????????.
??IF?SY-SUBRC?<>?0.
*?MESSAGE?ID?SY-MSGID?TYPE?SY-MSGTY?NUMBER?SY-MSGNO
*?????????WITH?SY-MSGV1?SY-MSGV2?SY-MSGV3?SY-MSGV4.
??ENDIF.
??SORT?LV_I_EXCEL?BY?ROW?COL.
??LOOP?AT?LV_I_EXCEL?INTO?LV_W_EXCEL?.
????IF?LV_W_EXCEL-COL?=?1.
??????WA_UPLOAD-ZNUM?=?LV_W_EXCEL-VALUE.
????ENDIF.
????IF?LV_W_EXCEL-COL?=?2.
??????WA_UPLOAD-ZNAME?=?LV_W_EXCEL-VALUE.
????ENDIF.
????IF?LV_W_EXCEL-COL?=?3.
??????WA_UPLOAD-ZPOST?=?LV_W_EXCEL-VALUE.
????ENDIF.
????IF?LV_W_EXCEL-COL?=?4.
??????WA_UPLOAD-EDATE?=?LV_W_EXCEL-VALUE.
????ENDIF.
????IF?LV_W_EXCEL-COL?=?5.
??????WA_UPLOAD-ZID?=?LV_W_EXCEL-VALUE.
????ENDIF.
????IF?LV_W_EXCEL-COL?=?6.
??????WA_UPLOAD-REMARK?=?LV_W_EXCEL-VALUE.
????ENDIF.
????IF?LV_W_EXCEL-COL?=?7.
??????WA_UPLOAD-DEPT?=?LV_W_EXCEL-VALUE.
????ENDIF.
????AT?END?OF?ROW.
??????WA_UPLOAD-UNAME?=?SY-UNAME.
??????WA_UPLOAD-ERDAT?=?SY-DATUM.
??????WA_UPLOAD-UZEIT?=?SY-UZEIT.
??????APPEND?WA_UPLOAD?TO?I_UPLOAD.
??????CLEAR?WA_UPLOAD.
????ENDAT.
??ENDLOOP.
??IF?GV_TFLAG?=?''.
*?直接上傳
????IF?I_UPLOAD?IS?NOT?INITIAL.
??????INSERT?ZSTAFF?FROM?TABLE?I_UPLOAD?ACCEPTING?DUPLICATE?KEYS.
??????IF?SY-SUBRC?=?0.
????????COMMIT?WORK.
????????MESSAGE?TEXT-008?TYPE?'S'.
????????CLEAR?:?GV_UPLOAD.
????????LEAVE?TO?SCREEN?0.
??????ELSE.
????????ROLLBACK?WORK.
????????MESSAGE?TEXT-019?TYPE?'I'.
????????CLEAR?:?GV_UPLOAD.
????????LEAVE?TO?SCREEN?0.
??????ENDIF.
????ENDIF.
??ELSE.
*?上傳到Table
????LOOP?AT?I_UPLOAD?INTO?WA_UPLOAD.
??????MOVE-CORRESPONDING?WA_UPLOAD?TO?WA_STAFF.
??????APPEND?WA_STAFF?TO?I_STAFF.
????ENDLOOP.
????LEAVE?TO?SCREEN?0.
??ENDIF.
ENDFORM.????????????????????"?FRM_UPLOAD_EXCEL
*&---------------------------------------------------------------------*
*&??????Module??GET_F4_HELP??INPUT
*&---------------------------------------------------------------------*
*???????上傳文件F4幫助
*----------------------------------------------------------------------*
MODULE?GET_F4_HELP?INPUT.
??CALL?FUNCTION?'WS_FILENAME_GET'
?????EXPORTING
*???DEF_FILENAME???????????=?'?'
???????DEF_PATH???????????????=?C_FOLD
???????MASK???????????????????=?C_MASK
???????MODE???????????????????=?C_MODE_O
???????TITLE??????????????????=?C_NAME
?????IMPORTING
???????FILENAME???????????????=??GV_UPLOAD
*???RC?????????????????????=
???EXCEPTIONS
?????INV_WINSYS?????????????=?1
?????NO_BATCH???????????????=?2
?????SELECTION_CANCEL???????=?3
?????SELECTION_ERROR????????=?4
?????OTHERS?????????????????=?5
??????????????.
??IF?SY-SUBRC?<>?0.
*?MESSAGE?ID?SY-MSGID?TYPE?SY-MSGTY?NUMBER?SY-MSGNO
*?????????WITH?SY-MSGV1?SY-MSGV2?SY-MSGV3?SY-MSGV4.
??ENDIF.
ENDMODULE.?????????????????"?GET_F4_HELP??INPUT
*&---------------------------------------------------------------------*
*&??????Form??FRM_CHECK_FILE
*&---------------------------------------------------------------------*
*???????檢查上傳文件有效性
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?FRM_CHECK_FILE?.
??DATA?:
??????????LV_RESULT?TYPE?C.
??IF?GV_UPLOAD?IS?NOT?INITIAL.
????CALL?FUNCTION?'TMP_GUI_GET_FILE_EXIST'
??????EXPORTING
????????FNAME??????????=?GV_UPLOAD
??????IMPORTING
????????EXIST??????????=?LV_RESULT
*???????ISDIR??????????=
*???????FILESIZE???????=
??????EXCEPTIONS
????????FILEINFO_ERROR?=?1
????????OTHERS?????????=?2.
????IF?LV_RESULT?<>?'X'.
??????SET?CURSOR?FIELD?'GV_UPLOAD'.
??????MESSAGE?TEXT-025?TYPE?'I'.
????ELSE.
??????PERFORM?FRM_UPLOAD_EXCEL.
????ENDIF.
??ELSE.
????SET?CURSOR?FIELD?'GV_UPLOAD'.
????MESSAGE?TEXT-026?TYPE?'I'.
??ENDIF.
ENDFORM.????????????????????"?FRM_CHECK_FILE
*&---------------------------------------------------------------------*
*&??????Form??FRM_DEL_SEL
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?FRM_DEL_SEL?.
??DATA?:?LV_RETURN?TYPE?C.??????????????????????????????????"#EC?*
??CLEAR?:?WA_STAFF?,?LV_RETURN.
*?Get?the?selected?line?in?ALV
??CALL?METHOD?GV_ALV->GET_SELECTED_ROWS
????IMPORTING
??????ET_ROW_NO?=?LT_ROW.
??IF?LT_ROW?IS?INITIAL.
????MESSAGE?TEXT-027?TYPE?'I'.
??ENDIF.
??LOOP??AT??LT_ROW?INTO??LS_ROW?FROM?1?TO?1.
????READ??TABLE??I_STAFF?INTO?WA_STAFF?INDEX??LS_ROW-ROW_ID.
??ENDLOOP?.
??IF?WA_STAFF?IS?NOT?INITIAL.
????CALL?FUNCTION?'POPUP_TO_CONFIRM_STEP'???????????????????"#EC?*
???????EXPORTING
?????????DEFAULTOPTION??=?'Y'
?????????TEXTLINE1??????=?TEXT-I03
?????????TITEL??????????=?TEXT-I04
?????????CANCEL_DISPLAY?=?''
???????IMPORTING
?????????ANSWER?????????=?LV_RETURN.
????IF?LV_RETURN?=?'J'.
??????MESSAGE?TEXT-035?TYPE?'W'.
??????CALL?FUNCTION?'ENQUEUE_EZSTAFF'
????????EXPORTING
??????????MODE_ZSTAFF??????????=?'E'
??????????MANDT????????????????=?SY-MANDT
??????????ZNUM?????????????????=?WA_STAFF-ZNUM
*????????????X_ZNUM???????????????=?'?'
*????????????_SCOPE???????????????=?'2'
*????????????_WAIT????????????????=?'?'
*????????????_COLLECT?????????????=?'?'
????????EXCEPTIONS
??????????FOREIGN_LOCK?????????=?1
??????????SYSTEM_FAILURE???????=?2
??????????OTHERS???????????????=?3
?????????????????.
??????DELETE?ZSTAFF?FROM?WA_STAFF.
??????IF?SY-SUBRC?=?0.
????????CALL?FUNCTION?'DEQUEUE_EZSTAFF'
?????????EXPORTING
???????????MODE_ZSTAFF???????=?'E'
???????????MANDT?????????????=?SY-MANDT
???????????ZNUM??????????????=?ZSTAFF-ZNUM
*???????X_ZNUM????????????=?'?'
*???????_SCOPE????????????=?'3'
*???????_SYNCHRON?????????=?'?'
*???????_COLLECT??????????=?'?'
??????????????????.
????????COMMIT?WORK.
????????MESSAGE?TEXT-013?TYPE?'S'.
????????PERFORM?FRM_GET_DATA.
????????CALL?METHOD?GV_ALV->REFRESH_TABLE_DISPLAY(?).
??????ENDIF.
????ENDIF.
??ENDIF.
ENDFORM.????????????????????"?FRM_DEL_SEL
*&---------------------------------------------------------------------*
*&??????Form??FRM_UPDATE_STAUTS
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?FRM_UPDATE_STAUTS?.
??DATA?:?I_UPDATE?TYPE?STANDARD?TABLE?OF?ZSTAFF,
?????????WA_UPDATE?TYPE?ZSTAFF.
??SELECT?*
????FROM?ZSTAFF
????INTO?CORRESPONDING?FIELDS?OF?TABLE?I_UPDATE.
??IF?SY-SUBRC?=?0.
????LOOP?AT?I_UPDATE?INTO?WA_UPDATE.
??????IF?WA_UPDATE-STATUS?<>?'X'.
????????WA_UPDATE-STATUS?=?''.
??????ENDIF.
??????IF?WA_UPDATE-LEADER?<>?'X'.
????????WA_UPDATE-LEADER?=?''.
??????ENDIF.
??????MODIFY?I_UPDATE?FROM?WA_UPDATE.
????ENDLOOP.
????MODIFY?ZSTAFF?FROM?TABLE?I_UPDATE.
????IF?SY-SUBRC?=?0?.
??????COMMIT?WORK.
??????CLEAR?:?WA_UPDATE.
??????REFRESH?:?I_UPDATE.
??????MESSAGE?'人員狀態更新成功!'?TYPE?'S'.
????ELSE.
??????ROLLBACK?WORK.
??????CLEAR?:?WA_UPDATE.
??????REFRESH?:?I_UPDATE.
??????MESSAGE?'更新失敗,請自尋原因!'?TYPE?'S'.
????ENDIF.
??ENDIF.
ENDFORM.????????????????????"?FRM_UPDATE_STAUTS
總結
- 上一篇: 如何修改SAP登录界面的文字
- 下一篇: 去物理文件名字