05-06-2010 2:33 PM
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.
05-06-2010 10:17 PM
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).
05-10-2010 10:37 AM
Hi,
maybe this can give you an idea:
( How to Attach Documents to Any Custom Program Using Generic Object Services )
Bestr regards.
Edited by: Pablo Casamayor on May 10, 2010 11:37 AM
05-10-2010 10:59 AM
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