Advanced CAN Frame to Channel Conversion Reference Example

Hi!
I wonder if any of you guys can help me converting this example into LV7.1.
The example is under:
http://zone.ni.com/devzone/cda/epd/p/id/5826
Thanks in advance!!!
Ogulcan
Solved!
Go to Solution.

Ogulcan,
The example that you are asking for is built with a different version of the NI-RIO and Real-Time drivers.  Downgrading this example would require a system with LabVIEW 8.5 or 8.6 with the most current RIO and Real-Time drivers, and a system with LabVIEW 8.0 and an older version of the RIO and Real-Time driver.  It may also require a third system set up up LabVIEW 7.1 and even older versions of the RIO and Real-Time drivers.  The changes in these drivers and the included VI's since LabVIEW 7.1 would also likely make this example not work with LabVIEW 7.1, which may be why it was posted for LabVIEW 8.5.
Eric K
Applications Engineering
National Instruments

Similar Messages

  • Advanced CAN Frame to Channel Conversion: Error with LV 8.5.1

    Hello!
    I´ve tried to read in a DBC-file with the "Advanced CAN Frame to Channel Conversion Example" on a LabVIEW 8.5.0 system and it works fine.
    On a LabVIEW 8.5.1 System I get the error:
    Scan From String (arg 6) in CAN FtoC Parse Channels and Mode.vi->CAN FtoC Parse CANdb Messages and Channels.vi->CAN Channel Data Import.vi
    Does anybody know a solution for this error?
    Thank you for your help,
    demo66
    regards,
    demo66

    Hi!
    It is a problem of localized decimal point.
    In a german Windows, LabVIEW will use Komma as decimal point.
    So the Scan From String.vi will convert string 0,21 in a double but not 0.21. From the file dbc you receive the values with period "." that's why it create the error 85.
    You have 2 possibilities: change the localized decimal point in LabVIEW (Tools -> Options) or you say to the Scan From String.vi to use "." as a decimal point.
    Go to CAN FtoC Parse Channels and Mode.vi and search the 2 Scan From String.vi
    Add at the beginning of the Format String %.; so that the format String will use the "." as decimal point (see Attachement).
    After that the example will work.
    Best regards
    Ken
    Attachments:
    Scan From String.jpg ‏51 KB

  • Deterministic CAN Frame to channel conversion

    Hi, I need to create a CAN logger which should record (in TDMS format) and show in real time (in a mixed signal graph) several channels in deterministic mode.
    Using an interface wich supports the Channel API (such as NI PXI-8464) it is all right and the software works properly.
    The problems appears when the aquisition is done through a NI USB 8473, doing the frame to channel conversion with the two virtual channels (CAN256 and  CAN257). The conversion is done in the way shown below:
    where in the CAN256 i transmit in "timestamped mode"
    While the time goes on, the logged signal is more and more delayed respect the real one until the buffer fills and an error is generated.
    What i need is a Frame to Channel conversion wich keeps deterministic, also with a small constant delay.
    Any solution?
    Thanks a lot
    Fabio

    Hello Fabio,
    Usign the virtual ports for frame to channel conversion is not very efficient.  I would suggest using the frame to channel conversion library.
    Let me know if you have any questions about it.  Have a great day.
    O. Proulx
    National Instruments
    www.ni.com/support

  • CAN Frame to channel conversion using CVI

    Hi,
    I am using USB-8473 can bus modules in a project.  I would like to display the channel data by using the Frame to Channel conversion library.  Is there a version that can be used with CVI?  I am using CVI 9.1
    Thanks
    John

    Hello John,
    I do see what you mean, the VIs actually just call into a C dll. I dowloaded to the Library after reading your post and opened up the VIs. It looks like each is just a small wrapper around Call library funciton node. It is definately silly that the VIs are so well documented but not the functions of the dll itself. Based on browsing a few of these VIs, it would be pretty easy to write the wrapping code in C and call all the same functions of frchconvlib.dll. 
    I will look into whether this library was written by a third party or NI, and if its NI property I would like to expose the dll itself to users like yourself. 
    I do apologize that this is the only current solution. I will let you know what I find out.
    This kind of feedback it important to receive, so thank you for voicing you concern.
    Best,
    Anna K.
    National Instruments

  • CAN Frame to Channel Conversion Library

    Hi,
    Is it possible to use this DLL with CVI? If so, is there any example code or a user document?
    Cheers,
    John
    John C
    Solved!
    Go to Solution.

    Hi JGC
    Unfortunately this Library is only meant to be used from LV and LVRT, an equivalent Library does not exist in CVI.
    With that said, you may be able to dig into the LabVIEW VI's of the Frame Channel Conversion Library and pull the function prototypes from the Call Library Function Node on the block diagram of each one. With this information, you could call the functions from the dll (usually located here: C:\Program Files\National Instruments\NI-CAN\CAN Frame Channel Conversion Library 1.0.2\Drivers) from within C.
    Kind Regards
    Chris
    Chris | Applications Engineer NIUK

  • CAN Frame Channel Conversion Library

    Hello, I am trying to use the attached ncd file to read from a Series 2 board via the Conversion library but it's not working. I can load the ncd in Max and it read the channel fine.
    What would cause this?
    I am using the sample vi USBCANBasicInput.vi. It seems imposible to debug because it uses a dll for everything.
    I am using version 1.0.3.
    There are extended CAN messages. 
    Thanks in advance,
    Dustin
    Solved!
    Go to Solution.
    Attachments:
    USBCANBasicInput.vi ‏44 KB
    atc.zip ‏1 KB

    Dustin,
    It was a pleasure speaking with you on the phone today.
    It seems that the problem was in using extended arbitration ID's with the Frame Channel Conversion Library. Here are some examples that show how to use this library with extended arb ID's.
    http://decibel.ni.com/content/docs/DOC-6793
    http://decibel.ni.com/content/docs/DOC-6792
    http://decibel.ni.com/content/docs/DOC-6055
    Regards
    Peter Flores
    Applications Engineer

  • CAN Frame Signal Conversion With XNet

    When dealing with CAN, most new developer struggle with the Frame and Channel (or Signal) conversion.  Developers are trying to get away with using the cheapest CAN hardware, and as a result are opting to not use XNet hardware but instead use things like the USB 8473, or using non-NI hardware like the ValueCAN by Intrepid, or using Vector hardware, or CAN to serial adapaters.  The problem with all of these is you generally just read and write frames which is the raw form of CAN.  When using these cheap devices you can't ask the CAN bus what the signal Bus_Voltage is, instead you need to perform a frame read, find the frame associated with the signal, then pull out the bits for that signal, then scale the signal based on the signal selected.
    All of this is doable but a pain and can be very custom.  That's one reason NI came out with the Frame Channel Conversion Library.  This library converts from Frames to Channels using an industry standard CAN database file.  The problem with this library is it hasn't been updated in 5 years, and has known issues which likely will never be fixed.
    NI has since come out with XNet which supports reading and writing signals on XNet hardware.  The XNet drivers also support converting Frames to Signals without needing hardware at all.  This conversion has several limitations, and really only works for getting the latest value for a signal, not all values.  And in addition to that if the signal was never seen, the value will be the defaul value for that signal, not NaN.
    So I wrote a wrapper around the XNet conversion library to handle going from signals to frames, or from frames to signals.  Anyone looking to use a DBC file, on hardware that only supports frame API should use this conversion library, or at least use the XNet conversion sessions.
    CAN Frame Signal Conversion Using XNet 
    Unofficial Forum Rules and Guidelines - Hooovahh - LabVIEW Overlord
    If 10 out of 10 experts in any field say something is bad, you should probably take their opinion seriously.

    Hello Hooovahh,
    Nice work  . It’s very useful.
    I’m also converting CAN Raw data to Physical values in my project. Yes, your correct XNET APIs have some limitations. as you mentioned, there is one more limitation I found,
    If your Message Data length (Payload) is 4 Bytes (example) and other CAN Frames are having more than 4 Bytes then its throwing Error (Error Code -1074384737).
    While converting CAN Frames to signals, we will get different Payloads but, our selected signal message have 4 bytes then XNET will gives an error (at the time of Data Conversion).
    As per attached Snap, My Signal is related to IDxBB and I’m sending two different Frames then XNET will not convert.
    Hooovahh Wrote:
    NI has since come out with XNet which supports reading and writing signals on XNet hardware.  The XNet drivers also support converting Frames to Signals without needing hardware at all.  This conversion has several limitations, and really only works for getting the latest value for a signal, not all values.  And in addition to that if the signal was never seen, the value will be the default value for that signal, not NaN.
    When we will send Frame by Frame then we will get all values (not only recent values). XNET will take previous value (if data is not present for Next iteration)
    Please check this snippet for all values & NaN Display.
    Munna

  • Frame Channel Conversion Library for LabwindowsCVI

    Could someone help me to identify Frame Channel Conversion Library for LabwindowsCVI. I found a library for labview and it is working fine with my USB8473. But i really need to get it working with Labwindows. Have anyone tried to access the frchconvlib.dll from labwindows? Thanks in advance.

    Unfortunately, the C API is not documented, nor is it stated as a supported interface.
    With that said, you may be able to dig into the VI's of the Frame Channel Conversion Library and pull the function prototypes from the Call Library Function Node on the block diagram of each one. With this information, you could call the functions from the dll (usually located here: C:\Program Files\National Instruments\NI-CAN\CAN Frame Channel Conversion Library 1.0.2\Drivers) from within C.
    Let me know your thoughts and if you have any success.
    Regards,
    Peter Flores
    Applications Engineer

  • Frame Channel Conversion Library

    Hello everyone,
    I'm currently using the Frame Channel Conversion Library (downloaded on the NI Site) and I noticed that there are troubles when using a.dbc containing channels with "scaling factor".
    When I convert the .dbc in the .ncd format, the scaling factors are correctly translated and then correctly interpreted by the DLL of the Convert Frame to Channel.vi, but when I use directly the .dbc in the same function (i.e. Add Selected Channels From File.vi), I always get 0 in the scaled data.
    More clearly, the library works fine with the .ncd format but doesn't work with the .dbc format, when there are channels using a scaling factor.
    Is it a known "bug" ? Is there a way to correct it,  in order to  use  the .dbc with this helpful library ?
    Thanks in advance.

    This could be an issue of using extended 29 bit IDs with the conversion library. If you have extended Ids with your signal database, the NI-CAN driver allways expects to see the 30 th ID bit set additionally if you like to transmit an extended ID and you have to remove the 30 th bit if you provide the ID for the conversion VI. See the attached pictures for how to remove and add the 30th bit  for NI-CAN.
    This is only necessary if you use dbc files. The max export to ncd removes the 30th bit automatically.
    DirkW
    Attachments:
    30thbit_add.jpg ‏49 KB
    30thbit_removal.jpg ‏25 KB

  • How can I create dynamic file references in Power Query?

    Hi all,
    I'm new at using PowerQuery, and so far I like it. There's one thing I am struggling with though... Once I have set up my PoweQuery connections, I don't find an easy way to change the file to which the query is connecting. I'm using it for a monthyl recurring
    process, and every month the source data to query on woudl be different. The same in format/structure, but just a different dataset.
    Is there a way to make the source setup more dynamic? Can I for example in a parameters sheet enter the name and path of the new source file and update the queries?
    Currently the Advanced editor shows me following file reference:
    let
        Source = Excel.Workbook(File.Contents("Z:\Templates\EMEA\Source Data Tables\EMEA_EW_Source_Data_for_Power_Queries v1.xlsm")),
    Thanks in advance for suggestions

    Yes, this is something that you can do with Power Query. Here's how you can do it:
    Create a table in Excel containing your parameter value. Let's say that it has one column, called ParameterValue, and one row.
    Create a new Power Query query that gets the data from this table. Call the query something like ParameterQuery.
    In your original query you will now be able to reference values from your parameter query by saying something like this:
    Source = Excel.Workbook(File.Contents(ParameterQuery[ParameterValue]{0})),
    HTH,
    Chris
    Check out my MS BI blog I also do
    SSAS, PowerPivot, MDX and DAX consultancy
    and run public SQL Server and BI training courses in the UK

  • How can I enable/disable the transmission of a can frame? (filter etc...)

    Hello,
    I use the CAN
    Transmit-periodic.vi in LV 8.5, I want to enable or disable the
    transmission of a frame without stop the loop of my VI, does it exist
    in the frame api a vi which could stop, or mask the transmission of a
    frame?
    It's important I don't want to stop my VI that
    send my frame just filter a frame that I don't want send on my CAN
    bus...(I would command it with a boolean for example).
    Thank you.
    Bye.

    Hi there
    I'm not familiar with NI-CAN, but take a look at
    \vi.lib\Nican\nican.llb\ncAction.vi
    Can be found in the CAN\Frame API\Advanced palette.
    Start Transitions the CAN object from stopped (idle) state to started (running) state. If the CAN object is already started, this operation has no effect.
    Stop Stops the CAN Object. For example, if the CAN Object is configured to transmit data frames periodically, this action stops the periodic transmissions. This action will also clear all entries from the read queue.
    Best regards
    chris
    CL(A)Dly bending G-Force with LabVIEW
    famous last words: "oh my god, it is full of stars!"

  • How can I set a cross reference to a Picture

    Hello,
    I have a question regarding the new function: How can I set a cross reference (dont know the exact english name since I use the German version; in German: Querverweis) in Indesign CS4 to a picture? So far, I could only do it with a kind of workaround by putting an invisible text frame above or below the picture and referencing to that one.
    Any suggestions?
    Tschens

    Or put it inside a text frame as an inline graphic. You've basically figured it out.
    Peter

  • Can PCM multi-channel wav (not DD or DTS) be sent over SPDIF

    <Can PCM multi-channel wav (not DD or DTS) be sent over SPDIF? --- X-Fi Elite Pro SB055A and Audio Creation Mode ---
    If I understand correctly, SPDIF format can support uncompressed MULTICHANNEL wav format (within the limitations of its bandwidth) as well as the more usual DD or DTS encoded format on SPDIF.
    One of the neat things about Creative's Audio Creation Mode in the Recorder section is the ability to actually record to a multi-wav format (but the sample size seems to be fixed at 24 bit). This means it is quite simple to have several mixer inputs and record a mixed multi-channel wav file in one go. Great and this works as expected with a 5. ?24 bit/48 kHz recorded test file.
    My question is when one plays this recorded multi-channel wav file back, the mixer monitor (playback) shows the various 5. (say) channels with their separate content. Can this multi-channel *uncompressed* wav data? be sent over the SPDIF output as is to preserve the PCM quality? (so no DD or DTS encoding used)? I have tried this and I?ONLY seem to be able to get a STEREO (2 channel mixed down) version received at another SPDIF-in sound card (my Audigy 2ZS PCMCIA). I tried almost all selections at both ends involving SPDIF.

    @? In answer to my own question, and I think I had known this a while back, SPDIF standard only supports transmission of either 2 channel PCM (uncompressed) stereo with up to 24 bit resolution per channel and up to as much as 92 kHz sampling frequency, or compressed (DD or DTS) multichannel audio up to 5..
    Since each frame of SPDF is 64 bits in length (with a single sample of L and R channels plus extra bits of status in each frame), at 92 kHz max sampling rate, this translates to about 3 Mbits/sec bit rate. However most SPDF don't support the 92 kHz rate (which for 24 bit would be the stereo rate for DVD-Audio) for various copyright protection reasons.
    Here is short demonstration of SPDIF transmission of 24bit/96 kHz between two sound cards with and without "bit accurate for playback" enabled:
    ? http://www.jensign.com/spdif/

  • Can Max global channels be programmatically added to a created task?

    I can add Physical channels to a created task, but cannot seem to add global channels to a task that was previously created.  The problem here is that I want to create my task with the channels (both physical and global) in a specified order.
    Thanks,
    Mike Sachs

    Hi Mike-
    You can add global virtual channels to a programmatically-created task by using the DAQmx Create Task VI.  This allows you to create a task with existing global virtual channels and then add virtual channels at run-time in the usual manner.  Here's an example that shows a global channel (created for Dev5/ai0) and a virtual channel within the same task:
    Hopefully this helps-
    Message Edited by Tom W [DE] on 02-09-2006 11:06 AM
    Tom W
    National Instruments
    Attachments:
    global_virtual_task.JPG ‏52 KB

  • Can anyone plz send a simple example of interactive reports

    Hi gurus,
    Can anyone plz send a simple example of interactive reports using subscreenswhich contains at line-selection, at user-command, pf and other commands.
    Thanks in advance.

    Hi,
    * Macro definition
    DEFINE m_fieldcat.
      add 1 to ls_fieldcat-col_pos.
      ls_fieldcat-fieldname   = &1.
      ls_fieldcat-ref_tabname = &2.
      ls_fieldcat-cfieldname  = &3.
      ls_fieldcat-qfieldname  = &4.
      append ls_fieldcat to lt_fieldcat.
    END-OF-DEFINITION.
    TYPE-POOLS: slis.                      " ALV Global types
    TYPES:
      BEGIN OF ty_vbak,
        vkorg TYPE vbak-vkorg,             " Sales organization
        kunnr TYPE vbak-kunnr,             " Sold-to party
        vbeln TYPE vbak-vbeln,             " Sales document
        netwr TYPE vbak-netwr,             " Net Value of the Sales Order
        waerk TYPE vbak-waerk,             " Currency
      END OF ty_vbak,
      BEGIN OF ty_vbap,
        vbeln  TYPE vbap-vbeln,            " Sales document
        posnr  TYPE vbap-posnr,            " Sales document item
        matnr  TYPE vbap-matnr,            " Material number
        arktx  TYPE vbap-arktx,            " Short text for sales order item
        kwmeng TYPE vbap-kwmeng,           " Order quantity
        vrkme  TYPE vbap-vrkme,            " Quantity Unit
        netwr  TYPE vbap-netwr,            " Net value of the order item
        waerk  TYPE vbap-waerk,            " Currency
      END OF ty_vbap.
    DATA :
      gs_vbak TYPE ty_vbak,
    * Data displayed in the first list
      gt_vbak TYPE TABLE OF ty_vbak,
    * Data displayed in the second list
      gt_vbap TYPE TABLE OF ty_vbap.
    SELECT-OPTIONS :
      s_vkorg FOR gs_vbak-vkorg,           " Sales organization
      s_kunnr FOR gs_vbak-kunnr,           " Sold-to party
      s_vbeln FOR gs_vbak-vbeln.           " Sales document
    SELECTION-SCREEN :
      SKIP, BEGIN OF LINE,COMMENT 5(27) v_1 FOR FIELD p_max.    "#EC NEEDED
    PARAMETERS p_max(2) TYPE n DEFAULT '20' OBLIGATORY.
    SELECTION-SCREEN END OF LINE.
    INITIALIZATION.
      v_1 = 'Maximum of records to read'.
    START-OF-SELECTION.
      PERFORM f_read_data_vbak.
      PERFORM f_display_data_vbak.
    *      Form  f_read_data_vbak
    FORM f_read_data_vbak.
      SELECT vkorg kunnr vbeln netwr waerk
        INTO CORRESPONDING FIELDS OF TABLE gt_vbak
          UP TO p_max ROWS
        FROM vbak
       WHERE kunnr IN s_kunnr
         AND vbeln IN s_vbeln
         AND vkorg IN s_vkorg
         and vbtyp = 'C'.                  " C = Sales Orders.
    ENDFORM.                               " F_READ_DATA_VBAK
    *      Form  f_display_data_vbak
    FORM f_display_data_vbak.
      DATA:
        ls_fieldcat TYPE slis_fieldcat_alv,
        lt_fieldcat TYPE slis_t_fieldcat_alv.
    * Build the field catalog
      m_fieldcat 'VKORG' 'VBAK' '' ''.
      m_fieldcat 'KUNNR' 'VBAK' '' ''.
      m_fieldcat 'VBELN' 'VBAK' ''  ''.
      m_fieldcat 'NETWR' 'VBAK' 'WAERK' ''.
      m_fieldcat 'WAERK' 'VBAK' ''  ''.
    * Display the first list
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program      = sy-cprog
          i_callback_user_command = 'USER_COMMAND'
          it_fieldcat             = lt_fieldcat
        TABLES
          t_outtab                = gt_vbak.
    ENDFORM.                               " F_DISPLAY_DATA_VBAK
    *       FORM USER_COMMAND                                             *
    FORM user_command USING u_ucomm     TYPE syucomm
                            us_selfield TYPE slis_selfield.     "#EC CALLED
      CASE u_ucomm.
        WHEN '&IC1'.
          READ TABLE gt_vbak INDEX us_selfield-tabindex INTO gs_vbak.
          CHECK sy-subrc EQ 0.
          PERFORM f_read_data_vbap.        " Read data from VBAP
          PERFORM f_display_data_vbap.
      ENDCASE.
    ENDFORM.                               " USER_COMMAND
    *      Form  f_read_data_vbap
    FORM f_read_data_vbap.
      SELECT vbeln posnr matnr arktx kwmeng vrkme netwr waerk
        INTO CORRESPONDING FIELDS OF TABLE gt_vbap
        FROM vbap
       WHERE vbeln = gs_vbak-vbeln.
    ENDFORM.                               " F_READ_DATA_VBAP
    *      Form  f_display_data_vbap
    FORM f_display_data_vbap.
      DATA:
        ls_fieldcat TYPE slis_fieldcat_alv,
        lt_fieldcat TYPE slis_t_fieldcat_alv.
    * Build the field catalog
      m_fieldcat 'VBELN'  'VBAP' '' ''.
      m_fieldcat 'POSNR'  'VBAP' '' ''.
      m_fieldcat 'MATNR'  'VBAP' '' ''.
      m_fieldcat 'ARKTX'  'VBAP' '' ''.
      m_fieldcat 'KWMENG' 'VBAP' '' 'VRKME'.
      m_fieldcat 'VRKME'  'VBAP' '' ''.
      m_fieldcat 'NETWR'  'VBAP' 'WAERK' ''.
      m_fieldcat 'WAERK'  'VBAP' '' ''.
    * Display the second list
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          it_fieldcat = lt_fieldcat
        TABLES
          t_outtab    = gt_vbap.
    ENDFORM.                               " F_DISPLAY_DATA_VBAP
    2nd example
    * Macro definition
    DEFINE m_fieldcat.
      add 1 to ls_fieldcat-col_pos.
      ls_fieldcat-fieldname   = &1.
      ls_fieldcat-ref_tabname = &2.
      append ls_fieldcat to lt_fieldcat.
    END-OF-DEFINITION.
    TYPE-POOLS: slis.                      " ALV Global types
    SELECTION-SCREEN :
      SKIP, BEGIN OF LINE,COMMENT 5(27) v_1 FOR FIELD p_max.    "#EC NEEDED
    PARAMETERS p_max(2) TYPE n DEFAULT '20' OBLIGATORY.
    SELECTION-SCREEN END OF LINE.
    TYPES:
    * Data displayed in the first list
      BEGIN OF ty_kna1,
        kunnr TYPE kna1-kunnr,             " Customer number
        name1 TYPE kna1-name1,             " Customer name
        ort01 TYPE kna1-ort01,             " Customer city
      END OF ty_kna1,
    * Data displayed in the second list
      BEGIN OF ty_vbak,
        vkorg TYPE vbak-vkorg,             " Sales organization
        kunnr TYPE vbak-kunnr,             " Sold-to party
        vbeln TYPE vbak-vbeln,             " Sales document
        netwr TYPE vbak-netwr,             " Net Value of the Sales Order
      END OF ty_vbak,
    * Data displayed in the third list
      BEGIN OF ty_vbap,
        vbeln  TYPE vbap-vbeln,            " Sales document
        posnr  TYPE vbap-posnr,            " Sales document item
        matnr  TYPE vbap-matnr,            " Material number
        arktx  TYPE vbap-arktx,            " Short text for sales order item
        kwmeng TYPE vbap-kwmeng,           " Order quantity
        netwr  TYPE vbap-netwr,            " Net value of the order item
      END OF ty_vbap.
    DATA:
      gs_kna1 TYPE ty_kna1,
      gt_kna1 TYPE TABLE OF ty_kna1,
      gs_vbak TYPE ty_vbak,
      gt_vbak TYPE TABLE OF ty_vbak,
      gt_vbap TYPE TABLE OF ty_vbap.
    INITIALIZATION.
      v_1 = 'Maximum of records to read'.
    START-OF-SELECTION.
      PERFORM f_read_data_kna1.
    END-OF-SELECTION.
      PERFORM f_display_data_kna1.
    *      Form  f_read_data_kna1
    FORM f_read_data_kna1.
    * Read customer data with a least one order
      SELECT kunnr name1 ort01 INTO TABLE gt_kna1
               FROM kna1 AS k
                 UP TO p_max ROWS
              WHERE EXISTS
           ( SELECT kunnr FROM vbak WHERE kunnr = k~kunnr ).
    ENDFORM.                               " F_READ_DATA_KNA1
    *      Form  f_display_data_kna1
    FORM f_display_data_kna1.
      DATA:
        ls_fieldcat TYPE slis_fieldcat_alv,
        lt_fieldcat TYPE slis_t_fieldcat_alv.
    * Build the field catalog
      m_fieldcat 'KUNNR' 'KNA1'.
      m_fieldcat 'NAME1' 'KNA1'.
      m_fieldcat 'ORT01' 'KNA1'.
    * Display the first list
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program      = sy-cprog
          i_callback_user_command = 'USER_COMMAND_KNA1'
          it_fieldcat             = lt_fieldcat
        TABLES
          t_outtab                = gt_kna1.
    ENDFORM.                               " F_DISPLAY_DATA_KNA1
    *       FORM USER_COMMAND_KNA1                                        *
    FORM user_command_kna1 USING u_ucomm     TYPE sy-ucomm
                                 us_selfield TYPE slis_selfield."#EC CALLED
      CASE u_ucomm.
        WHEN '&IC1'.
          READ TABLE gt_kna1 INDEX us_selfield-tabindex INTO gs_kna1.
          CHECK sy-subrc EQ 0.
          PERFORM f_read_data_vbak.        " Read data from VBAK
          PERFORM f_display_data_vbak.     " Display orders
      ENDCASE.
    ENDFORM.                               " USER_COMMAND_KNA1
    *      Form  f_read_data_vbak
    FORM f_read_data_vbak.
      SELECT vkorg kunnr vbeln netwr
        INTO TABLE gt_vbak
        FROM vbak
          UP TO p_max ROWS
       WHERE kunnr = gs_kna1-kunnr.
    ENDFORM.                               " F_READ_DATA_VBAK
    *      Form  f_display_data_vbak
    FORM f_display_data_vbak.
      DATA:
        ls_fieldcat TYPE slis_fieldcat_alv,
        lt_fieldcat TYPE slis_t_fieldcat_alv.
    * Build the field catalog
      m_fieldcat 'VKORG' 'VBAK'.
      m_fieldcat 'KUNNR' 'VBAK'.
      m_fieldcat 'VBELN' 'VBAK'.
      m_fieldcat 'NETWR' 'VBAK'.
    * Display the second list
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program      = sy-cprog
          i_callback_user_command = 'USER_COMMAND_VBAK'
          it_fieldcat             = lt_fieldcat
        TABLES
          t_outtab                = gt_vbak.
    ENDFORM.                               " F_DISPLAY_DATA_VBAK
    *       FORM USER_COMMAND_VBAK                                        *
    FORM user_command_vbak USING u_ucomm     TYPE sy-ucomm
                                 us_selfield TYPE slis_selfield."#EC CALLED
      CASE u_ucomm.
        WHEN '&IC1'.
          READ TABLE gt_vbak INDEX us_selfield-tabindex INTO gs_vbak.
          CHECK sy-subrc EQ 0.
          PERFORM f_read_data_vbap.        " Read data from VBAP
          PERFORM f_display_data_vbap.     " Display items
      ENDCASE.
    ENDFORM.                               " USER_COMMAND_VBAK
    *      Form  f_read_data_vbap
    FORM f_read_data_vbap.
      SELECT vbeln posnr matnr arktx kwmeng netwr
        INTO TABLE gt_vbap
        FROM vbap
       WHERE vbeln = gs_vbak-vbeln.
    ENDFORM.                               " F_READ_DATA_VBAP
    *      Form  f_display_data_vbap
    FORM f_display_data_vbap.
      DATA:
        ls_fieldcat TYPE slis_fieldcat_alv,
        lt_fieldcat TYPE slis_t_fieldcat_alv.
    * Build the field catalog
      m_fieldcat 'VBELN'  'VBAP'.
      m_fieldcat 'POSNR'  'VBAP'.
      m_fieldcat 'MATNR'  'VBAP'.
      m_fieldcat 'ARKTX'  'VBAP'.
      m_fieldcat 'KWMENG' 'VBAP'.
      m_fieldcat 'NETWR'  'VBAP'.
    * Display the third list
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          it_fieldcat = lt_fieldcat
        TABLES
          t_outtab    = gt_vbap.
    ENDFORM.                               " F_DISPLAY_DATA_VBAP
    3rd Example
    ** Macro definition*
    *DEFINE m_fieldcat.*
      *add 1 to ls_fieldcat-col_pos.*
      *ls_fieldcat-fieldname   = &1.*
      *ls_fieldcat-ref_tabname = &2.*
      *append ls_fieldcat to lt_fieldcat.*
    *END-OF-DEFINITION.*
    *CONSTANTS :*
      *c_x VALUE 'X'.*
    *TYPE-POOLS: slis.                      " ALV Global types*
    *TYPES:*
    ** Data displayed in the first list*
      *BEGIN OF ty_vbak,*
        *vkorg TYPE vbak-vkorg,             " Sales organization*
        *kunnr TYPE vbak-kunnr,             " Sold-to party*
        *vbeln TYPE vbak-vbeln,             " Sales document*
        *netwr TYPE vbak-netwr,             " Net Value of the Sales Order*
      *END OF ty_vbak,*
    ** Data displayed in the popup list*
      *BEGIN OF ty_vbap,*
        *posnr  TYPE vbap-posnr,            " Sales document item*
        *matnr  TYPE vbap-matnr,            " Material number*
        *arktx  TYPE vbap-arktx,            " Short text for sales order item*
        *kwmeng TYPE vbap-kwmeng,           " Order quantity*
        *netwr  TYPE vbap-netwr,            " Net value of the order item*
      *END OF ty_vbap.*
    *DATA :*
      *g_vkorg TYPE vbak-vkorg,*
      *g_kunnr TYPE vbak-kunnr,*
      *g_vbeln TYPE vbak-vbeln,*
      *gt_vbak TYPE TABLE OF ty_vbak,*
      *gt_vbap TYPE TABLE OF ty_vbap.*
    *SELECT-OPTIONS :*
      *s_vkorg FOR g_vkorg,                 " Sales organization*
      *s_kunnr FOR g_kunnr,                 " Sold-to party*
      *s_vbeln FOR g_vbeln.                 " Sales document*
    *SELECTION-SCREEN :*
      *SKIP, BEGIN OF LINE,COMMENT 5(27) v_1 FOR FIELD p_max.    "#EC NEEDED*
    *PARAMETERS p_max(2) TYPE n DEFAULT '20' OBLIGATORY.*
    *SELECTION-SCREEN END OF LINE.*
    *INITIALIZATION.*
      *v_1 = 'Maximum of records to read'.*
    *START-OF-SELECTION.*
      *PERFORM f_read_data_vbak.*
      *PERFORM f_display_data_vbak.*
    **      Form  f_read_data_vbak*
    *FORM f_read_data_vbak.*
      *SELECT vkorg kunnr vbeln netwr*
        *INTO TABLE gt_vbak*
        *FROM vbak*
          *UP TO p_max ROWS*
       *WHERE kunnr IN s_kunnr*
         *AND vbeln IN s_vbeln*
         *AND vkorg IN s_vkorg.*
    *ENDFORM.                               " F_READ_DATA_VBAK*
    **      Form  f_display_data_vbak*
    *FORM f_display_data_vbak.*
      *DATA:*
        *ls_fieldcat TYPE slis_fieldcat_alv,*
        *lt_fieldcat TYPE slis_t_fieldcat_alv.*
    ** Build the field catalog*
      *m_fieldcat 'VKORG' 'VBAK'.*
      *m_fieldcat 'KUNNR' 'VBAK'.*
      *m_fieldcat 'VBELN' 'VBAK'.*
      *m_fieldcat 'NETWR' 'VBAK'.*
    ** Display the first list*
      *CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'*
        *EXPORTING*
          *i_callback_program      = sy-cprog*
          *i_callback_user_command = 'USER_COMMAND'*
          *it_fieldcat             = lt_fieldcat*
        *TABLES*
          *t_outtab                = gt_vbak.*
    *ENDFORM.                               " F_DISPLAY_DATA_VBAK*
    **       FORM USER_COMMAND                                             **
    *FORM user_command USING u_ucomm     TYPE sy-ucomm*
                            *us_selfield TYPE slis_selfield.     "#EC CALLED*
      *DATA:*
        *ls_vbak TYPE ty_vbak.*
      *CASE u_ucomm.*
        *WHEN '&IC1'.*
          *READ TABLE gt_vbak INDEX us_selfield-tabindex INTO ls_vbak.*
          *CHECK sy-subrc EQ 0.*
          *PERFORM f_read_data_vbap         " Read data from VBAP*
            *USING ls_vbak-vbeln.*
          *PERFORM f_display_data_vbap.*
      *ENDCASE.*
    *ENDFORM.                               " USER_COMMAND*
    **      Form  f_read_data_vbap*
    *FORM f_read_data_vbap USING u_vbeln TYPE vbeln_va.*
      *SELECT posnr matnr arktx kwmeng netwr*
        *INTO TABLE gt_vbap*
        *FROM vbap*
       *WHERE vbeln = u_vbeln.*
    *ENDFORM.                               " F_READ_DATA_VBAP*
    **      Form  f_display_data_vbap*
    *FORM f_display_data_vbap.*
      *DATA:*
        *ls_private  TYPE slis_data_caller_exit,*
        *ls_fieldcat TYPE slis_fieldcat_alv,*
        *lt_fieldcat TYPE slis_t_fieldcat_alv.*
    ** Build the field catalog*
      *m_fieldcat 'POSNR'  'VBAP'.*
      *m_fieldcat 'MATNR'  'VBAP'.*
      *m_fieldcat 'ARKTX'  'VBAP'.*
      *m_fieldcat 'KWMENG' 'VBAP'.*
      *m_fieldcat 'NETWR'  'VBAP'.*
      *ls_private-columnopt = c_x.          " Optimize width*
    ** Display items in a POPUP*
      *CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT'*
        *EXPORTING*
          *i_selection = ' '*
          *i_tabname   = 'GT_VBAP'*
          *it_fieldcat = lt_fieldcat*
          *is_private  = ls_private*
        *TABLES*
          *t_outtab    = gt_vbap.*
    *ENDFORM.                               " F_DISPLAY_DATA_VBAP*
    ***************** END OF PROGRAM Z_ALV_GRID_AND_POPUP *******************
    reward if helpful
    raam

Maybe you are looking for

  • How can i update apps purchased on an old apple id

    Ok, so for about 4 years I have been using my husbands apple id on my Mac and iPhone...now with Family Sharing I'm trying to switch both my Mac and iPhone over to my apple id.  The problem is that the apps that were bought with my husbands id will no

  • Can I share my ipod between my work PC and my home Mac?

    I have an iPod mini that i routinely sync with my mac at home. I just started a new job and am foced to use a PC in my office (Windows XP Pro). I want to connect the iPod to my PC and play music off of it, sync contacts, etc. I installed iTunes on th

  • How to Screen Print from Windows 7 in Bootcamp Without "Fn" Key ?

    Dear Friends, For GIS software, I have Windows 7 on my Imac 7, which uses Mac OS X 10.6.8. All of the information which I have found on the Internet about doing a screen print for Windows 7 in Bootcamp on this operating system state that 1. pressing

  • DVD BURNED WON'T PLAY IN DVD PLAYER...HELP!

    EVERY TIME i BURN MY DVD IN STUDIO PRO IT COMES UP "BAD DISK" ON THE TELEVISION SCREEN, BUT WILL PLAY ON COMPUTER DVD PLAYERS...DOES ANYBODY KNOW WHAT I'M DOING WRONG...I'M ON DEADLINE AND IN A FIX!

  • Weblogic exception

    Hi, We are working on a Savvion BPM Tool hosted on Weblogic Application Server (details of the Environment is mentioned below), In the Production we have seen an Exception as below which stopped our Savvion servers and after Restart of the Web Logic