WBS主数据导入程序.docx
- 文档编号:9969441
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:24
- 大小:19.39KB
WBS主数据导入程序.docx
《WBS主数据导入程序.docx》由会员分享,可在线阅读,更多相关《WBS主数据导入程序.docx(24页珍藏版)》请在冰豆网上搜索。
WBS主数据导入程序
*&---------------------------------------------------------------------*
*&REPORTZPSWBSUPFILE
*&
*&程序功能:
PS主数据导入程序
*&开发者:
王强
*&开发日期:
2012-01-30
*&---------------------------------------------------------------------*
REPORTZPSCREATEWBS_C.
TYPE-POOLS:
SLIS.
DATA:
ZSTRULIKEBAPI_PROJECT_DEFINITION,
ZRETULIKEBAPIRETURN1,
ZMESSLIKETABLEOFBAPI_METH_MESSAGEWITHHEADERLINE,
ZWBSTTYPESTANDARDTABLEOFBAPI_BUS2054_NEWWITHHEADERLINE,
ZWBSATYPESTANDARDTABLEOFBAPI_BUS2054_NEWWITHHEADERLINE,
ZETRETYPESTANDARDTABLEOFBAPIRET2WITHHEADERLINE,
ZENINTYPESTANDARDTABLEOFBAPIPAREXWITHHEADERLINE,
ZEOUTTYPESTANDARDTABLEOFBAPIPAREXWITHHEADERLINE.
DATA:
BDCDATALIKEBDCDATAOCCURS0WITHHEADERLINE.
DATA:
MESSTABLIKEBDCMSGCOLLOCCURS0WITHHEADERLINE.
DATA:
ZSTUFELIKEZPSWBSDATA-STUFE,
ZWBSLELIKEZPSWBSDATA-WBSYS,
ZWBSUPLIKEZPSWBSDATA-WBSYS,
ZWBSYSLIKEZPSWBSDATA-WBSYS,
ZWBSIDLIKEBAPI_BUS2001_NEW-PROJECT_DEFINITION.
DATA:
ZWBSLENUMTYPEI,
ZWBSUPNUMTYPEI,
ZPRNAMTYPEZPSWBSDATA-PRNAM,
ZPOSIDTYPEZPSWBSDATA-POSID,
ZGJAHRTYPEZPSWBSDATA-GJAHR,
L_STUFE_PASTTYPEZPSWBSDATA-STUFE,
L_WBS_ELEMENT_1TYPEZPSWBSDATA-WBSYS,
L_WBS_ELEMENT_PAST_1TYPEZPSWBSDATA-WBSYS,
L_WBS_ELEMENT_2TYPEZPSWBSDATA-WBSYS,
L_WBS_ELEMENT_PAST_2TYPEZPSWBSDATA-WBSYS,
L_WBS_ELEMENT_3TYPEZPSWBSDATA-WBSYS,
L_WBS_ELEMENT_PAST_3TYPEZPSWBSDATA-WBSYS,
L_WBS_ELEMENT_4TYPEZPSWBSDATA-WBSYS,
L_WBS_ELEMENT_PAST_4TYPEZPSWBSDATA-WBSYS,
L_WBS_ELEMENT_5TYPEZPSWBSDATA-WBSYS,
L_WBS_ELEMENT_PAST_5TYPEZPSWBSDATA-WBSYS.
DATA:
GT_DATALIKETABLEOFZPSWBSDATAWITHHEADERLINE.
DATA:
WA_DATALIKELINEOFGT_DATA.
DATA:
GT_FILEDTYPESLIS_T_FIELDCAT_ALV,"表,设置字段时用.
GW_FILEDTYPESLIS_FIELDCAT_ALV."结构,设置字段时用
DATA:
I_LAYOUTTYPESLIS_LAYOUT_ALV,"结构,设置ALV的显示格式
W_REPIDLIKESY-REPID,
GT_EVENTSTYPESLIS_T_EVENT,"事件表:
有NAMEFORM这两个字段.
GT_PAGEHEADTYPESLIS_T_LISTHEADER,"表存储表头信息
GD_PARTTYPESLIS_FORMNAMEVALUE'TOP_OF_PAGE'."
TYPES:
TRUXS_T_TEXT_DATA(4096)TYPECOCCURS0.
DATARAWDATATYPETRUXS_T_TEXT_DATA.
DATA:
G_FILETITLETYPESTRING,
G_FILEFILTERTYPESTRING,
G_INITDIRTYPESTRING,
LC_TABLETYPEFILETABLE,
L_RCTYPEI,
LW_TABLETYPEFILE_TABLE,
P_FILE(20)TYPEC,
CTUTYPECTU_PARAMS,
V_MSGTYPESTRING.
*MESSTABLIKEBDCMSGCOLLOCCURS0WITHHEADERLINE,
*BDCDATALIKEBDCDATAOCCURS0WITHHEADERLINE.
*用宏来定义字段排列
DEFINEADD_FIELD.
CLEARGW_FILED.
GW_FILED-FIELDNAME=&1.
GW_FILED-SELTEXT_L=&2.
GW_FILED-KEY=&3.
GW_FILED-NO_ZERO=&4.
GW_FILED-EDIT=&5.
GW_FILED-CHECKBOX=&6.
GW_FILED-NO_ZERO='X'.
GW_FILED-OUTPUTLEN=&7.
APPENDGW_FILEDTOGT_FILED.
END-OF-DEFINITION.
*获取文件路径名称
SELECTION-SCREENBEGINOFBLOCKB1WITHFRAMETITLETEXT-001.
PARAMETERS:
P_PATCHLIKERLGRAP-FILENAME.
SELECTION-SCREENENDOFBLOCKB1.
INITIALIZATION.
SETPF-STATUS'GUI2'."工具栏
ATSELECTION-SCREEN.
IFSY-UCOMM='BACK'.
LEAVETOSCREEN0.
ELSEIFSY-UCOMM='RUN'.
IFP_PATCH=''.
MESSAGE'导入主数据文件不存在。
'TYPE'E'.
ELSE.
CLEAR:
GT_FILED[],GT_DATA[].
PERFORMUPLOAD_DATA."读取Excel到内表
PERFORMDISPLAY_ALV."显示上传的文件数据
ENDIF.
ELSEIFSY-UCOMM='DOWN'.
PERFORMDOWNLOADEXCELFILE."下载模板
ENDIF.
*选择上传文件
ATSELECTION-SCREENONVALUE-REQUESTFORP_PATCH.
G_FILETITLE='请选择文件路径'.
G_FILEFILTER='EXCEL(*.XLS)|*.XLS|文件(*.XLSX)|*.XLSX|'.
G_INITDIR=P_PATCH.
CALLMETHODCL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
EXPORTING
WINDOW_TITLE=G_FILETITLE
FILE_FILTER=G_FILEFILTER
INITIAL_DIRECTORY=G_INITDIR
CHANGING
FILE_TABLE=LC_TABLE
RC=L_RC
EXCEPTIONS
CNTL_ERROR=1
FILE_OPEN_DIALOG_FAILED=2
ERROR_NO_GUI=3.
READTABLELC_TABLEINTOLW_TABLEINDEX1.
CLEAR:
P_PATCH.
P_PATCH=LW_TABLE-FILENAME.
*选择文件结束
*&---------------------------------------------------------------------*
*&FormDISPLAY_ALV
*&---------------------------------------------------------------------*
*text显示上传的文件数据
*----------------------------------------------------------------------*
FORMDISPLAY_ALV.
*---->定义ALVLAYOUT
REFRESHGT_FILED.
I_LAYOUT-ZEBRA='X'.
W_REPID=SY-REPID."
I_LAYOUT-NO_VLINE=''."
I_LAYOUT-COLWIDTH_OPTIMIZE='X'."
I_LAYOUT-DETAIL_INITIAL_LINES='X'.
I_LAYOUT-BOX_FIELDNAME='CHX'.
I_LAYOUT-DETAIL_TITLEBAR=''."
ADD_FIELD'WERKS''工厂'''''''''''.
ADD_FIELD'PROFL''项目参数文件'''''''''''.
ADD_FIELD'PSPID''项目编码'''''''''''.
ADD_FIELD'STUFE''项目层次'''''''''''.
ADD_FIELD'WBSYS''子项目编码'''''''''''.
ADD_FIELD'POST1''项目名称''''''X'''''.
ADD_FIELD'WBSMC''子项目名称''''''X'''''.
ADD_FIELD'PSPRI''优先级''''''X'''''.
ADD_FIELD'VERNR''项目负责单位''''''X'''''.
ADD_FIELD'ASTNR''负责部门''''''X'''''.
ADD_FIELD'PROJ_TYPE''项目类型''''''X'''''.
ADD_FIELD'BUKRS''公司代码''''''X'''''.
ADD_FIELD'PRCTR''利润中心''''''X'''''.
ADD_FIELD'PRNAM''投资程序''''''X'''''.
ADD_FIELD'POSID''定位标识''''''X'''''.
ADD_FIELD'GJAHR''批准年度''''''X'''''.
ADD_FIELD'PLFAZ''基本开始日期''''''X'''''.
ADD_FIELD'PLSEZ''基本完成日期''''''X'''''.
ADD_FIELD'FUNCA''功能范围''''''X'''''.
ADD_FIELD'USR00''负责人''''''X'''''.
ADD_FIELD'USR08''立项日期''''''X'''''.
ADD_FIELD'USR06''项目金额''''''X'''''.
CALLFUNCTION'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM=W_REPID"当前程序名字
I_CALLBACK_PF_STATUS_SET='SET_PF_STATUS'"ALV工具条
I_CALLBACK_USER_COMMAND='USER_COMMAND'"触发用户自定义事件
IT_FIELDCAT=GT_FILED"字段内表
IS_LAYOUT=I_LAYOUT"ALV输出的整体样式
TABLES
T_OUTTAB=GT_DATA"需要输出的内表
EXCEPTIONS
PROGRAM_ERROR=1
OTHERS=2.
ENDFORM."DISPLAY_ALV
*&--------------------------------------------------------------------*
*&FORMUSER_COMMAND
*&--------------------------------------------------------------------*
FORMUSER_COMMANDUSINGUCOMMLIKESY-UCOMMES_SELFIELDTYPESLIS_SELFIELD.
DATA:
PRINTREPORTNAME(20)TYPECVALUE''.
CASEUCOMM.
WHEN'BACK'.
LEAVETOSCREEN0.
WHEN'EXIT'.
LEAVEPROGRAM.
WHEN'SEND'.
PERFORMCREATEWBS.
ENDCASE.
ENDFORM."USER_COMMAND
*&--------------------------------------------------------------------*
*&FORMSET_PF_STATUS
*&--------------------------------------------------------------------*
FORMSET_PF_STATUSUSINGRT_EXTABTYPESLIS_T_EXTAB.
SETPF-STATUS'GUI3'."工具栏
ENDFORM."SET_PF_STATUS
*&---------------------------------------------------------------------*
*&FormUPLOAD_DATA
*&---------------------------------------------------------------------*
*text读取Excel到内表
*----------------------------------------------------------------------*
FORMUPLOAD_DATA.
CLEAR:
P_FILE.
CALLFUNCTION'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
I_LINE_HEADER='X'"表示包括字段名
I_TAB_RAW_DATA=RAWDATA
I_FILENAME=P_PATCH
TABLES
I_TAB_CONVERTED_DATA=GT_DATA.
IFSY-SUBRC<>0.
MESSAGEIDSY-MSGIDTYPESY-MSGTYNUMBERSY-MSGNO
WITHSY-MSGV1SY-MSGV2SY-MSGV3SY-MSGV4.
ENDIF.
ENDFORM."UPLOAD_DATA
*&---------------------------------------------------------------------*
*&FORMDOWNLOADEXCELFILE
*&---------------------------------------------------------------------*
*TEXT下载模板
*----------------------------------------------------------------------*
FORMDOWNLOADEXCELFILE.
DATA:
STITLETYPESTRING,
SFILENAMETYPESTRING,
SPATHTYPESTRING,
SFILTERTYPESTRING,
SDIRECTORYTYPESTRING,
SFULLPATHTYPESTRING.
DATA:
ZNAMELIKEWWWDATATAB,
ZMIMELIKEW3MIMEOCCURS0.
ZNAME-RELID='MI'.
ZNAME-OBJID='ZPSWBSMAINDATA'."应读取的EXCEL模板在SMW0当中导入的对像名称
ZNAME-TEXT=SY-TITLE."文件标题
STITLE='另存文件:
'.
SFILTER='EXCEL(*.XLS)|*.XLS|文件(*.XLSX)|*.XLSX|'.
SFILENAME='PS导入主数据模板.XLS'.
SPATH='C:
\'.
SDIRECTORY=SPATH.
SFULLPATH='PS导入主数据模板.XLS'."导出的表格位置与名称
CALLMETHODCL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
EXPORTING
WINDOW_TITLE=STITLE
FILE_FILTER=SFILTER
INITIAL_DIRECTORY=SDIRECTORY
CHANGING
FILENAME=SFILENAME
PATH=SPATH
FULLPATH=SFULLPATH
EXCEPTIONS
CNTL_ERROR=1
ERROR_NO_GUI=2
NOT_SUPPORTED_BY_GUI=3
OTHERS=4.
CALLFUNCTION'WWWDATA_IMPORT'
EXPORTING
KEY=ZNAME
TABLES
MIME=ZMIME
EXCEPTIONS
WRONG_OBJECT_TYPE=1
IMPORT_ERROR=2
OTHERS=3.
CALLFUNCTION'GUI_DOWNLOAD'
EXPORTING
FILENAME=SFULLPATH
FILETYPE='BIN'
TABLES
DATA_TAB=ZMIME.
CONCATENATE'PS主数据模板保存在:
'SFULLPATHINTOSFULLPATH.
MESSAGESFULLPATHTYPE'S'.
ENDFORM."DOWNLOADEXCELFILE
*&---------------------------------------------------------------------*
*&FormCREATEWBS
*&---------------------------------------------------------------------*
*text
*----------------------------------------------------------------------*
FORMCREATEWBS.
IFGT_DATA[]ISINITIAL.
MESSAGE'检查维护表里的数据不存在。
'TYPE'E'.
ENDIF.
LOOPATGT_DATA.
MOVE-CORRESPONDINGGT_DATATOWA_DATA.
ATNEWPSPID.
*维护项目定义
CLEAR:
ZSTRU,ZPRNAM,ZPOSID,ZGJAHR,ZWBSID.
ZSTRU-PROJECT_DEFINITION=WA_DATA-PSPID.
ZSTRU-DESCRIPTION=WA_DATA-POST1.
ZSTRU-RESPONSIBLE_NO=WA_DATA-VERNR.
ZSTRU-COMP_CODE=WA_DATA-BUKRS.
ZSTRU-START=WA_DATA-PLFAZ.
ZSTRU-FINISH=WA_DATA-PLSEZ.
ZSTRU-PLANT=WA_DATA-WERKS.
ZSTRU-PROJECT_PROFILE=WA_DATA-PROFL.
ZSTRU-APPLICANT_NO=WA_DATA-ASTNR.
ZSTRU-PROFIT_CTR=WA_DATA-PRCTR.
"创建项目
CALLFUNCTION'BAPI_PROJECTDEF_CREATE'
EXPORTING
PROJECT_DEFINITION_STRU=ZSTRU
IMPORTING
RETURN=ZRETU
TABLES
E_MESSAGE_TABLE=ZMESS.
ZPRNAM=WA_DATA-PRNAM.
ZPOSID=WA_DATA-POSID.
ZGJAHR=WA_DATA-GJAHR.
ZWBSID=WA_DATA-PSPID.
ENDAT.
IFZRETU-TYPE='E'.
ZMESS-MESSAGE_TYPE=ZRETU-TYPE.
ZMESS-MESSAGE_TEXT=ZRETU-MESSAGE.
APPENDZMESS.
CLEARZMESS.
PERFORMDISPLAY_P_ERROR_ALV.
EXIT.
ELSE.
"维护项目结构
ZWBST-WBS_ELEMENT=GT_DATA-WBSYS.
ZWBST-DESCRIPTION=GT_DATA-WBSMC.
ZWBST-RESPONSIBLE_NO=GT_DATA-VERNR.
ZWBST-PROJ_TYPE=GT
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- WBS 数据 导入 程序