*&---------------------------------------------------------------------*
*& Report  ZHRPA038
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT ZHRPA038.
TABLES:PERNR.
INFOTYPES:0000,0001,0002.
INFOTYPES:0008.

TYPES:BEGIN OF TY_RESULT,
        CHANGE_TYPE TYPE C LENGTH 30, "异动类型
        DTEXT       TYPE UTEXT,       "变动范围  Add by xpf 20160506
        SITE_YN     TYPE C LENGTH 6,    "SITE是否变更  Add by cx 20160106
        GO_OR_NOT   TYPE C LENGTH 6,  "是否需要改签合同
        BEGDA       TYPE PA0001-BEGDA, "生效日期
        SAP_NUMBER  TYPE PA0001-PERNR, "SAP编号
        NUMBER      TYPE C LENGTH 20, "工号    “根据SAP编号从IT0002取出调动后原工号
        ENAME       TYPE PA0001-ENAME, "姓名
        FIRST_NAME  TYPE C LENGTH 10, "姓拼音
        LAST_NAME   TYPE C LENGTH 30, "名拼音
        NEW_SITE    TYPE C LENGTH 40,    "现SITE  Add by cx 20160106 (根据调动后人事范围对应调动后SITE)
        NEW_HETONG  TYPE C LENGTH 40, "现劳动合同
        NEW_OBJID_1 TYPE C LENGTH 40, "现一级部门
        NEW_OBJID_2 TYPE C LENGTH 40, "现二级部门
        NEW_OBJID_3 TYPE C LENGTH 40, "现三级部门
        NEW_OBJID_4 TYPE C LENGTH 40, "现四级部门
        NEW_OBJID_5 TYPE C LENGTH 40, "现部门编码
        NEW_PLANS   TYPE C LENGTH 80, "现职位
        ZZ_BZ       TYPE C LENGTH 40,    "备注    Add by cx 20160106 (P0008-ZZ_BZ)
        ZZ_ORI_NO   TYPE C LENGTH 40,    "原工号  Add by cx 20160106 (P0002-ZZ_ORI_NO)
        OLD_SITE    TYPE C LENGTH 40,    "原SITE  Add by cx 20160106 (Site划分配置表:Z02_T_DEPTSITE)[???]
        OLD_HETONG  TYPE C LENGTH 40, "原劳动合同公司
        OLD_OBJID_1 TYPE C LENGTH 40, "原一级部门
        OLD_OBJID_2 TYPE C LENGTH 40, "原二级部门
        OLD_OBJID_3 TYPE C LENGTH 40, "原三级部门
        OLD_OBJID_4 TYPE C LENGTH 40, "原四级部门
        OLD_PLANS   TYPE C LENGTH 80, "原职位
      END OF TY_RESULT.
DATA:G_O1 TYPE HRP1000-SHORT,
     G_O2 TYPE HRP1000-SHORT,
     G_O3 TYPE HRP1000-SHORT,
     G_O4 TYPE HRP1000-SHORT.
DATA:GT_RESULT TYPE STANDARD TABLE OF TY_RESULT,
     GW_RESULT TYPE TY_RESULT.
DATA:GT_T530T TYPE STANDARD TABLE OF T530T,
     GW_T530T TYPE T530T,
     GT_T588T TYPE STANDARD TABLE OF T588T,   "Add by xpf 20160506
     GW_T588T TYPE T588T,                     "Add by xpf 20160506
     GT_T500P TYPE STANDARD TABLE OF T500P,
     GW_T500P TYPE T500P.
DATA:G_DAT LIKE SY-DATUM.
DATA:GW_P0001 TYPE P0001.
DATA:GDF_PATH     TYPE STRING, "add by shikai.liao
     GDF_FILENAME TYPE STRING,
     GDF_FULLPATH TYPE STRING.

INITIALIZATION.

AT SELECTION-SCREEN OUTPUT.

START-OF-SELECTION.
  SELECT *
    FROM T500P
  INTO CORRESPONDING FIELDS OF TABLE GT_T500P.
  IF SY-LANGU = '1'.
    SELECT *
      FROM T530T
      INTO CORRESPONDING FIELDS OF TABLE GT_T530T
      WHERE ( MASSN = 'ZC' OR MASSN = 'ZS' OR MASSN = 'ZT' )  "Add by xpf 20160318增加跨薪资范围调动
        AND SPRSL = SY-LANGU.
*&->add by cx 20170106 增加“ZA员工雇用”且操作原因为“A1 TCL内调”的员工
    SELECT *
      FROM T530T
 APPENDING CORRESPONDING FIELDS OF TABLE GT_T530T
     WHERE MASSN = 'ZA'
       AND MASSG = 'A1'
       AND SPRSL = SY-LANGU.
*&->end add.
  ELSE.
    SELECT *
    FROM T530T
    INTO CORRESPONDING FIELDS OF TABLE GT_T530T
    WHERE ( MASSN = 'ZC' OR MASSN = 'ZS' OR MASSN = 'ZT' )  "Add by xpf 20160318增加跨薪资范围调动
    AND SPRSL = 'E'.
*&->add by cx 20170106 增加“ZA员工雇用”且操作原因为“A1 TCL内调”的员工
    SELECT *
      FROM T530T
 APPENDING CORRESPONDING FIELDS OF TABLE GT_T530T
     WHERE MASSN = 'ZA'
       AND MASSG = 'A1'
       AND SPRSL = 'E'.
*&->end add.

*&+get SITE.

ENDIF.
*-------------Add by xpf 20160506取变动范围文本----------------*Begin
  CLEAR GT_T588T.
  IF SY-LANGU = '1'.
    SELECT *
      FROM T588T
      INTO CORRESPONDING FIELDS OF TABLE GT_T588T
      WHERE SPRSL = SY-LANGU
        AND MNTYP = 'G'
        AND ( MENUE = 'ZC' OR MENUE = 'ZS' OR MENUE = 'ZT'   OR MENUE = 'ZA')."add by cx on 20160107 add员工雇用操作取值
  ELSE.
    SELECT *
    FROM T588T
    INTO CORRESPONDING FIELDS OF TABLE GT_T588T
    WHERE SPRSL = 'E'
        AND MNTYP = 'G'
        AND ( MENUE = 'ZC' OR MENUE = 'ZS' OR MENUE = 'ZT'   OR MENUE = 'ZA')."add by cx on 20160107 add员工雇用操作取值
  ENDIF.
*-------------Add by xpf 20160506取变动范围文本----------------*End
  GET PERNR.
  SORT P0000[] BY BEGDA.
*--------Modified by xpf 20160318---------*Begin
  DELETE  P0000[] WHERE MASSN NE 'ZC' AND MASSN NE 'ZS' AND MASSN NE 'ZT' AND  MASSN NE 'ZA'."AND MASSG NE 'A1' ).
*&->add
  DELETE  P0000[] WHERE MASSN = 'ZA' AND MASSG NE 'A1' .

DELETE  P0000[] WHERE BEGDA < PN-BEGDA OR BEGDA > PN-ENDDA .
*  DELETE  p0000[] WHERE massn <> 'ZC' OR ( begda < pn-begda OR begda > pn-endda ).
*--------Modified by xpf 20160318---------*End
  LOOP AT P0000.
    READ TABLE GT_T530T INTO GW_T530T WITH KEY MASSG = P0000-MASSG.
    IF SY-SUBRC EQ 0.
      GW_RESULT-CHANGE_TYPE = GW_T530T-MGTXT.
    ENDIF.
*-------------Add by xpf 20160506取变动范围文本----------------*Begin
    CLEAR GW_T588T.
    READ TABLE GT_T588T INTO GW_T588T WITH KEY MENUE = P0000-MASSN.
    IF SY-SUBRC EQ 0.
      GW_RESULT-DTEXT = GW_T588T-DTEXT.
    ENDIF.
*-------------Add by xpf 20160506取变动范围文本----------------*End
    GW_RESULT-BEGDA = P0000-BEGDA.
    G_DAT = P0000-BEGDA - 1.
    GW_RESULT-GO_OR_NOT = 'N'.
*&->Add cx xpf 20170106 SITE是否变更
    GW_RESULT-SITE_YN = 'N'.
*&->end add

READ TABLE P0001 INTO GW_P0001 WITH KEY ENDDA = G_DAT.
    
IF SY-SUBRC EQ 0."之前的组织信息
      
CLEAR:G_O4,G_O3,G_O2,G_O1.
      
CALL FUNCTION 'ZHR_GET_STRUC'
        
EXPORTING
          ORGEH  
= GW_P0001-ORGEH
          BEGDA  
= GW_P0001-ENDDA
          ENDDA  
= GW_P0001-ENDDA
        
IMPORTING
          SHORT1 
= G_O1
          SHORT2 
= G_O2
          SHORT3 
= G_O3
          SHORT4 
= G_O4.
      GW_RESULT
-OLD_OBJID_1 = G_O1.
      GW_RESULT
-OLD_OBJID_2 = G_O2.
      GW_RESULT
-OLD_OBJID_3 = G_O3.
      GW_RESULT
-OLD_OBJID_4 = G_O4.
      
"取得长文本(职位)
      
SELECT SINGLE STEXT
        
INTO GW_RESULT-OLD_PLANS
        
FROM HRP1000
        
WHERE PLVAR = '01'
        
AND OTYPE = 'S'
        
AND OBJID = GW_P0001-PLANS
        
AND BEGDA <= G_DAT
        
AND ENDDA >= G_DAT
      
AND LANGU = '1'.

*&->add by cx on 20170106 +取得原SITE

*PERSA  人事范围

*BTRTL  人事子范围
      
SELECT SINGLE SITE
        
INTO GW_RESULT-OLD_SITE
        
FROM Z02_T_DEPTSITE
       
WHERE PERSA = GW_P0001-WERKS
         
AND BTRTL = GW_P0001-BTRTL
         
AND BEGDA <= G_DAT
         
AND ENDDA >= G_DAT.

READ TABLE GT_T500P INTO GW_T500P WITH KEY PERSA = GW_P0001-WERKS.
      
IF SY-SUBRC EQ 0.
        GW_RESULT
-OLD_HETONG = GW_T500P-NAME1.
      
ENDIF.
      
READ TABLE P0001 WITH KEY BEGDA = P0000-BEGDA."目前的信息
      
IF SY-SUBRC EQ 0.

CLEAR:G_O4,G_O3,G_O2,G_O1.
        
CALL FUNCTION 'ZHR_GET_STRUC'
          
EXPORTING
            ORGEH  
= P0001-ORGEH
            BEGDA  
= P0001-BEGDA
            ENDDA  
= P0001-BEGDA
          
IMPORTING
            SHORT1 
= G_O1
            SHORT2 
= G_O2
            SHORT3 
= G_O3
            SHORT4 
= G_O4.
        GW_RESULT
-NEW_OBJID_1 = G_O1.
        GW_RESULT
-NEW_OBJID_2 = G_O2.
        GW_RESULT
-NEW_OBJID_3 = G_O3.
        GW_RESULT
-NEW_OBJID_4 = G_O4.
        GW_RESULT
-NEW_OBJID_5 = P0001-ORGEH.

*& 现职位
        
SELECT SINGLE STEXT
     
INTO GW_RESULT-NEW_PLANS
     
FROM HRP1000
     
WHERE PLVAR = '01'
     
AND OTYPE = 'S'
     
AND OBJID = P0001-PLANS
     
AND BEGDA <= P0001-BEGDA
     
AND ENDDA >= P0001-BEGDA
   
AND LANGU = '1'.

*&add by cx on 20160106 +现SITE
        
SELECT SINGLE SITE
          
INTO GW_RESULT-NEW_SITE
          
FROM Z02_T_DEPTSITE
         
WHERE PERSA = P0001-WERKS
           
AND BTRTL = P0001-BTRTL
           
AND BEGDA <= P0001-BEGDA
           
AND ENDDA >= P0001-BEGDA.

* if GW_RESULT-SITE_NOW NE SPAEC.
        
IF GW_RESULT-NEW_SITE NE GW_RESULT-OLD_SITE.
          GW_RESULT
-SITE_YN = 'Y'.
        
ELSE.
          GW_RESULT
-SITE_YN = 'N'.
        
ENDIF.

READ TABLE GT_T500P INTO GW_T500P WITH KEY PERSA = P0001-WERKS.
        
IF SY-SUBRC EQ 0.
          GW_RESULT
-NEW_HETONG = GW_T500P-NAME1.
          
IF GW_P0001-WERKS <> P0001-WERKS.
            GW_RESULT
-GO_OR_NOT = 'Y'.
          
ENDIF.
        
ENDIF.
      
ENDIF.

ENDIF.

LOOP AT P0002 WHERE BEGDA <= P0000-BEGDA AND ENDDA >= P0000-BEGDA.
      GW_RESULT
-SAP_NUMBER = P0000-PERNR.
      GW_RESULT
-ENAME = P0002-NACHN.
      GW_RESULT
-FIRST_NAME = P0002-INITS.
      GW_RESULT
-LAST_NAME = P0002-VORNA.
      GW_RESULT
-NUMBER = P0002-ZZ_ORI_NO.
      
EXIT.
    
ENDLOOP.

*&->add by cx on 20170106 原工号

*  GW_RESULT-ZZ_ORI_NO = P0002-ZZ_ORI_NO.
    
LOOP AT P0002 WHERE ENDDA <= P0000-BEGDA.
      GW_RESULT
-ZZ_ORI_NO = P0002-ZZ_ORI_NO.
      
EXIT.
    
ENDLOOP.

* SELECT SINGLE

*&->end add.

*&->add by cx on 20170106 find 备注
    
LOOP AT P0008 WHERE BEGDA <= P0000-BEGDA AND ENDDA >= P0000-BEGDA.
      GW_RESULT
-ZZ_BZ = P0008-ZZ_BZ.
      
EXIT.
    
ENDLOOP.

APPEND GW_RESULT TO GT_RESULT.
    
CLEAR GW_RESULT.

ENDLOOP.

END-OF-SELECTION.
  
PERFORM FRM_EXPORT_DATA.

FORM FRM_EXPORT_DATA .
  
DATA:LDF_PATH TYPE LOCALFILE.
  
.
  
"弹出路径框
  
CLEAR: GDF_PATH,
         GDF_FILENAME
,
         GDF_FULLPATH
.
  
PERFORM FRM_GET_PATH_038 CHANGING GDF_PATH GDF_FILENAME GDF_FULLPATH .
  
IF GDF_FULLPATH IS INITIAL .
    
MESSAGE '请选择要保存的文件夹和输入文件名' TYPE 'I'.
  
ELSE.
    
CLEAR LDF_PATH.
    
MOVE GDF_FULLPATH TO LDF_PATH.

PERFORM FRM_OUTPUT_EXCEL_38 TABLES GT_RESULT USING 'ZHRPA038' LDF_PATH .

*    PERFORM FRM_OUTPUT_EXCEL_38 TABLES GT_RESULT USING 'zhrpa038_C1' LDF_PATH .
  
ENDIF.

ENDFORM.                    " FRM_EXPORT_DATA

FORM FRM_GET_PATH_038 CHANGING:FU_PATH
                           FU_FILENAME
                           FU_FULLPATH

.

CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
    
EXPORTING
      WINDOW_TITLE              
= 'Select Folder and Enter Filename to Save File'
      DEFAULT_EXTENSION         
= 'xls' "'xlsx'

*     DEFAULT_FILE_NAME         =

*     WITH_ENCODING             =
      FILE_FILTER               
= '*.xls' "'*.xlsx'

*     INITIAL_DIRECTORY         =

*     PROMPT_ON_OVERWRITE       = 'X'
    
CHANGING
      FILENAME                  
= FU_FILENAME
      PATH                      
= FU_PATH
      FULLPATH                  
= FU_FULLPATH

*     USER_ACTION               =

*     FILE_ENCODING             =
    
EXCEPTIONS
      CNTL_ERROR                
= 1
      ERROR_NO_GUI              
= 2
      NOT_SUPPORTED_BY_GUI      
= 3
      INVALID_DEFAULT_FILE_NAME 
= 4
      
OTHERS                    = 5.
  
IF SY-SUBRC <> 0.

*   Implement suitable error handling here
  
ENDIF.

*   CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG

*     EXPORTING

*       WINDOW_TITLE         = 'Select Folder to Save File'

*    CHANGING

*       SELECTED_FOLDER      = gdf_path

*     EXCEPTIONS

*       CNTL_ERROR           = 1

*       ERROR_NO_GUI         = 2

*       NOT_SUPPORTED_BY_GUI = 3

*       OTHERS               = 4.

*   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.                    " FRM_GET_PATH

FORM FRM_OUTPUT_EXCEL_38 TABLES PT_EXCEL TYPE STANDARD TABLE
                                    
USING PV_TEMPLATE TYPE BDS_PROPVA
                                          PV_FILE     
TYPE LOCALFILE.

DATA:L_IREF_TEMPLATE    TYPE REF TO CL_BDS_DOCUMENT_SET,
       L_OREF_CONTAINER   
TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
       L_IREF_CONTROL     
TYPE REF TO I_OI_CONTAINER_CONTROL,
       L_IREF_ERROR       
TYPE REF TO I_OI_ERROR,
       L_IREF_DOCUMENT    
TYPE REF TO I_OI_DOCUMENT_PROXY,
       L_IREF_SPREADSHEET 
TYPE REF TO I_OI_SPREADSHEET,
       L_RETCODE          
TYPE SOI_RET_STRING.

DATA: LT_SIGNATURE TYPE SBDST_SIGNATURE,
        LW_SIGNATURE 
TYPE BAPISIGNAT,
        LT_URI       
TYPE SBDST_URI,
        LW_URI       
TYPE BAPIURI,
        LT_SHEET     
TYPE SOI_SHEETS_TABLE,
        L_DOC        
TYPE CNTL_HANDLE ,
        L_APL        
TYPE OBJ_RECORD ,
        LW_SHEET     
TYPE SOI_SHEETS.

DATA: LT_FIELDS   TYPE STANDARD TABLE OF RFC_FIELDS,
        LS_FIELDS   
TYPE RFC_FIELDS,
        LV_LAST_ROW 
TYPE I,
        LV_LAST_COL 
TYPE I.
  
DATA:      GDF_ERROR  TYPE REF TO I_OI_ERROR,
             GDS_ERRORS 
TYPE REF TO I_OI_ERROR OCCURS 0 WITH HEADER LINE.

DATA:LDF_OBJECTKEY TYPE BAPIBDS01-OBJKEY.
  
CALL METHOD C_OI_CONTAINER_CONTROL_CREATOR=>GET_CONTAINER_CONTROL
    
IMPORTING
      
CONTROL = L_IREF_CONTROL
      RETCODE 
= L_RETCODE.

CHECK L_RETCODE = C_OI_ERRORS=>RET_OK.

CALL METHOD L_IREF_CONTROL->INIT_CONTROL
    
EXPORTING
      R3_APPLICATION_NAME      
= PV_TEMPLATE
      INPLACE_ENABLED          
= 'X'
      INPLACE_SCROLL_DOCUMENTS 
= 'X'
      PARENT                   
= L_OREF_CONTAINER
    
IMPORTING
      RETCODE                  
= L_RETCODE.
  
IF L_RETCODE <> C_OI_ERRORS=>RET_OK.
    
MESSAGE '保存Excel文件出错' TYPE 'E'.
  
ENDIF.
  
CHECK L_RETCODE = C_OI_ERRORS=>RET_OK.

CREATE OBJECT L_IREF_TEMPLATE.
  LW_SIGNATURE
-PROP_NAME  = 'BDS_KEYWORD'.
  LW_SIGNATURE
-PROP_VALUE = PV_TEMPLATE.
  
APPEND LW_SIGNATURE TO LT_SIGNATURE.

REFRESH LT_URI.
  
CLEAR LDF_OBJECTKEY.
  
MOVE PV_TEMPLATE TO LDF_OBJECTKEY.
  
CALL METHOD L_IREF_TEMPLATE->GET_WITH_URL
    
EXPORTING
      CLASSNAME       
= 'SOFFICEINTEGRATION'
      CLASSTYPE       
= 'OT'
      OBJECT_KEY      
= LDF_OBJECTKEY
    
CHANGING
      URIS            
= LT_URI
      SIGNATURE       
= LT_SIGNATURE
    
EXCEPTIONS
      NOTHING_FOUND   
= 1
      ERROR_KPRO      
= 2
      INTERNAL_ERROR  
= 3
      PARAMETER_ERROR 
= 4
      NOT_AUTHORIZED  
= 5
      NOT_ALLOWED     
= 6.

CLEAR LW_URI.
  
READ TABLE LT_URI INTO LW_URI INDEX 1.
  
IF SY-SUBRC <> 0.
    
MESSAGE '请检查EXCEL模板不存在或者设置不正确' TYPE 'E'.
  
ENDIF.
  
CHECK SY-SUBRC = 0.

CALL METHOD L_IREF_CONTROL->GET_DOCUMENT_PROXY
    
EXPORTING
      DOCUMENT_TYPE  
= 'Excel.Sheet'
    
IMPORTING
      DOCUMENT_PROXY 
= L_IREF_DOCUMENT
      RETCODE        
= L_RETCODE.
  
IF L_RETCODE <> C_OI_ERRORS=>RET_OK.
    
MESSAGE '保存Excel文件出错' TYPE 'E'.
  
ENDIF.
  
CHECK L_RETCODE = C_OI_ERRORS=>RET_OK.

CALL METHOD L_IREF_DOCUMENT->OPEN_DOCUMENT
    
EXPORTING
      DOCUMENT_URL 
= LW_URI-URI
      OPEN_INPLACE 
= 'X'
    
IMPORTING
      RETCODE      
= L_RETCODE.
  
IF L_RETCODE <> C_OI_ERRORS=>RET_OK.
    
MESSAGE '保存Excel文件出错' TYPE 'E'.
  
ENDIF.
  
CHECK L_RETCODE = C_OI_ERRORS=>RET_OK.

FREE L_IREF_ERROR.

CALL METHOD L_IREF_DOCUMENT->GET_SPREADSHEET_INTERFACE
    
IMPORTING
      ERROR           
= L_IREF_ERROR
      SHEET_INTERFACE 
= L_IREF_SPREADSHEET.

CALL METHOD L_IREF_SPREADSHEET->GET_SHEETS
    
IMPORTING
      SHEETS 
= LT_SHEET
      ERROR  
= L_IREF_ERROR.

CHECK L_IREF_ERROR->ERROR_CODE = C_OI_ERRORS=>RET_OK.

CLEAR LW_SHEET.

LV_LAST_ROW

= LINES( PT_EXCEL ).

READ TABLE LT_SHEET INTO LW_SHEET INDEX 1.
  
CHECK SY-SUBRC = 0.

CALL METHOD L_IREF_SPREADSHEET->SELECT_SHEET
    
EXPORTING
      NAME  
= LW_SHEET-SHEET_NAME
    
IMPORTING
      ERROR 
= L_IREF_ERROR.

CHECK L_IREF_ERROR->ERROR_CODE = C_OI_ERRORS=>RET_OK.
  
"calculate The columns of Data
  
REFRESH LT_FIELDS.
  
CALL FUNCTION 'DP_GET_FIELDS_FROM_TABLE'
    
TABLES
      
DATA   = PT_EXCEL
      
FIELDS = LT_FIELDS.

LV_LAST_COL

= LINES( LT_FIELDS ).

CALL METHOD L_IREF_SPREADSHEET->SET_SELECTION
    
EXPORTING
      
LEFT    = 1
      TOP     
= 2
      
ROWS    = LV_LAST_ROW
      COLUMNS 
= LV_LAST_COL.

CALL METHOD L_IREF_SPREADSHEET->INSERT_RANGE
    
EXPORTING
      COLUMNS 
= LV_LAST_COL
      
ROWS    = LV_LAST_ROW
      NAME    
= PV_TEMPLATE.

CALL METHOD L_IREF_SPREADSHEET->INSERT_ONE_TABLE
    
EXPORTING
      DATA_TABLE   
= PT_EXCEL[]
      FIELDS_TABLE 
= LT_FIELDS
      RANGENAME    
= PV_TEMPLATE.

CALL METHOD L_IREF_DOCUMENT->SAVE_AS
    
EXPORTING
      FILE_NAME 
= PV_FILE.

CALL METHOD L_IREF_DOCUMENT->RELEASE_DOCUMENT
    
IMPORTING
      RETCODE 
= L_RETCODE.
  
IF L_RETCODE <> C_OI_ERRORS=>RET_OK.
    
MESSAGE '保存Excel文件出错' TYPE 'E'.
  
ELSE.
    
MESSAGE 'Excel文件已保存' TYPE 'S'.
  
ENDIF.
  
FREE: L_IREF_SPREADSHEET,
        L_IREF_DOCUMENT
.

CALL METHOD L_IREF_CONTROL->RELEASE_ALL_DOCUMENTS.
  
CALL METHOD L_IREF_CONTROL->DESTROY_CONTROL.

ENDFORM.                    " FRM_OUTPUT_EXCEL

HR-部门内部调动报表的更多相关文章

  1. Java Web项目_部门内部留言板

    t_user用户登录数据表 用户登录界面 JSP开发 通过post请求提交给Servlet处理 Servlet处理连接数据库的处理 登陆成功服务器跳转RequestDispatcher到main.js ...

  2. 评点SAP HR功能及人力资源管理软件

    评点SAP HR功能及人力资源管理软件   本文导航 第1页:my SAP 人力资源软件 第2页:my SAP HR协同功能 第3页:组织结构管理 第4页:mySAPTM HR的战略功能 第5页:集成 ...

  3. openerp经典收藏 深入理解报表运行机制(转载)

    深入理解报表运行机制 原文:http://blog.sina.com.cn/s/blog_57ded94e01014ppd.html 1) OpenERP报表的基本运行机制    OpenERP报表的 ...

  4. 只用最适合的!全面对比主流 .NET 报表控件

    本文由葡萄城技术团队于博客园原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 前言 随着 .NET 平台的出现,报表相关的开发控件随着而来,已经有 ...

  5. 我练就数据分析技能从HR转型为产品经理

    本文转自知乎 作者:空白白白白 ----------------------------------------------------- 空白白白白写在前面:当我在奥兰多的时候,一位漂亮的女学员(看 ...

  6. 只用最适合的! 全面对比主流 .NET 报表控件:水晶报表、FastReport、ActiveReports 和 Stimulsoft

    前言 随着 .NET 平台的出现,报表相关的开发控件随之出现,目前已经有若干成熟的产品可供开发人员使用,本文旨在通过从不同维度对比目前最流行的4款 .NET报表控件,给所有报表开发人员在做产品选型时一 ...

  7. 张小龙最新内部演讲:KPI 是副产品,警惕复杂流程

    张小龙最新内部演讲:KPI 是副产品,警惕复杂流程 各位 WXG(微信事业群)的同事们,大家早上好!又到我们一年一度的领导力大会. 大家都看到,我们微信团队膨胀还是比较快的,有 1500 多人了.对此 ...

  8. 国内专业web报表工具,完美解决中国式报表难题

    近几年报表工具的热度不断上升,很多企业都用上了全新的报表工具,主要是企业数据化转型已经成为趋势.在进行选型的时候,很多企业最好都选择国内的报表工具,相信一些人不知道为什么国内的报表工具表现比国外的好. ...

  9. 领导满意,客户喜欢的数据报表怎么做,交给Smartbi!

    财务分析是以会计核算和报表资料及其他相关资料为依据,采用一系列专门的分析技术和方法,对企业等经济组织过去和现在有关筹资活动.投资活动.经营活动.分配活动的盈利能力.营运能力.偿债能力和增长能力状况等进 ...

随机推荐

  1. Spring入门(1)——搭建简单的环境

    步骤: 1.下载spring框架开发包. 2.创建web项目并引入开发包. 3.创建java接口和相应的实现类. 4.编写spring的配置文件. 5.编写 测试类,并进行测试. 1.下载spring ...

  2. [Noip2004][Day ?][T?]合并果子(?.cpp)

    题目描述 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和.可 ...

  3. Android开发——Accessibility机制实现模拟点击(微信自动抢红包实现)

    1. 何为Accessibility机制 许多Android使用者因为各种情况导致他们要以不同的方式与手机交互.对于那些由于视力.听力或其它身体原因导致不能方便使用Android智能手机的用户,And ...

  4. 大数据学习——sqoop入门

    下载地址 https://pan.baidu.com/s/1qWDl29L9I_KVU54c0ioNfQ fvfh 3.1 概述 sqoop是apache旗下一款“Hadoop和关系数据库服务器之间传 ...

  5. NLS_LANG在客户端不能确定,字符集转变将造成不可预期的后果

    原因:1,没有客服端配置字符集2,客户端字符集跟服务端字符集不一致 解决:1,打开plsql 帮助-支持信息看看uls_lang是否设置 2,查看服务器端字符集 Select *from V$NLS_ ...

  6. Kubernetes网络设计原则

    在配置集群网络插件或者实践K8S 应用/服务部署请时刻想到这些原则: 1.每个Pod都拥有一个独立IP地址,Pod内所有容器共享一个网络命名空间 2.集群内所有Pod都在一个直接连通的扁平网络中,可通 ...

  7. 调用BOS服务保存一个单据的简化示例

    IMetaDataService metadataService = ServiceHelper.GetService<IMetaDataService>(); // 加载元数据 Form ...

  8. 约分差束 例题 ZOJ 2770 火烧连营

    题目来源:ZOJ Monthly, October 2006, ZOJ2770题目描述:大家都知道,三国时期,蜀国刘备被吴国大都督陆逊打败了.刘备失败的原因是刘备的错误决策.他把军队分成几十个大营,每 ...

  9. Android菜单

    Android菜单概述 菜单是Activity的一个重要组成部分,它为用户操作提供了快捷的途径.Android提供了一个简单的框架来向程序中添加标准菜单 . 一.创建一个菜单资源 你需要在一个XML ...

  10. Java实现简单的图片浏览器

    第一次写博客,不喜勿喷. 最近一个小师弟问我怎么用Java做图片浏览器,感觉好久没玩Java了,就自己动手做了一下. 学校的教程是用Swing来做界面的,所以这里也用这个来讲. 首先要做个大概的界面出 ...