How to include niscope library in VB program

Hi all:
I have a DAQ: PCI-5922 with the niscope driver. The sample VB program runs well. Now I want to write my own VB program so how to include the niscope library in my VB project? Thanks
Regards
Andy

andycui,
You will first need to open or create a new VB project and then select Project>>Add Reference.  Make sure that the COM tab is selected and choose NI-SCOPE Library from the list. 
Thanks,
Gio L.
Digital Support - Product Manager
National Instruments
Attachments:
VB_NI-SCOPE.GIF ‏42 KB

Similar Messages

  • How to include externel library in JAR file?

    Hi all =)
    I have a program that uses an external library (in a JAR file) I would like to compile my program as a JAR and have it include the external library that it needs to run, so that the external library would not need to be on the computer running my program. How can I do this?
    Thanks =)
    Koneko349
    Message was edited by:
    Koneko349

    Ok I was able to make my JAR and launch my application correctly. However whenever I click a button that has a method using my external library I get the following error:
    C:\Documents and Settings\Koneko>java -jar D:\Mangment.jar
    Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/apache/poi/poifs/filesystem/POIFSFileSystem at managment_system.ManagmentGUI.getNextStat(ManagmentGUI.java:569) at managment_system.ManagmentGUI$1.actionPerformed(ManagmentGUI.java:195)
    I do not get this error when I run and use my program from within the IDE.
    The JAR that has my external library (and has the class for POIFileSystem) is also on my D drive and i referenced it correctly (I think) In my classpath:
    <?xml version="1.0" encoding="UTF-8"?>
    <classpath>
         <classpathentry kind="src" path=""/>
         <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
         <classpathentry kind="lib" path="D:/poi.jar"/>
         <classpathentry kind="output" path=""/>
    </classpath>I would really like to get this working and I'm very confused XP

  • How to add requaired library to your programe

    I have a problem with a program Im developing. This program connects to all databases that has a JDBC Driver then you can browse tables and its contents and shows relation between tables and procedures.....etc
    The problem is:
    When a user wants to connect to a database he will need to setup a required library ( JDBC Driver JAR file location and the Driver Class ), then the program updates the classpath to include the new path and adds the Driver Class to the Driver Class list.
    When using the following:
    Class.forName (CurrentDriver); where CurrentDriver is one of the Driver class listed in the program the following exception thrown. "ClassNotFoundException".
    But, when using the following:
    URL[] pathes = new URL[count];
    Pathes[0] = new URL("file", null, "D:/hdkjashdk.jar");
    Pathes[1] = new URL("file", null, "A:/gdhsga/hdg/sadj.jar");
    Pathes[2] = new URL("file", null, "C:/hksffs/fhsj.jar");.
    URLClassLoader loader= new URLClassLoader(pathes);
    Class.forName(currentDriver,true,loader);No "ClassNotFoundException" was thrown.
    And after that, when using
    DriverManager.getConnection (url, user, password); An SQLException : No Suitable Driver thrown.
    Why, and how can I fix this problem.

    opps. the prevous code is the old one sorry, here is the new one.
    package betasniper;
    import java.io.*;
    import java.util.*;
    import java.awt.*;
    import java.net.*;
    /* When you want to use one or all of this methods you have to setup the "theParentFrame"
    or "theParentDialog" so the class know how is the parent window to throw the exception dialog*/
    public class PickupDriversAndSettingClasspath
      public static Properties allDriver;
      public static Vector allPathes;
      public static Frame theParentFrame;
      public static Dialog theParentDialog;
    // Method to set up all Valide Drivers.
      public static void settingDriver()
        allDriver= new Properties();
        String record= "";
        try
          RandomAccessFile random = new RandomAccessFile("jdc.srs", "r");
          while(random.getFilePointer() < random.length() )
            record= random.readUTF();
            if( record.startsWith("#") )
              String[] kv= stringTokenDriver(record);
              allDriver.setProperty(kv[0],kv[1]);
        catch( FileNotFoundException fnfe )
          if( theParentFrame != null )
            theParentFrame.setEnabled(false);
            ErrorWindow ew = new ErrorWindow(theParentFrame, "", false);
            ew.erroMessage(
               "PickUpAndSetting-100 Error, File were JDBC Drivers are stored could not be found.");
            ew.stackTrace(fnfe.toString());
            fnfe.printStackTrace(new PrintStream(ew.theOutput));
            Dimension parentDimension = theParentFrame.getSize();
            Dimension dialogDimension = ew.getSize();
            int x = (int) ( ( (parentDimension.getWidth()) / 2) -
                            ( (dialogDimension.getWidth()) / 2));
            int y = (int) ( ( (parentDimension.getHeight()) / 2) -
                            ( (dialogDimension.getHeight()) / 2));
            ew.setLocation(x, y);
            theParentFrame=null;
            ew.pack();
            ew.show();
          if( theParentDialog != null )
            theParentDialog.setEnabled(false);
            ErrorWindow ew = new ErrorWindow(theParentDialog, "", false);
            ew.erroMessage(
                "PickUpAndSetting-100 Error, File were JDBC Drivers are stored could not be found.");
            ew.stackTrace(fnfe.toString());
            fnfe.printStackTrace(new PrintStream(ew.theOutput));
            Dimension parentDimension = theParentDialog.getSize();
            Dimension dialogDimension = ew.getSize();
            int x = (int) ( ( (parentDimension.getWidth()) / 2) -
                            ( (dialogDimension.getWidth()) / 2));
            int y = (int) ( ( (parentDimension.getHeight()) / 2) -
                            ( (dialogDimension.getHeight()) / 2));
            ew.setLocation(x, y);
            theParentDialog=null;
            ew.pack();
            ew.show();
        catch( IOException ioe )
          if( theParentFrame != null )
            theParentFrame.setEnabled(false);
            ErrorWindow ew = new ErrorWindow(theParentFrame, "", false);
            ew.erroMessage(
               "PickUpAndSetting-101 Error, I/O Error please try again.");
            ew.stackTrace(ioe.toString());
            ioe.printStackTrace(new PrintStream(ew.theOutput));
            Dimension parentDimension = theParentFrame.getSize();
            Dimension dialogDimension = ew.getSize();
            int x = (int) ( ( (parentDimension.getWidth()) / 2) -
                            ( (dialogDimension.getWidth()) / 2));
            int y = (int) ( ( (parentDimension.getHeight()) / 2) -
                            ( (dialogDimension.getHeight()) / 2));
            ew.setLocation(x, y);
            theParentFrame=null;
            ew.pack();
            ew.show();
          if( theParentDialog != null )
            theParentDialog.setEnabled(false);
            ErrorWindow ew = new ErrorWindow(theParentDialog, "", false);
            ew.erroMessage(
                "PickUpAndSetting-101 Error, I/O Error please try again.");
            ew.stackTrace(ioe.toString());
            ioe.printStackTrace(new PrintStream(ew.theOutput));
            Dimension parentDimension = theParentDialog.getSize();
            Dimension dialogDimension = ew.getSize();
            int x = (int) ( ( (parentDimension.getWidth()) / 2) -
                            ( (dialogDimension.getWidth()) / 2));
            int y = (int) ( ( (parentDimension.getHeight()) / 2) -
                            ( (dialogDimension.getHeight()) / 2));
            ew.setLocation(x, y);
            theParentDialog=null;
            ew.pack();
            ew.show();
    // Method to set up ClassPath.
      public static void settingClasspath()
        allPathes= new Vector();
        String record= "";
        try
          RandomAccessFile random = new RandomAccessFile("jdc.srs", "r");
          while(random.getFilePointer() < random.length() )
            record= random.readUTF();
            if( record.startsWith("#") )
              if( !allPathes.contains(stringTokenPath(record)) )
                allPathes.addElement(stringTokenPath(record));
          StringBuffer sb= new StringBuffer(System.getProperty("java.class.path"));
          int num= allPathes.size();
          for( int i=0; i < num; i++ )
            sb.append(";");
            sb.append((String)allPathes.elementAt(i));
          System.setProperty("java.class.path", new String(sb));
        catch( FileNotFoundException fnfe )
          if( theParentFrame != null )
            theParentFrame.setEnabled(false);
            ErrorWindow ew = new ErrorWindow(theParentFrame, "", false);
            ew.erroMessage(
               "PickUpAndSetting-200 Error, File were JDBC Drivers are stored could not be found.");
            ew.stackTrace(fnfe.toString());
            fnfe.printStackTrace(new PrintStream(ew.theOutput));
            Dimension parentDimension = theParentFrame.getSize();
            Dimension dialogDimension = ew.getSize();
            int x = (int) ( ( (parentDimension.getWidth()) / 2) -
                            ( (dialogDimension.getWidth()) / 2));
            int y = (int) ( ( (parentDimension.getHeight()) / 2) -
                            ( (dialogDimension.getHeight()) / 2));
            ew.setLocation(x, y);
            theParentFrame=null;
            ew.pack();
            ew.show();
          if( theParentDialog != null )
            theParentDialog.setEnabled(false);
            ErrorWindow ew = new ErrorWindow(theParentDialog, "", false);
            ew.erroMessage(
                "PickUpAndSetting-200 Error, File were JDBC Drivers are stored could not be found.");
            ew.stackTrace(fnfe.toString());
            fnfe.printStackTrace(new PrintStream(ew.theOutput));
            Dimension parentDimension = theParentDialog.getSize();
            Dimension dialogDimension = ew.getSize();
            int x = (int) ( ( (parentDimension.getWidth()) / 2) -
                            ( (dialogDimension.getWidth()) / 2));
            int y = (int) ( ( (parentDimension.getHeight()) / 2) -
                            ( (dialogDimension.getHeight()) / 2));
            ew.setLocation(x, y);
            theParentDialog=null;
            ew.pack();
            ew.show();
        catch( IOException ioe )
          if( theParentFrame != null )
            theParentFrame.setEnabled(false);
            ErrorWindow ew = new ErrorWindow(theParentFrame, "", false);
            ew.erroMessage(
               "PickUpAndSetting-201 Error, I/O Error please try again.");
            ew.stackTrace(ioe.toString());
            ioe.printStackTrace(new PrintStream(ew.theOutput));
            Dimension parentDimension = theParentFrame.getSize();
            Dimension dialogDimension = ew.getSize();
            int x = (int) ( ( (parentDimension.getWidth()) / 2) -
                            ( (dialogDimension.getWidth()) / 2));
            int y = (int) ( ( (parentDimension.getHeight()) / 2) -
                            ( (dialogDimension.getHeight()) / 2));
            ew.setLocation(x, y);
            theParentFrame=null;
            ew.pack();
            ew.show();
          if( theParentDialog != null )
            theParentDialog.setEnabled(false);
            ErrorWindow ew = new ErrorWindow(theParentDialog, "", false);
            ew.erroMessage(
                "PickUpAndSetting-201 Error, I/O Error please try again.");
            ew.stackTrace(ioe.toString());
            ioe.printStackTrace(new PrintStream(ew.theOutput));
            Dimension parentDimension = theParentDialog.getSize();
            Dimension dialogDimension = ew.getSize();
            int x = (int) ( ( (parentDimension.getWidth()) / 2) -
                            ( (dialogDimension.getWidth()) / 2));
            int y = (int) ( ( (parentDimension.getHeight()) / 2) -
                            ( (dialogDimension.getHeight()) / 2));
            ew.setLocation(x, y);
            theParentDialog=null;
            ew.pack();
            ew.show();
    // Method to load and register all driver..
      public static void loadAndRegister()
        settingClasspath();
        settingDriver();
        int count= allPathes.size();
        URL[] pathes= new URL[count];
        for( int i=0; i < count; i++ )
          String currentPath=(String)allPathes.elementAt(i);
          currentPath.replace('\\','/');
          try
            pathes[i] = new URL("file:///" + currentPath);
          catch(MalformedURLException mue)
            if( theParentFrame != null )
              theParentFrame.setEnabled(false);
              ErrorWindow ew = new ErrorWindow(theParentFrame, "", false);
              ew.erroMessage(
                "PickUpAndSetting-300 Error, Malformed URL Error.");
              ew.stackTrace(mue.toString());
              mue.printStackTrace(new PrintStream(ew.theOutput));
              Dimension parentDimension = theParentFrame.getSize();
              Dimension dialogDimension = ew.getSize();
              int x = (int) ( ( (parentDimension.getWidth()) / 2) -
                              ( (dialogDimension.getWidth()) / 2));
              int y = (int) ( ( (parentDimension.getHeight()) / 2) -
                              ( (dialogDimension.getHeight()) / 2));
              ew.setLocation(x, y);
              theParentFrame=null;
              ew.pack();
              ew.show();
            if( theParentDialog != null )
              theParentDialog.setEnabled(false);
              ErrorWindow ew = new ErrorWindow(theParentDialog, "", false);
              ew.erroMessage(
                 "PickUpAndSetting-300 Error, Malformed URL Error.");
              ew.stackTrace(mue.toString());
              mue.printStackTrace(new PrintStream(ew.theOutput));
              Dimension parentDimension = theParentDialog.getSize();
              Dimension dialogDimension = ew.getSize();
              int x = (int) ( ( (parentDimension.getWidth()) / 2) -
                              ( (dialogDimension.getWidth()) / 2));
              int y = (int) ( ( (parentDimension.getHeight()) / 2) -
                              ( (dialogDimension.getHeight()) / 2));
              ew.setLocation(x, y);
              theParentDialog=null;
              ew.pack();
              ew.show();
        URLClassLoader loader= new URLClassLoader(pathes);
        Enumeration enum= allDriver.propertyNames();
        while( enum.hasMoreElements() )
          String currentName= (String)enum.nextElement();
          String currentDriver= allDriver.getProperty(currentName);
          try
            Class.forName(currentDriver, true, loader);
          catch(ClassNotFoundException cnfe )
            if( theParentFrame != null )
              theParentFrame.setEnabled(false);
              ErrorWindow ew = new ErrorWindow(theParentFrame, "", false);
              ew.erroMessage(
               "PickUpAndSetting-301 Error, The Driver CLass could not be found.");
              ew.stackTrace(cnfe.toString());
              cnfe.printStackTrace(new PrintStream(ew.theOutput));
              Dimension parentDimension = theParentFrame.getSize();
              Dimension dialogDimension = ew.getSize();
              int x = (int) ( ( (parentDimension.getWidth()) / 2) -
                              ( (dialogDimension.getWidth()) / 2));
              int y = (int) ( ( (parentDimension.getHeight()) / 2) -
                              ( (dialogDimension.getHeight()) / 2));
              ew.setLocation(x, y);
              theParentFrame=null;
              ew.pack();
              ew.show();
            if( theParentDialog != null )
              theParentDialog.setEnabled(false);
              ErrorWindow ew = new ErrorWindow(theParentDialog, "", false);
              ew.erroMessage(
                "PickUpAndSetting-301 Error, The Driver CLass could not be found.");
              ew.stackTrace(cnfe.toString());
              cnfe.printStackTrace(new PrintStream(ew.theOutput));
              Dimension parentDimension = theParentDialog.getSize();
              Dimension dialogDimension = ew.getSize();
              int x = (int) ( ( (parentDimension.getWidth()) / 2) -
                              ( (dialogDimension.getWidth()) / 2));
              int y = (int) ( ( (parentDimension.getHeight()) / 2) -
                              ( (dialogDimension.getHeight()) / 2));
              ew.setLocation(x, y);
              theParentDialog=null;
              ew.pack();
              ew.show();
      public static String stringTokenPath(String record)
        String path= "";
        StringTokenizer token= new StringTokenizer(record,"|");
        int count =0;
        while( token.hasMoreTokens() )
          String s= token.nextToken();
          count += 1;
          if( count == 3 )
            path= s.substring(0, s.length()-2);
        return path;
      public static String[] stringTokenDriver(String record)
        String[] driver= new String[2];
        StringTokenizer token= new StringTokenizer(record, "|");
        int count= 0;
        while( token.hasMoreTokens() )
          count += 1;
          String s= token.nextToken();
          if( count == 1 )
            driver[0]= s.substring(1, s.length());
          if( count == 2 )
            driver[1]= s;
        return driver;
      /*void viewing()
        Enumeration enum= allDriver.propertyNames();
        while( enum.hasMoreElements() )
          String key= (String)enum.nextElement();
          String value= allDriver.getProperty(key);
          System.out.println(key+"------"+value);
    }

  • How to include jdic.jar in my program

    Hi all,
    I'd like to deploy my program and for that i am exporting it in an executable jar using eclipse.
    My program uses some of jdic functionnality so i need to include in my program jdic.jar. But that' s my problem. How can i include it in my application's executable jar.
    thank you for your help.

    Hi,
    Sorry but i don' t understand what you've written, if
    my executable jar is named
    myexecutablejar.jar and the jar that i would
    like to put in in order to work is named
    jdic.jar what would be the command?
    Thanks for your precision.Is this clearer?
    jar cvf myexecutablejar your-classes path-of-jdic.jar

  • How to include website made by another program in iWeb?

    A program I have created a set of web pages for me that are connected. If I click on the index page, it opens in safari. How do I import these pages into iWeb so they work on my .mac website?

    Robert Lewis wrote:
    A program I have created a set of web pages for me that are connected. If I click on the index page, it opens in safari.
    Clicking on index.html only open browser as you saw.
    How do I import these pages into iWeb so they work on my .mac website?
    You can't import html code into iweb domain package.
    iweb can't even import its own generated html code, therefore it will not be able to import html code created by other programs.
    That said, you can:
    1) rebuild your older site by copy and paste your old site into iweb.
    2) start new iweb project and link to the older site, using hyperlink.
    now last and not really easy nor simple is to have javascript transforms the old page in to new iweb format. I'd done this over a year ago, I know it works with Safari, so stick with Safari when you want to see:
    old: http://hdl.50webs.com/old2new/bookmarks.html
    iweb version: http://hdl.50webs.com/old2new/_bookmarks.html

  • How to include the javafx program in JSP page

    I am working on a college project and i have got a problem that how will I can use the javafx program in JSP.
    plz imform me as soon as possible

    The JavaFX app can be included in JSP as an Applet.

  • How to include a Plugin (dll file) in a program

    How would I go about utilizing a plugin in my program. By this I mean...lets say that there is an online program for which you have to install the plugin onto your computer in order to use the program. How could I include that plugin into a program that can be used offline, or placed into an online applet, so that other people dont have to download that plugin.
    Basically...I want to know how to put a plugin into my program so that no one else has to download it. Instead they just use the program, which includes the plugin.
    And just so you all know, the plugin is a *.dll file. Could I just put it in an online folder, and cal to it when it is needed??
    Thanks in advance.

    I apologize, but I am confused because I am not that good at this. How would I refer to it? I do not know how to write a java function so that it will call a .dll file. Also, Im not quite sure what to do when I do call it. Here is specifically what I am trying to do. The plugin that I am trying to use is a download plugin. It is used because some people use a program to upload/protect their files, and the only way to download the files is to use the plugin or the program. The thing that I am confused about is how I use the plugin in my program so that the website I want to download from sees that I have the plugin and allows me to download the files I want by using the plugin which I have stored online. Im sure that the website that I am downloading from checks to see if I have the plugin installed, so how do I make it look at the one that I have online and not search for it on my computer??? PLEASE HELP ME!!! i know that people do things like this all the time, but I am new and need a lot of help.

  • How to include script program in nace

    Hi experts,
    I developed one script program now i want to transport this program to production.How to include this program in the NACE tcode
    and this program belongs which application type (how to decide).This program belongs to MM module.(creating a material issue slip).I am basic abaper and i am handilng first time the script task  and also i am seraching sdn forums.Please gine me the steps.

    Hi,
    1. Goto in NACE
    2. You need to ask your functional buddy to let you know about Application area, I suppose u need to take EF.
    3. Select EF from the list and than click on Output Types, select any output type (Which you wud like to give to your script)
    4. Else if you like to create a new one for your script, then on same screen click on change button, then click on New Entries
        And give all the detailed info.
    5. To use existing output types, select a output type like "ZEDI", at the left hand side double click on Processing Routines.
    6. In the Processing Routines block , Give the Program name as print program and here you need to give your SAP scrip name in Form option.
    save it.
    I Hopr I have covered everything, that you need.
    Regards,
    Lokesh

  • Is there a way to use a namespace, such as "Library", and have a program with a different namespace include the Library namespace?

    For many years, I have maintained a library of often used functions for C++.  This has become more challenging with the required namespace for C#. 
    Is there a way to use a namespace, such as "Library", and have a program with a different namespace include the Library namespace?
    bhs67

    You could create a class X in a namspace Y in a C# class library project. You can then add a reference to this class library project/assembly from every application in which you intend to use the class X in namespace Y.
    You don't add references to namespace, you add references to assemblies in .NET. You can then use a class in namespace Y of any referenced assembly by adding a using directive at the top of the code file in which you reference the class:
    using Y;
    Please remember to close your threads by marking helpful posts as answer.

  • How to extract vendors numbers which are included in a particular payment program variant or from a payment identification?

              How to extract vendors numbers which are included in a particular payment program variant or from a payment identification?

    Hi ,
    That's not a Problem as well.
    Go to F110 nd then see as below screen shot . This will give you everything that has included in payment .
    you have an option of diplay which will give same list but vendor included for paid . You have option  to get paymnet summary and all other . Please check them out and let me know if you need more help

  • How to include a key value, per employee, in payslip print program output?

    Employee payslips are printed externally. The output file has to include a 3 char value, per employee, to determine the logo that will be printed on to the payslip.
    What is the best way to include this 3 char value in the output file?
    I assume the best way is to use program RPCEDTG0 and include the code in this program. We are on ECC6 so PE51 isn't used, HRFORMS is, but I assume this wouldn't matter anyway as we don't need to change the HRFORM but rather the RPCEDTG0 program?
    Thanks in advance.

    Hi Kapil,
    Thank you for your help.
    Yes, I have suggested as you said, i.e. putting logo into the smartform linked to the HRFORM. However, the external printers want a code in the file which they will interpret their side and then pickup and output the logo from their system. We merely need to pass them the code for this.

  • SO HOW I DELTED MY LIBRARY FOR MY MOTION3.2  PROGRAM AND DO NOT KNOW HOW TO GET IT BACK HELPPLEASE!

    I do not know how to restore my library with all the 3d effects, particles etc and need directions on how to do this so that I can create those awesome action art pieces. thank you

    Restore it from your backup.
    If you do not have a backup and you deleted it and emptied the trash, then unfortunately, you are out of luck. Unless you wish to pay for a data recovery software or service (by company techs).

  • Hi very urgent  How to improve the performence of the program

    Hi all please tell me how to improve the performence of this program......
    REPORT z03_gil010 NO STANDARD PAGE HEADING LINE-SIZE 130.
                                 INCLUDE                                 *
    INCLUDE: z00_bci010.                   " Gestion des anomalies.
                          Déclaration des données                        *
                       Tables de la bases de données                     *
    TABLES:
            ekpo,        " Poste document d'achat.
            lfa1,        " Base fournisseurs (généralités).
            marc,        " Données division de l'article.
            z03_bw_cmp1,
            eord,        "Répertoire des sources appro. Achats
            eina,        "Fiche infos-achats - données générales
            t024,        "Groupes d'acheteurs
            tvarv.                                              "FAE17345+
                       Déclaration des données internes                  *
    Déclaration de la table interne qui permet de recuperer les mois.
    DATA: BEGIN OF itb_months OCCURS 12.
            INCLUDE STRUCTURE t247.
    DATA: END OF itb_months.
    Table pour récupération d'infos sur les divisions
    DATA: BEGIN OF itb_t001w OCCURS 0,
            werks LIKE t001w-werks,
            fabkl LIKE t001w-fabkl," Clé du calendrier d'entreprise
          END OF itb_t001w.
    Déclaration de la table interne contenant les infos sur l'adresse du
    fournisseur.
    DATA: BEGIN OF itb_adresse OCCURS 0,
            lifnr LIKE lfa1-lifnr,           " Numéro de compte fournisseur.
            name1 LIKE lfa1-name1,                              " Nom 1.
            name2 LIKE lfa1-name2,                              " Nom 2.
            name3 LIKE lfa1-name3,                              " Nom 3.
            name4 LIKE lfa1-name4,                              " Nom 4.
            stras LIKE lfa1-stras,           " N° de rue et nom de la rue.
            pstlz LIKE lfa1-pstlz,           " Code postal.
            ort01 LIKE lfa1-ort01,           " Localité.
            pfach LIKE lfa1-pfach,           " Boîte postale.
            pstl2 LIKE lfa1-pstl2,           " Code de la boîte postale.
            land1 LIKE lfa1-land1,           " Clé de pays.
            landx LIKE t005t-landx,          " Pays.
            spras LIKE lfa1-spras,           " Code langue
    END OF itb_adresse.
    Déclaration d'une table interne pour les informations sur les
    prévisions de commande.
    DATA: BEGIN OF itb_prev_cde OCCURS 0,
            werks LIKE marc-werks,            " Division
            idnlf LIKE eina-idnlf,            " ADDsde ref article frn
            lifnr LIKE eord-lifnr,            " N° fournisseur.
            ekgrp LIKE marc-ekgrp,            " Groupe d'acheteurs
            dispo LIKE marc-dispo,            " Code gestionnaire MRP
            matnr LIKE eord-matnr,            " Article.
            maktx LIKE makt-maktx,            " Désignation article.
            bstmi LIKE marc-bstmi,            " Quantité de commande.
            men00 LIKE plaf-gsmng,            " Quantité du mois en cours M.
            men01 LIKE plaf-gsmng,            " Quantité pour le mois M+1.
            men02 LIKE plaf-gsmng,            " Quantité pour le mois M+2.
            men03 LIKE plaf-gsmng,            " Quantité pour le mois M+3.
            men04 LIKE plaf-gsmng,            " Quantité pour le mois M+4.
            men05 LIKE plaf-gsmng,            " Quantité pour le mois M+5.
            men06 LIKE plaf-gsmng.            " Quantité pour le mois M+6.
    DATA: END OF itb_prev_cde.
    Structure de travail pour les commandes convernant les PFC
    DATA str_pca_pfc  LIKE itb_prev_cde.
    *add sde
    DATA str_eord_pfc  LIKE itb_prev_cde.
    Structure de travail pour les prévisons PFC
    DATA str_prev_pfc LIKE itb_prev_cde.
    Déclaration d'une table interne pour les informations sur le
    portefeuille des commandes d'achat.
    DATA: BEGIN OF itb_pca OCCURS 0,
            werks LIKE ekpo-werks,    " Division
            idnlf LIKE eina-idnlf,     " ADDsde ref article frn
            lifnr LIKE eord-lifnr,    " N° fournisseur.
            ekgrp LIKE marc-ekgrp,    " Groupe d'acheteurs
            dispo LIKE marc-dispo,    " Code gestionnaire MRP
            matnr LIKE eord-matnr,    " Article.
            maktx LIKE makt-maktx,    " Désignation article.
            ebeln LIKE ekes-ebeln,    " Numéro du document d'achat.
            ebelp LIKE ekes-ebelp,    " Numéro de poste du document d'achat.
            slfdt LIKE eket-slfdt,    " Date de livraison statistique
            eindt LIKE ekes-eindt,    " Date de livraison indiquée dans la
                                      " confirmation de la cde.
            menge LIKE ekes-menge,    " Quantité indiquée dans la confirma-
                                      " tion de la commande.
            attdu LIKE eket-wemng,    " Portefeuille fournisseur.
            netpr LIKE ekpo-brtwr,    " Prix net du document d'achat dans
                                      " la devise du document.
            rtard TYPE i,             " Retard en jours ouvres.
            wemng LIKE eket-wemng,    " Quantité de l'entrée de marchandise.
            bldat LIKE mkpf-bldat,    " Date inscrite sur la pièce/sur le
                                      " document.
            qtran LIKE ekes-menge,    " Quantité en transit.
            dtran LIKE ekes-eindt.    " Date du dernier avis de transit.
    DATA: END OF itb_pca.
    DATA: w_i TYPE i,                "Compteur
          w_i_char(1) TYPE c,        "Texte pour récupérer compteur
          w_nm_zone(20) TYPE c,      "Nom zone pour assign au field-symbols
          w_nb_j TYPE i,             "Nb de jours ouvrés jusqu'à fin mois
          w_nb_j_tot TYPE i.         "Nb de jours ouvrés du mois
    FIELD-SYMBOLS:       TYPE ANY.
    Déclaration d'une table contenant les fiches info achat.
    DATA: BEGIN OF itb_eina OCCURS 0,
            matnr LIKE eina-matnr,
            lifnr LIKE eina-lifnr,
            idfnl LIKE eina-idnlf.
    DATA: END OF itb_eina.
    Déclaration d'une table contenant les infos groupe acheteur.
    *DATA: BEGIN OF itb_t024 OCCURS 0,
           ekgrp LIKE t024-ekgrp,
           eknam LIKE t024-eknam,
           ektel LIKE t024-ektel,
           telfx LIKE t024-telfx.
    *DATA: END OF itb_t024.
    Déclaration d'une table pour le transfert du fichier.
    DATA: BEGIN OF itb_transfert OCCURS 0,
            col00(8),                 "division
            col00bis(20),             "Reference article
            col01(18),                "No article
            col02(45),                "libelle article
            col021(17),               "Groupe acheteur
            col022(13),               "gestionnaire
            col03(17),                "qte commandée ou No de commande
            col04(13),                "Mois 1 ou No poste cde
            col05(20),                "Mois 2 ou délai initial
            col06(33),                "Mois 3 ou délai négocié
            col07(13),                "Mois 4 ou qté cdée
            col08(13),                "Mois 5 ou qté attendue
            col09(13),                "Mois 6 ou Montant attendu
            col10(13),                "Mois 7 ou retard
            col11(13),                "qte partielle livree
            col12(13),                "date livraison partielle
            col13(13),                "qté en transit
            col14(13).                "date
    DATA: END OF itb_transfert.
    Déclaration d'une table contenant la liste des fournisseurs.
    DATA: BEGIN OF itb_lifnr OCCURS 0,
            werks LIKE marc-werks,
            idfnl LIKE eina-idnlf,
            lifnr LIKE eord-lifnr,
            ekgrp LIKE marc-ekgrp,
            spras LIKE lfa1-spras,
            eknam LIKE t024-eknam,
            ektel LIKE t024-ektel,
            telfx LIKE t024-telfx.
    DATA: END OF itb_lifnr.
    Déclaration d'une structure pour la selection dans la table MSEG.
    DATA : BEGIN OF itb_mseg OCCURS 0,
             mblnr LIKE mseg-mblnr,
             mjahr LIKE mseg-mjahr,
             ebeln LIKE mseg-ebeln,
             ebelp LIKE mseg-ebelp,
           END OF itb_mseg.
    déclaration d'une structure pour la selection dans EKPO.
    DATA : BEGIN OF itb_ekpo OCCURS 0,
             lifnr LIKE ekko-lifnr,
             ebeln LIKE ekpo-ebeln,
             ebelp LIKE ekpo-ebelp,
             menge LIKE ekpo-menge,
             bpumz LIKE ekpo-bpumz,
             bpumn LIKE ekpo-bpumn,
             matnr LIKE ekpo-matnr,
             werks LIKE ekpo-werks,
             netpr LIKE ekpo-netpr,
             peinh LIKE ekpo-peinh,  "Base de prix FAE17345+
             ekgrp LIKE ekko-ekgrp,   "AFT++
             dispo LIKE marc-dispo,   "AFT++
           END OF itb_ekpo.
    déclaration d'une structure pour la selection dans EKPO.
    DATA : BEGIN OF itb_ekko OCCURS 0,
             ebeln LIKE ekko-ebeln,
             lifnr LIKE ekko-lifnr,
             spras LIKE ekko-spras,
           END OF itb_ekko.
    déclaration d'une structure pour la selection dans EKES.
    DATA : BEGIN OF itb_ekes OCCURS 0,
             ebeln LIKE eket-ebeln,
             ebelp LIKE eket-ebelp,
             ebtyp LIKE ekes-ebtyp,
             eindt LIKE ekes-eindt,
             menge LIKE ekes-menge,
             dabmg LIKE ekes-dabmg,
             etens LIKE ekes-etens,
           END OF itb_ekes.
    déclaration d'une structure pour la selection dans EKET
    DATA : BEGIN OF itb_eket OCCURS 0,
             ebeln LIKE eket-ebeln,
             ebelp LIKE eket-ebelp,
             menge LIKE eket-menge,
             wemng LIKE eket-wemng,
             eindt LIKE eket-eindt,
             slfdt LIKE eket-slfdt,
           END OF itb_eket.
    déclaration d'une structure pour la selection dans MKPF.
    DATA : BEGIN OF itb_mkpf OCCURS 0,
             mblnr LIKE mkpf-mblnr,
             mjahr LIKE mkpf-mjahr,
             bldat LIKE mkpf-bldat,
           END OF itb_mkpf.
    Déclaration d'une structure pour la sélection dans EORD.
    DATA : BEGIN OF itb_eord OCCURS 0,
             matnr LIKE eord-matnr,
             werks LIKE eord-werks,
             lifnr LIKE eord-lifnr,
             ekgrp LIKE marc-ekgrp,
             dispo LIKE marc-dispo,                             "DE3K924352
             disls LIKE marc-disls,
             bstfe LIKE marc-bstfe,
             bstrf LIKE marc-bstrf,
             bstmi LIKE marc-bstmi,
             bstma LIKE marc-bstma,
           END OF itb_eord.
    DATA : BEGIN OF itb_eordw OCCURS 0.
            INCLUDE STRUCTURE itb_eord.
    DATA : END OF itb_eordw.
    Déclaration d'une structure pour la sélection dans MAKT.
    DATA : BEGIN OF itb_makt OCCURS 0,
             matnr LIKE makt-matnr,
             spras LIKE makt-spras,
             maktx LIKE makt-maktx,
           END OF itb_makt.
    Déclaration d'une structure pour la sélection dans EBAN.
    DATA : BEGIN OF itb_eban OCCURS 0,
             matnr LIKE eban-matnr,
             werks LIKE eban-werks,
             flief LIKE eban-flief,
             lfdat LIKE eban-lfdat,
             menge LIKE eban-menge,
             bsmng LIKE eban-bsmng,
             webaz LIKE eban-webaz,
             ekgrp LIKE eban-ekgrp,
             ebeln LIKE eban-ebeln,
             banfn LIKE eban-banfn,
             bnfpo LIKE eban-bnfpo, "DB3K900702+
           END OF itb_eban.
    Déclaration d'une structure pour la sélection dans PLAF.
    DATA : BEGIN OF itb_plaf OCCURS 0,
             plnum LIKE plaf-plnum, "DB3K900702+
             matnr LIKE plaf-matnr,
             plwrk LIKE plaf-plwrk,
             flief LIKE plaf-flief,
             pedtr LIKE plaf-pedtr,
             gsmng LIKE plaf-gsmng,
             webaz LIKE plaf-webaz,
           END OF itb_plaf.
    Déclaration d'une structure pour la sélection dans MARC.
    DATA : BEGIN OF itb_marc OCCURS 0,
             matnr LIKE marc-matnr,
             werks LIKE marc-werks,
             disls LIKE marc-disls,
             bstrf LIKE marc-bstrf,
             bstmi LIKE marc-bstmi,
             bstma LIKE marc-bstma,
             bstfe LIKE marc-bstfe,
             ekgrp LIKE marc-ekgrp,
             dispo LIKE marc-dispo,
           END OF itb_marc.
    DATA : BEGIN OF itb_marc_eord OCCURS 0,
              matnr LIKE marc-matnr,
              werks LIKE marc-werks,
              strgr LIKE marc-strgr,   "groupe de stratégie planif
           END OF itb_marc_eord.
    DATA : BEGIN OF itb_z03_bw_cmp1 OCCURS 0,
             matnr LIKE z03_bw_cmp1-matnr,
             werks LIKE z03_bw_cmp1-werks,
             pdatu LIKE z03_bw_cmp1-pdatu,
             plnmg LIKE z03_bw_cmp1-plnmg,
           END OF itb_z03_bw_cmp1.
    Begin change BNI <DE3K937051>
    DATA : BEGIN OF itb_z03_bw_cmp2 OCCURS 0,
             matnr LIKE z03_bw_cmp2-matnr,
             werks LIKE z03_bw_cmp2-werks,
             pdatu LIKE z03_bw_cmp2-pdatu,
             plnmg LIKE z03_bw_cmp2-plnmg,
           END OF itb_z03_bw_cmp2.
    *End change BNI
    DATA : BEGIN OF str_index1,
             matnr LIKE eord-matnr,
             werks LIKE eord-werks,
          END OF str_index1.
    DATA : BEGIN OF str_index2,
             matnr LIKE eord-matnr,
             werks LIKE eord-werks,
          END OF str_index2.
    DATA : BEGIN OF str_index3_eord,
             matnr LIKE eord-matnr,
             werks LIKE eord-werks,
          END OF str_index3_eord.
    DATA : BEGIN OF str_index4,
             matnr LIKE eord-matnr,
             werks LIKE eord-werks,
          END OF str_index4.
    DATA : BEGIN OF str_index5,
             matnr LIKE eord-matnr,
             werks LIKE eord-werks,
    END OF str_index5.
    DATA : BEGIN OF str_index6,
             matnr LIKE eord-matnr,
             werks LIKE eord-werks,
    END OF str_index6.
    DATA : BEGIN OF str_index7,
             matnr LIKE eord-matnr,
             werks LIKE eord-werks,
    END OF str_index7.
    Déclaration des variables de debut et de fin de mois.
    DATA: w_debut_mois    LIKE sy-datum,
          w_debut_periode LIKE sy-datum,
          w_fin_mois      LIKE sy-datum,
          w_fin_periode   LIKE sy-datum.
    Déclaration des variables pour les dates.
    DATA: w_date0 LIKE sy-datum,
          w_date1 LIKE sy-datum,
          w_date2 LIKE sy-datum,
          w_date3 LIKE sy-datum,
          w_date4 LIKE sy-datum,
          w_date5 LIKE sy-datum,
          w_date6 LIKE sy-datum,
          w_datejour LIKE sy-datum,                             "FAE15269
          w_dat_da LIKE eban-lfdat,
          w_dat_op LIKE plaf-pedtr,
          w_mois0 LIKE t247-ltx,
          w_mois1 LIKE t247-ltx,
          w_mois2 LIKE t247-ltx,
          w_mois3 LIKE t247-ltx,
          w_mois4 LIKE t247-ltx,
          w_mois5 LIKE t247-ltx,
          w_mois6 LIKE t247-ltx,
          w_lendemain LIKE sy-datum.                            "FAE17345+
    Temoin d'un AR dans la commande d'achat.
    DATA: w_temoin_ar.
    Numéro de la confirmation de la commande
    DATA : w_etens LIKE ekes-etens.
    Déclaration des variables pour le nom des fichiers.
    DATA: w_nom_fichier LIKE rlgrap-filename,
          w_fichier LIKE rlgrap-filename,
          w_racine LIKE rlgrap-filename,
          w_file LIKE rlgrap-filename.
    Déclaration d'une table interne pour le transfert.
    DATA: BEGIN OF itb_trans OCCURS 0,
            w_ligne(320).
    DATA: END OF itb_trans.
    Déclaration d'une variable pour rechercher les enregistrements vides.
    DATA: w_compteur     TYPE i,
          w_compteur1    TYPE i,
          w_compteur2    TYPE i,
          w_retard       TYPE i,          " Retard en jours ouvres.
          w_trouve_pfc   TYPE c, "addsde
          w_trouve_pfs   TYPE c, "+DE3K937051
          w_trouve       TYPE c.
    *Index pour les LOOP
    DATA : w_index_ekpo LIKE sy-tabix,
           w_index_ekes LIKE sy-tabix,
           w_index_eket LIKE sy-tabix,
           w_index_mseg LIKE sy-tabix,
           w_index_eban LIKE sy-tabix,
           w_index_plaf LIKE sy-tabix,
           w_index_pca  LIKE sy-tabix,
           w_index_z03_bw_cmp1 LIKE sy-tabix,
           w_index_z03_bw_cmp2 LIKE sy-tabix."+DE3K937051
    RANGES : r_type_pfs   FOR marc-strgr.
    *fichier sur serveur +EDR231003
    DATA : w_chemin LIKE filename-fileintern,  "nom du fichier
           w_date_fichier(12) TYPE c,          "Date format DD_MM_AA
           w_csv(307) TYPE c.                  "ligne du fichier format CSV
    CONSTANTS: k_imputation_m LIKE eban-knttp VALUE 'M'.        "FAE19001+
                     Description de l écran de sélection                 *
                         Paramètres "UTILISATION"                        *
    Ouverture d'un block de sélection pour le(s) fournisseur(s).
    SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME TITLE text-bl1.
    Sélection division(s)
    SELECT-OPTIONS: s_werks FOR ekpo-werks.
    Sélection fournisseur(s).
    SELECT-OPTIONS: s_lifnr FOR lfa1-lifnr OBLIGATORY.
    Sélection du Groupe d'acheteur
    *SELECT-OPTIONS: s_ekgrp FOR marc-ekgrp.   "-FAE26446
    *SELECT-OPTIONS: s_dispo FOR marc-dispo.   "-FAE26446
    SELECTION-SCREEN END OF BLOCK block1.
    FAE 26446 : ajout
    SELECTION-SCREEN BEGIN OF BLOCK block3 WITH FRAME TITLE text-bl3.
    SELECTION-SCREEN BEGIN OF LINE.
    PARAMETER p_ekgrp RADIOBUTTON GROUP g3.
    SELECTION-SCREEN COMMENT 5(24) text-001 FOR FIELD p_ekgrp.
    SELECT-OPTIONS: s_ekgrp FOR marc-ekgrp.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    PARAMETER p_dispo RADIOBUTTON GROUP g3.
    SELECTION-SCREEN COMMENT 5(24) text-002 FOR FIELD p_dispo.
    SELECT-OPTIONS: s_dispo FOR marc-dispo.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN END OF BLOCK block3.
    FAE 26446 : fin ajout
                           Paramètres "SYSTEME"                          *
    Saut de 2 lignes.
    SELECTION-SCREEN: SKIP 2.
    Ouverture d'un block de sélection pour l'adresse physique du fichier.
    SELECTION-SCREEN BEGIN OF BLOCK block2 WITH FRAME TITLE text-bl2.
    PARAMETERS: p_pc       RADIOBUTTON GROUP rad1 DEFAULT 'X',  "+EDR231003
                p_fic_pc LIKE rlgrap-filename.                  "+EDR231003
    SELECTION-SCREEN SKIP.                                      "+EDR231003
    PARAMETERS     : p_serve   RADIOBUTTON GROUP rad1,          "+EDR231003
                     p_fic_se LIKE filename-fileintern          "+EDR231003
                              DEFAULT 'Z03_PREV_COMMANDES'.     "+EDR231003
    SELECTION-SCREEN END OF BLOCK block2.
                           Logique de traitement                         *
                              INITIALIZATION                             *
    INITIALIZATION.
    Date du jour
      MOVE sy-datum TO w_datejour.                              "FAE15269
    Gestion des anomalies.
      MOVE text-lb1 TO w_lb_traitement.
      PERFORM f930_init USING sy-cprog '30'.
    Fin de la gestions des anomalies.
    Récuperation des mois dans la table interne 'ITB_MONTHS'.
      CALL FUNCTION 'MONTH_NAMES_GET'
           EXPORTING
                language              = sy-langu
           TABLES
                month_names           = itb_months
           EXCEPTIONS
                month_names_not_found = 1
                OTHERS                = 2.
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
    Récupération des differentes periodes.
      PERFORM f100_recuperation_date TABLES itb_months.
    Récupération du debut du mois.
      CONCATENATE sy-datlo(6) '01' INTO w_debut_mois.
      MOVE: w_debut_mois TO w_debut_periode.
    Récupération du dernier jour du mois.
      CALL FUNCTION 'LAST_DAY_OF_MONTHS'
           EXPORTING
                day_in            = sy-datlo
           IMPORTING
                last_day_of_month = w_fin_mois
           EXCEPTIONS
                day_in_no_date    = 1
                OTHERS            = 2.
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
              WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
                              TOP-OF-PAGE                                *
    TOP-OF-PAGE.
      CALL FUNCTION 'Z_00_BC_TOP_OF_PAGE'
           EXPORTING
                p_linsz   = k_ligne
                p_pagno   = sy-pagno
                p_prog    = sy-cprog
                p_projet  = k_projet
                p_societe = k_societe
                p_sujet   = sy-title.
                              END-OF-PAGE                                *
    END-OF-PAGE.
                            AT SELECTION-SCREEN                          *
    FAE 26446 : ajout
    AT SELECTION-SCREEN ON BLOCK block3.
      IF NOT ( s_ekgrp IS INITIAL )
      AND  NOT ( s_dispo IS INITIAL ).
        MESSAGE e394(z03_mm).
      ENDIF.
      IF p_ekgrp = 'X'.
        IF s_ekgrp IS INITIAL.
          MESSAGE e395(z03_mm).
        ENDIF.
      ELSE.
        IF s_dispo IS INITIAL.
          MESSAGE e396(z03_mm).
        ENDIF.
      ENDIF.
    fae26446 fin ajout
    AT SELECTION-SCREEN ON BLOCK block2.
      IF p_pc = 'X'.
        IF p_fic_pc IS INITIAL.
    *Attention, il n'y a aucune adresse de sauvegarde pour le(s) fichier(s)
          MESSAGE e021(z03_mm).
        ENDIF.
      ELSE.
        IF p_fic_se IS INITIAL.
    *Attention, il n'y a aucune adresse de sauvegarde pour le(s) fichier(s)
          MESSAGE e021(z03_mm).
        ENDIF.
      ENDIF.
    Création du matchcode pour la selection du fichier local.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fic_pc.
      CALL FUNCTION 'WS_FILENAME_GET'
           EXPORTING
                def_filename     = p_fic_pc
                def_path         = 'C:'
                mask             = text-ma1
                mode             = 'S'
                title            = text-sel
           IMPORTING
                filename         = p_fic_pc
           EXCEPTIONS
                inv_winsys       = 1
                no_batch         = 2
                selection_cancel = 3
                selection_error  = 4
                OTHERS           = 5.
      IF sy-subrc NE 0 AND sy-subrc NE 3.
        MESSAGE e032(z03_mm).
      ENDIF.
                            START-OF-SELECTION                           *
    START-OF-SELECTION.
      PERFORM select_donnees.
    =================================================
    Liste des ARTICLES impactés pour les prévisions *
    =================================================
    ===================================
    PORTEFEUILLE DE COMMANDES D'ACHAT *
    ===================================
    Construction itb_pca à partir de EKKO/EKPO.
      w_index_ekpo  = 1.
      w_index_ekes  = 1.
      w_index_eket  = 1.
      w_index_mseg  = 1.
    SORT itb_ekko BY ebeln.           "-FAE26446
      SORT itb_ekpo BY ebeln ebelp.
      SORT itb_makt BY matnr spras.
      SORT itb_eket BY ebeln ebelp.
      SORT itb_ekes BY ebeln ebelp.
      SORT itb_mseg BY ebeln ebelp.
      SORT itb_mkpf BY mblnr mjahr.
      SORT itb_marc BY matnr werks.                             "+FAE26446
    FAE 26446 remplacement
    LOOP AT itb_ekko.
       LOOP AT itb_ekpo.
               FROM w_index_ekpo.
         IF itb_ekko-ebeln = itb_ekpo-ebeln.
      LOOP AT itb_ekpo.
        READ TABLE itb_marc WITH KEY
           matnr = itb_ekpo-matnr
           werks = itb_ekpo-werks BINARY SEARCH.
        CHECK sy-subrc = 0.
    FAE 26446 fin remplacement
        itb_pca-ebeln = itb_ekpo-ebeln.
        itb_pca-ebelp = itb_ekpo-ebelp.
      itb_pca-lifnr = itb_ekko-lifnr.   "-FAE26446
        itb_pca-lifnr = itb_ekpo-lifnr.                         "+FAE26446
        itb_pca-ekgrp = itb_ekpo-ekgrp.                         "+FAE26446
        itb_pca-dispo = itb_ekpo-dispo.                         "+FAE26446
        itb_pca-matnr = itb_ekpo-matnr.
        itb_pca-werks = itb_ekpo-werks.
      Recherche du libellé article
        READ TABLE itb_makt
                   WITH KEY matnr = itb_ekpo-matnr
                            spras = text-fra
                   BINARY SEARCH.
        IF sy-subrc = 0.
          itb_pca-maktx = itb_makt-maktx.
        ELSE.
          READ TABLE itb_makt
                    WITH KEY matnr = itb_ekpo-matnr
                             spras = text-ang
                    BINARY SEARCH.
          IF sy-subrc = 0.
            itb_pca-maktx = itb_makt-maktx.
          ENDIF.
        ENDIF.
        IF NOT itb_ekpo-bpumn IS INITIAL.
          itb_pca-menge = itb_ekpo-menge * itb_ekpo-bpumz /
                                           itb_ekpo-bpumn.
        ENDIF.
      Sélect° ds la table EKES des dates de livraisons et des qtés
      en transit
        CLEAR w_temoin_ar.
        CLEAR w_etens.
        LOOP AT itb_ekes
                FROM w_index_ekes.
          IF  itb_ekes-ebeln = itb_ekpo-ebeln
          AND itb_ekes-ebelp = itb_ekpo-ebelp.
            IF itb_ekes-ebtyp = text-arn.
              itb_pca-eindt = itb_ekes-eindt.
              w_temoin_ar = 'X'.
            ELSE.
            Si c'est une qté en transit alors on recupere
            la quantité et la date.
              IF itb_ekes-dabmg < itb_ekes-menge.
                itb_pca-qtran = itb_pca-qtran + itb_ekes-menge -
                                itb_ekes-dabmg.
              ENDIF.
              IF itb_ekes-etens > w_etens.
                w_etens = itb_ekes-etens.
                itb_pca-dtran = itb_ekes-eindt.
              ENDIF.
            ENDIF.
          ELSEIF itb_ekes-ebeln > itb_ekpo-ebeln
          OR ( itb_ekes-ebeln = itb_ekpo-ebeln
          AND itb_ekes-ebelp > itb_ekpo-ebelp ).
            w_index_ekes = sy-tabix.
            EXIT.
          ENDIF.
        ENDLOOP.
      S'il n'y a pas d'AR alors récupérat° de la date livraison dans EKET.
        LOOP AT itb_eket
                FROM w_index_eket.
          IF  itb_eket-ebeln = itb_ekpo-ebeln
          AND itb_eket-ebelp = itb_ekpo-ebelp.
            IF w_temoin_ar IS INITIAL.
              itb_pca-eindt = itb_eket-eindt.
            ENDIF.
            itb_pca-slfdt = itb_eket-slfdt.
          Calcul du portefeuille fournisseur à partir de la
          qté commandée et la qté reçue
            itb_pca-attdu = itb_pca-attdu + itb_eket-menge -
                            itb_eket-wemng.
          Calcul du montant du poste
            itb_pca-netpr = itb_ekpo-netpr * itb_pca-attdu.
            IF itb_ekpo-peinh NE 0.
              itb_pca-netpr = itb_pca-netpr / itb_ekpo-peinh.
            ENDIF.
          Calcul quantité réceptionnée.
            itb_pca-wemng = itb_pca-wemng + itb_eket-wemng.
          Calcul du retard en nombre de jours calendaires
          Le calcul du retard  ne doit pas prendre en compte
          le jour de livraison
            ADD 1 TO itb_eket-eindt.
            IF NOT itb_pca-attdu  IS INITIAL
            AND    itb_eket-eindt LT sy-datum.
            Calcul du retard en nombre de jours ouvrés
              CLEAR w_retard.
              CALL FUNCTION 'Z_00_BC_WORKDAYS_PER_PERIOD'
                   EXPORTING
                        date_deb = itb_eket-eindt
                        date_fin = sy-datum
                   IMPORTING
                        jours    = w_retard.
              itb_pca-rtard = itb_pca-rtard + w_retard .
            ENDIF.
          ELSEIF itb_eket-ebeln > itb_ekpo-ebeln
          OR (   itb_eket-ebeln = itb_ekpo-ebeln
          AND    itb_eket-ebelp > itb_ekpo-ebelp ).
            w_index_eket = sy-tabix.
            EXIT.
          ENDIF.
        ENDLOOP.
      Recherche de la derniere date de livraison.
        LOOP AT itb_mseg
                FROM w_index_mseg.
          IF  itb_mseg-ebeln = itb_ekpo-ebeln
          AND itb_mseg-ebelp = itb_ekpo-ebelp.
            READ TABLE itb_mkpf
                       WITH KEY mblnr = itb_mseg-mblnr
                                mjahr = itb_mseg-mjahr
                       BINARY SEARCH.
            IF sy-subrc = 0.
              IF itb_mkpf-bldat > itb_pca-bldat.
                itb_pca-bldat = itb_mkpf-bldat.
              ENDIF.
            ENDIF.
          ELSEIF itb_mseg-ebeln > itb_ekpo-ebeln
          OR (   itb_mseg-ebeln = itb_ekpo-ebeln
          AND    itb_mseg-ebelp > itb_ekpo-ebelp ).
            w_index_mseg = sy-tabix.
            EXIT.
          ENDIF.
        ENDLOOP.
        APPEND itb_pca.
        CLEAR itb_pca.
    FAE26446 suppression parag. suivant
         ELSEIF itb_ekpo-ebeln > itb_ekko-ebeln.
           w_index_ekpo = sy-tabix.
           EXIT.
         ENDIF.
       ENDLOOP.
    Fin FAE26446
      ENDLOOP.
    =========================
    PREVISIONS DE COMMANDES *
    =========================
      SORT itb_eord        BY matnr werks lifnr ekgrp.
      SORT itb_eban        BY matnr werks flief ekgrp.
      SORT itb_plaf        BY matnr plwrk flief.
      SORT itb_z03_bw_cmp1 BY matnr werks.
      SORT itb_z03_bw_cmp2 BY matnr werks."+DE3K937051
      SORT itb_pca         BY matnr werks lifnr.
      w_index_eban = 1.
      w_index_plaf = 1.
      w_index_z03_bw_cmp1 = 1.
      w_index_pca = 1.
      w_index_z03_bw_cmp2 = 1."+DE3K937051
    Remplissage de la table des prévisions de commande.
      LOOP AT itb_eord.
        CLEAR: str_prev_pfc,
               w_trouve.
        MOVE-CORRESPONDING itb_eord TO str_index1.
        MOVE-CORRESPONDING itb_eord TO str_index3_eord.
        MOVE-CORRESPONDING itb_eord TO itb_prev_cde.
      Recherche dans table division/article (MARC) afin de déterminer si
      article PFS (prod fabriqué à stock) ou PFC (Prod fabriqué sur cde)
        AT NEW werks.
          READ TABLE itb_marc_eord
                     WITH KEY matnr = itb_eord-matnr
                              werks = itb_eord-werks
                     BINARY SEARCH.
          IF sy-subrc NE 0.
            CLEAR itb_marc_eord.
          ENDIF.
        ENDAT.
    a - Prévisions pour les PFS : DA + OP *
    *Calcul des quantités de commande.
        IF itb_eord-disls = text-tl1.
          itb_prev_cde-bstmi =  itb_eord-bstfe.
        ELSEIF itb_eord-disls = text-tl2
        OR     itb_eord-disls = text-tl3.
          IF  itb_eord-bstrf NE 0
          AND itb_eord-bstmi = 0
          AND itb_eord-bstma = 0.
            itb_prev_cde-bstmi = itb_eord-bstrf.
          ELSEIF itb_eord-bstrf NE 0
          AND    itb_eord-bstmi NE 0.
            itb_prev_cde-bstmi = itb_eord-bstmi.
          ELSEIF itb_eord-bstrf = itb_eord-bstma
          AND    itb_eord-bstrf NE 0
          AND    itb_eord-bstmi = 0.
            itb_prev_cde-bstmi = itb_eord-bstma.
          ENDIF.
        ENDIF.
      si article PFS (Prod fabriqué à stock) recherche des
      demandes d'achat ou ordres planfiés
        IF itb_marc_eord-strgr IN r_type_pfs.
      Récupérat° calendrier de la division pour calcul correct lors de
      l'ajout de eban-webaz ou plaf-webaz jours ouvrés
          CLEAR w_trouve_pfs ."+DE3K937051
          READ TABLE itb_t001w
                     WITH KEY werks = itb_eord-werks
                     BINARY SEARCH.
          IF sy-subrc = 0.
            LOOP AT itb_eban
                    FROM w_index_eban.
              MOVE-CORRESPONDING itb_eban TO str_index2.
              IF str_index1 = str_index2.
                w_trouve_pfs = 'X'."+DE3K937051
              si qte commandées pour la DA  < quantité de la DA
                IF itb_eban-bsmng < itb_eban-menge.
                ajout de quantité de la DA - qte  commandée pour la DA
                  PERFORM affect_da.
                ENDIF.
              ELSEIF str_index2 > str_index1.
                w_index_eban = sy-tabix.
                EXIT.
              ENDIF.
            ENDLOOP.
          ENDIF.
        ajout des quantité des OP (ordres planifiés)
          LOOP AT itb_plaf
                  FROM w_index_plaf.
            MOVE-CORRESPONDING itb_plaf TO str_index4.
            str_index4-werks = itb_plaf-plwrk.
          str_index4-lifnr = itb_plaf-flief.
            IF str_index4 = str_index3_eord.
            Ajout de webaz jours ouvrés à pedtr
              CALL FUNCTION 'Z_03_MM_ADD_TO_FACTORYDATE'
                   EXPORTING
                        i_date        = itb_plaf-pedtr
                        i_calendar_id = itb_t001w-fabkl
                        i_nb_days     = itb_plaf-webaz
                   IMPORTING
                        o_date        = w_dat_op
                   EXCEPTIONS
                        conv_error    = 1
                        OTHERS        = 2.
              IF sy-subrc
       If forecasts found in Z03_BW_CMP2 for the article
       IF w_trouve_pfs = 'X'."-DE3K937602
    Recalculation prev month M in fct of Nb of wrought days of the month
        IF NOT itb_prev_cde-men00 IS INITIAL.
       one does not hold any more account of the day in progress
          w_lendemain = w_date0 + 1.
          CLEAR:w_nb_j,w_nb_j_tot.         "DE3K938206+
          CALL FUNCTION 'Z_00_BC_WORKDAYS_PER_PERIOD'
               EXPORTING
                    date_deb = w_lendemain
                    date_fin = w_fin_mois
               IMPORTING
                    jours    = w_nb_j.
          CALL FUNCTION 'Z_00_BC_WORKDAYS_PER_MONTH'
               EXPORTING
                    date  = w_lendemain
               IMPORTING
                    jours = w_nb_j_tot.
          itb_prev_cde-men00  = itb_prev_cde-men00 * w_nb_j / w_nb_j_tot
    *CLA DE3K925301 FAE27197
    *to round has the higher entirety
        itb_prev_cde-men00  = ceil( itb_prev_cde-men00 ). "DE3K938206-
        ENDIF.
       ENDIF."-DE3K937602
    *End change BNI
    b - Prévisions pour les PFC (Z03_BW_CMP1 puis rééquilibrage) *
      Recherche des previsions dans Z03_BW_CMP1
      si article PFC (Prod fabriqué sur cde) recherche des prévisions
        IF  NOT itb_marc_eord-strgr IN r_type_pfs.
          CLEAR str_prev_pfc.
          MOVE-CORRESPONDING itb_eord TO str_prev_pfc.
          CLEAR w_trouve_pfc .
          LOOP AT itb_z03_bw_cmp1
                  FROM w_index_z03_bw_cmp1.
            MOVE-CORRESPONDING itb_z03_bw_cmp1 TO str_index7.
            MOVE-CORRESPONDING itb_eord TO str_index6.
            IF str_index6 = str_index7.
          si on trouve des prévisions dans z03_bw_cmp1 pour la source
          d'appro eord alors c'est un article  PFC
              w_trouve_pfc = 'X'.
              CASE itb_z03_bw_cmp1-pdatu+0(6).
                WHEN w_date0+0(6).
                  str_prev_pfc-men00 = itb_z03_bw_cmp1-plnmg.
                WHEN w_date1+0(6).
                  str_prev_pfc-men01 = itb_z03_bw_cmp1-plnmg.
                WHEN w_date2+0(6).
                  str_prev_pfc-men02 = itb_z03_bw_cmp1-plnmg.
                WHEN w_date3+0(6).
                  str_prev_pfc-men03 = itb_z03_bw_cmp1-plnmg.
                WHEN w_date4+0(6).
                  str_prev_pfc-men04 = itb_z03_bw_cmp1-plnmg.
                WHEN w_date5+0(6).
                  str_prev_pfc-men05 = itb_z03_bw_cmp1-plnmg.
                WHEN w_date6+0(6).
                  str_prev_pfc-men06 = itb_z03_bw_cmp1-plnmg.
                WHEN OTHERS.
              ENDCASE.
            ELSEIF str_index7 > str_index6.
              w_index_z03_bw_cmp1 = sy-tabix.
              EXIT.
            ENDIF.
          ENDLOOP.
    *Begin change BNI
        Si des prévisions trouvées dans Z03_BW_CMP1 pour l'article
          IF w_trouve_pfc = 'X'.
          Recalcul prev mois M en fct du nb de jours ouvrés du mois
            IF NOT str_prev_pfc-men00 IS INITIAL.
            on ne tient plus compte du jour en cours
              w_lendemain = w_date0 + 1.
              CLEAR:w_nb_j,w_nb_j_tot.               "DE3K938206+
              CALL FUNCTION 'Z_00_BC_WORKDAYS_PER_PERIOD'
                   EXPORTING
                        date_deb = w_lendemain
                        date_fin = w_fin_mois
                   IMPORTING
                        jours    = w_nb_j.
              CALL FUNCTION 'Z_00_BC_WORKDAYS_PER_MONTH'
                   EXPORTING
                        date  = w_lendemain
                   IMPORTING
                        jours = w_nb_j_tot.
              str_prev_pfc-men00 = str_prev_pfc-men00 * w_nb_j / w_nb_j_tot.
    *CLA DE3K925301 FAE27197
    *arrondir a l'entier supèrieur
              str_prev_pfc-men00 = ceil( str_prev_pfc-men00 ).
            ENDIF.
          Equilibrage PFC : commande/prévision du mois
          Recherche COMMANDES cumulées pour M à M+6
            CLEAR str_pca_pfc.
            LOOP AT itb_pca
                    FROM w_index_pca.
              MOVE-CORRESPONDING itb_pca TO str_index5.
              IF str_index5 = str_index3_eord.
                IF NOT itb_pca-menge IS INITIAL.
                  CASE itb_pca-eindt+0(6).
                    WHEN w_date0+0(6).
                      IF itb_pca-eindt >= w_date0.
                      str_pca_pfc-men00 = str_pca_pfc-men00 + itb_pca-menge.
                      ENDIF.
                    WHEN w_date1+0(6).
                      str_pca_pfc-men01 = str_pca_pfc-men01 + itb_pca-menge.
                    WHEN w_date2+0(6).
                      str_pca_pfc-men02 = str_pca_pfc-men02 + itb_pca-menge.
                    WHEN w_date3+0(6).
                      str_pca_pfc-men03 = str_pca_pfc-men03 + itb_pca-menge.
                    WHEN w_date4+0(6).
                      str_pca_pfc-men04 = str_pca_pfc-men04 + itb_pca-menge.
                    WHEN w_date5+0(6).
                      str_pca_pfc-men05 = str_pca_pfc-men05 + itb_pca-menge.
                    WHEN w_date6+0(6).
                      str_pca_pfc-men06 = str_pca_pfc-men06 + itb_pca-menge.
                  ENDCASE.
                ENDIF."NOT itb_pca-menge IS INITIAL
              ELSEIF str_index5 > str_index3_eord.
                w_index_pca = sy-tabix.
                EXIT.
              ENDIF.
            ENDLOOP."itb_pca
    *. Equilibrer commande / prévision des mois : diminuer la quantité de
    prévision de chaque mois par le portefeuille de commande client du
    mois*. Si ce solde est négatif alors lui donner la valeur 0.
            w_i = 0.
          Ajustement commandes/prévisions pour les mois M à M+6
            WHILE w_i .
            Pour un mois, SI Prévisions > Commandes en cours
              IF .
              Prévisions = Prévisions - Commandes en cours
                 = 0.
              ENDIF.
            On passe au mois suivant
              w_i = w_i + 1.
            ENDWHILE.
            MOVE str_prev_pfc-men00 TO itb_prev_cde-men00.
            MOVE str_prev_pfc-men01 TO itb_prev_cde-men01.
            MOVE str_prev_pfc-men02 TO itb_prev_cde-men02.
            MOVE str_prev_pfc-men03 TO itb_prev_cde-men03.
            MOVE str_prev_pfc-men04 TO itb_prev_cde-men04.
            MOVE str_prev_pfc-men05 TO itb_prev_cde-men05.
            MOVE str_prev_pfc-men06 TO itb_prev_cde-men06.
     

    Hi
    You check in SM50 by executing the programing, You will come to know which select is taking more time and accordingly you modify that select.
    You can do SQL trace and Run time analysis and analyse and see.
    check this and use
    1) Dont use nested select statements
    2) If possible use for all entries in addition
    3) In the where addition make sure you give all the primary key
    4) Use Index for the selection criteria.
    5) You can also use inner joins
    6) You can try to put the data from the first select statement into an Itab and then in order to select the data from the second table use for all entries in.
    7) Use the runtime analysis SE30 and SQL Trace (ST05) to identify the performance and also to identify where the load is heavy, so that you can change the code accordingly
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/5d0db4c9-0e01-0010-b68f-9b1408d5f234
    ABAP performance depends upon various factors and in devicded in three parts:
    1. Database
    2. ABAP
    3. System
    Run Any program using SE30 (performance analys) to improve performance refer to tips and trics section of SE30, Always remember that ABAP perfirmance is improved when there is least load on Database.
    u can get an interactive grap in SE30 regarding this with a file.
    also if u find runtime of parts of codes then use :
    Switch on RTA Dynamically within ABAP Code
    *To turn runtim analysis on within ABAP code insert the following code
    SET RUN TIME ANALYZER ON.
    *To turn runtim analysis off within ABAP code insert the following code
    SET RUN TIME ANALYZER OFF.
    Always check the driver internal tables is not empty, while using FOR ALL ENTRIES
    Avoid for all entries in JOINS
    Try to avoid joins and use FOR ALL ENTRIES.
    Try to restrict the joins to 1 level only ie only for tables
    Avoid using Select *.
    Avoid having multiple Selects from the same table in the same object.
    Try to minimize the number of variables to save memory.
    The sequence of fields in 'where clause' must be as per primary/secondary index ( if any)
    Avoid creation of index as far as possible
    Avoid operators like <>, > , < & like % in where clause conditions
    Avoid select/select single statements in loops.
    Try to use 'binary search' in READ internal table. Ensure table is sorted before using BINARY SEARCH.
    Avoid using aggregate functions (SUM, MAX etc) in selects ( GROUP BY , HAVING,)
    Avoid using ORDER BY in selects
    Avoid Nested Selects
    Avoid Nested Loops of Internal Tables
    Try to use FIELD SYMBOLS.
    Try to avoid into Corresponding Fields of
    Avoid using Select Distinct, Use DELETE ADJACENT
    Check the following Links
    Re: performance tuning
    Re: Performance tuning of program
    http://www.sapgenie.com/abap/performance.htm
    http://www.thespot4sap.com/Articles/SAPABAPPerformanceTuning_PerformanceAnalysisTools.asp
    check the below link
    http://www.sap-img.com/abap/performance-tuning-for-data-selection-statement.htm
    See the following link if it's any help:
    http://www.thespot4sap.com/Articles/SAPABAPPerformanceTuning_PerformanceAnalysisTools.asp
    Check also http://service.sap.com/performance
    and
    books like
    http://www.sap-press.com/product.cfm?account=&product=H951
    http://www.sap-press.com/product.cfm?account=&product=H973
    http://www.sap-img.com/abap/more-than-100-abap-interview-faqs.htm
    http://www.thespot4sap.com/Articles/SAPABAPPerformanceTuning_PerformanceAnalysisTools.asp
    Performance tuning for Data Selection Statement
    http://www.sap-img.com/abap/performance-tuning-for-data-selection-statement.htm
    Debugger
    http://help.sap.com/saphelp_47x200/helpdata/en/c6/617ca9e68c11d2b2ab080009b43351/content.htm
    http://www.cba.nau.edu/haney-j/CIS497/Assignments/Debugging.doc
    http://help.sap.com/saphelp_erp2005/helpdata/en/b3/d322540c3beb4ba53795784eebb680/frameset.htm
    Run Time Analyser
    http://help.sap.com/saphelp_47x200/helpdata/en/c6/617cafe68c11d2b2ab080009b43351/content.htm
    SQL trace
    http://help.sap.com/saphelp_47x200/helpdata/en/d1/801f7c454211d189710000e8322d00/content.htm
    CATT - Computer Aided Testing Too
    http://help.sap.com/saphelp_47x200/helpdata/en/b3/410b37233f7c6fe10000009b38f936/frameset.htm
    Test Workbench
    http://help.sap.com/saphelp_47x200/helpdata/en/a8/157235d0fa8742e10000009b38f889/frameset.htm
    Coverage Analyser
    http://help.sap.com/saphelp_47x200/helpdata/en/c7/af9a79061a11d4b3d4080009b43351/content.htm
    Runtime Monitor
    http://help.sap.com/saphelp_47x200/helpdata/en/b5/fa121cc15911d5993d00508b6b8b11/content.htm
    Memory Inspector
    http://help.sap.com/saphelp_47x200/helpdata/en/a2/e5fc84cc87964cb2c29f584152d74e/content.htm
    ECATT - Extended Computer Aided testing tool.
    http://help.sap.com/saphelp_47x200/helpdata/en/20/e81c3b84e65e7be10000000a11402f/frameset.htm
    Just refer to these links...
    performance
    Performance
    Performance Guide
    performance issues...
    Performance Tuning
    Performance issues
    performance tuning
    performance tuning
    You can go to the transaction SE30 to have the runtime analysis of your program.Also try the transaction SCI , which is SAP Code Inspector.
    1 Always check the driver internal tables is not empty, while using FOR ALL ENTRIES
    2 Avoid for all entries in JOINS
    3 Try to avoid joins and use FOR ALL ENTRIES.
    4 Try to restrict the joins to 1 level only ie only for 2 tables
    5 Avoid using Select *.
    6 Avoid having multiple Selects from the same table in the same object.
    7 Try to minimize the number of variables to save memory.
    8 The sequence of fields in 'where clause' must be as per primary/secondary index ( if any)
    9 Avoid creation of index as far as possible
    10 Avoid operators like <>, > , < & like % in where clause conditions
    11 Avoid select/select single statements in loops.
    12 Try to use 'binary search' in READ internal table. Ensure table is sorted before using BINARY SEARCH.
    13 Avoid using aggregate functions (SUM, MAX etc) in selects ( GROUP BY , HAVING,)
    14 Avoid using ORDER BY in selects
    15 Avoid Nested Selects
    16 Avoid Nested Loops of Internal Tables
    17 Try to use FIELD SYMBOLS.
    18 Try to avoid into Corresponding Fields of
    19 Avoid using Select Distinct, Use DELETE ADJACENT.
    Regards
    Anji

  • Explain: how to include Infospoke in Process Chain where destination is  DB

    Explain: how to include Infospoke in Process Chain where destination is  local machine database [NOT Flatfile]

    Hi vijay,
    First you create an Infospoke with destination as a DB table in your local BI or BW Machine. Now add this infospoke by going through below steps.
    1. Call up the process chain maintenance. Choose This graphic is explained in the accompanying text Process Chain Maintenance from the Administrator Workbench toolbar. The Process Chain Maintenance Planning View screen appears.
    2. In the left-hand screen area of the required This graphic is explained in the accompanying text display component, navigate to the process chain in which you want to insert your InfoSpoke. Double-click to select it. The system displays the process chain plan view in the right-hand side of the screen.
    If no suitable process chain is available, you need to create a new process chain. You can find additional information under Creating a Process Chain.
    3. To insert a process for extraction by means of an InfoSpoke, choose This graphic is explained in the accompanying text Process Types in the left-hand area of the screen. The system now displays the process categories available.
      4.In the process category Loading Process and Post Processing, choose the application process type This graphic is explained in the accompanying text Data Export into External Systems.
      5.Insert the Data Export into External Systems application type with Drag&Drop into the process chain. The dialog box for inserting a process variant appears.
      6.In the Process Variant field, enter the name of the InfoSpoke that you want to include in the process chain, or select it by means of the input help.
    Once You have added the infospoke you have to write a program which will fetch the database table that you filled and transfer the data fetched to other legacy system with the help of XI System
    For more information on how to infospoke on 3rd party pls find the link below
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/5f12a03d-0401-0010-d9a7-a55552cbe9da
    Hope this help
    Harish

  • How to add dll library to application?

    I start programmed the CVI a few weeks ago and I have a little problem. I must make an application layer for profibus master device. However I total do not know how to add dynamic library to program, because in another way I get the error: undefined symbol. I know that it very trivial, but I cannot find solution. I have a lib file and also I include file about device, but I still get the error – undefined symbol – can you help me?
    Thanks very much for any advice or help

    Dear laszku,
    Are you looking for solutions to connect your CVI application with PLC? Because there are also solutions for that which are easy to use, and to implement with CVI.
    If you want to use your DLLs, there are some on-line help, how to import them in CVI.
    Basicaly there are two different method to import DLLs:
    - static import, when you import the library in your CVI project. The dll will be loaded when the exe starts running. If there is an issue to load the library, you'll be able to get the error at compilation time.
    - dynamic dll import, when you load the library at run-time. With this, you get the flexibility to control, when will be the dll linked to your exe in the memory, while running. The disadvantage is, you'll get errors only at run-time.
    I recommend you some of our on-line tutorial, how to load DLL into your application in CVI:
    CVI Help: Loading Dlls - This says: You cannot import DLLs directly into your project. You need to create DLL Import Library, which can be imported into your project.
    To do so, look at this knowledge base: Creating Import Libraries for a DLL in LabWindows/CVI
    You might get answers for your following questions at this FAQ page:
    FAQ: Using Dynamic Link Libraries with LabWindows/CVI
    Some help sites:
    Rules for Using DLL Files
    Linking to Functions Defined in a DLL From LabWindows/CVI
    If you need dynamic linkink, you can get example code with this site:
    How Can I Access DLL Functions in a LabWindows/CVI Program Without Including the Import Library in t...
    I hope, I could help you to find the way how to import DLL libraries.
    If you still couldn't solve the error after studying the links, please provide me more information, where, which symbol is missing, and also the full error message.
    The error you get, can be caused by the linker or pre-compiler also, which doesn't find the symbol you requested. Please check the path of your library and dll also.
    Best Regards,
    Tamas Szekely
    Applications Engineer
    National Instruments

Maybe you are looking for

  • Getting error while removinf user from AD group

    Hi, In AD User process definition, there is a default taks called :Remove user from Group. This task runs after another task called Organization Name Update . Whenever, an user is moved from one org to another org, his organization gets updated in AD

  • How to applty setMneomonic in Confirm Dialog of JOption Pane

    hi I am using javax.swing.JOptionPane.showConfirmDialog(parentComponent,"Do you really want to Exit ? ","Confirm Exit",javax.swing.JOptionPane.YES_NO_OPTION);i know how to set the hot keys( setMnemonic(char)) in the JButton but i dont know how to use

  • Set blocking price for lower tolerance limit

    Hello, when we try to park or post a vendor invoice in MIRO or MIR7 transactions we need to set the blocking price (RSEG-SPGRP) when the lower tolererance limit is reached. I have reviewed the OSS note 165589 but I think it is only for checking other

  • Is there a way to identify a thread you want to return to without tagging?

    Is there a way to identify a thread you want to return to without tagging? I will try to explain what I mean. Let say someone asks a question and you are curious at what people may suggest as solutions.  The interest could range from simple curiosity

  • Secret settings?

    Hello forum! This may be a very simple question and hopefully it is. I have Flash Professional CS5 and Captivate 5. What settings should I use in Flash Pro to allow my swf files in Captivate to pause/unpause correctly when I  "Synchronize with projec