Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Attaching Image document from application server to MIR4 GOS object

Former Member
0 Kudos

Hi,

I have requirement to attach TIFF file lying on application server to MIR4 GOS object through the program

I developed a sample using one of the BLOG with the below code. Hope something is missing in the code, I have 2 issues

1. The attachment is not opening directly, its coming as email text , i.e its opening SOST

Screen and the file content coming as Email text.

2. Continuous to second Question , the text coming as E mail body text for only text files,

for TIF files the Email body displaying with one Junk character.

for the program I am passing

Business object type BUS2012

buiness object id <document no>

message type - TXT

Docuement type - MESSAGE

Relation type - ATTA

file name : Application server file path

heres's the code of the program

&----


*& Report ZSCANONE

*&

&----


*&

*&

&----


REPORT ZSCANONE.

----


  • Function : We need to maintain links between Business Object and

  • the attachment.Attachment document is basiclally a

  • business object of type 'MESSAGE'.In order to maintain

  • links, first the attachment will be crated as Business

  • Object of type 'MESSAGE' using Message.Create method.

*

  • This program can be used to attach PC documents eg. PDF

  • ,DOC,TXT,GIF etc. to a SAP Business Object e.g Purchase

  • Order etc. You should pass the correct message type

  • [ P_MSGTYP ] as per the file extension[e.g. PDF,DOC etc].

*

  • The code below is suitable for 4.6C+, though you might

  • like to use the commented code, instead, for 4.7+

----


  • Include for BO macros

INCLUDE : <cntn01>.

  • Load class.

  • CLASS CL_BINARY_RELATION definition load.

PARAMETERS:

  • Object_a

  • P_BOTYPE LIKE obl_s_pbor-typeid DEFAULT 'BUS2031', " e.g. 'BUS2012'

  • P_BO_ID LIKE OBL_S_PBOR-INSTID DEFAULT '0002029816',

P_BOTYPE LIKE borident-OBJTYPE DEFAULT 'BUS2012', " e.g. 'BUS2012'

P_BO_ID LIKE borident-OBJKEY DEFAULT '4500000130',

" Key e.g. PO No.

  • Object_b

P_MSGTYP LIKE SOFM-DOCTP DEFAULT 'TXT',

P_DOCTY LIKE borident-OBJTYPE DEFAULT 'MESSAGE',

  • Relationship

P_RELTYP LIKE BRELTYP-RELTYPE DEFAULT 'ATTA',

  • File Name

P_FNAME like rlgrap-filename Default

'/interface/TPS/outbound/daily_open_inv/new/StpT20100413-025043-367.txt'

.

types: BEGIN OF TY_MESSAGE_KEY,

FOLTP TYPE SO_FOL_TP,

FOLYR TYPE SO_FOL_YR,

FOLNO TYPE SO_FOL_NO,

DOCTP TYPE SO_DOC_TP,

DOCYR TYPE SO_DOC_YR,

DOCNO TYPE SO_DOC_NO,

FORTP TYPE SO_FOR_TP,

FORYR TYPE SO_FOR_YR,

FORNO TYPE SO_FOR_NO,

END OF TY_MESSAGE_KEY.

DATA : LV_MESSAGE_KEY type TY_MESSAGE_KEY.

DATA : LO_MESSAGE type SWC_OBJECT.

DATA : LT_DOC_CONTENT type standard table of SOLI-LINE

with header line.

----


  • First derive the Attachment's ( MESSAGE )document type.

P_DOCTY = 'MESSAGE'.

CASE P_RELTYP.

  • In case of URls

WHEN 'URL'.

P_MSGTYP = 'URL'.

  • In case of Notes / Private Notes

WHEN 'NOTE' OR 'PNOT'.

P_MSGTYP = 'RAW'.

WHEN 'ATTA'.

  • Take given parameter e.g. 'DOC', 'PDF' etc.

  • P_MSGTYP = 'EXT'.

WHEN OTHERS.

  • ....exit

EXIT.

ENDCASE.

----


  • Create an initial instance of BO 'MESSAGE' - to call the

  • instance-independent method 'Create'.

swc_create_object LO_MESSAGE 'MESSAGE' LV_MESSAGE_KEY.

  • define container to pass the parameter values to the method call

  • in next step.

swc_container LT_MESSAGE_CONTAINER.

  • Populate container with parameters for method

swc_set_element LT_MESSAGE_CONTAINER 'DOCUMENTTITLE' 'TestDocument'.

swc_set_element LT_MESSAGE_CONTAINER 'DOCUMENTLANGU' 'E'.

swc_set_element LT_MESSAGE_CONTAINER 'NO_DIALOG' 'X'.

swc_set_element LT_MESSAGE_CONTAINER 'DOCUMENTNAME' P_DOCTY.

swc_set_element LT_MESSAGE_CONTAINER 'DOCUMENTTYPE' P_MSGTYP.

  • In case of URLs..it should be concatenated with &KEY& in the begining.

CASE P_MSGTYP.

WHEN 'URL'.

LT_DOC_CONTENT = '&KEY&http://www.rmtiwari.com' .

append LT_DOC_CONTENT.

  • In case of Notes or Private Notes, get the data from files on appl

  • server or from wherever(? - remember background).

WHEN 'RAW'.

LT_DOC_CONTENT = 'Hi How r u?' .

append LT_DOC_CONTENT.

  • In case of PC File attachments

WHEN OTHERS.

OPEN DATASET P_FNAME FOR INPUT in text mode encoding default.

IF SY-subrc EQ 0.

DO.

READ DATASET P_FNAME INTO LT_DOC_CONTENT.

IF SY-subrc EQ 0.

append LT_DOC_CONTENT.

ELSE.

EXIT.

ENDIF.

ENDDO.

CLOSE DATASET P_FNAME.

ENDIF.

ENDCASE.

  • 'DocumentContent' is a multi-line element ( itab ).

swc_set_table LT_MESSAGE_CONTAINER 'DocumentContent' LT_DOC_CONTENT.

  • Size is required in case of File attachments

data : LV_DOC_SIZE type i.

data : L_FILE_LINES type i.

DESCRIBE TABLE LT_DOC_CONTENT LINES L_FILE_LINES.

READ TABLE LT_DOC_CONTENT INDEX L_FILE_LINES.

LV_DOC_SIZE = ( 255 * ( L_FILE_LINES - 1 ) ) +

STRLEN( LT_DOC_CONTENT ).

swc_set_element LT_MESSAGE_CONTAINER 'DOCUMENTSIZE' LV_DOC_SIZE .

  • Refresh to get the reference of create 'MESSAGE' object for attachment

swc_refresh_object LO_MESSAGE.

swc_call_method LO_MESSAGE 'CREATE' LT_MESSAGE_CONTAINER.

  • Get Key of new object

swc_get_object_key LO_MESSAGE LV_MESSAGE_KEY.

  • Now we have attachment as a business object instance. We can now

  • attach it to our main business object instance.

  • Create main BO object_a

  • data: LO_IS_OBJECT_A type SIBFLPORB. "type SIBFLPORB is unknown, so I

data: LO_IS_OBJECT_A type BORIDENT.

LO_IS_OBJECT_A-OBJKEY = P_BO_ID.

LO_IS_OBJECT_A-OBJTYPE = P_BOTYPE.

  • LO_IS_OBJECT_A-CATID = 'BO'.

  • Create attachment BO object_b

  • data: LO_IS_OBJECT_B type SIBFLPORB. "type SIBFLPORB is unknown

data: LO_IS_OBJECT_B type BORIDENT.

LO_IS_OBJECT_B-OBJKEY = LV_MESSAGE_KEY.

LO_IS_OBJECT_B-OBJTYPE = P_DOCTY.

  • LO_IS_OBJECT_B-CATID = 'BO'.

*TRY.

*CALL METHOD CL_BINARY_RELATION=>CREATE_LINK

  • EXPORTING

  • IS_OBJECT_A = LO_IS_OBJECT_A

  • IS_OBJECT_B = LO_IS_OBJECT_B

  • IP_RELTYPE = P_RELTYP.

call function 'BINARY_RELATION_CREATE'

EXPORTING

obj_rolea = LO_IS_OBJECT_A

obj_roleb = LO_IS_OBJECT_B

relationtype = P_RELTYP

EXCEPTIONS

others = 1.

  • Check if everything OK...who cares!!

Commit work.

3 REPLIES 3

Sandra_Rossi
Active Contributor
0 Kudos

It seems your code is about mails, I don't understand, why do you need that?

Moreover, you don't upload the TIFF file. And attach them to SAPoffice using SO_ATTACHMENT_INSERT (search SDN), you'll get a document number (an object key), and you'll link it to the BUS2012 object (cl_binary_relation=>create_link).

former_member182371
Active Contributor
0 Kudos

Hi,

maybe this can give you an idea:

( How to Attach Documents to Any Custom Program Using Generic Object Services )

http://www.sdn.sap.com/irj/scn/index?rid=/library/uuid/0e6b0d95-0a01-0010-4696-ca0a48de5fb3&override...

Bestr regards.

Edited by: Pablo Casamayor on May 10, 2010 11:37 AM

Former Member
0 Kudos

hello ,

check my sample program , do modifications as per ur requirement.

[https://www.sdn.sap.com/irj/scn/wiki?path=/display/abap/gos-AttachmentstoSAP+Documents]

regards

Prabhu