cancel
Showing results for 
Search instead for 
Did you mean: 

Contents of workitems attachment in smartform?

Former Member
0 Kudos

Hi,

We are using appropriation request workflow for approval process.

We have developed a Z program for printing the AR details using smartform.

If some user 'Postpones' or 'rejects' the particular request, he will enter the comments for doing so. He will be writing his comments by creating a workitem attachment (RAW format only).

Now the requirement is to print this Raw Text in the smartform.

I would like to know the following things.

1. How to retrieve the workflow attachment.

2. How will i be able to include the content of this file in the smartform.

Unfortunately i am not aware of the Oops programing and also have not worked on the workflow before.

I tried to find out the related threads but couldn't find much.

Request you to help me on this.

Regards,

Vinod.

Accepted Solutions (0)

Answers (2)

Answers (2)

surjith_kumar
Active Contributor
0 Kudos

Hi,

You have to create a Method, in that method convert the Raw text to PDF. And send it as an attachment. Using the Function Module SO_NEW_DOCUMENT_ATT_SEND_API1.

Refer the below Program and create your Program.

Regards,

P Surjith Kumar

&----


*& Report ZTESTMAIL

*&

&----


*&

*&

&----


REPORT ZTESTMAIL.

DATA: i_otf TYPE itcoo OCCURS 0 WITH HEADER LINE,

i_tline TYPE TABLE OF tline WITH HEADER LINE,

i_receivers TYPE TABLE OF somlreci1 WITH HEADER LINE,

i_record LIKE solisti1 OCCURS 0 WITH HEADER LINE,

Objects to send mail.

i_objpack LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,

i_objtxt LIKE solisti1 OCCURS 0 WITH HEADER LINE,

i_objbin LIKE solisti1 OCCURS 0 WITH HEADER LINE,

i_reclist LIKE somlreci1 OCCURS 0 WITH HEADER LINE,

Work Area declarations

w_objhead TYPE soli_tab,

w_ctrlop TYPE ssfctrlop,

w_compop TYPE ssfcompop,

w_return TYPE ssfcrescl,

w_doc_chng typE sodocchgi1,

w_data TYPE sodocchgi1,

w_buffer TYPE string,"To convert from 132 to 255

Variables declarations

v_form_name TYPE rs38l_fnam,

v_len_in LIKE sood-objlen,

v_len_out LIKE sood-objlen,

v_len_outn TYPE i,

v_lines_txt TYPE i,

v_lines_bin TYPE i.

call function 'SSF_FUNCTION_MODULE_NAME'

exporting

formname = 'ZMENTAL'

importing

fm_name = v_form_name

exceptions

no_form = 1

no_function_module = 2

others = 3.

IF sy-subrc 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

w_ctrlop-getotf = 'X'.

w_ctrlop-no_dialog = 'X'.

w_compop-tdnoprev = 'X'.

*

*CALL FUNCTION v_form_name

*EXPORTING

*control_parameters = w_ctrlop

*output_options = w_compop

*user_settings = 'X'

*IMPORTING

*job_output_info = w_return

*EXCEPTIONS

*formatting_error = 1

*internal_error = 2

*send_error = 3

*user_canceled = 4

*OTHERS = 5.

*IF sy-subrc 0.

*MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

*WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

*ENDIF.

*

*i_otf] = w_return-otfdata[.

*

CALL FUNCTION 'CONVERT_OTF'

EXPORTING

format = 'PDF'

max_linewidth = 132

IMPORTING

bin_filesize = v_len_in

TABLES

otf = i_otf

lines = i_tline

EXCEPTIONS

err_max_linewidth = 1

err_format = 2

err_conv_not_possible = 3

OTHERS = 4.

IF sy-subrc 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

Convert PDF from 132 to 255.

*LOOP AT i_tline.

Replacing space by ~

*TRANSLATE i_tline USING ' ~'.

*CONCATENATE w_buffer i_tline INTO w_buffer.

*ENDLOOP.

Replacing ~ by space

*TRANSLATE w_buffer USING '~ '.

*

*DO.

*i_record = w_buffer.

Appending 255 characters as a record

*APPEND i_record.

*SHIFT w_buffer LEFT BY 255 PLACES.

*IF w_buffer IS INITIAL.

*EXIT.

*ENDIF.

*ENDDO.

*

*Refresh: i_reclist,

*i_objtxt,

*i_objbin,

*i_objpack.

*

*clear w_objhead.

*

Object with PDF.

*i_objbin] = i_record[.

*DESCRIBE TABLE i_objbin LINES v_lines_bin.

*

Object with main text of the mail.

*i_objtxt = 'Find attached the output of the smart form.'.

*APPEND i_objtxt.

*i_objtxt = 'Regards,'.

*APPEND i_objtxt.

*i_objtxt = 'J.Jayanthi'.

*APPEND i_objtxt.

*

*DESCRIBE TABLE i_objtxt LINES v_lines_txt.

*

Document information.

*w_doc_chng-obj_name = 'Smartform'.

*w_doc_chng-expiry_dat = sy-datum + 10.

*w_doc_chng-obj_descr = 'Smart form output'.

*w_doc_chng-sensitivty = 'F'. "Functional object

*w_doc_chng-doc_size = v_lines_txt * 255.

*

Pack to main body as RAW.

Obj. to be transported not in binary form

*CLEAR i_objpack-transf_bin.

Start line of object header in transport packet

*i_objpack-head_start = 1.

Number of lines of an object header in object packet

*i_objpack-head_num = 0.

Start line of object contents in an object packet

*i_objpack-body_start = 1.

Number of lines of the object contents in an object packet

*i_objpack-body_num = v_lines_txt.

Code for document class

*i_objpack-doc_type = 'RAW'.

*APPEND i_objpack.

*

Packing as PDF.

*i_objpack-transf_bin = 'X'.

*i_objpack-head_start = 1.

*i_objpack-head_num = 1.

*i_objpack-body_start = 1.

*i_objpack-body_num = v_lines_bin.

*i_objpack-doc_type = 'PDF'.

*i_objpack-obj_name = 'Smartform'.

*CONCATENATE 'Smartform_output' '.pdf'

*INTO i_objpack-obj_descr.

*i_objpack-doc_size = v_lines_bin * 255.

*APPEND i_objpack.

*

Document information.

*CLEAR i_reclist.

*

e-mail receivers.

*i_reclist-receiver = "give the email address.

*i_reclist-express = 'X'.

*i_reclist-rec_type = 'U'. "Internet address

*APPEND i_reclist.

*

Sending mail.

*CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'

*EXPORTING

*document_data = w_doc_chng

*put_in_outbox = 'X'

*TABLES

*packing_list = i_objpack

*object_header = w_objhead

*contents_hex = i_objbin

*contents_txt = i_objtxt

*receivers = i_reclist

*EXCEPTIONS

*too_many_receivers = 1

*document_not_sent = 2

*document_type_not_exist = 3

*operation_no_authorization = 4

*parameter_error = 5

*x_error = 6

*enqueue_error = 7

*OTHERS = 8.

*IF sy-subrc 0.

*MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

*WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

*ENDIF.

Former Member
0 Kudos

hi,

Thanks for your reply.

But request you to go through the quest once again.

thanks

Vinod.

Former Member
0 Kudos

Dear friends,

Found the solution.

Got idea from one thread.

I have used FM SAP_WAPI_GET_ATTACHMENTS and SO_OBJECT_READ for retrieving attachments from the workitem.

Quite easy solution. Was bit silly to post a thread.

Just about to find out, what happens if user creates the attachment in formats other than 'RAW' format.

Anyway thanks for the help.

Regards,

Vinod.