on 11-05-2008 10:28 AM
Hi
Please can anybody tell me how to add an attachment to the smartform.
There is a std BSP application which is calling the smartform in portal.
The requirement is that we have to bring the attachment to that smartform.
Thanks in advance,
Sushmitha
Edited by: Sushmitha S on Nov 10, 2008 3:58 PM
hi,
for adding an attachement for smartforms please refer this.
function z_gos_pdf_attachment_create.
*"----
-
""Lokale interface:
*" IMPORTING
*" VALUE(IC_OBJTYP) TYPE SWO_OBJTYP
*" VALUE(IC_TYPEID) TYPE SWO_TYPEID
*" VALUE(ITB_OTFDATA) TYPE TSFOTF
*" VALUE(IC_FILENAME) TYPE LOCALFILE
*" EXPORTING
*" VALUE(ES_RETURN) TYPE BAPIRET2
*"----
-
*&----
*
*& Function Z_GOS_PDF_ATTACHMENT *
*&----
*
*& Purpose : Saving the OTF-output of a SmartForm as a *
*& PDF-attachment using Generic Object Services *
*&----
*
*& Name : Jean-Marc Maillé - Uphantis B.V. *
*& Date : Juni 2007 *
*&----
*
data:
ltb_otfdata type tsfotf,
ltb_objcont type soli_tab.
data:
ls_folder_id type soodk,
ls_attach_id type soodk.
data:
lc_objtyp type swo_objtyp,
lc_typeid type swo_typeid,
lc_objlen type so_obj_len,
lc_filename type localfile.
clear es_return.
Importparameters to local variables
ltb_otfdata[] = itb_otfdata[].
lc_objtyp = ic_objtyp.
lc_typeid = ic_typeid.
lc_filename = ic_filename.
Convert OTF to PDF in correct format
perform convert_otf
using ltb_otfdata
changing ltb_objcont
lc_objlen
es_return.
check es_return is initial.
Get folder ID
perform get_folder_id
changing ls_folder_id
es_return.
check es_return is initial.
Create attachment (in database)
perform create_attachment
using ls_folder_id
ltb_objcont
lc_objlen
lc_filename
changing ls_attach_id
es_return.
check es_return is initial.
Create link between object and attachment
perform create_link
using ls_folder_id
ls_attach_id
lc_objtyp
lc_typeid
changing es_return.
if es_return is initial.
es_return-type = 'S'.
es_return-id = 'SO'.
es_return-number = '182'.
endif.
endfunction.function-pool z_gos_pdf_attachment. "MESSAGE-ID ..
*----
-
Constants*-----------------------------------------------------------------------
constants:
cc_textpool_repid type syrepid value 'SAPFSSO3',
cc_id_textsymbol type textpoolid value 'I',
cc_key_message type textpoolky value '001',
cc_objtyp_message type swo_objtyp value 'MESSAGE',
cc_doctp_ext type so_doc_tp value 'EXT',
cc_relationtype_atta type binreltyp value 'ATTA'.
*----
-
Internal tables*-----------------------------------------------------------------------
data:
gtb_textpool type standard table of textpool. -
-
***INCLUDE LZ_GOS_PDF_ATTACHMENTF01 .
-
-
&----
-
*& Form convert_otf
&----
-
-->ITB_OTF
<--ETB_OBJCONT
<--EC_OBJLEN
<--ES_RETURN
-
-
form convert_otf
using itb_otf type tsfotf
changing etb_objcont type soli_tab
ec_objlen type so_obj_len
es_return type bapiret2.
data:
ltb_pdf type tsftext.
data:
ls_string type string.
data:
li_bin_filesize type i.
refresh etb_objcont.
clear: ec_objlen,
es_return.
Convert OTF format (smartforms output) to PDF
call function 'CONVERT_OTF'
exporting
format = 'PDF'
importing
bin_filesize = li_bin_filesize
tables
otf = itb_otf
lines = ltb_pdf
exceptions
err_max_linewidth = 1
err_format = 2
err_conv_not_possible = 3
others = 4.
if sy-subrc ne 0.
es_return-type = 'E'.
es_return-id = 'SO'.
es_return-number = '754'.
exit.
endif.
ec_objlen = li_bin_filesize.
Convert OTF format to String
call function 'SWA_STRING_FROM_TABLE'
exporting
character_table = ltb_pdf
importing
character_string = ls_string
exceptions
no_flat_charlike_structure = 1
others = 2.
if sy-subrc ne 0.
es_return-type = 'E'.
es_return-id = 'SO'.
es_return-number = '754'.
exit.
endif.
Convert String to Sap Office table
call function 'SWA_STRING_TO_TABLE'
exporting
character_string = ls_string
importing
character_table = etb_objcont
exceptions
no_flat_charlike_structure = 1
others = 2.
if sy-subrc ne 0.
es_return-type = 'E'.
es_return-id = 'SO'.
es_return-number = '754'.
exit.
endif.
endform. " convert_otf
&----
-
*& Form get_folder_id
&----
-
<--ES_FOLDER_ID
<--ES_RETURN
-
-
form get_folder_id
changing es_folder_id type soodk
es_return type bapiret2.
clear: es_folder_id,
es_return.
call function 'SO_FOLDER_ROOT_ID_GET'
exporting
region = 'B'
importing
folder_id = es_folder_id
exceptions
others = 1.
if sy-subrc ne 0.
es_return-type = 'E'.
es_return-id = 'SO'.
es_return-number = '005'.
exit.
endif.
endform. " get_folder_id
&----
-
*& Form create_attachment
&----
-
-->IS_FOLDER_ID
-->ITB_OBJCONT
-->IC_OBJLEN
-->IC_FILENAME
<--ES_ATTACH_ID
<--ES_RETURN
-
-
form create_attachment
using is_folder_id type soodk
itb_objcont type soli_tab
ic_objlen type so_obj_len
ic_filename type localfile
changing es_attach_id type soodk
es_return type bapiret2.
data:
ltb_objhead type soli_tab.
data:
ls_object_id type soodk,
ls_object_hd_change type sood1.
data:
lc_attach_type type so_obj_tp value cc_doctp_ext,
lc_owner type so_usr_nam.
clear es_attach_id.
ls_object_id = is_folder_id.
ls_object_hd_change-objlen = ic_objlen.
ls_object_hd_change-objla = sy-langu.
Extract object description and extention from filename
perform extract_object_description
using ic_filename
changing ls_object_hd_change-objdes
ls_object_hd_change-file_ext.
Get objectname
perform get_objectname
changing ls_object_hd_change-objnam.
lc_owner = sy-uname.
call function 'SO_ATTACHMENT_INSERT'
exporting
object_id = ls_object_id
object_hd_change = ls_object_hd_change
attach_type = lc_attach_type
owner = lc_owner
importing
attach_id = es_attach_id
tables
objcont = itb_objcont
objhead = ltb_objhead
exceptions
active_user_not_exist = 1
object_type_not_exist = 2
operation_no_authorization = 3
owner_not_exist = 4
parameter_error = 5
substitute_not_active = 6
substitute_not_defined = 7
x_error = 8
system_failure = 9
communication_failure = 10
others = 11.
if sy-subrc ne 0.
es_return-type = 'E'.
es_return-id = 'SO'.
es_return-number = '897'.
es_return-message_v1 = ls_object_hd_change-objdes.
exit.
else.
commit work and wait.
endif.
endform. " create_attachment
&----
-
*& Form extract_object_description
&----
-
-->IC_FILENAME
<--EC_OBJDES
<--EC_FILE_EXT
-
-
form extract_object_description
using ic_filename type localfile
changing ec_objdes type so_obj_des
ec_file_ext type so_fileext.
data:
li_length type i,
li_start_position type i,
lc_filename type localfile,
lc_stripped_name type localfile.
clear: ec_objdes,
ec_file_ext.
lc_filename = ic_filename.
call function 'SO_SPLIT_FILE_AND_PATH'
exporting
full_name = lc_filename
importing
stripped_name = lc_stripped_name
exceptions
x_error = 1
others = 2.
if sy-subrc eq 0.
split lc_stripped_name
at '.'
into ec_objdes
ec_file_ext.
set locale language sy-langu.
translate ec_file_ext to upper case.
set locale language space.
else.
ec_objdes = ic_filename.
ec_file_ext = 'PDF'.
endif.
endform. " extract_object_description
&----
-
*& Form get_objectname
&----
-
<--EC_OBJNAM
-
-
form get_objectname
changing ec_objnam type so_obj_nam.
data:
ls_textpool type textpool.
field-symbols:
-length).
set locale language sy-langu.
translate ec_objnam to upper case.
set locale language space.
endif.
endform. " get_objectname
&----
-
*& Form read_textpool
&----
-
form read_textpool.
refresh gtb_textpool.
Read textpool from program SAPFSSO3
read textpool cc_textpool_repid
into gtb_textpool
language sy-langu.
sort gtb_textpool by id key.
endform. " read_textpool
&----
-
*& Form create_link
&----
-
-->IS_FOLDER_ID
-->IS_ATTACH_ID
-->IC_OBJTYP
-->IC_TYPEID
<--ES_RETURN
-
-
form create_link
using is_folder_id type soodk
is_attach_id type soodk
ic_objtyp type swo_objtyp
ic_typeid type swo_typeid
changing es_return type bapiret2.
data:
ls_obj_rolea type borident,
ls_obj_roleb type borident.
data:
lc_relationtype type binreltyp value cc_relationtype_atta.
concatenate is_folder_id
is_attach_id
into ls_obj_roleb-objkey.
ls_obj_roleb-objtype = cc_objtyp_message.
ls_obj_rolea-objkey = ic_typeid.
ls_obj_rolea-objtype = ic_objtyp.
call function 'BINARY_RELATION_CREATE'
exporting
obj_rolea = ls_obj_rolea
obj_roleb = ls_obj_roleb
relationtype = lc_relationtype
exceptions
others = 1.
if sy-subrc ne 0.
es_return-type = 'E'.
es_return-id = 'SO'.
es_return-number = '897'.
es_return-message_v1 = ls_obj_roleb-objkey.
exit.
else.
commit work and wait.
endif.
endform. " create_link
after this in done check this with bsp application.
test it in R3 if it is displaying in R3 then sure i will display in portal also.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
thanks
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
86 | |
10 | |
10 | |
10 | |
7 | |
6 | |
6 | |
5 | |
4 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.