OSA : Approve button disabled.

Hi,
We have implented OSA model for Appraisals.Using the BSP Applcation <b>HAP_DOCUMENT</b>.If an employee(further participant) logs in,the Approve/Reject button is disabled in the page 'documents_where_participated.htm'.
For the same user,it's works fine in R/3 who uses the Trnx <b>PHAP_CHANGE_PA </b>.
Any help will be much Appreciated.
Rgds,
Jothi.
Message was edited by: Jothivenkatachalam.P

Thanks Vikas,
I hav tried that already, Evn if i set the 'Person Authorized' to '0 All Users', the same situtaion(Approve bt diabled) persists.
Wht i did is, i set the authorization of that field to 'Higher level mgr' and while running the appln BSP/HAP_DOCUMENT/document_where_participated.htm  from the higher level mgrs login id.
and also it's not working for '0 All users'.
Is it a configuration issue or whether i hav to modify the std page in HAP_DOCUMENT.
Awaiting for ur input.
Rgds,
Jothi.

Similar Messages

  • Add Approver button disabled for PO in sap srm when GR and IR are already posted

    Hello Gurus,
         One of my user has edited an old PO for which the GR and IR has already been posted in backend. Now the reason for editing was to change the expected value for 3 item and he changed the value the approver is still blank as for old PO's there was no approval required but later on the whole scenario changed and based on total value the approvers are decided now. But for this PO still its not showing the appovers and also the add approver button is disabled. Is there any way to enable the Add approver button. Also please let me know whether addition of approver is allowed after the GR and IR are posted in backend.
    Thanks
    Gaurav Gautam

    Solved.
    In Control Actions -> Configure Control of Actions on Header Level, it's not neccessary put the subtype equal to 0.

  • SRM 7.0 'Add Approver' button disabled after rejection

    Hi Experts,
    I'm working on SRM 7.0(BRF) RFx workflow. I have configured the process level schema and the acceptance by contact person in customizing. When any of the approver rejects the document, it comes back to the creator which is right. But i see the 'Add Approver' button as disabled. But while creating a new document it is showing the 'Add Approver' button, only after rejection, the creator is seeing the button as disabled. Is it the standard behaviour in SRM7.0 ?
    Can you guys share your thoughts on this..
    Thanks
    Ram

    Hi,
    Please check the note 1378094.
    https://service.sap.com/sap/support/notes/1378094
    Regards,
    Masa

  • JFileChooser in OS X: Approve Button Disabled In Empty Directory

    I have written a simple extended JFileChooser-based 'wizard' to assist in working with sound files in an application. It's a JDialog, which contains a JFileChooser to which is added a file preview (player) accessory. In step 1 you choose a file. In step 2 I reset the current directory to the destination. The user then presses the approve button ad it drops a copy of the selected file into the current directory.
    This works OK in Windows, but in OS X the approve button is disabled if nothing is selected in the current directory. If the destination directory is empty there is no way to get the approve button to be enabled. JFileChooser allows you to modify a few properties of the approve button, but hides the button itself. Is there any way to ensure that this button is enabled even if the current directory is empty or nothing is selected?
    Thanks in advance for any ideas!

    Hmm... perhaps in step 2 you could setFileSelectionMode(DIRECTORIES_ONLY) and allow the user to choose the directory?
    To get better help sooner, post a SSCCE that clearly demonstrates your problem.
    To post code, use the code tags -- [code]Your Code[/code]will display asYour CodeOr use the code button above the editing area and paste your code between the {code}{code} tags it generates.
    db

  • Add Approver button disabled in SRM Shopping cart

    Hello,
    We have activated 2 level PC workflow. However we are facing issue that Add Approver button is not enabled.
    Could anyone please advise.
    Thank you
    Ritesh

    Hi Ritesh,
    On the face of it,I have couple of points for you to check it out.
    1.
    Please check the agent assignment at the header level of the workflow.
    Go to transaction PFTC -> Select workflow template -> 14000133 (or   
    whichever workflow you are using) -> Display -> Additional data ->   
    Agent Assignment -> Maintain -> Attributes -> Select radio button    
    'General Task' .. or instead of everybody being able to make changes 
    you can set the agent assignment of the workflow at role level.      
    Please also review note 581191.
    2.Check if this button is not visible or not for all the roles.
    3.Check any portal enhancements or Metadata config to make it display.
    Thanks
    Balaji

  • Approval/reject buttons disabled

    Hello,
    I am running SRM 5.0 Extended Classic.
    I have a problem with approval of contracts. I have created a contract, released it and the workflow sends it to a user with approval rights. The contract can be seen in the approval inbox of this user where it says "approve contract xx" but the approve and reject buttons are grey and cannot be used.
    The document is complete and in the workflow preview, I can see that it is waiting for approval. The user is correct
    Any ideas why this happens?
    rgds
    GAR

    Hi,
    See the foll related threads:
    Approve reject button is disabled
    Re: Approve Reject button in Item level is disable
    Also see the foll notes:
    Note 967429 - Approval buttons not updated after release
    Note 1074724 - WS14000148:Button "Return to approver" does not work
    Note 1019390 - Contract APPROVE/REJECT button displayed even after approval
    BR,
    Disha.
    Pls reward points for useful answers.

  • Disable the 'Approve' button on the TRIP Tcode

    Hi ,
          I need to Disable  the 'Approve' button on the TRIP Tcode ( Travel management)  security setting.  User does not want TRIP tocde to be able to approve their own trip expenses. The approval button should be enabled in PR05 but not in TRIP.
    So can someone suggest me, Can we achieve this through object restriction? Or else Do we need to change the codeing with the help of ABAPer .
    Thanks & Regards
    Umashankar
    SAP Security

    Eliminate the Option from the TCode screen by using Transaction Variant and then create a Variant Transaction for that. Assign this new custom TCode to the Users.
    To know more on this process, please check the following thread just discussed:
    Variant using SHD0
    Regards,
    Dipanjan
    Edited by: Dipanjan Sanpui on Jul 7, 2009 6:59 PM

  • Disable the approve button when ever nonapprover login

    Hi Friends,
    i want to disable the approve button , when ever non approvers login into that requisitions page. please let me know, how to do. only approvers will have to see that approve button. can we achieve through OAF personalizations or Extensions.
    Thanks
    vamshi.

    Hi,
    You can extend the Controller of that page and in extended controller on page load
    Capture the Requistion details and valid approvers from a Prepared Statement.
    Then match the Approvers with the Login user name (pageContext.getUserName())
    If the user name is not there in the valid approvers then set the disabled property of button to true,
    bean.setDiasbled(true);
    Thanks,
    Gaurav

  • Disable approv button  in pr05

    hi ! i have a requirement to disable the approve button  in pr05 .
    i know this is standard tcode .if this is not possible then please tell me how can i create customizable tcode for this standard tcode.
    Please help me .

    Try to Modify Authorization Object P_TRAVEL  field "AUTHS" removing value 4 in all roles provided to user.
    Regards

  • GL approval button is disabled

    Hello gus,
    I am trying to approve a GL Journal, but the approval button is disabled. The two profiles:Journals: Allow Preparer Approval and Journals: Find Approver Method; limits and supervisor are all setup accordingly.
    Please let me know what I ahve missed to enable the button .
    Thanks

    Please ignore this query . I have now resolved the issue.
    Regards

  • Disabling/Hiding Approve button UWL Inbox

    Hi,
    Currently I am working on SRM upgrade project . How to remove/hide approve button in UWL inbox.
    Below xml code, using in UWL configuration file in portal:
    <ItemType name="uwl.task.webflow.srm.TS90000005.SAP_SRM" connector="WebFlowConnector" defaultView="com.sap.pct.srm.core.view.tasks" defaultAction="com.sap.pct.srm.core.action.launchWD.oldwfl.cont.approve" executionMode="default">
          <ItemTypeCriteria systemId="SAP_SRM" externalType="TS90000005" connector="WebFlowConnector"/>
          <Actions>
           <Action reference="com.sap.pct.srm.core.action.launchWD.oldwfl.cont.approve" />
    <!<Properties><Property name="display_order_priority" value="uwlExcludeFromPreviewDetail"/></Properties></Action>>
         </Actions>
        </ItemType>
    Implemented " uwlExcludeFromPreviewDetail" code in xml, but it is not working. Pls guide, how to tweak the properties definition a little bit to get it to work.
    Tried by mentioning USERDECISION parameter in UWL iview exclude property.

    Hello,
    Have you tried to remove:
    <Actions>
    <Action reference="com.sap.pct.srm.core.action.launchWD.oldwfl.cont.approve" />
    <!<Properties><Property name="display_order_priority" value="uwlExcludeFromPreviewDetail"/></Properties></Action>>
    </Actions>
    from the xml file?  Then upload the new xml file with a new name with high priority to the portal?  Also another thing that you can do is hide the whole descriptions section with all of the buttons.  This is listed in the help documentation on how to do that.
    Beth Maben
    EP - Senior Support Consultant II
    AGS Primary Support
    Global Support Centre Ireland
    Please see the UWL Wiki @
    https://www.sdn.sap.com/irj/scn/wiki?path=/display/bpx/uwl+faq  ***

  • Disable approve button in jfileChooser (custom accessory)

    i'm using a custom accessory in a JFileChooser. i want to listen for selection events and en/dis-able the approve button depending on the selected item. how do i access the approve button. FileChooserUI has no method, BasicFileChooser has a protected getApproveButton() method. i don't see any properties that i can fire....i guess i could just "look" within the JFileChooser for the button but that seems awkward.
    any help much appreciated.

    Unfortunatly you can get the button only through the UI.
    Create a class extending the xxxFileChooserUI and create a method getApproveButton() :
    public void getApproveButton() {
    return(super.getApproveButton(null));
    Through the UIManager set the good UI for JFileChooser.
    I hope this helps,
    Denis

  • Deactivate 'APPROVE'   button  in the ALV  in RCATS_APPROVE_ACTIVITIES.

    Hi all,
    I am trying to deactivate 'APPROVE'   button  in the ALV output of the program RCATS_APPROVE_ACTIVITIES.
    Any ideas???
    Thanx in advance!!!!

    Hello Grigoria
    The following steps are necessary to implement your requirement:
    (1) Create BAdI implementation for BAdI CATS_REPORTING (i.e. class implementing interface IF_EX_CATS_REPORTING => e.g. ZCL_IM_CATS_REPORTING).
    (2) Add a public method HANDLE_TOOLBAR (to your BAdI implementing class) as event handler for event TOOLBAR of CL_GUI_ALV_GRID
    (3) Set method HANDLE_TOOLBAR as event handler for the CATS displaying grid instance:
    METHOD if_ex_cats_reporting~before_display_appr.
      SET HANDLER: handle_toolbar FOR im_alv_grid.
    ENDMETHOD.
    (4) Inactive the APPROVE toolbar button within the event handler method:
    METHOD handle_toolbar.
    * define local data
      DATA: ls_button   TYPE stb_button.
      LOOP AT e_object->mt_toolbar INTO ls_button.
        CASE ls_button-function.
          WHEN cl_grid_approval_actexp=>co_ok_approve.
            ls_button-disabled = 'X'.
          WHEN OTHERS.
            CONTINUE.
        ENDCASE.
        MODIFY e_object->mt_toolbar FROM ls_button INDEX syst-tabix.
      ENDLOOP.
    ENDMETHOD.
    Regards
      Uwe

  • JFileChooser's approve button text changes when file

    I have a JFileChooser used for loading some XML file(s). We want the approve button's text to be "Load". When I bring up the dialog, the button text initially reads "Load", when I select a directory, it reads "Open", if I select a file again, it goes back to "Load". So far, so good.
    The problem comes when using it in a non-English language. When I bring up the dialog, the button text initially reads the appropriately translated "Load". However, when I select a directory, it changes to the English "Open". I do not see a method to use to adjust this text. Am I missing something, or is this a bug?
    Any help is greatly appreciated.
    Jamie

    Here's some code I'll put into the public domain:
    package com.graphbuilder.desktop;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.util.Stack;
    import java.util.Vector;
    import java.util.StringTokenizer;
    import java.io.File;
    <p>Attempt to improve the behaviour of the JFileChooser.  Anyone who has used the
    the JFileChooser will probably remember that it lacks several useful features.
    The following features have been added:
    <ul>
    <li>Double click to choose a file</li>
    <li>Enter key to choose a file after typing the filename</li>
    <li>Enter key to change to a different directory after typing the filename</li>
    <li>Automatic rescanning of directories</li>
    <li>A getSelectedFiles method that returns the correct selected files</li>
    <li>Escape key cancels the dialog</li>
    <li>Access to common GUI components, such as the OK and Cancel buttons</li>
    <li>Removal of the useless Update and Help buttons in Motif L&F</li>
    </ul>
    <p>There are a lot more features that could be added to make the JFileChooser more
    user friendly.  For example, a drop-down combo-box as the user is typing the name of
    the file, a list of currently visited directories, user specified file filtering, etc.
    <p>The look and feels supported are Metal, Window and Motif.  Each look and feel
    puts the OK and Cancel buttons in different locations and unfortunately the JFileChooser
    doesn't provide direct access to them.  Thus, for each look-and-feel the buttons must
    be found.
    <p>The following are known issues:  Rescanning doesn't work when in Motif L&F.  Some
    L&Fs have components that don't become available until the user clicks a button.  For
    example, the Metal L&F has a JTable but only when viewing in details mode.  The double
    click to choose a file does not work in details mode.  There are probably more unknown
    issues, but the changes made so far should make the JFileChooser easier to use.
    public class FileChooserFixer implements ActionListener, KeyListener, MouseListener, Runnable {
         Had to make new buttons because when the original buttons are clicked
         they revert back to the original label text.  I.e. some programmer decided
         it would be a good idea to set the button text during an actionPerformed
         method.
         private JFileChooser fileChooser = null;
         private JButton okButton = new JButton("OK");
         private JButton cancelButton = new JButton("Cancel");
         private JList fileList = null;
         private JTextField filenameTextField = null;
         private ActionListener actionListener = null;
         private long rescanTime = 20000;
         public FileChooserFixer(JFileChooser fc, ActionListener a) {
              fileChooser = fc;
              actionListener = a;
              fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
              okButton.setMnemonic('O');
              cancelButton.setMnemonic('C');
              JButton oldOKButton = null;
              JButton oldCancelButton = null;
              JTextField[] textField = getTextFields(fc);
              JButton[] button = getButtons(fc);
              JList[] list = getLists(fc);
              String laf = javax.swing.UIManager.getLookAndFeel().getClass().getName();
              if (laf.equals("javax.swing.plaf.metal.MetalLookAndFeel")) {
                   oldOKButton = button[0];
                   oldCancelButton = button[1];
                   filenameTextField = textField[0];
                   fileList = list[0];
              else if (laf.equals("com.sun.java.swing.plaf.windows.WindowsLookAndFeel")) {
                   oldOKButton = button[0];
                   oldCancelButton = button[1];
                   filenameTextField = textField[0];
                   fileList = list[0];
              else if (laf.equals("com.sun.java.swing.plaf.motif.MotifLookAndFeel")) {
                   oldOKButton = button[0];
                   oldCancelButton = button[2];
                   button[1].setVisible(false); // hides the do-nothing 'Update' button
                   button[3].setVisible(false); // hides the disabled 'Help' button
                   filenameTextField = textField[1];
                   fileList = list[0];
              fix(oldOKButton, okButton);
              fix(oldCancelButton, cancelButton);
              okButton.addActionListener(this);
              cancelButton.addActionListener(this);
              fileList.addMouseListener(this);
              addKeyListeners(fileChooser);
              new Thread(this).start(); // note: rescanning in Motif feel doesn't work
         public void run() {
              try {
                   while (true) {
                        Thread.sleep(rescanTime);
                        Window w = SwingUtilities.windowForComponent(fileChooser);
                        if (w != null && w.isVisible())
                             fileChooser.rescanCurrentDirectory();
              } catch (Throwable err) {}
         public long getRescanTime() {
              return rescanTime;
         public void setRescanTime(long t) {
              if (t < 200)
                   throw new IllegalArgumentException("Rescan time >= 200 required.");
              rescanTime = t;
         private void addKeyListeners(Container c) {
              for (int i = 0; i < c.getComponentCount(); i++) {
                   Component d = c.getComponent(i);
                   if (d instanceof Container)
                        addKeyListeners((Container) d);
                   d.addKeyListener(this);
         private static void fix(JButton oldButton, JButton newButton) {
              int index = getIndex(oldButton);
              Container c = oldButton.getParent();
              c.remove(index);
              c.add(newButton, index);
              newButton.setPreferredSize(oldButton.getPreferredSize());
              newButton.setMinimumSize(oldButton.getMinimumSize());
              newButton.setMaximumSize(oldButton.getMaximumSize());
         private static int getIndex(Component c) {
              Container p = c.getParent();
              for (int i = 0; i < p.getComponentCount(); i++) {
                   if (p.getComponent(i) == c)
                        return i;
              return -1;
         public JButton getOKButton() {
              return okButton;
         public JButton getCancelButton() {
              return cancelButton;
         public JList getFileList() {
              return fileList;
         public JTextField getFilenameTextField() {
              return     filenameTextField;
         public JFileChooser getFileChooser() {
              return fileChooser;
         protected JButton[] getButtons(JFileChooser fc) {
              Vector v = new Vector();
              Stack s = new Stack();
              s.push(fc);
              while (!s.isEmpty()) {
                   Component c = (Component) s.pop();
                   if (c instanceof Container) {
                        Container d = (Container) c;
                        for (int i = 0; i < d.getComponentCount(); i++) {
                             if (d.getComponent(i) instanceof JButton)
                                  v.add(d.getComponent(i));
                             else
                                  s.push(d.getComponent(i));
              JButton[] arr = new JButton[v.size()];
              for (int i = 0; i < arr.length; i++)
                   arr[i] = (JButton) v.get(i);
              return arr;
         protected JTextField[] getTextFields(JFileChooser fc) {
              Vector v = new Vector();
              Stack s = new Stack();
              s.push(fc);
              while (!s.isEmpty()) {
                   Component c = (Component) s.pop();
                   if (c instanceof Container) {
                        Container d = (Container) c;
                        for (int i = 0; i < d.getComponentCount(); i++) {
                             if (d.getComponent(i) instanceof JTextField)
                                  v.add(d.getComponent(i));
                             else
                                  s.push(d.getComponent(i));
              JTextField[] arr = new JTextField[v.size()];
              for (int i = 0; i < arr.length; i++)
                   arr[i] = (JTextField) v.get(i);
              return arr;
         protected JList[] getLists(JFileChooser fc) {
              Vector v = new Vector();
              Stack s = new Stack();
              s.push(fc);
              while (!s.isEmpty()) {
                   Component c = (Component) s.pop();
                   if (c instanceof Container) {
                        Container d = (Container) c;
                        for (int i = 0; i < d.getComponentCount(); i++) {
                             if (d.getComponent(i) instanceof JList)
                                  v.add(d.getComponent(i));
                             else
                                  s.push(d.getComponent(i));
              JList[] arr = new JList[v.size()];
              for (int i = 0; i < arr.length; i++)
                   arr[i] = (JList) v.get(i);
              return arr;
         public File[] getSelectedFiles() {
              File[] f = fileChooser.getSelectedFiles();
              if (f.length == 0) {
                   File file = fileChooser.getSelectedFile();
                   if (file != null)
                        f = new File[] { file };
              return f;
         public void mousePressed(MouseEvent evt) {
              Object src = evt.getSource();
              if (src == fileList) {
                   if (evt.getModifiers() != InputEvent.BUTTON1_MASK) return;
                   int index = fileList.locationToIndex(evt.getPoint());
                   if (index < 0) return;
                   fileList.setSelectedIndex(index);
                   File[] arr = getSelectedFiles();
                   if (evt.getClickCount() == 2 && arr.length == 1 && arr[0].isFile())
                        actionPerformed(new ActionEvent(okButton, 0, okButton.getActionCommand()));
         public void mouseReleased(MouseEvent evt) {}
         public void mouseClicked(MouseEvent evt) {}
         public void mouseEntered(MouseEvent evt) {}
         public void mouseExited(MouseEvent evt) {}
         public void keyPressed(KeyEvent evt) {
              Object src = evt.getSource();
              int code = evt.getKeyCode();
              if (code == KeyEvent.VK_ESCAPE)
                   actionPerformed(new ActionEvent(cancelButton, 0, cancelButton.getActionCommand()));
              if (src == filenameTextField) {
                   if (code != KeyEvent.VK_ENTER) return;
                   fileList.getSelectionModel().clearSelection();
                   actionPerformed(new ActionEvent(okButton, 0, "enter"));
         public void keyReleased(KeyEvent evt) {}
         public void keyTyped(KeyEvent evt) {}
         public void actionPerformed(ActionEvent evt) {
              Object src = evt.getSource();
              if (src == cancelButton) {
                   if (actionListener != null)
                        actionListener.actionPerformed(evt);
              else if (src == okButton) {
                   File[] selectedFiles = getSelectedFiles();
                   Object obj = fileList.getSelectedValue(); // is null when no file is selected in the JList
                   String text = filenameTextField.getText().trim();
                   if (text.length() > 0 && (obj == null || selectedFiles.length == 0)) {
                        File d = fileChooser.getCurrentDirectory();
                        Vector vec = new Vector();
                        StringTokenizer st = new StringTokenizer(text, "\"");
                        while (st.hasMoreTokens()) {
                             String s = st.nextToken().trim();
                             if (s.length() == 0) continue;
                             File a = new File(s);
                             if (a.isAbsolute())
                                  vec.add(a);
                             else
                                  vec.add(new File(d, s));
                        File[] arr = new File[vec.size()];
                        for (int i = 0; i < arr.length; i++)
                             arr[i] = (File) vec.get(i);
                        selectedFiles = arr;
                   if (selectedFiles.length == 0) {
                        Toolkit.getDefaultToolkit().beep();
                        return;
                   if (selectedFiles.length == 1) {
                        File f = selectedFiles[0];
                        if (f.exists() && f.isDirectory() && text.length() > 0 && evt.getActionCommand().equals("enter")) {
                             fileChooser.setCurrentDirectory(f);
                             filenameTextField.setText("");
                             filenameTextField.requestFocus();
                             return;
                   boolean filesOnly = (fileChooser.getFileSelectionMode() == JFileChooser.FILES_ONLY);
                   boolean dirsOnly = (fileChooser.getFileSelectionMode() == JFileChooser.DIRECTORIES_ONLY);
                   if (filesOnly || dirsOnly) {
                        for (int i = 0; i < selectedFiles.length; i++) {
                             File f = selectedFiles;
                             if (filesOnly && f.isDirectory() || dirsOnly && f.isFile()) {
                                  Toolkit.getDefaultToolkit().beep();
                                  return;
                   fileChooser.setSelectedFiles(selectedFiles);
                   if (actionListener != null)
                        actionListener.actionPerformed(evt);

  • Infopath form, one approve button with three rules, what is the order of execution

    i have designed a approval form the the "approval" button, it has three rules, one is submit to host, the second is set value to one field, the last one is to close form.
    some times, especially when the server is too busy, the first rule execute a long time, at last it seams fail, but the second and the last execute ok.
    that is, the workflow status is NOT START, but the value is set and the form is closed.
    when the approver open the workflow, the approval form check the stateValue is changed, the form show one "already approvaled" view. but the workflow still NOT START.
    i am very confused for this, hope someone give me some advices. thanks all guys!
    lixw
    i just know what has just happen. i changed some code, and this make some task been locked.
    thanks everyone!

    Why is the rule for updating a field value is set to execute after form submit? Shouldn't it be prior to submit?
    This post is my own opinion and does not necessarily reflect the opinion or view of Slalom.

Maybe you are looking for

  • Is there an utilitity to extract data from a datapump file since impdp give

    Hi, meanwhile doing a reorganization, customer has exported a table of various GBytes with expdp and has dropped the table afterwards. The problem is that it recives an ORA-600 [klaprs_11] error related to corrupted file when executing impdp. Custome

  • Storing XML attribute

    I'm trying to store an XML attribute into a variable but the value of the variable is always null. I'm using the SAX parser and displaying the attribute is no problem. Here is the content of my xml file: <config>   <param name="saTerminalId" value="6

  • Port channel WLC 5508 and 3750

    Hi All, I want to configure Port channel for WLC 5508 and cisco 3750 Stack Switch. What changes I need to make on WLC and where? Thanks Jagdev

  • HP4250n Printer and Forms printing to wrong tray

    OK, I've tried everything I can think of... here's the code: ^job PATFORM -zPHAM01P -atjoff -ati4 -c1 Issue: -ati4 on the HP 4250n This should print from tray 2 on the printer, but it's wanting to do a manual feed from tray one. Works fine on every o

  • MacBook air won't install Mavericks, can't use utility to restore

    I Tried to update the operating system on my 2013 MacBook air, it gets stuck about 12 minutes in then won't install. I have tried to use the disc utility to restore previous os but it says the disc needs repair but the repair function is not availabl