Hello Gurus
A, trying to upload pdf file from webdynpro to DMS...somehow i can able to upload it to DMS..i can able to view the uploaded pdf file in DMS..but i cant able to open it..it says u cant open error message..
Here is my code :
DATA lo_nd_n_upload TYPE REF TO if_wd_context_node.
DATA lo_el_n_upload TYPE REF TO if_wd_context_element.
DATA lt_n_upload TYPE TABLE OF wd_this->element_n_upload. " Internal Table
DATA ls_n_upload TYPE wd_this->element_n_upload. " Work Area
DATA lv_fileupload TYPE wd_this->element_n_upload-file_contents.
TYPES: BEGIN OF zst_ts_raw_line,
line(2550) TYPE x,
END OF zst_ts_raw_line.
DATA: ls_draw TYPE draw,
ls_api_ctrl TYPE cvapi_api_control,
ls_message TYPE messages,
lv_documentnumber TYPE draw-doknr,
lv_storage_cat TYPE cv_storage_cat,
lv_size TYPE i,
lt_bindata TYPE STANDARD TABLE OF zst_ts_raw_line, "STANDARD TABLE OF zst_ts_raw_line,
ls_bindata TYPE sdokcntbin, "SOLISTI1," sdokcntbin,
ls_drao TYPE drao,
lt_drao TYPE TABLE OF drao,
lt_files TYPE cvapi_tbl_doc_files,
ls_files TYPE cvapi_doc_file,
l_string TYPE string,
lv_dokar TYPE draw-dokar,
lv_dokvr TYPE draw-dokvr
.
DATA: it_drat TYPE TABLE OF dms_db_drat,
wa_drat TYPE dms_db_drat.
* navigate from <CONTEXT> to <N_UPLOAD> via lead selection
lo_nd_n_upload = wd_context->get_child_node( name = wd_this->wdctx_n_upload ).
* get element via lead selection
lo_el_n_upload = lo_nd_n_upload->get_element( ).
* @TODO handle not set lead selection
IF lo_el_n_upload IS NOT INITIAL.
* get single attribute
lo_el_n_upload->get_attribute(
EXPORTING
name = `FILE_CONTENTS`
IMPORTING
value = lv_fileupload ).
* get all declared attributes
lo_el_n_upload->get_static_attributes(
IMPORTING
static_attributes = ls_n_upload ).
IF ls_n_upload IS NOT INITIAL.
ls_draw-dokar = 'TS2'.
ls_draw-dokvr = 'AA'.
ls_draw-doktl = '000'.
ls_draw-doknr = '000020000491-I'.
ls_draw-dwnam = sy-uname.
ls_draw-begru = '1000'.
lv_storage_cat = 'DMS_C1_ST'.
ls_api_ctrl-tcode = 'CV01N'.
wa_drat-dktxt = 'Description'.
APPEND wa_drat TO it_drat.
* For Generate Document Number in DMS
CALL FUNCTION 'CVAPI_DOC_CREATE'
EXPORTING
ps_draw = ls_draw " wa_documentfiles
ps_api_control = ls_api_ctrl
IMPORTING
psx_message = ls_message
pfx_doknr = lv_documentnumber
TABLES
pt_drat_x = it_drat
.
IF sy-subrc NE 0.
WRITE: 'no number'.
ENDIF.
IF ls_message-msg_type CA 'EA'.
ELSE.
ls_draw-doknr = lv_documentnumber.
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
buffer = lv_fileupload
IMPORTING
output_length = lv_size
TABLES
binary_tab = lt_bindata.
LOOP AT lt_bindata INTO ls_bindata.
CLEAR ls_drao.
ls_drao-orblk = ls_bindata-line.
ls_drao-orln = lv_size.
ls_drao-dokar = ls_draw-dokar.
ls_drao-doknr = lv_documentnumber.
ls_drao-dokvr = ls_draw-dokvr.
ls_drao-doktl = ls_draw-doktl.
ls_drao-appnr = '1 '.
APPEND ls_drao TO lt_drao.
ENDLOOP.
* For Application Determined on the basis of file extension.
CALL FUNCTION 'CV120_DOC_GET_APPL'
EXPORTING
pf_file = ls_n_upload-file_name " 'C:\Documents and Settings\AUTH.PDF'
IMPORTING
pfx_dappl = ls_files-dappl
.
ls_files-appnr = '1'.
ls_files-filename = ls_n_upload-file_name. " 'C:\Documents and Settings\AUTH.PDF'
ls_files-updateflag = 'I'.
ls_files-langu = sy-langu.
ls_files-storage_cat = 'DMS_C1_ST'.
ls_files-description = 'Doc Description'.
APPEND ls_files TO lt_files.
* For Execute external Commit when using BAPIs
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
* Document Check.
CALL FUNCTION 'CVAPI_DOC_CHECKIN'
EXPORTING
pf_dokar = ls_draw-dokar
pf_doknr = lv_documentnumber
pf_dokvr = ls_draw-dokvr
pf_doktl = ls_draw-doktl
* PS_DOC_STATUS =
pf_ftp_dest = 'SAPFTPA'
pf_http_dest = 'SAPHTTPA'
* PF_HOSTNAME = ' '
ps_api_control = ls_api_ctrl
* PF_REPLACE = ' '
pf_content_provide = 'TBL'
IMPORTING
psx_message = ls_message
TABLES
pt_files_x = lt_files
* PT_COMP_X =
pt_content = lt_drao.
COMMIT WORK.
ENDIF.