此博客为原创博客,都是个人工作经历所得,转载请注明出处

ZHR_EMP_INQUIRY-人员信息查询

*&---------------------------------------------------------------------*
*& Report  ZHR_EMP_INQUIRY
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZHR_EMP_INQUIRY.

INCLUDE OLE2INCL.
INCLUDE <CTLDEF> .
INCLUDE OFFICEINTEGRATIONINCLUDE .

*-----------------------------------声明类型池----------
TYPE-POOLS: SLIS.
*----------------------------数据显示内容------------------
"声明结构



*--------------ALV显示变量----------------------------*
DATA:gs_layout     TYPE slis_layout_alv,
     gt_fieldcat   TYPE slis_t_fieldcat_alv WITH HEADER LINE,
     g_repid       LIKE sy-repid,
     fieldcatalog  LIKE gt_fieldcat.
DATA:col_pos TYPE i.
DATA: gref_alv TYPE REF TO  cl_gui_alv_grid.


  DATA: BEGIN OF ITAB ,
    PERNR  TYPE PERSNO ,
    ENAME  TYPE EMNAM,
    DEPT   TYPE STEXT,
    POSITION TYPE STEXT,
    IN_DATE TYPE DATS,
    PROVINCE_WORK TYPE ZKHSFT,
    CITY_WORK TYPE ZKHCST,
    DIRECT_SUPERIOR TYPE EMNAM,
    GENDER(2) TYPE C,
    BLOOD_TYPE TYPE WTFLD ,
    NATION TYPE TEXT50,
    GBDAT TYPE DATS,
    PROVINCE_JG TYPE ZTEXT,
    CITY_JG TYPE ZTEXT1,
    MARITAL_STATUS TYPE FATXT,
    FERTILITY(4) TYPE C,
    CHILD_NUM TYPE ANZKD,
    QUALIFICATION TYPE SLTXT,
    ID_PHOTO TYPE SAEURI,
    LIFE_PHOTO TYPE SAEURI,
    HOUSE_TYPE(10) TYPE C,
    HOUSE_LOAN(2) TYPE C,
    LOAN_AMOUNT(13) TYPE C,
    IS_MOVE(2) TYPE C,
    MOVE_DATE TYPE DATS,
    REMARK(100) TYPE C,
    PHONE TYPE ZSYSID,
    WECHAT TYPE ZSYSID,
    OEMAIL TYPE ZSYSID,
    PEMAIL TYPE ZSYSID,
    END OF ITAB .

    DATA:itab_2 LIKE ITAB OCCURS 0 WITH HEADER LINE.




    DATA: BEGIN OF LT_PA0000 OCCURS 0 ,
    PERNR TYPE P0001-PERNR ,
  END OF LT_PA0000 .

  DATA: BEGIN OF LT_ITAB OCCURS 0,
      PERNR LIKE P0001-PERNR,
    END OF LT_ITAB.

  DATA: BEGIN OF LT_PIC OCCURS 0,
      OBJECT_ID TYPE SAEOBJID,
    END OF LT_PIC.

  TYPES:BEGIN OF TYP_TAB.
          INCLUDE STRUCTURE P9090.
  TYPES:STEXT LIKE HRP1000-STEXT.
  TYPES:END OF TYP_TAB.

  TYPES:BEGIN OF TYP_TAB2.
          INCLUDE STRUCTURE  SWHACTOR.
  TYPES: B1 LIKE HRP9090-OBJID,
       STEXT1 LIKE  HRP1000-STEXT.
  TYPES:END OF TYP_TAB2.

  DATA: LT_P9090 TYPE TABLE OF TYP_TAB WITH HEADER LINE.
  DATA: LT_ORGEH TYPE TABLE OF TYP_TAB2 WITH HEADER LINE.
  DATA: LT_ORGEH_B1 LIKE TABLE OF  SWHACTOR WITH HEADER LINE.

*  DATA: LS_EMP_INFO TYPE ZHR_EMP_INFO_04 .

  TYPES:BEGIN OF ITAB2.
          INCLUDE STRUCTURE  ZHR_EMP_INFO_04.
  TYPES: ID1 TYPE SAEURI,
         ID2 TYPE SAEURI,
         ID3 TYPE SAEURI,
         LIFE1 TYPE SAEURI,
         LIFE2 TYPE SAEURI,
         LIFE3 TYPE SAEURI.
  TYPES:END OF ITAB2.

  DATA: LS_EMP_INFO TYPE ITAB2 .
  DATA: L_ID TYPE SAEURI .
  DATA: LEN_ID TYPE I .

  DATA: ET_EMP_INFO TYPE TABLE OF ITAB2 .
  DATA: LS_EMP_LEAVE TYPE ZHR_EMP_INFO .







SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE text-001.

parameter  IV_DATE  type SY-DATUM  obligatory ."日期


SELECTION-SCREEN END OF BLOCK B1.

    START-OF-SELECTION.

  perform frm_get_data.
  perform frm_dis_data.


END-OF-SELECTION.
*&---------------------------------------------------------------------*
*&      Form  FRM_GET_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_GET_DATA .




  "部门
  SELECT HRP9090~OBJID HRP9090~ZZ_BZ HRP1000~STEXT
  INTO CORRESPONDING FIELDS OF TABLE LT_P9090
  FROM HRP9090
  JOIN HRP1000 ON HRP1000~OBJID = HRP9090~OBJID
  WHERE HRP9090~BEGDA <= IV_DATE
  AND HRP9090~ENDDA >= IV_DATE AND HRP1000~BEGDA <= IV_DATE
  AND HRP1000~ENDDA >= IV_DATE AND HRP1000~OTYPE = 'O' AND HRP9090~ZZ_BZ = 'D1'.

  LOOP AT LT_P9090.
    CALL FUNCTION 'RH_STRUC_GET'
      EXPORTING
        ACT_OTYPE      = 'O'
        ACT_OBJID      = LT_P9090-OBJID
        ACT_WEGID      = 'ORGEH'
        ACT_BEGDA      = IV_DATE
        ACT_ENDDA      = IV_DATE
      TABLES
        RESULT_TAB     = LT_ORGEH_B1
      EXCEPTIONS
        NO_ENTRY_FOUND = 1.
    CHECK SY-SUBRC = 0.
    APPEND LT_ORGEH_B1.
    SORT LT_ORGEH_B1 BY OBJID.
    DELETE ADJACENT DUPLICATES FROM LT_ORGEH_B1.
    LOOP AT LT_ORGEH_B1.
      MOVE-CORRESPONDING LT_ORGEH_B1 TO LT_ORGEH.
      LT_ORGEH-B1 = LT_P9090-OBJID.
      LT_ORGEH-STEXT1 = LT_P9090-STEXT.
      APPEND LT_ORGEH.
    ENDLOOP.

    LT_ORGEH-B1 = LT_P9090-OBJID.
    LT_ORGEH-OBJID = LT_P9090-OBJID.
    LT_ORGEH-STEXT1 = LT_P9090-STEXT.
    APPEND LT_ORGEH.

  ENDLOOP.
  SORT LT_ORGEH BY OBJID.


  SELECT PA0000~PERNR INTO CORRESPONDING FIELDS OF TABLE LT_ITAB FROM PA0000
    WHERE BEGDA <= IV_DATE AND ENDDA >= IV_DATE AND STAT2 = '3'  .

*  SELECT PA0000~PERNR INTO CORRESPONDING FIELDS OF TABLE LT_ITAB FROM PA0000 WHERE AEDTM = IV_DATE .
*
*  SELECT PA0001~PERNR APPENDING CORRESPONDING FIELDS OF TABLE LT_ITAB FROM PA0001 WHERE AEDTM = IV_DATE .
*
*  SELECT PA0041~PERNR APPENDING CORRESPONDING FIELDS OF TABLE LT_ITAB FROM PA0041 WHERE AEDTM = IV_DATE .
*
*  SELECT PA0002~PERNR APPENDING CORRESPONDING FIELDS OF TABLE LT_ITAB FROM PA0002 WHERE AEDTM = IV_DATE .
*
*  SELECT PA0028~PERNR APPENDING CORRESPONDING FIELDS OF TABLE LT_ITAB FROM PA0028 WHERE AEDTM = IV_DATE .
*
*  SELECT PA0185~PERNR APPENDING CORRESPONDING FIELDS OF TABLE LT_ITAB FROM PA0185 WHERE AEDTM = IV_DATE .
*
*  SELECT PA0529~PERNR APPENDING CORRESPONDING FIELDS OF TABLE LT_ITAB FROM PA0529 WHERE AEDTM = IV_DATE .
*
*  SELECT PA0105~PERNR APPENDING CORRESPONDING FIELDS OF TABLE LT_ITAB FROM PA0105
*    WHERE PA0105~USRTY IN ('0050','CELL','MAIL','0055') AND AEDTM = IV_DATE .
*
*  SELECT PA0022~PERNR APPENDING CORRESPONDING FIELDS OF TABLE LT_ITAB FROM PA0022 WHERE AEDTM = IV_DATE .
*
*  SELECT PA9050~PERNR APPENDING CORRESPONDING FIELDS OF TABLE LT_ITAB FROM PA9050 WHERE AEDTM = IV_DATE .

  "图片更新检查:
  SELECT TOAHR~OBJECT_ID INTO CORRESPONDING FIELDS OF TABLE LT_PIC FROM TOAHR WHERE AR_DATE = IV_DATE .
  LOOP AT LT_PIC .
    LT_ITAB-PERNR = LT_PIC-OBJECT_ID+0(8).
    APPEND LT_ITAB .
  ENDLOOP .

  SORT LT_ITAB BY PERNR .
  DELETE ADJACENT DUPLICATES FROM LT_ITAB .

  LOOP AT LT_ITAB .

    LS_EMP_INFO-PERNR = LT_ITAB-PERNR .

    CALL FUNCTION 'ZHR_EMP_INFO_03'
      EXPORTING
        PERNR           = LT_ITAB-PERNR
      IMPORTING
        ENAME           = LS_EMP_INFO-ENAME
        POSITION        = LS_EMP_INFO-POSITION
        IN_DATE         = LS_EMP_INFO-IN_DATE
        PROVINCE_WORK   = LS_EMP_INFO-PROVINCE_WORK
        CITY_WORK       = LS_EMP_INFO-CITY_WORK
        DIRECT_SUPERIOR = LS_EMP_INFO-DIRECT_SUPERIOR
        GENDER          = LS_EMP_INFO-GENDER
        BLOOD_TYPE      = LS_EMP_INFO-BLOOD_TYPE
        NATION          = LS_EMP_INFO-NATION
        GBDAT           = LS_EMP_INFO-GBDAT
        PROVINCE_JG     = LS_EMP_INFO-PROVINCE_JG
        CITY_JG         = LS_EMP_INFO-CITY_JG
        MARITAL_STATUS  = LS_EMP_INFO-MARITAL_STATUS
        FERTILITY       = LS_EMP_INFO-FERTILITY
        CHILD_NUM       = LS_EMP_INFO-CHILD_NUM
        QUALIFICATION   = LS_EMP_INFO-QUALIFICATION
        ID_PHOTO        = LS_EMP_INFO-ID_PHOTO
        LIFE_PHOTO      = LS_EMP_INFO-LIFE_PHOTO
        HOUSE_TYPE      = LS_EMP_INFO-HOUSE_TYPE
        HOUSE_LOAN      = LS_EMP_INFO-HOUSE_LOAN
        LOAN_AMOUNT     = LS_EMP_INFO-LOAN_AMOUNT
        IS_MOVE         = LS_EMP_INFO-IS_MOVE
        MOVE_DATE       = LS_EMP_INFO-MOVE_DATE
        REMARK          = LS_EMP_INFO-REMARK
        WECHAT          = LS_EMP_INFO-WECHAT
        OEMAIL          = LS_EMP_INFO-OEMAIL
        PEMAIL          = LS_EMP_INFO-PEMAIL
        PHONE           = LS_EMP_INFO-PHONE
        ORGEH           = LS_EMP_INFO-DEPT    .

    READ TABLE LT_ORGEH WITH KEY OBJID = LS_EMP_INFO-DEPT BINARY SEARCH .
    IF SY-SUBRC = 0 .
      LS_EMP_INFO-DEPT = LT_ORGEH-STEXT1.
    ELSE.
      CLEAR LS_EMP_INFO-DEPT .
    ENDIF.

*    L_ID = LS_EMP_INFO-ID_PHOTO .
*    LEN_ID = STRLEN( L_ID ) .

    IF LS_EMP_INFO-PEMAIL IS NOT INITIAL .
      CONCATENATE '''' LS_EMP_INFO-PEMAIL INTO LS_EMP_INFO-PEMAIL .
    ENDIF.


    LS_EMP_INFO-ID1 = LS_EMP_INFO-ID_PHOTO+0(250) .
    LS_EMP_INFO-ID2 = LS_EMP_INFO-ID_PHOTO+250(250) .
    LS_EMP_INFO-ID3 = LS_EMP_INFO-ID_PHOTO+500(250) .

    LS_EMP_INFO-LIFE1 = LS_EMP_INFO-LIFE_PHOTO+0(250) .
    LS_EMP_INFO-LIFE2 = LS_EMP_INFO-LIFE_PHOTO+250(250) .
    LS_EMP_INFO-LIFE3 = LS_EMP_INFO-LIFE_PHOTO+500(250) .


    APPEND LS_EMP_INFO TO ET_EMP_INFO[] .
    CLEAR: LS_EMP_INFO .

  ENDLOOP .


ENDFORM.                    " FRM_GET_DATA



FORM frm_dis_data .
*--------------------------组织ALV字段----------------------------------*
  PERFORM frm_build_field.
  gs_layout-info_fieldname    = 'LINE_COL'.
  gs_layout-zebra    = 'X'.
  gs_layout-header_text = 'alv test'.
  gs_layout-info_fieldname = 'COLR'.
  g_repid = sy-repid.

************************去零******************
*  LOOP AT itab_2.
**    DEFINE alpha_minus.
*    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
*      EXPORTING
*        input  = itab_2-matnr
*      IMPORTING
*        output = itab_2-matnr.
**    END-OF-DEFINITION.
*    MODIFY itab_2. "CLEAR ITAB_COL.
*  ENDLOOP.
*
********************************************


  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program          = g_repid
      is_layout                   = gs_layout
      it_fieldcat                 = gt_fieldcat[]
      i_save                      = 'A'
      i_callback_user_command     = 'FRM_UCOMM'         "实现d/双击事件
      i_callback_html_top_of_page = 'HTML_TOP_OF_PAGE'
*      i_callback_pf_status_set    = 'FRM_SET_STATUS'
      i_html_height_top           = 7    "控制表头栏目的初始高度
    TABLES
*      t_outtab                    = itab_2
      t_outtab                    = ET_EMP_INFO
    EXCEPTIONS
      program_error               = 1
      OTHERS                      = 2.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

ENDFORM.                    " frm_dis_data



*&---------------------------------------------------------------------*
*&      Form  frm_build_field
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_build_field .

  PERFORM e01_fieldcat_init USING :
      'PERNR'  '人员编号'     14   ''  ''  'X'  ''  '' ' '   ''   '' '' '',
      'ENAME'  '姓名'     14   ''  ''  'X'  ''  '' ' '   ''   '' '' '',
      'DEPT'  '部门'     9   ''  ''  'X'  ''  '' ' '   ''   '' '' '',
      'POSITION'  '职位'         14    ''  ''  'X'  ''  '' ' '   ''   '' '' '',
      'IN_DATE'  '入职日期'           14    ''  ''  'X'   ''  '' ' '   ''   '' '' '',
      'PROVINCE_WORK'  '工作省份'           14    ''  ''  'X'   ''  '' ' '   ''   '' '' '',
      'DIRECT_SUPERIOR'  '直接上级'             14    ''  ''  'X'   ''  '' ' '   ''   '' '' '',
      'GENDER'  '性别'           24   ''  ''  'X'   ''  '' ' '   ''   '' '' '',
      'BLOOD_TYPE'  '血型'       27    ''  ''  'X'  ''  '' ' '   ''   '' '' '',
      'NATION'  '民族'         14    ''  ''  'X'  ''  '' ' '   ''   '' '' '',
      'GBDAT'  '出生日期'             14    ''  ''  'X'   ''  '' ' '   ''   '' '' '',
      'PROVINCE_JG'  '籍贯省份'         14    ''  ''  'X'  ''  '' ' '   ''   '' '' '',
      'CITY_JG'  '籍贯城市'         14    ''  ''  'X'  ''  '' ' '   ''   '' '' '',
      'MARITAL_STATUS'  '婚姻状态'         14    ''  ''  'X'  ''  '' ' '   ''   '' '' '',
      'FERTILITY'  '生育情况'         14    ''  ''  'X'  ''  '' ' '   ''   '' '' '',
      'CHILD_NUM'  '子女数目'         14    ''  ''  'X'  ''  '' ' '   ''   '' '' '',
      'QUALIFICATION'  '学历'         14    ''  ''  'X'  ''  '' ' '   ''   '' '' '',
      'ID_PHOTO'  '证件照'         14    ''  ''  'X'  ''  '' ' '   ''   '' '' '',
      'ID1'  '证件照1'         14    ''  ''  'X'  ''  '' ' '   ''   '' '' '',
      'ID2'  '证件照2'         14    ''  ''  'X'  ''  '' ' '   ''   '' '' '',
      'ID3'  '证件照3'         14    ''  ''  'X'  ''  '' ' '   ''   '' '' '',
      'LIFE_PHOTO'  '生活照'         14    ''  ''  'X'  ''  '' ' '   ''   '' '' '',
      'LIFE_PHOTO1'  '生活照1'         14    ''  ''  'X'  ''  '' ' '   ''   '' '' '',
      'LIFE_PHOTO2'  '生活照2'         14    ''  ''  'X'  ''  '' ' '   ''   '' '' '',
      'LIFE_PHOTO3'  '生活照3'         14    ''  ''  'X'  ''  '' ' '   ''   '' '' '',
      'HOUSE_TYPE'  '房屋类型'         14    ''  ''  'X'  ''  '' ' '   ''   '' '' '',
      'HOUSE_LOAN'  '是否有房贷'         14    ''  ''  'X'  ''  '' ' '   ''   '' '' '',
      'LOAN_AMOUNT'  '房贷金额'         14    ''  ''  'X'  ''  '' ' '   ''   '' '' '',
      'IS_MOVE'  '是否计划搬迁'         14    ''  ''  'X'  ''  '' ' '   ''   '' '' '',
      'MOVE_DATE'  '搬迁日期'         14    ''  ''  'X'  ''  '' ' '   ''   '' '' '',
      'REMARK'  '备注'         14    ''  ''  'X'  ''  '' ' '   ''   '' '' '',
      'PHONE'  '手机号码'         14    ''  ''  'X'  ''  '' ' '   ''   '' '' '',
      'WECHAT'  '微信号'         14    ''  ''  'X'  ''  '' ' '   ''   '' '' '',
      'OEMAIL'  '公司邮箱'         14    ''  ''  'X'  ''  '' ' '   ''   '' '' '',
      'PEMAIL'  '个人邮箱'         14    ''  ''  'X'  ''  '' ' '   ''   '' '' ''.


ENDFORM.                    " frm_build_field


*&---------------------------------------------------------------------*
*&      Form  e01_fieldcat_init
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM e01_fieldcat_init USING
field_name      TYPE c
field_text      TYPE c
field_lenth     TYPE i
field_edit      TYPE c
field_type      TYPE c
field_key       TYPE c
field_hotspot   TYPE c
field_checkbox  TYPE c
field_no_zero   TYPE c
field_ref_tabname TYPE c
field_emphasize TYPE c
field_input TYPE c
field_sum   TYPE c .

  col_pos = col_pos + 1.
  fieldcatalog-col_pos = col_pos.
  fieldcatalog-fieldname = field_name.
  fieldcatalog-seltext_l = field_text.
  fieldcatalog-seltext_m = field_text.
  fieldcatalog-seltext_s = field_text.
  fieldcatalog-checkbox  = field_checkbox.
  fieldcatalog-input = field_input.
  fieldcatalog-edit = field_edit.
  IF field_type = 'Q'.
    fieldcatalog-just = 'R'.
  ELSE.
    fieldcatalog-just = 'L'.
  ENDIF.
  fieldcatalog-key  = field_key.
  fieldcatalog-hotspot = field_hotspot .
  fieldcatalog-outputlen = field_lenth.
  fieldcatalog-no_zero = field_no_zero.
  fieldcatalog-emphasize = field_emphasize .
  fieldcatalog-ref_tabname = field_ref_tabname.
  fieldcatalog-do_sum  = field_sum.

  APPEND fieldcatalog TO gt_fieldcat.
ENDFORM.                    " e01_fieldcat_init


*&---------------------------------------------------------------------*
*&      Form  FRM_UCOMM
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->F_UCOMM    text
*      -->F_SELFIELD text
*----------------------------------------------------------------------*
FORM frm_ucomm USING f_ucomm    LIKE sy-ucomm
                     f_selfield TYPE slis_selfield.

*  READ TABLE ITAB  INDEX F_SELFIELD-TABINDEX.
  IF f_ucomm = '&IC1'.
    IF f_selfield-fieldname = 'MATNR'.
      SET PARAMETER ID 'MAT' FIELD f_selfield-value .
      SET PARAMETER ID 'MM5' FIELD ' '.
      SET PARAMETER ID 'MXX' FIELD 'K'.
      CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
    ENDIF.
  ENDIF.
  CALL METHOD gref_alv->check_changed_data.
  f_selfield-refresh = 'X'.
ENDFORM.                    "FRM_UCOMM

*&---------------------------------------------------------------------*
*&      Form  html_TOP_of_page
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->DOCUMENT   text
*----------------------------------------------------------------------*
FORM html_top_of_page USING document TYPE REF TO cl_dd_document.
  DATA: text TYPE sdydo_text_element.

  IF gref_alv IS INITIAL.
    CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
      IMPORTING
        e_grid = gref_alv.
  ENDIF.
  text = '人员信息: '.
  CALL METHOD document->add_icon
    EXPORTING
      sap_icon = 'ICON_SUM'.
  CALL METHOD document->add_text
    EXPORTING
      text         = text
      sap_emphasis = 'Strong'.
  CALL METHOD document->add_gap
    EXPORTING
      width = 2.

*  CALL METHOD document->add_text
*    EXPORTING
*      text          = text
*      sap_color     = cl_dd_document=>list_total_int
*      sap_fontsize  = cl_dd_document=>large
*      sap_fontstyle = cl_dd_document=>serif
*      sap_emphasis  = cl_dd_document=>emphasis.  "加粗还是斜体 STRONG是加粗

  CALL METHOD document->new_line.
  CALL METHOD document->new_line.


ENDFORM.                    "html_TOP_of_page

 

posted @ 2023-07-08 08:44  Rainystuday  阅读(38)  评论(0编辑  收藏  举报