首页 > 其他 > 详细

HR人员花名册报表

时间:2021-02-23 11:20:56      阅读:51      评论:0      收藏:0      [点我收藏+]

创建程序时要设置逻辑数据库

以下例子为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.
View Code

包含文件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.
View Code

包含文件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.
View Code

包含文件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.
View Code

包含文件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.
View Code

包含文件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
View Code

 

 

 

 

HR人员花名册报表

原文:https://www.cnblogs.com/Fantasy386373453/p/14434113.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!