GZIPInputStream and number of read bytes

Hi all,
I have a GZIPInputStream wrapped up in BufferedReader and would like to determine either the number of bytes read or the number of bytes left to read.
GZIPInputStream provides the available() function for determining the number of bytes left to read. However, this returns always one (http://java.sun.com/j2se/1.5.0/docs/api/java/io/FilterInputStream.html#available()).
The available() function of the FileInputStream returns always the length of the file in bytes.
Does anybody have an idea how to do this?
Thanks,
Andreas

I have a GZIPInputStream wrapped up inBufferedReader
and would like to determine either the number of
bytes read or the number of bytes left to read.
GZIPInputStream provides the available() functionfor
determining the number of bytes left to read.No! It provides the number of bytes that can be read
without blocking which may be much less that the
number of bytes left to read and can be zero with
bytes still to be read.That's true. I was aware of this, but not clear enough.
However, this returns always one
(http://java.sun.com/j2se/1.5.0/docs/api/java/io/Filte
rInputStream.html#available()).
The available() function of the FileInputStream
returns always the length of the file in bytes.No! It provides the number of bytes that can be read
without blocking. It cannot return the length of the
file since a file length can be greater than the
maximum integer.Again, that's true, but in my case it always returns the same number.
If I read a simple text file it works perfectly.
I want a way to determine approximately where in the file I am. Is there some way to do this for zipped files?

Similar Messages

  • After a second a telefoon number disappear from the website and I cannot read it anymore?

    # Question
    after a second a telefoon number disappear from the website and I cannot read it anymore?
    For instantance I am looking for a telefoonnumber I became the adress and number after one second the number disappears

    Yes that's the question, The problem has been soved.
    Thank you for your help

  • Need info about DataInputStream - read (byte[] ) method

    Hi all,
    I would like to know when does
    datainputStream.read(byte[] buffer) method return?
    Here dataInputStream is an object of type DataInputStream.
    Does the method return only after buffer.length bytes are read from the input stream? or Will it return after some bytes are read , even if the number of bytes read is less than buffer.length?
    I need this info because while developing a J2ME application and running it in an emulator , the above method seems to return even if some bytes are read.But when the application is transferred to a Mobile device, the method does not seem to return if some bytes are read, and seems to wait until buffer.length is reached.

    one more?

  • What is the maximum number of 263 byte text files that can fit in a folder?

    what is the maximum number of 263 byte text files that can fit in a folder - on a windows 2000 operating system?
    I created a java program that creates these text files.
    It was set to loop 30,000 times.
    It created a total of 21874 html files before throwing a null exception.
    I tried to copy and paste 10 more html files manually and it said not enough disk space.
    however, I made a New Folder in that same folder and I was able to successfully paste the folders in
    there.
    That's interesting.
    It appears there is a size limit in each folder, BUT I can make another folder within that and successfully paste more html files in there
    Does anyone know the rules governing this feature.
    Stephen

    Whatever the answer is, it has nothing to do with Java programming. Microsoft might know, though, and that's where you should look.

  • Issue with reading byte array

    I have a binary file to be read.I want to read the whole file into a byte array. But while doing so the values which are greater than 128 are read as negative values as we have Signedbyte in java(-127 to 128).
    So I tried reading the bytes into the int array as shown in the below code.
    int i = 0;
         int content[]= new int[(int)size];
         FileInputStream fstream = new FileInputStream(fileName);
         DataInputStream in = new DataInputStream(fstream);
         while(i<size)
         content= in.readUnsignedByte();
         i++;
    The above function 'readUnsignedByte();' reads byte and stores it into an int array.....But since the file contains around 34000 bytes ....the loop runs 340000 times .....which is a performance hazard.
    After googling for hours ....I could still not find any alternative ....
    I want to read byte and want to store in int array but instead of loop, I want to read the file at once.
    Or is there any way to implement Unsigned Byte in java so that I can read the entire file in byte array without corrupting the values which are greater than 128..
    I have to deliver the code asap .....Please help me out with an alternative solution for this...
    Thanks in advance....

    Thanks for replying ......
    Actually, I need to take the bytes into an array(int or byte array) with decimal values and further process these decimal values.......
    but while reading the file into a byte array the decimal values get corrupted(in case when I read a number greater than 128) but in this case I am able to read the whole file at once(without using any loop) as done by the following code
         FileInputStream fstream = new FileInputStream(fileName);
         DataInputStream in = new DataInputStream(fstream);
         byte b[] = null;
         in.readFully(b);
    and while reading the file in int array as done in the below code is inefficient as the number of times the loop runs is more than 34000..... please suggest me some alternative.
    int i = 0;
         int content[]= new int[(int)size];
         FileInputStream fstream = new FileInputStream(fileName);     
         DataInputStream in = new DataInputStream(fstream);
         while(i<size)
                   content= in.readUnsignedByte();
                   i++;

  • SocketInputStream.read(byte[], int, int) extremely slow

    Hi everyone,
    I'm trying to send several commands to a server and for each command read one or more lines as response. To do that I'm using a good old Socket connection. I'm reading the response lines with BufferedReader.readLine, but it's very slow. VisualVM says, that SocketInputStream.read(byte[], int, int) is consuming most of the cpu time. A perl script, which does the same job, finishes in no time. So it's not a problem with the server.
    I'm runnning java version "1.6.0_12"
    Java(TM) SE Runtime Environment (build 1.6.0_12-b04)
    Java HotSpot(TM) Server VM (build 11.2-b01, mixed mode) on Linux henni 2.6.25-gentoo-r7 #3 SMP PREEMPT Sat Jul 26 19:35:54 CEST 2008 i686 Intel(R) Core(TM)2 Duo CPU E6550 @ 2.33GHz GenuineIntel GNU/Linux and here's my code
    private List<Response> readResponse() throws IOException {
            List<Response> responses = new ArrayList<Response>();
            String line = "";
            while ( (line = in.readLine()) != null) {
                int code = -1;
                try {
                    code = Integer.parseInt(line.substring(0, 3));
                    line = line.substring(4);
                } catch (Exception e) {
                    code = -1;
                // TODO create different response objects ?!?
                NotImplemented res = new NotImplemented(code, line);
                responses.add(res);
                // we received an "end of response" line and can stop reading from the socket
                if(code >= 200 && code < 300) {
                    break;
            return responses;
        }Any hints are appreciated.
    Best regards,
    Henrik

    Though it's almost an sscce I posted there, I will try to shrink it a little bit:
    Dummy server:
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    public class Server {
        public Server() throws IOException {
            ServerSocket ss = new ServerSocket(2011);
            Socket sock = ss.accept();
            BufferedReader br = new BufferedReader(new InputStreamReader(sock.getInputStream()));
            PrintStream ps = new PrintStream(sock.getOutputStream());
            ps.println("200 Welcome on the dummy server");
            String line = "";
            while(line != null) {
                line = br.readLine();
                ps.println("200 Ready.");
        public static void main(String[] args) throws IOException {
            new Server();
    }the client:
    import java.io.IOException;
    import java.io.PrintStream;
    import java.net.InetSocketAddress;
    import java.net.Socket;
    import java.net.UnknownHostException;
    import java.util.Scanner;
    import de.berlios.vch.Config;
    public class Client {
        private Socket socket;
        private PrintStream out;
        private Scanner scanner;
        public Client(String host, int port, int timeout, String encoding)
            throws UnknownHostException, IOException {
            socket = new Socket();
            InetSocketAddress sa = new InetSocketAddress(host, port);
            socket.connect(sa, timeout);
            out = new PrintStream(socket.getOutputStream(), true, encoding);
            scanner = new Scanner(socket.getInputStream(), encoding);
        public synchronized void send(String cmd) throws IOException {
            // send command to server
            out.println(cmd);
            // read response lines
            readResponse();
        public void readResponse() throws IOException {
            while (scanner.hasNextLine()) {
                String line = scanner.nextLine();
                System.out.println(line);
                int code = -1;
                try {
                    code = Integer.parseInt(line.substring(0, 3));
                    line = line.substring(4);
                } catch (Exception e) {
                    code = -1;
                if (code >= 200 && code < 300) {
                    break;
        public static void main(String[] args) {
            try {
                Client con = new Client("localhost", 2011, 500, "utf-8");
                con.readResponse();
                con.send("version 0.1");
                con.send("menu = new menu Feeds");
                con.send("menu.EnableEvent close");
                con.send("menu.SetColorKeyText -red 'Öffnen'");
                for (int i = 0; i < 100; i++) {
                    String groupId = "group"+i;
                    long start = System.currentTimeMillis();
                    con.send(groupId+" = menu.AddNew OsdItem '"+groupId+"'");
                    con.send(groupId+".EnableEvent keyOk keyRed");
                    long stop = System.currentTimeMillis();
                    System.out.println((stop-start)+"ms");
            } catch (Exception e) {
                e.printStackTrace();
    }This code makes me believe, it's not a java problem, but some system setting of my os.

  • How to do it?  Alternate readLine(), read bytes?

    Problem: How to alternate between an InputStreamReader and a raw InputStream when reading data from an InputStream. The catch is that the InputStreamReader may read ahead a few bytes and so subsequent reading from the underlying InputStream will miss those buffered bytes.
    Background:
    I have an application that communicates with a Tomcat servlet with Http protocol.
    I want to send a request, and receive a response as a Java Object. The problem is receiving the response as a Java Object.
    Actually, I have no problem if I use a URLConnection and create an ObjectInputStream from the URLConnection InputStream. But the URLConnection is very slow to use for uploading large files.
    There is a code project called JUpload which uploads files very fast, at least 10 times as fast as URLConnection. It uses sockets and their input/output streams. So I'm adapting some of that code for my application.
    The problem is that the JUpload code is harder to use. It parses the HTTP headers in both directions. When receiving the response, it parses the HTTP headers using an InputStreamReader wrapped in a BufferedReader to read lines, and continues reading lines for any other responses destined to the application.
    However, I need to read a Java object after the header. Therefore, I need to get the underlying InputStream so I can create my ObjectInputStream.
    There is a conflict here. The BufferedReader may (and does) read ahead, so I can't get a "clean" InputStream.
    I have a workaround, but I'm hoping there is a better way. It is this: After reading the HTTP header lines, I read all the remaining characters from the BufferedReader and write them to a ByteArrayOutputStream wrapped in an OutputStreamWriter. Then I create a new ByteArrayInputStream by getting the bytes from the ByteArrayOutputStream. I then "wrap" my ObjectInputStream around the ByteArrayInputStream, and I can read my Java Object as a response.
    This technique is not only clumsy, but it requires buffering everything in memory after the header lines are processed (which happens to be OK for now as my response Object is not large). It also gets really clumsy if the returned HTTP reponse is chunked, because the BufferedReader is needed alternately to read the chunk headers. Fortunately, I haven't encountered a chunked response.
    It feels like what I need is a special Reader object that allows you to alternately read characters or read bytes without "stuttering" (missing buffered bytes).
    I would think the authors of the URLConnection would have encountered this same problem.
    Any thoughts on this would be appreciated.
    -SB
    Edited by: SB4 on Mar 21, 2010 8:08 PM
    Edited by: SB4 on Mar 21, 2010 8:09 PM
    Edited by: SB4 on Mar 21, 2010 8:10 PM

    Yes, that is the problem as you noted. My solution is to continue reading all the characters from the BufferedReader and to convert them back to a byte stream using the ByteArrayOutputStream, OutputStreamWriter, etc.
    It works, just seems clumsy and not scalable.
    I was hoping there might exist a special "CharByteReader" (invented name) class somewhere that would be like a BufferedReader, but that would implement a read(byte[], offset, length) type of method that could access the read-ahead buffer in the same way the read(char[], offset, length) method does.
    URLConnection is just too slow, including chunked mode.

  • Is there an APP to monitor call usage and number of texts sent

    Is there an APP to monitor call usage (in minutes) and number of texts sent etc so I can ensure I am keeping within my contract? I am getting my 3GS on Thursday so do not know if the phone has this facility already inbuilt or whether there is an app I can buy to do this for me?
    Thank you for any help and info to answer my question.

    Unless O2 has an app available via the iTunes app store that provides for this as AT&T does for the iPhone sold in the U.S., I don't believe so.
    The iPhone includes a usage indicator for Call Time and Cellular Network Data usage, which can be reset on a monthly basis based on your billing cycle, but there is no usage indicator for the number of messages sent or received.

  • How does DIADEM import TDMS files? How gets every channel his number and groupindex? How can I determine which channel has which groupindex and number?

    I store different channels in a TDMS file.
    I like to have a time channel at the first position with group index 1 and number 1.
    When I read the TDMS file with DIADEM the time channel (Float64) is on a differernt position, and the channels are not sorted alphabetically.
    Here are my questions:
    How does DIADEM import TDMS files?
    How gets every channel his number and groupindex?
    How can I determine which channel has which groupindex and number?
    Best regards
    Joerg

    Hi Jörg,
    i suppose that you´re programme whose create the *.tdms file is writing on false position. Try to create datas with timechannel on first indes in diadem, then save it and then open it again. you see that all is correct. So please tell me what programm in what version do you use and please attache it here.
    Did you use the library for creating *.tdms files like in the link ?
    http://zone.ni.com/devzone/cda/tut/p/id/6471
    Here you find the gtdms_8.x.zip - when you extract it and opened the *.llb you find vi´s for all functions e.g. writing 2d array of strings to *.tdms file
    when you open the subvi´s then you see how created and writing datas/structure to *.tdms files. Because *.tdms is binary you can´t see structure with open it in editor.
    When you don´t have Labview you can use the 30 days test of current version 8.5 under following link
    german version download link
    https://lumen.ni.com/nicif/d/lveval/content.xhtml
    english version download link
    https://lumen.ni.com/nicif/us/lveval/content.xhtml
    Hope it helps
    Best Regards

  • HT201263 Unable to update, restore or recover. Slider doesn't slide and number pad doesn't work for passcode. What next? Worked last night . Battery charged. When I push Home button I get my backgroung but can't slide slider. Device is recognized by iTune

    Unable to update, restore or recover. Slider doesn't slide and number pad doesn't work for passcode. What next? Worked last night . Battery charged. When I push Home button I get my backgroung but can't slide slider. Device is recognized by iTunes.Help! Thank you.

    Besweet, I'm having the very same problem with 60GB colour which was bought new and worked for 6 months before suddenly just not being recognised by PC. I hadn't changed anything at all.
    I've followed all troubleshooting advice and reinstalled and updated iTunes and iPod updater software but all troubleshooting routes seem to hit the dead end of either the need to access the iPod via the PC (which isn't possible as it's not showing up at all) or the iPod in disc mode stuck at "ok to disconnect".
    It's still under 1yr warranty so will have to take to a dealer.
    I'm sorry that's not much help for you but at least you know it's not a unique problem.
    PC   Windows XP  

  • My phone and number is on another persons account.  If I start my own account, can I transfer the phone and number to it?  If so, what steps do I need to take to do this?

    My phone and phone number are on another persons account.  If I open my own account with Verizon, can I transfer the phone and number to it?  What steps do I need to take to accomplish this?

    I've done this before. First, I had the current acct owner call in and say it's okay for me to assume liability on the line. Next, I called in and explained that the owner already called and gave permission for me to assume the line. Notes were on the account. I was transferred to the assumption of liability dept, I accepted the terms and conditions and we were good to go. The old owner will get a final bill up until the point of transfer and you will get a new bill starting at the point of transfer.

  • My OSX 10.5.8 won't type letters f,r and number 4

    my OSX 10.5.8 won't type letters f,r and number 4, also the caps lock will not work, How can I fix this?
    It happened after I held the D tyring to get the computer to do a self diagnostic. 
    I was also trying to change the language on the computer to English,
    I think the problem is related to this,
    Should I reset the PRAM?   Anyone MacBook Pro Experts Out There?

    Apple offers some basic advice on troubleshooting this:
    http://support.apple.com/kb/TS1381
    I realize your situation may seem different, but see if these tips are helpful.
    A PRAM reset would be in order if the former doesn't work.
    http://support.apple.com/kb/HT1379
    If none of this works, it may be that there's an issue with the keyboard or software. In that case, you'd best visit your local Apple Store/Genius Bar for help.

  • Can somebody help me in ByteArrayinputStream read(Byte[]) is not blocking.

    I am setting String "User" in inputStream now Once it is read and inputsteram is blocking for other input i want to send
    another strign in input Stream i.e "password" so first "User" will print and then it will print "Password", but ins.read(buff) method is not blocking and returning -1 after reading "User".
    Following is the program:
    package abc;
    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.InputStream;
    import java.io.OutputStream;
    public class InStream {
    InputStream in;
    String value;
    boolean flag=true;
    Inner inc;
    InputStream getInStream() {
    ByteArrayInputStream bais = new ByteArrayInputStream(value.getBytes());
    return bais;
    void setValue(String value) {
    try {
    this.value=value;
    } catch (Exception e) {
    void execute() {
    try {
    setValue("User");
    inc = new Inner();
    inc.start();
    Thread.sleep(10);
    setValue("Password");
    inc.ins=getInStream();
    } catch (Exception e) {
    e.printStackTrace();
    class Inner extends Thread {
    InputStream ins;
    public void run() {
    try {
    int retRead = 0;
    byte[] buff = new byte[2048];
    String receivedStr=null;
    ins = getInStream();
    do{
    retRead = ins.read(buff);
    receivedStr = new String(buff, 0, retRead);
    System.out.println(receivedStr);
    }while (retRead>0);
    System.out.println("Out");
    } catch (Exception e) {
    e.printStackTrace();
    public static void main(String[] args){
    InStream instream=new InStream();
    instream.execute();
    }

    You create that byte[] input stream once and use it to read its contents into a large buffer. So it is read to the end at the first time, and the next reading will indicate the end.
    What is the problem?
    ins = getInStream();
    do{
    retRead = ins.read(buff);
    receivedStr = new String(buff, 0, retRead);
    System.out.println(receivedStr);
    }while (retRead>0);
    System.out.println("Out");
    } catch (Exception e) {
    e.printStackTrace();
    }

  • Could you check our source? (To determine the PR type and number range)

    Hello.
    We use SRM Server5.5 with Classic Scenario.
    We will use the BADI BBP_SC_TRANSFER_BE to determine the PR type and number range according to your recommend.
    We have two PR type in R/3.
    1) KGPR
    2) KTR1
    As you know that shopping cart has no type. So we add customer field to mapping to R/3 PR type and this field has two values.
    1)     PR01: mapping to KGPR
    2)     PR02: mapping to KTR1
    We will use the method GROUP_RQ to determine the PR type.
    If customer field is PR01, PR type is determined KGPR
    If customer field is PR002, PR type is determined KTR1.
    To determine the PR number range, we will use the method GET_NUMBER_OR_RANGE.
    If PR type is KGPR, Choose the No key 12
    If PR type is KTR1, Choose the No key 16.
    Configuration step:
    1.     Maintain the PR number range in SRM.
    No key: 12  (for KGPR) internal NR
    No range: 2520000000 – 2529000000
    No key: 16 (for KTR1) internal NR
    No range: 2560000000 – 2569000000
    2.     Maintain the PR number range in R/3
    No key: 12  (for KGPR) Ext NR
    No range: 2520000000 – 2529000000
    No key: 16 (for KTR1) Ext NR
    No range: 2560000000 – 2569000000
    3.     Assign the PR number range to PR type in R/3
    KGPR – 12 (EXT)
    KTR1 – 16 (EXT)
    4.     Maintain the attribute in SRM
    Document type in R/3
          Add KGPR and KTR1
    We developed this logic, but it’s not working.
    LOOP AT ct_proc_item INTO ls_proc_item “ Where is no date in ct_proc_item:
    We can not find out the reason.
    Could you check our source?
    METHOD if_ex_bbp_sc_transfer_be~group_rq.
      DATA:
           ls_proc_item           TYPE bbps_procurement,
           lv_number_int          TYPE bbp_item_no,
           ls_item                TYPE bbp_pds_transfer_item,
           lv_group_counter       TYPE numc5,
      CONSTANTS:
          lc_on(1)               VALUE 'X'.
      SORT ct_proc_item BY obj_to_gen.
      CLEAR: lv_group_counter.
    LOOP AT ct_proc_item INTO ls_proc_item  
    where obj_to_gen eq iv_object_to_generate.
    get item data which includes customer fields
        MOVE ls_proc_item-preq_item TO lv_number_int. " convert
        READ TABLE it_item INTO ls_item WITH KEY number_int = lv_number_int.
        IF sy-subrc = 0.
          IF ls_item-pr_type EQ 'PR01'.
            ls_proc_item-doc_type = 'KGRP'.
          ELSEIF ls_item-pr_type EQ 'PR02'.
            ls_proc_item-doc_type = 'KTR1'.
          ENDIF. " lv_cust_field
          lv_group_counter = lv_group_counter + 1.   " increase counter
          ls_proc_item-group_1 = lv_group_counter.
          MODIFY ct_proc_item FROM ls_proc_item
                 TRANSPORTING group_1.
        ENDIF.  " sy-subrc
      ENDLOOP.
      cv_method_active = lc_on.
    ENDMETHOD.
    method IF_EX_BBP_SC_TRANSFER_BE~GET_NUMBER_OR_RANGE.
      if is_item-pr_type = 'PR01'.
         CV_NUMBER_RANGE = '12'.
         CV_NUMBER = '2520000000'.
      elseif is_item-pr_type = 'PR02'.
         CV_NUMBER_RANGE = '16'.
         CV_NUMBER = '2560000000'.
      endif. " is_proc_item / is_item
    Thank you
    Best Regard
    SH

    Hi
    Please find some suitable sample code, which might help you out.
    method IF_EX_BBP_SC_TRANSFER_BE~GET_NUMBER_OR_RANGE .
    * IV_OBJECT_TO_GENERATE
    *   '1' Reservation
    *   '2' Purchase Requsition (BANF)
    *   '3' Purchase Order
    *   '4' Customer Object
    * 1. current item data are in structures
    *    - IS_ITEM shopping cart item data including Customer Fields
    *    - IS_PROC backend relevant item purchasing data
    * 2. accounting data in tables
    *    - IT_ACCOUNT all shopping cart account. data with Customer Fields
    *    - IT_PROC_ACCOUNT backend relevant accounting data for current item
    *  - key criteria between this tables are
    *    - it_proc_account-preq_item
    *                     -serial_no (numc 2)
    *    - guid from is_item
    *    - it_account-p_guid
    *                -accno(numc 4)
    * A) example to use current item data + item customer fields
    *  if is_proc_item-DOC_TYPE = 'ABCD' AND
    *     is_item-<field of CI_BBP_ITEM> = .
    * set own number range
    *  CV_NUMBER_RANGE = .
    ** set own number
    ** .. ==> if initial SAP Standard with no.range will be processed
    *  CV_NUMBER = .
    *  endif. " is_proc_item / is_item
    * B) example to use only proc_account no accounting customer fields
    *data:
    *     ls_proc_account   type bbp_bapipogna.
    *  loop at it_proc_account
    *            into ls_proc_account.
    *    if ls_proc_account-BUS_AREA = '9988'.
    ** set own number range
    *  CV_NUMBER_RANGE = .
    ** set own number
    ** .. ==> if initial SAP Standard with no.range will be processed
    *  CV_NUMBER = .
    *     endif. " ls_proc_account
    *  endloop.
    * C) example to use only accounting customer fields, no other accounting
    *data:
    *     ls_account        type bbp_pds_acc.
    *  loop at it_account
    *            into ls_account
    *            where p_guid = is_item-guid.
    *    if ls_account-<field of CI_BBP_ACC> = .
    ** set own number range
    *  CV_NUMBER_RANGE = .
    ** set own number
    ** .. ==> if initial SAP Standard with no.range will be processed
    *  CV_NUMBER = .
    *   endif. " ls_account
    *  endloop.
    * D) example to use proc_account + customer fields for accounting
    *data:
    *     lv_serial_no      type bbp_bapipogna-serial_no,  " sequence num 2
    *     lv_acc_no         type bbp_pds_acc-acc_no,       " sequence num 4
    *     ls_proc_account   type bbp_bapipogna,
    *     ls_account        type bbp_pds_acc.
    *  loop at it_proc_account
    *            into ls_proc_account.
    *    move ls_proc_account-serial_no to lv_acc_no.
    *    read table it_account
    *         into ls_account
    *         with key p_guid = is_item-guid
    *                  acc_no = lv_acc_no.
    *    if sy-subrc = 0.
    **     if ls_account-<field of CI_BBP_ACC> = .
    ** set own number range
    **  CV_NUMBER_RANGE = .
    ** set own number
    ** .. ==> if initial SAP Standard with no.range will be processed
    **  CV_NUMBER = .
    **      endif. " ls_account
    *    endif. " sy-subrc
    *  endloop.
    endmethod.
    method IF_EX_BBP_SC_TRANSFER_BE~GROUP_RQ .
    * 1. current item data are in structures
    *    - IT_ITEM all shopping cart item data including Customer Fields
    *    - IT_PROC_ITEM backend relevant item data of current log.system
    *    key criteria between this tables are:
    *    - IT_ITEM-NUMBER_INT (numc 10)
    *    - IT_PROC_ITEM       (numc  5)
    * 2. accounting data in tables
    *    - IT_ACCOUNT all shopping cart account. data incl. Customer Fields
    *    - IT_PROC_ACCOUNT backend relevant accounting data for current item
    *  - key criteria between this tables are
    *    - it_proc_account-preq_item (numc 5)
    *                     -serial_no (numc 2)
    *    - is_item-guid
    *             -number_int (numc 10)
    *    - it_account-p_guid
    *                -accno(numc 4)
    constants:
          lc_on(1)               VALUE 'X'.
    * A) example to use only proc_item with NO customer fields
    *         group requisitions by backend document type
    *data: lv_doc_type            TYPE esart,
    *      ls_proc_item           type BBPS_PROCUREMENT,
    *      lv_group_counter       type numc5.
    *    clear lv_group_counter.
    *    clear lv_doc_type.
    *    SORT ct_proc_item BY obj_to_gen doc_type.
    *    LOOP AT ct_proc_item
    *            into ls_proc_item
    *            WHERE obj_to_gen EQ iv_object_to_generate.
    ** new group criteria?
    *      if lv_doc_type ne ls_proc_item-doc_type.     " backend doc.type
    *        lv_group_counter = lv_group_counter + 1.   " increase counter
    *        lv_doc_type      = ls_proc_item-doc_type.       " save criteria
    *      endif.
    *      ls_proc_item-group_1 = lv_group_counter.
    *      modify ct_proc_item from ls_proc_item
    *             transporting group_1.
    *    ENDLOOP.
    * B) example to use item customer fields
    * data:
    *      ls_proc_item           type BBPS_PROCUREMENT,
    *      lv_cust_field          type <field of ci_bbp_item>.
    *      lv_number_int          type BBP_ITEM_NO,
    *      ls_item                type BBP_PDS_TRANSFER_ITEM.
    *    clear lv_group_counter.
    *    clear lv_cust_field .
    *    SORT ct_proc_item BY obj_to_gen.
    *    LOOP AT ct_proc_item
    *            into ls_proc_item
    *            WHERE obj_to_gen EQ iv_object_to_generate.
    ** get item data which includes customer fields
    *      move ls_proc_item-preq_item to lv_number_int. " convert
    *      read table it_item
    *           into ls_item
    *           with key number_int = lv_number_int.
    *      if sy-subrc = 0.
    **       new group criteria?
    *        if lv_cust_field ne 'XYZ'.
    *         lv_group_counter = lv_group_counter + 1.   " increase counter
    *         lv_cust_field = ls_item-<field of ci_bbp_item>."save criteria
    *        endif. " lv_cust_field
    *        ls_proc_item-group_1 = lv_group_counter.
    *        modify ct_proc_item from ls_proc_item
    *               transporting group_1.
    *      endif.  " sy-subrc
    *    ENDLOOP.
    * C) example to use accounting data with customer fields
    *            group requisitions by backend document type
    *data: lv_doc_type            TYPE esart,
    *      ls_proc_item           type BBPS_PROCUREMENT,
    *      lt_account             type BBPT_PD_ACC,
    *      ls_account             type bbp_pds_acc,
    *      ls_item                type BBP_PDS_TRANSFER_ITEM,
    *      lv_number_int          type BBP_ITEM_NO,
    *      lv_account_flag        type c,
    *      lv_group_counter       type numc5.
    *    clear lv_group_counter.
    *    clear lv_doc_type.
    *    SORT ct_proc_item BY obj_to_gen doc_type.
    *    lt_account[] = it_account[].
    *    SORT lt_account BY p_guid acc_no.
    *    LOOP AT ct_proc_item
    *            into ls_proc_item
    *            WHERE obj_to_gen EQ iv_object_to_generate.
    ** get accounting customer fields for this item
    *    clear lv_account_flag.
    ** ..first get item guid
    *    move ls_proc_item-preq_item to lv_number_int.
    *    read table it_item
    *         into ls_item
    *         with key number_int = lv_number_int.
    *    if sy-subrc = 0.
    *      loop at lt_account
    *           into ls_account
    *           where p_guid = ls_item-guid.
    *        if ls_account-<field of CI_BBP_ACC> = .
    *           lv_account_flag = lc_on.
    *        endif.
    *      endloop.
    *    endif. " sy-subrc it_item
    ** new group criteria?
    *      if lv_doc_type ne ls_proc_item-doc_type OR     " backend doc.type
    *         lv_account_flag = lc_on.                    " accounting
    *        lv_group_counter = lv_group_counter + 1.   " increase counter
    *        lv_doc_type      = ls_proc_item-doc_type.       " save criteria
    *      endif.
    *      ls_proc_item-group_1 = lv_group_counter.
    *      modify ct_proc_item from ls_proc_item
    *             transporting group_1.
    *    ENDLOOP.
    * !!!! set flag that BADI was processed
    * .. ==> no SAP Standard grouping will be processed
        cv_method_active = lc_on.
    endmethod.
    Hope this will help.
    Please reward suitable points, incase it suits your requirements.
    Regards
    - Atul

  • I have written a binary file with a specific header format in LABVIEW 8.6 and tried to Read the same Data File, Using LABVIEW 7.1.Here i Found some difficulty.Is there any way to Read the Data File(of LABVIEW 8.6), Using LABVIEW 7.1?

    I have written a binary file with a specific header format in LABVIEW 8.6 and tried  to Read the same Data File, Using LABVIEW 7.1.Here i Found some difficulty.Is there any way to Read the Data File(of LABVIEW 8.6), Using LABVIEW 7.1?

    I can think of two possible stumbling blocks:
    What are your 8.6 options for "byte order" and "prepend array or string size"?
    Overall, many file IO functions have changed with LabVIEW 8.0, so there might not be an exact 1:1 code conversion. You might need to make some modifications. For example, in 7.1, you should use "write file", the "binary file VIs" are special purpose (I16 or SGL). What is your data type?
    LabVIEW Champion . Do more with less code and in less time .

Maybe you are looking for