sapabapdms文档管理开发.docx
- 文档编号:14289313
- 上传时间:2023-06-22
- 格式:DOCX
- 页数:16
- 大小:102.49KB
sapabapdms文档管理开发.docx
《sapabapdms文档管理开发.docx》由会员分享,可在线阅读,更多相关《sapabapdms文档管理开发.docx(16页珍藏版)》请在冰点文库上搜索。
sapabapdms文档管理开发
SAPABAPDMS文档开发
1.用到的BAPI:
BAPI_DOCUMENT_CREATE2,ZBAPI_DOCUMENT_CHECKOUTVIEW2,BAPI_DOCUMENT_DELETE_DIRECT
2.其中ZBAPI_DOCUMENT_CHECKOUTVIEW2是从标准的
BAPI_DOCUMENT_CHECKOUTVIEW2改写(标准的在导出文档时,会自定义一个文档名称);改动代码如下:
a)新增函数组ZMM_CVBAPI
b)将LCVBAPITOP的定义对象拷贝到LZMM_CVBAPITOP
c)在LZMM_CVBAPITOP最后添加如下:
INCLUDElcvbapif01.
INCLUDElcvbapif02.
INCLUDElcvbapif03.
INCLUDElcvbapif04.
INCLUDElcvbapif05.
INCLUDElcvbapif06.
INCLUDElcvbapif07.
d)拷贝函数BAPI_DOCUMENT_CHECKOUTVIEW2到新ZBAPI_DOCUMENT_CHECKOUTVIEW2,添加IMPORT参ORFILENAME,并修改代码。
3.以下为参考代码:
*文档类型
CONSTANTS:
con_dokar(3)VALUE'ZQX'.
*存储类别
CONSTANTS:
con_storage_cat(10)VALUE'DMS_C1_ST'.
FORMfrm_creat_file.
DATA:
lv_rcTYPEi,
lt_filetableTYPEfiletableWITHHEADERLINE.
DATA:
lv_filenameTYPEfilep,
lv_pathTYPEfilep.
DATA:
lv_docnumberTYPEbapi_doc_aux-docnumber.
DATA:
ls_documentdataTYPEbapi_doc_draw2,
ls_documentdataxTYPEbapi_doc_drawx2,"bapi_doc_draw2x,
lt_objectlinksTYPETABLEOFbapi_doc_dradWITHHEADERLINE,
lt_documentfilesTYPETABLEOFbapi_doc_files2WITHHEADERLINE,
ls_returnTYPEbapiret2.
DATA:
t_tdwpTYPETABLEOFtdwpWITHHEADERLINE.
DATA:
nameTYPEdraw-filep,
ext(64)TYPEc.
CALLMETHODcl_gui_frontend_services=>file_open_dialog
EXPORTING
window_title='选择文件'
default_extension='*'
CHANGING
file_table=lt_filetable[]
rc=lv_rc
EXCEPTIONS
file_open_dialog_failed=1
cntl_error=2
error_no_gui=3
not_supported_by_gui=4
OTHERS=9.
IFlt_filetable[]ISINITIAL.
EXIT.
ENDIF.
READTABLElt_filetableINDEX1.
*解析路径文件
PERFORMfrm_split_path_fileUSINGlt_filetable-filename
CHANGINGlv_filenamelv_path.
name=lv_filename.
WHILEnameCA'.'.
SPLITnameAT'.'INTOextname.
ENDWHILE.
CONCATENATE'.'nameINTOname.
TRANSLATEnameTOLOWERCASE.
CALLFUNCTION'CV120_DOC_GET_APPL'
EXPORTING
pf_file=name
TABLES
ptx_tdwp=t_tdwp.
IFt_tdwp[]ISINITIAL.
MESSAGEs001WITH'不支持此类型文件'.
ENDIF.
READTABLEt_tdwpINDEX1.
ls_documentdata-documenttype=con_dokar.
ls_documentdata-documentversion='00'.
ls_documentdata-documentpart='000'.
ls_documentdata-description='凭证描述'.
ls_documentdata-username=sy-uname.
*ls_documentdata-ecnumber='123'.
READTABLEt_tdwpINDEX1.
lt_documentfiles-documenttype='ZQX'.
lt_documentfiles-storagecategory=con_storage_cat.
lt_documentfiles-wsapplication=t_tdwp-dappl.
lt_documentfiles-docpath=lv_path.
lt_documentfiles-docfile=lv_filename.
lt_documentfiles-checkedin='X'.
APPENDlt_documentfiles.
CALLFUNCTION'BAPI_DOCUMENT_CREATE2'
EXPORTING
documentdata=ls_documentdata
IMPORTING
documentnumber=lv_docnumber
return=ls_return
TABLES
objectlinks=lt_objectlinks
documentfiles=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_COMMIT'.
MESSAGEs001WITH'上传成功'.
ENDIF.
wa_file-doc_id=lv_docnumber.
wa_file-dname=lv_filename.
wa_file-yk_planno=wa_xqjh_h-yk_planno.
wa_file-dtype=name.
wa_file-credat=sy-datum.
wa_file-ctime=sy-uzeit.
wa_file-cname=sy-uname.
APPENDwa_fileTOit_file.
IFwa_xqjh_h-yk_plannoISNOTINITIAL.
MODIFYztmm_xqjh_fileFROMwa_file.
COMMITWORKANDWAIT.
ENDIF.
ENDFORM."FRM_UPLOAD_FILE
*&---------------------------------------------------------------------*
*&Formfrm_split_path_file
*&---------------------------------------------------------------------*
*text拆分路径和文档名
*----------------------------------------------------------------------*
*-->p1text
*<--p2text
*----------------------------------------------------------------------*
FORMfrm_split_path_fileUSINGuv_fullnameCHANGINGcv_filenamecv_pathname.
DATA:
lt_matchTYPEmatch_result_tab,
ls_matchLIKELINEOFlt_match.
FINDALLOCCURRENCESOF'\'INuv_fullnameINCHARACTERMODERESULTSlt_match.
IFNOTlt_matchISINITIAL.
LOOPATlt_matchINTOls_match.
ENDLOOP.
ADD1TOls_match-offset.
cv_pathname=uv_fullname(ls_match-offset).
cv_filename=uv_fullname+ls_match-offset.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*&FormFRM_READ_FILE
*&---------------------------------------------------------------------*
*text
*----------------------------------------------------------------------*
*-->p1text
*<--p2text
*----------------------------------------------------------------------*
FORMfrm_read_file.
DATA:
lv_fileTYPEstringVALUE'C:
\XQJH1'.
DATA:
lv_pathTYPEstring.
DATA:
lv_resultTYPEabap_bool.
DATA:
lv_rcTYPEi.
DATA:
lv_lineTYPEi.
DATA:
lv_originalpathTYPEbapi_doc_aux-filename,
lv_orfilenameTYPEbapi_doc_aux-filename.
DATA:
ls_documentfileTYPEbapi_doc_files2,
ls_returnTYPEbapiret2.
lv_result=cl_gui_frontend_services=>directory_exist(directory=lv_file).
IFlv_result<>'X'.
CALLMETHODcl_gui_frontend_services=>directory_create
EXPORTING
directory=lv_file
CHANGING
rc=lv_rc
EXCEPTIONS
directory_create_failed=1
cntl_error=2
error_no_gui=3
directory_access_denied=4
directory_already_exists=5
path_not_found=6
unknown_error=7
not_supported_by_gui=8
wrong_parameter=9
OTHERS=10.
IFlv_rc<>0ORsy-subrc<>0.
MESSAGEe001WITH'文件路径拒绝访问'.
ENDIF.
ENDIF.
GETCURSORLINElv_line.
READTABLEit_fileINTOwa_fileINDEXlv_line.
CONCATENATElv_file'\'INTOlv_originalpath.
lv_orfilename=wa_file-dname.
CALLFUNCTION'ZBAPI_DOCUMENT_CHECKOUTVIEW2'
EXPORTING
documenttype=con_dokar
documentnumber=wa_file-doc_id
documentpart='000'
documentversion='00'
documentfile=ls_documentfile
originalpath=lv_originalpath
orfilename=lv_orfilename
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.
ENDIF.
CONCATENATElv_originalpathlv_orfilenameINTOlv_path.
CALLMETHODcl_gui_frontend_services=>execute
EXPORTING
document=lv_path
synchronous='X'
EXCEPTIONS
cntl_error=1
error_no_gui=2
bad_parameter=3
file_not_found=4
path_not_found=5
file_extension_unknown=6
error_execute_failed=7
synchronous_failed=8
not_supported_by_gui=9
OTHERS=10.
IFsy-subrc<>0.
*Implementsuitableerrorhandlinghere
MESSAGEs001WITH'打开文档失败'DISPLAYLIKE'E'.
ENDIF.
ENDFORM."FRM_READ_FILE
*&---------------------------------------------------------------------*
*&FormFRM_DOWN_FILE
*&---------------------------------------------------------------------*
*text
*----------------------------------------------------------------------*
*-->p1text
*<--p2text
*----------------------------------------------------------------------*
FORMfrm_down_file.
DATA:
lv_filenameTYPEstring.
DATA:
lv_pathTYPEstring.
DATA:
lv_path_c(100)TYPEc.
DATA:
lv_fullpathTYPEstring.
DATA:
lv_resultTYPEabap_bool.
DATA:
lv_rcTYPEi.
DATA:
lv_lineTYPEi.
DATA:
lv_originalpathTYPEbapi_doc_aux-filename,
lv_orfilenameTYPEbapi_doc_aux-filename.
DATA:
ls_documentfileTYPEbapi_doc_files2,
ls_returnTYPEbapiret2.
GETCURSORLINElv_line.
READTABLEit_fileINTOwa_fileINDEXlv_line.
lv_filename=wa_file-dname.
CALLMETHODcl_gui_frontend_services=>file_save_dialog
EXPORTING
window_title='选择位置'
*default_extension=
default_file_name=lv_filename
*with_encoding=
*file_filter=
*initial_directory=
*prompt_on_overwrite='X'
CHANGING
filename=lv_filename
path=lv_path
fullpath=lv_fullpath
EXCEPTIONS
cntl_error=1
error_no_gui=2
not_supported_by_gui=3
invalid_default_file_name=4
OTHERS=5.
IFsy-subrc<>0.
EXIT.
ENDIF.
lv_result=cl_gui_frontend_services=>directory_exist(directory=lv_path).
IFlv_result<>'X'.
MESSAGEe001WITH'文件路径不存在'.
ENDIF.
lv_originalpath=lv_path.
lv_orfilename=lv_filename.
CALLFUNCTION'ZBAPI_DOCUMENT_CHECKOUTVIEW2'
EXPORTING
documenttype=con_dokar
documentnumber=wa_file-doc_id
documentpart='000'
documentversion='00'
documentfile=ls_documentfile
originalpath=lv_originalpath
orfilename=lv_orfilename
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.
ENDFORM."FRM_DOWN_FILE
*&---------------------------------------------------------------------*
*&FormFRM_DELETE_FILE
*&---------------------------------------------------------------------*
*text
*----------------------------------------------------------------------*
*-->p1text
*<--p2text
*----------------------------------------------------------------------*
FORMfrm_delete_file.
DATA:
lv_lineTYPEi,
ls_returnTYPEbapiret2.
CALLFUNCTION'POPUP_TO_CONFIRM'
EXPORTING
titlebar='消息提示'
text_question='是否删除文档'
text_button_1='是'
text_button_2='否'
default_button='1'
display_cancel_button=''
start_column=25
start_row=6
*popup_type='ICON_MESSAGE_ERROR'
IMPORTING
answer=lv_answer
EXCEPTIONS
text_not_found=1
OTHERS=2.
IFlv_answer<>'1'.
MESSAGEs001WITH'用户取消操作'DISPLAYLIKE'E'.
EXIT.
ENDIF.
GETCURSORLINElv_line.
READTABLEit_fileINTOwa_fileINDEXlv_line.
CALLFUNCTION'BAPI_DOCUMENT_ENQUEUE'
EXPORTING
documenttype=con_dokar
documentnumber=wa_file-doc_id
documentpart='000'
documentversion='00'
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.
ENDIF.
CALLFUNCTION'BAPI_DOCUMENT_DELETE_DIRECT'
EXPORTING
documenttype=con_dokar
documentnumber=wa_file-doc_id
documentpart='000'
documentversion='00'
IMPORTING
return=ls_return.
CALLFUNCTION'BAPI_DOCUMENT_DEQUEUE'
EXPORTING
documenttype=con_dokar
documentnumber=wa_file-doc_id
documentpart='000'
documentversion='00'.
IFls_return-type<>'E'.
CALLFUNCTION'BAPI_TRANSACTION_COMMIT'.
DELETEit_fileINDEXlv_line.
DELETEFROMztmm_xqjh_fileWHEREdoc_id=wa_file-doc_id.
MESSAGEs001WITH'删除成功'.
ELSE.
MESSAGEIDls_return-idTYPEls_return-typeNUMBERls_return-number
WITHls_return-message_v1ls_return-message_v2ls_return-message_v3ls_return-message_v4.
END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- sapabapdms 文档 管理 开发