Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 10

Basic Setup

Create a WebDynpro program with one view.

Open the COMPONENTCONTROLLER context and Add two nodes: FILE_UPLOAD and
FILE_DOWNLOAD

Note: All attributes are string type except:

FCONTENTS=XSTRING
FDOCTP=SO_OBJ_TP
FDOCYR=SO_OBJ_YR
FDOCNO=SO_OBJ_NO

In the View, map the two nodes from above to the views context.

On the View Layout, add a FileUpload control, a Table control, and a button for upload and delete like the
following:

Column Type Properties:

Column Size Properties:

Column Download Link Properties:

FileUpload Properties:

Table Properties:

Listing Attachments

METHOD wddomodifyview .
DATA: lo_nd_file_download TYPE REF TO if_wd_context_node, lt_file_downloa
d TYPE wd_this->elements_file_download.
DATA: ls_lporb TYPE sibflporb, lv_objtyp TYPE so_obj_tp, lt_bapirettab TY
PE bapirettab.
DATA: t_files TYPE z_tt_sood, wa_files LIKE LINE OF t_files, mimetype TYP
E w3conttype.
DATA: wa_lt_file_download LIKE LINE OF lt_file_download.
IF first_time EQ 'X'.
lv_objtyp = 'EXT'.
ls_lporb-typeid = 'BUS1065'.
ls_lporb-instid = '00000111'.
CALL METHOD zcl_oh_my_gos_new=>gos_get_file_list
EXPORTING
is_lporb
= ls_lporb
IMPORTING
t_attachments = t_files
rt_messages
= lt_bapirettab.
lo_nd_file_download = wd_context->get_child_node( name = wd_this>wdctx_file_download ).
LOOP AT t_files INTO wa_files.
CALL METHOD zcl_oh_my_gos_new=>gos_get_file_xstring
EXPORTING
folder_region = 'B'
doctp
= wa_files-objtp
docyr
= wa_files-objyr
docno
= wa_files-objno
IMPORTING

o_content_hex = wa_lt_file_download-fcontents
o_mimetype
= mimetype
rt_messages
= lt_bapirettab.
CONCATENATE wa_files-objdes '.' wa_files-acnam INTO wa_lt_file_downlo
ad-fname.
wa_lt_file_download-ftype = wa_files-acnam.
wa_lt_file_download-fsize = wa_files-objlen.
wa_lt_file_download-fmimetype = mimetype.
wa_lt_file_download-fdoctp = wa_files-objtp.
wa_lt_file_download-fdocyr = wa_files-objyr.
wa_lt_file_download-fdocno = wa_files-objno.
APPEND wa_lt_file_download TO lt_file_download.
ENDLOOP.
lo_nd_file_download->bind_table( new_items = lt_file_download set_initi
al_elements = abap_true ).
ENDIF.
ENDMETHOD.

Uploading Attachments, Downloading Attachments, Deleting


Attachments

METHOD onactionbeginupload .
DATA: lo_nd_file_upload TYPE REF TO if_wd_context_node, lo_el_file_upload
TYPE REF TO if_wd_context_element.
DATA: lo_nd_file_download TYPE REF TO if_wd_context_node, lt_file_downloa
d TYPE wd_this->elements_file_download.
DATA: ls_file_upload TYPE wd_this->element_file_upload, it_content TYPE S
TANDARD TABLE OF soli.
DATA: l_file_name TYPE avwctxcont, wa_lt_file_download LIKE LINE OF lt_fi
le_download.
DATA: ls_lporb TYPE sibflporb, lv_objtyp TYPE so_obj_tp, lt_bapirettab TY
PE bapirettab.
DATA: t_files TYPE z_tt_sood, wa_files LIKE LINE OF t_files, mimetype TYP
E w3conttype.
lo_nd_file_upload = wd_context->get_child_node( name = wd_this>wdctx_file_upload ).
lo_el_file_upload = lo_nd_file_upload->get_element( ).
IF NOT ( lo_el_file_upload IS INITIAL ).
lo_el_file_upload->get_static_attributes( IMPORTING static_attributes =
ls_file_upload ).
IF NOT ( ls_file_upload IS INITIAL ).
lv_objtyp = 'EXT'.
ls_lporb-typeid = 'BUS1065'.
ls_lporb-instid = '00000111'.
CALL METHOD zcl_oh_my_gos_new=>gos_attach_file_xstring
EXPORTING
iv_name
= ls_file_upload-fname

iv_content_hex = ls_file_upload-fcontents
is_lporb
= ls_lporb
iv_objtp
= lv_objtyp
RECEIVING
rt_messages
= lt_bapirettab.
CALL METHOD zcl_oh_my_gos_new=>gos_get_file_list
EXPORTING
is_lporb
= ls_lporb
IMPORTING
t_attachments = t_files
rt_messages
= lt_bapirettab.
lo_nd_file_download = wd_context->get_child_node( name = wd_this>wdctx_file_download ).
LOOP AT t_files INTO wa_files.
CALL METHOD zcl_oh_my_gos_new=>gos_get_file_xstring
EXPORTING
folder_region = 'B'
doctp
= wa_files-objtp
docyr
= wa_files-objyr
docno
= wa_files-objno
IMPORTING
o_content_hex = wa_lt_file_download-fcontents
o_mimetype
= mimetype
rt_messages
= lt_bapirettab.
CONCATENATE wa_files-objdes '.' wa_files-acnam INTO wa_lt_file_down
load-fname.
wa_lt_file_download-ftype = wa_files-acnam.
wa_lt_file_download-fsize = wa_files-objlen.
wa_lt_file_download-fmimetype = mimetype.
wa_lt_file_download-fdoctp = wa_files-objtp.
wa_lt_file_download-fdocyr = wa_files-objyr.
wa_lt_file_download-fdocno = wa_files-objno.
APPEND wa_lt_file_download TO lt_file_download.
ENDLOOP.
lo_nd_file_download->bind_table( new_items = lt_file_download set_ini
tial_elements = abap_true ).
*
Avoid Duplication - clear out the upload information
CLEAR ls_file_upload.
lo_el_file_upload->set_static_attributes( static_attributes = ls_file
_upload ).
ENDIF.
ENDIF.
ENDMETHOD.
"onactionbeginupload
METHOD onactiondelete .
DATA: lo_nd_file_download TYPE REF TO if_wd_context_node.
DATA: lo_el_file_download TYPE REF TO if_wd_context_element.
DATA: ls_file_download TYPE wd_this->element_file_download.
DATA: ls_lporb TYPE sibflporb, lt_bapirettab TYPE bapirettab.
DATA: lo_nd_file_upload TYPE REF TO if_wd_context_node.
DATA: lo_el_file_upload TYPE REF TO if_wd_context_element.

DATA: t_files TYPE z_tt_sood, wa_files LIKE LINE OF t_files, mimetype TYP
E w3conttype.
DATA: lt_file_download TYPE wd_this->elements_file_download.
DATA: l_file_name TYPE avwctxcont, wa_lt_file_download LIKE LINE OF lt_fi
le_download.
lo_nd_file_download = wd_context->get_child_node( name = wd_this>wdctx_file_download ).
lo_el_file_download = lo_nd_file_download->get_element( ).
IF NOT ( lo_el_file_download IS INITIAL ).
lo_el_file_download->get_static_attributes( IMPORTING static_attributes
= ls_file_download ).
ls_lporb-typeid = 'BUS1065'.
ls_lporb-instid = '00000111'.
CALL METHOD zcl_oh_my_gos_new=>gos_delete_file
EXPORTING
folder_region = 'B'
doctp
= ls_file_download-fdoctp
docyr
= ls_file_download-fdocyr
docno
= ls_file_download-fdocno
is_lporb
= ls_lporb
IMPORTING
rt_messages
= lt_bapirettab.
*
Refresh File List
CALL METHOD zcl_oh_my_gos_new=>gos_get_file_list
EXPORTING
is_lporb
= ls_lporb
IMPORTING
t_attachments = t_files
rt_messages
= lt_bapirettab.
lo_nd_file_download = wd_context->get_child_node( name = wd_this>wdctx_file_download ).
LOOP AT t_files INTO wa_files.
CALL METHOD zcl_oh_my_gos_new=>gos_get_file_xstring
EXPORTING
folder_region = 'B'
doctp
= wa_files-objtp
docyr
= wa_files-objyr
docno
= wa_files-objno
IMPORTING
o_content_hex = wa_lt_file_download-fcontents
o_mimetype
= mimetype
rt_messages
= lt_bapirettab.
CONCATENATE wa_files-objdes '.' wa_files-acnam INTO wa_lt_file_downlo
ad-fname.
wa_lt_file_download-ftype = wa_files-acnam.
wa_lt_file_download-fsize = wa_files-objlen.
wa_lt_file_download-fmimetype = mimetype.
wa_lt_file_download-fdoctp = wa_files-objtp.
wa_lt_file_download-fdocyr = wa_files-objyr.
wa_lt_file_download-fdocno = wa_files-objno.
APPEND wa_lt_file_download TO lt_file_download.

ENDLOOP.
lo_nd_file_download->bind_table( new_items = lt_file_download set_initi
al_elements = abap_true ).
ENDIF.
ENDMETHOD.
"onactiondelete

RESULT

You might also like