SAPABAPDMS文档管理开发.docx
《SAPABAPDMS文档管理开发.docx》由会员分享,可在线阅读,更多相关《SAPABAPDMS文档管理开发.docx(18页珍藏版)》请在冰豆网上搜索。
SAPABAPDMS文档管理开发
SAP-ABAP-DM文S档管理开发
SAPABAPDMS文档开发
1.用到的BAPI:
BAPI_DOCUMENT_CREATE2,
ZBAPI_DOCUMENT_CHECKOUTV,IEWB2API_DOCUMENT_DELETE_DIRECT
2.
a)
b)
c)
其中ZBAPI_DOCUMENT_CHECKOUTV是IE从W标2准的
BAPI_DOCUMENT_CHECKOUTV改IE写W(2标准的在导出文档时,会自定义一个文档名称);改动代码如下:
新增函数组ZMM_CVBAPI
将LCVBAPITOP的定义对象拷贝到LZMM_CVBAPITOP
在LZMMCVBAPITO最P后添加如下:
INCLUDElcvbapif01.
INCLUDElcvbapif02.
INCLUDElcvbapif03.
INCLUDElcvbapif04.
INCLUDElcvbapif05.
INCLUDElcvbapif06.
INCLUDElcvbapif07.
d)拷贝函数BAPI_DOCUMENT_CHECKOUTVIEW2到新ZBAPI_DOCUMENT_CHECKOUTV,IE添W加2IMPORT参ORFILENAM,E并修改代码。
3.以下为参考代码:
*文档类型
CONSTANT:
Scon_dokar(3)VALUE'ZQX'.
*存储类别
CONSTANT:
Scon_storage_cat(10)VALUE'DMS_C1_ST'.
FORMfrmcreatfile
DATA:
lvrc
TYPEi,
ltfiletable
TYPEfiletableWITHHEADERLINE.
DATA:
lv_filenameTYPE
filep,
lv_path
TYPEfilep.
DATA:
lvdocnumber
TYPEbapidocaux-docnumber.
DATA:
lsdocumentdata
TYPEbapidocdraw2,
lsdocumentdataxTYPEbapidocdrawx2,"bapidocdra
w2x,
lt_objectlinks
TYPETABLEOFbapi_doc_dradWIT
HHEADERLINE,
lt_documentfilesTYPETABLEOFbapi_doc_files2WITHHEADERLINE,
ls_returnTYPEbapiret2.
DATA:
t_tdwpTYPETABLEOFtdwpWITHHEADERLINE.
DATA:
name
TYPEdraw-filep
ext(64)TYPEc.
IFltfiletable[]
ISINITIAL.
EXIT.
ENDIF.
READTABLElt_filetable
CALLMETHODclguifrontendservices=>fileopendialog
EXPORTING
windowtitle
='选择文件'
defaultextension
CHANGING
filetable
=ltfiletable[]
rc
=lv_rc
EXCEPTIONS
fileopendialogfailed
=1
cntlerror
=
2
errornogui
=3
notsupportedbygui
=4
OTHERS=9.
*解析路径文件
PERFORMfrmsplitpathfileUSINGltfiletable
-filename
CHANGINGlv_filenamelv_path.
INDEX1.
name=lv_filename.
WHILEnameCA'.'.
SPLITnameAT'.'INTOextname.ENDWHIL.E
CONCATENATE'.'nameINTOname.TRANSLATEnameTOLOWERCASE.
CALLFUNCTION'CV120_DOC_GET_APPL'
EXPORTING
pffile
=name
TABLES
ptx_tdwp
=t_tdwp.
IFttdwp[]IS
INITIAL.
MESSAGEs001
WITH'
不支持此类型文件'.
ENDIF.
READTABLEt_tdwpINDEX1.
lsdocumentdata
-documenttype
=condokar.
lsdocumentdata
-documentversion
='00'.
lsdocumentdata
-documentpart
='000'.
lsdocumentdata
-description
='凭证描述'.
lsdocumentdata
-username
=sy-uname.
ls_documentdata-ecnumber='123'.
READTABLEt_tdwpINDEX1.
ltdocumentfiles
-documenttype
='ZQX'.
ltdocumentfiles
-storagecategory
=constoragecat.
ltdocumentfiles
-wsapplication
=ttdwp-dappl.
ltdocumentfiles
-docpath
=lvpath.
ltdocumentfiles
-docfile
=lvfilename.
ltdocumentfiles
-checkedin
='X'.
APPENDltdocumentfiles.
CALLFUNCTION'BAPIDOCUMENTCREAT
E2'
EXPORTIN
G
documentdata
=lsdocumentdata
IMPORTIN
G
documentnumber=
lvdocnumber
return=lsreturn
TABLESobjectlinks=lt_objectlinksdocumentfiles=lt_documentfiles.
IFls_return-type='E'ORlv_docnumberISINITIAL.*MESSAGEe001WITH'上传文件出错,请联系管理员'.
MESSAGEIDls_return-idTYPEls_return-typeNUMBERls_return-number
WITHls_return-message_v1ls_return-message_v2ls_return-message_v3ls_return-message_v4.
ELSE.
CALLFUNCTION'BAPI_TRANSACTION_COMMI.T'MESSAGEs001WITH'上传成功'.
ENDIF.
wafile
-docid=
lv_docnumber.
wafile
-dname=
lvfilename.
wafile
-ykplanno
=waxqjhh-ykplanno.
wafile
-dtype=
name.
wa_file-credat=sy-datum.
wa
file
-ctime=
sy-
uzeit.
wa
file
-cname=
sy-
uname.
APPENDwa_fileTOit_file
IFwaxqjhh-ykplannoIS
NOTINITIAL.
MODIFYztmmxqjhfile
FROMwafile.
COMMITWORKANDWAIT.
ENDIF.
ENDFOR.M"FRM_UPLOAD_FILE
*&
*
*&Formfrm_split_path_file
*&
*
*text拆分路径和文档名
FORMfrm_split_path_fileUSINGuv_fullnameCHANGINGcv_filenamecvpathname.
DATA:
lt_matchTYPEmatch_result_tab,ls_matchLIKELINEOFlt_match.
FINDALLOCCURRENCESOF'\'INuv_fullnameINCHARACTERMO
DERESULTSltmatch
IFNOTltmatch
IS
INITIAL.
LOOPATlt_
match
INTOls_match.
ENDLOO.P
ADD1TO
lsmatch-offset.
cv_pathname
=uv_
fullname(ls_match-offset).
cvfilename
=uv
fullname+lsmatch
-offset.
ENDIF.
ENDFOR.M
*&
*
*&FormFRM_READ_FILE
*&
*
*text
*
*
-->
p1
text
*
<--
p2
text
FORMfrm_read_file
DATA:
lvfileTYPEstring
VALUE'C:
\XQJH1'
DATA:
lvpathTYPEstring.
DATA:
lvresultTYPEabapbool.
DATA:
lvrcTYPEi.
DATA:
lvlineTYPEi.
DATA:
lvoriginalpathTYPE
bapidocaux-filename,
lv_orfilename
TYPEbapi_doc_aux-filename.
DATA:
lsdocumentfileTYPE
bapidocfiles2,
ls_returnTYPEbapiret2
lv_result=cl_gui_frontend_services=>directory_exist(directory=lv_file).
IFlvresult<>'X'.
CALLMETHODclguifrontendservices
=>directorycreate
EXPORTING
directory
=lvfile
CHANGING
rc=lvr
c
EXCEPTIONS
directorycreatefailed
=1
cntl_error
=2
errornogui
directory_access_denied=
4
directoryalreadyexists
=5
pathnotfound
=6
unknown_error
=7
not_supported_by_gui=8
wrong_parameter=9
OTHERS=10.IFlv_rc<>0ORsy-subrc<>0.
MESSAGEe001WITH'文件路径拒绝访问'.
ENDIF.
ENDIF.
GETCURSORLINE
lvline.
READTABLEit_file
INTO
wa_file
INDEXlv_line.
CONCATENATElv_file'\'INTOlv_originalpath.lv_orfilename=wa_file-dname.
CALLFUNCTION'ZBAPI_DOCUMENT_CHECKOUTVIEW2'EXPORTING
documenttype
=condokar
documentnumber
=wafile-docid
documentpart
='000'
documentversion
='00'
documentfile
=lsdocumentfile
originalpath
=lv_originalpath
orfilename
=lvorfilename
IMPORTING
return
=ls_return.
IFls_returnISNOT
INITIAL.
MESSAGEIDls_return-idTYPEls_return-typeNUMBERls_ret
urn-number
WITHlsreturn-messagev1lsreturn-messagev2lsreturn
-message_v3ls_return-message_v4.
ENDIF.
CONCATENATElv_originalpath
lv_orfilename
INTO
lv_path.
CALLMETHODcl_gui_frontend_
services=>execute
EXPORTING
document
=
lvpath
synchronous
='X'
EXCEPTIONS
cntlerror
=1
errornogui
=2
badparameter
=3
file_not_found
=
4
pathnotfound
=
5
fileextensionunknown
=6
errorexecutefailed
=7
synchronousfailed
=8
not_supported_by_gui
=9
OTHERS
=
10.
IFsy-subrc<>0.
*Implementsuitableerror
handlinghere
MESSAGEs001WITH'打开文档失败'
DISPLAY
LIKE'E'.
ENDIF.
ENDFOR.M"FRM_READ_FILE
*&
*-->p1text
*<--p2text
*
FORMfrm_down_file
DATA:
lvfilenameTYPEstring.
DATA:
lvpath
TYPEstring.
DATA:
lvpathc
(100)TYPE
c.
DATA:
lvfullpath
TYPEstring.
DATA:
lvresult
TYPEabapbool.
DATA:
lv_rcTYPEi.
DATA:
lv_line
TYPEi.
DATA:
lvoriginalpath
TYPE
bapidocaux-filename,
lv_orfilename
TYPEbapi_doc_aux-filename.
DATA:
lsdocumentfile
TYPE
bapidocfiles2,
ls_returnTYPEbapiret2
GETCURSORLINE
lvline.
READTABLEit_file
INTO
wa_file
INDEXlv_line.
lv_filename=wa_file-dname.
CALLMETHODcl_gui_frontend_services=>file_save_dialogEXPORTING
windowtitle='选择位置
*
defaultextension=
defaultfilename
=
lvfilename
*
with_encoding
=
*
filefilter
=
*
initialdirectory=
*
promptonoverwrite=
'X'
CHANGING
filename
=lv_filename
path
=lvpath
fullpath
lv_fullpath
EXCEPTIONS
cntlerror
=1
errornogui
=2
notsupportedbygui
=
3
invaliddefaultfilename
=4
OTHERS
=5.
IFsy
-subrc<>0.
EXIT.
ENDIF.
lv_result=cl_gui_frontend_services=>directory_exist(directory=lvpath).
IFlv_result<>'X'.MESSAGEe001WITH'文件路径不存在'.
ENDIF.
lvoriginalpath
=lvpath.
lvorfilename
=lvfilename.
CALLFUNCTION'ZBAPI_DOCUMENT_CHECKOUTVIEW2'EXPORTING
documenttype
=condokar
documentnumber
=wafile-docid
documentpart
='000'
documentversion
='00'
documentfile
=ls_documentfile
originalpath
=lvoriginalpath
orfilename
=lvorfilename
IMPORTING
return=ls_return
IFls_returnISNOTINITIAL.
MESSAGEIDls_return-idTYPEls_return-typeNUMBERls_return-number
WITHls_return-message_v1ls_return-message_v2ls_return-message_v3ls_return-message_v4.
ELSE.
MESSAGEs001WITH'下载成功'.
ENDIF.
ENDFOR.M
"FRMDOWNF
ILE
*&
*
*&
Form
FRMDELETEFILE
*&
text
*-->p1text
*<--p2text
*
*
FORMfrm_delete_file.
DATA:
lv_lineTYPEi,
ls_returnTYPEbapiret2.
titlebar
='消息提示'
textquestion
='是否删除文档'
CALLFUNCTION'POPUP_TO_CONFIRM'
textbutton1
='是'
textbutton2
='否'
defaultbutton
='1'
displaycancelbutton
startcolumn
=25
startrow=
6
popup_type
IMPORTING
'ICON_MESSAGE_ERROR'
answer
lv_answer
EXCEPTIONS
text_not_found
OTHERS
2.
IFlvanswer<>'1'.
MESSAGEs001WITH'用户取消操作'DISPLAYLIKE'E'.
EXIT.
GETCURSORLINE
lvline.
READTABLEit_file
INTO
wa_file
INDEXlv_line.
ENDIF.
documenttype
=con
dokar
documentnumber
=wafile
-docid
documentpart
='000'
documentversion
=