How to Add JAR files and Config files to CLASSPATH at runtime?

QUERY:
During runtime, I need to load the JAR files and relevant config files( .cfg files and .properties file) into CLASSPATH and run a specific java program from one of the JAR which is available in CLASSPATH.
Please advise me any relevant Java API details or a sample java program to implement the above use case.
Thanks in advance.

During runtime, I need to load the JAR files and relevant config files( .cfg files and .properties file) into CLASSPATH and run a specific java program from one of the JAR which is available in CLASSPATH.
Please advise me any relevant Java API details or a sample java program to implement the above use case.
You don't add to YOUR classpath once your app is launched.
You create a NEW process for the app you want to run and provide the proper environment for it to run in - including any PATH or CLASSPATH environment variables.
The Java API for the ProcessBuilder class has a simple example that shows how to create the arguments and launch an external application.
ProcessBuilder (Java Platform SE 7 )
There are also PLENTY of other examples of using ProcessBuilder; just search the net.

Similar Messages

  • How to add .xml, .js and .css files to a xml viewer?

    Hi,
    I have a xml viewer in a web part to display a moving txt message. 
    I created a doc. library called XmlWebParts and in it 3 files with the same name. I am referring the xml file in the doc library with no issues. 
     WarningMessage.xml
    <script type="text/javascript" src="http://icare/sites/IT/tst/XmlWebParts/WarningMessage/WarningMessage.js"></script>
    <div class="marquee">jQuery marquee is the best marquee plugin in the world</div>
    <br/>
    <a class='p' href='#'>Pause</a> | <a class='r' href='#'>Resume</a>
    <link rel="stylesheet" type="text/css" href="http://icare/sites/IT/tst/XmlWebParts/WarningMessage/WarningMessage.css"/>
    WarningMessage.js
    var $mq = $('.marquee').marquee();
    //Pause
    $('.p').click(function(){
      $mq.marquee('pause');
    //Resume
    $('.r').click(function(){
      $mq.marquee('resume');
    and 
    WarningMessage.css
    .marquee {
      width: 300px;
      border: 1px solid #ccc;
      background: #ccc;
    The issue I am having is that the txt display with the formatting but is not moving, is just display the txt.
    I followed this: http://social.technet.microsoft.com/wiki/contents/articles/20764.sharepoint-2013-build-a-webpart-using-html-javascript-and-the-xml-viewer-web-part.aspx
    What I am doing wrong?

    Is not working for me.
    I have the
    WarningMessage.xml
    <script type="text/javascript" src="http://icare/sites/IT/tst/XmlWebParts/WarningMessage/WarningMessage.js"></script>
    WarningMessage.js
    <script type="text/javascript">
    <
    //set the marquee parameters
    function init() { rtl_marquee.start(); }
    var rtl_marquee_Text = 'JavaScript scrolling text';
    var rtl_marquee_Direction = 'left';
    var rtl_marquee_Contents='<span style="font-family:Comic Sans MS;font-size:12pt;white-space:nowrap;">' + rtl_marquee_Text + '</span>';
    rtl_marquee = new xbMarquee('rtl_marquee', '19px', '90%', 6, 100, rtl_marquee_Direction, 'scroll', rtl_marquee_Contents);
    window.setTimeout( init, 200);
    </script>
    xbMarquee.js
    document.writeln('<style type="text/css">');
    document.writeln(' div.marqueecenter1 { text-align: center; }');
    document.writeln(' div.marqueecenter2 { margin- margin-right: auto; }');
    document.writeln(' div.marqueeleft1 { text-align: left; }');
    document.writeln(' div.marqueeleft2 { margin- margin-right: auto; }');
    document.writeln(' div.marqueeright1 { text-align: right; }');
    document.writeln(' div.marqueeright2 { margin- margin-right: 0; }');
    document.writeln('</style>');
    function xbMarquee(id, height, width, scrollAmount, scrollDelay, direction, behavior, html)
      this.id            = id;
      this.scrollAmount  = scrollAmount ? scrollAmount : 6;
      this.scrollDelay   = scrollDelay ? scrollDelay : 85;
      this.direction     = direction ? direction.toLowerCase() : 'left';  
      this.behavior      = behavior ? behavior.toLowerCase() : 'scroll';  
    //  this.name          = 'xbMarquee_' + (++xbMarquee._name);
      this.name          = id;
      this.runId         = null;
      this.html          = html;
      this.isHorizontal = ('up,down'.indexOf(this.direction) == -1);
      if (typeof(height) == 'number')
        this.height = height;
        this.heightUnit = 'px';
      else if (typeof(height) == 'string')
        this.height = parseInt('0' + height, 10);
        this.heightUnit = height.toLowerCase().replace(/^[0-9]+/, '');
      else
        this.height = 100;
        this.heightUnit = 'px';
      if (typeof(width) == 'number')
        this.width = width;
        this.widthUnit = 'px';
      else if (typeof(width) == 'string')
        this.width = parseInt('0' + width, 10);
        this.widthUnit = width.toLowerCase().replace(/^[0-9]+/, '');
      else
        this.width = 100;
        this.widthUnit = 'px';
      // xbMarquee UI events
      this.onmouseover   = null;
      this.onmouseout    = null;
      this.onclick       = null;
      // xbMarquee state events
      this.onstart       = null;
      this.onbounce      = null;
      var markup = '';
      if (document.layers)
        markup = '<ilayer id="' + this.id + 'container" name="' + this.id + 'container" ' +
                 'height="' + height + '" ' +
                 'width="' + width + '"  ' +
                 'clip="' + width + ', ' + height + '" ' +
                 '>' + 
                 '<\/ilayer>';            
      else if (document.body && typeof(document.body.innerHTML) != 'string')
        markup = '<div id="' + this.id + 'container" name="' + this.id + 'container" ' +
                 'style=" ' + 
                 'height: ' + this.height + this.heightUnit + '; ' +
                 'width: ' + this.width + this.widthUnit + '; ' +
                 'clip: rect(0px, ' + this.width + this.widthUnit + ', ' + this.height + this.heightUnit + ', 0px); ' +
                 '">' + 
                 '<div id="' + this.id + '" style="' + 
                 (this.isHorizontal ? 'width:0px;' : '') + // if we scroll horizontally, make the text container as small as possible
                 '">' +
                 (this.isHorizontal ? '<nobr>' : '') +
                 this.html +
                 (this.isHorizontal ? '<\/nobr>' : '') +
                 '<\/div>' +
                 '<\/div>';             
      else 
        markup = '<div id="' + this.id + 'container" name="' + 
                 this.id + 'container" ' +
                 'style=" overflowY: visible; ' + 
                 'height: ' + this.height + this.heightUnit + '; ' +
                 'width: ' + this.width + this.widthUnit + '; ' +
                 'clip: rect(0px, ' + this.width + this.widthUnit + ', ' + this.height + this.heightUnit + ', 0px); ' +
                '">' + 
                 '<\/div>';             
      document.write(markup);  
      window[this.name] = this;
    // Class Properties/Methods
    xbMarquee._name = -1;
    xbMarquee._getInnerSize = function(elm, propName)
      var val = 0;
      if (document.layers)
        // navigator 4
        val = elm.document[propName];    
      else if (elm.style && typeof(elm.style[propName]) == 'number')
        // opera
        // bug in Opera 6 width/offsetWidth. Use clientWidth
        if (propName == 'width' && typeof(elm.clientWidth) == 'number')
          val = elm.clientWidth;
        else
          val =  elm.style[propName];
      else
        //mozilla and IE
        switch (propName)
        case 'height':
           if (typeof(elm.offsetHeight) == 'number')
             val =  elm.offsetHeight;
           break;
        case 'width':
           if (typeof(elm.offsetWidth) == 'number')
             val = elm.offsetWidth;                  
           break;
      return val;
    xbMarquee.getElm = function(id)
      var elm = null;
      if (document.getElementById)
        elm = document.getElementById(id);
      else
        elm = document.all[id];
      return elm;
    xbMarquee.dispatchUIEvent = function (event, marqueeName, eventName)
      var marquee = window[marqueeName];
      var eventAttr = 'on' + eventName;
      if (!marquee)
        return false;
      if (!event && window.event)
        event = window.event;
      switch (eventName)
      case 'mouseover':
      case 'mouseout':
      case 'click':
        if (marquee[eventAttr])
          return marquee['on' + eventName](event);
      return false;
    xbMarquee.createDispatchEventAttr = function (marqueeName, eventName)
      return 'on' + eventName + '="xbMarquee.dispatchUIEvent(event, \'' + marqueeName + '\', \'' + eventName + '\')" ';
    // Instance properties/methods
    xbMarquee.prototype.start = function ()
      var markup = '';
      this.stop();
      if (!this.dirsign)
        if (!document.layers)
          this.containerDiv = xbMarquee.getElm(this.id + 'container')
          if (typeof(this.containerDiv.innerHTML) != 'string')
            return;
          // adjust the container size before inner div is filled in
          // so IE will not hork the size of percentage units 
          var parentNode    = null;
          if (this.containerDiv.parentNode)
            parentNode = this.containerDiv.parentNode;
          else if (this.containerDiv.parentElement)
            parentNode = this.containerDiv.parentElement;
          if (parentNode && 
              typeof(parentNode.offsetHeight) == 'number' && 
              typeof(parentNode.offsetWidth) == 'number')
            if (this.heightUnit == '%')
              this.containerDiv.style.height = 
              parentNode.offsetHeight * (this.height/100) + 'px';
            if (this.widthUnit == '%')
              this.containerDiv.style.width = 
              parentNode.offsetWidth * (this.width/100) + 'px';
          markup += '<div id="' + this.id + '" name="' + this.id + '" ' +
            'style=" ' +
            //(this.isHorizontal ? 'width:0px;' : '') + // if we scroll horizontally, make the text container as small as possible
            '" ' +
            xbMarquee.createDispatchEventAttr(this.name, 'mouseover') +
            xbMarquee.createDispatchEventAttr(this.name, 'mouseout') +
            xbMarquee.createDispatchEventAttr(this.name, 'click') +
            '>' +
            (this.isHorizontal ? '<nobr>' : '') +
            this.html +
            (this.isHorizontal ? '<\/nobr>' : '') +
            '<\/div>';
          this.containerDiv.innerHTML = markup;
          this.div                    = xbMarquee.getElm(this.id);
          this.styleObj     = this.div.style;      
        else /* if (document.layers) */
          this.containerDiv = document.layers[this.id + 'container'];
          markup = 
            '<layer id="' + this.id + '" name="' + this.id + '" top="0" left="0" ' +
            xbMarquee.createDispatchEventAttr(this.name, 'mouseover') +
            xbMarquee.createDispatchEventAttr(this.name, 'mouseout') +
            xbMarquee.createDispatchEventAttr(this.name, 'click') +
            '>' +
            (this.isHorizontal ? '<nobr>' : '') + 
            this.html +
            (this.isHorizontal ? '<\/nobr>' : '') +
            '<\/layer>';
          this.containerDiv.document.write(markup);
          this.containerDiv.document.close();
          this.div          = this.containerDiv.document.layers[this.id];
          this.styleObj     = this.div;
        if (this.isHorizontal && this.height < xbMarquee._getInnerSize(this.div, 'height') )
          this.height = xbMarquee._getInnerSize(this.div, 'height')
          this.containerDiv.style.height = this.height + this.heightUnit;
          this.containerDiv.style.clip = 'rect(0px, ' + this.width + this.widthUnit + ', ' + this.height + this.heightUnit + ', 0px)';
        // Start must not run until the page load event has fired
        // due to Internet Explorer not setting the height and width of 
        // the dynamically written content until then
        switch (this.direction)
        case 'down':
          this.dirsign = 1;
          this.startAt = -xbMarquee._getInnerSize(this.div, 'height');
          this._setTop(this.startAt);
          if (this.heightUnit == '%')
            this.stopAt = this.height * xbMarquee._getInnerSize(this.containerDiv, 'height') / 100;
          else
            this.stopAt  = this.height;
          break;
        case 'up':
          this.dirsign = -1;
          if (this.heightUnit == '%')
            this.startAt = this.height * xbMarquee._getInnerSize(this.containerDiv, 'height') / 100;
          else     
            this.startAt = this.height;
          this._setTop(this.startAt);
          this.stopAt  = -xbMarquee._getInnerSize(this.div, 'height');      
          break;
        case 'right':
          this.dirsign = 1;
          this.startAt = -xbMarquee._getInnerSize(this.div, 'width');
          this._setLeft(this.startAt);
          if (this.widthUnit == '%')
            this.stopAt = this.width * xbMarquee._getInnerSize(this.containerDiv, 'width') / 100;
          else    
            this.stopAt  = this.width;
          break;
        case 'left':
        default:
          this.dirsign = -1;
    if (this.widthUnit == '%')
    this.startAt = this.width * xbMarquee._getInnerSize(this.containerDiv, 'width') / 100;
    else  
    this.startAt = this.width        
    this._setLeft(this.startAt);
    // this.stopAt  = -xbMarquee._getInnerSize(this.div,'width')*2;
    // this method does not work very well with FireFox.  offsetWidth property used in this function returns the absolute width of the div container
    // instead of the new offsetWidth when innerHTML is added or when the div becomes wider. To overcome this a new span element is added to 
    // the document body to measure the new offsetwidth and then it is removed.
    var temp_span = document.createElement('span');     
    temp_span.id = 'span_' + this.div.id;
    temp_span.innerHTML = this.html;
    document.body.appendChild(temp_span);                
    this.stopAt = - temp_span.firstChild.firstChild.offsetWidth;
    document.body.removeChild(temp_span);            
          break;
        this.newPosition          = this.startAt;
        this.styleObj.visibility = 'visible'; 
      this.newPosition += this.dirsign * this.scrollAmount;
      if ( (this.dirsign == 1  && this.newPosition > this.stopAt) ||
           (this.dirsign == -1 && this.newPosition < this.stopAt) )
        if (this.behavior == 'alternate')
          if (this.onbounce)
            // fire bounce when alternate changes directions
            this.onbounce();
          this.dirsign = -this.dirsign;
          var temp     = this.stopAt;
          this.stopAt  = this.startAt;
          this.startAt = temp;
        else
          // fire start when position is a start
          if (this.onstart)
            this.onstart();
          this.newPosition = this.startAt;
      switch(this.direction)
        case 'up': 
        case 'down':
          this._setTop(this.newPosition);
          break;
        case 'left': 
        case 'right':
        default:
          this._setLeft(this.newPosition);
          break;
      this.runId = setTimeout(this.name + '.start()', this.scrollDelay);
    xbMarquee.prototype.stop = function ()
      if (this.runId)
        clearTimeout(this.runId);
      this.runId = null;
    xbMarquee.prototype.setInnerHTML = function (html)
      if (typeof(this.div.innerHTML) != 'string')
        return;
      var running = false;
      if (this.runId)
        running = true;
        this.stop();
      this.html = html;
      this.dirsign = null;
      if (running)
        this.start();
    // fixes standards mode in gecko
    // since units are required
    if (document.layers)
      xbMarquee.prototype._setLeft = function (left)
        this.styleObj.left = left;    
      xbMarquee.prototype._setTop = function (top)
        this.styleObj.top = top;    
    else
      xbMarquee.prototype._setLeft = function (left)
        this.styleObj.left = left + 'px';    
      xbMarquee.prototype._setTop = function (top)
        this.styleObj.top = top + 'px';    
    Still not working. Nothing will display on my web part xml viewer.

  • How to add new row and update existing rows at a time form the upload file

    hi
    How to add new row and update existing rows at a time form the upload file
    example:ztable(existing table)
    bcent                      smh            nsmh         valid date
    0001112465      7.4                       26.06.2007
    0001112466      7.5                       26.06.2007
    000111801                      7.6                       26.06.2007
    1982                      7.8                       26.06.2007
    Flat file structure
    bcent                       nsmh         valid date
    0001112465     7.8     26.06.2007  ( update into above table in nsmh)
    0001112466     7.9     26.06.2007  ( update into above table in nsmh) 
    000111801                     7.6      26.06.2007 ( update into above table in nsmh
    1985                      11              26.06.2007   new row it should insert in table
    thanks,
    Sivagopal R

    Hi,
    First upload the file into an internal table. If you are using a file that is on application server. Use open dataset and close dataset.
    Then :
    Loop at it.
    *insert or modify as per your requirement.
    Endloop.
    Regards,
    Srilatha.

  • How to add wsdl files and bpel files in new folders automatically

    Hi All,
    In our project, we have a lot of wsdl files and bpel file generated.
    By default, they are all under the folder of SOA Content, like a mess.
    I want to put them in separate folders.
    I can manually change the wsdl location and manually change references to these wsdls, but it will take a lot of extra time to do so.
    Is there a way to achieve this in UI?
    Thanks and Regards!
    Bruce

    Hi Eric,
    Thanks for your reply!
    I can use refector->move to move the wsdl file to newly created folders.
    But unfortunately, JDeveloper won't update the references to the wsdl files.
    I have to update the references manually, and it will take a lot of time if there exists many wsdl files in one project.
    Thanks and Regards!
    Bruce

  • How to Read the "text file and csv file" through powershell Scripts

    Hi All
    i need to add a multiple users in a particular Group through powershell Script how to read the text and CSV files in powershell
    am completly new to Powershell scripts any one pls respond ASAP.with step by step process pls
    Regards:
    Rajeshreddy.k

    Hi Rajeshreddy.k,
    To add multiple users to one group, I wouldn't use a .csv file since the only value you need from a list is the users to be added.
    To start create a list of users that should be added to the group, import this list in a variable called $users, the group distinguishedName in a variable called $Group and simply call the ActiveDirectory cmdlet Add-GroupMember.
    $Users = Get-Content -Path 'C:\ListOfUsernames.txt'
    $Group = 'CN=MyGroup,OU=MyOrg,DC=domain,DC=lcl'
    Add-ADGroupMember -Identity $Group -Members $Users

  • Explain about JAR,EAR and WAR files

    Explain :what is JAR,EAR and WAR files and how is useful in creating archive files in java with more example?

    Please look up this type of information on your own.
    http://java.sun.com/reference/glossary/index.html

  • How to clear the alertlog and trace file?

    since the database was created,the log and trace file have't been cleared.how to clear the alertlog and trace file?3tx!!

    Hi Friend.
    You can eliminate all the files ".TRC" (trace files) to purify the directory BDUMP. These are not necessary files in order that the Oracle Server works.
    The file Alert.log is a file that the Oracle Server can recreate if you eliminate it. When Oracle Server's process realizes certain action (for example ARCH), Oracle creates again the file (if it does not exist), or it adds text (if it exists) with the new income.
    It can happen, that appears some Bug if the file Alert.log does not exist. Though this is slightly possible.
    Anyhow I recommend to you in UNIX to use from the prompt: $> filename in order to take the size of the file to 0 bytes, without need to eliminate it. Is the same thing when you want to purify the listener.log, the sqlnet.log or the sbtio.log.
    I wait for my commentaries you be of great help.
    Bye Friend...

  • How to add xmp metadata to dae files

    How to add metadatas to 3D dae files...?
    The cad file used as an entry, the 2D files used as textures, environment, shaders...etc?

    Hi,
    Yes sorry about the "Acrobat Tag" , the question was more for the CS6 suite, and the management of DAE files in Bridge and Photoshop Extended in a CQ5 DAM workspace.
    But nevertheless, it should be cool if Acrobat X 3D could import directly Collada files...

  • I click on "add to library" and the file shows up in my iTunes media file, but not in my iTunes.

    I click on "add to library" and the file shows up in my iTunes media file, but not in my iTunes.

    That didn't work - I'm so confused - it just doesn't make sense.  How could it be there, but not show up on itunes???

  • Difference between .jar, .war and .ear file

    Hi,
    I am pretty new to J2EE technology.
    I would like to know what is the difference between .jar, .war and .ear files and how they are deployed on webserver.
    Thanks,

    Files with a .jar extension or JAR files, are essentially just a collection of files compressed using the ZIP/ZLIB compression format.
    JAR (short for Java Archive) files were introduced in the early days of Java as a means to conveniently package and distribute Java applications and components. Since then, a number of additions to the Java platform have followed suit. The introduction of the EAR file is one such addition.
    An EAR (Enterprise Archive) file is a JAR file that contains a J2EE application.
    A J2EE application is a group of Web modules that collectively perform as a single entity.
    A Web Module is an entity consisting of one or more resources such as HTML files, Java class files, XML files, etc. Web Modules are packaged in Web Archive (WAR) files.
    Looking at it from a top-down view, EAR files contain JAR files and WAR files. Packaging resources in WAR files, JAR files and eventually EAR files, makes it easy to reuse and reassemble components as new J2EE applications and distribute them to new environments.
    For example, Tomcat deals only with WAR files.
    So, in order to auto-deploy a Web application to a Tomcat environment, you must place an application's WAR file in the appropriate directory or use Tomcat's deployment tools to manually deploy the file.
    If you already have an EAR file that contains the WAR file, you can extract the WAR file and use it as is. If you do not have the EAR file or the WAR file, you can use any number of compliant tools to create the WAR file. Tomcat is a servlet/JSP container available from the jakarta.apache.org site.

  • How do you combine audio and video files?

    I've brought in a video file and an audio file, but can find no way to specify that they are a single source that should be compressed together.  The documentation was of no use.  How do you identify video and audio files as being one source?
    Thanks!

    Semantics, I suppose.  In any case, you do need to go through Premiere Pro if you want AME to do the job.  There are likely other encoders out there which can perform the muxing, though, if you'd rather not go through PP.

  • How can i make shorten systemlog files and joblog files on OS

    Hello
    How can i make shorten systemlog files and joblog files on OS

    Hello Jan,
    You can limit the size of system log.
    The size of the application server's System Log is determined by the
    following SAP profile parameters. Once the current System Log reaches
    the maximum file size, it gets moved to the old_file and and a new
    System Log file gets created. The number of past days messages in the
    System Log depends on the amount/activity of System Log messages and the
    max file size. Once messages get rolled off the current and old files,
    they are no longer retrievable.
    rslg/local/file /usr/sap/<SID>/D*/log/SLOG<SYSNO>
    rslg/local/old_file /usr/sap/<SID>/D*/log/SLOGO<SYSNO>
    rslg/max_diskspace/local 1000000
    rslg/central/file /usr/sap/<SID>/SYS/global/SLOGJ
    rslg/central/old_file /usr/sap/<SID>/SYS/global/SLOGJO
    rslg/max_diskspace/central
    Refer to http://help.sap.com/saphelp_nw70/helpdata/EN/c7/69bcbaf36611d3a6510000e835363f/content.htm
    for explanation of profile parameters.you can reduce the size of system log using rslg/max_diskspace_local and rslg/max_diskspace_central
    But you can't reduce the size of job log files on OS
    Rohit

  • How do I export wmv and avi files from media encoder on a mac in CC2014

    How do I export wmv and avi files from media encoder on a mac in CC2014?

    John T Smith wrote:
    As far as I know, you don't... those are Windows formats that are not available on a Mac
    Nonsense.
    Apple Compressor has been doing wmf exports for a decade. I have the Quicktime export components from Telestream and they appear as presets in Compressor. They should be available in Media Encoder or they should be importable. Adove apparently refuses to see them. Still trying to figure that out.

  • How do I convert pages and word files to a pdf file

    how do I convert pages and word files to a pdf file

    have you tried typing this question into your preferred search engine?  If not, please do, as you will find the answer there.

  • How to convert a Form to a Text file and XML file?

    Hi:
    I want to convert a Form to a Text file and XML file,but I don't know how convert?
    Please help!
    Oracle Form Builder V10.1.2.0.2
    Oracle Database 10g Enterprise Edition Release 10.2.0.3.0
    Thanks in advance!

    ..or follow the steps in Mtalink note; Doc ID: Note:196924.1
    Forms XML Conversion Feature ( Converting Forms To XML)

Maybe you are looking for

  • 10g installation on  linux 4 failed

    I trying to install oracle software on linux 4 but installation has been failed please find the below steps [oracle@sos02 database]$ ./runInstaller -silent -responseFile /u01/g/Ora_grid10g/DB_SOFT/database/response/standard.rsp Starting Oracle Univer

  • Acrobat 9 and Validating Digital Signatures

    I'd heard that Acrobat 9 had found a way to eliminate the problem of sending your certificate to everyone who needs to validate your signature on a form, but I haven't been able to prove that. I'm testing 9 and so far the only difference I see is tha

  • Upgrading from 3gs to iphone 4 activation

    The 3gs is my first iPhone. I am upgrading to the iPhone 4 tomorrow. Do I just take the sim card out of the 3gs and put in the new one? Then go through itunes to activate? Any advise would be helpful. Thanks!

  • Does CF really auto-decode URL parameters passed to a page?

    CF docs and livedocs state that: quote: ColdFusion automatically decodes URL parameters that are passed to a page (for example, see the URLEncodedFormat tag description, last sentence of opening paragraph) However, if you have a url-encoded url param

  • Save as draft - Document Number

    hi experts, Can we reserve a document number for draft document? I added a Purchase Order (draft) and then i created another PO but for this PO i want its number to auto-start with 2. Document No 1 is reserved for Draft PO. Is that possible? I do not