Serial numbers in oracle forms 6i

Dear all,
I have developed a form that display list of items. I would like the items to appear with numbers, serial numbers that increment by 1. How to achieve that in forms 6i. Note that i would like to generate the numbers when a form runs.
Kind regards,
Steve Dollongo

How you do this will depend on exactly what kind of sequencing your need. In other words, are the numbers that you defined as serial numbers, actually like "serial numbers", where they can never be repeated? Or are you just trying to add something similar to line numbering to a list, but not store these numbers permanently?
If the numbers are to act like real serial numbers and cannot be repeated, consider using the db SEQUENCE function.
http://download.oracle.com/docs/cd/B14117_01/server.101/b10759/pseudocolumns002.htm#i1006157

Similar Messages

  • Why am I ineligible for Creative Cloud Complete when I have serial numbers for CS3 products??

    I am trying to purchase Creative Cloud Complete for $29.99, as I have previously purchased Illustrator, Photoshop, and InDesign CS3, and have the serial numbers. However, when I entered the serial numbers on the form to order Creative Cloud, it said I was not eligible, but had no explanation why.

    Rave wrote:
    Hi mccalel,
    CS3 is a very very old software and is not a qualifying version for upgrade.
    Not sure I follow.
    The discounted promotional deal (for the first 12 months) for existing owners of CS3-CS6 suites is what the OP is trying to take advantage of.
    https://creative.adobe.com/plans

  • Addrow  problem in "Define Serial Numbers" form

    I have an item which is maintained by series nos at all transactions. i have to create series nos for that item for all documents. I have developed a specific logic for series nos for populating the nos in the "Define Serial Numbers" form matrix. When i am adding a row to the matrix it shows me a row id of 0 due to which even when i update the series nos only the first row is saved . Please provide a solution. i am using 2004.2b pl:40 SAP B1.

    HI,
    To update serial nos to delivery use the following FM L_SER_WS_DELIVERY_UPDATE.
    Use as follows
        CALL FUNCTION 'SERIAL_INTTAB_REFRESH'
          EXPORTING
            objects_status_refresh = 'E'.
        CALL FUNCTION 'L_SER_WS_DELIVERY_UPDATE'
          EXPORTING
            vbkok_wa                 = y_wa_vbkok
            synchron                 = 'X'
            commit                   = ' '
            delivery                 = y_p_vbel
            nicht_sperren            = 'X'
            if_get_delivery_buffered = ' '
            if_error_messages_send_0 = 'X'
            it_sernr_update          = y_li_sernr
          EXCEPTIONS
            error_message            = 1
            OTHERS                   = 2.
        CASE sy-subrc.
          WHEN 0.
            COMMIT WORK.
          WHEN OTHERS.
            MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
        ENDCASE.
    Regards,
    Ankur Parab

  • Serial Numbers on an RFID Tag

    I am new to RFID technology. My question is: Can 1 RFID tag be designed to capture and transmit 5 non-consecutive serial numbers contained in 1 container box?
    If you can tell me if this is possible with minimum effort or much effort, please let me know.
    Then, if you also know Oracle's e-Business Suite (EBS), let me know if it's possible to have the scanning of such an RFID tag with 5 non-consecutive serial numbers populate the Serial Numbers form in EBS like on a shipping transaction.

    Thanks, Sam.
    The EBS modules would be Inventory and Shipping. We do not use WMS.
    Uh, I do not know 'edge'. We do not use RFID currently and our volumes are small.
    Here's the business issue, whether the solution is RFID or not: Our company makes lasers for fiber optics. Originally, we just made high-end lasers (low volume, high dollar) that were placed into individual container boxes with a barcode label with its single serial number on the outside. All of these lasers were serialized as finished goods in Oracle. Whenever we ship such a laser, we have someone scan the picked lasers manually with a barcode reader one container box at a time. This has not been an issue, since volumes are small.
    But now we sell low-end lasers (higher volume, lower dollar), which often are sold in containers of 5. Each of the 5 small lasers have an individual, non-consecutive serial number. Our business areas want these items serialized in Oracle EBS as well, even though it makes more sense to me to track these items by LOT NUMBERS, not individual SERIAL NUMBERS.
    The dilemma is: When we ship, let's say, 1000 of these small lasers by picking 200 multi-pack containers, how do we have the shipping guy scan in the 1000 serial numbers?
    One way is to print 5 small individual S/N barcode labels on the multi-pack container, then have the poor guy scan in 1000 S/N's into the Oracle Shipping form from the 200 containers.
    That's why I was asking if there could be an easy RFID solution. Perhaps log the 5 S/N's in the multi-pack container onto 1 RFID tag. Then have the guy scan the RFID tag and have it insert the 5 S/N's onto the Shipping S/N form, one S/N at a time with a tab entry to go to the next S/N line. That way, the guy only scans 200 RFID tags. Is this crazy (not possible)?

  • Call a web services from oracle forms 10

    I have to call a web services from oracle forms.
    The version of the database is oracle 11gr2. the version of the forms is 10.1.2.0.2.
    I allready did the proxy creation and the import class within forms.
    I have 2 questions:
    1.
    I created the following procedure:
    PROCEDURE call_WS IS
         vobject1 ORA_JAVA.JOBJECT;
         vobject2 ORA_JAVA.JOBJECT;
    BEGIN
    vobject1 := WSEvaluarReglaCondicionComerci.new();
    vobject2 := WSEvaluarReglaCondicionComerci.listarValoresAtributoEvento(vobject1, 702, 2217, null, null, null);
    END;
    the function I calling:
    FUNCTION listarValoresAtributoEvento(
    obj ORA_JAVA.JOBJECT,
    a0 ORA_JAVA.JOBJECT,
    a1 ORA_JAVA.JOBJECT,
    a2 ORA_JAVA.JOBJECT,
    a3 VARCHAR2,
    a4 ORA_JAVA.JOBJECT) RETURN ORA_JAVA.JOBJECT;
    Note that the parameters is ORA_JAVA_JOBJECT and I need to send numbers. I understand that when I import the classes, because in the WS those parameters are defined as BigDecimal, Forms understand them as java object but when I compile it reports the error: "numero o tipo de argumento erroneo al llamar..." type error.
    So the question is, how Cast the numbers to Java Object to send them.
    I have read in a web page that one option is to change in the web service the type of the parameters but that is not an option.
    2.
    The WS returns a super big XML as answer, so how I can parse the result into an Object type?...
    The object structure is:
    TYPE opciones_obj AS OBJECT
    (strindice VARCHAR2 (4000),
    nombrecompleto VARCHAR2 (4000),
    nombre VARCHAR2 (4000),
    strtipodato VARCHAR2 (4000),
    codigoopcion NUMBER,
    floatval FLOAT,
    strtipo VARCHAR2 (4000),
    strval VARCHAR2 (4000));
    and the tags to extract is:
    COLUMNS strindice VARCHAR2 (4000)
    PATH 'ns2:mapEntry[ns2:key="strIndice"]/ns2:value',
    nombrecompleto VARCHAR2 (4000)
    PATH 'ns2:mapEntry[ns2:key="nombreCompleto"]/ns2:value',
    nombre VARCHAR2 (4000)
    PATH 'ns2:mapEntry[ns2:key="nombre"]/ns2:value',
    strtipodato VARCHAR2 (4000)
    PATH 'ns2:mapEntry[ns2:key="strTipoDato"]/ns2:value',
    codigoopcion NUMBER
    PATH 'ns2:mapEntry[ns2:key="codigoOpcion"]/ns2:value',
    floatval FLOAT
    PATH 'ns2:mapEntry[ns2:key="floatVal"]/ns2:value',
    strtipo VARCHAR2 (4000)
    PATH 'ns2:mapEntry[ns2:key="strTipo"]/ns2:value',
    strval VARCHAR2 (4000)
    PATH 'ns2:mapEntry[ns2:key="strVal"]/ns2:value') x;
    xquery / xmltype aparently is not an option because the xml is too big.
    I will appreciate your answers.
    Thanks.
    Edited by: user13058213 on 26-ene-2012 16:02

    i created jar file to call it from forms
    Could you be a little bit less vague about what you exactly did?
    Anyway; see here http://bit.ly/10VVoMR
    cheers

  • OLE Containers in Oracle Forms 6i

    Hello,
    We have an Oracle Forms 6i application which stores a large number of documents in LONG RAW columns in Oracle 10g using serialized OLE Container objects. Is there a way to automate the extraction of those documents (PDF and DOC) from the database to the file system?
    Edited by: rpetrk1 on Jul 11, 2012 5:03 PM

    If all you want to do is extract the documents from the Long Raw columns, you can use UTL_FILE to extract the binary content to the file system. You would have to loop through the records in your table to extract each file. Take a look at article Export BLOB Contents Using UTL_FILE that I googled. Granted, this article discusses exporting a BLOB not a Long Raw, but the concept is the same and you should be able to modify the code sample in the article to work with your Long Raw columns.
    Hope this helps,
    Craig B-)
    If someone's response is helpful or correct, please mark it accordingly.

  • Displaying TIFF images in Oracle Forms 6i

    Hello, friends!
    I am working in Oracle Forms 6.0.8 (that ancient tool) and encounter a problem with displaying TIFF images.
    I have a number of scanned images and some of them are displayed and some are not. I've tried both extracting them from the database or from the file system (using READ_IMAGE_FILE). Sometimes I am getting just blank field in my image item and sometimes (after using READ_IMAGE_FILE) I get the error FRM-47100 (cannot read image file). Of course I've checked that all the files are displayed using standard tools for displaying TIFFs.
    Basically the question is what kind of TIFF is considered valid and readable by Oracle Forms.
    Analyzing TIFF tags actually gave me nothing: I have a pair of files with tags different only in image width/length and a number of rows/strip (but even those values are close), and one of the file is displayed correctly while the other is not. The thing I noticed is that invalid files are using compression type of CCITT Group 4.
    Possibly Oracle Forms follows TIFF specification only to certain extent and does not support all the extensions, while sometimes the problems are not visible to user.
    As a result of my work I need some automatic tool that converts undisplayable TIFF files to displayable ones but firstly I am to determine where the problem is. And it would be very good to have a prooflink that approves my decision.
    Looking forward to any help! Thanks in advance.

    Thanks to everybody, but I'm afraid my files don't contain any EXIF tags (although TIFF seems to support them). The file doesn't contain any tags with IDs greater than 0x7FFF but only core TIFF tags (with IDs of lower numbers). Moreover I have a file with exactly the same set of tags (but the values are a bit different) which is displayed properly.
    I've shared the issued file (nondisplayable) on the following link: [https://rapidshare.com/files/3137807470/2.tif]
    If anyone could tell me why isn't it displayed in Forms I would be very grateful.

  • Serial Numbers in third party system

    Hi All,
    How to mange serial number in the third party sales scenario.In standard sales process we manage serial numbers at delivery level.
    But for Third party delivery will be done from vendor's place.But our client wants to keep
    a track of serial numbers.Kindly share some inputs
    Would apprecite a quick response.
    Regards
    Neel

    hello,
    do u want serial nos for tracking purpose?
    one way out is to maintain them at sales order level and have the same no in purchase order sent to the vendor in the form of text.
    ask the vendor to print this no in his delivery document as well.
    from the sales order, you can pick this no for invoice print as well.
    i hope this is a way out. dont know if something is available in standard.
    rgs,
    ak

  • Serial Numbers and Delivery not automated.

    "The serial number field on the delivery is only a text field and requires user input. The actual serial numbers shipped on the delivery are not put in this field automatically by the system as you know. This is how it works. The serial number data is stored in different tables, OSRI and SRI1 and linked to the delivery document."
    We have been manually typing the S/N into the delivery form so that we can have it print packing lists and invoices. Once we select the S/N for the delivery it should automatically update the delivery form.
    The Delivery form does not automatically fill in the S/N once we select a s/n. Here is a scenario
    1.)Select a Sales Order that has an item that requires a s/n.
    2.) Copy SO to Delivery
    3.) Click Add or put the cursor in the proper row of the s/n column and hit enter. A new window showing available S/N should appear.
    4.) Select the S/N, assign to this SO and click Update then OK.
    5.) Repeat if more then 1 item requires a s/n.
    6) When done,  click ADD and a new Delivery ticket is created. Note at this time the S/N are not showing in the Delivery Form.
    7) You can now click Print Preview and it will show the Packing List along with a page for serial numbers. Also a Crystal Report Packing list is generated, but the s/nu2019s are not listed.
    The only way we can get s/nu2019s to show on the Delivery form and in Crystal .Reports is to MANUALLY type the s/n into the Delivery form. We want to avoid typing the data, potential for typou2019s. This should be something the software  does for us.

    We're wondering the same thing. Would a bar code scanner work? The data would have to be displayed on a PC or something where it could be recorded.
    Yes and no.  
    We have a small Bluetooth barcode scanner.  Works well if the bar codes were printed better.  I mean, the bar codes for switches/routers are "readable" but for wireless access points, you would need several attempts to get it to read.  
    Alternatively, you can read the bar codes from the box.  I only use this as a "last resort" because I have seen, in two occasions, that the codes in the box and the the ones from the appliance don't match.  

  • How to avoid Duplicate values in Oracle forms

    Hello Everyone,
    I am new to Oracle forms, working on Oracle Applications : 12.1.2,
    Here I have a form Receiving Transactions,
    in that I have Lot_Number and quantity columns.
    The purchased items need to be stored in Lot number.
    If 100 quantities purchased then 100 quantities can be stored in single lot number
    i.e
    Lot_Number         Qty
      001                100or 100 quantities can be stored in different lot numbers.
    i.e
    Lot_Number         Qty
      001                50
      002                50(The qty may differ)but not like the following,
    Lot_Number          Qty
      001                 50
      001                 50.For second line,If they selected same lot number as First lot number,
    The error message has to be shown as "Lot number duplicated,Select Different Lot number or update the full qty in original line".
    Can anyone help me to solve this.
    Thank you.
    Regards,
    Gurujothi

    Hi François Degrelle,
    I added the following Plsql in the 'When-validate-Item' block,
    declare
    l_current_number varchar2(80);
    begin     
    l_current_number := :lot_entry.lot_number;
    first_record;
    loop
      if l_current_number = :lot_entry.lot_number then
         message ('Duplicate');
      end if;
      next_record;
    end loop;Its started to check from First record itself and giving the message 'Duplicate',
    How to check from second record?
    when the first record is entered it should not check when the second record is entered it should compare with the First record value and if it is same then it should give message as 'Duplicate'.
    Thank you.

  • How to Use Com ports on oracle forms

    Hai,
    how we can use com port to communicate to the device like Pole Display(output device) or fixed scaneer (input device) having serial port(Input device) in oracle forms.
    Thanks & regards

    For web forms you will probably need to create a PJC and/or use webutil and make calls to the device's API.

  • Attach Forms With Comm Port in Oracle Forms

    I am trying to make connection of Oracle forms Builder with my device using comm port but i dnt know the complete procedure to attach the comm with oracle forms also i have no idea to convert asquii data to normal form.Please any one help me to attach comm port with my oracle forms and also convert asqui code which is showing on hyper terminal into normal data.Also I am using oracle forms 6i

    Make a java component (PJC) and use a rxtx library (http://rxtx.qbang.org/wiki/index.php/Examples) ...
    I have made a PJC to use a RS232 port from oracle forms for Hypercom POS terminal..
    Here is my code (in short i will post a component on PJC site (here I can't post a complete code because of 30000 char limit ;) )..
    If you look in method "public void init(IHandler handler) " I make a download of rxtxSerial.dll from my forms server and then I call System.loadLibrary("rxtxSerial");"
    In other way you must put the dll in windows/system32 path.. This dll is native library for rs232 communication.
    If you look at the method "public void doTransaction" you can see the initialization of comm port...
    With inputStream and OutputStream you read and write datas to/from your rs232 port..
    p.s: the code is not complete but you can see how I made the rs232 communication (also the code is not final ;) )
    ====================================================
    public class PosTerminalPjc extends VBean {
         private static final long serialVersionUID = -8814623494538014849L;
         Properties res = new Properties();
         SerialPort serialPort;
         OutputStream os;
         InputStream is;
         CommPortIdentifier portId;
         Enumeration portList;
         IHandler mHandler;
      Random randomGenerator = new Random();
            char STX = 2;
         char ETX = 3;
         char EOT = 4;
         char ACK = 6;
         char NAK = 15;
         char FS = 28;
         private static final ID COMPORT         = ID.registerProperty("COMPORT"); // serial port (COM1,COM2,COM3,...)
         private static final ID AMOUNT          = ID.registerProperty("AMOUNT"); // amount of the transaction (12)
         private static final ID TRANSACTIONTYPE = ID.registerProperty("TRANSACTIONTYPE"); // SALE, REFUND
      private static final ID EXECUTE         = ID.registerProperty("EXECUTE"); // invoke doTransaction();
      //Output parameters to form
      private static final ID TRANSACTIONPROCESSED  = ID.registerProperty("TRANSACTIONPROCESSED");
      private static final ID TRANSACTIONFLAG       = ID.registerProperty("TRANSACTIONFLAG");
      private static final ID TRANSACTIONNUMBER     = ID.registerProperty("TRANSACTIONNUMBER");
      private static final ID BATCHNUMBER           = ID.registerProperty("BATCHNUMBER");
      private static final ID TRANSACTIONDATE       = ID.registerProperty("TRANSACTIONDATE");
      private static final ID TRANSACTIONTIME       = ID.registerProperty("TRANSACTIONTIME");
      private static final ID TRANSACTIONAMOUNT     = ID.registerProperty("TRANSACTIONAMOUNT");
      private static final ID CARDDATASOURCE        = ID.registerProperty("CARDDATASOURCE");
      private static final ID NUMBERCUSTOMERCARD    = ID.registerProperty("NUMBERCUSTOMERCARD");
      private static final ID EXPIRATIONDATE        = ID.registerProperty("EXPIRATIONDATE");
      private static final ID TERMINALID            = ID.registerProperty("TERMINALID");
      private static final ID MERCHANTID            = ID.registerProperty("MERCHANTID");
      private static final ID COMPANYNAME           = ID.registerProperty("COMPANYNAME");
      private static final ID SEQUENTIALNUMBER      = ID.registerProperty("SEQUENTIALNUMBER");
      private static final ID ERRORDESC             = ID.registerProperty("ERRORDESC");
         //Events
      private static final ID EVT_OK  = ID.registerProperty("EVT_OK"); //custom event if all ok
      private static final ID EVT_ERR = ID.registerProperty("EVT_ERR"); //custom event if error occured
      // state machine variables
         long l_timeout;
         long l_wait_for = 5000; // pos terminal wait for command (5 seconds)
         long l_wait_for_transaction = 62000 * 2; // pos terminal timeout
         long l_second = 1000; // one second
         byte b_retry = 0;
         String dataValue = "";
      byte[] readBuffer = new byte[2000]; //2000 bytes buffer to read rs232 stream
         String comPort = ""; // local variable to store com port name
                                       // (COM1,COM2,...)
         String transactionType = "SALE"; // type of transaction to be executed (SALE
                                                      // or REFUND) default SALE
         String amount = "0"; // default amount value is set to 0
         //output paramerers
      String transactionProcessed = "";
      String transactionFlag = "";
      String transactionNumber = "";
      String batchNumber = "";
      String transactionDate = "";
      String transactionTime = "";
      String transactionAmount = "";
      String cardDataSource = "";
      String numberCustomerCard = "";
      String expirationDate = "";
      String terminalId = "";
      String merchandId = "";
      String companyName = "";
      String sequentialNumber ="";
      String errorDescription;
        public PosTerminalPjc() {
              super();
              System.out.println("============================");
              System.out.println("== State machine POS v1.0 ==");
              System.out.println("== Peter Valencic (c)     ==");
              System.out.println("== 03.04.2012             ==");
              System.out.println("============================");
        System.out.println("java.library.path: "+System.getProperty("java.library.path"));
              try {
                   res.load(this.getClass().getResourceAsStream("/res/language.properties")); // load language file
              } catch (Exception ex) {
                   System.err.println("Err loading language.properties file: "
                             + ex.toString());
      public void init(IHandler handler)
        super.init(handler);
        this.mHandler = handler;
        System.out.println("init handler ok");
        System.out.println("code base: "+handler.getCodeBase());
        //load dll from codeBase URL
        try
          String mylibName = "rxtxSerial.dll";
          String URLpath = "http://dekani:7777/forms/java/";
          System.out.println("URL: "+ URLpath + mylibName);
          URL libUrl = new URL(URLpath+mylibName);
          System.out.println("libUrlgetFile: " + libUrl.getFile());
          File file = new File(mylibName);
          System.out.println(file);
          if (!file.exists())
          file.createNewFile();
          URLConnection urlc = libUrl.openConnection();
          InputStream in = urlc.getInputStream();
          FileOutputStream out = new FileOutputStream(file);
          byte[] buffer = new byte[1048];
          int read;
          while ((read = in.read(buffer)) != -1){
             out.write(buffer, 0, read); // write
            out.close();
            in.close();
            System.loadLibrary("rxtxSerial");
        catch(Exception exc)
          System.err.println("Exception SystemLoadLibrary: " + exc.toString());
          this.showError(res.getProperty("s_dlg_err_title"),res.getProperty("s_lib"));
      private void doTransaction() throws Exception {
        String sequentialNumber = ""+getRandomInteger(1000,9000,randomGenerator);
              String phase = null; // initial null value for state machine phase
              long l_ack_timeout = 0; //initial value for acknowledge timeout
              // com port check
              if (getComPort().trim().equalsIgnoreCase("")) {
                   this.showError(res.getProperty("s_dlg_err_title"),
                             res.getProperty("s_com_invalid"));
              if (this.mHandler != null)
                                CustomEvent ce = new CustomEvent(this.mHandler, EVT_ERR);
                                this.setErrorDescription(res.getProperty("s_com_invalid"));
                                dispatchCustomEvent(ce);
                   return;
              // transaction type chek
              System.out.println(this.getTransactionType());
              if (!getTransactionType().equalsIgnoreCase("REFUND")
                        & !getTransactionType().equalsIgnoreCase("SALE")
            & !getTransactionType().equalsIgnoreCase("TICKET")
            & !getTransactionType().equalsIgnoreCase("VOID")
                   this.showError(res.getProperty("s_dlg_err_title"),res.getProperty("s_tran_invalid_type"));
          if (this.mHandler != null)
                                CustomEvent ce = new CustomEvent(this.mHandler, EVT_ERR);
                                this.setErrorDescription(res.getProperty("s_tran_invalid_type"));
                                dispatchCustomEvent(ce);
                   return;
              portList = portId.getPortIdentifiers();
              while (portList.hasMoreElements()) {
                   portId = (CommPortIdentifier) portList.nextElement();
          System.out.println(portId.getName());
                   if (portId.getName().equalsIgnoreCase(this.getComPort())) {
                        System.out.println("Port is used : "
                                  + portId.isCurrentlyOwned());
                        serialPort = (SerialPort) portId.open("ComDriver", 2000);
                        serialPort.setSerialPortParams(9600, SerialPort.DATABITS_7,
                                  SerialPort.STOPBITS_1, SerialPort.PARITY_EVEN);
                        serialPort.notifyOnDataAvailable(true);
                        serialPort.notifyOnOutputEmpty(true);
                        os = serialPort.getOutputStream();
                        is = serialPort.getInputStream();
                        break;
              if (portId == null) {
              this.showError(res.getProperty("s_dlg_err_title"),res.getProperty("s_com_not_found"));
          if (this.mHandler != null)
                                CustomEvent ce = new CustomEvent(this.mHandler, EVT_ERR);
                                this.setErrorDescription(res.getProperty("s_com_not_found"));
                                dispatchCustomEvent(ce);
                   return;
        else if (portId.getName().equalsIgnoreCase(this.getComPort()) == false)
                  this.showError(res.getProperty("s_dlg_err_title"),res.getProperty("s_com_not_found"));
          if (this.mHandler != null)
                                CustomEvent ce = new CustomEvent(this.mHandler, EVT_ERR);
                                this.setErrorDescription(res.getProperty("s_com_not_found"));
                                dispatchCustomEvent(ce);
          return;
              // state machine infinite loop
              while (true)
                   // SEND DATA TO POS TERMINAL
                   if (phase == null)
                        System.out.println("start phase");
                        byte[] req = null;
                        //verify transaction type to be SALE or REFUND
                        //if REFUND then transaction number must be specified
                        if (getTransactionType().equalsIgnoreCase("SALE")) {
                             System.out.println("--> SALE send message to the pos terminal");
                             System.out.println("--> amount: " + amount);
                             req = protocolStream("000000"+sequentialNumber+"01100" + FS + amount + FS
                                       + FS + "+0" + FS + "978" + FS + FS + FS + FS + FS
                                       + FS + FS + ETX);
                        else if (getTransactionType().equalsIgnoreCase("REFUND")) {
                             System.out.println("--> REFUND send message to the pos terminal");
                             System.out.println("--> amount: " + amount);
                             System.out.println("--> transaction number: " + getTransactionNumber());
                             req = protocolStream("000000123405100" + getTransactionNumber() + FS + amount
                                       + FS + FS + "+0" + FS + "978" + FS + FS + FS + FS
                                       + FS + FS + FS + ETX);
            else if (getTransactionType().equalsIgnoreCase("VOID")) {
                             System.out.println("--> VOID transaction");
                             System.out.println("--> amount: " + amount);
                             System.out.println("--> transaction number: " + getTransactionNumber());
                             req = protocolStream("000000123410100" + getTransactionNumber() + FS      + FS + FS + "+0" + FS + "978" + FS + FS + FS + FS
                                       + FS + FS + FS + ETX);
            else if (getTransactionType().equalsIgnoreCase("TICKET")) {
                             System.out.println("--> TICKET duplicate");
                               req = protocolStream("000000123413100" + getTransactionNumber() + FS      + FS + FS + "+0" + FS + "978" + FS + FS + FS + FS
                                       + FS + FS + FS + ETX);
            else {
                             //nothing ;)
                        os.write(req);
                        os.flush();
                        l_ack_timeout = System.currentTimeMillis() + 1500;
                        //wait for half second
                        Thread.sleep(500);
                        l_timeout = System.currentTimeMillis() + l_wait_for; //add some time for timeout
                        phase = "TO_POS_ACK";
                        System.out.println("phase: " + phase);
                   }//phase null
                   //CHECK IF THE TIMEOUT OCCURED
                if (phase.equalsIgnoreCase("TO_POS_ACK") & (l_timeout < System.currentTimeMillis()) & (b_retry < 4))
                    b_retry += 1;
                    System.out.println("TIMEOUT: " + b_retry);
                    l_timeout = System.currentTimeMillis() + l_wait_for;
                    if (b_retry >= 4) {
                        System.out.println("Timeout occured");
                        closePort();
                        this.showError(res.getProperty("s_dlg_err_title"),res.getProperty("s_timeout"));
                        break;
              //CHECK FOR THE ACKNOWLEDGE (FIRST RESPONSE FROM POS TERMINAL)
                if (phase.equalsIgnoreCase("TO_POS_ACK") &
                        (l_ack_timeout < System.currentTimeMillis())) {
                    try {
                        int numBytes = 0;
                        dataValue = "";
                        while ((numBytes = is.read(readBuffer)) > 0) {
                            dataValue += new String(readBuffer, 0, numBytes, "ASCII");
                        if (dataValue.getBytes().length > 0) {
                            System.out.println("->first byte: " +
                                dataValue.getBytes()[0]);
                            System.out.println("total length: " +
                                dataValue.getBytes().length);
                            //check for ack byte
                            if (dataValue.getBytes()[0] == 6) {
                                System.out.println(
                                    "<--ACKNOWLEDGE received from pos terminal");
                                phase = "WAIT_FOR_TRANSACTION";
                                l_timeout = System.currentTimeMillis() + l_wait_for_transaction;
                                System.out.println("-> wait for transaction response");
                    } catch (IOException ev) {
              //WAIT FOR TIMEOUT ON MESSAGE (watch dog timer)
                if (phase.equalsIgnoreCase("WAIT_FOR_TRANSACTION") &
                        (l_timeout < System.currentTimeMillis())) {
                    System.out.println(
                        "Error receiving response from pos terminal!!!");
                    closePort();
                    this.showError(res.getProperty("s_dlg_err_title"),
                                 res.getProperty("s_response_error"));
                  if (this.mHandler != null)
                    CustomEvent ce = new CustomEvent(this.mHandler, EVT_ERR);
                    this.setErrorDescription(res.getProperty("s_response_error"));
                    dispatchCustomEvent(ce);
                    break;
              //WAIT FOR SOME DATA TO COME FROM POS TERMINAL OVER RS232
                if (phase.equalsIgnoreCase("WAIT_FOR_TRANSACTION")) {
                    try {
                        int numBytes = 0;
                        dataValue = "";
                        Thread.sleep(500);
                        while ((numBytes = is.read(readBuffer)) > 0) {
                            dataValue += new String(readBuffer, 0, numBytes, "ASCII");
                        if (dataValue.getBytes().length > 0) {
                            System.out.println("->first byte: " +
                                dataValue.getBytes()[0] + "|" +
                                dataValue.getBytes()[1]);
                            System.out.println("->ascii: " + dataValue);
                            System.out.println("total length: " +
                                dataValue.getBytes().length);
                            if (dataValue.indexOf("PREKINIL UPORABNIK") != -1) {
                                System.out.println(
                                    "Uporabnik je prekinil povezavo!");
                                  closePort();
                                //transaction cancelled by user s_user_cancel
                                this.showError(res.getProperty("s_dlg_err_title"),
                                             res.getProperty("s_user_cancel"));
                              if (this.mHandler != null)
                                CustomEvent ce = new CustomEvent(this.mHandler, EVT_ERR);
                                this.setErrorDescription(res.getProperty("s_user_cancel"));
                                dispatchCustomEvent(ce);
                                break;
                            if (dataValue.indexOf("NAPACEN VNOS") != -1) {
                                System.out.println("Napačen vnos");
                                closePort();
                                //invalid user entry
                                this.showError(res.getProperty("s_dlg_err_title"),
                                             res.getProperty("s_user_invalid_entry"));
                               if (this.mHandler != null)
                                CustomEvent ce = new CustomEvent(this.mHandler, EVT_ERR);
                                this.setErrorDescription(res.getProperty("s_user_invalid_entry"));
                                dispatchCustomEvent(ce);
                                break;
                            if (dataValue.indexOf("PROSIM POCAKAJ") != -1) {
                                System.out.println("<-- PROSIM POCAKAJ");
                                continue;
                            //preberemo podatke iz stringe terminala
                            if (dataValue.indexOf("SPREJETO") != -1) {
                                closePort();
                                System.out.println("<-- TRANSAKCIJA SPREJETA");
                                System.out.println(dataValue);
                                StringTokenizer st = new StringTokenizer(dataValue, "\034" );
                                String dv = st.nextToken();
                                sequentialNumber = dv.substring(6,10);
                                transactionProcessed = dv.substring(1, 3);
                                transactionFlag = dv.substring(13,15);
                                transactionNumber = dv.substring(15,21);
                                batchNumber = dv.substring(21,25);
                                transactionDate = dv.substring(25,31);
                                transactionTime = dv.substring(31,37);
                                transactionAmount = st.nextToken();
                                st.nextToken(); //Amount exponent
                                st.nextToken(); //Amount currency
                                cardDataSource = st.nextToken();
                                numberCustomerCard = st.nextToken();
                                expirationDate = st.nextToken();
                                st.nextToken(); // authorization code
                                terminalId = st.nextToken();
                                merchandId = st.nextToken();
                                companyName = st.nextToken();
                                System.out.println("================");
                                System.out.println(transactionProcessed);
                                System.out.println(transactionFlag);
                                System.out.println(transactionNumber);
                                System.out.println(batchNumber);
                                System.out.println(transactionDate);
                                System.out.println(transactionTime);
                                System.out.println(transactionAmount);
                                System.out.println(cardDataSource);
                                System.out.println(numberCustomerCard);
                                System.out.println(expirationDate);
                                System.out.println(terminalId);
                                System.out.println(merchandId);
                                System.out.println(companyName);
                                if (this.mHandler != null)
                                  System.out.println("dispatch custom event");
                                  CustomEvent ce = new CustomEvent(this.mHandler, EVT_OK);
                                  dispatchCustomEvent(ce);
                                return;
                    } catch (IOException ev) {
                      System.err.println("Exception sm: " + ev.toString());
                System.out.print('*');
                Thread.sleep(200);
              }//end state machine loop
          * protocolStream prepare the stream to be send over RS232 to POS terminal
          * with LRC cheksum control
          * @param data
          * @return byte[]
         private byte[] protocolStream(String data) {
              char STX = (char) 0x02;
              String tmp = "" + STX + STX + data + "" + getLRC(data);
              System.out.println("PStream: " + tmp);
              for (int i = 0; i < tmp.getBytes().length; i++) {
                   System.out.print(tmp.getBytes() + ":");
              return tmp.getBytes();
    * close port and stream
    private void closePort()
    try {
    serialPort.close();
    is.close();
    os.close();
    } catch (Exception ee) {
         * Longitudinal Redundancy Check (LRC)
         * @param packet
         * @return String
         private String getLRC(String packet) {
              char[] splitPacket = packet.toCharArray();
              char lrc = 0x00;
              for (int x = 0; x < splitPacket.length; x++) {
                   lrc = (char) (lrc ^ splitPacket[x]);
              return "" + (char) lrc;
         private String paddingString(String s, int n, char c, boolean paddingLeft) {
              if (s == null) {
                   return s;
              int add = n - s.length(); // may overflow int size... should not be a
              if (add <= 0) {
                   return s;
              StringBuffer str = new StringBuffer(s);
              char[] ch = new char[add];
              Arrays.fill(ch, c);
              if (paddingLeft) {
                   str.insert(0, ch);
              } else {
                   str.append(ch);
              return str.toString();
    public boolean setProperty(ID id, Object value)
    if (id.toString().equalsIgnoreCase("COMPORT")) {
    setComPort((String)value);
    System.out.println("RS232 com port: " + getComPort());
    return false;
    if (id.toString().equalsIgnoreCase("AMOUNT")) {
    this.setAmount((String)value);
    System.out.println("Amount value: " + getAmount());
    return false;
    if (id.toString().equalsIgnoreCase("TRANSACTIONTYPE")) {
    this.setTransactionType((String)value);
    System.out.println("Transaction Type value: " + this.getTransactionType());
    return false;
    if (id.toString().equalsIgnoreCase("EXECUTE")) {
    System.out.println("Invoke pos terminal");
    try
    doTransaction();
    catch(Exception ex)
    System.err.println("Execute Exception>> " + ex.toString());
    this.showError(res.getProperty("s_dlg_err_title"),res.getProperty("s_gen_exception"));
    return false;
    return false;
         * Display error message inside oracle form
         * @param title
         * @param exceptionString
         private void showError(String title, String exceptionString) {
              JOptionPane.showMessageDialog(this, exceptionString, title, 0);
    Edited by: peterv6i.blogspot.com on May 8, 2012 10:18 AM
    Edited by: peterv6i.blogspot.com on May 8, 2012 10:20 AM
    Edited by: peterv6i.blogspot.com on May 8, 2012 10:21 AM

  • Serial numbers via sql query

    Hi,
    I'm having trouble getting the correct serial numbers via SQL.
    From PHP I run the following query to get the Delivery Notes:
    select ODLN.DocEntry,ODLN.CardCode,ODLN.CardName,ODLN.DocDueDate,ODLN.DocDate,ODLN.NumAtCard,NNM1.SeriesName,ODLN.DocNum,ODLN.SlpCode,ODLN.CANCELED,ODLN.DocStatus,DLN1.ItemCode,DLN1.Dscription,DLN1.Quantity,DLN1.ShipDate,DLN1.LineStatus,ODLN.NumAtCard,ODLN.U_CodSit,ODLN.DocTotal,ODLN.DocCur,ODLN.CreateDate,ODLN.TrackNo,DLN1.SerialNum from ODLN INNER JOIN NNM1 ON (ODLN.Series = NNM1.Series) INNER JOIN OCRD ON (ODLN.CardCode = OCRD.CardCode AND OCRD.CardCode = '".$_POST["sapcode"]."' AND OCRD.Password = '".$_POST["sappwd"]."') INNER JOIN DLN1 ON ODLN.DocEntry = DLN1.DocEntry ORDER BY ODLN.CreateDate DESC,ODLN.DocEntry ASC
    While I loop through the results I then try to grab the serial numbers. I tried this:
    SELECT OSRI.IntrSerial FROM OSRI INNER JOIN SRI1 ON ( (SRI1.SysSerial = OSRI.SysSerial) AND (SRI1.BaseNum = ".$row['DocNum'].") ) INNER JOIN DLN1 ON (DLN1.DocEntry = SRI1.BaseEntry) WHERE ( (DLN1.DocEntry = ".$row['DocEntry'].") AND (DLN1.ItemCode = OSRI.ItemCode) AND (DLN1.ItemCode = '".$row['ItemCode']."') ) ORDER BY OSRI.IntrSerial
    but it gives me incoherent results compared to what appears in the SAP b1 client. For ex., some serial numbers are fine but in other cases I get more serial numbers than accounted for (article quantity = 1 but get 2 serial numbers; in SAP B1 client only one of the two serial numbers appears, as expected).
    So I then modified the query and added a check for the CardCode:
    SELECT OSRI.IntrSerial FROM OSRI INNER JOIN SRI1 ON ( (SRI1.SysSerial = OSRI.SysSerial) AND (SRI1.BaseNum = ".$row['DocNum'].") AND (SRI1.CardCode = '".$_POST["sapcode"]."') ) INNER JOIN DLN1 ON (DLN1.DocEntry = SRI1.BaseEntry) WHERE ( (OSRI.CardCode = '".$_POST["sapcode"]."') AND (DLN1.DocEntry = ".$row['DocEntry'].") AND (DLN1.ItemCode = OSRI.ItemCode) AND (DLN1.ItemCode = '".$row['ItemCode']."') ) ORDER BY OSRI.IntrSerial
    This query is slightly better in the sense that at least I don't get serial numbers that are not supposed to be there (eg. if quantity=1 I will not get 2 serial numbers as in the previous query). However, in some cases it works as expected and in other delivery notes it doesn't because it simply doesn't list the serial numbers (which where found in the first query).
    It might be because the CardCode field isn't always thoroughly set?
    If so, is it just a "user problem" so I should tell my company to review the way they fill SAP data?
    Or am I doing the wrong query?
    (The SDK doc regarding OSRI is confusing as it doesn't even point to SRI1 and I don't fully understand the relationships)
    Regards,
    Vieri

    Vieri,
    you can catch (using MS SQL Profiler) the query which is executed by SBO once you click on serial nambers report from Delivery Note form.
    this is one of the ways to get a solution quickly.

  • We want to read data from weigh bridge and display in oracle forms & store

    Sir/Madam,
    in our organisation we had one requirement. i.e is reading data from weigh bridge using serial port, displying that data in oracle forms and when ever user click save button we store that into my oracle database. we are using oracle 8i and forms 6i and windows OS environment. we don't know reading data from serial port and placing that into form items. please help me as early as possible if there is any property available in d2k regarding this requirement .
    thank you,
    vishnu

    There's no property in Forms that makes you read serial ports, but as far as I know you need to know the API of the machine which you want to read data from (it should come with machine's manual) and then it will be easy to store it in forms item.
    Tony

  • As of Contract Management 13, serial numbers are no longer used.

    Hello Primavera users,
    We are currently using Contract Manager v12 on a major program here in the UAE and looking to upgrade soon to v13.
    Regarding this knowledge base posting (below), does v13 still support concurrent user licenses, and if so what are Oracle's plans moving forward in terms of Contract Manager?
    I would love to hear the views of the Primavera community, especially in relation to these changes with serial numbers etc...
    Thanks & Regards,
    John
    Solution ID: prim83632
    How To: Adding (new) serial numbers in Contract Management 13
    Status: Reviewed
    Version(s): 13.0
    Problem:     How To: Adding (new) serial numbers in Contract Management 13
    Problem:     Where do I add new serial numbers in Contract Management 13?
    Problem:     Where are serial numbers stored?
    Fix:     As of Contract Management 13, serial numbers are no longer used.

    Well, it's just a simple pipe afterall, a tool to give you brief information upon which you decide what to do. Also, there's a minor annoyance, it should go like this:
    stat -c '%x %n' /usr/bin/* | sort
    I mixed long and short options for a moment there, that gets rid of the '=' in front of every line.

Maybe you are looking for