PWM with CompactDAQ 9174 on a DO-Module

Hi all
We did a regulation of peltier elements with PWM with a cRio over FPGA on a DO-Module 9477.
We have now a small project with a CompactDAQ 9174 where we would like to regulate such peltier elements. The Frequenze should be at least 5 kHz.
As I found in the forum and the examples, with the intern counter/timer of the cDAQ9174, it is possible to generate a digital pulse train and with the duty cycle  also a PWM.
e.g.:
http://forums.ni.com/t5/Counter-Timer/Counter-Output-with-NI-cDAQ-9188/m-p/2218208#M10898
http://digital.ni.com/public.nsf/allkb/ADFC4DD8C9690232862575B70079FBD4
What I could not found, is a way to get a generatet PWM-signal out of the intern cDAQ to a DO-Module (S-Serie) such as NI7477. And I do not see the way to do it.
I have to mention, that I'm not a top-programmer, and I'm sure, that there is somone out there, who already has done this.
Thanks in advance for help
Hannes Wydler

Hi Abduelkerim
Thanks for replaying
As far as I see, the forum discussion you mention, talks about measure PWM (Digital IN).
I found an other forum input (how to pwm out on NI-9477):
http://forums.ni.com/t5/Digital-I-O/how-to-pwm-out-on-NI-9477/td-p/624448
There Application engineer Samantha says, the NI9477 is not a "corelated" digital module and therefor it cannot link to the backplane counter of the cDaq. Others DO-modules could do that (like 9401).
But what we need is the high power of the 9477 (1 Amp per channel - I would connect 3 outputs together for my need of 2.5 Amps).
I don't find in the specifications of the different DO-modules if they are "corelated" modules.
It seems, it's not possible what I want to do - a simple direct mode with the cDAQ to supply and regulate peltier elements.
Hannes

Similar Messages

  • Measure PWM with CRIO Module 9403

    Hi,
    I'm trying to measure a PWM signal generated by an absolute encoder. The encoder outputs a PWM with a period of approximately 1000 microseconds. This correlates to about 0.4 deg/microsecond.
    When I run an FPGA code that has a counter that counts ticks while the PWM is high, the counter takes approximately 265 ticks per loop (and increases when other I/O readings are made) - according to the benchmark timer I've incorporated into the code. This means that the loop requires about 6-7 microseconds to take a reading from the DIO. This correlates to a couple of degrees in resolution which is not a good enough for our application to read from the encoder. 
    Is there any way to increase the speed of the FPGA? I've included a screenshot of the FPGA code as well as the project containing the test VI.
    Attachments:
    fpgaproblem.jpg ‏65 KB
    testfpga.zip ‏21 KB

    Hello NIo33,
    Have you benchmark the rate at which the PWM signal is coming in from the NI 9403 module? What type resolution are you trying to achieve? I do not see to many ways to pipeline your FPGA code.
    Paul-B
    Applications Engineer
    National Instruments

  • How to create a trigger using 9211 modules with cDAQ-9174?

    I am trying to create posttriggered acquisition with an analog trigger using 9211 modules that are reading 4 thermocouples.  I would like the data aquisition to start once a temperature of 90 degrees C is reached. I am not sure what I should put for the source of my trigger in my VI.  Are these modules capable of using triggers, and if so, how do I go about creating one?  Attached is the VI, thanks.
    Attachments:
    Thermocouple.vi ‏151 KB

    The 9211 doesn't have any analog triggering capabilities.  You'll have to implement the trigger in SW (like this example).
    Best Regards,
    John Passiak

  • Read duty cycle of a PWM with DAQ

    Hi,
    I am doing a test system and I have several signals that control motors. They use PWM with a max frequency of 5 kHz.
    I would like to know if with a USB DAQ or a PCI DAQ for example PCI-DIO96 could I meassure the duty cycle of these PWM signals. I mean I need to meassure with 10kHz at least.
    Which are the read frequency of these systems?
    Due to the high number of I/O to test I am also thinking of using Compact-RIO with different I/O modules. What do you think?
    Thanks in advance

    If your PWM frequency is 5 kHz and you want to measure duty cycle to 1%, then you need timing resolution of 2 microseconds or faster.
    The USB-6343 has hardware timed DIO at up to 1MHz, so it might be suitable.  There are other devices with hardware timed DIO at rates of 10 MHz or faster as well.
    Before you buy, determine how often you need to measure the duty cycle to make sure the data transfer can keep up.  USB can sometimes be a bottleneck.
    Lynn

  • PWM with a SCXI-1200

    I need to generate a PWM signal with a SCXI-1200 connected to a SCXI-1000 chassis. Any ideas of how to do it? I have a routine to generate a PWM to the PCI-6035E, but not for the SCXI.
    Thank you,
    Guilherme

    Guilherme;
    You can't do PWM with the counter that is on that module. There is only one register on the SCXI-1200 counter. Everything would be very glitchy and ill-timed.
    In case you need to do that on SCXI, you will need a SCXI-1180 feedthrough module. That module allows one to access the unused counters of the DAQ device that controls the SCXI chassis.
    Regards
    Filipe A.
    Applications Engineer
    National Instruments

  • How to delete the row in table control with respect to one field in module pool programming?

    Hi,
    Can I know the way to delete the row in table control with respect to one field in module pool programming
    Regards
    Darshan MS

    HI,
    I want to delete the row after the display of table control. I have created push button as delete row. If I click on this push button, the selected row should get deleted.
    I have written this code,
    module USER_COMMAND_9000 input.
    DATA OK_CODE TYPE SY-UCOMM.
    OK_CODE = SY-UCOMM.
    CASE OK_CODE.
         WHEN 'DELETE'.
            LOOP AT lt_source INTO ls_source WHERE mark = 'X'.
                APPEND LS_SOURCE TO LT_RESTORE.
                DELETE TABLE LT_SOURCE FROM LS_SOURCE.
                SOURCE-LINES = SOURCE-LINES - 1.
            ENDLOOP.
    But I'm unable to delete the selected rows, It is getting deleted the last rows eventhough I select the other row.
    So I thought of doing with respect to the field.

  • How to create a Sales order with ref to Contract using Function Module

    How to create a Sales order with ref to Contract using Function Module BAPI_SALESDOCU_CREATEFROMDATA ?

    We have a unique situation where we like change the sold-to customer of the sales order
    once order has been created. These orders have been created using either by function module
    BAPI_SALESDOCUMENT_COPY or using BDC (VA01, Copy with reference).
    These two processes work abosolutely fine except someone might have change the sold-to
    customer of the ship-to customer of the original sales order. If this the case then the new
    sales order will be created with the old sold-to and with not the new sold-to.
    We tried using BAPI_SALESDOCUMENT_CHANGE and commit afterwards. We checked
    the returned parameteres of the BAPIs and they are all successful but sold-to remains the
    same old one.
    Any help would be much more appreciated.

  • Howt 2 delta with the extractor created on Function Module..

    hi there,
    can anybody tell me how to update delta with the extractor created on Function Module..
    rgds,
    amol

    refer to the document at the below link
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/d3219af2-0c01-0010-71ac-dbb4356cf4bf
    Generic Extractor using FM with Delta Logic
    hope it helps,
    rgs,
    Parth.
    Edited by: Partho Mukherjee on Jan 12, 2009 6:00 PM

  • Generate two alternating PWMs with one counter of 6025E

    I am using LabView 6.0.2 with a PCI-6025E card. My requirement are to put out a pwm signal with 250Hz. The problem is, that for example, first a PWM with exact 100 pulses of duty cycle 1% is needed, after that exact 5 pulses of 10% duty cycle. These two PWMs are repetetive without any big pauses between. I tried this with Pulse Train Generation with "Changing Pulse Specs.llb" from the ni libraries, but the PC based on windows is not able, to do the PWM changes in these exact time slots. Note: The second timer of the card is used for another item.

    Unfortunately, you won't be able to do exactly what you want with a single counter. You'll need to use additional hardware. Here are some possibilities:
    1. Analog Output:
    A 1% duty cycle at 250 Hz requires a minimum of 25 kHz update rate, but your 6025E only goes up to 10 kHz. Your board is also limited by having only 1 DMA channel for Data acq buffered operations, and it may already by used by your other counter's operation.
    If you had an analog board with faster output, you could try to create a buffer with 0 V and 5 V values representing the desired finite pulse train. However, if the device you're controlling with PWM requires TTL edges, the rise and fall times of your DAC output may still not be fast enough to fool it.
    2.
    PCI-6601/6602 Counter/Timer:
    You could use two counters from a 6601 to generate the finite pulse trains you describe, but there would need to be a pause between the the two duty cycles. The pause is where your software detects the end of one finite pulse train and reprograms the counters to generate the other one. The pause might likely vary from 10 to 100 or more msec.
    If that variable dead time between pause trains is acceptable, the 6601 is the cheapest solution I know of for today's application. If you need reuse for future apps, you might want to consider the 6602 for double the price, but a bit more than double the capability.
    3. PCI-6533/6534:
    NI's timed digital boards would allow you to define the pulse trains as a one-bit digital pattern that you could generate continuously. I suspect the 6533 would suffice for the app you describe.
    Please double-check these hw suggestions with your local rep before ordering. (S)he'll know more than me about
    your present-day app and potential future needs. Good luck!
    -Kevin P.

  • PWM with Duty Ration on three LED's - driven in sequence

    Hello
    I write an example of fade-out and fade-in for single LED. A hardware clock which is routed to DO is used. The Diode will constantly fade-out and fade–in where steps and times can be adjusted. For single LED this works perfect. An M or X series DAQ is predicted (USB M 6251 or USB X 6351)
    The problem is that in real application (User Interface (UI) with LCD) a three LED’s will be used, which are connected on three lines and only one LED is active at a time (to reduce the cables two LED’s are connected in opposite direction).  PWM frequency will be 1 kHz and each 10 ms next LED is active (cyclic trough LED each 10 ms:  LED1, LED2, LED3, LED1, LED2, ………….    ……). Schematic is attached and is fixed (also some pushbuttons are connected but they are not relevant at the moment).
    Could you give me some hint or similar example how to transform/multiply this functionality (PWM with Duty ration) to three LED’s (which are works in sequence) with hardware clock of 1 kHz. Timing must be precise, since user should not detect any flickering on UI.
    Attachments:
    3x_PWM_cyclic_V1.vi ‏40 KB
    Schematics_3xLED.PNG ‏26 KB

    Dear RomanP,
    I'd recomend using the X series device for this application, since the STC-3 timing chip enables you to use buffered pulse trains. The idea is that you can use a FIFOto store duty cycle information for every single PWM pulse. The device will use one sample to generate one pulse, then continue on to the next one. This allows you to have three counters working at the sae time with the same clock source, but with a different pwm data (one will always do the fade-in, fade-out routine, the other two can generate a 0 duty cycle signal).
    Here's a community example you can start to work with. Let me know if you have something else in mind.
    Kind regards:
    Andrew Valko
    National Instruments Hungary

  • Is it possible with cDAQ to output PWM-Signal and Digital lines through same module?

    Hello
     I try to output a digital line and a PWM signal through one 9401 module. I use it for actuator control with PWm = speed and digital hig/low = direction.
    In LV, I set up cDAQ/_ctr1, then use channel property outport to set it to e.g. cDAQ/module9401/PFI0.
    But when I start a second task to use PFI1 as digital output on the same module, the vi fails with timeout error.
    Is simultaneous useage possible or will I have to use 2 modules
    Thanks for your insights.
    Michael

    Hi,
    you can upload your LV VI, because I suspect you make a mistake in you're program.
    Best regards
    Marko

  • Measure rpm and PWM signals using digital input of NI9401 module

    Hi, is there a simple way how measure rpm (to 5000 rpm) and PWM (about f=3kHz) signals using digital input of NI9401 (ultrahigh-speed digital I/O)  module plugged in NI 9172 ?  I will wellcome any suggestions and VI examples (bether still). I'm begginer using LView 8.2. I apologize for my poor English. Many thanks.

    Hi CUA,
    Since you have already the right tools, you just need to get started with the software. The NI-9401 will give you access to the counters that are inside the cDAQ chassis 9172.
    You need to place the module in slots 5 or 6. You can read in how they work and how to configure them in the counters section of the user guide found here.
    Now to measure rpm, you can either measure the period of the signal (seconds) and multiply by 60 to have minutes and the number of ticks per revolution. You can find a shipped example to read period called “Meas Dig Freq-Buffered-Cont-Large Range 2 Ctr.vi” found under Hardware Input and Output » DAQmx » Counter Mesurements
    To measure PWM, it is similar procedure and you can read the semiperiod (high time or low time). There is also a shipped example called “Meas Semi-Period.vi” found under the same location.
    There is great information for these kind of task at this page or just post back if you need to.
    Hope this helps.
    Gerardo O.
    RF Systems Engineering
    National Instruments

  • Adobe Premiere Pro CS6 crashes with not finding a capable play module on a windows desktop with a AMD Radeon R9 200 series board.

    I installed Premiere Pro CS 6.0 on a brand new system.
    Win 8.1,
    i7 3.4 GHz on an Asus Sabertooth
    16 Gig memory
    AMD Radeon R9 290 Graphics Board with the latest drivers and Bios.
    On starting Premiere I get the (as I noticed quite frequent appearing) error message that Premiere cannot find a capable play module and the suggestion to update my video drivers.
    I tried everything I found in this forum or on the web:
    Installed the latest drivers
    Run the program as an administrator
    Updated the Graphics board Bios
    Updated Premiere CS6
    Started Gpusniffer in CMD-mode to find out what board it found and added that to the cuda_supported_cards.txt in the Premiere directory.
    All to no avail. The app will simply not start.
    The Gpusniffers report states:
    Loadlibrary “n” failed 
    Loadlibrary “n” failed 
    --- OpenGL Info ---
    Vendor: ATI Technologies Inc.
    Renderer: AMD Radeon R9 200 series
    OpenGL Version: 4.4.13084 Compatability Profile Context 14.301.1001.0
    GLSL Version 4.40
    Monitors: 1
    Monitor 0 properties –
    Size: <0, 0, 1920 1080>
    Mex texture size: 16384
    Support non-power of two: 1
    Shaders 444 :1
    Shaders 422: 1
    Shaders 420: 1
    --- GPU Information Info –
    Did not find any devices that support GPU computation.
    As I invested a lot in the CS6 Master Collection I am not considering an update tot the CC version, also because the same problem occurs in that version too.
    I would be much obliged if someone has an answer that truly will work.  This problem costed me the best part of two days’ work and fouled up my workflow considerably.

    ==========
    I tried to go into display settings and disable the Intel card. (this caused low resolution which is unexceptable)
    ==========
    This makes me think it's using that graphics "card" ( probably built into mobo ? ...called 'onboard graphics ? )
    This stuff gets tricky and sometimes the only way to make windows 'recognize' the pci graphics card is to actually take it out and boot, and then put it back in...
    Then you get mssg " windows detected new hardware" and you install the drivers...
    usually bios gives you choice of using onboard graphics or not ( but this too is wanky sometimes...sorry to say ...)
    I recently ( this past year ) had a similar sort of situation but have a desktop, where its easy for me to take off side panel and pull the pci-e graphics card and boot, and get that horrible low res default screen...turn off, install card, reboot etc...
    but anyway, it sounds to me like you're notebook is using that mobile graphics driver stuff and not the radeon. Somehow you've got to make it switch to that graphics card is maybe your solution.
    sorry I dont have notebook but maybe someone else here does and can help more...
    good luck.
    ps..its always a weird fact of life...when things aren't working 'right' something has to get done fast....
    edit:
    I dont know how much you know about windows stuff, but after you disable that intel thing and get your low res screen.. you DID try to update the driver for that card using 'my computer / device manager  '   right ??

  • Upload data from excel with vba by calling a function module

    Hello all,
    i have a problem with the function module "ALSM_EXCEL_TO_INTERNAL_TABLE". I will call this function module with vba to load data from excel to sap with a Buttonclick. I have copied this function module and set it remotable. But i can´t call it from excel.
    Can you give me some tips how can i
    upload data from excel with vba by click a button.
    The problem seems the function: call method cl_gui_frontend_services=>clipboard_import in the function module, because when i comment this function call the vba-call is true but no results. 
    How can I call the function module correct with vba?
    Thanks a lot for your tips!!!!
    Chris
    Message was edited by:
            Christoph Kirschner

    HI
    Uploading data directly from Excel file format
    * Upload data direct from excel.xls file to SAP
    REPORT ZEXCELUPLOAD.
    PARAMETERS: filename LIKE rlgrap-filename MEMORY ID M01,
                begcol TYPE i DEFAULT 1 NO-DISPLAY,
                begrow TYPE i DEFAULT 1 NO-DISPLAY,
                endcol TYPE i DEFAULT 100 NO-DISPLAY,
                endrow TYPE i DEFAULT 32000 NO-DISPLAY.
    * Tick don't append header
    PARAMETERS: kzheader AS CHECKBOX.
    DATA: BEGIN OF intern OCCURS 0.
            INCLUDE STRUCTURE  alsmex_tabline.
    DATA: END OF intern.
    DATA: BEGIN OF intern1 OCCURS 0.
            INCLUDE STRUCTURE  alsmex_tabline.
    DATA: END OF intern1.
    DATA: BEGIN OF t_col OCCURS 0,
           col LIKE alsmex_tabline-col,
           size TYPE i.
    DATA: END OF t_col.
    DATA: zwlen TYPE i,
          zwlines TYPE i.
    DATA: BEGIN OF fieldnames OCCURS 3,
            title(60),
            table(6),
            field(10),
            kz(1),
          END OF fieldnames.
    * No of columns
    DATA: BEGIN OF data_tab OCCURS 0,
           value_0001(50),
           value_0002(50),
           value_0003(50),
           value_0004(50),
           value_0005(50),
           value_0006(50),
           value_0007(50),
           value_0008(50),
           value_0009(50),
           value_0010(50),
           value_0011(50),
           value_0012(50),
           value_0013(50),
           value_0014(50),
           value_0015(50),
           value_0016(50),
           value_0017(50),
           value_0018(50),
           value_0019(50),
           value_0020(50),
           value_0021(50),
           value_0022(50),
           value_0023(50),
           value_0024(50),
           value_0025(50),
           value_0026(50),
           value_0027(50),
           value_0028(50),
           value_0029(50),
           value_0030(50),
           value_0031(50),
           value_0032(50),
           value_0033(50),
           value_0034(50),
           value_0035(50),
           value_0036(50),
           value_0037(50),
           value_0038(50),
           value_0039(50),
           value_0040(50),
           value_0041(50),
           value_0042(50),
           value_0043(50),
           value_0044(50),
           value_0045(50),
           value_0046(50),
           value_0047(50),
           value_0048(50),
           value_0049(50),
           value_0050(50),
           value_0051(50),
           value_0052(50),
           value_0053(50),
           value_0054(50),
           value_0055(50),
           value_0056(50),
           value_0057(50),
           value_0058(50),
           value_0059(50),
           value_0060(50),
           value_0061(50),
           value_0062(50),
           value_0063(50),
           value_0064(50),
           value_0065(50),
           value_0066(50),
           value_0067(50),
           value_0068(50),
           value_0069(50),
           value_0070(50),
           value_0071(50),
           value_0072(50),
           value_0073(50),
           value_0074(50),
           value_0075(50),
           value_0076(50),
           value_0077(50),
           value_0078(50),
           value_0079(50),
           value_0080(50),
           value_0081(50),
           value_0082(50),
           value_0083(50),
           value_0084(50),
           value_0085(50),
           value_0086(50),
           value_0087(50),
           value_0088(50),
           value_0089(50),
           value_0090(50),
           value_0091(50),
           value_0092(50),
           value_0093(50),
           value_0094(50),
           value_0095(50),
           value_0096(50),
           value_0097(50),
           value_0098(50),
           value_0099(50),
           value_0100(50).
    DATA: END OF data_tab.
    DATA: tind(4) TYPE n.
    DATA: zwfeld(19).
    FIELD-SYMBOLS: <fs1>.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR filename.
      CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
           EXPORTING
                mask      = '*.xls'
                static    = 'X'
           CHANGING
                file_name = filename.
    START-OF-SELECTION.
      CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
           EXPORTING
                filename                = filename
                i_begin_col             = begcol
                i_begin_row             = begrow
                i_end_col               = endcol
                i_end_row               = endrow
           TABLES
                intern                  = intern
           EXCEPTIONS
                inconsistent_parameters = 1
                upload_ole              = 2
                OTHERS                  = 3.
      IF sy-subrc <> 0.
        WRITE:/ 'Upload Error ', SY-SUBRC.
      ENDIF.
    END-OF-SELECTION.
      LOOP AT intern.
        intern1 = intern.
        CLEAR intern1-row.
        APPEND intern1.
      ENDLOOP.
      SORT intern1 BY col.
      LOOP AT intern1.
        AT NEW col.
          t_col-col = intern1-col.
          APPEND t_col.
        ENDAT.
        zwlen = strlen( intern1-value ).
        READ TABLE t_col WITH KEY col = intern1-col.
        IF sy-subrc EQ 0.
          IF zwlen > t_col-size.
            t_col-size = zwlen.
    *                          Internal Table, Current Row Index
            MODIFY t_col INDEX sy-tabix.
          ENDIF.
        ENDIF.
      ENDLOOP.
      DESCRIBE TABLE t_col LINES zwlines.
      SORT intern BY row col.
      IF kzheader = 'X'.
        LOOP AT intern.
          fieldnames-title = intern-value.
          APPEND fieldnames.
          AT END OF row.
            EXIT.
          ENDAT.
        ENDLOOP.
      ELSE.
        DO zwlines TIMES.
          WRITE sy-index TO fieldnames-title.
          APPEND fieldnames.
        ENDDO.
      ENDIF.
      SORT intern BY row col.
      LOOP AT intern.
        IF kzheader = 'X'
        AND intern-row = 1.
          CONTINUE.
        ENDIF.
        tind = intern-col.
        CONCATENATE 'DATA_TAB-VALUE_' tind INTO zwfeld.
        ASSIGN (zwfeld) TO <fs1>.
        <fs1> = intern-value.
        AT END OF row.
          APPEND data_tab.
          CLEAR data_tab.
        ENDAT.
      ENDLOOP.
      CALL FUNCTION 'DISPLAY_BASIC_LIST'
           EXPORTING
                file_name     = filename
           TABLES
                data_tab      = data_tab
                fieldname_tab = fieldnames.
    *-- End of Program
    <b>Excel Upload Alternative - KCD_EXCEL_OLE_TO_INT_CONVERT</b>
    *Title : Excel Uploading
    TYPES:   BEGIN OF t_datatab,
             col1(25)  TYPE c,
             col2(30)  TYPE c,
             col3(30)  TYPE c,
             col4(30)  TYPE c,
             col5(30)  TYPE c,
             col6(30)  TYPE c,
             col7(30) TYPE c,
             col8(30)  TYPE c,
             col9(30)  TYPE c,
             col10(30)  TYPE c,
             col11(30)    TYPE c,
           END OF t_datatab.
    DATA: it_datatab TYPE STANDARD TABLE OF t_datatab INITIAL SIZE 0,
          wa_datatab TYPE t_datatab.
    Data : p_table type t_datatab occurs 0 with header line.
    DATA : gd_scol   TYPE i VALUE '1',
           gd_srow   TYPE i VALUE '1',
           gd_ecol   TYPE i VALUE '256',
           gd_erow   TYPE i VALUE '65536'.
    DATA: it_tab TYPE filetable,
          gd_subrc TYPE i.
    field-symbols : <fs>.
    *Selection screen definition
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
    PARAMETERS:  p_file LIKE rlgrap-filename
                   DEFAULT 'c:test.xls' OBLIGATORY.   " File Name
    SELECTION-SCREEN END OF BLOCK b1.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
      REFRESH: it_tab.
      CALL METHOD cl_gui_frontend_services=>file_open_dialog
        EXPORTING
          window_title     = 'Select File'
          default_filename = '*.xls'
          multiselection   = ' '
        CHANGING
          file_table       = it_tab
          rc               = gd_subrc.
      LOOP AT it_tab INTO p_file.
    *    so_fpath-sign = 'I'.
    *    so_fpath-option = 'EQ'.
    *    append so_fpath.
      ENDLOOP.
    START-OF-SELECTION.
      PERFORM upload_excel_file TABLES   it_datatab
                                 USING   p_file
                                         gd_scol
                                         gd_srow
                                         gd_ecol
                                         gd_erow.
    * END-OF-SELECTION.
    END-OF-SELECTION.
      LOOP AT it_datatab INTO wa_datatab.
        WRITE:/ wa_datatab-col1,
                wa_datatab-col2,
                wa_datatab-col3,
                wa_datatab-col4,
                wa_datatab-col5,
                wa_datatab-col6,
                wa_datatab-col7,
                wa_datatab-col8,
                wa_datatab-col9,
                wa_datatab-col10,
                wa_datatab-col11.
      ENDLOOP.
    *&      Form  UPLOAD_EXCEL_FILE
    *       upload excel spreadsheet into internal table
    *      -->P_TABLE    Table to return excel data into
    *      -->P_FILE     file name and path
    *      -->P_SCOL     start column
    *      -->P_SROW     start row
    *      -->P_ECOL     end column
    *      -->P_EROW     end row
    FORM upload_excel_file TABLES   p_table
                           USING    p_file
                                    p_scol
                                    p_srow
                                    p_ecol
                                    p_erow.
      DATA : lt_intern TYPE  kcde_cells OCCURS 0 WITH HEADER LINE.
    * Has the following format:
    *             Row number   | Colum Number   |   Value
    *      i.e.     1                 1             Name1
    *               2                 1             Joe
      DATA : ld_index TYPE i.
    * Note: Alternative function module - 'ALSM_EXCEL_TO_INTERNAL_TABLE'
      CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT'
        EXPORTING
          filename                = p_file
          i_begin_col             = p_scol
          i_begin_row             = p_srow
          i_end_col               = p_ecol
          i_end_row               = p_erow
        TABLES
          intern                  = LT_INTERN
        EXCEPTIONS
          inconsistent_parameters = 1
          upload_ole              = 2
          OTHERS                  = 3.
      IF sy-subrc <> 0.
        FORMAT COLOR COL_BACKGROUND INTENSIFIED.
        WRITE:/ 'Error Uploading file'.
        EXIT.
      ENDIF.
      IF lt_intern[] IS INITIAL.
        FORMAT COLOR COL_BACKGROUND INTENSIFIED.
        WRITE:/ 'No Data Uploaded'.
        EXIT.
      ELSE.
        SORT lt_intern BY row col.
        LOOP AT lt_intern.
         MOVE lt_intern-col TO ld_index.
         assign component ld_index of structure
         p_table to <fs>.
    move : lt_intern-value to <fs>.
    *     MOVE lt_intern-value TO p_table.
          AT END OF row.
            APPEND p_table.
            CLEAR p_table.
          ENDAT.
        ENDLOOP.
      ENDIF.
    ENDFORM.                    "UPLOAD_EXCEL_FILE
    Regards
    Pavan

  • How can you develop photo galleries with multiple pages using the web module?

    Going through the web module I can see there are many options for developing a web page with a single collection of photos.  How can you develop a web site with multiple pages containing different categories of photos using the Lightroom web module?

    This thread will give you several ideas.
    Re: How do you embed a gallery into an existing website?

Maybe you are looking for