Skip to Content
0
Former Member
May 06, 2010 at 01:33 PM

Attaching Image document from application server to MIR4 GOS object

1468 Views

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.