cancel
Showing results for 
Search instead for 
Did you mean: 

Attachment in Smartforms

Former Member
0 Kudos

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

Accepted Solutions (1)

Accepted Solutions (1)

mahaboob_pathan
Contributor
0 Kudos

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.

Answers (1)

Answers (1)

Former Member
0 Kudos

thanks