Application Development 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: 

Perform on commit or Update function module

former_member576008
Active Participant
0 Kudos

Hello Experts,

I am working on a basic requirement like sending invoice outputs as email attachment. For this i have created a Z include and attached it to NACE.

Its working fine. Further to my requirement i need update the invoice in DMS. For this i am using the same include. After sending mail part i have written code for DMS.

I am able to generate the DMS number using BAPI_DOCUMENT_CREATE2 and attaching document using CVAPI_DOC_CHECKIN.

The problem is now after calling create BAPI and chekin  Bapi, i am using commit BAPI. This is generating a runtime error like not use commit statement or BAPI before system commit.

To over come this i read, update fm and perform is commit is available. Now i have created a FM, processing type as update and Coll.run.

inside Fm if use commit i am getting run time error, if dont use the dms number is not generating.

Please suggest how to proceed further.

Regards,

NN

1 ACCEPTED SOLUTION

raymond_giuseppi
Active Contributor

You must not use any commit either in update task or in a perform at commit form. So create a RFC enabled wrapper that will execute the BAPI and the COMMIT-WORK, and call this FM IN BACKGROUND TASK.

Regards,

Raymond

10 REPLIES 10

former_member188827
Active Contributor
0 Kudos

You cannot use commit work statement in an update function module. Please refer to the following link:

http://scn.sap.com/thread/1665041

I believe you are using two commit work statements one after BAPI_DOCUMENT_CREATE2 and other after .CVAPI_DOC_CHECKIN. If you don't use first commit work then the bapi does not create document and hence attachment would not happen. What you can do is that just use BAPI_DOCUMENT_CREATE2 in the update function module without commit statement. This would be commited automatically after the system commit. For creating attachment,  event of object "DRAW" (I think "CREATED" ) is raised whenever a DMS document is generated(check tcode SWEL). You can call CVAPI_DOC_CHECKIN to add attachment in a new FM which would be entered as receiver in SWE2.

Regards

0 Kudos

Hi,

Yes, you got my trouble / point.

Event 'CREATED' is triggered when i created in CV01N but not using the BAPI_DOCUMENT_CREATE2. Checked it SWEL.

Am i missing any parameter to trigger an event? let me check. Please suggest if there is no event triggered using event.

Regards,

NN

0 Kudos

then try raising the event using FM "SWE_EVENT_CREATE" after the bapi "BAPI_DOCUMENT_CREATE2".

Regards

aferngas
Active Participant
0 Kudos

Hi NK,

Probably your error becomes because these code it's in UPDATE TASK execution. In this type of execution is prohibited the use of COMMIT WORK because it's automatically called.

Regards,

Alex

0 Kudos

Yes, that's what my problem. Please suggest any alternatives.

0 Kudos

Hi,

Try to use the same bapi 'BAPI_DOCUMENT_CREATE2' to attach the files as well, just pass the attachment in the tables parameter 'DOCUMENTFILES'. There is no need to of another function module 'CVAPI_DOC_CHECKIN' for uploading.

Thanks & Regards

Bala Krishna

aferngas
Active Participant
0 Kudos

Hi NK,

You can try taking all the code and encapsulated in a module function and call it in another thread by asynchronously RFC call. Obviously your RFC destination it will be the same system (loopback) and it will need a COMMIT inside this remote call.

Regards,

Alex

former_member223133
Active Participant
0 Kudos

Hi,

Have you used "BAPI_TRANSACTION_COMMIT" to commit the changes?

Since it will call a function module to refresh the buffer if previous BAPI have any errors or not...With commit functionality.

Hope it will help you.

Thanks
Gangadhar

raymond_giuseppi
Active Contributor

You must not use any commit either in update task or in a perform at commit form. So create a RFC enabled wrapper that will execute the BAPI and the COMMIT-WORK, and call this FM IN BACKGROUND TASK.

Regards,

Raymond

0 Kudos

Hi Raymond,

Thank you, its working.

I have created a RFC FM and a report. From FM scheduled the report using JOB_OPEN/CLOSE.

I have moved the values using EXPORT values TO DATABASE indx(st) ID indxkey and imported the same in the report. Because export/import abap memory is not working in scheduled jobs.

My DMS document number is generated and pdf document attached.

I have called the FM like below


call function FM starting new task XXXX.

In update debugging a separate window is opened and my coding is working perfectly.

requirement is to show a pop-up with DMS number. How to display the DMS number since its executing separately from the original t-code. Also how to clear the export database memory, because examples are for available only for free abap memory.

Regards,

NK