cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

workflow not showing attachment

safeer_shah2
Participant
0 Likes
4,168

Dear experts ,

I am using the following code to create a workflow item and later I am attaching a file, the system is showing the attachment is created but its not showing the attachement with the workitem.

here is the code

IF sy-subrc EQ 0.

                  CALL FUNCTION 'SWW_WI_ENABLE'

              EXPORTING

                wi_id                        WORKITEMID

               DO_COMMIT                    = 'X'

             EXCEPTIONS

               UPDATE_FAILED                = 1

               NO_AUTHORIZATION             = 2

               INVALID_TYPE                 = 3

               OTHERS                       = 4

                      .

            IF sy-subrc <> 0.

   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

           WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

            ENDIF.

          CALL FUNCTION 'DEQUEUE_E_WORKITEM'

           EXPORTING

             MODE_SWWWIHEAD       = 'E'

             CLIENT               = SY-MANDT

             WI_ID                WORKITEMID

             X_WI_ID              = ' '

             _SCOPE               = '3'

             _SYNCHRON            = ' '

             _COLLECT             = ' '

                    .

ENDIF.

*     LOOP AT files_tab

*       INTO wa_files.

CALL FUNCTION 'ENQUEUE_E_WORKITEM'

   EXPORTING

     MODE_SWWWIHEAD       = 'E'

     CLIENT               = SY-MANDT

     WI_ID                WORKITEMID

     X_WI_ID              = ' '

     _SCOPE               = '2'

     _WAIT                = ' '

     _COLLECT             = ' '

   EXCEPTIONS

     FOREIGN_LOCK         = 1

     SYSTEM_FAILURE       = 2

     OTHERS               = 3

            .

IF sy-subrc <> 0.

   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

           WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

data: l_retcode LIKE  SY-SUBRC,

l_att_id  type  SWR_ATT_ID,

lt_msg  type TABLE OF SWR_MESSAG.

        CALL FUNCTION 'SAP_WAPI_ATTACHMENT_ADD'

          EXPORTING

            workitem_id   WORKITEMID

            att_header    = l_header

            att_bin       = l_xstring

            do_commit     = 'X'

          IMPORTING

            return_code   = l_retcode

            att_id        = l_att_id

          TABLES

            message_lines = lt_msg.

        IF sy-subrc EQ 0.

                  CALL FUNCTION 'SWW_WI_ENABLE'

              EXPORTING

                wi_id                        = WORKITEMID

               DO_COMMIT                    = 'X'

             EXCEPTIONS

               UPDATE_FAILED                = 1

               NO_AUTHORIZATION             = 2

               INVALID_TYPE                 = 3

               OTHERS                       = 4

                      .

            IF sy-subrc <> 0.

   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

           WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

            ENDIF.

              CALL FUNCTION 'DEQUEUE_E_WORKITEM'

           EXPORTING

             MODE_SWWWIHEAD       = 'E'

             CLIENT               = SY-MANDT

             WI_ID                = WORKITEMID

             X_WI_ID              = ' '

             _SCOPE               = '3'

             _SYNCHRON            = ' '

             _COLLECT             = ' '

                    .

        ENDIF.

Accepted Solutions (1)

Accepted Solutions (1)

safeer_shah2
Participant
0 Likes

it should show the file like this.

pokrakam
Active Contributor
0 Likes

This should happen automatically. If not, you may need to bind the attachment to your task, possibly as a separate SOFM object.

safeer_shah2
Participant
0 Likes

Thanks mike, can you tell me how I can do it?

safeer_shah2
Participant
0 Likes

mike now i am trying to attach it as a seaprate object , can you please tell me what i should put in the input container becoz its giving me error, here is the code.

CALL FUNCTION 'SAP_WAPI_ATTACHMENT_ADD'

          EXPORTING

            workitem_id   WORKITEMID

            att_header    = l_header

            att_bin       = l_xstring

            do_commit     = 'X'

          IMPORTING

            return_code   = l_retcode

            att_id        = l_att_id

          TABLES

            message_lines = lt_msg.

COMMIT WORK.

      SWC_CREATE_OBJECT BO_SOFM       'SOFM'  l_att_id.

      SWC_SET_ELEMENT INPUT_CONTAINER 'SOFM' BO_SOFM.

pokrakam
Active Contributor
0 Likes

Hello Safeer,

I meant in your WF-Task binding.Check your log, _ATTACH_OBJECTS should contain a reference to your attachment, and it should be object type SOFM. Usually this is automatically bound to the workflow steps, but if something has been overwritten or I don't know what, it may be worth trying to bind this explicitly.

Regards,

Mike

safeer_shah2
Participant
0 Likes

Thanks Mike, from where I can check the log ? and how I can do the binding explicitly ?

pokrakam
Active Contributor
0 Likes

The log is accessible via the 'Log' button in the work item display.

The binding is accessible via the 'Binding' button in the step editor.

See screenshots you posted yesterday.

Vijay's posts also included screenshots of what an attachment should look like, and how to bind it explicitly.

Regards,

Mike

safeer_shah2
Participant
0 Likes

Hi Mike, the log and bidning showing the attachment. please check the screenshots.

pokrakam
Active Contributor
0 Likes

So from the timing it is clear what the problem is:

It looks like you are starting the WF and then adding the attachment. This means the WI has probably already been created by the time you add the attachment, or it is locked and is in process of creating the work item. Therefore WF doesn't bind the attachment, because it isn't there yet.

You can either start the WF by one of the internal FMs or classes that do allow attachments (Not sure why SAP don't let you do it in the WAPI), or you can add the attachment to the decision task instead of the workflow (probably easier). Use SAP_WAPI_GET_CHILD_WORKITEMS to determine the work item number, and then go from there.

Is there a reason for staring the WF directly? If you used events you could pass the attachments along as well...

Regards,

Mike

safeer_shah2
Participant
0 Likes

Mike , this workflow is form based , I am passing internal table into a container to populate the value in forms fields and based on approval and rejection further processing will start. its a simple workflow I am not using object type in it as I don't need. I also tried enque and deque function modules to check if the workitem locked but same result . can you tell me which other internal function I can use for it. thanks for your help.

pokrakam
Active Contributor
0 Likes

I would suggest trying the WAPI route first for two reasons:

1. You're already using a WAPI to start the WF and it works. You'd have to replace that.

2. It's the SAP-supported way...

3. It's easier

So after staring the WF, use SAP_WAPI_GET_CHILD_WORKITEMS to get the ID of the form task and add the attachment there. It should then bind automatically back to the WF once the task is completed.

Regards,

Mike

safeer_shah2
Participant
0 Likes

hi mike, I am getting two workitem ids, one is for workflow and second is I think for form.

safeer_shah2
Participant
0 Likes

thanks mike, its solved, really appreciate your help

pokrakam
Active Contributor
0 Likes

Great, glad we got there in the end.

Two suggestions: I would add a check to ensure the step is the one you want. TASK ID should be TS...whatever. Use that as your basis for finding the step.

Second, just in case of synchronization issues, I would put the get child items bit into a loop, if unsuccessful then WAIT UP TO 2 SECONDS and try again, maybe 30 times before failing (one minute).

Regards,

Mike

Answers (5)

Answers (5)

safeer_shah2
Participant
0 Likes

dear all, I found out that the file is being attached but not as the way it should be. please check the screenshot , I want to attach it as a proper attachment.

Richa_Gupta
Contributor
0 Likes

Hi Safeer,

Make sure that you are passing the correct workitem ID in the function module to add attachement.

Also, please have a look at below link. This might help you :

Regards,

Richa

safeer_shah2
Participant
0 Likes
safeer_shah2
Participant
0 Likes

Hi Richa,

I am using the same workitem ID , you can check from my code also .

Former Member
0 Likes

CALL FUNCTION 'SWW_WI_ENABLE'


What does that do?

pokrakam
Active Contributor
0 Likes

...and why are you doing EN/DEQUEUE?

WAPIs do their own transaction management, which you could be interfering with. Just call the WAPI with the commit flag set.

safeer_shah2
Participant
0 Likes

Rick its returning sy-subrc Zero

safeer_shah2
Participant
0 Likes

Mike I tried like you said still same

Former Member
0 Likes

Have you tried using "Commit" ?

safeer_shah2
Participant
0 Likes

yeah I tried it also , infact commit is part of the function module but again i tried it

Former Member
0 Likes

Hi Shah,

What is the return code of function module SAP_WAPI_ATTACHMENT_ADD?

Also while debugging check the messages from message_lines parameter of the same FM.

Thanks,

Vijay.

safeer_shah2
Participant
0 Likes

return code is 0

safeer_shah2
Participant
0 Likes

i am also getting the document ID

Former Member
0 Likes

Hi,

Where did you checking for attachments?

Is there any entry in ATTACH_OBJECTS workflow container?

Actually you need to bind the Workflow ATTACH_OBJECTS container to Task ATTACH_OBJECTS container.

Thanks,

Vijay.

safeer_shah2
Participant
0 Likes

the function module is returning the document id, how I can bind the containers , can you guide me ?

safeer_shah2
Participant
0 Likes

the system is showing document ID

Former Member
0 Likes

Hi Shah,

I hope your are trying to attach the attachment to Top work item. In this case, once the method executed, the attachments will be added to parent work item as below.

Then you have to bind as below to the required step[Approval Step /  Send mail] step.

Thanks,

Vijay.

safeer_shah2
Participant
0 Likes

Hi Vijay,

How I can see that attachment is part of the workitem or not?