Refresh BOL Buffer

I'm currently using non-bol ways (ex. order maintain function modules) to update data in the object buffer. Obviously this has caused the object buffer and respective bol object to be out of sync :(((
Is there a way to programmatically to refresh the BOL object so that it has the latest data?
I have already tried CL_CRM_BOL_CORE's reread_entity method without much luck?
Has someone done this before?
Cheers
Kishan.

To create a dummy BOL entity a LOCK has to be established on the entity, if not BOL will try to establish the lock. By default if LOCK is tried to establish or in other words if the mode of the BOL is changed from display to edit it is going to refresh automatically. So if we try to introduce the delta change the BOL changes to edit mode.
The question is to sync the buffer data without changing the BOL mode.
Please correct me if im wrong.
The buffer can be cleared using CL_CRM_BOL_CORe->RESET( ) method, which could be a little risky because it clears all the buffer data so there is chance of losing unsaved data and breadcrumbs.
Thanks,
Karthik

Similar Messages

  • Refresh BPS buffer

    Hi
    I need to refresh the BPS buffer in my planning folder, and then read data from the cube and show in a layout. For do this I develop an exit function. This exit refresh the buffer (API_SEMBPS_REFRESH), read data from the cube (API_SEMBPS_GETDATA) and post the data in the layout (API_SEMBPS_SETDATA).
    The problem is when I execute the function ends with a short dump.
    Can I use API_SEMBPS_REFRESH in planning folder?
    If the answer is no, what other way to do this?
    Thanks in advance.

    Hi Ivan,
    did you solved this problem. I also had problem with short dump after API_SEMBPS_REFRESH. We are at SEM-BW 350 SP level 0023.
    Kind regards, Josko.

  • Bol Buffer vs api buffer for better performance

    Experts,
                Could you please express your expert opinion on below scenario or similar scenarios that one come across in daily coding.
    We have a BTOrder root object with us, we need to find a particular partner function and read its name from this point. We could go this way:
      BTOrder->Btadminh->btpartnerall->in collection -> loop to read particular partner function ->read partner details
      OR
    from order guid we could call crm_order_read -> get partner no. -> call bupa_central_get_detail -> get all relevant data
       this fm would internally call *OW module and try to read from buffer.
      My question is ->
    which is SAP recommended approach
    Which is best from performance point of view considering we have lot of such reads to be done
      Any particular caution one should take while coding in such scenarios (one i think would be make sure api and bol buffer are in sync in case using apis to read).
    Please provide your valuable inputs in this regard
    Thanks,
    Rohit

    Thanks Arun and Harshit for the replies.
      I would say your replies are in line with what I thought they would be, but I still would like to know what is the SAP recommended approach (if any) for these situations.
      And if using function modules is more efficient - then BOL layers significance comes only while creating / modifying entities, right?
      Then again, we could use crm_order_maintain - as ultimately before saving this function module only would be called along with crm_order_save in the btil classes.
    I hope I am making some sense - I just want to know how and when exactly is BOL layer useful in comparison with the function modules (both in read and write).
    Warm Regards,
    Rohit Khetarpal

  • Buffer Refresh problem in BAPI_BATCH_CREATE while IDOc Processing.

    Hi All,
    I am creating a scenario using IDOC. The scenario has 2 steps.
    1. Create SAP Batch (Tcode: MSC1N)
    2. Create Goods Movement with movement type 309 (Material to Material Transfer)
    I am getting all the required information for the above 2 transactions in a single IDOC in SAP R/3.
    I have also identified the BAPIs for the above 2 transactions. I am using bapi 'BAPI_BATCH_CREATE' for creating BAPI.
    But when I execute the first bapi "BAPI_BATCH_CREATE" it refeshes the buffer and hence, the idoc looses all its data and restarts again. As a result the IDoc is processed again from the beginning.
    My analysis is that, when the first BAPI executes Commit Work statement, it refreshes the buffer, and hence the session looses its data. This results in re-execution of IDoc.
    Can you please suggest me solution to this problem?
    Thanks,
    Atul

    Thanks  Madhu for your input, But still the issue is same.
    i have added call to the bapi like this
    ELSE.
                  idoc_status-docnum = idoc_contrl-docnum.
                  idoc_status-status = '53'.
                  idoc_status-msgty = 'S'.
                  APPEND idoc_status.
                  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
                  EXPORTING
                    WAIT          =
                  IMPORTING
                    RETURN        =
                ENDIF.
    one more point here althought i am getting messge after the execution that idoc got processed by FM Z_IDOC_INPUT_ZQMSLD...
    still the transaction is running for a long time.....i had to stop it after a long time when there was no response.
    Is something wrong with the code?

  • St02 buffer not refresh

    dear friends
    in my devlopment server my buffer(st02) will not be refresh ? why ? and what i do for a refresh a buffer
    this happend only in developmetn server
    nainesh suthar
    Edited by: ncsuthar on Mar 10, 2010 6:37 AM

    thank....u
    pl visit above site
    http://help.sap.com/saphelp_45b/helpdata/en/02/9625e3538111d1891b0000e8322f96/frameset.htm
    it give more in detail
    nainesh

  • Refresh Buffer area

    Hi ,
      I am using cl_alv_table_create=>create_dynamic_table to get an dynamic internal table. At 5th record , the program is dumping and giving error as
    <b>'sub routine pool buffer is full'</b>.
    Could you please suggest me to refresh this buffer .
      Is there any Function module or method to refresh buffer area.
    Thanking you,
    Satya

    Hi Naga,
    There lies the problem. U can call this method only upto 21 times not more than that in one session. Even I too faced the same kind of situation. Then I arrived at a solution of storing the address of the new line type created  with the same structure of the table. Like,
    TYPES: BEGIN OF ty_stuff,
           tdref TYPE REF TO data,
           END OF ty_stuff.
    DATA w_stuff TYPE ty_stuff.
    DATA t_stuff TYPE TABLE OF ty_stuff.
    CALL METHOD cl_alv_table_create=>create_dynamic_table
            EXPORTING
              it_fieldcatalog = it_fieldcat_fin[]
            IMPORTING
              ep_table        = new_table.
        IF sy-subrc EQ 0.
    Create a new Line with the same structure of the table.
            ASSIGN new_table->* TO <fs_table>.
            CREATE DATA w_stuff-tdref LIKE LINE OF <fs_table>.
            "(w_stuff-tabname).
            APPEND w_stuff TO t_stuff.
          ENDIF.
    So my table t_stuff will contain all the addresses of the table structures. Use that in this way:
          READ TABLE t_stuff INDEX l_seg_tabix INTO w_stuff.
          IF sy-subrc EQ 0.
            ASSIGN w_stuff-tdref->* TO <l_line1>.
          ENDIF.
    Now <l_line1> will be of line type of the internal table that u want to create.
    Anyways it depends on the requirements. I thought of sharing this, might be helpful in some way to u.
    -SatyaPriya

  • Refresh page after execute event

    Hi all, I have a question, please help.
    I have a button on the view SOHOverView(BT115H_SLSO) to change the status.
    *** part of code of event ***
    CALL FUNCTION 'CRM_STATUS_CHANGE_EXTERN'
         EXPORTING
           objnr               = objnr
           user_status         = estat
         EXCEPTIONS
           object_not_found    = 1
           status_inconsistent = 2
           status_not_allowed  = 3
           OTHERS              = 4.
       "WAIT UP TO 1 SECONDS.
       IF sy-subrc <> 0.
         CASE sy-subrc.
           WHEN 1. message = 'object_not_found'.
           WHEN 2. message = 'status_inconsistent'.
           WHEN 3. message = 'status_not_allowed'.
         ENDCASE.
       ELSE.
         CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
           EXPORTING
             wait = abap_true.
       ENDIF.
    this code is executed and changes the state correctly, but to see the change you have to re-open the document. I need to refresh the page and the user can see the new status immediately.

    Hi Rudy,
    you can acheive this by reverting the bol buffer.
    Afte the FM call 'BAPI_TRANSACTION_COMMIT', check sy-subrc. If it is ZERO, execute the below code else not.
    * Read header Entity
      lr_ent ?= me->typed_context->your context node name->collection_wrapper->get_current( ).
    * get Transaction
      lr_trans ?= lr_ent->get_transaction( ).
    * Revert all changes
      lr_trans->revert( ).
    As you have already commited changes using 'BAPI_TRANSACTION_COMMIT'. Now revert will only bring the changes from the database again and will not affect your status changes which you made recently.
    Please let me know, if you have any issues.
    Regards,
    Jotsaroop Singh

  • Buffer table not up to date

    hi all,
    While creating a contact i am getting error as"Buffer table not up to date"..what does it mean..i am working in SRM 5.0 classical scenario...
    Thanks&Regards,
    Hari...

    Hi Sridhar,
    This issue generally comes up when the tables that store these entries get full and doesn't allow any further postings.
    In most of the cases this will be the issue though for your case i can not say this is the exact issue but this may work.
    At this point i don't remember the exact transaction for refreshing but inform your BASIS guys to refresh the buffer tables.They will definitely know the procedure.
    Hope this resolves your issue.
    Rgds,
    Teja

  • Issue in updation of related entities in a BOL

    Hi,
    I am trying to update a related entities using BOL entity method. 
    But somehow the data is not updated in entity. It creates an entity but sets the default data.
    CREATE_RELATED_ENTITY( IV_RELATION_NAME = 'XXXXX")
    LR_PROPERTY->SET_PROPERTIES( LS_PRoperty ).
    Is there any method we need to call after setting this property ?.
    Regards,
    Ch Deepthi.

    Hi Deepthi,
    The creation of dependent or child objects normally does not trigger the API call. Therefore, it
    is necessary to explicitly trigger the API call by using the MODIFY method of the BOL core,
    which sends changes to the underlying generic interaction layer. Without this call, the created
    child objects will only exist in the BOL buffer and never get saved.
    lv_bol_core->modify( ).
    DATA: lv_transaction TYPE REF TO if_bol_transaction_context
    lv_transaction = lr_entity_parent->get_transaction( ).
    lv_transaction->save( ).
    lv_transaction->commit( ).
    Regards,
    Nithish

  • HR_MAINTAIN_MASTERDATA, buffer gives old data

    Hi All,
    We are using a module pool program that facilitates hiring of employees. A user who performs hiring action, uses this program and updates records that get updated in R3 PA tables.
    The problem is when the user tries to update a batch of records. It works fine for the first record but for the second, it displays the details of the first. (if my 2nd employee is Y, the details of emp X still get displayed)
    We are using HR_INFOTYPE_OPERATION for this. I debugged and found that HR_MAINTAIN_MASTERDATA is used inside. A perform called GET_INFOTYP_BUFFER in mainitain_masterdata gets the data from buffer (which is of the old record and not the new one)..Why is the buffer still having the old record details? How to refresh the buffer?
    Regards,
    Aruna Nivetha.R

    Hi Shrinivas,
    That dint help much. Even when I used HR_INITIALIZE_BUFFER, the problem still persists....
    Any other clue?
    Regards,
    Aruna Nivetha.R

  • Where does the buffer data gets stored in bw 3.5 bps?

    Hi all,
    Is there any standard tables, where in i can look for the buffer data. And how to delete nor refresh the buffer data in bw 3.5 bps?
    Can anyone let me know the significance of buffer in bps 3.5?
    Thanks
    Pooja

    Hi,
    I think Data in the buffer is not stored temporarily in any specific table,once it is saved it will be as transaction data of the cube or the master data.
    The place where data is stored in buffer is called planning buffer and All  changes to the data are written to planning buffer.So you don't have to save continuously.If the data is not already in the buffer, the system reads it either from:
    The database table (Customizing objects), or Info cube (Plan Data)
    and writes it to the planning buffer.
    You can use the given function module to delete the buffer data:'UPF_METHOD_DESTROY' 
    Regards,
    Indu

  • Buffer issue

    Hello guys,
    I am facing issue becuase of the buffer very frequently.
    The agent assignment fails because of this. As soon as I refresh the buffer, it works fine.
    Is there a permanent solution for this?
    We are in the testing phase in the Quality system. There were no transports which went through for workflow in the past few days. But still the buffer issue came up. NO change was done to the Org.structure also recently.
    Can anyone explain and provide the solution?
    Thanks,
    Ram.

    Hello,
    Could you answer my questions:
    1. Where is the user reading his emails, in SBWP? Or UWL?
    2. When you do the buffer refresh, do the existing workflow instances start sending workitems again or do only new workflows send workitems?
    If the answer to 2. is existing workflow instances, then what is happening with these workflows in the meantime? Does the workflow log show that it has reached the appropriate step and it has the correct agents, but the users just can't see it in their inboxes?
    Doing SWU_OBUF is not a problem in production, it causes a small performance dip (as far as I understand it) but it's certainly not something you want to be doing all the time.
    When this is resolved please be sure to post the solution here.
    regards
    Rick Bakker
    Hanabi Technology

  • Buffer Table not up to date error while accessing Catalogs

    Hello,
    I am getting Buffer table not up-to-date error while accessing ARIBA Procurement Catalogs.
    Initially, my Test system was pointing to Production Catalogs but now, when I changed the settings in "Define External Web Services" and pointed it to DEV Catalogs, it is failing with error: "Buffer Table not up-to-Date"
    Refreshed the Buffer already but still error not fixed.
    We already have the similar settings in other systems and there the connections are working fine
    Please advise
    Regards
    Manish Agrawal

    Hi Manish,
    Could you please check the below notes and implement the same since I had the same issue upon punching out from the catalog to SRM system.
    2041631 - Simplified Shopping Cart:Dump on Check Out From Catalog
    2086844 - Dump "Buffer table not up-to-date" on Check Out from Catalog
    In addition to the above, please maintain the portal information in the path as shown in the below screen shot
    Kindly check and let me know on how it goes.
    Best Regards,
    Bharathi

  • ABAP Buffer Problem - URGENT

    Hi All
    I have the following ABAP problem.
    I wrote a program that delimits(Just editing the end date) the Qualification and Person relationship in HRP1001.
    The problem is that I update the database directly, and all appears to be working fine but it appears that the Buffer for infotype 1001 does not get updated and therefore if you view the data in transaction PPPD it still displays the previous end date and not the updated end date.
    Is there a way to refresh the buffer for infotype 1001 so that the data in PPPD reflects the actual database data?
    Help will be greatly appreciated and rewarded….
    Kind regards

    Hi All
    I have the following ABAP problem.
    I wrote a program that delimits(Just editing the end date) the Qualification and Person relationship in HRP1001.
    The problem is that I update the database directly, and all appears to be working fine but it appears that the Buffer for infotype 1001 does not get updated and therefore if you view the data in transaction PPPD it still displays the previous end date and not the updated end date.
    Is there a way to refresh the buffer for infotype 1001 so that the data in PPPD reflects the actual database data?
    Help will be greatly appreciated and rewarded….
    Kind regards

  • Clear a buffer

    I have a buffer that is generating 5 min worth of data and feed it to a queue. The data is later dequeued into a seperate while loop and plot in a graph.
    My goal is programmatically refresh the buffer. I tried to used flush queue after the data is being enqueued, it did not work because after the flush the buffer adds last previous data set plus a new one into the queue. I want the buffer to start back at zero, meaning get rid of all the previous data and enqueue in new ones in the queue. Flushing the queue does not work
    Thanks

    I don't know what you are doing, I don't see a Flush anywhere, I don't understand why you would expect a Flush to do anything to your Queue, anyway (which means that if the Flush actually is expected to have no effect, then observing that it has no effect means it is probably functioning correctly!), and why you have a Circular Buffer function (mis-wired, by the way) in here.
    Please do not take this the wrong way, but do you know what you are doing?  Can you explain for us what you are trying to accomplish with just the top loop?  It looks like you are generating 3 channels of 2000 points of random data, bundling it into a Waveform with a curious dt (I'm assuming you are simulating actual data acquisition -- if so, what is your intended sampling rate, and are you using "Continuous Acquisition", where the next 3 x 2000 points will be delivered when collected?).  You pass this through a Circular Buffer function (why?  what is this supposed to accomplish?) then put it on a Queue.
    The entire top loop runs at 1 Hz, so as long as we assume the Consumer loop is reasonably fast, the Queue will almost always be empty -- it will only have data on it for the (very brief) interval between the Enqueue and the waiting Dequeue.  Even if you followed the Enqueue with a Flush, the Dequeue still might "win" because it is running asynchronously.
    OK, so now we have whatever was placed on the Queue.  What do you intend to be there?  The entire set of 3 waveforms, each with 2000 points supposedly sampled at 100Hz (which would take 20 seconds, yet you are shoving Waveforms out 20 times faster ...)?
    What is supposed to be happening in the bottom loop?  I have to confess that I've never used a Listbox, so I'm not sure what is supposed to happen when it is wired to a For loop, and accordingly I cannot guess (and am too lazy to experiment to find out) how many times (or even if) this For loop runs.  The functions to the right of the For Loop also puzzle me -- I'm not sure what you are trying to do here, but suspect you are not doing it correctly ...
    Bob Schor

Maybe you are looking for