User WF_BATCH dumps with TIME_OUT for a background task

Hello,
Situation :
While executing a workflow with a task defined as background task, the workflow creates a dump in ST22 after around 40 minutes. dump is because of TIME_OUT exception. And the workflow stays in status InProcess forever.
Question:
In my opinion background tasks do not have a time limit because they are executed as backgound batch jobs with batch user WF_BATCH. Then why do I get a TIME_OUT error ?
Is my assumption that workflow background task are just handled like other background jobs (sm36) is wrong ?
More Details :
I have a workflow with a task defined as background task (Task -> Basic Data -> Execution -> Check box 'Background processing' selected).
This task calls a method defined as 'Synchronous' method.
This method calls a ABAP FM having a select statement which selects large volume of Data.
If I execute this FM in Dialog mode definately I get a TIME_OUT. I understand this.
But what I do not understand is , while executing in background I do not expect TIME_OUT error since background jobs do not have a time limit. They can even run for several days.
Please let me know in what cases does a background job throws a time_out exception.esp wrt workflow.
Thanks in Advance
Shivanand

Check this link.
http://mailman.mit.edu/pipermail/sap-wug/2003-April/008883.html
Thanks
Arghadip

Similar Messages

  • Can we change the user 'WF-BATCH' for the background task

    hi,
    I have a dialog step followed by a background task in the workflow.i wanted the user who processed the dialog step should be the one who has completed the workflow instead of the user 'WF-BATCH'.
    Is there any possibility? And does it logically sense from a business process point of view.
    Please do reply in this regard.
    Regards,
    Saujanya

    Hi
    If the update must be in the background then no it is not possible.  It is therefore important to weigh up the usability constraints of using a dialog task as opposed to what can be gained in terms of the business process flow and audit concerns.
    We must however remember that the object (such as FI doc or PO for example) exists within the concept of all related objects in R3, and this includes the workflow instance, change docs, and associated logs.  So the argument of just looking at the individual database record without its associated workflow instance - with its record of who actually did what, and to which object - does not give a true picture of the overall business process.
    Regards
    Gareth

  • 'Missing parameter with PERFORM' error with a function IN BACKGROUND TASK

    I am getting this error when calling a custom function in MIGO user exit ZXMBCU01.  When I remove the 'IN BACKGROUND TASK' the function works fine and there are no error messages.  When using 'IN BACK...' you can't debug within it to see where the message comes from.  I see the message with SM58.  I am working in an sap 4.7 environment.  I have not found any solutions from google searches.
    Here is the statement within ZXMBCU01:
        CALL FUNCTION 'Z_UPDATE_MATERIAL_AVAIL_STATUS' IN BACKGROUND TASK
          EXPORTING
            work_order = xmseg-aufnr.
    Here is the code for the function:
    FUNCTION Z_UPDATE_MATERIAL_AVAIL_STATUS.
    ""Update function module:
    ""Local interface:
    *"  IMPORTING
    *"     VALUE(WORK_ORDER) LIKE  AUFK-AUFNR DEFAULT '0000000000'
    TABLES: eban, resb, aufk.
    -Global Types----
    TYPES: BEGIN OF t_data,
           rsnum TYPE resb-rsnum,
           rspos TYPE resb-rspos,
           aufnr TYPE resb-aufnr,          "Order Number
           bdmng TYPE resb-bdmng,          "Requirement Quantity
           enmng TYPE resb-enmng,          "Quantity withdrawn
           bsmng TYPE eban-bsmng,          "Quantity ordered against this purchase requisition
           END OF t_data.
    DATA:  gt_data TYPE t_data OCCURS 0,
           ga_data TYPE t_data.
    -Global Variables----
    DATA: gv_refused TYPE BAPIFLAG-BAPIFLAG,
          gs_caufvd  TYPE caufvd,
          g_text TYPE t100-text,
          gv_objnr LIKE aufk-objnr,
          gv_status LIKE  bsvx-sttxt,
          gv_trig_stat TYPE c.
    TABLES RETURNED FROM BAPI
    DATA:  BEGIN OF xreturn OCCURS 0.
            INCLUDE STRUCTURE bapiret2.
    DATA:  END OF xreturn.
      SELECT SINGLE objnr FROM aufk
         INTO gv_objnr
         WHERE  aufnr = work_order.
      CALL FUNCTION 'STATUS_TEXT_EDIT'
        EXPORTING
          flg_user_stat = 'X'
          objnr         = gv_objnr
          only_active   = 'X'
          spras         = sy-langu
        IMPORTING
          line          = gv_status.
      IF ( gv_status CS 'REL' ) AND
         ( gv_status NS 'NMAT' AND gv_status NS 'CNF' AND gv_status NS 'CLSD' AND
           gv_status NS 'TECO' AND gv_status NS 'DLFL' ).
        SELECT SINGLE *
          FROM AUFK
         WHERE aufnr = work_order AND
               ( auart = 'PM01' OR
                 auart = 'PM02' OR
                 auart = 'PM03' OR
                 auart = 'PM99' ).
        IF sy-subrc = 0.
          SELECT resbrsnum resbrspos resbaufnr resbbdmng resbenmng ebanbsmng
            INTO CORRESPONDING FIELDS OF ga_data
            FROM resb LEFT JOIN eban
              ON resbrsnum = ebanarsnr AND
                 resbrspos = ebanarsps
           WHERE resb~aufnr = work_order AND
                 resb~bdmng > 0.
        SELECT rsnum rspos aufnr bdmng enmng
          INTO CORRESPONDING FIELDS OF ga_data
          FROM resb
         WHERE aufnr = work_order
           AND bdmng > 0.
              SELECT SINGLE bsmng
                INTO ga_data-bsmng
                FROM eban
               WHERE arsnr = ga_data-rsnum
                 AND arsps = ga_data-rspos.
              IF sy-subrc <> 0.
                CLEAR ga_data-bsmng.
              ENDIF.
               IF ga_data-bdmng = ga_data-enmng OR
                  ga_data-bdmng = ga_data-bsmng.
                 "update status - but all items must pass
               ELSE.
                 gv_trig_stat = 'N'.
                 EXIT. "status won't change so get out now
               ENDIF.
         ENDSELECT.
       IF ga_data~bdmng > 0.
           IF ga_data-bdmng = ga_data-enmng OR
              ga_data-bdmng = ga_data-bsmng.
         IF gv_trig_stat <> 'N'.
              CALL FUNCTION 'CO_IH_USERSTATUS_SET'
                EXPORTING
                  I_AUFNR              = ga_data-aufnr    "'000005000263'
                  I_USR_STAT_INT       = 'E0002'
      I_USR_STAT_EXT       =
      I_SET_INACTIVE       =
      I_BUF_READ           =
                  I_SPRAS              = sy-langu
                IMPORTING
                  E_CHNG_REFUSED       = gv_refused
                  E_CAUFVD             = gs_caufvd
                TABLES
                  RETURN               = xreturn.
              LOOP AT xreturn
               WHERE type = 'E'.
              ENDLOOP.
              IF sy-subrc <> 0.
                CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
                RETURN.
              ELSE.
                READ TABLE xreturn INDEX 1.
                CALL FUNCTION 'PI_BP_GET_MESSAGE_TEXT'
                  EXPORTING
                    iv_message_id     = xreturn-id
                    iv_message_type   = xreturn-type
                    iv_message_number = xreturn-number
                    iv_message_v1     = xreturn-message_v1
                    iv_message_v2     = xreturn-message_v2
                    iv_message_v3     = xreturn-message_v3
                    iv_message_v4     = xreturn-message_v4
                  IMPORTING
                    ev_message_text   = g_text.
              ENDIF.
         ENDIF.
         ENDIF.
           ENDIF.
         ENDSELECT.
        ENDIF.
      ENDIF.
    ENDFUNCTION.
    Does anyone have any ideas?  Thank you very much in advance.
    Glenn Allen
    Software Architect (specializing in SAP)

    I'd be starting a process of elimination... perhaps start with an "exit." right after
    SELECT SINGLE objnr
      FROM aufk
      INTO gv_objnr
      WHERE aufnr = work_order.
    exit.  "leave FM NOW
    and if that doesn't crash, work down the code down the code in the function e.g. comment out the BAPI_commit call... and / or build a little test harness report to call the Z function in background task... btw, does the ST22 dump point to anything more specific...?

  • DYNPRO_SEND_IN_BACKGROUND dump when workflow executes a background task

    Hi,
    My project is currently in version 4.6. I have a custom version of the PO release workflow and in here I created an activity calling a Custom Task, which then calls a Custom Business Object Method and then calls a program (using Submit RSWUWFML2). Unfortunately everytime the workflow goes to the said activity it hits a dump -- DYNPRO_SEND_IN_BACKGROUND.
    I've tried unchecking the flag "Advance with Dialog" inside the task but it didn't work. I know RSWUWFML2 most of the time should be scheduled in background but it just so happens that we have a certain scenario in which it should have a different body and subject. This is the reason why I opted to call it inside the workflow.
    Do you have any idea what caused this? Thanks!

    Hello Dan,
    DYNPRO_SEND_IN_BACKGROUND is an exception which occurs when system tries to call screen in background. Calling screen in background is not possible.
    Report RSWUWFML2 creates LIST at the end of this report which is nothing but a special type of screen. If you run this report as background task, definitely above exception will occur. 
    Schedule this report as job instead of using it in task.
    Regards,
    Sagar

  • Background location updates with the help of background task in ios

    Hi,
    we are building a navigation application, that updates location in background. The application receives location updates while in background by using CLLocation manager delegates. In order to reduce battery usage we take updates only on regular intervals say 5 min. For this are using NSTimer to fire an event that starts location update, fetch location and stop location updates for next 5 mins. This approach works well in foreground. But once the application is background this fails. When application fetches the location and stops the location updates for first time, the app gets suspended and never fires event to start location manger for subsequent times.
    The solution we found, for keeping the timer alive is to track it using a background task. This way even if the location updates are stopped for a particular interval the application stays live to keep the timer running. My question is, is this method, a good approach for timed location updates in background states. Is this approach in any way prone to app store rejection as the 'background tasks' are designed to serve other specific scenarios.
    Please share your thoughts on these

    Bill & stephen,
    Not much help I'm afraid, but I just saw your post & wanted to let you know that I have the same problem, but for me it manifests itself in many apps. The only thing I've noticed is that it only seems to happen when I first start typing after not using the keyboard for a while (I'm not sure how long a while is, but maybe 30 seconds or so). Then I'll type & the first few letters will be fine, and then one letter double-types, and then it's fine again until I stop using it for whatever the threshold amount of time is. I'm guessing that it has something to do with the iPad's battery management & that it's shutting off the connection to the keyboard or something & once it picks it back up, then it double-types that letter.
    At least in Pages, it isn't as big of a deal because I know it's coming, I can correct it & then type for a long time. In Numbers, my keyboard use is much less consistent, so I need to be more cognisant of it.

  • How automaticaly create user's mailboxes with content for test purposes?

    Hi all!
    Tell me please, how can i imitate outlook's users activity. In result i need 10...200 mailboxes with 100-200 elements (mail, calendar's events, meeting requests and etc) and up to 100Mb size of each mailbox. It's need for creating test environment.
    Maybe some script or programs?

    You can use LoadGen tool of MS for simulating load on your exchange servers for various access methods. You can find it at below ling.
    http://www.microsoft.com/en-in/download/details.aspx?id=40726
    Abhijeet D

  • Prob. to Copy one clt data to another clt with SCC1 for standard WF Task

    Hi All,
    I have created a business object for event driven pickslip for goods movement. With that business object I have attached a standard workflow task. This object linked with output type custom output type'Z001'.
    With a subroutine it triggers workflow task.
    I want to move this standard task from clt 400 to clt 440 with t-code SCC1, but I am getting below error:
    *Copy Tables from a Client*
    *Table                 Ins.     Del.     Upd. Func.  kByte  Time[sec] Time*
    *Log -> See Transaction SCC3*
    *Table T78NR is not client-specific*
    *Error in object R3TR1 HRNR2  3*
    *Table HRS1000 is not client-specific*
    *Table HRS1002 is not client-specific*
    *Table HRS1203 is not client-specific*
    *Table HRS1210 is not client-specific*
    *Table HRS1211 is not client-specific*
    *Table HRSCONT is not client-specific*
    *Table HRSOBJECT is not client-specific*
    *Error in object R3TR1 PDAC2  3*
    *Table HRS1000 is not client-specific*
    *Table HRS1002 is not client-specific*
    *Table HRS1200 is not client-specific*
    *Table HRS1201 is not client-specific*
    *Table HRS1202 is not client-specific*
    *Table HRS1206 is not client-specific*
    *Table HRS1210 is not client-specific*
    *Table HRS1211 is not client-specific*
    *Table HRS1212 is not client-specific*
    *Table HRS1213 is not client-specific*
    *Table HRS1214 is not client-specific*
    *Table HRS1216 is not client-specific*
    *Table HRS1220 is not client-specific*
    *Table HRS1221 is not client-specific*
    *Table HRSCONT is not client-specific*
    *Table HRSOBJECT is not client-specific*
    *Error in object R3TR1 PDTS2  3*
    *Table SWOT21 is not client-specific*
    *Table SWOTDI is not client-specific*
    *Table SWOTDQ is not client-specific*
    *Table SWOTDV is not client-specific*
    *Table SWOTOL is not client-specific*
    *Table SWOTTQ is not client-specific*
    *Table SWOTTV is not client-specific*
    *Table TOJTB is not client-specific*
    *Table TOJTT is not client-specific*
    *Error in object R3TR1 SOBJ2  3*
    *Table TDDAT is not client-specific*
    *Table TVDIR is not client-specific*
    *Selected tables           :             42*
    *Processed tables          :              4*
    *Storage required (KB) :              0*
    *Program ran successfully*
    *Runtime (seconds)         :              5*
    *End of processing: 15:42:15*
    Could you please guide me how to remove these errors.
    Thanks in Advance,
    Guri

    Make sure that you are trying to copy the customizing  request rather than the work bench, because when ever you create a rule or task it will prompt you for the workbench request rather that customizing request so i think there is no necessary of the client copying .

  • JMX for periodic background tasks

    Hi - I need to run a task periodically to collect some reporting information and interact with the EJBs deployed on my server.
    Would it be appropriate to use a JNX MBean to do this, and can I deploy the MBean to run periodically, say every 10 mins? I noticed in the docs there is some mention of timers for MBeans - would this be a valid use for MBeans and timers?
    Thanks in advance, Kevin

    I've found a good solution for this myself: JBoss 3.0 has a Scheduler MBean that can be used to schedule periodic execution of any other class - this is exactly what I was looking for.

  • Starting background task in labview

    Let me outline what I am looking to do.  I'm not sure if a background task is the best descriptor, but it's the one I'm coming up with.  it's tricky to explain, but here goes .....
    When we start the program, we want to start the background task/alternate path/server (not sure which one best applies).  I do not want the program to wait for the background task to complete.  The program is then going to continue and do other processing.
    The background task is going to do com port reads, filter them, and make the filtered results available to the original program.
    Then when exiting the program the calling program would terminate the process.  An alternate process would also be needed for handle aborted cases.
    Any ideas?
    Mike
    Mike

    Charles_CLA wrote:
    As far as starting the process on another machine, I don't believe that is possible. You could make a small LabVIEW program that is design to run as a service and have it "listen" for a command to start the program. You could then transfer data via TCP, network shared variable, etc. Would it help for me to send you some code demonstrating asynchronous calls?
    Hi Charles,
    It USED TO BE POSSIBLE to use FTP to transfer VIs to remote machines then afterwards use VI Server to open (with complete file path) and run the VI on the remote machine.
    Ben
    Ben Rayner
    I am currently active on.. MainStream Preppers
    Rayner's Ridge is under construction

  • Push Notification Background Task Crashes Emulator/Device

    I have a universal app for Win 8.1 and WinPhone 8.1. I have a background task triggered by push notifications, which has worked fine in my Win 8.1 app. I made the necessary changes as far as registration goes for the Phone 8.1 app, and as far as I can tell
    registration is fine. So I launch the app in the emulator, and send a raw notification using the 'Notification Simulator' tool. This does indeed trigger my background task JS file, but the emulator promptly crashes after displaying an error like "Network
    communication is no longer available" or some such. This happens even if I put a break point on the first statement of the background task script. I've also tried using a real push notification from my web service and that produces the same results (emulator/device
    crashing).
    I made a small test in which I changed my trigger type to a system event so I could manually trigger the background task via VS. Doing this, I was able to properly debug the background task script. So something is definitely messed up with the push notification
    trigger, but I have no idea what it could be. I've even copied my background task registration code to the 'RawNotifications Sample' app and that still works, so I know the registration code works. I've also copied the exact same code for the background task
    script from the sample app since I know that should work.
    The emulator crashing could be due to some errors I occasionally see in the background task, one of which is an 'Access denied' error when trying to access the
    'WebUIBackgroundTaskInstance.current' property inside the background task. Another error occurred when trying to access
    'ApplicationData.localSettings'. That one was something like 'failed to load state store'.
    If anyone can make sense of any of this that'd be wonderful. I can post some screenshots of errors, etc. later today for added clarification.
    Thanks.

    So I've done some more investigating and it turns out the
    sample app actually does not work as intended. When I thought it was working, I actually wasn't invoking the background task capability, but rather the
    pushnotificationreceived event on the notification channel. After running the part of the app that is supposed to run the background task on receiving a push notification, I get the same crashing behavior as my own application. Based on this,
    it would seem that Windows Phone 8.1 Developer Preview does not actually support background tasks triggered by push notifications.
    Here are some screenshots of the emulator after I try pushing a raw notification via the NSE.

  • How to see the status of a FM IN BACKGROUND TASK?

    Hi experts,
    If I call a FM IN BACKGROUND TASK addition. I can't Debug the FM called in BACKGROUND TASK. Then whether there is a way to see the status of this FM IN BACKGROUND TASK? I want to know this task is finish or not.
    Thanks.

    Hi Kelvin,
    I am also facing similar problem. I have come across few documents which have suggeted the way to test the FM in background. For this you will have to change the debugging settings, its in the  Settings->Display and change all. Check the oprion for In background task.
    A good document on settings of debugging.
    http://www.sappro.com/downloads/Settings&SystemAreas.pdf
    Regards,
    Sana.

  • Reg Super user for schedule background Jobs

    Hi Experts,
    I have created new user copied from DDIC with the same authorization. This is for scheduling Background Jobs. Now all the standard background Jobs are running fine. After scheduling the Jobs I have changed to system user. Now for audit purpose I need SAP note to do same. Please help me to get the sap note for the same. Please respond ASAP. treat this is as high priority.
    Thanks & Regards,
    Haseem.

    HI,
    It is not necessary for user having SAP_ALL authorization under which background job is running.
    Define specific users to use for background processing. Define them as system users (non-dialog) and give them only the necessary authorizations that are needed for the executed programs
    check  http://help.sap.com/saphelp_nw04/helpdata/en/db/f6f3393bef4604e10000000a11402f/frameset.htm
    also check Note 101146 - Batch: authorization object S_BTCH_JOB, S_BTCH_NAM
    regards,
    kaushal

  • Users are unable to synchronize document libraries with OneDrive for Business

    Hello,
    We are having an issue with our users attempting to synchronize document libraries with OneDrive for Business. When a user tried to synchronize the document library either via the "SYNC" button on the document library page using IE or by
    manually entering the document libraries path into the OneDrive for Business desktop app they receive the following error
    "We can't connect to the specified SharePoint site". The users have the Edit permission to both the site and the document library. I have performed the following actions in attempt to get the synchronization to work.
    1. Tested giving user the owner permission to the site and document library. same result.
    2. Performed a repair on the users Office 2013 installation.
    An interesting point to note is that I myself am able to synchronize the document libraries using both the "SYNC" button on the document library site and by entering the path manually in the desktop app. Difference between my account and the test
    accounts is that I'm a site collection administrator and farm administrator. Can anyone shed some light onto this issue?

    Hi Corey,
    According to your description, my understanding is that the users cannot sync document libraries with OneDrive for Business.
    I recommend to check the Permission Level to see if the Use Client Integration Features permission is selected.
    If not, check this permission in the corresponding permission level which is granted to the users.
    Please also check if the users have the right permission to sync the document library with OneDrive for Business.
    More reference:
    http://nheylen.wordpress.com/2014/05/15/sync-error-we-cant-connect-to-the-specified-sharepoint-site/
    Best regards.
    Thanks
    Victoria Xia
    TechNet Community Support

  • OSSNOTES for releasing process orders with missing parts in background

    Hi All,
    The bapi 'BAPI_PROCORD_RELEASE' is not releasing the process orders
    with missing parts in background.
    Is there any OSSNotes for releasing these process orders in backgound through this bapi.
    Pls help.
    Thanks .

    Hi Suri - Thanks for your response. I tried both with blank(individual and collective) and 2 (collective req. only) but I still get the same result. I found one other setting that can solve this issue and that is checking the activate full confirmation logic at the the MRP group level in OPPR. I will test more and let you know if that works but we dont use MRP groups here at our client and that is why I was little hesistant to set up collective availability check parameters at the MRP group level. But looks like this is the only option that we can use to get this resolved.
    Thanks,
    Bharath

  • Problem with user services (creating a service for mpdas)

    Hi, I'm using mpd and using a user service to start it.
    However, I'm trying to create a service for mpdas (a mpd client for last.fm) and getting some errors:
    currently, my mpdas.service is as following:
    [Unit]
    Description=AudoScrobbler client for MPD
    After=mpd.service
    [Service]
    ExecStart=/usr/bin/mpdas
    [Install]
    WantedBy=default.target
    Which giving me the following errors:
    (14:49:55) [ERROR] You are not root. Not changing user ..
    (14:49:55) [INFO] Connected to MPD.
    (14:49:56) [INFO] Last.fm handshake successful. SessionID: ...
    terminate called after throwing an instance of 'std::ios_base::failure'
      what():  basic_filebuf::underflow error reading the file
    Aborted
    Which are the same errors I get if I run just "mpdas" instead of running it with sudo.
    If I use it as a root service (instead of a user service) it fails on startup, but works fine when I restart the server.
    So, I'm assuming:
    1) mpdas needs root permission
    2) if used as a root service, it fails at startup cause the mpd service (enabled as a user service) hasn't started yet
    3) if used as a user service, it fails cause it needs root permission
    What's the 'correct' way to solve this? (I believe mpdas should be a user service, cause it runs with a config that is just for my user).
    Is there a way to make a user service run with root privileges?
    I couldn't figure out the best way to configure it.
    Last edited by alv-r- (2014-11-29 18:37:56)

    TheSaint wrote:Why should it fails with sudo?
    It works only with sudo. It was failing as a system service because it needs mpd, which I configured as an user service. Then when systemd starts the system services (when booting) there's not mpd instance running and it fails.
    TheSaint wrote:Doesn't it works with fakeroot ?
    As a noob, I don't know exactly how fakeroot works, I'll take a better look at it, but running it with fakeroot takes rid of the errors I was getting when not running as sudo.
    The problem I have now is that it still fails on startup, but there isn't any helpful (or unhelpful) message. It just shows the PID and says it failed.
    If I run
    systemctl --user start mpdas
    it works well though. Any ideas of why this happens?
    My current unit file looks like this:
    [Unit]
    Description=AudoScrobbler client for MPD
    After=mpd.service
    Requires=mpd.service
    [Service]
    ExecStart=/usr/bin/fakeroot /usr/bin/mpdas
    [Install]
    WantedBy=default.target
    Raynman wrote:Why does it need root privileges? Maybe you just need to configure it properly to run under your normal user?
    Seeing the options in the man page and the config options for the config file, I don't see any that could do the trick.
    I'll send a message to the developer with the error I'm getting (when not running as sudo).
    Last edited by alv-r- (2014-11-29 18:36:59)

Maybe you are looking for

  • Accessing Tables using DB link .

    Hello Friends, I have a development and production env. I created a public DB link in Development say mylink . Trying to access the developement table from production using the following command say to access table x From PROD accessing DEV table x u

  • Max-beans-in-cache, cachefullException, outOfMemoryError

    Hi, I am trying to find the best way to find the numbers to be set in max-beans-in-cache for entity beans. I have a stateless session bean through which I access the entity beans. If I don't set any value for this property, in some query which will r

  • Microsoft word and pages

    when i open microsoft word doc in pages the format is all out

  • Help, I accidentally threw out PS w/o uninstalling.

    I accidentally threw out PS CS3 w/o uninstalling, now I cannot uninstall the Creative Suite CS3 it is part of, nor can I reinstall any part of the Creative Suite CS3, or photoshop. I have tried the Adobe Manager and it fails to open, I have tried the

  • No video and mic when I open and close laptop

    I have a Pavilion dv7  each time I open or close my laptop the camera and mic cuts off and it does not show up in the device manager. Its like something is loose inside, has this happened before its just out of warranty and how can it be fixed? This