SEPCERP试点阶段技术书HRZHRR0014 国家工作人员登记表V1.docx
《SEPCERP试点阶段技术书HRZHRR0014 国家工作人员登记表V1.docx》由会员分享,可在线阅读,更多相关《SEPCERP试点阶段技术书HRZHRR0014 国家工作人员登记表V1.docx(32页珍藏版)》请在冰豆网上搜索。
![SEPCERP试点阶段技术书HRZHRR0014 国家工作人员登记表V1.docx](https://file1.bdocx.com/fileroot1/2023-1/10/fb128f06-1264-44c9-ae9d-4355903c980d/fb128f06-1264-44c9-ae9d-4355903c980d1.gif)
SEPCERP试点阶段技术书HRZHRR0014国家工作人员登记表V1
四川省电力公司
企业资源管理(ERP)系统实施项目
技术设计说明书
第一部分:
基本信息
(生成新的版本后,以下内容要相应改动)
开发类型
增强接口单据报表
技术工具
EnhancementUserExitBAdI
DialogInteractivelist
ABAPOOFunctiongroup
RFCBAPIfunctionExecutiveProgram
BDCTableContentsModification
ServerfileLocalfile
SAPScriptSmartformsOutput-onlyList
模块
HR
开发机及集团
110
事务代码
ZHRR0014
程序ID
ZHRR0014
程序名称
国家工作人员登记备案表
功能设计者
王丹
技术设计者
王学会
ABAP程序员
王学会
第二部分:
设计书维护记录
更新日期
更新人员
简要说明
2009-07-07
王学会
人事主管理部门改为报表导出之后人工输入;工作单位在取值时,如遇到人事范围和人事子范围相同时,取人事子范围。
2009-07-09
王学会
将职务职称中的取数修改成取PA0001中的职务职级
第三部分:
技术方案描述
3.1业务需求描述
根据人员编号、就业状态、人事范围、人事子范围、员工组员工子组从系统中提取相关字段,生成国家工作人员登记备案表以备查阅
3.2技术解决方案
1、使用逻辑数据库PERNR获取数据
2、使用函数REUSE_ALV_GRID_DISPLAY展示数据
3、使用SMW0上载的数据模板,将内表的数据导入到数据模板中,打印或者导入到本地
3.3系统简单架构图
第四部分:
程序逻辑描述—将主要代码功能描述清楚,
程序处理逻辑
START-OF-SELECTION.
RP_SET_DATA_INTERVAL 'P0001' PN-BEGDA PN-ENDDA.
GET PERNR.
PERFORM GET_DATA.
END-OF-SELECTION.
PERFORM SORT_ITAB.
PERFORM ALV_DISPLAY.
下载通过SMW0上载的模板文件(P_OBJID)到(P_DEST)指定的本地文件路径下的EXCEL文件里
FORM FRM_DOWNLOAD_EXCEL_FROMSERVER USING P_OBJID LIKE WWWDATATAB-OBJID
P_DEST LIKE SAPB-SAPPFAD.
DATA:
LO_OBJDATA LIKE WWWDATATAB,
LO_MIME LIKE W3MIME,
LS_DESTINATION LIKE RLGRAP-FILENAME,
LS_OBJNAM TYPE STRING,
LI_RC LIKE SY-SUBRC,
LS_ERRTXT TYPE STRING.
CONCATENATE P_OBJID '.XLS' INTO LS_OBJNAM.
CONDENSE LS_OBJNAM NO-GAPS.
SELECT SINGLE RELID OBJID FROM WWWDATA
INTO CORRESPONDING FIELDS OF LO_OBJDATA
WHERE SRTF2 = 0
AND RELID = 'MI'
AND OBJID = P_OBJID.
IF SY-SUBRC NE 0 OR LO_OBJDATA-OBJID EQ SPACE.
CONCATENATE '模板文件:
' LS_OBJNAM '不存在,请用TCODE:
SMW0进行加载' INTO LS_ERRTXT.
MESSAGE E000 WITH LS_ERRTXT.
ENDIF.
LS_DESTINATION = P_DEST.
CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
EXPORTING
KEY = LO_OBJDATA
DESTINATION = LS_DESTINATION
IMPORTING
RC = LI_RC.
IF LI_RC NE 0.
CONCATENATE '模板文件:
' LS_OBJNAM '下载失败' INTO LS_ERRTXT.
MESSAGE E000 WITH LS_ERRTXT.
ENDIF.
ENDFORM.
ALV自定义工具栏的事件处理
FORM ALV_USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
CASE R_UCOMM.
打印
WHEN 'PNT'.
CHECK ITAB[] IS NOT INITIAL.
PERFORM PRINT."填充excel(输出路径定位C:
\)
PERFORM FRM_PREVIEW."预览打印格式(功能:
EXCEL的打印预览)
PERFORM QUIT_EXCEL."释放并从本地删除EXCEL对象
导入到本地文件
WHEN 'EXPORT'.
CHECK ITAB[] IS NOT INITIAL.
PERFORM FILEPATH. "获取输出路径(输出路径由用户自己选定)
PERFORM PRINT. "填充excel
PERFORM FREE_EXCEL. "保存填充数据、释放excel对象
WHEN OTHERS.
ENDCASE.
ENDFORM.
FORM PRINT.
DATA:
LI_MOD TYPE I, "分页标记,
LI_ROW TYPE I VALUE 5, "excel 表从第5行开始填充数据
LI_CURRENTROW TYPE I VALUE 0, "内表当前行数(第。
。
。
条数据)
LS_CURRENTROW TYPE STRING, "字符格式的内表当前行数(用于concatenate)
LS_LINES TYPE STRING, "字符格式的内表行项目数
LS_PERCENT(3) TYPE I, "数值格式的百分比
LS_PERCENT1 TYPE STRING, "字符格式的百分比
LN_PERCENT(3) TYPE N, "已处理内表数据的百分比
LS_INDCATORTXT TYPE STRING, "用于输出的说明
LI_CELL TYPE I.
DATA:
YEAR(4) VALUE 0,
MONTH
(2) VALUE 0,
DAY
(2) VALUE 0,
DATE TYPE STRING.
DESCRIBE TABLE ITAB LINES LI_LINES.
如果为事件为打印的话则指定EXCEL模板的本地下载路径
(EXCEL文件在打印执行完毕后会被删除)
IF SY-UCOMM = 'PNT'.
CONCATENATE CS_PATH CO_OBJID '-' SY-DATUM '.XLS' INTO P_FILENAME.
ENDIF.
"下载模板
LS_INDCATORTXT = '程序正在下载模板'.
PERFORM FRM_PROCESS_INDCATOR USING LS_INDCATORTXT 0 .
从服务器下载EXCEL模板到P_FILENAME指定的路径下
PERFORM FRM_DOWNLOAD_EXCEL_FROMSERVER USING CO_OBJID P_FILENAME.
CHECK NOT P_FILENAME IS INITIAL.
LS_INDCATORTXT = '程序正在初始化OLE控件'.
PERFORM FRM_PROCESS_INDCATOR USING LS_INDCATORTXT 0 .
初始化EXCEL文件,并打开sheet以供填充数据
PERFORM INIT_EXCEL USING P_FILENAME.
将内表的数据填充到本地EXCEL适当的单元格里
LOOP AT ITAB.
"处理信息提示
LI_CURRENTROW = SY-TABIX.
LN_PERCENT = ( LI_CURRENTROW * 100 ) / LI_LINES. "已处理数据的百分比
LS_PERCENT1 = LS_PERCENT = LN_PERCENT.
CONCATENATE '已处理 ' LS_PERCENT1 '% 的数据记录,请稍候.....'
INTO LS_INDCATORTXT.
PERFORM FRM_PROCESS_INDCATOR USING LS_INDCATORTXT 0 .
"向EXCEL表格行项目填充数据
PERFORM FILL_CELL USING LI_ROW 1 0 ITAB-NUM. "序号
PERFORM FILL_CELL USING LI_ROW 2 0 ITAB-NACHN. "姓
PERFORM FILL_CELL USING LI_ROW 3 0 ITAB-VORNA. "名
PERFORM FILL_CELL USING LI_ROW 4 0 ITAB-GBDAT. "出生日期
PERFORM FILL_CELL USING LI_ROW 5 0 ITAB-GENER. "性别
PERFORM FILL_CELL USING LI_ROW 6 0 ITAB-ICNUM. "身份证号
PERFORM FILL_CELL_LEFT USING LI_ROW 7 0 ITAB-GZDW. "工作单位
PERFORM FILL_CELL_LEFT USING LI_ROW 8 0 ITAB-STEXT. "职务职级
PERFORM FILL_CELL_LEFT USING LI_ROW 9 0 ITAB-HRSTE. "人事主管单位
PERFORM FILL_CELL_LEFT USING LI_ROW 10 0 ITAB-ZZMM. "政治面貌
PERFORM FILL_CELL_LEFT USING LI_ROW 11 0 ITAB-ORT01. "户口所在地
LI_ROW = LI_ROW + 1.
CLEAR ITAB.
ENDLOOP.
CLEAR DATE.
ENDFORM.
第五部分:
源程序----复杂性功能实现可贴主要功能代码部分
INCLUDE ZHRR0014_DATA_DECALRE. "数据声明
INCLUDE ZHRR0014_EXCEL. "EXCEL 相关数据及程序
INCLUDE ZHRR0014_GET_DATA. "数据获取
INCLUDE ZHRR0014_ALV_DISPLAY. "ALV 输出
INCLUDE ZHRR0014_PRINT. "打印及输出相关子程序
INCLUDE ZHRR0014_EVENT. "程序的处理流程
*&---------------------------------------------------------------------*
*& 包括 ZHRR0014_DATA_DECALRE
*&---------------------------------------------------------------------*
REPORT ZHRR0014 NO STANDARD PAGE HEADING
MESSAGE-ID ZHR01.
TABLES:
PERNR, "HR 主数据报告的标准选
HRP1000, "
HRP1003, "
T7CN5R, "政治面貌文本
T001P, "子范围文本
T500P. "人事范围文本
INFOTYPES:
0000, "HR主记录:
信息类别0000(事件)
0001, "人力资源主记录:
信息类型0001 (原始分配)
0002, "HR 主记录:
信息类型 0002 (人员数据)
0006, "HR主记录:
信息类型0006(地址)
0185, "HR 主记录:
信息类型 0185 [Identification]
0534, " 人力资源主记录:
信息类型 0534(党派信息)——政治面貌
0528, "人力资源主记录:
信息类型 0528(家庭信息)——政治面貌
1001,
9007. "HR 主记录:
信息类别9007——专业技术资格等级
DATA INDEX TYPE I VALUE 0.
DATA:
BEGIN OF ITAB OCCURS 1, "定义输出表
BOX
(1), "
NUM TYPE STRING, "序号
NAME TYPE STRING, "姓名
NACHN LIKE PA0002-NACHN, "姓
VORNA LIKE PA0002-VORNA, "名
GBDAT(8), "出生日期
GENER
(2), "性别
ICNUM LIKE PA0185-ICNUM, "身份证号
GZDW TYPE STRING, "工作单位
RSFW LIKE T500P-NAME1, "人事范围
RSZFW LIKE T001P-BTEXT, "人事子范围
STEXT TYPE STRING, "职务职级
HRSTE LIKE HRP1000-STEXT, "人事主管部门
ZZMM(40), "政治面貌
ORT01 LIKE PA0006-ORT01, "户口所在地
PRIOX LIKE P1001-PRIOX,
OBJID LIKE HRP1000-OBJID,
RYPX LIKE P0001-ZZHR_RYPX,
PERNR LIKE P0001-PERNR,
END OF ITAB,
WA LIKE LINE OF ITAB.
DEFINE M_MESSAGE.
CASE SY-SUBRC.
WHEN 0.
WHEN OTHERS.
MESSAGE E000(ZHR01)
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDCASE.
END-OF-DEFINITION.
SELECTION-SCREEN:
BEGIN OF BLOCK A1 WITH FRAME TITLE TEXT-F01.
PARAMETERS RSZGBM LIKE HRP1000-STEXT. "人事主管部门
SELECTION-SCREEN:
END OF BLOCK A1.
*&---------------------------------------------------------------------*
*& 包括 ZHRR0014_EVENT
*&---------------------------------------------------------------------*
START-OF-SELECTION.
RP_SET_DATA_INTERVAL 'P0001' PN-BEGDA PN-ENDDA.
GET PERNR.
PERFORM GET_DATA.
END-OF-SELECTION.
PERFORM SORT_ITAB.
PERFORM ALV_DISPLAY.
*&---------------------------------------------------------------------*
*& 包括 ZHRR0014_EXCEL
*&---------------------------------------------------------------------*
TYPE-POOLS:
OLE2.
DATA:
P_FILENAME TYPE SAPB-SAPPFAD.
CONSTANTS:
CS_PATH(3) TYPE C VALUE 'C:
\',
CO_OBJID TYPE WWWDATATAB-OBJID VALUE 'ZHRR0014', "打印格式
CI_LINESOFPAGE TYPE I VALUE 17, "每页打印行数
CI_COLUMNSOFPAGE TYPE I VALUE 11, "每页打印列数
CI_DATAOFFSET_TOP TYPE I VALUE 4,
CI_DATAOFFSET_LEFT TYPE I VALUE 0,
CI_DATAOFFSET_RIGHT TYPE I VALUE 2,
CI_DATAOFFSET_BUTTOM TYPE I VALUE 0,
CI_DATALINES TYPE I VALUE 14. "每页打印数据条数
DATA:
LI_TOP TYPE I,
LI_LEFT TYPE I,
LI_RIGHT TYPE I,
LI_BUTTOM TYPE I,
LC_NUM TYPE I, "
FLAG_ROW TYPE I, "标志行数
FLAG_COL TYPE I, "标志列数
LC_MOD TYPE I, "记录分页的模余数
LI_LINES TYPE I. "记录内表条数
INCLUDE OLE2INCL.
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,
EXCEL TYPE OLE2_OBJECT,
CELLS TYPE OLE2_OBJECT.
DATA:
GI_PAGENO TYPE I VALUE 0. "CURRENT PAGENO
DATA:
GI_PAGENO_COPY TYPE I VALUE 0. "CURRENT PAGENO
DATA:
LC_GI_PAGENO_COPY
(2) TYPE C.
DATA:
PAGENO TYPE I VALUE 0.
DATA:
LC_PAGENO
(2) TYPE C.
DATA:
PAGE(6) TYPE C.
DATA:
I(3) TYPE P DECIMALS 2.
*&---------------------------------------------------------------------*
*& Form FRM_PROCESS_DICATOR
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->TEXT text
* -->PERCENTAGE text
*----