How Commit works?

Hello all,
A question:
We are having some problem running a JOB. The job is taking too much time to finish. However at end the Commit occurs.
Let´s suppose:
We are running a Program (in BACKEND) that updates a table
The Backend process has not finished (meaning: commit does not happen yet).
At same time, in a FRONTEND (portal), user is doing changes that affect the same program above.
The question is:
At the moment user makes the change(s), can this change occurs in the Backend process which is running?
Perhaps the question should be:
“The entry(ies) in the Backend Process is LOCK when program is running? Then in this case if user makes a change in Frontend the change is not gonna happen in the Backend process? “
Can someone help me out to understand this process.
Thanks in advance!
Regards,
Barbara

Hello Naimesh
Many thanks for your replay!!!! I am new in this subject and I have some little questions to be totally clear.
Following what you said in your last statement:
<i>“…when you JOB is modifying some data and the commit work doesn't happen yet and somebody changes those data and save...then the data which was entered by user will be overwritten by the job's COMMIT WORK.”</i>
Questions:
1) In this case this will happen if the program is running without LOCK object, isn’t it?
In our situation here: The JOB is take too much time to run
2) Is that possible that this occurs because the program is running without LOCK object?
3) Is there anyway to check if the program did run with or without LOCK object?
Many Thanks,
Barbara

Similar Messages

  • Problem with COMMIT WORKS command

    Hello all,
    I’ve a little problem. It seams that I don’t understand how ‘commit work’ command works. When I’m calling transaction with USING parameter:
    CALL TRANSACTION 'FPSA' USING itab_bdcdata.
    When inside of that transaction ‘Commit works’ occur, than commit is being executed and transaction is ending which is not good, because there is still code left that should be executed.
    When I run transaction without USING
    CALL TRANSACTION 'FPSA'
    Everything works fine. I’ve tried using UPDATE addition in CALL FUNCTION, but without result. Does anybody know what is the problem?

    This is meant to work exactly as you described:
    A transaction called with CALL TRANSACTION USING returns right after COMMIT occurs - if you don't provide any additional options.
    There is a way to make such transaction continue with the code after the commit. You just have to use "OPTIONS FROM" addition of the "CALL TRANSACTION" statement - parameter RACOMMIT.
    For more information put the cursor on CALL TRANSACTION statement in your abap code and press F1.
    regards
    good luck

  • In background job  how commit & rollback work works?

    Hello Friends,
         My requirement is, to fetch all sales order items based on some condition and load them into one table say OCC1 in job J1. Now the second requirement is to upload the job information J1 with job name, user name, end date in second table say OCC2 in job J2.
         My question is if there is some error I found while processing job 2 I have to rollback entire work which means I have to remove all records those I have inserted in to table OCC1. Can any one suggest me how to handle such problem? Some how I am able to create two job and update the tables. However, what about rollback work? Whether there is an implicit commit work after every background job? I am working on SAP 4.6C version.
    Thanks,
    Amol C.

    I think by using just ROLL BACK work it will not rollback your first job's data.
    You need to make some mechanism which can delete the data from OCC1 if the J2 got error.
    Regards,
    Naimesh Patel

  • How to use commit work as per the requirement?

    Hi all,
           Here i have a requirement about database table updation. I have to update a database table, at the time of doing commit work it has to check the following condition .
    The data should be split up in different groups or records of no more than 2000 after which a commit to the database is executed.
    So can anybody help me in this regard with a piece of code? and i want to know during updation how to lock the data base table and how to unlock? Is there any standard function modules to call regarding this locking and unlocking?
    Thanks & Regards
    Naidu

    which table is that? and do you have any code so far?
    Logically you need to loop thru your records, lock the table for that record, update the table , unlock the tabel record, count the entires so far, andi f it is 2000 issue commit work.

  • How to use commit work in class cl_bls

    Hi,
    When i have used commit work after email sent,
    it goes into dump.
    Here is the code segment:
      try.
        -------- create persistent send request ------------------------
          send_request = cl_bcs=>create_persistent( ).
        -------- create and set document -------------------------------
          pdf_content = cl_document_bcs=>xstring_to_solix( pdf_tab ).
          document = cl_document_bcs=>create_document(
                i_type    = 'PDF'
                i_hex     = pdf_content
                i_length  = bytecount
                i_subject = sub ).  "#EC NOTEXT
        add document object to send request
          send_request->set_document( document ).
        --------- add recipient (e-mail address) -----------------------
        create recipient object
          recipient = cl_cam_address_bcs=>create_internet_address( recip-recip ).
        add recipient object to send request
          send_request->add_recipient( recipient ).
        ---------- send document ---------------------------------------
          sent_to_all = send_request->send( i_with_error_screen = 'X' ).
         commit work.
          if sent_to_all is initial.
            message i500(sbcoms) with recip.
          else.
            message s022(so).
          endif.
      ------------ exception handling ----------------------------------
      replace this rudimentary exception handling with your own one !!!
        catch cx_bcs into bcs_exception.
          message i865(so) with bcs_exception->error_type.
      endtry.
    What could be the reason?
    Is there any way to use commit work in class while sending email as in SO_NEW_DOCUMENT_ATT_SEND_API1 fm?
    Thanks.

    Hi,
    I have used
    submit program.....
    but in update task i have used it.
    "Z_SD_ORDER_UPDATE".    program is a print driver program.
    However error says:
    There is probably an error in the program
    "Z_SD_ORDER_UPDATE".  
    This program is triggered in the update task. There, the
    following ABAP/4 statements are not allowed:
    -  CALL SCREEN
    -  CALL DIALOG
    -  CALL TRANSACTION
    -  SUBMIT
    I used submit as:
      WAIT UP TO 2 SECONDS.
      SUBMIT rsconn01 WITH mode = 'INT'
                      WITH output = ' '
                    AND RETURN.
    Instead of submit i want to use commit work but i also get a dump after commit work too.
    How can i use commit work in above code?
    Thanks.

  • How commit statement works

    Hi,
    I want to know the procedure of how commit statement executes.
    I have a transaction in which I have updated 10000 rows of table A having 10lakh records and after this update I am updating 1 row in table B having 1000 records.
    after both these update statement I am executing commit statement.
    so, how this commit will work? does it commits the data in sequential order of updation of table A and B or it will be parallel for both the tables? Does it take time to do the commit?
    Thanks

    Arjit wrote:
    Hi,
    I want to know the procedure of how commit statement executes.
    I have a transaction in which I have updated 10000 rows of table A having 10lakh records and after this update I am updating 1 row in table B having 1000 records.
    after both these update statement I am executing commit statement.
    so, how this commit will work? does it commits the data in sequential order of updation of table A and B or it will be parallel for both the tables? Does it take time to do the commit?
    Thankswhen all else fails Read The Fine Manual
    http://docs.oracle.com/cd/E11882_01/server.112/e25789/sqllangu.htm#sthref864
    http://docs.oracle.com/cd/E11882_01/server.112/e25789/transact.htm#sthref1302
    http://docs.oracle.com/cd/E11882_01/server.112/e25789/transact.htm#sthref1320

  • How to count " How many times the ' commit work ' Statement is executed.

    Hi all sap Champions,
    One of the client requirement, That is
    How to count " How many times the ' commit work ' Statement is executed.
    It's urgent.
    Please can anybody help me for this.
    Thanks
    Basu

    hi,
    when report try like this.
    declare a variable as
    data: counter type i value 0.
    COMMIT.
    counter = counter + 1.
    write:/10 counter 'NO. OF TIMES COMMIT WORKED'.

  • How to execute Update Module FM after final commit work for a T-code.

    Hello Folks,
    I have a bit complex issue with my current object.
    We have modified MM41/MM42 transactions and added a subscreen to fulfill the requirement.
    We have designed the subscreen and embedded the same to MM41/MM42 through SPRO configuration.
    Now for update business logic,i am trying to execute one Function module(Update Module) in update Task...so that it will be executed once after the final commit work will be done for MM41/MM42.
    But its not executing.
    To fulfill my requirement i need to execute the FM only after Final Commit work for MM41/MM42.
    Please suggest in this regard.
    Even i can see few BADI's which are triggering through MM01/MM02 but not through MM41/MM42.
    BADI_ARTICLE_REF_RT
    BADI_MATERIAL_CHECK
    BADI_MAT_F_SPEC_SEL
    Code with which i am trying is given below.
    After PAI event of the subscreen---
    1:        MODULE USER_COMMAND_9001.
    2:       MODULE user_command_9001 INPUT.
                        PERFORM sub_save_mara ON COMMIT.
              ENDMODULE.
    3:       FORM sub_save_mara.
                         CALL FUNCTION 'ZMMUPDATE_MARA_APPEND_STRUCT' "IN UPDATE TASK
                                        EXPORTING
                                                 materialno = gv_matnr
                                                 appendmara = ty_zzmara.
             ENDFORM.                    "sub_save_mara
    4:                FUNCTION zmmupdate_mara_append_struct.
                      ""Update Function Module:
                       ""Local Interface:
                      *"  IMPORTING
                   *"     VALUE(MATERIALNO) TYPE  MATNR
                   *"     VALUE(APPENDMARA) TYPE  ZZMARA
    Data Declaration for Local use
      DATA : w_mara TYPE mara.
    Selecting the latest values for the material.
      SELECT SINGLE * FROM mara INTO w_mara WHERE matnr = materialno.
      IF sy-subrc = 0.
      Move the ZZMARA values to structure MARA
        MOVE-CORRESPONDING appendmara TO w_mara.
      Update the values in table MARA.
        MODIFY mara FROM w_mara.
      ENDIF.
    ENDFUNCTION.
    Kindly suggest.Thanks in advance.
    Regards
    Ansumesh

    Hi..
    The code given by me will work fine provided the Final commit should happen.
    Because to execute FM with update task,final commit work should happen which is mandatory and after that it will call the update task.
    In my case final commit work was not happeneing because..SAP standard program was not able to detect wether there is any change in my sub-screen or not as the standard program & my custom program,subscreens are different.
    As it was not able to detect the change,so final commit was not happening and hence update task also.
    To provide the reference of change in my subscreen to standard program ,i set a flag as per the change in the subscreen
    And exported the same to memory.
    Then Implemented one enhacement spot in MATERIAL_CHANGE_CHECK_RETAIL Fm where i have Imported the flag value.
    Based on my custom flag value,i have set one standard flag FLG_AENDERUNG_GES which tells SAP standard program for MM42 wether any change has happened or not.
    The above solved my purpose.
    Regards
    Ansumesh

  • CRM_ORDER_SAVE. how to identify the lock after commit work and save

    I am updating a status, using crm_order_save , then commit work and wait and crm_order_initialize before i update the status to next status for the same item.
    I am facing an error when i change the same item status to another status i get error some times cannot change the error.. if i keep commit work an save and wait up to 20 seconds it works ..
    Is there any way to look for the lock object for the header guid.. instead of putting wait up to 20 secs.
    what is the FM or lock object to check the order is not committed or still system is updating or its in middleware processing.

    hi,  I remeber the there is a function name like  CRMXXDocumentXXlock  which is be called in standard program to maintain order.
    I can't login a crm server, can't offer you the accurate name, you can do a search in system.

  • How can i set the IDOC Status to 03 without doing a "COMMIT WORK"

    Hello Geeks,
       I want to set the status of the Outgoing IDOC to 03 , without doing a "COMMIT WORK" . Actually only after i do a commit work are my IDOCs dispatched. But with a commit work the IDOCs are dispatched immidiately. I do not want to dispatch it immidiately. Instead i want to hol the IDOCs till my LUW finishes , but the IDOC status should be set to "03" instead of "30".
    Thanks,
    Bashir

    Hi,
    After collecting all the idocs which are under status 30, run the program RSEOUT00 to change the status from 30 to 03.
    If you want to do this process automatically then set the program RSEOUT00 in background.
    Regards,
    Lokeswari.

  • Reg. commit work in a follow-up action

    friends
       i am using the following approach to solve a requirement which is posted in this thread..How to send a mail after a usage decision is made in QA11?
    got a nice reply too
      i have defined a follow-up action and assigned a customized mail-sending fm to it..my doubts are, i am on 4.7..am able to send the mail to an internal id, but the problem is without using commit work and submit rsconn01 commands, am failing in doing the same...i have read in a thread that commit work or submit (if the called program uses commit work) will cause data inconsistencies and will trigger locks if it's used in any user-exit or badi...but in my case, when will a follow-up action actually take place? will it happen after all the database commits? if so, then i believe that even i use commit work and submit commands in my z mail sending fm, it wouldn't cause any problems...am just sort of afraid whether this approach is the correct one? or triggering the mail code from the last user exit or badi itself will solve the purpose? i believe not..please guide me on this friends...helpful replies will be appreciated and awarded..thanks in advance
    Regards,
    Sathish. R

    less views and no answers:-(

  • COMMIT WORK AND WAIT does not work

    Hello,
    I know this question has been asked many times in various forums. But the fact remains that there is no definitive solution found for this problem which does not involve WAIT UP TO n SECONDS or SELECT until the DB commit has been completed.
    We have an IDoc based inbound interface for creating Project Defintion and WBS Elements. Here is how the code looks like in the processing function module:
    * Create Project Defintion
    CALL FUNCTION 'BAPI_PROJECTDEF_CREATE'
      EXPORTING
        project_definition_stru = lwa_proj_bapi
      TABLES
        e_message_table         = lt_messages.
    * If no errors
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait = 'X'.
    * Other code
    * Create WBS Element (BAPI could not be used because not all fields are allowed to be updated)
    CALL TRANSACTION 'CJ11'
    Now while creating the WBS Element, transaction CJ11 returns an error that 'Project does not exist'. This is not correct because the same Project was successfully created in the previous step.
    It is clear that the problem is because of the delay in database commits.
    This happens only with few IDoc's and not all of them. And of course, the problem does not occur if I induce WAIT UP TO n SECONDS after BAPI_TRANSACTION_COMMIT. But this is not the best practice.
    The question is why BAPI_TRANSACTION_COMMIT does not wait even though we are forcing it to?
    Thanks in advance
    Sagar Acharya

    Suhas wrote:
    But i am baffled that although the COMMIT has happened earlier why is the data not updated in the DB ?
    Well, it's just a [COMMIT WORK|http://help.sap.com/abapdocu_70/en/ABAPCOMMIT.htm] and not a [COMMIT WORK AND WAIT|http://help.sap.com/abapdocu_70/en/ABAPCOMMIT.htm#@@AND%20WAIT@@COMMIT%20WORK@@]. Let me quote the ABAP help:
    If you do not specify the addition AND WAIT, the program does not wait until the update work process has executed it (asynchronous updating), but instead is resumed immediately after COMMIT WORK. However, if the addition AND WAIT is specified, program processing after COMMIT WORK will not continue until the update work process has executed the high-priority update function modules (synchronous updating).
    @Sagar Acharya: Well, I thought you were looking for an explanation why sometimes the project isn't created (and you only had posted coding that showed details for step 1) - I'm trying hard, but my mind reading skills are rather limited yet...
    So let's think about step 2 and 3: I assume that you made sure that your coding always references the correct WBS element. Again the commit (without wait) is done already via CJ11 (e.g. check form BUCHEN in SAPLCJWB). I'd expect though that the synchronous update mode should make this work. Since it doesn't, I'd try local update mode, which is what I'd choose in your case anyhow.
    Apart from that my mind is pretty blank, except for the usual silly things to check. E.g. are you sure you're coding is correct, you are handling all return messages and log them for inspection later (e.g. application log), you are certain that the WBS was actually created by the same IDoc that throws the fit (and IDoc was not reprocessed), etc.
    So maybe somebody else has better ideas...

  • Lock and Commit work in INBOUND IDOC

    Hi Experts,
    Problem is about lock and commit work
    i need to receive idoc for Good receipt for purchase order.
    For one Purchase Order i can receive many good receipt Idoc at the same time and when first came in Lock the Purchase Order and further idoc came after give Errors becouse purchase Order is lock.
    Problem is not the serialization (the sequence is correct), but is the lock.
    Any idea on how to fix this issue? (maybe there is some std settings??)
    Cheers
    Boris

    Hello Guys
    the packetsize is already set to 1 but the problem still again..... and where i can find this setting   "in Customizing choose Engineering Change Management ® Define statuses for master record". ?
    Any way i try in function module in inbound to check the lock object with this sample code:
          DO 30 TIMES.
            CALL FUNCTION 'ENQUEUE_EMEKKOS'
             EXPORTING
               mode_ekko            = 'S'
               mandt                = sy-mandt
               ebeln                = goodsmvt_item-po_number
               _scope               = '2'
             EXCEPTIONS
               foreign_lock         = 1
               system_failure       = 2
               OTHERS               = 3.
            IF sy-subrc <> 0.
              WAIT UP TO 1 SECONDS.
            ELSE.
              EXIT.
            ENDIF.
          ENDDO.
    but also with this....problem syill again...
    thanks
    Boris

  • Need help: Sending mail to internet address without commit work statement

    Dear Experts,
            I have a problem in sending mails from sap to internet address.Am using the function module
    SO_NEW_DOCUMENT_SEND_API1 and am passing parameters like,
    CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1'
         EXPORTING
              DOCUMENT_TYPE  = 'RAW'
              DOCUMENT_DATA  = DOC_CHNG
              PUT_IN_OUTBOX  = 'X'
         TABLES
              OBJECT_CONTENT = OBJCONT
              RECEIVERS      = RECLIST
         EXCEPTIONS
              TOO_MANY_RECEIVERS         = 1
              DOCUMENT_NOT_SENT          = 2
              OPERATION_NO_AUTHORIZATION = 4
              OTHERS                     = 99.
    submit rsconn01 with mode = 'INT'
                        with output = 'X'
                        and return.
    My problem here is,with the commit work statement after FM, the mail is triggering correctly.but if, am not using the commit work statement,at the very first time of execution mail is not triggering, and the second time of execution first mail is triggering like wise it is going.The status of the message is waiting in queue.
    i have refresh receiver's list also.I want to use this concept in badi.So anyone can pls help me,how to send a mail without commit work statement.
    Thanks in advance.

    There is a parameter Commit_Work pass it as 'X'
    <code>
    CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1'
    EXPORTING
    DOCUMENT_TYPE = 'RAW'
    DOCUMENT_DATA = DOC_CHNG
    PUT_IN_OUTBOX = 'X'
    commit_work = 'X'
    TABLES
    OBJECT_CONTENT = OBJCONT
    RECEIVERS = RECLIST
    EXCEPTIONS
    TOO_MANY_RECEIVERS = 1
    DOCUMENT_NOT_SENT = 2
    OPERATION_NO_AUTHORIZATION = 4
    OTHERS = 99.
    submit rsconn01 with mode = 'INT'
    with output = 'X'
    and return.
    </code>
    Edited by: Saravanan Ramasamy on Nov 11, 2009 1:31 PM

  • COMMIT WORK and WAIT FOR n SECONDS

    I am designing a WebDynpro Java application.  It makes an update call followed immediately by a display call which should return the data that was just updated.  However, it appears that there is some DB latency involved and the data takes a few seconds to update.  The application displays old data if the display call is performed too quickly after the update call.
    All suggestions I could find point to having a Thread sleep on the Java side for a few seconds or have a WAIT FOR n SECONDS and/or COMMIT WORK AND WAIT statement in the ABAP function module.  Neither of these solutions is acceptable in a company-wide application where database latency could vary significantly based on traffic.
    I tried all kinds of functions (i.e. BAPI_TRANSACTION_COMMIT) as well as various forms of COMMIT WORK... nothing except a WAIT works correctly.  There must be a statement out there that waits for the database write to be complete!  How is this solved without picking an arbitrary WAIT time?  What am I missing?
    Thanks in advance!

    You can write the other way.
    declare one variable
    data : wa_try type i.
    wa_try = 10. -> set as 10 ,even you do not get value ,keep on incresing.
    after BAPI FM
    you can call comitt fm.
    after BAPI_TRANSACTION_COMITT
    just use simple logic.
    do wa_try.
    select * from table into table
                                  where record = bapi fm record ( You get in RET2 Message).
    if sy-subrc eq 0.
    exit.
    endif.
    Thanks
    Seshu

Maybe you are looking for

  • Populate the URL for popupURL from a Table/Page Item?

    Dear all, Would someone please tell me if the URL to run a BIP report can be populated from a table/page item when using popupURL and if so, how? Background: I have a Table called TBL_LETTERS with a varchar2 column REPORT_URL I have a Page (Pg 303) w

  • Dual cards, for more displays

    so this mac pro, currently has an ati X1900 card installed, which has 2 DVI ports on it.  Bottom line, im thinking about maybe having up to 3-4 displays hooked up to this thing symaltaniously.  One of these I may want to be my Old SD 60" TV which onl

  • Work iPad, iCloud account already on it. How do I delete?

    I have a work iPad and am trying to set up my iCloud account on it. The problem is, there is an iCloud account set up by the previous user. I obviously don't have his password so I can't delete the account. What do I do?

  • HP Printer Driver Update 1.1.1 not showing up in software update

    i have a HP HP Deskjet D4260 attached to my macs, but the 1.1.1. update doesn't show up in software update. (as 1.1 did) i read here http://www.apple.com/support/downloads/hpprinterdriver111.html that the update will only be visible if the printer is

  • WUT-100

    I'm calling client_image.read_image_file to download to client from a blob column . I'm getting a 0 byte file in workarearoot directory console shows WUT-100 Has anyone any idea why dbcolumn-file doesn't work correctly? ==webutil 105 unix host ==webu