SEPC_ERP试点阶段_技术书_HR_ZHRR0029 员工信息查询表_V1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
四川省电力公司
企业资源管理(ERP)系统实施项目
技术设计说明书
第一部分:基本信息
(生成新的版本后,以下内容要相应改动)
开发类型增强接口单据报表
技术工具 Enhancement User Exit BAdI
Dialog Interactive list
ABAP OO Function group
RFC BAPI function Executive Program BDC Table Contents Modification
Server file Local file
SAPScript Smartforms Output-only List
模块HR
开发机及集团D19(1) /client 110 事务代码ZHRR0029
程序ID ZHRR0029
程序名称员工信息查询
功能设计者周勤暘
技术设计者路晓青
ABAP程序员路晓青
第二部分:设计书维护记录
更新日期更新人员简要说明2009-11-02路晓青初版创建
第三部分:技术方案描述
3.1业务需求描述
根据选择画面上用户输入的条件,查看员工信息清单,调用逻辑数据库PNP,对于满足屏幕条件的员工,读取“报表字段说明”中指定的字段内容,除在“报表字段说明”中有具体说明的字段外,在选取表中记录时应满足记录的“开始时间<ENDDA,记录的结束时间>BEGDA”中的最后一条。
输出采用标准ALV表头,可由用户自定义报表的列格式。
并可根据计数列,进行总计、小计的统计功能。
3.2技术解决方案
1.根据选择画面的输入,用逻辑数据库PNP从数据库表抽取员工信息,并通过ALV显示清
单,用ALV标志的状态栏,实现小计和总计。
2.取数逻辑:
序号报表字段字段技术名称字段描述特殊需求
1 序号流水号
2 计数列 1
3 人员编号PA0000-PERNR 人员编号
4 姓名PA0001- ENAME 员工姓名
5 所属单位HRP1000-STEXT
(HRP100-OTYPE=O
) 取出PA0001-ORGEH= HRP1003-OBJID时判断HRP1003-ABTEL
是否等于“X”,
1、如果HRP1003-ABTEL=X,就直接取该员工PA0001-ORGEH = HRP1003-OBJID时的HRP1000-STEXT;
2、如果HRP1003-ABTEL<> X,那么,判断该上级组织单元的HRP1003-ABTEL是否等于“X”:
1)如果上级组织单元的
HRP1003-ABTEL=X,那么就输出该组织单位HRP1003-OBJID对应的HRP1000-STEXT;
2)如果上级组织单元的
HRP1003-ABTEL<>X,那么,继续向上取组织单元,继续查找父结点,直至找到HRP1003-ABTEL=x的组织单位,输出该组织单位HRP1003-OBJID对应的HRP1000-STEXT
6 所属部门HRP1000-STEXT
(HRP100-OTYPE=O
) 取出PA0001-ORGEH= HRP1003-OBJID时判断HRP1003-ABTEL
是否等于“X”,
1、如果HRP1003-ABTEL=X,就直接取该员工PA0001-ORGEH = HRP1003-OBJID时的HRP1000-STEXT;
2、如果HRP1003-ABTEL<> X,那么,判断该上级组织单元的HRP1003-ABTEL是否等于“X”:
1)如果上级组织单元的
HRP1003-ABTEL=X,那么就直接取该员工PA0001-ORGEH = HRP1003-OBJID时的HRP1000-STEXT;
2)如果上级组织单元的
HRP1003-ABTEL<>X,那么,继续向上取组织单元,继续查找父结点,直至找到HRP1003-ABTEL=x的该组织单位;找到之后,取HRP1003-ABTEL=x的组织单位的直接下级组织单位的信息,即该组织单位的关系HRP1001-RSIGN= B,且
HRP1001-RELAT=002时的
HRP1000-OBJID= HRP1003-OBJID时的HRP1000-STEXT
部门类别P9103-ZZHR_BMLB 取上述部门的P9103-
ZZHR_BMLB 显示文本
7 所属组织HRP1000-STEXT
(HRP100-OTYPE=O
) 取出PA0001-ORGEH= HRP1000-OBJID对应的HRP1000-STEXT
8 职位HRP1000-STEXT HRP1000-OTYPE=S ,HRP1000-
OBJID = PA0001-PLAINS,取
HRP1000-STEXT显示文本
9 职务HRP1000-STEXT HRP1000-OTYPE=C ,HRP1000-
OBJID = PA0001-STELL,取
HRP1000-STEXT显示文本
10 职务职级P0001-ZZHR_ZWZJ
显示文本
11 岗级PA0008-TRFGR 如果P0008-TRFAR=03或者04
时,并且P0008-TRFGB=01、02
或者07时,则岗级处留空岗位类别P9201-ZZHR_GWFN HRP9201-OBJID = P0001-
PLANS,取HRP9201- ZZHR_GWFN
显示文本
12 人事范围T500P-NAME1 T500P-PERSA= PA0001-WERKS,
取T500P-NAME1显示文本
13 人事子范围T001P-BTEXT T001P-BTRTL= PA0001-BTRTL,
取T001P-BTEXT 显示文本
14 员工组T501T-PTEXT T501T- PERSG = PA0001-PERSG,
取T501T-PTEXT 显示文本
15 员工子组T503T-PTEXT T503T-PERSK=PA0001-PERSK,
取T503T-PTEXT 显示文本
16 工资范围PA0001-ABKRS 显示文本
17 人员类别P0001-ZZHR_RYLB 显示文本
18 人员状态P0001-ZZHR_RYZT 显示文本
岗位状态P0001-ZZHR_GWZT 显示文本
用工形式P0001-ANSVH 显示文本
19 出生日期P0002-GBDAT
20 年龄通过程序计算
目前年份月份-出生的年份月份
1)如果目前的月份<出生的月
份,则岁数=目前年份-出生
年份-1
2)如果目前的月份>出生的月
份,则岁数=目前年份-出生
年份
21 性别Q0002-GESC2 显示文本
22 民族P0529-RACKY T505S-LTEXT 显示文本
23 籍贯P0002-ZZHR_JG
24 政治面貌P0534-PCODE 显示文本
25 入党时间P0534- BEGDA 满足条件P0534- PCODE =
“01”时的P0534-BEGDA的值26 身份证号PA0185-ICNN1
PA0185-ICNN2
PA0185-ICNN3
PA0185-ICNN4 四个字段合并输出为身份证
27 参加工作时间P0002-ZZHR_CGRQ
28 工龄起算日期P0002-ZZHR_GLQS
29 工龄通过程序计算,当前年-工龄起
算日期对应的年份
30 进入电力行业时
间
P0002-ZZHR_DLHY
31 进入本单位工作
时间
P0002-ZZHR_BDW
参工学历入学时间P0022-BEGDA 取P0022-
ZZHR_CGXL=“是”的
记录
参工学历毕业时间P0022-ENDDA 取P0022-
ZZHR_CGXL=“是”的
记录
32 参工学历P0022-SLABS
T519T-STEXT 显示文本取P0022-
ZZHR_CGXL=“是”的记录
33 参工学历所学专
业P0022-ZZHR_SXZY
或P0022-
ZZHR_SXZYMC
显示文本。
当P0022-
ZZHR_SXZY为空时,取P0022-
ZZHR_SXZYMC
取P0022-
ZZHR_CGXL=“是”的
记录
参工学历毕业院校P0022-INSTI 取P0022-
ZZHR_CGXL=“是”的
记录
中间学历入学时间P0022-BEGDA 取P0022-
ZZHR_ZJXL=“是”的
记录
中间学历毕业时间P0022-ENDDA 取P0022-
ZZHR_ZJXL=“是”的
记录
34 中间学历P0022-SLABS
T519T-STEXT 显示文本取P0022-
ZZHR_ZJXL=“是”的记录
35 中间学历所学专
业P0022-ZZHR_SXZY
或P0022-
ZZHR_SXZYMC
显示文本。
当P0022-
ZZHR_SXZY为空时,取P0022-
ZZHR_SXZYMC
取P0022-
ZZHR_ZJXL=“是”的
记录
中间学历毕业院校P0022-INSTI 取P0022-
ZZHR_ZJXL=“是”的
记录
最高学历入学时间P0022-BEGDA 取P0022-
ZZHR_ZGXL=“是”的
记录
最高学历毕业时间P0022-ENDDA 取P0022-
ZZHR_ZGXL=“是”的
记录
36 最高学历P0022-SLABS
T519T-STEXT 显示文本取P0022-
ZZHR_ZGXL=“是”的记录
37 最高学历所学专
业P0022-ZZHR_SXZY
或P0022-
ZZHR_SXZYMC
显示文本。
当P0022-
ZZHR_SXZY为空时,取P0022-
ZZHR_SXZYMC
取P0022-
ZZHR_ZGXL=“是”的
记录
最高学历毕业院校P0022-INSTI 取P0022-
ZZHR_ZGXL=“是”的
记录
38 最高技能等级工
种P9005-ZJDGZ WA_JDGZ-TEXT 显示文本取P9005-ZJNZGDJ =
“是”的记录
39 最高技能等级P9005-ZZGDJ WA_ZGDJ-TEXT 显示文本取P9005-ZJNZGDJ =
“是”的记录
最高技能资格获得时间P9005-ZZGHDSJ 取P9005-ZJNZGDJ =
“是”的记录
40 现技能等级工种P9005-ZJDGZ WA_JDGZ-TEXT 显示文本取P9005-ZSFXJN =
“是”的记录
41 现技能等级 P9005-ZZGDJ WA_ZGDJ-TEXT 显示文本 取P9005-ZSFXJN =“是”的记录 现技能资格获得
时间
P9005-ZZGHDSJ
取P9005-ZSFXJN =“是”的记录
42
专业技术名称(最高等级)
P9007-ZZYJSZWMC 取ZHRT9007ZWMC 表中当
ZHRT9007ZWMC- ZZYJSZWMC=PA9007-
ZZHR_ZYJSZWMC 时的TEXT 文本值
取P9007-ZJFZGDJBS =“是”的记录
43 专业技术系列(最高等级) P9007-ZZYJSZWXL 显示文本 取P9007-ZJFZGDJBS =“是”的记录
44 专业技术等级(最高等级) P9007-ZZYJSZWDJ 显示文本 取P9007-ZJFZGDJBS =“是”的记录
专业技术资格获取时间(最高等级)
P9007-BEGDA
取P9007-ZJFZGDJBS =“是”的记录 45 专业技术名称(现职称) P9007-ZZYJSZWMC 显示文本 取P9007-ZSFXZC =“是”的记录 46 专业技术系列(现职称) P9007-ZZYJSZWXL 显示文本 取P9007-ZSFXZC =“是”的记录 47 专业技术等级(现职称) P9007-ZZYJSZWDJ 显示文本 取P9007-ZSFXZC =“是”的记录
专业技术资格获取时间(现职称)
P9007-BEGDA
取P9007-ZSFXZC =“是”的记录
3.3 系统简单架构图
如果没有满足条件的数据
如果有数据
开 始 选择画面输入查询条件 ALV 显示数据清单 结 束
第四部分:程序逻辑描述—将主要代码功能描述清楚,
1.输入TCODE: ZHRR0029,出现如下屏幕
2.根据选择画面的输入,ALV显示符合条件的数据清单。
第五部分:源程序----复杂性功能实现可贴主要功能代码部分
*&---------------------------------------------------------------------* *& 程序名称: ZHRR0029
*& 程序描述:员工信息查询
*& 开发人员:路晓青
*& 创建日期: 2009/10/21
*& 程序用途:根据屏幕输入条件,调用逻辑数据库PNP,对于满足屏幕条件的
*& 员工,将其信息生成ALV预览。
*&---------------------------------------------------------------------* *&
*&
*&---------------------------------------------------------------------* REPORT ZHRR0029 MESSAGE-ID ZHR01 NO STANDARD PAGE HEADING
LINE-SIZE192
LINE-COUNT58.
TYPE-POOLS: SLIS.
TABLES: PERNR.
INFOTYPES: 0000, 0001, 0002, 0529, 0534, 0185, 0022, 9005, 9007.
*&---------------------------------------------------------------------* *& 定义内表和工作区
*&---------------------------------------------------------------------* * ALV显示表之结构体
TYPES: BEGIN OF TY_ALV,
SELBOX TYPE C, "选择列
NUM TYPE I, "流水号
CTCOM TYPE I, "计数列
PERNR LIKE P0002-PERNR, "人员编号
ENAME LIKE P0001-ENAME, "姓名
SSDW LIKE HRP1000-STEXT, "所属单位
SSBM LIKE HRP1000-STEXT, "所属部门
BMLB LIKE ZHR_BMLB-ZTEXT,"部门类别
SSZZ LIKE HRP1000-STEXT, "所属组织
ZW LIKE HRP1000-STEXT, "职位
ZWU LIKE HRP1000-STEXT, "职务
ZWZJ LIKE ZHR_ZWZJ-ZTEXT,"职务职级
TRFGR LIKE P0008-TRFGR, "岗级
GWLB LIKE ZHR_GWFN-ZTEXT,"岗位类别
RSFW LIKE T500P-NAME1, "人事范围
RSZFW LIKE T001P-BTEXT, "人事子范围
YGZ LIKE T501T-PTEXT, "员工组
YGZZ LIKE T503T-PTEXT, "员工子组
GGFW LIKE T549T-ATEXT, "工资范围
RYLB LIKE ZHR_RYLB-ZTEXT,"人员类别
RYZT LIKE ZHR_RYZT-ZTEXT,"人员状态
GWZT LIKE ZHR_GWZT-ZTEXT,"岗位状态
YGXS LIKE T542T-ATX, "用工形式
GBDAT LIKE P0002-GBDAT, "出生日期
AGE TYPE I, "年龄
GESCH(2) TYPE C, "性别
MZ LIKE T505S-LTEXT, "民族
ZZHR_JG LIKE P0002-ZZHR_JG, "籍贯
ZZMM LIKE T7CN5R-PTEXT, "政治面貌
RDSJ LIKE P0534-BEGDA, "入党时间
ICNUM LIKE P0185-ICNUM, "身份证号
CGRQ LIKE P0002-ZZHR_CGRQ,"参加工作时间
GLQS LIKE P0002-ZZHR_GLQS,"工龄起算日期
GL TYPE I, "工龄
DLHY LIKE P0002-ZZHR_DLHY,"进入电力行业时间
BDW LIKE P0002-ZZHR_BDW, "进入本单位工作时间
BEGDA1 LIKE P0022-BEGDA, "参工学历入学时间
ENDDA1 LIKE P0022-ENDDA, "参工学历毕业时间
CGXL1 LIKE T519T-STEXT, "参工学历
SXZY1 LIKE ZHR_SXZY-ZTEXT, "参工学历所学专业
INSTI1 LIKE P0022-INSTI, "参工学历毕业院校
BEGDA2 LIKE P0022-BEGDA, "中间学历入学时间
ENDDA2 LIKE P0022-ENDDA, "中间学历毕业时间
CGXL2 LIKE T519T-STEXT, "中间学历
SXZY2 LIKE ZHR_SXZY-ZTEXT, "中间学历所学专业
INSTI2 LIKE P0022-INSTI, "中间学历毕业院校
BEGDA3 LIKE P0022-BEGDA, "最高学历入学时间
ENDDA3 LIKE P0022-ENDDA, "最高学历毕业时间
CGXL3 LIKE T519T-STEXT, "最高学历
SXZY3 LIKE ZHR_SXZY-ZTEXT, "最高学历所学专业
INSTI3 LIKE P0022-INSTI, "最高学历毕业院校
ZJDGZ LIKE ZHRT9005JDGZ-TEXT, "最高技能等级工种
ZGDJ LIKE ZHRT9005ZGDJ-TEXT, "最高技能等级
ZZGHDSJ LIKE P9005-ZZGHDSJ, "最高技能资格获得时间
XJDGZ LIKE ZHRT9005JDGZ-TEXT, "现技能等级工种
XGDJ LIKE ZHRT9005ZGDJ-TEXT, "现技能等级
XZGHDSJ LIKE P9005-ZZGHDSJ, "现技能资格获得时间
ZZYJSMC LIKE ZHRT9007ZWMC-TEXT, "专业技术名称(最高等级)
ZZYJSXL LIKE ZHRT9007ZWXL-TEXT, "专业技术系列(最高等级)
ZZYJSDJ LIKE ZHRT9007ZWDJ-TEXT, "专业技术等级(最高等级)
ZZYBEDA LIKE P9007-BEGDA, "专业技术资格获取时间(最高)
XZYJSMC LIKE ZHRT9007ZWMC-TEXT, "专业技术名称(现职称)
XZYJSXL LIKE ZHRT9007ZWXL-TEXT, "专业技术系列(现职称)
XZYJSDJ LIKE ZHRT9007ZWDJ-TEXT, "专业技术等级(现职称)
XZYBEDA LIKE P9007-BEGDA, "专业技术资格获取时间(现职称)END OF TY_ALV.
DATA: IT_ALV TYPE STANDARD TABLE OF TY_ALV,
WA_ALV TYPE TY_ALV.
*&---------------------------------------------------------------------* *& 定义变量
*&---------------------------------------------------------------------* * ALV所用变量定义
DATA: G_FIELDCAT TYPE LVC_T_FCAT WITH HEADER LINE, "字段内表
L_LAYOUT TYPE LVC_S_LAYO, "ALV布局
WA_EXCLUDE TYPE SLIS_EXTAB ,
IT_EXCLUDE TYPE SLIS_T_EXTAB ,
L_REPID LIKE SY-REPID VALUE SY-REPID,
L_GRID_SETTINGS TYPE LVC_S_GLAY,
LT_EVENTS TYPE SLIS_T_EVENT.
DATA: LR_GRID TYPE REF TO CL_GUI_ALV_GRID.
DATA: W_NUM TYPE I,
G_DATE TYPE DATS,
W_TRFAR LIKE PA0008-TRFAR,
W_TRFGB LIKE PA0008-TRFGB,
W_TRFGR LIKE PA0008-TRFGR,
W_ENDDA LIKE PA0008-ENDDA.
*&---------------------------------------------------------------------* *& INITIALIZATION
*&---------------------------------------------------------------------* INITIALIZATION.
REFRESH: IT_ALV,
G_FIELDCAT[].
CLEAR: WA_ALV,
W_NUM.
*&---------------------------------------------------------------------* *& START-OF-SELECTION
*&---------------------------------------------------------------------* START-OF-SELECTION.
* 使用逻辑数据库
GET PERNR.
IF PN-ENDDA > P0000-ENDDA.
G_DATE = P0000-ENDDA.
ELSE.
G_DATE = PN-ENDDA.
ENDIF.
RP-PROVIDE-FROM-LAST P0000 SPACE PN-BEGDA G_DATE.
RP-PROVIDE-FROM-LAST P0001 SPACE PN-BEGDA G_DATE.
RP-PROVIDE-FROM-LAST P0002 SPACE PN-BEGDA G_DATE.
RP-PROVIDE-FROM-LAST P0022 SPACE PN-BEGDA G_DATE.
RP-PROVIDE-FROM-LAST P0529 SPACE PN-BEGDA G_DATE.
RP-PROVIDE-FROM-LAST P0534 SPACE PN-BEGDA G_DATE.
RP-PROVIDE-FROM-LAST P0185 SPACE PN-BEGDA G_DATE.
RP-PROVIDE-FROM-LAST P9005 SPACE PN-BEGDA G_DATE.
RP-PROVIDE-FROM-LAST P9007 SPACE PN-BEGDA G_DATE.
* 取人员数据
PERFORM FRM_GETDATA.
*&---------------------------------------------------------------------* *& END-OF-SELECTION
*&---------------------------------------------------------------------* END-OF-SELECTION.
IF IT_ALV IS INITIAL.
MESSAGE S000 WITH'无人员调动数据存在,请重新输入!'.
EXIT.
ENDIF.
* 显示数据
PERFORM FRM_DISPLAY_DATA.
*&---------------------------------------------------------------------* *& Form FRM_GETDATA
*&---------------------------------------------------------------------* * 取人员数据
*----------------------------------------------------------------------* * --> p1 text
* <-- p2 text
*----------------------------------------------------------------------* FORM FRM_GETDATA.
W_NUM = W_NUM + 1.
* 流水号
WA_ALV-NUM = W_NUM.
* 计数列
WA_ALV-CTCOM = 1.
* 人员编号
WA_ALV-PERNR = P0000-PERNR.
* 姓名
WA_ALV-ENAME = P0001-ENAME.
* 所属单位
PERFORM FRM_GET_SSDW USING P0001-ORGEH G_DATE
CHANGING WA_ALV-SSDW.
* 所属部门部门类别
PERFORM FRM_GET_SSBM USING P0001-ORGEH G_DATE
CHANGING WA_ALV-SSBM
WA_ALV-BMLB. * 所属组织
SELECT SINGLE STEXT
FROM HRP1000
INTO WA_ALV-SSZZ
WHERE OTYPE = 'O'
AND OBJID = P0001-ORGEH
AND BEGDA <= G_DATE
AND ENDDA >= G_DATE.
* 职位
SELECT SINGLE STEXT
FROM HRP1000
INTO WA_ALV-ZW
WHERE OTYPE = 'S'
AND OBJID = P0001-PLANS
AND BEGDA <= G_DATE
AND ENDDA >= G_DATE.
* 职务
SELECT SINGLE STEXT
FROM HRP1000
INTO WA_ALV-ZWU
WHERE OTYPE = 'C'
AND OBJID = P0001-STELL
AND BEGDA <= G_DATE
AND ENDDA >= G_DATE.
* 职务职级
SELECT SINGLE ZTEXT
FROM ZHR_ZWZJ
INTO WA_ALV-ZWZJ
WHERE ZZHR_ZWZJ = P0001-ZZHR_ZWZJ.
* 取P0008里面放一条在屏幕输入时间内的最新的数据CLEAR: W_ENDDA,
W_TRFAR,
W_TRFGB,
W_TRFGR.
SELECT ENDDA
TRFAR
TRFGB
TRFGR
INTO (W_ENDDA,
W_TRFAR,
W_TRFGB,
W_TRFGR)
UP TO1ROWS
FROM PA0008
WHERE PERNR = P0001-PERNR
AND BEGDA >= PN-BEGDA
AND ENDDA <= G_DATE
ORDER BY ENDDA DESCENDING.
ENDSELECT.
* 岗级
IF ( W_TRFAR = '03'
OR W_TRFAR = '04' )
AND ( W_TRFGB = '01'
OR W_TRFGB = '02'
OR W_TRFGB = '07' ).
CLEAR WA_ALV-TRFGR.
ELSE.
WA_ALV-TRFGR = W_TRFGR.
ENDIF.
* 岗位类别
SELECT SINGLE ZTEXT
INTO WA_ALV-GWLB
FROM ZHR_GWFN
INNER JOIN HRP9201
ON HRP9201~ZZHR_GWFN = ZHR_GWFN~ZZHR_GWFN WHERE HRP9201~OBJID = P0001-PLANS
AND HRP9201~BEGDA <= G_DATE
AND HRP9201~ENDDA >= G_DATE.
* 人事范围
SELECT SINGLE NAME1
FROM T500P
INTO WA_ALV-RSFW
WHERE PERSA = P0001-WERKS.
* 人事子范围
SELECT SINGLE BTEXT
FROM T001P
INTO WA_ALV-RSZFW
WHERE BTRTL = P0001-BTRTL.
* 员工组
SELECT SINGLE PTEXT
FROM T501T
INTO WA_ALV-YGZ
WHERE SPRSL = 1
AND PERSG = P0001-PERSG.
* 员工子组
SELECT SINGLE PTEXT
FROM T503T
INTO WA_ALV-YGZZ
WHERE SPRSL = 1
AND PERSK = P0001-PERSK.
* 工资范围
SELECT SINGLE ATEXT
FROM T549T
INTO WA_ALV-GGFW
WHERE SPRSL = 1
AND ABKRS = P0001-ABKRS.
* 人员类别
SELECT SINGLE ZTEXT
FROM ZHR_RYLB
INTO WA_ALV-RYLB
WHERE ZZHR_RYLB = P0001-ZZHR_RYLB.
* 人员状态
SELECT SINGLE ZTEXT
FROM ZHR_RYZT
INTO WA_ALV-RYZT
WHERE ZZHR_RYZT = P0001-ZZHR_RYZT.
* 岗位状态
SELECT SINGLE ZTEXT
FROM ZHR_GWZT
INTO WA_ALV-GWZT
WHERE ZZHR_GWZT = P0001-ZZHR_GWZT.
* 用工形式
SELECT SINGLE ATX
FROM T542T
INTO WA_ALV-YGXS
WHERE SPRAS = 1
AND MOLGA = '28'
AND ANSVH = P0001-ANSVH.
* 出生日期
WA_ALV-GBDAT = P0002-GBDAT.
* 年龄
WA_ALV-AGE = SY-DATUM(4) - WA_ALV-GBDAT(4).
IF SY-DATUM+4(2) < WA_ALV-GBDAT+4(2).
WA_ALV-AGE = WA_ALV-AGE - 1.
ENDIF.
* 性别
IF P0002-GESCH = 1.
WA_ALV-GESCH = '男'.
ELSEIF P0002-GESCH = 2.
WA_ALV-GESCH = '女'.
ENDIF.
* 民族
SELECT SINGLE LTEXT
INTO WA_ALV-MZ
FROM T505S
WHERE SPRSL = '1'
AND MOLGA = '28'
AND RACKY = P0529-RACKY.
* 籍贯
WA_ALV-ZZHR_JG = P0002-ZZHR_JG.
* 政治面貌
SELECT SINGLE PTEXT
INTO WA_ALV-ZZMM
FROM T7CN5R
WHERE LANGU = 1
AND PCODE = P0534-PCODE.
* 删掉非屏幕选择期间的数据、
DELETE P0534[] WHERE BEGDA > G_DATE.
DELETE P0022[] WHERE BEGDA > G_DATE.
DELETE P9005[] WHERE BEGDA > G_DATE.
DELETE P9007[] WHERE BEGDA > G_DATE.
* 入党时间
READ TABLE P0534 WITH KEY PCODE = '01'.
IF SY-SUBRC = 0.
WA_ALV-RDSJ = P0534-BEGDA.
ENDIF.
* 身份证号
WA_ALV-ICNUM = P0185-ICNUM.
* 参加工作时间
WA_ALV-CGRQ = P0002-ZZHR_CGRQ.
* 工龄起算日期
WA_ALV-GLQS = P0002-ZZHR_GLQS.
* 工龄
WA_ALV-GL = SY-DATUM(4) - WA_ALV-GLQS(4). * 进入电力行业时间
WA_ALV-DLHY = P0002-ZZHR_DLHY.
* 进入本单位工作时间
WA_ALV-BDW = P0002-ZZHR_BDW.
* 参工学历
CLEAR P0022.
READ TABLE P0022 WITH KEY ZZHR_CGXL = '是'. * 参工学历入学时间
WA_ALV-BEGDA1 = P0022-BEGDA.
* 参工学历毕业时间
WA_ALV-ENDDA1 = P0022-ENDDA.
* 参工学历毕业院校
WA_ALV-INSTI1 = P0022-INSTI.
* 参工学历
SELECT SINGLE STEXT
INTO WA_ALV-CGXL1
FROM T519T
WHERE SPRSL = 1
AND SLABS = P0022-SLABS.
* 参工学历所学专业
SELECT SINGLE ZTEXT
INTO WA_ALV-SXZY1
FROM ZHR_SXZY
WHERE ZZHR_SXZY = P0022-ZZHR_SXZY.
IF WA_ALV-SXZY1 IS INITIAL.
WA_ALV-SXZY1 = P0022-ZZHR_SXZYMC.
ENDIF.
* 中间学历
CLEAR P0022.
READ TABLE P0022 WITH KEY ZZHR_ZJXL = '是'. * 中间学历入学时间
WA_ALV-BEGDA2 = P0022-BEGDA.
* 中间学历毕业时间
WA_ALV-ENDDA2 = P0022-ENDDA.
* 中间学历毕业院校
WA_ALV-INSTI2 = P0022-INSTI.
* 中间学历
SELECT SINGLE STEXT
INTO WA_ALV-CGXL2
FROM T519T
WHERE SPRSL = 1
AND SLABS = P0022-SLABS.
* 中间学历所学专业
SELECT SINGLE ZTEXT
INTO WA_ALV-SXZY2
FROM ZHR_SXZY
WHERE ZZHR_SXZY = P0022-ZZHR_SXZY.
IF WA_ALV-SXZY2 IS INITIAL.
WA_ALV-SXZY2 = P0022-ZZHR_SXZYMC.
ENDIF.
* 最高学历
CLEAR P0022.
READ TABLE P0022 WITH KEY ZZHR_ZGXL = '是'. * 最高学历入学时间
WA_ALV-BEGDA3 = P0022-BEGDA.
* 最高学历毕业时间
WA_ALV-ENDDA3 = P0022-ENDDA.
* 最高学历毕业院校
WA_ALV-INSTI3 = P0022-INSTI.
* 最高学历
SELECT SINGLE STEXT
INTO WA_ALV-CGXL3
FROM T519T
WHERE SPRSL = 1
AND SLABS = P0022-SLABS.
* 最高学历所学专业
SELECT SINGLE ZTEXT
INTO WA_ALV-SXZY3
FROM ZHR_SXZY
WHERE ZZHR_SXZY = P0022-ZZHR_SXZY.
IF WA_ALV-SXZY3 IS INITIAL.
WA_ALV-SXZY3 = P0022-ZZHR_SXZYMC.
ENDIF.
* 最高技能等级工种
CLEAR P9005.
READ TABLE P9005 WITH KEY ZJNZGDJ = '是'.
SELECT SINGLE TEXT
INTO WA_ALV-ZJDGZ
FROM ZHRT9005JDGZ
WHERE ZJDGZ = P9005-ZJDGZ.
* 最高技能等级
SELECT SINGLE TEXT
INTO WA_ALV-ZGDJ
FROM ZHRT9005ZGDJ
WHERE ZZGDJ = P9005-ZZGDJ.
* 最高技能资格获得时间
WA_ALV-ZZGHDSJ = P9005-ZZGHDSJ.
* 现技能等级工种
CLEAR P9005.
READ TABLE P9005 WITH KEY ZSFXJN = '是'.
SELECT SINGLE TEXT
INTO WA_ALV-XJDGZ
FROM ZHRT9005JDGZ
WHERE ZJDGZ = P9005-ZJDGZ.
* 现技能等级
SELECT SINGLE TEXT
INTO WA_ALV-XGDJ
FROM ZHRT9005ZGDJ
WHERE ZZGDJ = P9005-ZZGDJ.
* 现技能资格获得时间
WA_ALV-XZGHDSJ = P9005-ZZGHDSJ.
* 专业技术名称(最高等级)
CLEAR P9007.
READ TABLE P9007 WITH KEY ZJFZGDJBS = '是'.
SELECT SINGLE TEXT
INTO WA_ALV-ZZYJSMC
FROM ZHRT9007ZWMC
WHERE ZZYJSZWMC = P9007-ZZYJSZWMC.
* 专业技术系列(最高等级)
SELECT SINGLE TEXT
INTO WA_ALV-ZZYJSXL
FROM ZHRT9007ZWXL
WHERE ZZYJSZWXL = P9007-ZZYJSZWXL.
* 专业技术等级(最高等级)
SELECT SINGLE TEXT
INTO WA_ALV-ZZYJSDJ
FROM ZHRT9007ZWDJ
WHERE ZZYJSZWDJ = P9007-ZZYJSZWDJ.
* 专业技术资格获取时间(最高等级)
WA_ALV-ZZYBEDA = P9007-BEGDA.
* 专业技术名称(现职称)
CLEAR P9007.
READ TABLE P9007 WITH KEY ZSFXZC = '是'.
SELECT SINGLE TEXT
INTO WA_ALV-XZYJSMC
FROM ZHRT9007ZWMC
WHERE ZZYJSZWMC = P9007-ZZYJSZWMC.
* 专业技术系列(现职称)
SELECT SINGLE TEXT
INTO WA_ALV-XZYJSXL
FROM ZHRT9007ZWXL
WHERE ZZYJSZWXL = P9007-ZZYJSZWXL.
* 专业技术等级(现职称)
SELECT SINGLE TEXT
INTO WA_ALV-XZYJSDJ
FROM ZHRT9007ZWDJ
WHERE ZZYJSZWDJ = P9007-ZZYJSZWDJ.
* 专业技术资格获取时间(最高等级)
WA_ALV-XZYBEDA = P9007-BEGDA.
APPEND WA_ALV TO IT_ALV.
CLEAR WA_ALV.
ENDFORM. " FRM_GETDATA
*&---------------------------------------------------------------------* *& Form FRM_GET_ORGEHDESC
*&---------------------------------------------------------------------* * text
*----------------------------------------------------------------------* * --> p1 text
* <-- p2 text
*----------------------------------------------------------------------* FORM FRM_GET_SSDW USING P_ORGEH TYPE P0001-ORGEH
P_DATE TYPE P0001-BEGDA
CHANGING P_ORGEH_DESC TYPE HRP1000-STEXT.
DATA: L_SOBID TYPE SOBID.
DATA: L_ABTEL LIKE HRP1003-ABTEL.
DATA: L_POBID TYPE SOBID.
DATA: LD TYPE DATS.
CLEAR L_SOBID.
L_POBID = P_ORGEH.
L_SOBID = L_POBID.
SELECT SINGLE ABTEL INTO L_ABTEL
FROM HRP1003 WHERE HRP1003~OBJID = L_POBID
AND HRP1003~BEGDA <= P_DATE
AND HRP1003~ENDDA >= P_DATE.
WHILE ( L_ABTEL <> 'X' ).
L_SOBID = L_POBID.
SELECT SINGLE SOBID INTO L_POBID
FROM HRP1001
WHERE HRP1001~OBJID = L_POBID
AND HRP1001~RSIGN = 'A'
AND HRP1001~RELAT = '002'
AND HRP1001~BEGDA <= P_DATE
AND HRP1001~ENDDA >= P_DATE.
IF SY-SUBRC <> 0.
CLEAR: L_ABTEL.
EXIT.
ENDIF.
SELECT SINGLE ABTEL INTO L_ABTEL
FROM HRP1003 WHERE HRP1003~OBJID = L_POBID
AND BEGDA <= P_DATE
AND ENDDA >= P_DATE.
ENDWHILE.
SELECT SINGLE STEXT INTO P_ORGEH_DESC
FROM HRP1000 WHERE HRP1000~OBJID = L_POBID
AND HRP1000~OTYPE = 'O'
AND HRP1000~BEGDA <= P_DATE
AND HRP1000~ENDDA >= P_DATE.
ENDFORM. " FRM_GET_SSDW
*&---------------------------------------------------------------------* *& Form FRM_DISPLAY_DATA
*&---------------------------------------------------------------------* * text
*----------------------------------------------------------------------* * --> p1 text
* <-- p2 text
*----------------------------------------------------------------------* FORM FRM_DISPLAY_DATA .
* 定义ALV表单的相关格式、属性
PERFORM FRM_BUILD_LAYOUT.
* 定义表单中各个列的信息
PERFORM FRM_BUILD_FIELDS.
* 显示数据
PERFORM FRM_DISPLAY_ALV.
ENDFORM. " FRM_DISPLAY_DATA
*&---------------------------------------------------------------------* *& Form FRM_GET_SSBM
*&---------------------------------------------------------------------* * text
*----------------------------------------------------------------------* * -->P_P0001_ORGEH text
* -->P_G_DATE text
* <--P_WA_ALV_SSBM text
*----------------------------------------------------------------------* FORM FRM_GET_SSBM USING P_ORGEH TYPE P0001-ORGEH
P_DATE TYPE P0001-BEGDA
CHANGING P_ORGEH_DESC TYPE HRP1000-STEXT
P_BMLB TYPE ZHR_BMLB-ZTEXT.
DATA: L_SOBID TYPE SOBID.
DATA: L_ABTEL LIKE HRP1003-ABTEL.
DATA: L_POBID TYPE SOBID.
DATA: LD TYPE DATS.
CLEAR: L_SOBID.
L_POBID = P_ORGEH.
L_SOBID = L_POBID.
SELECT SINGLE ABTEL INTO L_ABTEL
FROM HRP1003 WHERE HRP1003~OBJID = L_POBID
AND HRP1003~BEGDA <= P_DATE
AND HRP1003~ENDDA >= P_DATE.
WHILE ( L_ABTEL <> 'X' ).
L_SOBID = L_POBID.
SELECT SINGLE SOBID INTO L_POBID
FROM HRP1001
WHERE HRP1001~OBJID = L_POBID
AND HRP1001~RSIGN = 'A'
AND HRP1001~RELAT = '002'
AND HRP1001~BEGDA <= P_DATE
AND HRP1001~ENDDA >= P_DATE.
IF SY-SUBRC <> 0.
CLEAR: L_ABTEL.
EXIT.
ENDIF.
SELECT SINGLE ABTEL INTO L_ABTEL
FROM HRP1003 WHERE HRP1003~OBJID = L_POBID
AND BEGDA <= P_DATE
AND ENDDA >= P_DATE.
ENDWHILE.
*取所属部门
SELECT SINGLE STEXT
INTO P_ORGEH_DESC
FROM HRP1000 WHERE HRP1000~OBJID = L_SOBID
AND HRP1000~OTYPE = 'O'
AND HRP1000~BEGDA <= P_DATE
AND HRP1000~ENDDA >= P_DATE.
* 取部门类别
CHECK L_SOBID IS NOT INITIAL.
SELECT SINGLE ZTEXT
INTO P_BMLB
FROM ZHR_BMLB
INNER JOIN HRP9103
ON HRP9103~ZZHR_BMLB = ZHR_BMLB~ZZHR_BMNB
WHERE HRP9103~OBJID = L_SOBID
AND HRP9103~BEGDA <= P_DATE
AND HRP9103~ENDDA >= P_DATE.
ENDFORM. " FRM_GET_SSBM
*&---------------------------------------------------------------------* *& Form FRM_BUILD_LAYOUT
*&---------------------------------------------------------------------* * 定义ALV表单的相关格式、属性
*----------------------------------------------------------------------* * --> p1 text
* <-- p2 text
*----------------------------------------------------------------------* FORM FRM_BUILD_LAYOUT .
L_LAYOUT-CWIDTH_OPT = 'X'.
L_LAYOUT-BOX_FNAME = 'SELBOX'.
L_LAYOUT-ZEBRA = 'X'.
L_LAYOUT-EXCP_CONDS = 'X'. "以特殊颜色显示汇总
* L_LAYOUT-NO_ROWMARK = 'X'.
* L_LAYOUT-NO_MERGING ='X'.
* L_LAYOUT-SGL_CLK_HD = 'X'.
L_LAYOUT-SEL_MODE = 'A'.
L_LAYOUT-INFO_FNAME = 'LN_COLOR'.
ENDFORM. " FRM_BUILD_LAYOUT
*&---------------------------------------------------------------------* *& Form FRM_BUILD_FIELDS
*&---------------------------------------------------------------------* * 定义表单中各个列的信息
*----------------------------------------------------------------------* * --> p1 text
* <-- p2 text
*----------------------------------------------------------------------* FORM FRM_BUILD_FIELDS .
PERFORM FRM_G_FIELDCAT USING'NUM''流水号'''.
PERFORM FRM_G_FIELDCAT USING'CTCOM''计数列'''.
PERFORM FRM_G_FIELDCAT USING'PERNR''人员编号'''.
PERFORM FRM_G_FIELDCAT USING'ENAME''姓名'''.
PERFORM FRM_G_FIELDCAT USING'SSDW''所属单位'''.
PERFORM FRM_G_FIELDCAT USING'SSBM''所属部门'''.
PERFORM FRM_G_FIELDCAT USING'BMLB''部门类别'''.
PERFORM FRM_G_FIELDCAT USING'SSZZ''所属组织'''.
PERFORM FRM_G_FIELDCAT USING'ZW''职位'''.
PERFORM FRM_G_FIELDCAT USING'ZWU''职务'''.
PERFORM FRM_G_FIELDCAT USING'ZWZJ''职务职级'''.
PERFORM FRM_G_FIELDCAT USING'TRFGR''岗级'''.
PERFORM FRM_G_FIELDCAT USING'GWLB''岗位类别'''.
PERFORM FRM_G_FIELDCAT USING'RSFW''人事范围'''.
PERFORM FRM_G_FIELDCAT USING'RSZFW''人事子范围'''.
PERFORM FRM_G_FIELDCAT USING'YGZ''员工组'''.
PERFORM FRM_G_FIELDCAT USING'YGZZ''员工子组'''.
PERFORM FRM_G_FIELDCAT USING'GGFW''工资范围'''.
PERFORM FRM_G_FIELDCAT USING'RYLB''人员类别'''.
PERFORM FRM_G_FIELDCAT USING'RYZT''人员状态'''.
PERFORM FRM_G_FIELDCAT USING'GWZT''岗位状态'''.
PERFORM FRM_G_FIELDCAT USING'YGXS''用工形式'''.
PERFORM FRM_G_FIELDCAT USING'GBDAT''出生日期'''.
PERFORM FRM_G_FIELDCAT USING'AGE''年龄'''.
PERFORM FRM_G_FIELDCAT USING'GESCH''性别'''.
PERFORM FRM_G_FIELDCAT USING'MZ''民族'''.
PERFORM FRM_G_FIELDCAT USING'ZZHR_JG''籍贯'''.
PERFORM FRM_G_FIELDCAT USING'ZZMM''政治面貌'''.
PERFORM FRM_G_FIELDCAT USING'RDSJ''入党时间'''.
PERFORM FRM_G_FIELDCAT USING'ICNUM''身份证号'''.
PERFORM FRM_G_FIELDCAT USING'CGRQ''参加工作时间'''.
PERFORM FRM_G_FIELDCAT USING'GLQS''工龄起算日期'''.
PERFORM FRM_G_FIELDCAT USING'GL''工龄'''.
PERFORM FRM_G_FIELDCAT USING'DLHY''进入电力行业时间'''.
PERFORM FRM_G_FIELDCAT USING'BDW''进入本单位工作时间'''.
PERFORM FRM_G_FIELDCAT USING'BEGDA1''参工学历入学时间'''.
PERFORM FRM_G_FIELDCAT USING'ENDDA1''参工学历毕业时间'''.
PERFORM FRM_G_FIELDCAT USING'CGXL1''参工学历'''.
PERFORM FRM_G_FIELDCAT USING'SXZY1''参工学历所学专业'''.
PERFORM FRM_G_FIELDCAT USING'INSTI1''参工学历毕业院校'''.
PERFORM FRM_G_FIELDCAT USING'BEGDA2''中间学历入学时间'''.
PERFORM FRM_G_FIELDCAT USING'ENDDA2''中间学历毕业时间'''.
PERFORM FRM_G_FIELDCAT USING'CGXL2''中间学历'''.
PERFORM FRM_G_FIELDCAT USING'SXZY2''中间学历所学专业'''.
PERFORM FRM_G_FIELDCAT USING'INSTI2''中间学历毕业院校'''.
PERFORM FRM_G_FIELDCAT USING'BEGDA3''最高学历入学时间'''.
PERFORM FRM_G_FIELDCAT USING'ENDDA3''最高学历毕业时间'''.
PERFORM FRM_G_FIELDCAT USING'CGXL3''最高学历'''.
PERFORM FRM_G_FIELDCAT USING'SXZY3''最高学历所学专业'''.
PERFORM FRM_G_FIELDCAT USING'INSTI3''最高学历毕业院校'''.
PERFORM FRM_G_FIELDCAT USING'ZJDGZ''最高技能等级工种'''.
PERFORM FRM_G_FIELDCAT USING'ZGDJ''最高技能等级'''.
PERFORM FRM_G_FIELDCAT USING'ZZGHDSJ''最高技能资格获得时间'''.
PERFORM FRM_G_FIELDCAT USING'XJDGZ''现技能等级工种'''.
PERFORM FRM_G_FIELDCAT USING'XGDJ''现技能等级'''.
PERFORM FRM_G_FIELDCAT USING'XZGHDSJ''现技能资格获得时间'''.
PERFORM FRM_G_FIELDCAT USING'ZZYJSMC''专业技术名称(最高等级)'''.
PERFORM FRM_G_FIELDCAT USING'ZZYJSXL''专业技术系列(最高等级)'''.
PERFORM FRM_G_FIELDCAT USING'ZZYJSDJ''专业技术等级(最高等级)'''.
PERFORM FRM_G_FIELDCAT USING'ZZYBEDA'
'专业技术资格获取时间(最高等级)'''.
PERFORM FRM_G_FIELDCAT USING'XZYJSMC''专业技术名称(现职称)'''.
PERFORM FRM_G_FIELDCAT USING'XZYJSXL''专业技术系列(现职称)'''.
PERFORM FRM_G_FIELDCAT USING'XZYJSDJ''专业技术等级(现职称)'''.
PERFORM FRM_G_FIELDCAT USING'XZYBEDA'
'专业技术资格获取时间(现职称)'''. ENDFORM. " FRM_BUILD_FIELDS
*&---------------------------------------------------------------------* *& Form FRM_G_FIELDCAT
*&---------------------------------------------------------------------* * 打印数据
*----------------------------------------------------------------------* * -->P_FIELDNAME text
* -->P_REPTEXT_DDIC text
*----------------------------------------------------------------------* FORM FRM_G_FIELDCAT USING P_FIELDNAME TYPE SLIS_FIELDNAME
P_REPTEXT_DDIC LIKE DD03P-REPTEXT
P_SUM .
CLEAR G_FIELDCAT.。