HR人员花名册报表
创建程序时要设置逻辑数据库
以下例子为PNPCE数据库
主逻辑
*&---------------------------------------------------------------------* *& Report ZHRPA001 *&---------------------------------------------------------------------* *& *&---------------------------------------------------------------------* REPORT ZHRPA001 MESSAGE-ID ZSAP_HR NO STANDARD PAGE HEADING. TABLES: PERNR. NODES:PERAS. INFOTYPES : 0000,0001,0002,0006,0007,0016,0022,0041,0105,0185,0009, 3527,3529,9002,9003,9006,9018,9019,9021,9022,9504. TYPE-POOLS : SLIS. *&---------------------------------------------------------------------* * INCLUDE *&---------------------------------------------------------------------* INCLUDE ZHRI0001D1. INCLUDE ZHRPA001_DATA. INCLUDE ZHRPA001_SCL. INCLUDE ZHRPA001_FRM. INCLUDE ZHRPA001_EXL. *----------------------------------------------------------------------* * INITIALIZATION 选择屏幕初始化处理 *----------------------------------------------------------------------* INITIALIZATION. PNPSTAT2-LOW = '3'. APPEND PNPSTAT2. *----------------------------------------------------------------------* * START-OF-SELECTION *----------------------------------------------------------------------* START-OF-SELECTION. PERFORM FRM_READ_TEXT. GET PERAS. PERFORM FRM_GET_DATA. END-OF-SELECTION. "获取部门 PERFORM FRM_PROCESS_DATA. "更改日期格式 PERFORM FRM_PROCESS_DAT. PERFORM FRM_INDICATOR." USING'' I_PROG. "界面友好 PERFORM FRM_DISPLAY_ALV.
包含文件ZHRI0001D1
*&---------------------------------------------------------------------* *& 包含 ZHRI0001D1 *&---------------------------------------------------------------------* *&---------------------------------------------------------------------* *& Include ZHRI0001D1 *&---------------------------------------------------------------------* INCLUDE OLE2INCL. DEFINE MCR_MESSAGE. CASE sy-subrc. WHEN 0. WHEN OTHERS. MESSAGE e000 WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDCASE. END-OF-DEFINITION. DATA: APPLICATION TYPE OLE2_OBJECT, WORKBOOK TYPE OLE2_OBJECT, SHEET TYPE OLE2_OBJECT, COLUMNS TYPE OLE2_OBJECT, W_COMMENT TYPE OLE2_OBJECT, W_SHAPE TYPE OLE2_OBJECT, ROWS TYPE OLE2_OBJECT, RANGE TYPE OLE2_OBJECT, H_F TYPE OLE2_OBJECT, " FONT CELLS1 TYPE OLE2_OBJECT, * ADD FOR CELLS COLOR SELECTIONT TYPE OLE2_OBJECT, INTERIOR TYPE OLE2_OBJECT, BORDERS TYPE OLE2_OBJECT, * END ADD CELLS TYPE OLE2_OBJECT, PAG_BREAK TYPE OLE2_OBJECT. DATA: G_6_PAGENO TYPE I VALUE 0. "当前页码,用于分页 DATA: G_6_PAGENO_COPY TYPE I VALUE 0. " *DATA: P_FILENAME TYPE SAPB-SAPPFAD, DATA: P_FILENAME TYPE STRING, G_6_PATH TYPE STRING. DATA: G_6_ROW TYPE I , "默认一次粘贴1000行 G_6_ROW_BEGIN TYPE I , "开始粘贴的行 G_6_LEFT TYPE STRING, G_6_RIGHT TYPE STRING. RANGES: GI_LINE FOR SY-TABIX. TYPES: BEGIN OF TYP_S_SENDERLINE , LINE(4096) TYPE C, END OF TYP_S_SENDERLINE. TYPES: TYP_T_SENDER TYPE TYP_S_SENDERLINE OCCURS 0. DATA: ITB_EXCEL_TAB TYPE TYP_S_SENDERLINE OCCURS 0 . DATA: WA_EXCEL TYPE TYP_S_SENDERLINE . DATA: G_6_SEPARATOR TYPE C.
包含文件ZHRPA001_DATA
*&---------------------------------------------------------------------* *& 包含 ZHRPA001_DATA *&---------------------------------------------------------------------* DATA : BEGIN OF GT_OUT OCCURS 0, CELLCOLOR TYPE LVC_T_SCOL, "单元格颜色 PERNR TYPE PA0000-PERNR, "人员编号 USRID1 TYPE PA0105-USRID, "工号 CNAME TYPE PA0002-CNAME, "姓名 GESCH TYPE PA0002-GESCH, "性别 GESCH2(2) TYPE C, "性别text BUKRS TYPE CHAR40, "公司代码 ORGEH TYPE PA0001-ORGEH, "部门代码 ORGTX TYPE T527X-ORGTX, ZZ_YJJG TYPE CHAR100, "集团 ZZ_YJJG2 TYPE CHAR40, "一级机构中文描述 ZZ_YJJG3 TYPE CHAR40, "二级机构中文描述 ZZ_YJJG4 TYPE CHAR100, "三级机构中文描述 ZZ_YJJG5 TYPE CHAR100, "四级机构中文描述 PLANS(40) TYPE C, "职位 PLANSN TYPE P0001-PLANS, "职位编码 ZZ_GWZU TYPE PA9002-ZZ_ZWZZ, "职族 ZZ_GWZL TYPE P9504-ZZ_GWZL, "职类 ZZ_ZZZJ TYPE PA9002-ZZ_ZZZJ, "职级 ZZ_ZJSJBH(8) TYPE C, "直线汇报人编号 ZZ_ZJSJ(8) TYPE C, "直线汇报人 ZZ_DSBHBH(8) TYPE C, "导师编号 ZZ_DSBH(8) TYPE C, "导师 STAT2(6) TYPE C, "员工状态 SJZZRQ TYPE DATS, "实际转正日期 SJZZRQ1 TYPE CHAR20, "实际转正日期 SFYZZ(2) TYPE C, "是否转正标识 DAT01 TYPE DATS, "入职时间 DAT011 TYPE CHAR20, "入职时间 DAT02 TYPE DATS, "预计转正时间 DAT021 TYPE CHAR20, "预计转正时间 DAT03 TYPE DATS, "首次参加工作日期 DAT031 TYPE CHAR20, "首次参加工作日期 BEGDA2 TYPE PA9003-BEGDA, "离职时间 BEGDA21 TYPE CHAR20, "离职时间 SUBTY(12) TYPE C, "学历 SLABS(10) TYPE C, "学位 INSMO(4) TYPE C, "学习方式 XXXS(4) TYPE C, FACH3 TYPE PA3529-FACH3, "所学专业 INSTI TYPE PA0022-INSTI, "院校培训机构名称 ENDDA2 TYPE CHAR20,"PA0022-ENDDA, "毕业时间 ZZ_HDZC TYPE PA9019-ZZ_HDZC, "获得职称 ZZ_ZCDJ TYPE CHAR10, "职称级别 ICNUM TYPE PA0185-ICNUM, "身份证 USETO TYPE PA0185-USETO, "身份证失效日期 USETO1 TYPE CHAR20, "身份证失效日期 GBDAT TYPE DATS, "出生日期 GBDAT1 TYPE CHAR20, "出生日期 DISP_AGE TYPE I, "年龄 FAMST(4) TYPE C, "婚姻状况 ZZ_MZT TYPE DDTEXT, "民族文本 LOCAT TYPE PA0006-LOCAT, "户口所在地 HUKOT(6) TYPE C, "户口性质 ZZ_ZPQD(12) TYPE C, "招聘来源 PERSG(8) TYPE C, "员工组 PERSK(22) TYPE C, "员工子组 CTTYP(12) TYPE C, "合同类型 ZZ_QXLX(18) TYPE C, "合同期限分类 BEGDA3 TYPE CHAR20, "本期合同开始日期 ENDDA3 TYPE CHAR20, "本期合同结束日期 SHAGE TYPE I, "社会工龄 SLAGE(5) TYPE C, "司龄 LOCAT2 TYPE PA0006-LOCAT, "驻外地区 ZZ_CZGZD(50) TYPE C, "常驻工作地点 ZZ_SJGZD(40) TYPE C, "实际工作地点 LOCAT3 TYPE PA0006-LOCAT, "社保缴纳地 KOSTL TYPE PA0001-KOSTL, "发薪成本中心号 LOCAT4 TYPE PA0006-LOCAT, "现家庭住址 USRID TYPE PA0105-USRID, "联系方式 USRID2 TYPE PA0105-USRID, "电子邮件 ZZ_JJLXR TYPE PA0105-USRTY, "紧急联系人 USRID3 TYPE PA0105-USRID, "紧急联系人联系方式 BEGDA4 TYPE DATS, "最后工作日期 BEGDA41 TYPE CHAR20, "最后工作日期 ZZ_JCFS TYPE PA0016-ZZ_JCFS, "解除合同方式 MASSG(80) TYPE C, "操作原因 ZZ_LZXL(80) TYPE C, "离职原因 BEGDA5 TYPE PA0022-BEGDA, ENDDA4 TYPE PA0022-ENDDA, ZZ_JGCJ TYPE CHAR40, ZZ_ZGSF TYPE GBDEP, "籍贯省份 ZZ_ZGSFMS(50) TYPE C, "籍贯省份描述 ZZ_GSDM TYPE BUKRS, ZZ_GSDMT TYPE CHAR50, ZZ_LWSSGS TYPE ZZ_LWSSGS, "用工形式 SNO TYPE I, "序号 ZWECK TYPE PA0009-ZWECK, "开户行 BKREF TYPE PA0009-BKREF, "银行账号 SCHKZ TYPE PA0007-SCHKZ, "工作班次 ABKRS TYPE PA0001-ABKRS, "工资范围 ZGSYX TYPE PA0105-USRID, "公司邮箱 END OF GT_OUT. DATA : BEGIN OF GT_0027 OCCURS 0. "成本中心0027 INCLUDE STRUCTURE P0027. DATA : END OF GT_0027. DATA: GT_HRP9504 TYPE TABLE OF HRP9504, GT_HRP9502 TYPE TABLE OF HRP9502, GT_PA0002 TYPE TABLE OF PA0002, GT_T527X TYPE TABLE OF T527X, GT_ZHR_LZYY TYPE TABLE OF ZHR_LZYY. * GT_9504 TYPE TABLE OF ZHR_GWGF. DATA: GT_OBJID LIKE TABLE OF ZHRS_ORGEH WITH HEADER LINE. DATA GT_T500P LIKE TABLE OF T500P WITH HEADER LINE. DATA GT_T001 LIKE TABLE OF T001 WITH HEADER LINE. DATA GT_HRP1000 LIKE TABLE OF HRP1000 WITH HEADER LINE. DATA GT_HRP1000A LIKE TABLE OF HRP1000 WITH HEADER LINE. DATA GT_PA0041 LIKE TABLE OF PA0041 WITH HEADER LINE. DATA GT_ZHR_CZDD LIKE TABLE OF ZHR_CZDD WITH HEADER LINE. DATA LT_T501T LIKE TABLE OF T501T WITH HEADER LINE. DATA LT_T503T LIKE TABLE OF T503T WITH HEADER LINE. DATA LT_T530T LIKE TABLE OF T530T WITH HEADER LINE. DATA LT_DD07T LIKE TABLE OF DD07T WITH HEADER LINE. DATA LT_T547S LIKE TABLE OF T547S WITH HEADER LINE. DATA LT_T517T LIKE TABLE OF T517T WITH HEADER LINE. DATA LT_T519T LIKE TABLE OF T519T WITH HEADER LINE. DATA LT_BNKA_BF LIKE TABLE OF BNKA_BF WITH HEADER LINE. DATA LT_T005U LIKE TABLE OF T005U WITH HEADER LINE. DATA LT_0000 LIKE TABLE OF PA0000 WITH HEADER LINE. DATA LT_PA0022 LIKE TABLE OF PA0022 WITH HEADER LINE. DATA LT_PA3529 LIKE TABLE OF PA3529 WITH HEADER LINE. DATA: GT_CELLCOLOR TYPE LVC_T_SCOL, GS_CELLCOLOR TYPE LVC_S_SCOL. *---ALV 相关定义 DATA: GT_FIELD TYPE LVC_T_FCAT, GS_FIELD TYPE LVC_S_FCAT. DATA: GT_FIELD2 TYPE LVC_T_FCAT, GS_FIELD2 TYPE LVC_S_FCAT. DATA: GS_LAYOUT TYPE LVC_S_LAYO. DATA: GR_GRID TYPE REF TO CL_GUI_ALV_GRID. DATA LV_0000 TYPE DATS. *---EXL导出相关 DATA : BEGIN OF GT_EXL OCCURS 0, PERNR TYPE PA0000-PERNR, "人员编号 USRID1 TYPE PA0105-USRID, "工号 CNAME TYPE PA0002-CNAME, "姓名 GESCH TYPE PA0002-GESCH, "性别 GESCH2(2) TYPE C, "性别text BUKRS TYPE CHAR40, "公司代码 ORGEH TYPE PA0001-ORGEH, "部门代码 ORGTX TYPE T527X-ORGTX, ZZ_YJJG TYPE CHAR100, "集团 ZZ_YJJG2 TYPE CHAR40, "一级机构中文描述 ZZ_YJJG3 TYPE CHAR40, "二级机构中文描述 ZZ_YJJG4 TYPE CHAR100, "三级机构中文描述 ZZ_YJJG5 TYPE CHAR100, "四级机构中文描述 PLANS(40) TYPE C, "职位 PLANSN TYPE P0001-PLANS, "职位编码 ZZ_GWZU TYPE PA9002-ZZ_ZWZZ, "职族 ZZ_GWZL TYPE P9504-ZZ_GWZL, "职类 ZZ_ZZZJ TYPE PA9002-ZZ_ZZZJ, "职级 ZZ_ZJSJBH(8) TYPE C, "直线汇报人编号 ZZ_ZJSJ(8) TYPE C, "直线汇报人 ZZ_DSBHBH(8) TYPE C, "导师编号 ZZ_DSBH(8) TYPE C, "导师 STAT2(6) TYPE C, "员工状态 SJZZRQ1 TYPE CHAR20, "实际转正日期 SFYZZ(2) TYPE C, "是否转正标识 * DAT01 TYPE DATS, "入职时间 DAT011 TYPE CHAR20, "入职时间 * DAT02 TYPE DATS, "预计转正时间 DAT021 TYPE CHAR20, "预计转正时间 * DAT03 TYPE DATS, "首次参加工作日期 DAT031 TYPE CHAR20, "首次参加工作日期 * BEGDA2 TYPE PA9003-BEGDA, "离职时间 BEGDA21 TYPE CHAR20, "离职时间 SUBTY(12) TYPE C, "学历 SLABS(10) TYPE C, "学位 INSMO(4) TYPE C, "学习方式 XXXS(4) TYPE C, FACH3 TYPE PA3529-FACH3, "所学专业 INSTI TYPE PA0022-INSTI, "院校培训机构名称 ENDDA2 TYPE CHAR20,"PA0022-ENDDA, "毕业时间 ZZ_HDZC TYPE PA9019-ZZ_HDZC, "获得职称 ZZ_ZCDJ TYPE CHAR10, "职称级别 ICNUM TYPE PA0185-ICNUM, "身份证 USETO1 TYPE CHAR20, "身份证失效日期 * GBDAT TYPE DATS, "出生日期 GBDAT1 TYPE CHAR20, "出生日期 DISP_AGE TYPE I, "年龄 FAMST(4) TYPE C, "婚姻状况 ZZ_MZT TYPE DDTEXT, "民族文本 LOCAT TYPE PA0006-LOCAT, "户口所在地 HUKOT(6) TYPE C, "户口性质 ZZ_ZPQD(12) TYPE C, "招聘来源 PERSG(8) TYPE C, "员工组 PERSK(22) TYPE C, "员工子组 CTTYP(12) TYPE C, "合同类型 ZZ_QXLX(18) TYPE C, "合同期限分类 BEGDA3 TYPE CHAR20, "本期合同开始日期 ENDDA3 TYPE CHAR20, "本期合同结束日期 SHAGE TYPE I, "社会工龄 SLAGE(5) TYPE C, "司龄 LOCAT2 TYPE PA0006-LOCAT, "驻外地区 ZZ_CZGZD(50) TYPE C, "常驻工作地点 ZZ_SJGZD(40) TYPE C, "实际工作地点 LOCAT3 TYPE PA0006-LOCAT, "社保缴纳地 KOSTL TYPE PA0001-KOSTL, "发薪成本中心号 LOCAT4 TYPE PA0006-LOCAT, "现家庭住址 USRID TYPE PA0105-USRID, "联系方式 USRID2 TYPE PA0105-USRID, "电子邮件 ZZ_JJLXR TYPE PA0105-USRTY, "紧急联系人 USRID3 TYPE PA0105-USRID, "紧急联系人联系方式 * BEGDA4 TYPE DATS, "最后工作日期 BEGDA41 TYPE CHAR20, "最后工作日期 ZZ_JCFS TYPE PA0016-ZZ_JCFS, "解除合同方式 MASSG(80) TYPE C, "操作原因 ZZ_LZXL(80) TYPE C, "离职原因 BEGDA5 TYPE PA0022-BEGDA, ENDDA4 TYPE PA0022-ENDDA, ZZ_JGCJ TYPE CHAR40, ZZ_ZGSF TYPE GBDEP, "籍贯省份 ZZ_ZGSFMS(50) TYPE C, "籍贯省份描述 ZZ_GSDM TYPE BUKRS, ZZ_GSDMT TYPE CHAR50, ZZ_LWSSGS TYPE ZZ_LWSSGS, "用工形式 SNO TYPE I, "序号 ZWECK TYPE PA0009-ZWECK, "开户行 BKREF TYPE PA0009-BKREF, "银行账号 SCHKZ TYPE PA0007-SCHKZ, "工作班次 ABKRS TYPE PA0001-ABKRS, "工资范围 ZGSYX TYPE PA0105-USRID, "公司邮箱 END OF GT_EXL. DEFINE MCR_MESSAGE. CASE SY-SUBRC. WHEN 0. WHEN OTHERS. MESSAGE E000(ZSAP_HR) WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDCASE. END-OF-DEFINITION. DATA: I_PROG TYPE I, I_PROG2 TYPE I.
包含文件ZHRPA001_SCL
*&---------------------------------------------------------------------* *& 包含 ZHRPA001_SCL *&---------------------------------------------------------------------* SELECTION-SCREEN BEGIN OF BLOCK BKA WITH FRAME TITLE TEXT-B01. SELECT-OPTIONS: P_DAT FOR SY-DATUM NO-EXTENSION. SELECT-OPTIONS: P_LZRQ FOR SY-DATUM NO-EXTENSION. SELECT-OPTIONS: P_SFYZZ FOR GT_OUT-SFYZZ NO-EXTENSION NO INTERVALS. SELECTION-SCREEN END OF BLOCK BKA . AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_SFYZZ-LOW. PERFORM FRM_SEARCH_HELP_FOR_PSTEN. *添加屏幕搜索帮助 FORM FRM_SEARCH_HELP_FOR_PSTEN . TYPES:BEGIN OF TY_STR_VALUE_TAB, STAT TYPE JEST-STAT, "审批状态判断条件 END OF TY_STR_VALUE_TAB. DATA: LT_VALUE_TAB TYPE TABLE OF TY_STR_VALUE_TAB, LS_VALUE_TAB TYPE TY_STR_VALUE_TAB. CLEAR LT_VALUE_TAB. APPEND LS_VALUE_TAB TO LT_VALUE_TAB. LS_VALUE_TAB-STAT = '是'. APPEND LS_VALUE_TAB TO LT_VALUE_TAB. LS_VALUE_TAB-STAT = '否'. APPEND LS_VALUE_TAB TO LT_VALUE_TAB. CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST' EXPORTING * DDIC_STRUCTURE = ' ' RETFIELD = 'STAT' "搜索帮助内表要输出的的帮助字段名 * PVALKEY = 'SPZT' DYNPPROG = SY-REPID "程序名 DYNPNR = SY-DYNNR "屏幕号 DYNPROFIELD = 'P_SFYZZ' "存储返回值 * STEPL = 0 * WINDOW_TITLE = * VALUE = ' ' VALUE_ORG = 'S' * MULTIPLE_CHOICE = ' ' * DISPLAY = ' ' * CALLBACK_PROGRAM = ' ' * CALLBACK_FORM = 'cb_form' * CALLBACK_METHOD = * MARK_TAB = * IMPORTING * USER_RESET = TABLES VALUE_TAB = LT_VALUE_TAB * FIELD_TAB = lt_value_tab * RETURN_TAB = * DYNPFLD_MAPPING = EXCEPTIONS PARAMETER_ERROR = 1 NO_VALUES_FOUND = 2 OTHERS = 3. IF SY-SUBRC <> 0. * Implement suitable error handling here ENDIF. ENDFORM.
包含文件ZHRPA001_FRM
*&---------------------------------------------------------------------* *& 包含 ZHRPA001_FRM *&---------------------------------------------------------------------* *&---------------------------------------------------------------------* *& Form FRM_GET_DATA *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* FORM FRM_GET_DATA. DATA: LV_YEARS TYPE I, LV_YEARS2 TYPE I, LV_YEARS3 TYPE I. DATA: LV_MONTH TYPE I. DATA: LV_SILING TYPE P DECIMALS 2. DATA: MESSAGE_HANDLER TYPE REF TO IF_HRPA_MESSAGE_HANDLER. DATA LV_BEGDA TYPE BEGDA. DATA LV_ENDDA TYPE ENDDA. DATA LV_ENDDA02 TYPE ENDDA. DATA LV_VDATE TYPE DATS. CHECK PERNR-PERNR NE '90010175'. CHECK PERNR-PERNR NE '90010176'. IF PN-BEGDA = '18000101' AND PN-ENDDA = '99991231'. LV_BEGDA = SY-DATUM. LV_ENDDA = SY-DATUM. ELSE. LV_BEGDA = PN-BEGDA. LV_ENDDA = PN-ENDDA. ENDIF. *---人员编号 GT_OUT-PERNR = PERNR-PERNR. *---工作班次 RP_PROVIDE_FROM_LAST P0007 SPACE PN-BEGDA PN-ENDDA. IF PNP-SW-FOUND = 1. GT_OUT-SCHKZ = P0007-SCHKZ. ENDIF. *----P0009相关 RP_PROVIDE_FROM_LAST P0009 SPACE PN-BEGDA PN-ENDDA. IF PNP-SW-FOUND = 1. GT_OUT-BKREF = P0009-BKREF. READ TABLE LT_BNKA_BF WITH KEY BANKL = P0009-BANKL. IF SY-SUBRC = 0. GT_OUT-ZWECK = LT_BNKA_BF-BANKA. ENDIF. ENDIF. *----P0000相关 RP_PROVIDE_FROM_LAST P0000 SPACE PN-BEGDA PN-ENDDA. IF PNP-SW-FOUND = 1. IF P0000-STAT2 = '0'. GT_OUT-STAT2 = '离职'. "人员状态 GT_OUT-BEGDA2 = P0000-BEGDA. "离职日期 GT_OUT-BEGDA4 = P0000-BEGDA - 1. "最后工作日期 READ TABLE LT_T530T WITH KEY MASSG = P0000-MASSG. IF SY-SUBRC = 0. GT_OUT-MASSG = LT_T530T-MGTXT. "操作原因 ENDIF. ELSEIF P0000-STAT2 = '1'. GT_OUT-STAT2 = '不活动'. "人员状态 ELSEIF P0000-STAT2 = '2'. GT_OUT-STAT2 = '退休'. "人员状态 ELSEIF P0000-STAT2 = '3'. GT_OUT-STAT2 = '在职'. "人员状态 CLEAR GT_OUT-MASSG. ENDIF. IF P0000-STAT2 = '0'. CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL' EXPORTING DATE = GT_OUT-BEGDA2 DAYS = '1' MONTHS = 0 SIGNUM = '-' YEARS = 0 IMPORTING CALC_DATE = LV_VDATE. CALL FUNCTION 'ZHR_ZJZW_STEST' EXPORTING PERNR = PERNR-PERNR BEGDA = LV_VDATE ENDDA = LV_VDATE IMPORTING STEXT = GT_OUT-PLANS "职位 ZZ_ZWBM = GT_OUT-PLANSN. "职位编码 ELSE. CALL FUNCTION 'ZHR_ZJZW_STEST' EXPORTING PERNR = PERNR-PERNR BEGDA = PN-BEGDA ENDDA = PN-ENDDA IMPORTING STEXT = GT_OUT-PLANS "职位 ZZ_ZWBM = GT_OUT-PLANSN. "职位编码 ENDIF. ENDIF. RP_PROVIDE_FROM_LAST P0001 SPACE PN-BEGDA PN-ENDDA. IF PNP-SW-FOUND = 1. GT_OUT-ZZ_GSDM = P0001-WERKS. "公司代码 READ TABLE GT_T500P WITH KEY PERSA = P0001-WERKS. IF SY-SUBRC = 0. GT_OUT-ZZ_GSDMT = GT_T500P-NAME1. ENDIF. GT_OUT-ABKRS = P0001-ABKRS. "工资范围 ENDIF. *---PA0001相关 RP_PROVIDE_FROM_LAST P0016 SPACE PN-BEGDA PN-ENDDA. RP_PROVIDE_FROM_LAST P0001 SPACE PN-BEGDA PN-ENDDA. IF P0001-ORGEH IS INITIAL. SORT P0001 BY BEGDA DESCENDING. READ TABLE P0001 INDEX 2. * gt_out-orgeh = p0001-orgeh. ENDIF. GT_OBJID-OBJID = P0001-ORGEH. APPEND GT_OBJID. READ TABLE GT_T001 WITH KEY BUKRS = P0016-ZZ_HTGS. IF SY-SUBRC = 0. GT_OUT-BUKRS = GT_T001-BUTXT. ENDIF. GT_OUT-ORGEH = P0001-ORGEH. "部门代码 GT_OUT-ZZ_LWSSGS = P0001-ZZ_LWSSGS. "劳务所属公司 IF GT_OUT-ZZ_LWSSGS = ''. GT_OUT-ZZ_LWSSGS = '自有'. ENDIF. READ TABLE GT_HRP1000 WITH KEY OTYPE = 'O' OBJID = GT_OUT-ORGEH. IF SY-SUBRC = 0. GT_OUT-ORGTX = GT_HRP1000-STEXT. ENDIF. READ TABLE GT_ZHR_CZDD WITH KEY ZZ_CZDBM = P0001-ZZ_CZGZD. IF SY-SUBRC = 0. GT_OUT-ZZ_CZGZD = GT_ZHR_CZDD-ZZ_CZDMC. ENDIF. "实际工作地 RP_PROVIDE_FROM_LAST P0006 '04' PN-BEGDA PN-ENDDA. GT_OUT-ZZ_SJGZD = P0006-LOCAT. GT_OUT-KOSTL = P0001-KOSTL. "发薪成本中心号 READ TABLE LT_T501T WITH KEY PERSG = P0001-PERSG. IF SY-SUBRC = 0. GT_OUT-PERSG = LT_T501T-PTEXT. ENDIF. READ TABLE LT_T503T WITH KEY PERSK = P0001-PERSK. IF SY-SUBRC = 0. GT_OUT-PERSK = LT_T503T-PTEXT. ENDIF. * ENDIF. *---P0027相关 READ TABLE GT_0027 WITH KEY PERNR = PERNR-PERNR. IF SY-SUBRC = 0. GT_OUT-KOSTL = GT_0027-KST01. "个人成本中心覆盖部门成本中心 ENDIF. LOOP AT P0000 WHERE MASSN = 'ZB'. IF P0000-BEGDA IS NOT INITIAL. GT_OUT-SJZZRQ = P0000-BEGDA. GT_OUT-SJZZRQ1 = P0000-BEGDA. ENDIF. ENDLOOP. IF GT_OUT-SJZZRQ IS INITIAL. CALL FUNCTION 'HR_ECM_GET_DATETYP_FROM_IT0041' EXPORTING PERNR = GT_OUT-PERNR KEYDT = LV_BEGDA DATAR = '04' MESSAGE_HANDLER = MESSAGE_HANDLER IMPORTING DATE = GT_OUT-SJZZRQ. IF GT_OUT-SJZZRQ IS NOT INITIAL. GT_OUT-SJZZRQ1 = GT_OUT-SJZZRQ. ENDIF. * READ TABLE GT_PA0041 WITH KEY pernr = pernr-pernr. * IF SY-SUBTY = 0. * gt_out-sjzzrq = GT_PA0041-DAT04. * ENDIF. ENDIF. IF GT_OUT-SJZZRQ < SY-DATUM AND GT_OUT-SJZZRQ <> '00000000'. GT_OUT-SFYZZ = '是'. ELSE. GT_OUT-SFYZZ = '否'. ENDIF. *---PA0002相关 RP_PROVIDE_FROM_LAST P0002 SPACE PN-BEGDA PN-ENDDA. IF PNP-SW-FOUND = 1. GT_OUT-ZZ_DSBHBH = P0002-ZZ_DSBH. READ TABLE LT_DD07T WITH KEY DOMVALUE_L = P0002-ZZ_MZ DOMNAME = 'ZZ_MZ'. IF SY-SUBRC = 0. GT_OUT-ZZ_MZT = LT_DD07T-DDTEXT. ENDIF. READ TABLE LT_0000 WITH KEY PERNR = GT_OUT-ZZ_DSBHBH. IF SY-SUBRC = 0. CLEAR: GT_CELLCOLOR, GS_CELLCOLOR. GS_CELLCOLOR-FNAME = 'ZZ_DSBHBH'. "定位行中需要上色的单元格 GS_CELLCOLOR-COLOR-COL = 6. "颜色种类 GS_CELLCOLOR-COLOR-INT = 1. "颜色浅深 GS_CELLCOLOR-COLOR-INV = 1. "相反:文字显示颜色,单元格背景不显示 APPEND GS_CELLCOLOR TO GT_CELLCOLOR. GT_OUT-CELLCOLOR = GT_CELLCOLOR. * CLEAR: GT_CELLCOLOR, GS_CELLCOLOR. GS_CELLCOLOR-FNAME = 'ZZ_DSBH'. "定位行中需要上色的单元格 GS_CELLCOLOR-COLOR-COL = 6. "颜色种类 GS_CELLCOLOR-COLOR-INT = 1. "颜色浅深 GS_CELLCOLOR-COLOR-INV = 1. "相反:文字显示颜色,单元格背景不显示 APPEND GS_CELLCOLOR TO GT_CELLCOLOR. GT_OUT-CELLCOLOR = GT_CELLCOLOR. ENDIF. READ TABLE GT_PA0002 INTO DATA(GS_PA0002) WITH KEY PERNR = P0002-ZZ_DSBH. IF SY-SUBRC = 0. GT_OUT-ZZ_DSBH = GS_PA0002-NACHN. ENDIF. GT_OUT-CNAME = P0002-NACHN. "姓名 IF P0002-GESCH EQ 1. GT_OUT-GESCH2 = '男'. "性别 ELSEIF P0002-GESCH EQ 2. GT_OUT-GESCH2 = '女'. ENDIF. GT_OUT-GBDAT = P0002-GBDAT. "出生日期 IF P0002-FAMST = 0. GT_OUT-FAMST = '未婚'. "婚姻状态 ELSEIF P0002-FAMST = 1. GT_OUT-FAMST = '已婚'. ELSEIF P0002-FAMST = 2. GT_OUT-FAMST = '离婚'. ELSEIF P0002-FAMST = 3. GT_OUT-FAMST = '丧偶'. ELSEIF P0002-FAMST = 4. GT_OUT-FAMST = '无'. ENDIF. READ TABLE LT_DD07T WITH KEY DOMVALUE_L = P0002-ZZ_ZPQD DOMNAME = 'ZZ_ZPQD'. IF SY-SUBRC = 0. GT_OUT-ZZ_ZPQD = LT_DD07T-DDTEXT. ENDIF. GT_OUT-ZZ_ZGSF = P0002-GBDEP. "籍贯省份 READ TABLE LT_T005U WITH KEY BLAND = GT_OUT-ZZ_ZGSF. IF SY-SUBRC = 0. GT_OUT-ZZ_ZGSFMS = LT_T005U-BEZEI. ENDIF. ENDIF. "调用函数获取年龄 CALL FUNCTION 'HR_99S_INTERVAL_BETWEEN_DATES' EXPORTING BEGDA = P0002-GBDAT ENDDA = SY-DATUM IMPORTING C_YEARS = LV_YEARS. GT_OUT-DISP_AGE = LV_YEARS. "年龄 *---PA9002相关 RP_PROVIDE_FROM_LAST P9002 SPACE PN-BEGDA PN-ENDDA. IF PNP-SW-FOUND = 1. GT_OUT-ZZ_GWZU = P9002-ZZ_ZWZZ."职族 GT_OUT-ZZ_ZZZJ = P9002-ZZ_ZZZJ."职级 ENDIF. *---PA9021相关 RP_PROVIDE_FROM_LAST P9021 SPACE PN-BEGDA PN-ENDDA. IF PNP-SW-FOUND = 1. CLEAR GS_PA0002. GT_OUT-ZZ_ZJSJBH = P9021-ZZ_ZJSJ. READ TABLE LT_0000 WITH KEY PERNR = GT_OUT-ZZ_ZJSJBH. IF SY-SUBRC = 0. CLEAR: GT_CELLCOLOR, GS_CELLCOLOR. GS_CELLCOLOR-FNAME = 'ZZ_ZJSJBH'. "定位行中需要上色的单元格 GS_CELLCOLOR-COLOR-COL = 6. "颜色种类 GS_CELLCOLOR-COLOR-INT = 1. "颜色浅深 GS_CELLCOLOR-COLOR-INV = 1. "相反:文字显示颜色,单元格背景不显示 APPEND GS_CELLCOLOR TO GT_CELLCOLOR. GT_OUT-CELLCOLOR = GT_CELLCOLOR. GS_CELLCOLOR-FNAME = 'ZZ_ZJSJ'. "定位行中需要上色的单元格 GS_CELLCOLOR-COLOR-COL = 6. "颜色种类 GS_CELLCOLOR-COLOR-INT = 1. "颜色浅深 GS_CELLCOLOR-COLOR-INV = 1. "相反:文字显示颜色,单元格背景不显示 APPEND GS_CELLCOLOR TO GT_CELLCOLOR. GT_OUT-CELLCOLOR = GT_CELLCOLOR. ENDIF. READ TABLE GT_PA0002 INTO GS_PA0002 WITH KEY PERNR = P9021-ZZ_ZJSJ. GT_OUT-ZZ_ZJSJ = GS_PA0002-NACHN. "直线汇报人 ENDIF. *---PA9006相关 * rp_provide_from_last p9006 space pn-begda pn-endda. * IF pnp-sw-found = 1. * READ TABLE gt_pa0002 INTO gs_pa0002 WITH KEY pernr = p9006-zz_dsbh. * gt_out-zz_dsbh = gs_pa0002-nachn. "导师 * ENDIF. *---入职日期 CALL FUNCTION 'HR_ECM_GET_DATETYP_FROM_IT0041' EXPORTING PERNR = GT_OUT-PERNR KEYDT = LV_BEGDA DATAR = '01' MESSAGE_HANDLER = MESSAGE_HANDLER IMPORTING DATE = GT_OUT-DAT01. FREE MESSAGE_HANDLER. *---首次参加工作日期 CALL FUNCTION 'HR_ECM_GET_DATETYP_FROM_IT0041' EXPORTING PERNR = GT_OUT-PERNR KEYDT = LV_BEGDA DATAR = '02' MESSAGE_HANDLER = MESSAGE_HANDLER IMPORTING DATE = GT_OUT-DAT02. FREE MESSAGE_HANDLER. *---预计转正时间 CALL FUNCTION 'HR_ECM_GET_DATETYP_FROM_IT0041' EXPORTING PERNR = GT_OUT-PERNR KEYDT = LV_BEGDA DATAR = '03' MESSAGE_HANDLER = MESSAGE_HANDLER IMPORTING DATE = GT_OUT-DAT03. FREE MESSAGE_HANDLER. *---PA9003相关 RP_PROVIDE_FROM_LAST P9003 SPACE PN-BEGDA PN-ENDDA. IF PNP-SW-FOUND = 1. * GT_OUT-BEGDA2 = P9003-BEGDA. "离职日期 * GT_OUT-BEGDA4 = P9003-BEGDA - 1. "最后工作日期 READ TABLE GT_ZHR_LZYY INTO DATA(GS_ZHR_LZYY) WITH KEY ZZ_LZXLBM = P9003-ZZ_LZXL. IF SY-SUBRC = 0. GT_OUT-ZZ_LZXL = GS_ZHR_LZYY-ZZ_LZXLMS. "离职原因 ENDIF. ENDIF. IF GT_OUT-STAT2 = '在职'. CLEAR GT_OUT-ZZ_LZXL. ENDIF. *---PA3529相关 教育信息的字段都从0022中取出 CLEAR LT_PA3529. READ TABLE LT_PA3529 WITH KEY PERNR = GT_OUT-PERNR. IF SY-SUBRC = 0. GT_OUT-FACH3 = LT_PA3529-FACH3."所学专业 ENDIF. * rp_provide_from_last p3529 space pn-begda pn-endda. * IF pnp-sw-found = 1. * gt_out-fach3 = p3529-fach3."所学专业 * ENDIF. IF GT_OUT-ENDDA4 <> '00000000'. LV_ENDDA02 = GT_OUT-ENDDA4. "最后工作日期 ELSE. LV_ENDDA02 = SY-DATUM. ENDIF. *---调用函数获取社会工龄 CALL FUNCTION 'HR_99S_INTERVAL_BETWEEN_DATES' EXPORTING BEGDA = GT_OUT-DAT03 ENDDA = LV_ENDDA02 IMPORTING C_YEARS = LV_YEARS2. GT_OUT-SHAGE = LV_YEARS2. *---调用函数获取司龄 CALL FUNCTION 'HR_99S_INTERVAL_BETWEEN_DATES' EXPORTING BEGDA = GT_OUT-DAT01 ENDDA = LV_ENDDA02 IMPORTING C_MONTHS = LV_MONTH. LV_SILING = LV_MONTH / 12. GT_OUT-SLAGE = LV_SILING. *---PA0016相关 RP_PROVIDE_FROM_LAST P0016 SPACE PN-BEGDA PN-ENDDA. IF PNP-SW-FOUND = 1. READ TABLE LT_T547S WITH KEY CTTYP = P0016-CTTYP. IF SY-SUBRC = 0. GT_OUT-CTTYP = LT_T547S-CTTXT. ENDIF. IF P0016-ZZ_QXLX = 10. GT_OUT-ZZ_QXLX = '固定期限劳动合同'. "合同期限分类 ELSEIF P0016-ZZ_QXLX = 20. GT_OUT-ZZ_QXLX = '无固定期限劳动合同'. ELSEIF P0016-ZZ_QXLX = 90. GT_OUT-ZZ_QXLX = '其他'. ENDIF. GT_OUT-ZZ_JCFS = P0016-ZZ_JCFS."解除合同方式 ENDIF. *---PA3527相关 RP_PROVIDE_FROM_LAST P3527 SPACE PN-BEGDA PN-ENDDA. IF PNP-SW-FOUND = 1. IF P3527-HUKOT = 1. GT_OUT-HUKOT = '非农业户口'. "户口性质 ELSEIF P3527-HUKOT = 2. GT_OUT-HUKOT = '农业户口'. ELSEIF P3527-HUKOT = 3. GT_OUT-HUKOT = '其他'. ENDIF. ENDIF. *---PA0022相关 * RP_PROVIDE_FROM_LAST P0022 SPACE PN-BEGDA PN-ENDDA. CLEAR LT_PA0022. READ TABLE LT_PA0022 WITH KEY PERNR = GT_OUT-PERNR. IF SY-SUBRC = 0. READ TABLE LT_T517T WITH KEY SLART = LT_PA0022-SUBTY. IF SY-SUBRC = 0. GT_OUT-SUBTY = LT_T517T-STEXT. ENDIF. GT_OUT-ENDDA2 = LT_PA0022-ZZ_BYSJ. "毕业时间 GT_OUT-INSTI = LT_PA0022-INSTI. "院校/培训机构名称 GT_OUT-BEGDA5 = LT_PA0022-BEGDA. IF LT_PA0022-ZZ_ZGXW = '01'. READ TABLE LT_T519T WITH KEY SLABS = LT_PA0022-SLABS. IF SY-SUBRC = 0. GT_OUT-SLABS = LT_T519T-STEXT. ENDIF. ENDIF. READ TABLE LT_DD07T WITH KEY DOMVALUE_L = LT_PA0022-ZZ_XXXS DOMNAME = 'ZZ_XXXS'. IF SY-SUBRC = 0. GT_OUT-XXXS = LT_DD07T-DDTEXT. ENDIF. ENDIF. * LOOP AT p0022 WHERE zz_zgxl = '01'. * IF p0022-zz_zgxl = '01'. * * READ TABLE lt_t517t WITH KEY slart = p0022-subty. * IF sy-subrc = 0. * gt_out-subty = lt_t517t-stext. * ENDIF. * * gt_out-endda2 = p0022-zz_bysj. "毕业时间 * gt_out-insti = p0022-insti. "院校/培训机构名称 * gt_out-begda5 = p0022-begda. * ENDIF. * * IF p0022-zz_zgxw = '01'. * READ TABLE lt_t519t WITH KEY slabs = p0022-slabs. * IF sy-subrc = 0. * gt_out-slabs = lt_t519t-stext. * ENDIF. * * ENDIF. * * READ TABLE lt_dd07t WITH KEY domvalue_l = p0022-zz_xxxs * domname = 'ZZ_XXXS'. * IF sy-subrc = 0. * gt_out-xxxs = lt_dd07t-ddtext. * ENDIF. * * ENDLOOP. ******************************************************************************** READ TABLE GT_HRP9504 INTO DATA(GS_HRP9504) WITH KEY OBJID = P0001-PLANS. IF SY-SUBRC = 0. * gt_out-zz_gwzu = gs_hrp9504-zz_gwzu. "职族 GT_OUT-ZZ_GWZL = GS_HRP9504-ZZ_GWZL. "职类描述 IF GS_HRP9504-ZZ_GWZL = '01'. GT_OUT-ZZ_GWZL = '高层管理'. ELSEIF GS_HRP9504-ZZ_GWZL = '02'. GT_OUT-ZZ_GWZL = '中层管理'. ENDIF. ENDIF. LOOP AT P9019 WHERE ZZ_SFZGZC = '01'. GT_OUT-ZZ_HDZC = P9019-ZZ_HDZC."获得职称 GT_OUT-ZZ_ZCDJ = P9019-ZZ_ZCDJ."职称级别 CASE P9019-ZZ_ZCDJ. WHEN '01'. GT_OUT-ZZ_ZCDJ = '教授级'. WHEN '02'. GT_OUT-ZZ_ZCDJ = '正高级'. WHEN '03'. GT_OUT-ZZ_ZCDJ = '高级'. WHEN '04'. GT_OUT-ZZ_ZCDJ = '中级'. WHEN '05'. GT_OUT-ZZ_ZCDJ = '初级'. ENDCASE. ENDLOOP. SORT P0185 BY SUBTY. RP_PROVIDE_FROM_LAST P0185 SPACE PN-BEGDA PN-ENDDA. GT_OUT-ICNUM = P0185-ICNUM. IF P0185-USETO IS NOT INITIAL. GT_OUT-USETO = P0185-USETO. GT_OUT-USETO1 = P0185-USETO+0(4) && '/' && P0185-USETO+4(2) && '/' && P0185-USETO+6(2). ENDIF. SORT P0006 BY ANSSA. LOOP AT P0006 WHERE ANSSA = '01' OR ANSSA = '05' OR ANSSA = '06' OR ANSSA = '02'. IF P0006-ANSSA = '01'. GT_OUT-LOCAT = P0006-LOCAT."户口所在地 ELSEIF P0006-ANSSA = '06'. GT_OUT-LOCAT2 = P0006-LOCAT."驻外地区 ELSEIF P0006-ANSSA = '05'. GT_OUT-LOCAT3 = P0006-LOCAT."社保缴纳地 ELSEIF P0006-ANSSA = '02'. GT_OUT-LOCAT4 = P0006-LOCAT."现住家庭地址 ENDIF. ENDLOOP. RP_PROVIDE_FROM_LAST P0016 SPACE PN-BEGDA PN-ENDDA. IF PNP-SW-FOUND = 1.. GT_OUT-BEGDA3 = P0016-BEGDA."本期合同开始日期 GT_OUT-ENDDA3 = P0016-CTEDT."本期合同结束日期 ENDIF. LOOP AT P0105 WHERE USRTY = '01' OR USRTY = '03' OR USRTY = '04' OR USRTY = '06' OR USRTY = '05'. IF P0105-USRTY = '01'. GT_OUT-USRID = P0105-USRID. "联系方式 ELSEIF P0105-USRTY = '03'. GT_OUT-USRID3 = P0105-USRID. "紧急联系人电话 GT_OUT-ZZ_JJLXR = P0105-ZZ_JJLXRDH."紧急联系人 ELSEIF P0105-USRTY = '04'. GT_OUT-USRID2 = P0105-USRID. "电子邮件 ELSEIF P0105-USRTY = '06'. GT_OUT-USRID1 = P0105-USRID. "档案编号 ELSEIF P0105-USRTY = '05'. GT_OUT-ZGSYX = P0105-USRID. ENDIF. ENDLOOP. "如果入职日期为空 则取0000 ZA IF GT_OUT-DAT01 = '00000000'. CLEAR P0000. READ TABLE P0000 WITH KEY MASSN = 'ZA'. IF SY-SUBRC = 0. GT_OUT-DAT01 = P0000-BEGDA. ENDIF. ENDIF. GT_OUT-DAT011 = GT_OUT-DAT01. GT_OUT-DAT021 = GT_OUT-DAT02. GT_OUT-BEGDA21 = GT_OUT-BEGDA2. GT_OUT-GBDAT1 = GT_OUT-GBDAT. GT_OUT-DAT031 = GT_OUT-DAT03. GT_OUT-BEGDA41 = GT_OUT-BEGDA4. IF GT_OUT-USRID2 IS NOT INITIAL. GT_OUT-USRID2 = TO_LOWER( GT_OUT-USRID2 ). ENDIF. IF GT_OUT-ZGSYX IS NOT INITIAL. GT_OUT-ZGSYX = TO_LOWER( GT_OUT-ZGSYX ). ENDIF. APPEND GT_OUT. CLEAR GT_OUT. ENDFORM. *&---------------------------------------------------------------------* *& FORM FRM_SHOW_LOG *&---------------------------------------------------------------------* *& text ALV显示 *&---------------------------------------------------------------------* FORM FRM_DISPLAY_ALV. * IF P_SFYZZ = '是'. * CHECK GT_OUT-SFYZZ = P_SFYZZ. * ELSEIF P_SFYZZ = '否'. * CHECK GT_OUT-SFYZZ = P_SFYZZ. * ENDIF. * CHECK GT_OUT-SFYZZ IN P_SFYZZ. *---格式 CLEAR GS_LAYOUT. GS_LAYOUT-ZEBRA = 'X'."斑马线 GS_LAYOUT-CWIDTH_OPT = 'X'."优化列宽 GS_LAYOUT-CTAB_FNAME = 'CELLCOLOR'. "ALV 控制: 带有复杂单元格颜色编码的字段名称 *---字段 DEFINE HOUT1. gs_field-fieldname = &1. gs_field-scrtext_l = &2. APPEND gs_field TO gt_field. CLEAR gs_field. END-OF-DEFINITION. HOUT1 'SNO ' '序号'. HOUT1 'PERNR ' '人员编号'. HOUT1 'USRID1 ' '档案编号'. HOUT1 'CNAME ' '姓名'. HOUT1 'GESCH2 ' '性别'. HOUT1 'ZZ_GSDM ' '人事范围'. HOUT1 'ZZ_GSDMT' '人事范围文本'. HOUT1 'BUKRS ' '合同签署公司'. HOUT1 'ORGEH ' '直属部门编码'. HOUT1 'ORGTX ' '直属部门'. HOUT1 'ZZ_YJJG ' '集团'. HOUT1 'ZZ_YJJG2' '一级机构中文描述'. HOUT1 'ZZ_YJJG3' '二级机构中文描述'. HOUT1 'ZZ_YJJG4' '三级机构中文描述'. HOUT1 'ZZ_YJJG5' '四级机构中文描述'. HOUT1 'PLANSN ' '职位编码'. HOUT1 'PLANS ' '职位'. HOUT1 'ZZ_GWZU ' '职族'. HOUT1 'ZZ_GWZL ' '职类'. HOUT1 'ZZ_ZZZJ ' '职级'. HOUT1 'ZZ_ZJSJBH ' '直线汇报人编码'. HOUT1 'ZZ_ZJSJ ' '直线汇报人'. HOUT1 'ZZ_DSBHBH ' '导师编码'. HOUT1 'ZZ_DSBH ' '导师'. HOUT1 'STAT2 ' '员工状态'. HOUT1 'DAT011 ' '入职时间'. HOUT1 'DAT021 ' '预计转正时间'. HOUT1 'SJZZRQ1 ' '实际转正时间'. HOUT1 'SFYZZ ' '是否已转正'. HOUT1 'BEGDA21 ' '离职时间'. HOUT1 'SUBTY ' '学历'. HOUT1 'SLABS ' '学位'. HOUT1 'XXXS ' '学习形式'. HOUT1 'FACH3 ' '所学专业'. HOUT1 'INSTI ' '院校培训机构名称'. HOUT1 'ENDDA2 ' '毕业时间'. HOUT1 'ZZ_HDZC ' '获得职称'. HOUT1 'ZZ_ZCDJ ' '职称级别'. HOUT1 'ICNUM ' '身份证'. HOUT1 'USETO1 ' '身份证失效日期'. HOUT1 'GBDAT1 ' '出生日期'. HOUT1 'DISP_AGE' '年龄'. HOUT1 'FAMST ' '婚姻状况'. HOUT1 'ZZ_MZT ' '民族'. HOUT1 'ZZ_ZGSFMS ' '籍贯省份'. HOUT1 'LOCAT ' '户口所在地'. HOUT1 'HUKOT ' '户口性质'. HOUT1 'ZZ_ZPQD ' '招聘来源'. HOUT1 'ZZ_LWSSGS' '用工形式'. HOUT1 'PERSG ' '员工组'. HOUT1 'PERSK ' '员工子组'. HOUT1 'CTTYP ' '合同类型'. HOUT1 'ZZ_QXLX ' '合同期限分类'. HOUT1 'BEGDA3 ' '本期合同开始日期'. HOUT1 'ENDDA3 ' '本期合同结束日期'. HOUT1 'DAT031 ' '首次参加工作日期'. HOUT1 'SHAGE ' '社会工龄'. HOUT1 'SLAGE ' '司龄'. HOUT1 'LOCAT2 ' '驻外地区'. HOUT1 'ZZ_CZGZD' '常驻工作地点'. HOUT1 'ZZ_SJGZD' '实际工作地址'. HOUT1 'LOCAT3 ' '社保缴纳地'. HOUT1 'KOSTL ' '发薪成本中心号'. HOUT1 'LOCAT4 ' '现家庭住址'. HOUT1 'USRID ' '联系方式'. HOUT1 'USRID2 ' '电子邮件'. HOUT1 'ZGSYX ' '公司邮箱'. HOUT1 'ZZ_JJLXR' '紧急联系人'. HOUT1 'USRID3 ' '紧急联系人联系方式'. HOUT1 'BEGDA41 ' '最后工作日期'. * HOUT1 'ZZ_JCFS ' '解除合同方式'. HOUT1 'MASSG ' '离职类别'. HOUT1 'ZZ_LZXL ' '离职原因'. HOUT1 'ZWECK' '开户行'. HOUT1 'BKREF' '银行账号'. HOUT1 'SCHKZ' '工作班次'. HOUT1 'ABKRS' '薪资范围'. *---调用ALV函数 CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC' EXPORTING I_CALLBACK_PROGRAM = SY-REPID I_CALLBACK_PF_STATUS_SET = 'FRM_PF_STATUS' "状态栏 I_CALLBACK_USER_COMMAND = 'FRM_UER_COMMMAN' "按钮操作 IS_LAYOUT_LVC = GS_LAYOUT IT_FIELDCAT_LVC = GT_FIELD I_DEFAULT = 'X' I_SAVE = 'A' TABLES T_OUTTAB = GT_OUT[] "显示内表数据 EXCEPTIONS PROGRAM_ERROR = 1 OTHERS = 2. IF SY-SUBRC <> 0. * Implement suitable error handling here ENDIF. ENDFORM. *&---------------------------------------------------------------------* *& FORM FRM_PF_STATUS *&---------------------------------------------------------------------* *& text 按键设置 *&---------------------------------------------------------------------* FORM FRM_PF_STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB. SET PF-STATUS 'PF-STATUS'. ENDFORM. *&---------------------------------------------------------------------* *& FORM FRM_UER_COMMMAN *&---------------------------------------------------------------------* *& text 按键控制 *&---------------------------------------------------------------------* FORM FRM_UER_COMMMAN USING U_UCOMM LIKE SY-UCOMM U_SELFIELD TYPE SLIS_SELFIELD. DATA: LW_STBL TYPE LVC_S_STBL. CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR' IMPORTING E_GRID = GR_GRID. CALL METHOD GR_GRID->CHECK_CHANGED_DATA. CASE U_UCOMM. WHEN 'EXCEL'. CALL FUNCTION 'ZHR_POPUP_TO_INFORM'. PERFORM FRM_DOWN_EXCEL. ENDCASE. U_SELFIELD-REFRESH = 'X'. U_SELFIELD-COL_STABLE = 'X'. U_SELFIELD-ROW_STABLE = 'X'. ENDFORM. *&---------------------------------------------------------------------* *& Form FRM_READ_TEXT *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM FRM_READ_TEXT. SELECT * FROM HRP9504 INTO CORRESPONDING FIELDS OF TABLE GT_HRP9504 WHERE BEGDA LE PN-ENDDA AND ENDDA GE PN-BEGDA. SELECT * FROM HRP9502 INTO CORRESPONDING FIELDS OF TABLE GT_HRP9502. SELECT * INTO CORRESPONDING FIELDS OF TABLE GT_0027 FROM PA0027 WHERE SUBTY = '01' AND BEGDA LE PN-ENDDA AND ENDDA GE PN-BEGDA. SELECT * FROM PA0002 INTO CORRESPONDING FIELDS OF TABLE GT_PA0002. SELECT * FROM T527X INTO CORRESPONDING FIELDS OF TABLE GT_T527X. SELECT * FROM T500P INTO CORRESPONDING FIELDS OF TABLE GT_T500P." WHERE SPRAS = SY-LANGU.. SELECT * FROM T001 INTO CORRESPONDING FIELDS OF TABLE GT_T001." WHERE SPRAS = SY-LANGU.. * SELECT * FROM ZHR_GWGF INTO CORRESPONDING FIELDS OF TABLE GT_9504. SELECT * FROM HRP1000 INTO CORRESPONDING FIELDS OF TABLE GT_HRP1000 ."where begda <= pn-endda and endda => pn-endda. SELECT * FROM ZHR_LZYY INTO CORRESPONDING FIELDS OF TABLE GT_ZHR_LZYY. SELECT * FROM PA0041 INTO CORRESPONDING FIELDS OF TABLE GT_PA0041 WHERE DAR04 = '04'. SELECT * FROM ZHR_CZDD INTO CORRESPONDING FIELDS OF TABLE GT_ZHR_CZDD. SELECT * FROM T501T INTO CORRESPONDING FIELDS OF TABLE LT_T501T. SELECT * FROM T503T INTO CORRESPONDING FIELDS OF TABLE LT_T503T . SELECT * FROM T530T INTO CORRESPONDING FIELDS OF TABLE LT_T530T WHERE MASSN = 'ZC'. SELECT * FROM DD07T INTO CORRESPONDING FIELDS OF TABLE LT_DD07T WHERE DOMNAME = 'ZZ_ZPQD' OR DOMNAME = 'ZZ_XXXS' OR DOMNAME = 'ZZ_MZ'. SELECT * FROM T547S INTO CORRESPONDING FIELDS OF TABLE LT_T547S. SELECT * FROM T517T INTO CORRESPONDING FIELDS OF TABLE LT_T517T. SELECT * FROM T519T INTO CORRESPONDING FIELDS OF TABLE LT_T519T. SELECT * FROM BNKA INTO CORRESPONDING FIELDS OF TABLE LT_BNKA_BF WHERE BANKS = 'CN'. SELECT * FROM T005U INTO CORRESPONDING FIELDS OF TABLE LT_T005U WHERE SPRAS = '1'. SELECT * FROM PA0022 INTO CORRESPONDING FIELDS OF TABLE LT_PA0022 WHERE ZZ_ZGXL = '01'. SELECT * FROM PA3529 INTO CORRESPONDING FIELDS OF TABLE LT_PA3529 FOR ALL ENTRIES IN LT_PA0022 WHERE PERNR = LT_PA0022-PERNR AND BEGDA = LT_PA0022-BEGDA AND ENDDA = LT_PA0022-ENDDA AND SUBTY = LT_PA0022-SUBTY. IF PN-BEGDA = PN-ENDDA. LV_0000 = '18000101'. ELSE. LV_0000 = PN-BEGDA. ENDIF. SELECT * FROM PA0000 INTO CORRESPONDING FIELDS OF TABLE LT_0000 WHERE MASSN = 'ZC' AND BEGDA GE LV_0000 AND BEGDA LE PN-ENDDA. DELETE LT_0000 WHERE ENDDA <> '99991231'. RP_SET_DATA_INTERVAL 'P0000' '19000101' '99991231'. "获取生命周期日期 RP_SET_DATA_INTERVAL 'P0001' '19000101' '99991231'. "获取生命周期日期 ENDFORM. *&---------------------------------------------------------------------* *& Form FRM_DOWN_EXCEL *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM FRM_DOWN_EXCEL . DATA: L_OBJID TYPE WWWDATATAB-OBJID, L_PATH TYPE STRING, L_ROW_BEGIN TYPE I, L_ROW_END TYPE I, L_COL_BEGIN TYPE I, L_COL_END TYPE I, L_ROW TYPE I, L_COL TYPE I, L_ROW_COUNT TYPE I, L_COL_COUNT TYPE I, L_COL_TMP TYPE I, L_ROW_TMP TYPE I, L_VALUE TYPE STRING, L_SUM TYPE I. DATA: L_TEXT(60) TYPE C. DATA: LT_FIELDCAT_LVC TYPE TABLE OF LVC_S_FCAT. REFRESH GT_EXL. CLEAR GT_EXL[]. CLEAR GT_FIELD2[]. LOOP AT GT_OUT. MOVE-CORRESPONDING GT_OUT TO GT_EXL. APPEND GT_EXL. CLEAR GT_OUT. CLEAR GT_EXL. ENDLOOP. DEFINE HOUT2. gs_field2-fieldname = &1. gs_field2-seltext = &2. gs_field2-coltext = &2. gs_field2-scrtext_s = &2. gs_field2-scrtext_m = &2. gs_field2-scrtext_l = &2. gs_field2-ref_table = &3. gs_field2-ref_field = &4. gs_field2-lzero = 'X'. gs_field2-just = &5. APPEND gs_field2 TO gt_field2. CLEAR gs_field2. END-OF-DEFINITION. * * hout2 'SNO' '序号' 'HRP1000' 'STEXT' 'L'. * hout2 'PERNR' '人员号' 'P1000' 'STEXT' 'L'. * hout2 'USRID1' '工号' 'P1000' 'STEXT' 'L'. * hout2 'CNAME' '姓名' 'P1000' 'STEXT' 'L'. * hout2 'GESCH2' '性别' 'P1000' 'STEXT' 'L'. * hout2 'BUKRS' '公司' 'P1000' 'STEXT' 'L'. * hout2 'ORGEH' '部门' 'P1000' 'STEXT' 'L'. * hout2 'ZZ_YJJG' '集团' 'P1000' 'STEXT' 'L'. * hout2 'ZZ_YJJG2' '一级部门' 'P1000' 'STEXT' 'L'. * hout2 'ZZ_YJJG3' '二级部门' 'P1000' 'STEXT' 'L'. * hout2 'ZZ_YJJG4' '三级部门' 'P1000' 'STEXT' 'L'. * hout2 'ZZ_YJJG5' '四级部门' 'P1000' 'STEXT' 'L'. * hout2 'PLANS' '职位' 'P1000' 'STEXT' 'L'. * hout2 'ZZ_GWZU' '职族' 'P1000' 'STEXT' 'L'. * hout2 'ZZ_GWZL' '职类' 'P1000' 'STEXT' 'L'. * hout2 'ZZ_ZZZJ' '职级' 'P1000' 'STEXT' 'L'. * hout2 'ZZ_ZJSJ' '直线汇报人' 'P1000' 'STEXT' 'L'. * hout2 'ZZ_DSBH' '导师' 'P1000' 'STEXT' 'L'. * hout2 'STAT2' '员工状态' 'P1000' 'STEXT' 'L'. * hout2 'DAT011' '入职时间' 'P1000' 'STEXT' 'L'. * hout2 'DAT021' '预计转正时间' 'P1000' 'STEXT' 'L'. * hout2 'BEGDA21' '离职时间' 'P1000' 'STEXT' 'L'. * hout2 'SUBTY' '学历' 'P1000' 'STEXT' 'L'. * hout2 'SLABS' '学位' 'P1000' 'STEXT' 'L'. * hout2 'INSMO' '学习方式' 'P1000' 'STEXT' 'L'. * hout2 'FACH3' '所学专业' 'P1000' 'STEXT' 'L'. * hout2 'INSTI' '院校培训机构名称' 'P1000' 'STEXT' 'L'. * hout2 'ENDDA2' '毕业时间' 'P1000' 'STEXT' 'L'. * hout2 'ZZ_HDZC' '获得职称' 'P1000' 'STEXT' 'L'. * hout2 'ZZ_ZCDJ' '职称级别' 'P1000' 'STEXT' 'L'. * hout2 'ICNUM' '身份证' 'P1000' 'STEXT' 'L'. * hout2 'GBDAT1' '出生日期' 'P1000' 'STEXT' 'L'. * hout2 'DISP_AGE' '年龄' 'P1000' 'STEXT' 'L'. * hout2 'FAMST' '婚姻状况' 'P1000' 'STEXT' 'L'. * hout2 'ZZ_ZGSFMS' '籍贯省份' 'P1000' 'STEXT' 'L'. * hout2 'LOCAT' '户口所在地' 'P1000' 'STEXT' 'L'. * hout2 'HUKOT' '户口性质' 'P1000' 'STEXT' 'L'. * hout2 'ZZ_ZPQD ' '招聘来源' 'P1000' 'STEXT' 'L'. * hout2 'ZZ_LWSSGS' '用工形式' 'P1000' 'STEXT' 'L'. * hout2 'PERSG' '员工组' 'P1000' 'STEXT' 'L'. * hout2 'PERSK' '员工子组' 'P1000' 'STEXT' 'L'. * hout2 'CTTYP' '合同类型' 'P1000' 'STEXT' 'L'. * hout2 'ZZ_QXLX' '合同期限分类' 'P1000' 'STEXT' 'L'. * hout2 'BEGDA3' '本期合同开始日期' 'P1000' 'STEXT' 'L'. * hout2 'ENDDA3' '本期合同结束日期' 'P1000' 'STEXT' 'L'. * hout2 'DAT031' '首次参加工作日期' 'P1000' 'STEXT' 'L'. * hout2 'SHAGE' '社会工龄' 'P1000' 'STEXT' 'L'. * hout2 'SLAGE' '司龄' 'P1000' 'STEXT' 'L'. * hout2 'ZZ_CZGZD' '常驻工作地点' 'P1000' 'STEXT' 'L'. * hout2 'ZZ_SJGZD' '实际工作地点' 'P1000' 'STEXT' 'L'. * hout2 'LOCAT3' '社保缴纳地' 'P1000' 'STEXT' 'L'. * hout2 'KOSTL' '发薪成本中心号' 'P1000' 'STEXT' 'L'. * hout2 'LOCAT4' '现家庭住址' 'P1000' 'STEXT' 'L'. * hout2 'USRID' '联系方式' 'P1000' 'STEXT' 'L'. * hout2 'USRID2' '电子邮件' 'P1000' 'STEXT' 'L'. * hout2 'ZZ_JJLXR' '紧急联系人' 'P1000' 'STEXT' 'L'. * hout2 'USRID3' '紧急联系人联系方式' 'P1000' 'STEXT' 'L'. * hout2 'BEGDA41' '最后工作日期' 'P1000' 'STEXT' 'L'. * hout2 'MASSG' '操作原因' 'P1000' 'STEXT' 'L'. * hout2 'ZZ_LZXL' '离职原因' 'P1000' 'STEXT' 'L'. * hout2 'ZWECK' '开户行' 'P1000' 'STEXT' 'L'. * hout2 'BKREF' '银行账号' 'P1000' 'STEXT' 'L'. HOUT2 'SNO ' '序号' 'HRP1000' 'STEXT' 'L'. HOUT2 'PERNR ' '人员编号' 'P1000' 'STEXT' 'L'. HOUT2 'USRID1 ' '档案编号' 'P1000' 'STEXT' 'L'. HOUT2 'CNAME ' '姓名' 'P1000' 'STEXT' 'L'. HOUT2 'GESCH2 ' '性别' 'P1000' 'STEXT' 'L'. HOUT2 'ZZ_GSDM ' '人事范围' 'P1000' 'STEXT' 'L'. HOUT2 'ZZ_GSDMT' '人事范围文本' 'P1000' 'STEXT' 'L'. HOUT2 'BUKRS ' '合同签署公司' 'P1000' 'STEXT' 'L'. HOUT2 'ORGEH ' '直属部门编码' 'P1000' 'STEXT' 'L'. HOUT2 'ORGTX ' '直属部门' 'P1000' 'STEXT' 'L'. HOUT2 'ZZ_YJJG ' '集团' 'P1000' 'STEXT' 'L'. HOUT2 'ZZ_YJJG2' '一级机构中文描述' 'P1000' 'STEXT' 'L'. HOUT2 'ZZ_YJJG3' '二级机构中文描述' 'P1000' 'STEXT' 'L'. HOUT2 'ZZ_YJJG4' '三级机构中文描述' 'P1000' 'STEXT' 'L'. HOUT2 'ZZ_YJJG5' '四级机构中文描述' 'P1000' 'STEXT' 'L'. HOUT2 'PLANSN ' '职位编码' 'P1000' 'STEXT' 'L'. HOUT2 'PLANS ' '职位' 'P1000' 'STEXT' 'L'. HOUT2 'ZZ_GWZU ' '职族' 'P1000' 'STEXT' 'L'. HOUT2 'ZZ_GWZL ' '职类' 'P1000' 'STEXT' 'L'. HOUT2 'ZZ_ZZZJ ' '职级' 'P1000' 'STEXT' 'L'. HOUT2 'ZZ_ZJSJBH ' '直线汇报人编码' 'P1000' 'STEXT' 'L'. HOUT2 'ZZ_ZJSJ ' '直线汇报人' 'P1000' 'STEXT' 'L'. HOUT2 'ZZ_DSBHBH ' '导师编码' 'P1000' 'STEXT' 'L'. HOUT2 'ZZ_DSBH ' '导师' 'P1000' 'STEXT' 'L'. HOUT2 'STAT2 ' '员工状态' 'P1000' 'STEXT' 'L'. HOUT2 'DAT011 ' '入职时间' 'P1000' 'STEXT' 'L'. HOUT2 'DAT021 ' '预计转正时间' 'P1000' 'STEXT' 'L'. HOUT2 'SJZZRQ1 ' '实际转正时间' 'P1000' 'STEXT' 'L'. HOUT2 'SFYZZ ' '是否已转正' 'P1000' 'STEXT' 'L'. HOUT2 'BEGDA21 ' '离职时间' 'P1000' 'STEXT' 'L'. HOUT2 'SUBTY ' '学历' 'P1000' 'STEXT' 'L'. HOUT2 'SLABS ' '学位' 'P1000' 'STEXT' 'L'. HOUT2 'XXXS ' '学习形式' 'P1000' 'STEXT' 'L'. HOUT2 'FACH3 ' '所学专业' 'P1000' 'STEXT' 'L'. HOUT2 'INSTI ' '院校培训机构名称' 'P1000' 'STEXT' 'L'. HOUT2 'ENDDA2 ' '毕业时间' 'P1000' 'STEXT' 'L'. HOUT2 'ZZ_HDZC ' '获得职称' 'P1000' 'STEXT' 'L'. HOUT2 'ZZ_ZCDJ ' '职称级别' 'P1000' 'STEXT' 'L'. HOUT2 'ICNUM ' '身份证' 'P1000' 'STEXT' 'L'. HOUT2 'USETO1 ' '身份证失效日期' 'P1000' 'STEXT' 'L'. HOUT2 'GBDAT1 ' '出生日期' 'P1000' 'STEXT' 'L'. HOUT2 'DISP_AGE' '年龄' 'P1000' 'STEXT' 'L'. HOUT2 'FAMST ' '婚姻状况' 'P1000' 'STEXT' 'L'. HOUT2 'ZZ_MZT ' '民族' 'P1000' 'STEXT' 'L'. HOUT2 'ZZ_ZGSFMS ' '籍贯省份' 'P1000' 'STEXT' 'L'. HOUT2 'LOCAT ' '户口所在地' 'P1000' 'STEXT' 'L'. HOUT2 'HUKOT ' '户口性质' 'P1000' 'STEXT' 'L'. HOUT2 'ZZ_ZPQD ' '招聘来源' 'P1000' 'STEXT' 'L'. HOUT2 'ZZ_LWSSGS' '用工形式' 'P1000' 'STEXT' 'L'. HOUT2 'PERSG ' '员工组' 'P1000' 'STEXT' 'L'. HOUT2 'PERSK ' '员工子组' 'P1000' 'STEXT' 'L'. HOUT2 'CTTYP ' '合同类型' 'P1000' 'STEXT' 'L'. HOUT2 'ZZ_QXLX ' '合同期限分类' 'P1000' 'STEXT' 'L'. HOUT2 'BEGDA3 ' '本期合同开始日期' 'P1000' 'STEXT' 'L'. HOUT2 'ENDDA3 ' '本期合同结束日期' 'P1000' 'STEXT' 'L'. HOUT2 'DAT031 ' '首次参加工作日期' 'P1000' 'STEXT' 'L'. HOUT2 'SHAGE ' '社会工龄' 'P1000' 'STEXT' 'L'. HOUT2 'SLAGE ' '司龄' 'P1000' 'STEXT' 'L'. HOUT2 'LOCAT2 ' '驻外地区' 'P1000' 'STEXT' 'L'. HOUT2 'ZZ_CZGZD' '常驻工作地点' 'P1000' 'STEXT' 'L'. HOUT2 'ZZ_SJGZD' '实际工作地址' 'P1000' 'STEXT' 'L'. HOUT2 'LOCAT3 ' '社保缴纳地' 'P1000' 'STEXT' 'L'. HOUT2 'KOSTL ' '发薪成本中心号' 'P1000' 'STEXT' 'L'. HOUT2 'LOCAT4 ' '现家庭住址' 'P1000' 'STEXT' 'L'. HOUT2 'USRID ' '联系方式' 'P1000' 'STEXT' 'L'. HOUT2 'USRID2 ' '电子邮件' 'P1000' 'STEXT' 'L'. HOUT2 'ZGSYX ' '公司邮箱' 'P1000' 'STEXT' 'L'. HOUT2 'ZZ_JJLXR' '紧急联系人' 'P1000' 'STEXT' 'L'. HOUT2 'USRID3 ' '紧急联系人联系方式' 'P1000' 'STEXT' 'L'. HOUT2 'BEGDA41 ' '最后工作日期' 'P1000' 'STEXT' 'L'. HOUT2 'MASSG ' '离职类别' 'P1000' 'STEXT' 'L'. HOUT2 'ZZ_LZXL ' '离职原因' 'P1000' 'STEXT' 'L'. HOUT2 'ZWECK' '开户行' 'P1000' 'STEXT' 'L'. HOUT2 'BKREF' '银行账号' 'P1000' 'STEXT' 'L'. HOUT2 'SCHKZ' '工作班次' 'P1000' 'STEXT' 'L'. HOUT2 'ABKRS' '薪资范围' 'P1000' 'STEXT' 'L'. LT_FIELDCAT_LVC[] = GT_FIELD2[]. *取模板 L_ROW_BEGIN = 3. "开始填充数据的行 L_COL_BEGIN = 1. L_COL_COUNT = LINES( GT_FIELD2 ). "最大填充列数 L_ROW_COUNT = LINES( GT_EXL[] ). "输出表的行数 L_ROW_END = L_ROW_BEGIN + L_ROW_COUNT - 1. L_COL_END = L_COL_BEGIN + L_COL_COUNT - 1. L_OBJID = 'ZHRPA001'. *下载EXCEL模板 PERFORM FRM_EXP_PREPARE USING L_OBJID CHANGING L_PATH. *初始化 PERFORM FRM_INIT_EXCEL USING P_FILENAME ''. *数据行数 L_SUM = LINES( GT_EXL[] ). G_6_ROW = 10000. G_6_ROW_BEGIN = 3. G_6_LEFT = 'A'. G_6_RIGHT = 'A'. PERFORM FRM_EXPORT_TO_EXCEL TABLES GT_EXL[]. *清空粘贴板 CALL FUNCTION 'ZHR_CLEAR_CLIPBOARD '. *设置单元格的边框 PERFORM FRM_BORDERRANGE USING L_COL_BEGIN G_6_ROW_BEGIN L_COL_END L_ROW_END 1 2 1. *显示excel,不打印数据 PERFORM FRM_PREVIEW USING ''. *释放Excel PERFORM FRM_FREE_EXCEL. GT_FIELD2 = LT_FIELDCAT_LVC[]. MESSAGE '数据下载完毕' TYPE 'S'. ENDFORM. *&---------------------------------------------------------------------* *& Form FRM_PROCESS_DAT *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM FRM_PROCESS_DAT . LOOP AT GT_OUT. "导师编码去零 IF GT_OUT-ZZ_DSBHBH = '00000000' OR GT_OUT-ZZ_DSBHBH = ''. SHIFT GT_OUT-ZZ_DSBHBH LEFT DELETING LEADING '0'. ENDIF. "直线上级编码去零 IF GT_OUT-ZZ_ZJSJBH = '00000000' OR GT_OUT-ZZ_ZJSJBH = ''. SHIFT GT_OUT-ZZ_ZJSJBH LEFT DELETING LEADING '0'. ENDIF. "毕业时间 IF GT_OUT-ENDDA2 IS NOT INITIAL . IF GT_OUT-ENDDA2 = '00000000'. SHIFT GT_OUT-ENDDA2 LEFT DELETING LEADING '0'. ELSE. GT_OUT-ENDDA2 = GT_OUT-ENDDA2+0(4) && '/' && GT_OUT-ENDDA2+4(2) && '/' && GT_OUT-ENDDA2+6(2). ENDIF. ENDIF. "入职日期 IF GT_OUT-DAT011 IS NOT INITIAL . IF GT_OUT-DAT011 = '00000000'. SHIFT GT_OUT-DAT011 LEFT DELETING LEADING '0'. ELSE. GT_OUT-DAT011 = GT_OUT-DAT011+0(4) && '/' && GT_OUT-DAT011+4(2) && '/' && GT_OUT-DAT011+6(2). ENDIF. ENDIF. "预计转正日期 IF GT_OUT-DAT021 IS NOT INITIAL . IF GT_OUT-DAT021 = '00000000'. SHIFT GT_OUT-DAT021 LEFT DELETING LEADING '0'. ELSE. GT_OUT-DAT021 = GT_OUT-DAT021+0(4) && '/' && GT_OUT-DAT021+4(2) && '/' && GT_OUT-DAT021+6(2). ENDIF. ENDIF. "离职日期 IF GT_OUT-BEGDA21 IS NOT INITIAL . IF GT_OUT-BEGDA21 = '00000000'. SHIFT GT_OUT-BEGDA21 LEFT DELETING LEADING '0'. ELSE. GT_OUT-BEGDA21 = GT_OUT-BEGDA21+0(4) && '/' && GT_OUT-BEGDA21+4(2) && '/' && GT_OUT-BEGDA21+6(2). ENDIF. ENDIF. "出生日期 IF GT_OUT-GBDAT1 IS NOT INITIAL . IF GT_OUT-GBDAT1 = '00000000'. SHIFT GT_OUT-GBDAT1 LEFT DELETING LEADING '0'. ELSE. GT_OUT-GBDAT1 = GT_OUT-GBDAT1+0(4) && '/' && GT_OUT-GBDAT1+4(2) && '/' && GT_OUT-GBDAT1+6(2). ENDIF. ENDIF. "本期合同开始日期 IF GT_OUT-BEGDA3 IS NOT INITIAL . IF GT_OUT-BEGDA3 = '00000000'. SHIFT GT_OUT-BEGDA3 LEFT DELETING LEADING '0'. ELSE. GT_OUT-BEGDA3 = GT_OUT-BEGDA3+0(4) && '/' && GT_OUT-BEGDA3+4(2) && '/' && GT_OUT-BEGDA3+6(2). ENDIF. ENDIF. "本期合同结束日期 IF GT_OUT-ENDDA3 IS NOT INITIAL . IF GT_OUT-ENDDA3 = '00000000'. SHIFT GT_OUT-ENDDA3 LEFT DELETING LEADING '0'. ELSE. GT_OUT-ENDDA3 = GT_OUT-ENDDA3+0(4) && '/' && GT_OUT-ENDDA3+4(2) && '/' && GT_OUT-ENDDA3+6(2). ENDIF. ENDIF. "首次参加工作日期 IF GT_OUT-DAT031 IS NOT INITIAL . IF GT_OUT-DAT031 = '00000000'. SHIFT GT_OUT-DAT031 LEFT DELETING LEADING '0'. ELSE. GT_OUT-DAT031 = GT_OUT-DAT031+0(4) && '/' && GT_OUT-DAT031+4(2) && '/' && GT_OUT-DAT031+6(2). ENDIF. ENDIF. "最后工作日期 IF GT_OUT-BEGDA41 IS NOT INITIAL . IF GT_OUT-BEGDA41 = '00000000'. SHIFT GT_OUT-BEGDA41 LEFT DELETING LEADING '0'. ELSE. GT_OUT-BEGDA41 = GT_OUT-BEGDA41+0(4) && '/' && GT_OUT-BEGDA41+4(2) && '/' && GT_OUT-BEGDA41+6(2). ENDIF. ENDIF. "实际转正日期 IF GT_OUT-SJZZRQ1 IS NOT INITIAL . IF GT_OUT-SJZZRQ1 = '00000000'. SHIFT GT_OUT-SJZZRQ1 LEFT DELETING LEADING '0'. ELSE. GT_OUT-SJZZRQ1 = GT_OUT-SJZZRQ1+0(4) && '/' && GT_OUT-SJZZRQ1+4(2) && '/' && GT_OUT-SJZZRQ1+6(2). ENDIF. ENDIF. MODIFY GT_OUT. ENDLOOP. ENDFORM. *&---------------------------------------------------------------------* *& Form FRM_PROCESS_DATA *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM FRM_PROCESS_DATA . DATA:LT_ZZJG LIKE TABLE OF ZHRS_ZZJG WITH HEADER LINE. DATA:LV_TABIX TYPE SY-TABIX. DATA:LV_DATUM TYPE SY-DATUM. "离职人员部门描述 SELECT * FROM HRP1000 INTO CORRESPONDING FIELDS OF TABLE GT_HRP1000A FOR ALL ENTRIES IN GT_OUT WHERE BEGDA >= GT_OUT-BEGDA4 AND ENDDA <= GT_OUT-BEGDA4. CALL FUNCTION 'ZHR_GET_ORGINFO_FAST' EXPORTING KEYDATE = PN-ENDDA P_ENDDA = PN-ENDDA TABLES I_OBJID = GT_OBJID ZHR_ZZJG = LT_ZZJG. DELETE GT_OUT WHERE DAT01 NOT IN P_DAT. DELETE GT_OUT WHERE BEGDA2 NOT IN P_LZRQ. DELETE GT_OUT WHERE SFYZZ NOT IN P_SFYZZ. LOOP AT GT_OUT. LV_TABIX = SY-TABIX. GT_OUT-SNO = SY-TABIX. IF GT_OUT-ORGTX IS INITIAL. READ TABLE GT_HRP1000A WITH KEY OTYPE = 'O' OBJID = GT_OUT-ORGEH. IF SY-SUBRC = 0. GT_OUT-ORGTX = GT_HRP1000-STEXT. ENDIF. ENDIF. IF GT_OUT-STAT2 <> '离职'. CLEAR LT_ZZJG. READ TABLE LT_ZZJG WITH KEY ORGEH = GT_OUT-ORGEH. IF SY-SUBRC = 0. GT_OUT-ZZ_YJJG = LT_ZZJG-ZE_JG1ST. GT_OUT-ZZ_YJJG2 = LT_ZZJG-ZE_JG2ST. GT_OUT-ZZ_YJJG3 = LT_ZZJG-ZE_JG3ST. GT_OUT-ZZ_YJJG4 = LT_ZZJG-ZE_JG4ST. GT_OUT-ZZ_YJJG5 = LT_ZZJG-ZE_JG5ST. ENDIF. IF GT_OUT-ZZ_YJJG IS INITIAL. GT_OUT-ZZ_YJJG = '-'. ENDIF. IF GT_OUT-ZZ_YJJG2 IS INITIAL. GT_OUT-ZZ_YJJG2 = '-'. ENDIF. IF GT_OUT-ZZ_YJJG3 IS INITIAL. GT_OUT-ZZ_YJJG3 = '-'. ENDIF. IF GT_OUT-ZZ_YJJG4 IS INITIAL. GT_OUT-ZZ_YJJG4 = '-'. ENDIF. IF GT_OUT-ZZ_YJJG5 IS INITIAL. GT_OUT-ZZ_YJJG5 = '-'. ENDIF. ENDIF. MODIFY GT_OUT INDEX LV_TABIX. ENDLOOP. LOOP AT GT_OUT. IF GT_OUT-ZZ_YJJG2 = '-' OR GT_OUT-STAT2 = '离职'. IF GT_OUT-STAT2 = '离职'. LV_DATUM = GT_OUT-BEGDA2 - 1. ELSE. LV_DATUM = SY-DATUM. ENDIF. CLEAR GT_OBJID[]. GT_OBJID-OBJID = GT_OUT-ORGEH. APPEND GT_OBJID. CLEAR LT_ZZJG[]. CALL FUNCTION 'ZHR_GET_ORGINFO_FAST' EXPORTING KEYDATE = LV_DATUM P_ENDDA = LV_DATUM TABLES I_OBJID = GT_OBJID ZHR_ZZJG = LT_ZZJG. CLEAR LT_ZZJG. READ TABLE LT_ZZJG WITH KEY ORGEH = GT_OUT-ORGEH. IF SY-SUBRC = 0. GT_OUT-ZZ_YJJG = LT_ZZJG-ZE_JG1ST. GT_OUT-ZZ_YJJG2 = LT_ZZJG-ZE_JG2ST. GT_OUT-ZZ_YJJG3 = LT_ZZJG-ZE_JG3ST. GT_OUT-ZZ_YJJG4 = LT_ZZJG-ZE_JG4ST. GT_OUT-ZZ_YJJG5 = LT_ZZJG-ZE_JG5ST. MODIFY GT_OUT. ENDIF. ENDIF. ENDLOOP. ENDFORM. *&---------------------------------------------------------------------* *& Form FRM_INDICATOR *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM FRM_INDICATOR." USING C_MESSAGE TYPE C DATA L_SUM TYPE SY-INDEX. L_SUM = LINES( GT_OUT[] ). DATA: L_PER TYPE C LENGTH 200, L_TEXT TYPE C LENGTH 200, L_TEXT_TMP TYPE C LENGTH 200, L_PER_C TYPE C LENGTH 200. * DO L_SUM TIMES. L_PER = L_PER + 1 . L_PER_C = L_PER / L_SUM * 100. CONCATENATE L_PER_C '% ' '正在读取数据,请稍等...' INTO L_TEXT . CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' EXPORTING PERCENTAGE = L_PER_C TEXT = L_TEXT. WAIT UP TO '0.01' SECONDS. ENDDO. ENDFORM.
包含文件ZHRPA001_EXL
*&---------------------------------------------------------------------* *& 包含 ZHRPA001_EXL *&---------------------------------------------------------------------* *&---------------------------------------------------------------------* *& 包含 ZHRPY045_EXL *&---------------------------------------------------------------------* *&---------------------------------------------------------------------* *& FORM FRM_EXP_PREPARE *&---------------------------------------------------------------------* * EXCEL数据导出前的准备,下载模板 *----------------------------------------------------------------------* * -->PV_OBJID 模板名称 * -->PV_FILENAME 存放路径 *----------------------------------------------------------------------* FORM FRM_EXP_PREPARE USING PV_OBJID CHANGING PV_PATH. DATA:L_INDCATORTXT TYPE STRING. DATA:PV_FIELNAME TYPE FILENAME. DATA:L_TEXT LIKE WWWDATA-TEXT. DATA:filename type string. CALL FUNCTION 'GUI_FILE_SAVE_DIALOG' EXPORTING * WINDOW_TITLE = DEFAULT_EXTENSION = 'xls' DEFAULT_FILE_NAME = '员工花名册' * WITH_ENCODING = * FILE_FILTER = * INITIAL_DIRECTORY = * DEFAULT_ENCODING = IMPORTING FILENAME = filename PATH = PV_PATH * FULLPATH = * USER_ACTION = * FILE_ENCODING = . *filename1 = v_path && filename. * CALL METHOD CL_GUI_FRONTEND_SERVICES=>GET_SAPGUI_WORKDIR * CHANGING * SAPWORKDIR = PV_PATH * EXCEPTIONS * CNTL_ERROR = 1. CLEAR L_TEXT. SELECT SINGLE TEXT INTO L_TEXT FROM WWWDATA WHERE SRTF2 = 0 AND RELID = 'MI' AND OBJID = PV_OBJID. * PERFORM frm_get_filename USING '*.XLS' CHANGING p_filename. * CONCATENATE PV_PATH '\' PV_OBJID L_TEXT '.XLS' INTO P_FILENAME. CONCATENATE PV_PATH filename INTO P_FILENAME. *下载模板 L_INDCATORTXT = '正在下载模板'. PERFORM FRM_PROCESS_INDCATOR USING L_INDCATORTXT 0 . * TRY. PERFORM FRM_DOWNLOAD_EXCEL_FROMSERVER USING PV_OBJID P_FILENAME. * CATCH CX_SY_FILE_OPEN. * MESSAGE E000 WITH '文件已打开'. * ENDTRY. CHECK NOT P_FILENAME IS INITIAL. L_INDCATORTXT = '正在生成Excel文件,请勿使用复制(Ctrl+C)、剪切(Ctrl+X)、粘贴(Ctrl+V)、撤销(Ctrl+Z)功能,否则将导致Excel中数据严重错误'. "'程序正在初始化OLE控件'. PERFORM FRM_PROCESS_INDCATOR USING L_INDCATORTXT 0 . ENDFORM. " FRM_EXP_PREPARE *&---------------------------------------------------------------------* *& Form FRM_PROCESS_DICATOR *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->TEXT text * -->PERCENTAGE text *----------------------------------------------------------------------* FORM FRM_PROCESS_INDCATOR USING TEXT PERCENTAGE. CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' EXPORTING PERCENTAGE = PERCENTAGE TEXT = TEXT. ENDFORM. "FRM_PROCESS_DICATOR *&---------------------------------------------------------------------* *& Form FRM_DOWNLOAD_EXCEL_FROMSERVER *&---------------------------------------------------------------------* * 下载EXCEL模板 *----------------------------------------------------------------------* FORM FRM_DOWNLOAD_EXCEL_FROMSERVER USING P_OBJID LIKE WWWDATATAB-OBJID * P_DEST LIKE SAPB-SAPPFAD. P_DEST TYPE STRING. DATA: L_OBJDATA LIKE WWWDATATAB, L_MIME LIKE W3MIME, L_DESTINATION LIKE RLGRAP-FILENAME, L_OBJNAM TYPE STRING, L_RC LIKE SY-SUBRC, L_ERRTXT TYPE STRING. DATA: L_FILENAME TYPE STRING, L_RESULT, L_SUBRC TYPE SY-SUBRC. CONCATENATE P_OBJID '.XLS' INTO L_OBJNAM. CONDENSE L_OBJNAM NO-GAPS. SELECT SINGLE RELID OBJID FROM WWWDATA INTO CORRESPONDING FIELDS OF L_OBJDATA WHERE SRTF2 = 0 AND RELID = 'MI' AND OBJID = P_OBJID. IF SY-SUBRC NE 0 OR L_OBJDATA-OBJID EQ SPACE. CONCATENATE '模板文件:' L_OBJNAM '不存在,请用TCODE:SMW0上载文件' INTO L_ERRTXT. MESSAGE L_ERRTXT TYPE 'E'. ENDIF. L_FILENAME = P_DEST. CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST EXPORTING FILE = L_FILENAME RECEIVING RESULT = L_RESULT EXCEPTIONS CNTL_ERROR = 1 ERROR_NO_GUI = 2 WRONG_PARAMETER = 3 NOT_SUPPORTED_BY_GUI = 4 OTHERS = 5. IF L_RESULT EQ 'X'. CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_DELETE EXPORTING FILENAME = L_FILENAME CHANGING RC = L_SUBRC 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. IF L_SUBRC <> 0. CONCATENATE '文件' L_OBJNAM '已打开,请关闭该Excel后重试。' INTO L_ERRTXT. MESSAGE L_ERRTXT TYPE 'E' . ENDIF. ENDIF. L_DESTINATION = P_DEST. CALL FUNCTION 'DOWNLOAD_WEB_OBJECT' EXPORTING KEY = L_OBJDATA DESTINATION = L_DESTINATION IMPORTING RC = L_RC. IF L_RC NE 0. CONCATENATE '模板文件:' L_OBJNAM '下载失败' INTO L_ERRTXT. MESSAGE L_ERRTXT TYPE 'E'. ENDIF. ENDFORM. "FRM_DOWNLOAD_EXCEL_FROMSERVER *&---------------------------------------------------------------------* *& Form FRM_borderrange *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_LEFT 划线区域开始列 * -->P_TOP 划线区域开始行 * -->P_RIGHT 划线区域结束列 * -->P_BUTTOM 划线区域结束行 * -->P_STYLE 线条样式 * -->P_WEIGHT 线条粗细 * -->P_COLOR 线条颜色 *----------------------------------------------------------------------* FORM FRM_BORDERRANGE USING P_LEFT P_TOP P_RIGHT P_BUTTOM P_STYLE P_WEIGHT P_COLOR . PERFORM FRM_SELECTRANGE USING P_LEFT P_TOP P_RIGHT P_BUTTOM. * CALL METHOD OF RANGE 'MERGE'. DO 4 TIMES . CALL METHOD OF RANGE 'BORDERS' = BORDERS EXPORTING #1 = SY-INDEX. SET PROPERTY OF BORDERS 'LineStyle' = P_STYLE. * 1:实线 2:虚线 SET PROPERTY OF BORDERS 'WEIGHT' = P_WEIGHT. "4=max * 2 细线 3 加粗 SET PROPERTY OF BORDERS 'ColorIndex' = P_COLOR. * 1,黑色 2,白色 4,绿色 ENDDO. ENDFORM. "FRM_MERGE_CELLS *&---------------------------------------------------------------------* *& FORM FRM_EXPORT_TO_EXCEL *&---------------------------------------------------------------------* * 内表数据输出到EXCEL *----------------------------------------------------------------------* * -->PV_ITAB 需要输出的内表 *----------------------------------------------------------------------* FORM FRM_EXPORT_TO_EXCEL TABLES PV_ITAB. DATA: L_LINE TYPE I, "内表行数 L_COUNT TYPE I, "插入EXCEL行数 L_STAR TYPE I, "内表开始行 L_END TYPE I, "内表结束行 L_P TYPE P DECIMALS 2, "中间运行结果 L_N TYPE I. "循环粘贴次数 DATA L_NUM TYPE I. "取余数 DATA L_PASTE_START TYPE I. "开始粘贴的行 DESCRIBE TABLE PV_ITAB LINES L_LINE. L_P = L_LINE / G_6_ROW. * L_N = CEIL( L_P ). L_N = L_LINE DIV G_6_ROW. L_NUM = L_LINE MOD G_6_ROW. * L_STAR = G_6ROW_BEGIN .L_END =G_6_ROW_BEGIN. IF L_LINE <= G_6_ROW. PERFORM FRM_FILL_RANGE TABLES PV_ITAB USING 1 L_LINE G_6_ROW_BEGIN. ELSE. L_STAR = 1. L_END = G_6_ROW. L_PASTE_START = G_6_ROW_BEGIN. DO L_N TIMES. PERFORM FRM_FILL_RANGE TABLES PV_ITAB USING L_STAR L_END L_PASTE_START. L_STAR = L_END + 1 . L_END = L_STAR + G_6_ROW - 1. L_PASTE_START = L_PASTE_START + G_6_ROW. ENDDO. IF L_NUM NE 0. L_END = L_STAR + L_NUM. * L_PASTE_START = L_STAR + 6. PERFORM FRM_FILL_RANGE TABLES PV_ITAB USING L_STAR L_END L_PASTE_START. ENDIF. ENDIF. ENDFORM. " FRM_EXPORT_TO_EXCEL *&---------------------------------------------------------------------* *& Form FRM_FILL_RANGE *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->PV_STAR 内表开始行 * -->PV_END 内表结束行 * -->PV_PASTE_CELL 粘贴时开始行 *----------------------------------------------------------------------* FORM FRM_FILL_RANGE TABLES PV_ITAB USING PV_STAR PV_END PV_PASTE_CELL . * 将内表数据复制到剪切板 CALL FUNCTION 'Z_HR_ITAB_TO_CLIPBOARD' EXPORTING IT_FIELDCAT = GT_FIELD2 * WITH_HEADER = START_LINE = PV_STAR END_LINE = PV_END * NO_ZERO = 'X' TABLES DATA_TAB = PV_ITAB[] EXCEPTIONS OBJECT_ERROR = 1 GET_WORKDIR_FAILED = 2 FILE_OPENED = 3 FILE_DOWNLOAD_FAILED = 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. PERFORM FRM_CLIPBOARD_TO_EXCEL USING PV_PASTE_CELL. ENDFORM. " FRM_FILL_RANGE *&---------------------------------------------------------------------* *& Form FRM_CLIPBOARD_TO_EXCEL *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_START 粘贴开始的单元格 *----------------------------------------------------------------------* FORM FRM_CLIPBOARD_TO_EXCEL USING P_START. DATA: L_BEGIN TYPE STRING, L_END TYPE STRING, L_STRING TYPE STRING. L_STRING = P_START. CONCATENATE G_6_LEFT L_STRING INTO L_BEGIN . CONCATENATE G_6_RIGHT L_STRING INTO L_END . CONDENSE L_BEGIN NO-GAPS. CONDENSE L_END NO-GAPS. CALL METHOD OF SHEET 'Cells' = CELLS EXPORTING #1 = 3 #2 = 1. CALL METHOD OF SHEET 'RANGE' = CELLS EXPORTING #1 = L_BEGIN #2 = L_END. CALL METHOD OF CELLS 'SELECT'. CALL METHOD OF SHEET 'PASTE'. * CALL METHOD OF WORKBOOK 'SAVE'. ENDFORM. "FRM_CLIPBOARD_TO_EXCEL *&---------------------------------------------------------------------* *& Form FREE_EXCEL *&---------------------------------------------------------------------* * 释放Excel进程 *----------------------------------------------------------------------* FORM FRM_FREE_EXCEL. CLEAR G_6_PAGENO. FREE SHEET. FREE WORKBOOK. FREE APPLICATION. ENDFORM. "FREE_EXCEL*&---------------------------------------------------------------------* *& Form INIT_EXCEL *& 初始化OLE控件并打开模版文件 *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM FRM_INIT_EXCEL USING P_FILENAME P_LOCK. CREATE OBJECT APPLICATION 'EXCEL.APPLICATION'. CALL METHOD OF APPLICATION 'WORKBOOKS' = WORKBOOK. CALL METHOD OF WORKBOOK 'OPEN' EXPORTING #1 = P_FILENAME. GET PROPERTY OF APPLICATION 'ActiveWorkbook' = WORKBOOK. CALL METHOD OF APPLICATION 'WORKSHEETS' = SHEET EXPORTING #1 = 1. CALL METHOD OF SHEET 'ACTIVATE'. IF P_LOCK EQ 'X'. PERFORM FRM_LOCK_SHEET. ENDIF. ENDFORM. "INIT_EXCEL *&---------------------------------------------------------------------* *& Form FRM_LOCK_SHEET *&---------------------------------------------------------------------* * 锁定EXCEL *----------------------------------------------------------------------* FORM FRM_LOCK_SHEET. CALL METHOD OF SHEET 'PROTECT' EXPORTING #1 = 'excel' #2 = 1 #3 = 1 #4 = 1 #5 = 1 #6 = 1 #7 = 1. MCR_MESSAGE. ENDFORM. "FRM_LOCK_UNLOCK_SHEET *&---------------------------------------------------------------------* *& Form FRM_PREVIEW *&---------------------------------------------------------------------* * 预览EXCEL *----------------------------------------------------------------------* * -->P_PREVIEW 是否以打印预览的形式打开EXCEL *----------------------------------------------------------------------* FORM FRM_PREVIEW USING P_PREVIEW. SET PROPERTY OF APPLICATION 'VISIBLE' = 1. IF P_PREVIEW EQ 'X'. CALL METHOD OF SHEET 'PrintPreview'. MCR_MESSAGE. ENDIF. ENDFORM. "FRM_PREVIEW *&---------------------------------------------------------------------* *& Form FRM_SELECTRANGE *& 选择一个excel RANGE *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_LEFT 开始列 * -->P_TOP 开始行 * -->P_RIGHT 结束列 * -->P_BUTTOM 结束行 *----------------------------------------------------------------------* FORM FRM_SELECTRANGE USING P_LEFT TYPE I P_TOP TYPE I P_RIGHT TYPE I P_BUTTOM TYPE I. CALL METHOD OF SHEET 'CELLS' = CELLS EXPORTING #1 = P_TOP #2 = P_LEFT. MCR_MESSAGE. CALL METHOD OF SHEET 'CELLS' = CELLS1 EXPORTING #1 = P_BUTTOM #2 = P_RIGHT. MCR_MESSAGE. CALL METHOD OF SHEET 'RANGE' = RANGE EXPORTING #1 = CELLS #2 = CELLS1. MCR_MESSAGE. CALL METHOD OF RANGE 'SELECT'. MCR_MESSAGE. ENDFORM. "FRM_SELECTRANGE

浙公网安备 33010602011771号