Issue with attaching pdf in work item

Ali Husain mr_mago40 at hotmail.com
Thu Jan 5 06:13:55 EST 2012



Hello Ibrahim,
I think you have to COMMIT AND WAIT after saving. I'll post the whole code for the FM that gets the sofm table. You can then use the code i sent earlier to extract the keys and create the sofm object which should be bound to the attach_object container element:


FUNCTION Z_HR_IS_RESOLUTION_SEND_MAIL.

*"----------------------------------------------------------------------

*"*"Local Interface:

*"  IMPORTING

*"     REFERENCE(P_NUMBER) TYPE  PA9013-IS_NUMBER

*"     REFERENCE(P_PERNR) TYPE  PA9013-PERNR

*"  EXPORTING

*"     REFERENCE(E_SOFM) TYPE  SOFM

*"----------------------------------------------------------------------



  DATA: FM_NAME           TYPE RS38L_FNAM,

        FP_DOCPARAMS      TYPE SFPDOCPARAMS,

        FP_OUTPUTPARAMS   TYPE SFPOUTPUTPARAMS,

        IN_FPFORMOUTPUT   TYPE FPFORMOUTPUT,

        PDF_DATA          TYPE XSTRING,

        PDF_DATA2         TYPE XSTRING.

  DATA: WA_9013 TYPE PA9013.

  DATA: RT_MESSAGES TYPE BAPIRETTAB.

  DATA: WA_MESSAGES TYPE BAPIRET2.

  DATA IT_ITEMS TYPE FITV_ATTA_TTY.

  DATA WA_FOLD_OBJ  TYPE SWO_TYPEID.

  DATA WA_ATTA TYPE FITV_ATTA_STY.

  DATA L_OBJ TYPE SIBFLPORB.

  DATA UPDATE_DB TYPE C.

  UPDATE_DB = 'X'.

* GETTING THE DATA

  SELECT SINGLE * FROM PA9013 INTO WA_9013 WHERE PERNR EQ P_PERNR AND IS_NUMBER EQ P_NUMBER.

* PRINT:

* Sets the output parameters and opens the spool job

  FP_OUTPUTPARAMS-DEST = 'HQ18'.

  FP_OUTPUTPARAMS-NODIALOG = 'X'.

  FP_OUTPUTPARAMS-NOPREVIEW = 'X'.

  FP_OUTPUTPARAMS-NOPRINT = 'X'.

  FP_OUTPUTPARAMS-GETPDF = 'X'.

  CALL FUNCTION 'FP_JOB_OPEN'

    CHANGING

      IE_OUTPUTPARAMS = FP_OUTPUTPARAMS

    EXCEPTIONS

      CANCEL          = 1

      USAGE_ERROR     = 2

      SYSTEM_ERROR    = 3

      INTERNAL_ERROR  = 4

      OTHERS          = 5.

  IF SY-SUBRC <> 0.

  ENDIF.



* Get the name of the generated function module

  CALL FUNCTION 'FP_FUNCTION_MODULE_NAME'

    EXPORTING

      I_NAME     = 'ZF_HR_ISSUE_RES'

    IMPORTING

      E_FUNCNAME = FM_NAME.

  IF SY-SUBRC <> 0.

  ENDIF.

* Language and country setting (here US as an example)

  CALL FUNCTION FM_NAME                               "'/1BCDWB/SM00000059'

    EXPORTING

      /1BCDWB/DOCPARAMS        = FP_DOCPARAMS

      I_PA9013                 = WA_9013

*    EMP_COM                  =

*    LEAD_COM                 =

*    EMP_RES                  =

*    ILC_COM                  =

*    HR_COM                   =

*    VP_COM                   =

*    ILR_COM                  =

   IMPORTING

     /1BCDWB/FORMOUTPUT       = IN_FPFORMOUTPUT

   EXCEPTIONS

     USAGE_ERROR              = 1

     SYSTEM_ERROR             = 2

     INTERNAL_ERROR           = 3

     OTHERS                   = 4

            .

  IF SY-SUBRC <> 0.

  ENDIF.

  COMMIT WORK AND WAIT.



  FP_DOCPARAMS-LANGU   = 'E'.

  FP_DOCPARAMS-COUNTRY = 'US'.

  CALL FUNCTION 'FP_JOB_CLOSE'

*    IMPORTING

*     E_RESULT             =

    EXCEPTIONS

      USAGE_ERROR           = 1

      SYSTEM_ERROR          = 2

      INTERNAL_ERROR        = 3

      OTHERS               = 4.

  IF SY-SUBRC <> 0.

  ENDIF.

  PDF_DATA = IN_FPFORMOUTPUT-PDF.

  IF PDF_DATA IS NOT INITIAL.

    CONCATENATE WA_9013-PERNR WA_9013-SUBTY WA_9013-OBJPS WA_9013-SPRPS

                WA_9013-ENDDA WA_9013-BEGDA WA_9013-SEQNR INTO L_OBJ-INSTID RESPECTING BLANKS.



    L_OBJ-TYPEID = 'ZOBJ0006'.

    L_OBJ-CATID =  'BO'.

    CALL METHOD CL_FITV_GOS=>GET_LINKS

      EXPORTING

        IS_LPORB    = L_OBJ

      IMPORTING

        ET_ITEMS    = IT_ITEMS

        ET_MESSAGES = RT_MESSAGES.



    READ TABLE IT_ITEMS INTO WA_ATTA INDEX 1.

    CONCATENATE WA_ATTA-FOLTP  WA_ATTA-FOLYR  WA_ATTA-FOLNO

                WA_ATTA-OBJTP  WA_ATTA-OBJYR WA_ATTA-OBJNO INTO WA_FOLD_OBJ RESPECTING BLANKS.



    CALL METHOD CL_FITV_GOS=>DELETE

      EXPORTING

        IS_LPORB    = L_OBJ

        IV_ATTA_ID  = WA_FOLD_OBJ

        IV_CREATOR  = WA_ATTA-SAPNAM

        IV_OBJTP    = 'EXT'

        IV_OBJDES   = 'PDF_ATTACHMENT'

      IMPORTING

        ET_MESSAGES = RT_MESSAGES.

    COMMIT WORK AND WAIT.



    REFRESH IT_ITEMS.

    CALL METHOD CL_FITV_GOS=>GET_LINKS

      EXPORTING

        IS_LPORB    = L_OBJ

      IMPORTING

        ET_ITEMS    = IT_ITEMS

        ET_MESSAGES = RT_MESSAGES.



    CALL METHOD CL_FITV_GOS=>SAVE

      EXPORTING

        IV_NAME        = 'PDF_ATTACHMENT.PDF'

*      IV_CONTENT     =

        IV_CONTENT_HEX  = PDF_DATA

        IS_LPORB       = L_OBJ

        IV_OBJTP       = 'EXT'

      RECEIVING

        RT_MESSAGES    = RT_MESSAGES .



    COMMIT WORK AND WAIT.

    READ TABLE RT_MESSAGES INTO WA_MESSAGES WITH KEY TYPE = 'E'.

    IF SY-SUBRC = 0.

      CLEAR UPDATE_DB.

    ENDIF.

    CALL METHOD CL_FITV_GOS=>GET_LINKS

      EXPORTING

        IS_LPORB    = L_OBJ

      IMPORTING

        ET_ITEMS    = IT_ITEMS

        ET_MESSAGES = RT_MESSAGES.



    READ TABLE IT_ITEMS INTO WA_ATTA INDEX 1.

    MOVE-CORRESPONDING WA_ATTA TO E_SOFM.

    E_SOFM-MANDT = SY-MANDT.

    E_SOFM-DOCTP = WA_ATTA-OBJTP  .

    E_SOFM-DOCYR = WA_ATTA-OBJYR .

    E_SOFM-DOCNO = WA_ATTA-OBJNO.

    IF UPDATE_DB = 'X'.

      CONCATENATE E_SOFM-FOLTP E_SOFM-FOLYR E_SOFM-FOLNO E_SOFM-DOCTP E_SOFM-DOCYR E_SOFM-DOCNO E_SOFM-FORNO

      INTO WA_9013-FOL_PATH RESPECTING BLANKS.

      MODIFY PA9013 FROM WA_9013.

    ENDIF.

    COMMIT WORK AND WAIT.

  ENDIF.

ENDFUNCTION. 

Regards,Ali
From: ikhansap at gmail.com
Date: Thu, 5 Jan 2012 14:21:02 +0400
Subject: Re: Issue with attaching pdf in work item
To: mr_mago40 at hotmail.com
CC: sap-wug at mit.edu

Hi Ali,
  I tried out the way you have mentioned, but its not working. Please find the code below, let me know if I am missing something.
When I debugged this code I found that message parameter(t_message.) from SAVE method is empty, but after the GET_LINKS method call the parameter et_items is not returning anything.



  CALL METHOD cl_fitv_gos=>save
    EXPORTING
      iv_name        = 'Test.pdf'
      iv_content_hex = zxstring
      is_lporb       = ls_lprob
      iv_objtp       = 'EXT'
    RECEIVING


      rt_messages    = lt_message.

  CALL METHOD cl_fitv_gos=>get_links
    EXPORTING
      is_lporb    = ls_lprob
    IMPORTING
      et_items    = lt_attach
      et_messages = lt_message1.



Regards
IK

On Thu, Jan 5, 2012 at 11:59 AM, Ali Husain <mr_mago40 at hotmail.com> wrote:







Hello,
Yeah i forgot to mention the saving part. It should work that way.

From: ikhansap at gmail.com


Date: Thu, 5 Jan 2012 10:15:12 +0400
Subject: Re: Issue with attaching pdf in work item
To: sap-wug at mit.edu
CC: mr_mago40 at hotmail.com



Hi Ali,
  Thanks for your reply. I have a doubt on your approach. Before calling CL_FITV_GOS=>GET_LINKS  i think we should use CL_FITV_GOS=>SAVE to save the pdf document(attachment) to GOS and then used GET_LINKS method to get the key of the attachment. Correct me if I am wrong.





Regards
Ibrahim

On Wed, Jan 4, 2012 at 1:49 PM, Ali Husain <mr_mago40 at hotmail.com> wrote:









Hello Ibrahim,
I've done that in a different way and it was working fine with me. After you convert to pdf, you can call the method CL_FITV_GOS=>GET_LINKS and pass it your BOR object along with the keys. The sofm table reference you get back you can then perform the following: 




LOOP AT ex_sofm INTO ls_sofm.  CONCATENATE ls_sofm-foltp ls_sofm-folyr ls_sofm-folno  ls_sofm-doctp ls_sofm-docyr ls_sofm-docno ls_sofm-fortp ls_sofm-foryr ls_sofm-forno INTO lv_key RESPECTING BLANKS.




  swc_create_object lr_sofm 'SOFM' lv_key.  APPEND lr_sofm TO lt_sofm.  CLEAR: ls_sofm, lv_key,lr_sofm.ENDLOOP.
swc_set_table container 'EX_SOFM' lt_sofm.




You can then bind lt_sofm with the attach_objects container element and the attachment should open when displaying the work item.
Hope this helps,Ali





> From: sap-wug-request at mit.edu
> Subject: SAP-WUG Digest, Vol 86, Issue 3
> To: sap-wug at mit.edu




> Date: Tue, 3 Jan 2012 12:13:09 -0500
> 
> Send SAP-WUG mailing list submissions to
> 	sap-wug at mit.edu
> 
> To subscribe or unsubscribe via the World Wide Web, visit




> 	http://mailman.mit.edu/mailman/listinfo/sap-wug
> or, via email, send a message with subject or body 'help' to
> 	sap-wug-request at mit.edu




> 
> You can reach the person managing the list at
> 	sap-wug-owner at mit.edu
> 
> When replying, please edit your Subject line so it is more specific




> than "Re: Contents of SAP-WUG digest..."
> 
> 
> Today's Topics:
> 
>    1. Issue with attaching pdf in work item (Ibrahim)
> 
> 
> ----------------------------------------------------------------------




> 
> Message: 1
> Date: Tue, 3 Jan 2012 16:06:34 +0400
> From: Ibrahim <ikhansap at gmail.com>
> Subject: Issue with attaching pdf in work item




> To: "SAP Workflow Users' Group" <SAP-WUG at mit.edu>
> Message-ID:
> 	<CADb5asq-DCxY0HidihMp9BYmzuCb3BAF6CYJad33W25+2yeN-Q at mail.gmail.com>




> Content-Type: text/plain; charset="iso-8859-1"
> 
> Dear Friends,
>   I am trying to attach Adobe form output to a work item and send it in for
> approval. I have converted the Adobe form output to binary format inside




> the program and passed it to the workflow container while starting the
> workflow and then inside the workflow i used the below method code to
> convert the binary to xstring format and then attach it to the workitem.




> But when I open the attachment from business workplace I am getting an
> error that "*There was an error opening this document, the file is damaged
> and could not be repaired*". I tried to debug the method and everything




> seems to be fine, even I check the Adobe output by sending it as an email
> attachment and I am able to open the same Adobe form attachment in the
> email. So I suspect that I am doing something wrong while converting the




> same in the workflow. Please advise what would be wrong with the below code.
> 
> 
>  DATA:  wid TYPE swwwihead-wi_id,
>             op_len TYPE wsuser-wsuserinstanceno,
>            it_solix_tab TYPE solix-line OCCURS 0.




> 
>  DATA : zswr_att_header TYPE swr_att_header,
>            zswr_att_id     TYPE swr_att_id,
>            lo_sofm TYPE swc_object,
>            zxstring TYPE xstring.
> 
>  swc_get_element container 'WID' wid.




>  swc_get_element container 'OP_LEN' op_len.
>  swc_get_table container 'IT_SOLIX_TAB' it_solix_tab.
> 
>  CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
>    EXPORTING
>      input_length = op_len




>    IMPORTING
>      buffer       = zxstring
>    TABLES
>      binary_tab   = it_solix_tab.
> 
>  zswr_att_header-file_type = 'B'.
>  zswr_att_header-file_name = 'Attachment.pdf'.




>  zswr_att_header-file_extension = 'PDF'.
>  zswr_att_header-language = 'EN'.
>  BREAK-POINT.
>  CALL FUNCTION 'SAP_WAPI_ATTACHMENT_ADD'
>    EXPORTING
>      workitem_id = wid




>      att_header  = zswr_att_header
>      att_bin     = zxstring
>   IMPORTING
>     att_id      = zswr_att_id.
> 
> swc_create_object lo_sofm 'SOFM' zswr_att_id-doc_id.
> swc_set_element container 'SOFM' lo_sofm.




> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: http://mailman.mit.edu/pipermail/sap-wug/attachments/20120103/40efd24a/attachment-0001.htm




> 
> ------------------------------
> 
> _______________________________________________
> SAP-WUG mailing list
> SAP-WUG at mit.edu
> http://mailman.mit.edu/mailman/listinfo/sap-wug




> 
> 
> End of SAP-WUG Digest, Vol 86, Issue 3
> **************************************
 		 	   		  

_______________________________________________

SAP-WUG mailing list

SAP-WUG at mit.edu

http://mailman.mit.edu/mailman/listinfo/sap-wug



 		 	   		  

 		 	   		  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.mit.edu/pipermail/sap-wug/attachments/20120105/5b041e8e/attachment-0001.htm


More information about the SAP-WUG mailing list