Yk Hcm Personnel Profile

download Yk Hcm Personnel Profile

If you can't read please download the document

description

SAP HR ABAP-Personal profile generator

Transcript of Yk Hcm Personnel Profile

*&---------------------------------------------------------------------**& Report YK_HCM_PERSONNEL_PROFILE*&*&---------------------------------------------------------------------**&*&*&---------------------------------------------------------------------*REPORT YK_HCM_PERSONNEL_PROFILE.*&---------------------------------------------------------------------**& Infotypes*&---------------------------------------------------------------------*INFOTYPES: 0001, 0002, 0021, 0022, 0023, 0041, 0185, 0529, 0534.TYPES: BEGIN OF TS_PINFO, PERNR TYPE PA0002-PERNR, NAME TYPE ZHR_NAME, "Name GESCH TYPE PA0002-GESCH, "Gender GBDAT TYPE PA0002-GBDAT, "Date of Birth GBORT TYPE PA0002-GBORT, "Birthplace PTEXT TYPE T7CN5R-PTEXT, "Political status LTEXT TYPE T505S-LTEXT, "Ethnic group WORK TYPE ZHR_WORK, "work time CONGYE TYPE ZHR_CONGYE, "congye STEXT TYPE T519T-STEXT, "Certificate MAJOR TYPE ZHR_MAJOR, "school & major IDCARD TYPE PA0185-ICNUM, "ID Card PASSPORT TYPE PA0185-ICNUM,"Passport STLTX TYPE T513S-STLTX, "Job ORGTX TYPE T527X-ORGTX, "Organizational Unit LEADER TYPE ZHR_LEADER, "leader END OF TS_PINFO.TYPES: BEGIN OF TS_FAMILY, SUBTY TYPE PA0021-SUBTY, "Subtype GUANXI TYPE T591S-STEXT, "Relation FANAM TYPE PA0021-FANAM, "Last Name FAVOR TYPE PA0021-FAVOR, "First Name NAME TYPE ZHR_NAME, "Name FGBDT TYPE PA0021-FGBDT, "Date of Birth AGE TYPE ZHR_AGE, "Age FANAT TYPE PA0021-FANAT, "Nationality NATION TYPE NATIO50, "Nationality FGBOT TYPE PA0021-FGBOT, "job END OF TS_FAMILY.TYPES: BEGIN OF TS_CV, ARBGB TYPE PA0023-ARBGB, "employer BEGDA TYPE PA0023-BEGDA, "begin date ENDDA TYPE PA0023-ENDDA, "end date TAETE TYPE PA0023-TAETE, "job LTEXT TYPE T513C-LTEXT, "job text END OF TS_CV.DATA: GS_PINFO TYPE TS_PINFO.DATA: GT_FAMILY TYPE TABLE OF TS_FAMILY.DATA: GS_FAMILY LIKE LINE OF GT_FAMILY.DATA: GT_CV TYPE TABLE OF TS_CV.DATA: GS_CV LIKE LINE OF GT_CV.CONSTANTS: G_TIME TYPE T VALUE '000000'.*&---------------------------------------------------------------------**& Selection screen*&---------------------------------------------------------------------*SELECTION-SCREEN BEGIN OF BLOCK BK1 WITH FRAME.*PersonnelPARAMETER: P_PERNR TYPE PA0001-PERNR OBLIGATORY.SELECTION-SCREEN END OF BLOCK BK1.*----------------------------------------------------------------------** START-OF-SELECTION*----------------------------------------------------------------------*START-OF-SELECTION. PERFORM GET_INFO. PERFORM PRINT_OUT.*&---------------------------------------------------------------------**& Form GET_INFO*&---------------------------------------------------------------------** Get personnel info.*----------------------------------------------------------------------*FORM GET_INFO . perform get_pa0002. perform get_pa0534. perform get_pa0529. perform get_pa0041. perform get_pa0022. perform get_pa0185. perform get_pa0001. perform get_leader. perform get_pa0023. perform get_pa0021.ENDFORM. " GET_INFO*&---------------------------------------------------------------------**& Form GET_PA0002*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM GET_PA0002 . DATA: L_NACHN TYPE PA0002-NACHN, L_VORNA TYPE PA0002-VORNA. SELECT single PERNR "personnel no. NACHN "Last Name VORNA "First Name GBORT "Birthplace GBDAT "Date of Birth GESCH "Gender Key INTO (GS_PINFO-PERNR, L_NACHN, L_VORNA, GS_PINFO-GBORT, GS_PINFO-GBDAT, GS_PINFO-GESCH) FROM PA0002 WHERE PERNR = P_PERNR AND BEGDA = SY-DATUM. CONCATENATE L_NACHN L_VORNA INTO GS_PINFO-NAME SEPARATED BY SPACE.ENDFORM. " GET_PA0001*&---------------------------------------------------------------------**& Form GET_PA0534*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM GET_PA0534 . DATA: L_PCODE TYPE PA0534-PCODE. SELECT SINGLE PCODE "Political status INTO L_PCODE FROM PA0534 WHERE PERNR = P_PERNR AND BEGDA = SY-DATUM. SELECT SINGLE PTEXT INTO GS_PINFO-PTEXT FROM T7CN5R WHERE PCODE = L_PCODE AND LANGU = SY-LANGU.ENDFORM. " GET_PA0534*&---------------------------------------------------------------------**& Form GET_PA0529*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM GET_PA0529 . DATA: L_RACKY TYPE PA0529-RACKY. SELECT SINGLE RACKY "Ethnic group INTO L_RACKY FROM PA0529 WHERE PERNR = P_PERNR AND BEGDA = SY-DATUM. SELECT SINGLE LTEXT INTO GS_PINFO-LTEXT FROM T505S WHERE RACKY = L_RACKY AND MOLGA = '28' AND SPRSL = SY-LANGU.ENDFORM. " GET_PA0529*&---------------------------------------------------------------------**& Form GET_PA0041*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM GET_PA0041 . DATA: LS_PA0041 TYPE PA0041. DATA: L_TIME_WORK TYPE DATUM. DATA: L_TIME_CONGYE TYPE DATUM. DATA: L_TIME_1 TYPE TVRO-FAHZTD. DATA: L_TIME_2 TYPE TVRO-FAHZTD. SELECT SINGLE * INTO LS_PA0041 FROM PA0041 WHERE PERNR = P_PERNR. IF LS_PA0041-DAR01 = 'D2'. L_TIME_WORK = LS_PA0041-DAT01. ELSEIF LS_PA0041-DAR01 = 'D4'. L_TIME_CONGYE = LS_PA0041-DAT01. ENDIF. IF LS_PA0041-DAR02 = 'D2'. L_TIME_WORK = LS_PA0041-DAT02. ELSEIF LS_PA0041-DAR02 = 'D4'. L_TIME_CONGYE = LS_PA0041-DAT02. ENDIF. IF LS_PA0041-DAR03 = 'D2'. L_TIME_WORK = LS_PA0041-DAT03. ELSEIF LS_PA0041-DAR03 = 'D4'. L_TIME_CONGYE = LS_PA0041-DAT03. ENDIF. IF LS_PA0041-DAR04 = 'D2'. L_TIME_WORK = LS_PA0041-DAT04. ELSEIF LS_PA0041-DAR04 = 'D4'. L_TIME_CONGYE = LS_PA0041-DAT04. ENDIF. IF LS_PA0041-DAR05 = 'D2'. L_TIME_WORK = LS_PA0041-DAT05. ELSEIF LS_PA0041-DAR05 = 'D4'. L_TIME_CONGYE = LS_PA0041-DAT05. ENDIF. IF LS_PA0041-DAR06 = 'D2'. L_TIME_WORK = LS_PA0041-DAT06. ELSEIF LS_PA0041-DAR06 = 'D4'. L_TIME_CONGYE = LS_PA0041-DAT06. ENDIF. IF LS_PA0041-DAR07 = 'D2'. L_TIME_WORK = LS_PA0041-DAT07. ELSEIF LS_PA0041-DAR07 = 'D4'. L_TIME_CONGYE = LS_PA0041-DAT07. ENDIF. IF LS_PA0041-DAR08 = 'D2'. L_TIME_WORK = LS_PA0041-DAT08. ELSEIF LS_PA0041-DAR08 = 'D4'. L_TIME_CONGYE = LS_PA0041-DAT08. ENDIF. IF LS_PA0041-DAR09 = 'D2'. L_TIME_WORK = LS_PA0041-DAT09. ELSEIF LS_PA0041-DAR09 = 'D4'. L_TIME_CONGYE = LS_PA0041-DAT09. ENDIF. IF LS_PA0041-DAR10 = 'D2'. L_TIME_WORK = LS_PA0041-DAT10. ELSEIF LS_PA0041-DAR10 = 'D4'. L_TIME_CONGYE = LS_PA0041-DAT10. ENDIF. IF LS_PA0041-DAR11 = 'D2'. L_TIME_WORK = LS_PA0041-DAT11. ELSEIF LS_PA0041-DAR11 = 'D4'. L_TIME_CONGYE = LS_PA0041-DAT11. ENDIF. IF LS_PA0041-DAR12 = 'D2'. L_TIME_WORK = LS_PA0041-DAT12. ELSEIF LS_PA0041-DAR12 = 'D4'. L_TIME_CONGYE = LS_PA0041-DAT12. ENDIF. CALL FUNCTION 'SD_CALC_DURATION_FROM_DATETIME' EXPORTING I_DATE1 = SY-DATUM I_TIME1 = G_TIME I_DATE2 = L_TIME_WORK I_TIME2 = G_TIME IMPORTING E_TDIFF = L_TIME_1* E_DATE2_EARLY = EXCEPTIONS INVALID_DATETIME = 1 OTHERS = 2 . IF SY-SUBRC 0.*Implement suitable error handling here ENDIF. GS_PINFO-WORK = L_TIME_1 / ( 24 * 365 * 10000 ). CALL FUNCTION 'SD_CALC_DURATION_FROM_DATETIME' EXPORTING I_DATE1 = SY-DATUM I_TIME1 = G_TIME I_DATE2 = L_TIME_CONGYE I_TIME2 = G_TIME IMPORTING E_TDIFF = L_TIME_2* E_DATE2_EARLY = EXCEPTIONS INVALID_DATETIME = 1 OTHERS = 2 . IF SY-SUBRC 0.*Implement suitable error handling here ENDIF. GS_PINFO-CONGYE = L_TIME_2 / ( 24 * 365 * 10000 ).ENDFORM. " GET_PA0041*&---------------------------------------------------------------------**& Form GET_PA0022*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM GET_PA0022 . DATA: L_SLABS TYPE PA0022-SLABS, L_AUSBI TYPE PA0022-AUSBI, L_INSTI TYPE PA0022-INSTI, L_ATEXT TYPE T518B-ATEXT. SELECT SINGLE SLABS "Certificate AUSBI "major INSTI "school INTO (L_SLABS, L_AUSBI, L_INSTI) FROM PA0022 WHERE PERNR = P_PERNR. SELECT SINGLE STEXT INTO GS_PINFO-STEXT FROM T519T WHERE SLABS = L_SLABS AND SPRSL = SY-LANGU. SELECT SINGLE ATEXT INTO L_ATEXT FROM T518B WHERE AUSBI = L_AUSBI AND LANGU = SY-LANGU. CONCATENATE L_INSTI L_ATEXT INTO GS_PINFO-MAJOR SEPARATED BY SPACE.ENDFORM. " GET_PA0022*&---------------------------------------------------------------------**& Form GET_PA0185*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM GET_PA0185 . SELECT SINGLE ICNUM "ID Crad INTO GS_PINFO-IDCARD FROM PA0185 WHERE PERNR = P_PERNR AND SUBTY = '01' AND BEGDA = SY-DATUM. SELECT SINGLE ICNUM "passport INTO GS_PINFO-PASSPORT FROM PA0185 WHERE PERNR = P_PERNR AND SUBTY = '02' AND BEGDA = SY-DATUM.ENDFORM. " GET_PA0185*&---------------------------------------------------------------------**& Form GET_PA0001*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM GET_PA0001 . DATA: L_STELL TYPE PA0001-STELL, L_ORGEH TYPE PA0001-ORGEH. SELECT SINGLE STELL "Job ORGEH "Organizational Unit INTO (L_STELL, L_ORGEH) FROM PA0001 WHERE PERNR = P_PERNR AND BEGDA = SY-DATUM. SELECT SINGLE STLTX INTO GS_PINFO-STLTX FROM T513S WHERE STELL = L_STELL AND SPRSL = SY-LANGU. SELECT SINGLE ORGTX INTO GS_PINFO-ORGTX FROM T527X WHERE ORGEH = L_ORGEH AND SPRSL = SY-LANGU.ENDFORM. " GET_PA0001*&---------------------------------------------------------------------**& Form GET_LEADER*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM GET_LEADER . DATA: LT_LEADER TYPE TSWHACTOR, LS_LEADER LIKE LINE OF LT_LEADER, L_OBJID TYPE HRSOBID-SOBID, L_NACHN TYPE PA0002-NACHN, L_VORNA TYPE PA0002-VORNA. L_OBJID = P_PERNR. CALL FUNCTION 'HR_ASR_GET_LEADER' EXPORTING OTYPE = 'P' OBJID = L_OBJID* KEYDATE = SY-DATUM LEVEL = '01' IMPORTING LEADER_TAB = LT_LEADER EXCEPTIONS WRONG_INPUT = 1 NOTHING_FOUND = 2 NO_ACTIVE_PLVAR = 3 OTHERS = 4 . IF SY-SUBRC 0.* Implement suitable error handling here ENDIF. LOOP AT LT_LEADER INTO LS_LEADER. SELECT SINGLE NACHN "Last Name VORNA "First Name INTO (L_NACHN, L_VORNA) FROM PA0002 WHERE PERNR = LS_LEADER-OBJID AND BEGDA = SY-DATUM. CONCATENATE LS_LEADER-OBJID L_NACHN L_VORNA INTO GS_PINFO-LEADER SEPARATED BY SPACE. ENDLOOP.ENDFORM. " GET_LEADER*&---------------------------------------------------------------------**& Form GET_PA0023*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM GET_PA0023 . SELECT ARBGB "Name of employer BEGDA "Start Date ENDDA "End Date TAETE "Job at former employer(s) INTO CORRESPONDING FIELDS OF TABLE GT_CV FROM PA0023 WHERE PERNR = P_PERNR. LOOP AT GT_CV INTO GS_CV. SELECT SINGLE LTEXT INTO GS_CV-LTEXT FROM T513C WHERE SPRAS = SY-LANGU AND TAETE = GS_CV-TAETE. MODIFY GT_CV FROM GS_CV TRANSPORTING LTEXT WHERE ARBGB = GS_CV-ARBGB AND BEGDA = GS_CV-BEGDA AND ENDDA = GS_CV-ENDDA. ENDLOOP.ENDFORM. " GET_PA0023*&---------------------------------------------------------------------**& Form GET_PA0021*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM GET_PA0021 . DATA: L_TIME TYPE TVRO-FAHZTD. SELECT SUBTY "subtype FANAM "Last name FAVOR "First name FGBDT "Date of Birth FANAT "Nationality FGBOT "Job INTO CORRESPONDING FIELDS OF TABLE GT_FAMILY FROM PA0021 WHERE PERNR = P_PERNR AND BEGDA = SY-DATUM. LOOP AT GT_FAMILY INTO GS_FAMILY. SELECT SINGLE STEXT INTO GS_FAMILY-GUANXI FROM T591S WHERE INFTY = '0021' AND SUBTY = GS_FAMILY-SUBTY AND SPRSL = SY-LANGU. CONCATENATE GS_FAMILY-FANAM GS_FAMILY-FAVOR INTO GS_FAMILY-NAME SEPARATED BY SPACE. CALL FUNCTION 'SD_CALC_DURATION_FROM_DATETIME' EXPORTING I_DATE1 = SY-DATUM I_TIME1 = G_TIME I_DATE2 = GS_FAMILY-FGBDT I_TIME2 = G_TIME IMPORTING E_TDIFF = L_TIME* E_DATE2_EARLY = EXCEPTIONS INVALID_DATETIME = 1 OTHERS = 2 . IF SY-SUBRC 0.* Implement suitable error handling here ENDIF. GS_FAMILY-AGE = L_TIME / ( 24 * 365 * 10000 ). SELECT SINGLE NATIO50 INTO GS_FAMILY-NATION FROM T005T WHERE SPRAS = SY-LANGU AND LAND1 = GS_FAMILY-FANAT. MODIFY GT_FAMILY FROM GS_FAMILY TRANSPORTING GUANXI NAME AGE NATION WHERE SUBTY = GS_FAMILY-SUBTY AND FANAM = GS_FAMILY-FANAM AND FAVOR = GS_FAMILY-FAVOR. ENDLOOP.ENDFORM. " GET_PA0021*&---------------------------------------------------------------------**& Form PRINT_OUT*&---------------------------------------------------------------------** Print out*----------------------------------------------------------------------*FORM PRINT_OUT. DATA: LC_FORM_ZH TYPE TDSFNAME VALUE 'YKCN_HR_PERSONNEL_PROFILE_ZH'. DATA: LC_FORM_EN TYPE TDSFNAME VALUE 'YKCN_HR_PERSONNEL_PROFILE_EN'. DATA: LV_NAME TYPE RS38L_FNAM, "FUNCTION NAME LV_TITLE TYPE SSFCOMPOP-TDCOVTITLE, "Text for Cover Page LS_OUTOP TYPE SSFCOMPOP, "Output Option LS_CONTROL TYPE SSFCTRLOP. "Control Parameters DATA: LC_PRINTER TYPE SSFCTRLOP-DEVICE VALUE 'PRINTER'. IF SY-LANGU = '1'. CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' EXPORTING FORMNAME = LC_FORM_ZH "YKCN_HR_PERSONNEL_PROFILE_ZH* VARIANT = ' '* DIRECT_CALL = ' ' IMPORTING FM_NAME = LV_NAME EXCEPTIONS NO_FORM = 1 NO_FUNCTION_MODULE = 2 OTHERS = 3. IF SY-SUBRC 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. ELSE. CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' EXPORTING FORMNAME = LC_FORM_EN "YKCN_HR_PERSONNEL_PROFILE_EN* VARIANT = ' '* DIRECT_CALL = ' ' IMPORTING FM_NAME = LV_NAME EXCEPTIONS NO_FORM = 1 NO_FUNCTION_MODULE = 2 OTHERS = 3. IF SY-SUBRC 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. ENDIF. LS_OUTOP-TDIMMED = 'X'. "Print Immidiately LS_OUTOP-TDNEWID = 'X'. "New Print Spool LS_OUTOP-TDCOVTITLE = LV_TITLE. "Text for Cover Page LS_CONTROL-NO_DIALOG = 'X'. "No Preview Dialog LS_CONTROL-PREVIEW = 'X'. "Print preview LS_CONTROL-DEVICE = LC_PRINTER. "Printer CALL FUNCTION LV_NAME EXPORTING CONTROL_PARAMETERS = LS_CONTROL "Control setting OUTPUT_OPTIONS = LS_OUTOP "Output setting USER_SETTINGS = SPACE IV_PERNR = GS_PINFO-PERNR "personnel no. IS_PINFO = GS_PINFO "Personnel info. TABLES IT_CV = GT_CV "CV IT_FAMILY = GT_FAMILY "Family EXCEPTIONS FORMATTING_ERROR = 1 INTERNAL_ERROR = 2 SEND_ERROR = 3 USER_CANCELED = 4 OTHERS = 5.ENDFORM.