RFC calls keep old buffer tables PS and PSINFO

Hello!
I have written a BSP application for an R/3 system which is release 4.6c.  For that reason, we have a stand-alone WebAS which must make RFC's to the core R/3 system to retrieve and update HR data.
Originally the RFC destination to connect to the core R/3 system from WebAS was not a trusted connection, but we ran into problems with structural authorizations where the RFC was not returning all of the data for the actual user.  We found that the problem was related to the fact that the RFC destination was using a hard-coded user ID to make the connection to the R/3 HR system.  That particular user ID was being used as SY-UNAME in a routine used by structural authorizations, and it wasn't finding the correct data for the User ID that was entered as the RFC user.  Therefore, we made the change on the RFC destination in WebAS so that now we have the "Current User" checkbox checked, the hard-coded user ID and password has been removed, and now the "Trusted System" radio button is selected.  Those changes resolved our issue with structural authorizations because now the routine has the actual user ID as SY-UNAME instead of the generic RFC user ID.
I'm not sure if the RFC trusted connection is part of this issue or not, but I wanted to provide that information.
Here is the actual issue...  Several of the RFC's update different HR infotypes, and most of these use function module HR_INFOTYPE_OPERATION to insert new HR infotype records or modify existing ones, etc.  We started receiving short dumps and getting strange results, and I was able to track it down to the fact that the PS and PSINFO buffer tables are not being refreshed.  I was expecting that these tables would be "clean" everytime I make a new RFC call.  However, this is not the case.  I watched this in debugger, and I see that the PS and PSINFO tables are still filled from the last RFC whenever I make a subsequent RFC!  When it finally gets to the point that dialog HR_MAINTAIN_MASTER_DATA is called, it still has the old data in these tables, so it tries to process the infotypes AGAIN.  This is very bad!  For one thing, the previous RFC which used HR_INFOTYPE_OPERATION might have been for an applicant number (TCLAS = 'B') and the current RFC might be for an employee number (TCLAS = 'A').  We have seen this happen, and it resulted in a short dump (it's a long story - just trust me when I say that it is causing a lot of problems!).
I was able to resolve the issue in one of my function modules by adding a call to function module HR_PSBUFFER_INITIALIZE at the beginning of the function module.  However, I don't want to have to add this to the beginning of every function module that I write.  Also, I think that this is a problem which needs to actually be solved instead of using a band-aid like this.
This is what I want to know - Why are these buffer tables still filled from the last RFC whenever I make the next RFC?  Is this because it is set up as a "trusted" connection?  Is this related to the fact that my BSP application is stateful instead of stateless?  Does something need to be changed on my RFC destination configuration so that each RFC starts out with "clean" buffer tables?
Thanks in advance for whatever advice you can offer me!
Shannon

I don't think this has anything to do with the trusted connection. It is because your application is stateful.  If you watch in the process overview in your system you will see that with a stateful application, no only does your BSP session state remain between calls, but also you should see a thread per user for the RFC connection. 
That means that the Session state is also still alive on your R/3 4.6C system for a period of time as well (RFC keep alive time).  We have used this to our advantage before when building BSP applications (caching of data in Global Data of a Function Group).
However you have the opposite problem.  It sounds like you would want to call the HR_PSBUFFER_INIT at the start of each transaction.  If you writting this as a Classic Dynpro Transaction would you not do the same? 
You might try calling RFC_CONNECTION_CLOSE as well.  This should close the connection and end the state on the R/3 side.  However you will have the performance overhead of reestablishing a new connection on the next call.  But RFC connections seem to be very efficient.  I doubt you would notice any performance difference.

Similar Messages

  • URGENT - RFC Call from EP6.0

    Hi folks,
    We are creating a custom iView for creating and editing employee competency appraisals.  While creating a new appraisal, we call an RFC to validate whether an appraisal should be allowed to be created for that particular employee, based on the employee's Job Competency Profile.
    When we log onto R/3 and test the function we get RETURNCODE (of type SY-SUBRC) = 1.  This is the expected result, meaning that the appraisal can not be created because the competency is not in the employee's profile.
    However, when we log onto the portal with the same user, and submit the exact same parameters to the RFC call, we get a RETURNCODE=0, and the appraisal is created.
    Has any of you experts out there ever run into a similar problem?  Any assistance you can provide would be most appreciated.
    Thank you,
    Dan

    Hi Dan,
    Sorry for the late reply!
    do u got solution for that?
    Otherwise, try with this!
    Just intialize the variable in java with 0 or 1,
    otherwise define 2 constants one is for having the value 0 and one is for having 1 and then check with the ouput value u r getting from r/3 to java.
    Generally, whatever the value u will get to the export parameter will be passed to the variable on java side.
    Just check it and let me know the status.
    Regards,
    Sireesha.

  • RFC calls with SAP table insert - lock tables

    Hi,
    I have an external server program, which is calling a rfc function many times the same time with different transaction types. There are transaction types, which are downloading information from SAP (only send data back to the caller), and there are transaction types which are uploading data to SAP (inserting/updating data on SAP).
    The function calls are synchronous as the server needs to get feedback directly. The parallel work processes for RFC calls are limited, so a system overload can´t happen.
    The problem now is, if the server is down for while and going to be restarted, it´s opening parallel threads and calls the function in SAP at nearly the same time. That means, it will call the function with upload requests (table must be locked), and download requests the same time.
    In the upload requests, the table has to be locked, that it can´t occur that we get wrong entries...
    I can only enqueue the table with just two fields... I know, that is almost like locking the whole table, but it´s not possible to lock it in a different way.
    I tried to use the enqueue function with the parameter WAIT, but it didn´t help, as there where too many parallel calls and after some seconds, they were ending up with an error (Because the table has been locked by another call).
    It seems that it´s trying to lock the table again for all parallel calls at exactly the same time....
    The calls has to be synchronous, as the server needs to get the feedback directly. Any ideas how top solve this, that it handles all incoming calls parallel and waits for the table is unlocked again?
    Thank you for your help!

    Hi,
    thank you for your answer!
    I have investigated something new yesterday:
    I thought at the beginning, that the problem just occurs, when the system work processes are reached. The system has for example set up 15 dialog processes and the external server is calling the function 20 times in parallel. Then we normally need 5 dialog processes more. The system is taking then all 15 dialog processes and the locks got stucked.
    That means, that I´ll maybe only get 4 or 5 uploads, which have really been updated the tables. All the others couldn´t get the table locked for their process.
    But if I now let the server call the function just about 13 times in parallel, nearly all uploads have been updated the table!
    From my point of view, the lock from SAP gets stucked, when the limit of dialog processes is reached. It´s not working in the right way anymore...
    The same is happening, when you set up in the system, that only 10 work proecesses can be used by RFC. If I have more than 10, it´s going to be critical with the locks....
    WEIRD!
    Can anybody help me out of trouble?
    Thank you!

  • Problem passing a table parameter in rfc call using the function control

    I try to pass a Table as parameter to a Function Module using the SAP.Functions library (part of SAP frontend controls) from a Visual Basic (VBA) program.
    The function module has been verified to work when invoked from SAP FrontEnd Function Builder.
    The SAP RFC Control is created with
    Set sapFunctions=CreateObject("SAP.Functions")
    Following code snippet shows how I attempt to set exports and add a table row before calling the function module:
    sapFunctions.Connection = sapConnection
    Set sapMaterialUpd = sapFunctions.Add("Z_SD_BAPI_SALES_DATA_UPD")
    With sapMaterialUpd
    <i>'set exports</i>
         .Exports("PA_GLPUPDLEVEL") = "S"
         .Exports("PA_VKORG") = "FI14"
    <i>'append table row</i>
         .Tables("IT_SALES_DATA_UPD").AppendRow
         .Tables("IT_SALES_DATA_UPD")(1, "VKORG") = "FI14"
         .Tables("IT_SALES_DATA_UPD")(1, "MATNR") = "W_3100"
         .Tables("IT_SALES_DATA_UPD")(1, "DATBI") = "99991231"
         .Tables("IT_SALES_DATA_UPD")(1, "DATAB") = "20041231"
         .Tables("IT_SALES_DATA_UPD")(1, "KBETR") = "2222"
         .Tables("IT_SALES_DATA_UPD")(1, "KONWA") = "EUR"
    End With
    <i>'call the function module</i>
    If sapMaterialUpd.Call() = True Then
        <i>'do something with the return tables here...</i>Else
        Debug.Print sapMaterialUpd.Exception
    End If
    The Call() returns <b>FALSE</b> and the exception is <b>"SYSTEM_FAILURE"</b>. The connection also resets.
    The local logfile that the control generates shows that an exception occurs at the point of the call:
    <i>10.02.2005  17:54:20.766 Packing Parameters for Z_SD_BAPI_SALES_DATA_UPD
    Packing Parameter PA_GLPUPDLEVEL.
    Packing Parameter PA_VKORG.
    Packing Table 0.
    Packing Table 1.
      10.02.2005  17:54:20.766 *** Calling  RFC Function 'Z_SD_BAPI_SALES_DATA_UPD'
      10.02.2005  17:54:20.986 RFC CALL status = RFC_SYS_EXCEPTION
      10.02.2005  17:54:20.986 RFC Error: RFC_IO27
      -Status:CODE=CM_DEALLOCATED_NORMAL STATUS=CM_NO_STATUS_RECEIVED DATA=CM_COMPLETE_DATA_RECEIVED ID=69415076
      -Message:connection closed
      -Internal Status:IO HANDLE=23 DRV=EXT LINE=1420 CODE=27 : GET ID=ffff LINE=861 CODE=7
      10.02.2005  17:54:20.986 Function call finished.</i>
    Seen next code snippet. If the Table object is not touched, the function call goes through without any problems:
    sapFunctions.Connection = sapConnection
    Set sapMaterialUpd = sapFunctions.Add("Z_SD_BAPI_SALES_DATA_UPD")
    With sapMaterialUpd
    'set exports
        .Exports("PA_GLPUPDLEVEL") = "S"
        .Exports("PA_VKORG") = "FI14"
        'do <b>not</b> append a table row, for testing only ;-)</b>
    End With
    <i>'call the function module</i>
    If sapMaterialUpd.Call() = True Then
    <i>    'do something with the return tables here...</i>
    Else
        Debug.Print sapMaterialUpd.Exception
    End If
    This code works perfectly when calling the function. It returns TRUE and behaves normally. The function module returns descriptive response text in a table telling that the table was empty, according to the BAPI implementation.
    So is there something special needed here <i>after</i> appending the table row and <i>before</i> making the Call to properly attach the table as a parameter for the function module?
    Can this be a bug in the SAP RFC Control? The version of the wdtfuncs.ocx is 6206.6.45.54.
    Any hints are welcome!

    hi All partner,
    who solved this problem , I meet it too and
    can't clear it.
    SAPfunc := sapfunctions1.Add('z_get_sfcs_dn_mo');    
    SAPitab := sapfunc.tables.item ('I_DNMO');
    SAPitab.appendrow;                                       SAPitab.value(1,'MANDT') := '220'; 
    SAPitab.Value(1,'VBELN') := '2150000001';
    SAPitab.Value(1,'POSNR') := '50';
    SAPitab.value(1,'MATNR') := '19-99999-00'; 
    SAPitab.value(1,'AUFNR') := '921241512001';
    SAPitab.value(1,'DEDAT') := '2005/09/09';
    SAPitab.value(1,'LFIMG') := '100';  
    IF  SAPfunc.call = true then
      begin
      end
    else
        begin
        showmessage('call fail!!') ;
        end;
    end;
    RFC source code as below
    FUNCTION z_get_sfcs_dn_mo.
    ""Local interface:
    *"  TABLES
    *"      I_DNMO STRUCTURE  ZDN_MO
      data: wa type zdn_mo.
      LOOP AT i_dnmo.
        wa-mandt = i_dnmo-mandt.
        wa-vbeln = i_dnmo-vbeln.
        wa-posnr = i_dnmo-posnr.
        wa-matnr = i_dnmo-matnr.
        wa-aufnr = i_dnmo-aufnr.
        wa-dedat = i_dnmo-dedat.
        wa-lfimg = i_dnmo-lfimg.
       modify  zdn_mo from wa.
        insert into zdn_mo values wa.  --dump at here
        commit work.
      ENDLOOP.
    T/C: ST22 error message say at
      insert into zdn_mo values wa. ---dump at here
    the sapfunc.call returns fail.
    Message was edited by: jorry wang

  • Buffer table and Locking issues

    We have a real table and a buffer table. The real table gets locked on occation for processing, at which times, incoming data is deposited into the buffer table.
    I am looking for a way to dump all the information from the buffer table into the real table whenever the real table is released from its lock. I would prefer not to write and schedule a program to run based on time (i.e. every 2 seconds, a procedure is called that looks to see if the table still has a lock on it...)
    Does anyone have any ideas how I can do this? I have thought about using the DBMS_ALERTS package or DBMS_AQ somehow, but I am not as familiar with the two as I'd like. I'd be happy to explain this further if required.
    Thank you.

    Thank you for the suggestion, but this does not look like a viable option. For this to work, the trigger would have to fire everytime a DDL event was fired, and I would have to build if...then logic into the trigger. Besides, in the documentation, I don't think table locks would be considered DDL.
    Any other ideas? Again, thanks for the help. I did not previously know I could create triggers on these type of events.
    RW
    null

  • Locking tables using a RFC Call

    Hello,
    I am trying to lock a Table in R/3 from BW by calling a Enqueue Function Module which is remote enabled in R/3. The BW Call to R/3 is successful but the table is not getting locked. I wanted to know if this is something that can be done.
    I have an assumption once the locking is done in R/3 the connection in R/3 is closed and its getting unlocked automatically.
    Please Post  your answers if you guys have faced a similar situation.
    Rajeev

    I have an assumption once the locking is done in R/3 the connection in R/3 is closed and its getting unlocked automatically.
    Your probably right, when making an RFC call, the locking done within, would only last during the execution of that call.
    Regards,
    Rich Heilman

  • Can't get the tables normally using RFC call to BC

    SAP Business Connector Developer.
    ->IDataUtil.getIDataArray function (can't work properly using RFC CALL)( I think it's the source of problem)
    I use the SAP Business Connector Developer(4.7) to get data from db2.
    and I create a JAVA service in th BC named writeData,
    the most important snippet shown below.
      // Get IDataCursor to manipulate pipeline
      IDataCursor idcPipeline = pipeline.getCursor();       
      // If the value is not an IData[], returns null.
      IData[] recordListIn = IDataUtil.getIDataArray( idcPipeline, "ORICONTENT" );
      idcPipeline.first( "CHECKEDDATE" );
      String checkedDate  = (String) idcPipeline.getValue();
      idcPipeline.first( "CPYCOD" );
      String cpycod= (String) idcPipeline.getValue();
       /* if ( recordListIn == null )
              errMsg += "No Input Data";
              recLen=0;
      }else{
            recLen= recordListIn.length;
      try{
         recLen= recordListIn.length;
      catch(Exception ed){
         errMsg += "\r\nExceptionIn: " + ed.getMessage();
         recLen=0;
      In BC, the variable recLen can get the record list length normally, but if i call the function in the SAP,
    the system throw an exception, the ed.getMessage() return value NULL.
      I think the problem which the rfc can't work properly is that the method IDataUtil.getIDataArray execute unnormal.
      I have set value to ORICONTENT(record list) in SAP, and it can return the record that i have set to the SAP System,
    and in the java service,  I have return another record list creating using the following spippet, It can work normally.
    com.wm.app.b2b.server.DBConnection db
            =new com.wm.app.b2b.server.JDBCConnection(driverString,userName,
                    userPwd);
              com.wm.util.Values ida= db.execSQL(selectSql);
              idcPipeline.insertAfter("OUTDATAREC", ida );
              db.close();
    I have tried some adjustments, but nothing can work.
    The reason That I use one jave service instead of standard flow services is I have to transfer data to more than two db2 servers, and I have to keep the consistency.
    Attached please find the SAP test page (using se37) and the java service code.
    May you kindly help me to solve this problem, I don't know the real reason, and which is very emergent, but i can't changed Priority(If I changed it ,the page is unuseful).
    Additional,I have added some code shown below,
    idcPipeline.first( "ORICONTENT" );
    java.lang.Object curObj = idcPipeline.getValue();
    if (curObj == null)
    errMsg +=" object is null ";
    else{
    errMsg +=" object isnt null ";
    try{
    recordListIn=(IData[])curObj;
    } catch(Exception ed){
    errMsg += " ExceptionOBj: " + ed.getMessage();
    recLen=0;
    In BC, everything is ok. but call the function in the sap, Show the following informatin:
    Object isnt null
    ExceptionOBj: com.wm.util.Table

    Hi, Mei Xie
    you mentioned 'In BC, everything is ok. but call the function in the sap, Show the following informatin: ....', I think the return value of RFC is null.
    have you tried to add a try catch around the RFC call, like following:
    try {
      IDataCursor idcPipeline = pipeline.getCursor();
    } catch (Exception ...)
    I'm not familiar with jave, only worked on C#, but I think try to catch the exception on RFC call is worth doing. Maybe it will descript some information around the problem.
    By the way, can you tell me which RFC/BAPI you are calling?
    I don't know what 'In BC, everything is ok.' mean. I have no experience on BC, only used dotnet connector. So can you explain how you use BC for me?
    thanks

  • Installing SSD and keeping old HDD in the MacBook pro

    Greetings guys,
    I would need a hint or two. I have late 2012 MacBook pro 13', and I want to install Samsung SSD into it to improve it's performance. Now, I am musician, and I am using software instruments a lot, and I have tons of those installed on my HDD. I know how to replace HDD with SDD, but I want to :
    1. Keep old HDD by geting rid of the DVD drive for storing the data
    2. Transfer the whole system to the SSD with the operating system (I'm runing 1.8.5 Mountain Lion), and all the installations with it.
    Should I just back up my system, replace the HDD with SSD, put HDD into DVD drive slot and just use Time machine from the external HDD on fresh SSD and that's it? Or is there more to it, please advise! Thanks!

    Nexus6generation wrote:
    Should I just back up my system, replace the HDD with SSD, put HDD into DVD drive slot and just use Time machine from the external HDD on fresh SSD and that's it?
    That's fine.
    However, what you can do is to clone the HDD onto the SSD without using a Time Machine backup, so you do not need an external drive. You have to do this after installing the SSD inside and putting the HDD in the DVD drive.
    After putting the HDD in the DVD drive, turn on your Mac and it will start up in the HDD. Then, open Disk Utility and use it to format the SSD with a GUID partition table and "Mac OS Extended (Journaled)" as "Format" > http://pondini.org/OSX/DU1.html
    After that, Disk Utility provides you a Restore option to clone a drive onto a different one, so put your HDD as "Source" and the SSD as "Destination" > http://pondini.org/OSX/DU7.html
    Choose the option you want. The option you mentioned and the one I described are valid

  • Send data to ECC table through RFC Call function from SAP B1 via  b1if

    Hi,
    I have created scenario in B1if which triggers from SAP B1, now I have to send this data in to ECC table, so I have created scenario for that with inbound SAP B1, outbound void and in process RFC Call atom is there but I am not getting data in receiver and also how to write xml to send data in RFC function. Function for RFC has configured from ECC end and have access of that function.
    So please help me to send data to ECC table through RFC Call function from SAP B1 (9.0) via b1if
    Thanks

    Solved by my own.

  • Call same RFC from Web dynpro twice (table parameter passing)

    We have one table on our Iview bind to RFC A output table. We execute the RFC A with input parameters (p1=val1, p2=val2) and the data (task name and chkbox field) gets displayed on Iview table.
    The user will click a select deselect all checkbox to select all rows of the table.
    We want to execute SAME RFC A with input parameters (p1=val3, p2=val4) by passing the Iview table for processing. Please suggest the way to do this.

    Hi Sanjay,
    I am not sure about your requirement. I assume you need to call the same RFC twice, the first time with some simple parameters & the second time with a table parameter. Is this the case? If so:
    You needn't switch data between the contexts. You simply need to check if the RFC is being called when the WD table has some data. If so, add the table parameter to the RFC Input object. Let your WD table be bound to a node 'TableNode' having two attributes - 'task' and 'chk' (chk of type 'boolean'). I assume you need to add the row only if the checkbox has been selected.
    Assuming that your BAPI/RFC uses a table ‘MyTable’ of some type 'ZTAB' and that your RFC call is being done from your view:
    ZTAB table;
    IPrivate<your view>.ITableNodeElement elmt;
    <i>// create an instance of the Input class;</i>
    <BAPI_name>_Input input = new <BAPI_name>_Input ()
    <i>// Populating the RFC Object for the first time call
    i.e when the table node is empty</i>
    if(wdContext.nodeTableNode.size()==0)
    input.setParam1(<some default value>);
    input.setParamN(<some default value>);
    else
    for(int i=0;i<wdContext.nodeTableNode.size();i++)
    elmt = wdContext.nodeTableNode().getTableNodeElementAt(i);
    if(elmt.getChk())
    table = new ZTAB();
    <i>//if you do not know table type of 'MyTable’ , check the function input.add<MyTable> (<table type>)</i>
    table.set<property1>(elmt.getTask());
    <i>// If you need to add more parameters :</i>
    table.set<propertyN>(<your-value>);
    input.add<MyTable>(table);
    wdcontext.node<BAPI_name>_Input().bind(input);
    <i>Now execute the BAPI using the following line</i>
    wdContext.current<BAPI_Name>_InputElement().modelObject().execute();
    wdContext.nodeOutput.invalidate()
    <i>// Refreshes the value in the output node</i>
    Hope this helps,
    Best Regards,
    Nibu.

  • My 16gb iPhone 4S keep tell me that my storage is almost full and I don't have enough space for any upgrades. I don't have any music or videos on my phone. I deleted all old emails, texts, contacts and apps but still nothing. When I check my settings, I n

    My 16gb iPhone 4S keep tell me that my storage is almost full and I don't have enough space for any upgrades. I don't have any music or videos on my phone. I deleted all old emails, texts, contacts and apps but still nothing. When I check my settings, I noticed that my Instagram is at 732mb and it keeps rising. Now it's at 814mb. Please help!!!!!

    What is the precise wording of the message that is occurring?
    Are  you attempting to update via iTunes on a computer or over the air on the device?
    How much free space is actually on the device?
    If updating via iTunes on the computer, how much free space on the computer?

  • I need to uninstall my old version on itunes and install a new version, i cant uninstall from Programs and Features, a message keeps coming up saying 'The feature you are trying to use is on a network resource that is unavailable.' Can anyone help please

    I have tried to just install the new version of itunes from the apple website, it looks like it downloads but after 5 minutes at the end of the install it says 'old version of itunes cannot be uninstalled, please contact support.'?  
    Is there anyway I can remove the version of itunes from my computer? i dont mind if i lose the music/content I already have on my itunes. I need to do this as i have just received the iphone 4 and need to install the newest version of itunes.
    Many thanks

    I need to uninstall my old version on itunes and install a new version, i cant uninstall from Programs and Features, a message keeps coming up saying 'The feature you are trying to use is on a network resource that is unavailable.'
    Unfortunately, this sort of trouble has gotten more complicated to deal with ever since Microsoft pulled the Windows Installer CleanUp utility from their Download Center on June 25. First we have to find a copy of the utility.
    Let's try Googling. (Best not to use Bing, I think.) Look for a working download site for at least version 3.0 of the Windows Installer CleanUp utility. After downloading the utility installer file (msicuu2.exe), scan the file for malware, just in case. (I use the free version of Malwarebytes AntiMalware to do single-file scans for that.)
    If the file is clean, to install the utility, doubleclick the msicuu2.exe file you've downloaded.
    Now run the utility ("Start > All Programs > Windows Install Clean Up"). In the list of programs that appears in CleanUp, select any iTunes entries and click "Remove".
    Quit out of CleanUp, restart the PC and try installing iTunes again. Does the install go through properly now?
    (If you do find a clean download site for the correct version of CleanUp, please don't tell me where it is. Without wishing to sound paranoid (although I grant it does sound paranoid), there is a non-zero chance that posting links to download locations for the utility here at Discussions leads to that download location being shut down.)

  • How can I store a form name with path and then call form from a table

    Is it possible that any form that I built I store that form in some table in DB and then call that form from table, if yes, then how can i get this functionality. I am not very experience in form and do not know if it can be done because i think if it is possible then this can be a good security for application and easy to handle as well.
    Thanks in advance
    Maz

    If you have a Forms block based on this table:
    declare
      module varchar2(100);
    begin
      module := :block.column;
      call_form ( module ) ;
    end;If you don't have any blok based on that table
    declare
      module varchar2(100);
    begin
      select  module_name
      into module
      from ...
      where ...
      call_form ( module ) ;
    end;Francois

  • I have a Macbook Pro 15" that is three and a half years old.  Although it has slowed a bit, it still runs well and runs every program I need. Any tips for how to keep this old computer running well and in good health?

    I have a Macbook Pro 15" that is three and a half years old.  Although it has slowed a bit, it still runs well and runs every program I need. Any tips for how to keep this old computer running well and in good health?
    I have a 250 gig drive and try to keep at least 100 gigs unused at all times, 4 GB 667 MHz DDR2 SDRAM memory, back up with Time Machine and CrashPlan, and have OS X 10.7.3.
    This was my first Mac since an old Apple II GS.  After that I used PC's and got really good at reformatting, replacing drives, reinstalling, defragging, resolving software conflicts, etc.  Since switching back to Macs (five in my extended family now), I haven't had to do any of those things. So, although, the cost is three times as much, the aggrevation has been ten times less.
    I'm retired and living on a fixed income and would therefore like to keep this computer running as opposed to constatntly upgrading.
    That said, any tips?
    Thanks
    It does have a crack on the left of the screen case about 3/4'' up from the bottom.  I've posted that as another question.

    Kappy's Personal Suggestions for OS X Maintenance
    For disk repairs use Disk Utility.  For situations DU cannot handle the best third-party utilities are: Disk Warrior;  DW only fixes problems with the disk directory, but most disk problems are caused by directory corruption; Disk Warrior 4.x is now Intel Mac compatible. Drive Genius provides additional tools not found in Disk Warrior.  Versions 1.5.1 and later are Intel Mac compatible.
    OS X performs certain maintenance functions that are scheduled to occur on a daily, weekly, or monthly period. The maintenance scripts run in the early AM only if the computer is turned on 24/7 (no sleep.) If this isn't the case, then an excellent solution is to download and install a shareware utility such as Macaroni, JAW PseudoAnacron, or Anacron that will automate the maintenance activity regardless of whether the computer is turned off or asleep.  Dependence upon third-party utilities to run the periodic maintenance scripts was significantly reduced since Tiger.  These utilities have limited or no functionality with Snow Leopard or Lion and should not be installed.
    OS X automatically defragments files less than 20 MBs in size, so unless you have a disk full of very large files there's little need for defragmenting the hard drive. As for virus protection there are few if any such animals affecting OS X. You can protect the computer easily using the freeware Open Source virus protection software ClamXAV. Personally I would avoid most commercial anti-virus software because of their potential for causing problems. For more about malware see Macintosh Virus Guide.
    I would also recommend downloading a utility such as TinkerTool System, OnyX 2.4.3, or Cocktail 5.1.1 that you can use for periodic maintenance such as removing old log files and archives, clearing caches, etc.
    For emergency repairs install the freeware utility Applejack.  If you cannot start up in OS X, you may be able to start in single-user mode from which you can run Applejack to do a whole set of repair and maintenance routines from the command line.  Note that AppleJack 1.5 is required for Leopard. AppleJack 1.6 is compatible with Snow Leopard. There is no confirmation that this version also works with Lion.
    When you install any new system software or updates be sure to repair the hard drive and permissions beforehand. I also recommend booting into safe mode before doing system software updates.
    Get an external Firewire drive at least equal in size to the internal hard drive and make (and maintain) a bootable clone/backup. You can make a bootable clone using the Restore option of Disk Utility. You can also make and maintain clones with good backup software. My personal recommendations are (order is not significant):
    Carbon Copy Cloner
    Data Backup
    Deja Vu
    SuperDuper!
    SyncTwoFolders
    Synk Pro
    Synk Standard
    Tri-Backup
    Visit The XLab FAQs and read the FAQs on maintenance, optimization, virus protection, and backup and restore.
    Additional suggestions will be found in Mac Maintenance Quick Assist.
    Referenced software can be found at CNet Downloads or MacUpdate.
    Be sure you have an adequate amount of RAM installed for the number of applications you run concurrently. Be sure you leave a minimum of 10% of the hard drive's capacity as free space.
    Adding more RAM, if feasible, and a new, faster hard drive may also help pep it up a little.

  • CALL RFC DATA FROM TWO LINKED TABLES IN EXCEL VBA

    Hi,
    I am using Excel VBA to call information from tables in SAP.
    This is working correctly, however I now need to be able to call information from another table where the two tables are linked by a common data field.
    Example.
    The first table I have lists all items in stock and contains an article number. The second table contains all article numbers and their descriptions.
    I want to be able to call the first table but to have the article codes description on there aswell.
    Here is the code I am currently using.
    Sub GetTable()
    'Connect to SAP
    Dim sapConn As Object 'Declare variant
    Set sapConn = CreateObject("SAP.Functions") 'Create ActiveX object
    sapConn.Connection.System = "QA2"
    sapConn.Connection.client = "900"
    sapConn.Connection.user = "mbrough"
    sapConn.Connection.Password = "st34lh"
    sapConn.Connection.Language = "EN"
    If sapConn.Connection.Logon(1, False) <> True Then 'Try Logon
       MsgBox "Cannot Log on to SAP"
    End If
    'Define the table specifics
    Dim objRfcFunc As Object
    Set objRfcFunc = sapConn.Add("RFC_READ_TABLE")
    Dim objQueryTab, objRowCount As Object
    Set objQueryTab = objRfcFunc.Exports("QUERY_TABLE")
    objQueryTab.Value = "LQUA"
    Set objRowCount = objRfcFunc.Exports("ROWCOUNT")
    objRowCount.Value = "15000"
    Dim objOptTab, objFldTab, objDatTab As Object
    Set objOptTab = objRfcFunc.Tables("OPTIONS")
    Set objFldTab = objRfcFunc.Tables("FIELDS")
    Set objDatTab = objRfcFunc.Tables("DATA")
    'Set the condition and refresh the table
    objOptTab.FreeTable
    objOptTab.Rows.Add
    objOptTab(objOptTab.RowCount, "TEXT") = "LGTYP BETWEEN 'K01' AND 'K06'"
    'Set fields to obtain and refresh table
    objFldTab.FreeTable
    'Then set values to call
    objFldTab.Rows.Add
    objFldTab(objFldTab.RowCount, "FIELDNAME") = "LGNUM"
    objFldTab.Rows.Add
    objFldTab(objFldTab.RowCount, "FIELDNAME") = "MATNR"
    objFldTab.Rows.Add
    objFldTab(objFldTab.RowCount, "FIELDNAME") = "WERKS"
    objFldTab.Rows.Add
    objFldTab(objFldTab.RowCount, "FIELDNAME") = "LGTYP"
    objFldTab.Rows.Add
    objFldTab(objFldTab.RowCount, "FIELDNAME") = "LGPLA"
    objFldTab.Rows.Add
    objFldTab(objFldTab.RowCount, "FIELDNAME") = "GESME"
    objFldTab.Rows.Add
    objFldTab(objFldTab.RowCount, "FIELDNAME") = "VERME"
    objFldTab.Rows.Add
    objFldTab(objFldTab.RowCount, "FIELDNAME") = "MEINS"
    If objRfcFunc.Call = False Then
       MsgBox objRfcFunc.Exception
    End If
    Dim objDatRec As Object
    Dim objFldRec As Object
    For Each objDatRec In objDatTab.Rows
       For Each objFldRec In objFldTab.Rows
          Cells(objDatRec.Index, objFldRec.Index) = _
                Mid(objDatRec("WA"), objFldRec("OFFSET") + 1, objFldRec("LENGTH"))
       Next
    Next
    End Sub
    The table which contains the article descriptions is called 'MAKT' and this table also contains the column 'MATNR' which is the article field.
    Many thanks,
    Mike

    Is there no way of connecting the tables within the code.
    IT won't give me access to SE11
    Thanks,
    Mike

Maybe you are looking for

  • ASSET ACCOUNTING TREATMENT

    HI, I created the Asset PO mentioning the asset number and its GL which is assigned during the asset creation with asset class. While doing GR no accounting document available and when posting invoice it is crediting to vendor and debit to that asset

  • How to Get Current running Sqltext in 10g

    I'm using 10g and i'm using following query to get current running sql. SELECT A.SID,B.HASH_VALUE, OSUSER, USERNAME, SQL_TEXT FROM V$SESSION A, V$SQLTEXT B WHERE B.HASH_VALUE = A.SQL_HASH_VALUE AND USERNAME LIKE upper('%UOBA%') ORDER BY B.HASH_VALUE,

  • He ABAP/4 Open SQL array insert results in duplicate database records

    Dear Gurus, II am getting a dump when I run MD02/ MD03. (t- code to run MRP) Below is the message system is showing: Please help Thanks in Advance Best Regards Adhish Short text The ABAP/4 Open SQL array insert results in duplicate database records.

  • Changing default apps on N9

    Is there a way to change default apps on the N9, would like to have CuteTube as my default YouTube app. Thanks

  • It would be nice if you could combine Adobe CC Photoshop, Illustrator, etc... into one application Workspace.

    Scenario: I'm using Illustrator and Edge Animation to build a project. I've created project assets in both applications and to do that I need to flip back and forth between applications. Cool. Let's say I need to make a quick edit, so now, I need to