Как вариант, если выбора файла из нескольких требуется не в диалоге, а программно:
Code:
DATA: ls_draw TYPE draw.
ls_draw-dokar = i_dokar.
ls_draw-doknr = i_doknr.
ls_draw-doktl = i_doktl.
ls_draw-dokvr = i_dokvr.
DATA: lt_documentfiles TYPE TABLE OF bapi_doc_files2
, ls_documentdata TYPE bapi_doc_draw2
.
FIELD-SYMBOLS: <documentfiles> TYPE bapi_doc_files2.
CALL FUNCTION 'BAPI_DOCUMENT_GETDETAIL2'
EXPORTING
documenttype = ls_draw-dokar
documentnumber = ls_draw-doknr
documentpart = ls_draw-doktl
documentversion = ls_draw-dokvr
IMPORTING
documentdata = ls_documentdata
* RETURN =
TABLES
documentfiles = lt_documentfiles.
DATA: ls_doc_file TYPE dms_doc_file
, ls_cout_def TYPE dms_checkout_def
, ls_frontend TYPE dms_frontend_data
, ls_phio TYPE dms_phio
.
DATA: l_file TYPE draw-filep
, l_tabix TYPE i.
LOOP AT lt_documentfiles ASSIGNING <documentfiles>.
l_tabix = sy-tabix.
CALL FUNCTION 'CV120_SPLIT_PATH'
EXPORTING
pf_path = <documentfiles>-docfile
IMPORTING
pfx_file = l_file.
CONCATENATE i_folder '\' l_file INTO ls_doc_file-filename.
ls_doc_file-dappl = <documentfiles>-wsapplication.
ls_doc_file-langu = sy-langu.
ls_cout_def-kpro_use = 'X'.
ls_cout_def-comp_get = 'X'.
ls_frontend-frontend_type = '01'.
ls_frontend-hostname = 'DEFAULT'.
ls_frontend-winsys = 'WN32'.
ls_frontend-platform = '0'.
ls_phio-storage_cat = <documentfiles>-storagecategory.
ls_phio-lo_objid = <documentfiles>-application_id.
ls_phio-ph_objid = <documentfiles>-file_id.
ls_phio-langu = sy-langu.
ls_phio-active_version = 'X'.
ls_phio-delete_flag = 'X'.
ls_phio-protected = 'X'.
ls_phio-default_langu = 'X'.
CALL FUNCTION 'CV120_DOC_CHECKOUT_VIEW'
EXPORTING
ps_cout_def = ls_cout_def
pf_tcode = 'CV02'
ps_doc_file = ls_doc_file
ps_draw = ls_draw
ps_phio = ls_phio
ps_frontend = ls_frontend
EXCEPTIONS
error = 1
OTHERS = 2.
CALL FUNCTION 'CV120_START_APPLICATION'
EXPORTING
pf_dappl = <documentfiles>-wsapplication
pf_file = <documentfiles>-docfile
pf_check_file = 'X'
ps_draw = ls_draw
pf_appnr = '1'.
ENDLOOP.