2011 Apr 25 7:15 AM
Hi,
We are implementing Open Text for Finance AP, we have a third party workflow system running for corporate approval solution.
Is it possible for me to write an ABAP code retrieve the image or any URL link? So that I can view it outside SAP?
My objective is to let the approver view the original invoice which already deposit into Open Text Archive server before approved to release payment. The approver is not part of SAP users.
Any ideas or solution is very much appreciated.
Thanks in advanced.
Steven
Hi,
We are implementing Open Text for Finance AP, we have a third party workflow system running for corporate approval solution.
Is it possible for me to write an ABAP code retrieve the image or any URL link? So that I can view it outside SAP?
My objective is to let the approver view the original invoice which already deposit into Open Text Archive server before approved to release payment. The approver is not part of SAP users.
Any ideas or solution is very much appreciated.
Thanks in advanced.
Steven
2013 Feb 06 5:11 PM
Hi,
yes - it is possible.
after i find FM i give you more details.
Lechoo
2013 Mar 05 2:57 PM
FUNCTION Z_FI01_VIM_MAIL_TO_INT_EXT_USR .
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" REFERENCE(I_OBJTYPE) LIKE SWOTOBJID-OBJTYPE OPTIONAL
*" REFERENCE(I_OBJKEY) LIKE SWOTOBJID-OBJKEY OPTIONAL
*" REFERENCE(IT_IMAGE_IDS) TYPE /OPT/D_ARC_DOC_ST
*"----------------------------------------------------------------------
""Local Interface:
*" IMPORTING
*" REFERENCE(LV_EMP_USERID) TYPE FITP_USER-UNAME
*" REFERENCE(LV_EMP_EMAILID) TYPE PA0105-USRID_LONG
*"----------------------------------------------------------------------
***FUNCTION MODULE Z_FI01_VIM_MAIL_TO_INT_EXT_USR.
* *&Get the Email id and User id Whom you want to Send ******
DATA:IT_RECEIVERS TYPE STANDARD TABLE OF SOMLRECI1,
WA_IT_RECEIVERS LIKE LINE OF IT_RECEIVERS,
IT_RECEIVERS_FINAL TYPE STANDARD TABLE OF SOMLRECI1,
IT_PACKING_LIST TYPE STANDARD TABLE OF SOPCKLSTI1,
GD_DOC_DATA TYPE SODOCCHGI1,
WA_IT_PACKING_LIST LIKE LINE OF IT_PACKING_LIST,
PSUBJECT(90) TYPE C,
IT_MESSAGE TYPE STANDARD TABLE OF SOLISTI1,
WA_IT_MESSAGE LIKE LINE OF IT_MESSAGE,
C1(99) TYPE C,
C2(15) TYPE C,
NUM_LINES TYPE I,
WA_ACTORS TYPE SWHACTOR,
IT_ACTORS TYPE TABLE OF SWHACTOR,
IT_ACTORS_FINAL TYPE TABLE OF SWHACTOR,
LV_EMP_EMAILID TYPE PA0105-USRID_LONG,
G_SENT_TO_ALL TYPE SONV-FLAG,
IT_ATTACHMENT TYPE TABLE OF SOLISTI1,
WA_ATTACHMENT TYPE SOLISTI1,
LV_FILESIZE TYPE I,
G_TAB_LINES TYPE I,
LV_FILE_EXT TYPE CHAR27.
CALL FUNCTION '/PTGWFI/COA_W_RETRIEVE_USERS'
EXPORTING
ZPDCD = '005'
ZRSP = 'ZRECEIVER'
OBJTYPE = I_OBJTYPE
OBJKEY = I_OBJKEY
TABLES
USERLIST = IT_ACTORS
EXCEPTIONS
ROLE_NOT_RESOLVED = 1
OTHERS = 2.
* IF SY-SUBRC <> 0.
* ENDIF.
APPEND LINES OF IT_ACTORS TO IT_ACTORS_FINAL.
CALL FUNCTION '/PTGWFI/COA_W_RETRIEVE_USERS'
EXPORTING
ZPDCD = '005'
ZRSP = 'ZSCAN_AGENT'
OBJTYPE = I_OBJTYPE
OBJKEY = I_OBJKEY
TABLES
USERLIST = IT_ACTORS
EXCEPTIONS
ROLE_NOT_RESOLVED = 1
OTHERS = 2.
* IF SY-SUBRC <> 0.
* ENDIF.
APPEND LINES OF IT_ACTORS TO IT_ACTORS_FINAL.
SORT IT_ACTORS_FINAL BY OTYPE OBJID.
DELETE ADJACENT DUPLICATES FROM IT_ACTORS_FINAL.
*&-- Assign the Email id and User id to Whom you want to Send -------------&
LOOP AT IT_ACTORS_FINAL INTO WA_ACTORS.
CLEAR LV_EMP_EMAILID.
SELECT SINGLE USRID_LONG FROM PA0105 INTO LV_EMP_EMAILID
WHERE UNAME = WA_ACTORS-OBJID.
IF NOT LV_EMP_EMAILID IS INITIAL.
FREE WA_IT_RECEIVERS.
WA_IT_RECEIVERS-RECEIVER = LV_EMP_EMAILID. "&---- Assign Email id
WA_IT_RECEIVERS-REC_TYPE = 'U'. "&---- Send to External Email id
WA_IT_RECEIVERS-COM_TYPE = 'INT'.
WA_IT_RECEIVERS-NOTIF_DEL = 'X'.
WA_IT_RECEIVERS-NOTIF_NDEL = 'X'.
APPEND WA_IT_RECEIVERS TO IT_RECEIVERS .
ENDIF.
FREE WA_IT_RECEIVERS.
WA_IT_RECEIVERS-RECEIVER = WA_ACTORS-OBJID. "&----- Assign SAP User Id
WA_IT_RECEIVERS-REC_TYPE = 'B'. "&-- Send to SAP Inbox
WA_IT_RECEIVERS-COM_TYPE = 'INT'.
WA_IT_RECEIVERS-NOTIF_DEL = 'X'.
WA_IT_RECEIVERS-NOTIF_NDEL = 'X'.
APPEND WA_IT_RECEIVERS TO IT_RECEIVERS .
CLEAR WA_ACTORS.
ENDLOOP.
*& - END of Assign the Email id and User id to Whom you want to Send --&
"&--- Read the Number of lines in the Internal Table
DESCRIBE TABLE IT_RECEIVERS LINES NUM_LINES.
"&--- Check the Sender Email id or SAP User id is got or not.
IF NUM_LINES IS NOT INITIAL.
LOOP AT IT_RECEIVERS INTO WA_IT_RECEIVERS.
APPEND WA_IT_RECEIVERS TO IT_RECEIVERS_FINAL.
*&---------------------------------------------------------------------
* Add thetext to mail text table
*&----------------------------------------------------------------------
*&-- Subject of the mail -------------&*
PSUBJECT = 'Request for original invoice'(002).
*&-- Body of the mail ----------------&*
CLEAR WA_IT_MESSAGE.
C1 = 'Dear'(005).
C2 = WA_IT_RECEIVERS-RECEIVER.
CONCATENATE C1 C2 INTO
WA_IT_MESSAGE-LINE SEPARATED BY SPACE.
CONCATENATE WA_IT_MESSAGE-LINE ',' INTO WA_IT_MESSAGE-LINE.
APPEND WA_IT_MESSAGE TO IT_MESSAGE.
*** insert Blank Line *********************************************
CLEAR WA_IT_MESSAGE.
WA_IT_MESSAGE-LINE = ' '.
APPEND WA_IT_MESSAGE TO IT_MESSAGE.
******* Assign your Text below *************************************
CLEAR WA_IT_MESSAGE.
WA_IT_MESSAGE-LINE = 'A Test Mail sent from "Enteg InfoTech" through ABAP Program.'(003).
APPEND WA_IT_MESSAGE TO IT_MESSAGE.
*** insert Blank Line{} *********************************************
CLEAR WA_IT_MESSAGE.
WA_IT_MESSAGE-LINE = ' '.
APPEND WA_IT_MESSAGE TO IT_MESSAGE.
**********Assign your Text below ********************************
CLEAR WA_IT_MESSAGE.
WA_IT_MESSAGE-LINE = 'This mail generate automatically. Please do not reply.'(004).
APPEND WA_IT_MESSAGE TO IT_MESSAGE.
*********************************************************************
**********& Send EMAIL MESSAGE &*********************************
GD_DOC_DATA-DOC_SIZE = 1.
*Populate the subject/generic message attributes
GD_DOC_DATA-OBJ_LANGU = SY-LANGU.
GD_DOC_DATA-OBJ_NAME = 'SAPRPT'.
GD_DOC_DATA-OBJ_DESCR = PSUBJECT.
GD_DOC_DATA-SENSITIVTY = 'F'.
*Describe the body of the message
CLEAR WA_IT_PACKING_LIST.
REFRESH IT_PACKING_LIST.
WA_IT_PACKING_LIST-TRANSF_BIN = SPACE.
WA_IT_PACKING_LIST-HEAD_START = 1.
WA_IT_PACKING_LIST-HEAD_NUM = 0.
WA_IT_PACKING_LIST-BODY_START = 1.
DESCRIBE TABLE IT_MESSAGE LINES WA_IT_PACKING_LIST-BODY_NUM.
WA_IT_PACKING_LIST-DOC_TYPE = 'RAW'.
APPEND WA_IT_PACKING_LIST TO IT_PACKING_LIST.
*&------ Create File Attachment
CALL FUNCTION 'SCMS_HTTP_GET'
EXPORTING
CREP_ID = IT_IMAGE_IDS-ARCHIV_ID
DOC_ID = IT_IMAGE_IDS-ARC_DOC_ID
IMPORTING
LENGTH = LV_FILESIZE
TABLES
DATA = IT_ATTACHMENT
EXCEPTIONS
BAD_REQUEST = 1
UNAUTHORIZED = 2
NOT_FOUND = 3
CONFLICT = 4
INTERNAL_SERVER_ERROR = 5
ERROR_HTTP = 6
ERROR_URL = 7
ERROR_SIGNATURE = 8
OTHERS = 9.
IF SY-SUBRC = 0.
CONSTANTS LC_FM_NAME TYPE /PTGWFI/CONST VALUE 'FM_GET_IMG_FILE_EXT'.
CONSTANTS LC_PROD_CODE TYPE /PTGWFI/PDCD VALUE '005'.
DATA LV_FILE_EXT_FM TYPE /PTGWFI/VALUE.
CALL FUNCTION '/OPT/VIM_READ_CONSTANT'
EXPORTING
PROD_CODE = LC_PROD_CODE
PARAM_NAME = LC_FM_NAME
IMPORTING
PARAM_VALUE = LV_FILE_EXT_FM
EXCEPTIONS
NOT_FOUND = 1
OTHERS = 2.
CALL FUNCTION LV_FILE_EXT_FM
EXPORTING
I_ARCHIV_ID = IT_IMAGE_IDS-ARCHIV_ID
I_ARC_DOC_ID = IT_IMAGE_IDS-ARC_DOC_ID
IMPORTING
E_FILE_EXT = LV_FILE_EXT
EXCEPTIONS
ERR_GET_CONNECTIONS = 1
FILE_EXT_NOT_FOUND = 2
OTHERS = 3.
* Write Packing List for Attachment
WA_IT_PACKING_LIST-TRANSF_BIN = 'X'.
WA_IT_PACKING_LIST-HEAD_START = 1.
WA_IT_PACKING_LIST-HEAD_NUM = 1.
WA_IT_PACKING_LIST-BODY_START = 1.
DESCRIBE TABLE IT_ATTACHMENT LINES WA_IT_PACKING_LIST-BODY_NUM.
WA_IT_PACKING_LIST-DOC_TYPE = LV_FILE_EXT.
WA_IT_PACKING_LIST-OBJ_DESCR = 'Image'(005).
WA_IT_PACKING_LIST-OBJ_NAME = 'Image'(005).
* WA_IT_PACKING_LIST-doc_size = WA_IT_PACKING_LIST-body_num * 255.
WA_IT_PACKING_LIST-DOC_SIZE = LV_FILESIZE.
APPEND WA_IT_PACKING_LIST TO IT_PACKING_LIST.
CLEAR WA_IT_PACKING_LIST.
* Fill the document data and get size of attachment
GD_DOC_DATA-OBJ_LANGU = SY-LANGU.
* READ TABLE It_ATTACHMENT INTO Wa_ATTACHMENT INDEX G_TAB_LINES.
* w_document_data-doc_size = ( g_tab_lines - 1 ) * 255 + STRLEN( w_attachment ).
GD_DOC_DATA-DOC_SIZE = LV_FILESIZE.
ENDIF.
*&------ Call the Function Module to send the message to External and SAP Inbox
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
DOCUMENT_DATA = GD_DOC_DATA
PUT_IN_OUTBOX = 'X'
COMMIT_WORK = 'X'
* IMPORTING
* SENT_TO_ALL = G_SENT_TO_ALL
* NEW_OBJECT_ID =
TABLES
PACKING_LIST = IT_PACKING_LIST
* OBJECT_HEADER =
CONTENTS_BIN = IT_ATTACHMENT
CONTENTS_TXT = IT_MESSAGE
* CONTENTS_HEX =
* OBJECT_PARA =
* OBJECT_PARB =
RECEIVERS = IT_RECEIVERS_FINAL
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.
* Push mail out from SAP outbox
SUBMIT RSCONN01 WITH MODE = 'INT' AND RETURN.
CLEAR: WA_IT_RECEIVERS, IT_RECEIVERS_FINAL, IT_MESSAGE, IT_PACKING_LIST.
REFRESH: IT_RECEIVERS_FINAL, IT_MESSAGE, IT_PACKING_LIST.
ENDLOOP.
ENDIF. "&---- END of Check the Sender Email id or SAP User id is got or not.
ENDFUNCTION.
2013 Mar 05 2:57 PM
FUNCTION Z_FI01_VIM_MAIL_TO_INT_EXT_USR .
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" REFERENCE(I_OBJTYPE) LIKE SWOTOBJID-OBJTYPE OPTIONAL
*" REFERENCE(I_OBJKEY) LIKE SWOTOBJID-OBJKEY OPTIONAL
*" REFERENCE(IT_IMAGE_IDS) TYPE /OPT/D_ARC_DOC_ST
*"----------------------------------------------------------------------
""Local Interface:
*" IMPORTING
*" REFERENCE(LV_EMP_USERID) TYPE FITP_USER-UNAME
*" REFERENCE(LV_EMP_EMAILID) TYPE PA0105-USRID_LONG
*"----------------------------------------------------------------------
***FUNCTION MODULE Z_FI01_VIM_MAIL_TO_INT_EXT_USR.
* *&Get the Email id and User id Whom you want to Send ******
DATA:IT_RECEIVERS TYPE STANDARD TABLE OF SOMLRECI1,
WA_IT_RECEIVERS LIKE LINE OF IT_RECEIVERS,
IT_RECEIVERS_FINAL TYPE STANDARD TABLE OF SOMLRECI1,
IT_PACKING_LIST TYPE STANDARD TABLE OF SOPCKLSTI1,
GD_DOC_DATA TYPE SODOCCHGI1,
WA_IT_PACKING_LIST LIKE LINE OF IT_PACKING_LIST,
PSUBJECT(90) TYPE C,
IT_MESSAGE TYPE STANDARD TABLE OF SOLISTI1,
WA_IT_MESSAGE LIKE LINE OF IT_MESSAGE,
C1(99) TYPE C,
C2(15) TYPE C,
NUM_LINES TYPE I,
WA_ACTORS TYPE SWHACTOR,
IT_ACTORS TYPE TABLE OF SWHACTOR,
IT_ACTORS_FINAL TYPE TABLE OF SWHACTOR,
LV_EMP_EMAILID TYPE PA0105-USRID_LONG,
G_SENT_TO_ALL TYPE SONV-FLAG,
IT_ATTACHMENT TYPE TABLE OF SOLISTI1,
WA_ATTACHMENT TYPE SOLISTI1,
LV_FILESIZE TYPE I,
G_TAB_LINES TYPE I,
LV_FILE_EXT TYPE CHAR27.
CALL FUNCTION '/PTGWFI/COA_W_RETRIEVE_USERS'
EXPORTING
ZPDCD = '005'
ZRSP = 'ZRECEIVER'
OBJTYPE = I_OBJTYPE
OBJKEY = I_OBJKEY
TABLES
USERLIST = IT_ACTORS
EXCEPTIONS
ROLE_NOT_RESOLVED = 1
OTHERS = 2.
* IF SY-SUBRC <> 0.
* ENDIF.
APPEND LINES OF IT_ACTORS TO IT_ACTORS_FINAL.
CALL FUNCTION '/PTGWFI/COA_W_RETRIEVE_USERS'
EXPORTING
ZPDCD = '005'
ZRSP = 'ZSCAN_AGENT'
OBJTYPE = I_OBJTYPE
OBJKEY = I_OBJKEY
TABLES
USERLIST = IT_ACTORS
EXCEPTIONS
ROLE_NOT_RESOLVED = 1
OTHERS = 2.
* IF SY-SUBRC <> 0.
* ENDIF.
APPEND LINES OF IT_ACTORS TO IT_ACTORS_FINAL.
SORT IT_ACTORS_FINAL BY OTYPE OBJID.
DELETE ADJACENT DUPLICATES FROM IT_ACTORS_FINAL.
*&-- Assign the Email id and User id to Whom you want to Send -------------&
LOOP AT IT_ACTORS_FINAL INTO WA_ACTORS.
CLEAR LV_EMP_EMAILID.
SELECT SINGLE USRID_LONG FROM PA0105 INTO LV_EMP_EMAILID
WHERE UNAME = WA_ACTORS-OBJID.
IF NOT LV_EMP_EMAILID IS INITIAL.
FREE WA_IT_RECEIVERS.
WA_IT_RECEIVERS-RECEIVER = LV_EMP_EMAILID. "&---- Assign Email id
WA_IT_RECEIVERS-REC_TYPE = 'U'. "&---- Send to External Email id
WA_IT_RECEIVERS-COM_TYPE = 'INT'.
WA_IT_RECEIVERS-NOTIF_DEL = 'X'.
WA_IT_RECEIVERS-NOTIF_NDEL = 'X'.
APPEND WA_IT_RECEIVERS TO IT_RECEIVERS .
ENDIF.
FREE WA_IT_RECEIVERS.
WA_IT_RECEIVERS-RECEIVER = WA_ACTORS-OBJID. "&----- Assign SAP User Id
WA_IT_RECEIVERS-REC_TYPE = 'B'. "&-- Send to SAP Inbox
WA_IT_RECEIVERS-COM_TYPE = 'INT'.
WA_IT_RECEIVERS-NOTIF_DEL = 'X'.
WA_IT_RECEIVERS-NOTIF_NDEL = 'X'.
APPEND WA_IT_RECEIVERS TO IT_RECEIVERS .
CLEAR WA_ACTORS.
ENDLOOP.
*& - END of Assign the Email id and User id to Whom you want to Send --&
"&--- Read the Number of lines in the Internal Table
DESCRIBE TABLE IT_RECEIVERS LINES NUM_LINES.
"&--- Check the Sender Email id or SAP User id is got or not.
IF NUM_LINES IS NOT INITIAL.
LOOP AT IT_RECEIVERS INTO WA_IT_RECEIVERS.
APPEND WA_IT_RECEIVERS TO IT_RECEIVERS_FINAL.
*&---------------------------------------------------------------------
* Add thetext to mail text table
*&----------------------------------------------------------------------
*&-- Subject of the mail -------------&*
PSUBJECT = 'Request for original invoice'(002).
*&-- Body of the mail ----------------&*
CLEAR WA_IT_MESSAGE.
C1 = 'Dear'(005).
C2 = WA_IT_RECEIVERS-RECEIVER.
CONCATENATE C1 C2 INTO
WA_IT_MESSAGE-LINE SEPARATED BY SPACE.
CONCATENATE WA_IT_MESSAGE-LINE ',' INTO WA_IT_MESSAGE-LINE.
APPEND WA_IT_MESSAGE TO IT_MESSAGE.
*** insert Blank Line *********************************************
CLEAR WA_IT_MESSAGE.
WA_IT_MESSAGE-LINE = ' '.
APPEND WA_IT_MESSAGE TO IT_MESSAGE.
******* Assign your Text below *************************************
CLEAR WA_IT_MESSAGE.
WA_IT_MESSAGE-LINE = 'A Test Mail sent from "Enteg InfoTech" through ABAP Program.'(003).
APPEND WA_IT_MESSAGE TO IT_MESSAGE.
*** insert Blank Line{} *********************************************
CLEAR WA_IT_MESSAGE.
WA_IT_MESSAGE-LINE = ' '.
APPEND WA_IT_MESSAGE TO IT_MESSAGE.
**********Assign your Text below ********************************
CLEAR WA_IT_MESSAGE.
WA_IT_MESSAGE-LINE = 'This mail generate automatically. Please do not reply.'(004).
APPEND WA_IT_MESSAGE TO IT_MESSAGE.
*********************************************************************
**********& Send EMAIL MESSAGE &*********************************
GD_DOC_DATA-DOC_SIZE = 1.
*Populate the subject/generic message attributes
GD_DOC_DATA-OBJ_LANGU = SY-LANGU.
GD_DOC_DATA-OBJ_NAME = 'SAPRPT'.
GD_DOC_DATA-OBJ_DESCR = PSUBJECT.
GD_DOC_DATA-SENSITIVTY = 'F'.
*Describe the body of the message
CLEAR WA_IT_PACKING_LIST.
REFRESH IT_PACKING_LIST.
WA_IT_PACKING_LIST-TRANSF_BIN = SPACE.
WA_IT_PACKING_LIST-HEAD_START = 1.
WA_IT_PACKING_LIST-HEAD_NUM = 0.
WA_IT_PACKING_LIST-BODY_START = 1.
DESCRIBE TABLE IT_MESSAGE LINES WA_IT_PACKING_LIST-BODY_NUM.
WA_IT_PACKING_LIST-DOC_TYPE = 'RAW'.
APPEND WA_IT_PACKING_LIST TO IT_PACKING_LIST.
*&------ Create File Attachment
CALL FUNCTION 'SCMS_HTTP_GET'
EXPORTING
CREP_ID = IT_IMAGE_IDS-ARCHIV_ID
DOC_ID = IT_IMAGE_IDS-ARC_DOC_ID
IMPORTING
LENGTH = LV_FILESIZE
TABLES
DATA = IT_ATTACHMENT
EXCEPTIONS
BAD_REQUEST = 1
UNAUTHORIZED = 2
NOT_FOUND = 3
CONFLICT = 4
INTERNAL_SERVER_ERROR = 5
ERROR_HTTP = 6
ERROR_URL = 7
ERROR_SIGNATURE = 8
OTHERS = 9.
IF SY-SUBRC = 0.
CONSTANTS LC_FM_NAME TYPE /PTGWFI/CONST VALUE 'FM_GET_IMG_FILE_EXT'.
CONSTANTS LC_PROD_CODE TYPE /PTGWFI/PDCD VALUE '005'.
DATA LV_FILE_EXT_FM TYPE /PTGWFI/VALUE.
CALL FUNCTION '/OPT/VIM_READ_CONSTANT'
EXPORTING
PROD_CODE = LC_PROD_CODE
PARAM_NAME = LC_FM_NAME
IMPORTING
PARAM_VALUE = LV_FILE_EXT_FM
EXCEPTIONS
NOT_FOUND = 1
OTHERS = 2.
CALL FUNCTION LV_FILE_EXT_FM
EXPORTING
I_ARCHIV_ID = IT_IMAGE_IDS-ARCHIV_ID
I_ARC_DOC_ID = IT_IMAGE_IDS-ARC_DOC_ID
IMPORTING
E_FILE_EXT = LV_FILE_EXT
EXCEPTIONS
ERR_GET_CONNECTIONS = 1
FILE_EXT_NOT_FOUND = 2
OTHERS = 3.
* Write Packing List for Attachment
WA_IT_PACKING_LIST-TRANSF_BIN = 'X'.
WA_IT_PACKING_LIST-HEAD_START = 1.
WA_IT_PACKING_LIST-HEAD_NUM = 1.
WA_IT_PACKING_LIST-BODY_START = 1.
DESCRIBE TABLE IT_ATTACHMENT LINES WA_IT_PACKING_LIST-BODY_NUM.
WA_IT_PACKING_LIST-DOC_TYPE = LV_FILE_EXT.
WA_IT_PACKING_LIST-OBJ_DESCR = 'Image'(005).
WA_IT_PACKING_LIST-OBJ_NAME = 'Image'(005).
* WA_IT_PACKING_LIST-doc_size = WA_IT_PACKING_LIST-body_num * 255.
WA_IT_PACKING_LIST-DOC_SIZE = LV_FILESIZE.
APPEND WA_IT_PACKING_LIST TO IT_PACKING_LIST.
CLEAR WA_IT_PACKING_LIST.
* Fill the document data and get size of attachment
GD_DOC_DATA-OBJ_LANGU = SY-LANGU.
* READ TABLE It_ATTACHMENT INTO Wa_ATTACHMENT INDEX G_TAB_LINES.
* w_document_data-doc_size = ( g_tab_lines - 1 ) * 255 + STRLEN( w_attachment ).
GD_DOC_DATA-DOC_SIZE = LV_FILESIZE.
ENDIF.
*&------ Call the Function Module to send the message to External and SAP Inbox
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
DOCUMENT_DATA = GD_DOC_DATA
PUT_IN_OUTBOX = 'X'
COMMIT_WORK = 'X'
* IMPORTING
* SENT_TO_ALL = G_SENT_TO_ALL
* NEW_OBJECT_ID =
TABLES
PACKING_LIST = IT_PACKING_LIST
* OBJECT_HEADER =
CONTENTS_BIN = IT_ATTACHMENT
CONTENTS_TXT = IT_MESSAGE
* CONTENTS_HEX =
* OBJECT_PARA =
* OBJECT_PARB =
RECEIVERS = IT_RECEIVERS_FINAL
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.
* Push mail out from SAP outbox
SUBMIT RSCONN01 WITH MODE = 'INT' AND RETURN.
CLEAR: WA_IT_RECEIVERS, IT_RECEIVERS_FINAL, IT_MESSAGE, IT_PACKING_LIST.
REFRESH: IT_RECEIVERS_FINAL, IT_MESSAGE, IT_PACKING_LIST.
ENDLOOP.
ENDIF. "&---- END of Check the Sender Email id or SAP User id is got or not.
ENDFUNCTION.
2013 Mar 05 2:57 PM
FUNCTION Z_FI01_VIM_MAIL_TO_INT_EXT_USR .
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" REFERENCE(I_OBJTYPE) LIKE SWOTOBJID-OBJTYPE OPTIONAL
*" REFERENCE(I_OBJKEY) LIKE SWOTOBJID-OBJKEY OPTIONAL
*" REFERENCE(IT_IMAGE_IDS) TYPE /OPT/D_ARC_DOC_ST
*"----------------------------------------------------------------------
""Local Interface:
*" IMPORTING
*" REFERENCE(LV_EMP_USERID) TYPE FITP_USER-UNAME
*" REFERENCE(LV_EMP_EMAILID) TYPE PA0105-USRID_LONG
*"----------------------------------------------------------------------
***FUNCTION MODULE Z_FI01_VIM_MAIL_TO_INT_EXT_USR.
* *&Get the Email id and User id Whom you want to Send ******
DATA:IT_RECEIVERS TYPE STANDARD TABLE OF SOMLRECI1,
WA_IT_RECEIVERS LIKE LINE OF IT_RECEIVERS,
IT_RECEIVERS_FINAL TYPE STANDARD TABLE OF SOMLRECI1,
IT_PACKING_LIST TYPE STANDARD TABLE OF SOPCKLSTI1,
GD_DOC_DATA TYPE SODOCCHGI1,
WA_IT_PACKING_LIST LIKE LINE OF IT_PACKING_LIST,
PSUBJECT(90) TYPE C,
IT_MESSAGE TYPE STANDARD TABLE OF SOLISTI1,
WA_IT_MESSAGE LIKE LINE OF IT_MESSAGE,
C1(99) TYPE C,
C2(15) TYPE C,
NUM_LINES TYPE I,
WA_ACTORS TYPE SWHACTOR,
IT_ACTORS TYPE TABLE OF SWHACTOR,
IT_ACTORS_FINAL TYPE TABLE OF SWHACTOR,
LV_EMP_EMAILID TYPE PA0105-USRID_LONG,
G_SENT_TO_ALL TYPE SONV-FLAG,
IT_ATTACHMENT TYPE TABLE OF SOLISTI1,
WA_ATTACHMENT TYPE SOLISTI1,
LV_FILESIZE TYPE I,
G_TAB_LINES TYPE I,
LV_FILE_EXT TYPE CHAR27.
CALL FUNCTION '/PTGWFI/COA_W_RETRIEVE_USERS'
EXPORTING
ZPDCD = '005'
ZRSP = 'ZRECEIVER'
OBJTYPE = I_OBJTYPE
OBJKEY = I_OBJKEY
TABLES
USERLIST = IT_ACTORS
EXCEPTIONS
ROLE_NOT_RESOLVED = 1
OTHERS = 2.
* IF SY-SUBRC <> 0.
* ENDIF.
APPEND LINES OF IT_ACTORS TO IT_ACTORS_FINAL.
CALL FUNCTION '/PTGWFI/COA_W_RETRIEVE_USERS'
EXPORTING
ZPDCD = '005'
ZRSP = 'ZSCAN_AGENT'
OBJTYPE = I_OBJTYPE
OBJKEY = I_OBJKEY
TABLES
USERLIST = IT_ACTORS
EXCEPTIONS
ROLE_NOT_RESOLVED = 1
OTHERS = 2.
* IF SY-SUBRC <> 0.
* ENDIF.
APPEND LINES OF IT_ACTORS TO IT_ACTORS_FINAL.
SORT IT_ACTORS_FINAL BY OTYPE OBJID.
DELETE ADJACENT DUPLICATES FROM IT_ACTORS_FINAL.
*&-- Assign the Email id and User id to Whom you want to Send -------------&
LOOP AT IT_ACTORS_FINAL INTO WA_ACTORS.
CLEAR LV_EMP_EMAILID.
SELECT SINGLE USRID_LONG FROM PA0105 INTO LV_EMP_EMAILID
WHERE UNAME = WA_ACTORS-OBJID.
IF NOT LV_EMP_EMAILID IS INITIAL.
FREE WA_IT_RECEIVERS.
WA_IT_RECEIVERS-RECEIVER = LV_EMP_EMAILID. "&---- Assign Email id
WA_IT_RECEIVERS-REC_TYPE = 'U'. "&---- Send to External Email id
WA_IT_RECEIVERS-COM_TYPE = 'INT'.
WA_IT_RECEIVERS-NOTIF_DEL = 'X'.
WA_IT_RECEIVERS-NOTIF_NDEL = 'X'.
APPEND WA_IT_RECEIVERS TO IT_RECEIVERS .
ENDIF.
FREE WA_IT_RECEIVERS.
WA_IT_RECEIVERS-RECEIVER = WA_ACTORS-OBJID. "&----- Assign SAP User Id
WA_IT_RECEIVERS-REC_TYPE = 'B'. "&-- Send to SAP Inbox
WA_IT_RECEIVERS-COM_TYPE = 'INT'.
WA_IT_RECEIVERS-NOTIF_DEL = 'X'.
WA_IT_RECEIVERS-NOTIF_NDEL = 'X'.
APPEND WA_IT_RECEIVERS TO IT_RECEIVERS .
CLEAR WA_ACTORS.
ENDLOOP.
*& - END of Assign the Email id and User id to Whom you want to Send --&
"&--- Read the Number of lines in the Internal Table
DESCRIBE TABLE IT_RECEIVERS LINES NUM_LINES.
"&--- Check the Sender Email id or SAP User id is got or not.
IF NUM_LINES IS NOT INITIAL.
LOOP AT IT_RECEIVERS INTO WA_IT_RECEIVERS.
APPEND WA_IT_RECEIVERS TO IT_RECEIVERS_FINAL.
*&---------------------------------------------------------------------
* Add thetext to mail text table
*&----------------------------------------------------------------------
*&-- Subject of the mail -------------&*
PSUBJECT = 'Request for original invoice'(002).
*&-- Body of the mail ----------------&*
CLEAR WA_IT_MESSAGE.
C1 = 'Dear'(005).
C2 = WA_IT_RECEIVERS-RECEIVER.
CONCATENATE C1 C2 INTO
WA_IT_MESSAGE-LINE SEPARATED BY SPACE.
CONCATENATE WA_IT_MESSAGE-LINE ',' INTO WA_IT_MESSAGE-LINE.
APPEND WA_IT_MESSAGE TO IT_MESSAGE.
*** insert Blank Line *********************************************
CLEAR WA_IT_MESSAGE.
WA_IT_MESSAGE-LINE = ' '.
APPEND WA_IT_MESSAGE TO IT_MESSAGE.
******* Assign your Text below *************************************
CLEAR WA_IT_MESSAGE.
WA_IT_MESSAGE-LINE = 'A Test Mail sent from "Enteg InfoTech" through ABAP Program.'(003).
APPEND WA_IT_MESSAGE TO IT_MESSAGE.
*** insert Blank Line{} *********************************************
CLEAR WA_IT_MESSAGE.
WA_IT_MESSAGE-LINE = ' '.
APPEND WA_IT_MESSAGE TO IT_MESSAGE.
**********Assign your Text below ********************************
CLEAR WA_IT_MESSAGE.
WA_IT_MESSAGE-LINE = 'This mail generate automatically. Please do not reply.'(004).
APPEND WA_IT_MESSAGE TO IT_MESSAGE.
*********************************************************************
**********& Send EMAIL MESSAGE &*********************************
GD_DOC_DATA-DOC_SIZE = 1.
*Populate the subject/generic message attributes
GD_DOC_DATA-OBJ_LANGU = SY-LANGU.
GD_DOC_DATA-OBJ_NAME = 'SAPRPT'.
GD_DOC_DATA-OBJ_DESCR = PSUBJECT.
GD_DOC_DATA-SENSITIVTY = 'F'.
*Describe the body of the message
CLEAR WA_IT_PACKING_LIST.
REFRESH IT_PACKING_LIST.
WA_IT_PACKING_LIST-TRANSF_BIN = SPACE.
WA_IT_PACKING_LIST-HEAD_START = 1.
WA_IT_PACKING_LIST-HEAD_NUM = 0.
WA_IT_PACKING_LIST-BODY_START = 1.
DESCRIBE TABLE IT_MESSAGE LINES WA_IT_PACKING_LIST-BODY_NUM.
WA_IT_PACKING_LIST-DOC_TYPE = 'RAW'.
APPEND WA_IT_PACKING_LIST TO IT_PACKING_LIST.
*&------ Create File Attachment
CALL FUNCTION 'SCMS_HTTP_GET'
EXPORTING
CREP_ID = IT_IMAGE_IDS-ARCHIV_ID
DOC_ID = IT_IMAGE_IDS-ARC_DOC_ID
IMPORTING
LENGTH = LV_FILESIZE
TABLES
DATA = IT_ATTACHMENT
EXCEPTIONS
BAD_REQUEST = 1
UNAUTHORIZED = 2
NOT_FOUND = 3
CONFLICT = 4
INTERNAL_SERVER_ERROR = 5
ERROR_HTTP = 6
ERROR_URL = 7
ERROR_SIGNATURE = 8
OTHERS = 9.
IF SY-SUBRC = 0.
CONSTANTS LC_FM_NAME TYPE /PTGWFI/CONST VALUE 'FM_GET_IMG_FILE_EXT'.
CONSTANTS LC_PROD_CODE TYPE /PTGWFI/PDCD VALUE '005'.
DATA LV_FILE_EXT_FM TYPE /PTGWFI/VALUE.
CALL FUNCTION '/OPT/VIM_READ_CONSTANT'
EXPORTING
PROD_CODE = LC_PROD_CODE
PARAM_NAME = LC_FM_NAME
IMPORTING
PARAM_VALUE = LV_FILE_EXT_FM
EXCEPTIONS
NOT_FOUND = 1
OTHERS = 2.
CALL FUNCTION LV_FILE_EXT_FM
EXPORTING
I_ARCHIV_ID = IT_IMAGE_IDS-ARCHIV_ID
I_ARC_DOC_ID = IT_IMAGE_IDS-ARC_DOC_ID
IMPORTING
E_FILE_EXT = LV_FILE_EXT
EXCEPTIONS
ERR_GET_CONNECTIONS = 1
FILE_EXT_NOT_FOUND = 2
OTHERS = 3.
* Write Packing List for Attachment
WA_IT_PACKING_LIST-TRANSF_BIN = 'X'.
WA_IT_PACKING_LIST-HEAD_START = 1.
WA_IT_PACKING_LIST-HEAD_NUM = 1.
WA_IT_PACKING_LIST-BODY_START = 1.
DESCRIBE TABLE IT_ATTACHMENT LINES WA_IT_PACKING_LIST-BODY_NUM.
WA_IT_PACKING_LIST-DOC_TYPE = LV_FILE_EXT.
WA_IT_PACKING_LIST-OBJ_DESCR = 'Image'(005).
WA_IT_PACKING_LIST-OBJ_NAME = 'Image'(005).
* WA_IT_PACKING_LIST-doc_size = WA_IT_PACKING_LIST-body_num * 255.
WA_IT_PACKING_LIST-DOC_SIZE = LV_FILESIZE.
APPEND WA_IT_PACKING_LIST TO IT_PACKING_LIST.
CLEAR WA_IT_PACKING_LIST.
* Fill the document data and get size of attachment
GD_DOC_DATA-OBJ_LANGU = SY-LANGU.
* READ TABLE It_ATTACHMENT INTO Wa_ATTACHMENT INDEX G_TAB_LINES.
* w_document_data-doc_size = ( g_tab_lines - 1 ) * 255 + STRLEN( w_attachment ).
GD_DOC_DATA-DOC_SIZE = LV_FILESIZE.
ENDIF.
*&------ Call the Function Module to send the message to External and SAP Inbox
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
DOCUMENT_DATA = GD_DOC_DATA
PUT_IN_OUTBOX = 'X'
COMMIT_WORK = 'X'
* IMPORTING
* SENT_TO_ALL = G_SENT_TO_ALL
* NEW_OBJECT_ID =
TABLES
PACKING_LIST = IT_PACKING_LIST
* OBJECT_HEADER =
CONTENTS_BIN = IT_ATTACHMENT
CONTENTS_TXT = IT_MESSAGE
* CONTENTS_HEX =
* OBJECT_PARA =
* OBJECT_PARB =
RECEIVERS = IT_RECEIVERS_FINAL
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.
* Push mail out from SAP outbox
SUBMIT RSCONN01 WITH MODE = 'INT' AND RETURN.
CLEAR: WA_IT_RECEIVERS, IT_RECEIVERS_FINAL, IT_MESSAGE, IT_PACKING_LIST.
REFRESH: IT_RECEIVERS_FINAL, IT_MESSAGE, IT_PACKING_LIST.
ENDLOOP.
ENDIF. "&---- END of Check the Sender Email id or SAP User id is got or not.
ENDFUNCTION.
2014 Jul 30 10:18 AM
Hi,
you can use f.m. ARCHIVOBJECT_GET_URI that, given the business object type will return the archived document repository and ID, plus the pre-built URL to the stored document.
Regards,
Antonio
| User | Count |
|---|---|
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |