Application Development and Automation 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: 
Read only

ABAP for Open Text

Former Member
0 Likes
3,230

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

5 REPLIES 5
Read only

ldzierza
Participant
0 Likes
1,506

Hi,

yes - it is possible.

after i find FM i give you more details.

Lechoo

Read only

ldzierza
Participant
0 Likes
1,506

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.

Read only

ldzierza
Participant
0 Likes
1,506

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.

Read only

ldzierza
Participant
0 Likes
1,506

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.

Read only

Former Member
0 Likes
1,506

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