Rampe delta variable

Bonjour,
D’après ce que je sais, la sous-VI de LabVIEW qui nous génère un motif de rampe peut le faire à la base, soit avec un nombre d’échantillon, soit avec un delta.
Donc, toujours, nous aurons une rampe qui tient ses éléments également espacés.
Mon problème ce que je dois générer une rampe qui possède les deltas dedans l’écart, variables. Pour cela, j’ai le premier élément, le dernier ainsi que le nombre d’échantillons, et l’information du delta pour les premières valeurs et pour les dernières valeurs (le delta pour les valeurs au milieu de cet écart doit être plus au moins une moyenne des deltas de l’extrémité).
Par exemple : Je sais que le première élément doit être 5, et le dernière 355. Les premiers éléments avec un delta de 5 et les dernières avec un delta de 10, au milieu, un delta moyen à peu près, (tout en sachant le nombre d’échantillon total).
Donc, on aura :
5, 10, 15, … 200, 207.5, 215, …. 335, 345, 355.
Ce qui serait superbe, ce d’avoir une transition entre les des deltas continus (avec un incrément tout petit), comme cela :
5, 10.4, 16, … 200, 207.5, 215.6, …. 333,8, 344,5, 355.
N’hésitez pas à me faire des corrections, je suis tout débutant.. =)
Je vous remercie pour toute l’attention.
Cabral

Bonjour Cabral,
Hélas créer un delta modulable pour une rampe n'est pas du tout quelque chose d'immédiat. La meilleure solution serait de découper la rampe initiale et d'en faire des rampes continues par morceau dont le Delta est fixe sur chaque "segment".
J'ai quand même été plus loin et propose ici une version polynomiale de la rampe. Le polynôme est d'ordre 2 ici mais on peut facilement reprendre le principe pour avoir un ordre plus élevé.
On a les même paramètres de rampe (init, final, et step), plus la force du polynôme entre 0 et 1. Une valeur de 0.5 donne une rampe linéaire. Plus on s'éloigne de cette valeur, plus la différence à mi-chemin entre la rampe linéaire et le polynôme est élevée. Attention à ne pas dépasser les 0.2 et 0.8 car on n'a plus une monotonie du motif.
Derrière, le calcul est marticielle/polynomiale donc ce n'est pas chose aisée, comme dit en début de poste.
Cdt,
Eric
Eric M. - Application Engineering Specialist
Certified LabVIEW Architect
Certified LabWindows™/CVI Developer
Pièces jointes :
Progressive_Ramp.vi ‏21 KB

Similar Messages

  • Getting the number of GMT + x

    I need to get the timezone which is configured in the telephone.
    the code that I wrote doesn't work:
             long localTime = System.currentTimeMillis();
            dt.setTime(localTime);
            TimeZone tz = calendar.getTimeZone();
            short delta = (short) tz.getRawOffset();I thought the delta variable will get value like:
    1 - for GMT+1
    2 - for GMT +2
    etc, but it doesn't...
    how can I get the let say 'delta' which is the number of hours different from GMT (0). ?
    Edited by: bart666 on Jul 26, 2008 6:30 PM

    Thank you both. After adesklets were mentioned I remebered that gkrellm had some mail check functionality and looked into that. Unfortunately I couldn't get it to do what I want.
    However I did manage to cook up a small python script that checks the mail and handles the LED. Why didn't I think of this? Now I also have the added bonus of not having to keep the mail client running all the time.
    Yay!

  • Problem with notebook fan!?

    Hello, i have bought HP 2000-2b43dx before 15 days and I am sneaking suspicion there is problem wih fan/vent on my notebook.
    When I turned my notebook first time, and next 2-3 days, my fan was so silence that i couldnt hear his work so its normal because when I turn notebook there is no hard operations that fan needs to cooling components.
    After using my notebook for 3-4 days I noticed that my fan start cooling immediately when i turn notebook and fan is no longer silent like first 2-3 days. So, my fan is always cooling, i can feel and hear it, no matter what i am doing on my notebook. When I closed all my apps, the fan is still cooling for long time. is it normal if I use notebook only for internet and we know that internet doesnt cause components to be heat.
    i have one pic from user manaul, where we can see that fan needs to cycle on and off during routine operation, but my fan is almost always ON. Here is pic
    This question was solved.
    View Solution.

    Having the fan come on is generally automatic. It depends on the notebook as far as which utility controls the cooling fan.  My current  product loaner HP Envy17-3002ea notebook has HP CoolSense, but not all notebooks have it. Some notebook's cooling is  controlled by an algorithm in the BIOS ROM that is based on the  temperature ramp (delta) in the system board and CPU. 
    The fan come on when your notebook starts up  is quite normal. If the temperature gets too hot the the CPU will shut itself down as a self protective measure.  There are a number of utility programs one can use if one is a bit paraniod about a notebook's CPU temperature, but generally speaking, there isn't  really much to worry about.   
    Best regards,
    erico 
    ****Please click on Accept As Solution if a suggestion solves your problem. It helps others facing the same problem to find a solution easily****
    2015 Microsoft MVP - Windows Experience Consumer

  • Pseudo delta with ABAP or OLAP variables

    Hey gurus!
    Since I have to post my first question at SDN one day, it may better be now! I'm rather new to SAP BI, therefore your help is requested:
    I'm currently implementing a pseudo delta, a full data load from ODS to ODS and subsequently ODS to Cube. The data requested should consist of yesterdays records, which was relatively easy in SAP BW 3.5.
    Since it is not possible anymore to, and I quote, choose one of the following selections in the Type (Variable Changing of Selections with Background Processing) entry column from the Data Selection tab page (numbers 0-7, 0 is required), I can now only solve it with creating another OLAP variable or ABAP coding.
    Is there anyone that can give me some advice or provide me with some basic ABAP coding which selects data from 'yesterday?'
    Your help is appreciated!
    Regards,
    Joost

    Thanks for your reply Pom!
    I'm not sure where to insert the '0' as type in my case. I've created a data transfer process instead of an infopackage now, but when setting up my filter there is nowhere to select the type. Or do I have to create an 'old fashioned' infopackage?!
    Your help is appreciated, please provide some directions.
    Regards,
    Joost

  • Copy and Paste Variable Speed Ramp Curves?

    Is there any way to copy and paste variable speed ramp curves from one shot to another.
    I've got a rough cut with lots of speed ramps, and now I have to conform renders that came back from Color (pre-prepped with out ramps) to the offline with the same frame ramps.
    I can't seem to do it any other way than by eye match, which is less than great.

    Right click a clip in the Timeline that has the settings you want to transfer. Choose Copy.
    Right click a clip in the Timeline that you want to transfer the settings to. Choose *Paste Attributes > Speed.*

  • MOTIF RAMPE

    Bonjour,
    D’après ce que je sais, la sous-VI de LabVIEW qui nous génère un motif de rampe peut le faire à la base, soit avec un nombre d’échantillon, soit avec un delta.
    Donc, toujours, nous aurons une rampe qui tient ses éléments également espacés.
    Mon problème ce que je dois générer une rampe qui possède les deltas dedans l’écart, variables. Pour cela, j’ai le premier élément, le dernier ainsi que le nombre d’échantillons, et l’information du delta pour les premières valeurs et pour les dernières valeurs (le delta pour les valeurs au milieu de cet écart doit être plus au moins une moyenne des deltas de l’extrémité).
    Par exemple : Je sais que le première élément doit être 5, et le dernière 355. Les premiers éléments avec un delta de 5 et les dernières avec un delta de 10, au milieu, un delta moyen à peu près, (tout en sachant le nombre d’échantillon total). Donc, on aura :
    5, 10, 15, … 200, 207.5, 215, …. 335, 345, 355.
    Ce qui serait superbe, ce d’avoir une transition entre les des deltas continus (avec un incrément tout petit), comme cela :
    5, 10.4, 16, … 200, 207.5, 215.6, …. 333,8, 344,5, 355.
    N’hésitez pas à me faire des corrections, je suis tout débutant.. =)
    Je vous remercie pour toute l’attention.
    Cabral
    Solved!
    Go to Solution.

    Let's say we take your numbers and you want a fixed delta of 7.5 (the average of 5 and 10) with a range from 5 through 355.  Either the final value will not be equal to 355, or the final delta will not be equal to 7.5, because you cannot divide 350 by 7.5  You have the same problem with a variable range, because the average delta will still be the same.  So, you will need to make a decision.  Which is more important, the start and end points or the delta values?
    Here is one possible solution, assuming that the end points are more important than the deltas.  It adjusts the delta values to get a whole number of steps.

  • Error while assigning Payload to container variable, Activate SXI_Cache

    Hi experts,
    I have a BPM-Szenario. There is a ContainerOperation where I want to fill a Container Variable with a Payload variable. Unfourtunately I get an error in TA sxi_cache: "The value of expression "&.....&" cannot serve as the source of an Assignment.
    My question is, is it really unpossible to do this?
    By the way: After them my bpm in sxi_cache is blocked. Also if i delete the container operation it is a lot of luck to activate my bpm.
    My actions to activate the BPM are:
    IR - F7 = all is ok
    ID - Delete IP and Create the IP new
    SLD-Cache - Activate in IR and ID
    SXI_Cache - Delta and Full Cache Refresh
    TA SWWL - There are no error work items
    All actions do have no influence to the sxi_cache.
    Are there any ideas from the experts?
    Best
    Mathias

    Hello Mathias,
    How do you assign the container varaible? Are you sure, that your XPath-expression is correct? Is your target container a simple typed container?
    Best regards
    Joachim

  • Unable to get delta observation,

    i am trying get delta records from ztable based on time stamp with 900sec lower timestamp,,,,,,,,,,
    please correct my code,
    Example: DataSource for table SFLIGHT
      TABLES: zsales_order1.
    Auxiliary Selection criteria structure
      DATA: l_s_select TYPE srsc_s_select.
    Maximum number of lines for DB table
      STATICS: s_s_if TYPE srsc_s_if_simple,
    counter
              s_counter_datapakid LIKE sy-tabix,
    cursor
              s_cursor TYPE cursor.
    Select ranges
      RANGES: l_r_zvbeln FOR zsales_order1-zvbeln,
              l_r_zerdat FOR zsales_order1-zerdat,
              l_r_zerzet FOR zsales_order1-zerzet,
              l_r_ztimestamp FOR zsales_order1-ztimestamp.
      DATA : startdate TYPE sy-datum,
             starttime TYPE sy-uzeit,
             enddate TYPE sy-datum,
             endtime TYPE sy-uzeit,
             timestamp TYPE tzonref-tstamps.
    Initialization mode (first call by SAPI) or data transfer mode
    (following calls) ?
      IF i_initflag = sbiwa_c_flag_on.
    Initialization: check input parameters
                    buffer input parameters
                    prepare data selection
    Check DataSource validity
        CASE i_dsource.
          WHEN 'ZSALES_ORDER_FUN1'.
          WHEN OTHERS.
            IF 1 = 2.
              MESSAGE e009(r3).
            ENDIF.
    this is a typical log call. Please write every error message like this
            log_write 'E'                  "message type
                      'R3'                 "message class
                      '009'                "message number
                      i_dsource   "message variable 1
                      ' '.                 "message variable 2
            RAISE error_passed_to_mess_handler.
        ENDCASE.
        APPEND LINES OF i_t_select TO s_s_if-t_select.
    Fill parameter buffer for data extraction calls
        s_s_if-requnr    = i_requnr.
        s_s_if-dsource = i_dsource.
        s_s_if-maxsize   = i_maxsize.
    Fill field list table for an optimized select statement
    (in case that there is no 1:1 relation between InfoSource fields
    and database table fields this may be far from beeing trivial)
        APPEND LINES OF i_t_fields TO s_s_if-t_fields.
      ELSE.                 "Initialization mode or data extraction ?
    Data transfer: First Call      OPEN CURSOR + FETCH
                   Following Calls FETCH only
    First data package -> OPEN CURSOR
        IF s_counter_datapakid = 0.
    Fill range tables BW will only pass down simple selection criteria
    of the type SIGN = 'I' and OPTION = 'EQ' or OPTION = 'BT'.
          LOOP AT s_s_if-t_select INTO l_s_select WHERE fieldnm = 'ZVBELN'.
            MOVE-CORRESPONDING l_s_select TO l_r_zvbeln.
            APPEND l_r_zvbeln.
           LOOP AT s_s_if-t_select INTO l_s_select WHERE fieldnm = 'ZERDAT'.
              MOVE-CORRESPONDING l_s_select TO l_r_zerdat.
              APPEND l_r_zerdat.
           LOOP AT s_s_if-t_select INTO l_s_select WHERE fieldnm = 'ZERZET'.
                MOVE-CORRESPONDING l_s_select TO l_r_zerzet.
                APPEND l_r_zerzet.
       LOOP AT s_s_if-t_select INTO l_s_select WHERE fieldnm = 'ZTIMESTAMP'.
                  timestamp = l_s_select-low.
                  CONVERT TIME STAMP timestamp
                  TIME ZONE sy-zonlo INTO DATE startdate TIME starttime.
                  timestamp = l_s_select-high.
                  CONVERT TIME STAMP timestamp
                  TIME ZONE sy-zonlo INTO DATE enddate TIME endtime.
                  l_r_zerdat-low = startdate.
                  l_r_zerdat-sign = l_s_select-sign.
                  l_r_zerdat-option = l_s_select-option.
                  l_r_zerdat-high = enddate.
                  APPEND l_r_zerdat.
                  l_r_zerzet-low = starttime.
                  l_r_zerzet-sign = l_s_select-sign.
                  l_r_zerzet-option = l_s_select-option.
                  l_r_zerzet-high = endtime.
                  APPEND l_r_zerzet.
                ENDLOOP.
              ENDLOOP.
            ENDLOOP.
          ENDLOOP.
    Determine number of database records to be read per FETCH statement
    from input parameter I_MAXSIZE. If there is a one to one relation
    between DataSource table lines and database entries, this is trivial.
    In other cases, it may be impossible and some estimated value has to
    be determined.
          OPEN CURSOR WITH HOLD s_cursor FOR
          SELECT zvbeln
    zerdat
    zerzet
    zland1
    zkunnr
    zlgort
    zposnv
    zmatnr
    znetpr
    waerk
    zkpein
    zkmein
    zarktx
    zstadat
    zaedat
    zaezet
    ztimestamp FROM zsales_order1 WHERE zvbeln IN l_r_zvbeln
                                  AND zerdat IN l_r_zerdat
                                  AND zerzet IN l_r_zerzet
                                  AND (
          ( zerdat >= startdate AND ( zerzet >= starttime     OR
          ( zerdat <= enddate   AND   zerzet <= endtime ) ) ) OR
          ( zaedat >= startdate AND ( zaezet >= starttime     OR
          ( zaedat <= enddate   AND   zaezet <= endtime ) ) )
        ENDIF.                             "First data package ?
    Fetch records into interface table.
      named E_T_'Name of extract structure'.
        FETCH NEXT CURSOR s_cursor
                   APPENDING CORRESPONDING FIELDS
                   OF TABLE e_t_data
                   PACKAGE SIZE s_s_if-maxsize.
        IF sy-subrc <> 0.
          CLOSE CURSOR s_cursor.
          RAISE no_more_data.
        ENDIF.
        s_counter_datapakid = s_counter_datapakid + 1.
      ENDIF.              "Initialization mode or data extraction ?
    ENDFUNCTION.
    thanks in advance

    As per the description of this forum at the top of the page I do not think this is posted correctly:
    This forum is dedicated to all other development-related questions which are not directly addressed by other forums. This includes Business Objects SDKs, products, or technologies which do not fall under BusinessObjects Enterprise, BusinessObjects Edge, Crystal Reports Server, or Crystal Reports (for example Desktop Intelligence SDK, Universe Designer SDK, Portal Integration Kits, Java User Function Libraries, and other third party technologies or development languages).
    - Ludek

  • I_UPDMODE has no value in my Function Module when using Delta Extraction

    Help me please.
    My system is BW 3.52
    Please see the source code below and tell me why I_UPDMODE has not been passed value. I have ever used "I_SOURCE" but the value pass to I_DSOURCE. Can anyone tell me where is the upload mode pass to?
    FUNCTION ZBWFN_TEST_DELTA.
    ""Local Interface:
    *"  IMPORTING
    *"     VALUE(I_REQUNR) TYPE  SBIWA_S_INTERFACE-REQUNR
    *"     VALUE(I_DSOURCE) TYPE  SBIWA_S_INTERFACE-ISOURCE OPTIONAL
    *"     VALUE(I_MAXSIZE) TYPE  SBIWA_S_INTERFACE-MAXSIZE OPTIONAL
    *"     VALUE(I_INITFLAG) TYPE  SBIWA_S_INTERFACE-INITFLAG OPTIONAL
    *"     VALUE(I_UPDMODE) TYPE  SBIWA_S_INTERFACE-UPDMODE OPTIONAL
    *"     VALUE(I_DATAPAKID) TYPE  SBIWA_S_INTERFACE-DATAPAKID OPTIONAL
    *"     VALUE(I_RLOGSYS) TYPE  SRSC_S_INTERFACE-RLOGSYS OPTIONAL
    *"     VALUE(I_READ_ONLY) TYPE  SRSC_S_INTERFACE-READONLY OPTIONAL
    *"  TABLES
    *"      I_T_SELECT TYPE  SBIWA_T_SELECT OPTIONAL
    *"      I_T_FIELDS TYPE  SBIWA_T_FIELDS OPTIONAL
    *"      E_T_DATA STRUCTURE  ZISU_ERCHC OPTIONAL
    *"  EXCEPTIONS
    *"      NO_MORE_DATA
    *"      ERROR_PASSED_TO_MESS_HANDLER
    This extractor is part of a delta scenario based on a timestamp
    included in the fields of table ROVERCUBE1. The interesting part
    takes place in form get_time_interval, where the date range is
    calculated update modespecifically.
    The pointer for the date up to which delta was extracted during
    the last delta update is held in table ROBWQTSTAT.
      TABLES: ZISU_TP_ERCHC, ERCH, ERCHC.
    Auxiliary Selection criteria structure
      DATA: L_S_SELECT TYPE SBIWA_S_SELECT.
      DATA: L_ERCHC LIKE ZISU_TP_ERCHC OCCURS 0 WITH HEADER LINE.
      DATA: L_DATE LIKE SY-DATUM,
                L_ACTUAL_DATE LIKE SY-DATUM,
                L_LAST_DATE LIKE SY-DATUM.
    Maximum number of lines for DB table
      STATICS: L_MAXSIZE TYPE SBIWA_S_INTERFACE-MAXSIZE,
               BEGIN OF S_S_INTERFACE.
      INCLUDE TYPE SBIWA_S_INTERFACE.
      INCLUDE TYPE SRSC_S_INTERFACE.
      STATICS: END OF S_S_INTERFACE.
    STATICS: BEGIN OF S_R_TSTMP OCCURS 1,
                SIGN(1),
                OPTION(2),
                LOW  LIKE ROVERCUBE1-TSTMP,
                HIGH LIKE ROVERCUBE1-TSTMP,
              END   OF S_R_TSTMP.
    Initialization mode (first call by SAPI) or data transfer mode
    (following calls) ?
      IF I_INITFLAG = SBIWA_C_FLAG_ON.
    Invalid second initialization call -> error exit
        IF NOT G_FLAG_INTERFACE_INITIALIZED IS INITIAL.
          IF 1 = 2. MESSAGE E008(R3). ENDIF.
          LOG_WRITE 'E'                    "message type
                    'R3'                   "message class
                    '008'                  "message number
                    ' '                    "message variable 1
                    ' '.                   "message variable 2
          RAISE ERROR_PASSED_TO_MESS_HANDLER.
        ENDIF.
    Check DataSource validity
        CASE I_DSOURCE.
          WHEN 'ZOVER_TRANS'.
          WHEN 'TEST_ROVERCUBE'.
          WHEN 'DO_DATASOURCE'.
          WHEN '0VER_DELTA_WITH_LONG_NAME'.
          WHEN '0VER_CUBE_OLD_LIS'.
          WHEN '0VER_TYPE_ATTR'.
          WHEN OTHERS.
            IF 1 = 2. MESSAGE E009(R3). ENDIF.
            LOG_WRITE 'E'                  "message type
                      'R3'                 "message class
                      '009'                "message number
                      I_DSOURCE            "message variable 1
                      ' '.                 "message variable 2
            RAISE ERROR_PASSED_TO_MESS_HANDLER.
        ENDCASE.
    Check for supported update mode
        CASE I_UPDMODE.
          WHEN 'F'.
          WHEN 'D'.
          WHEN 'C'.
          WHEN 'R'.
          WHEN 'S'.
          WHEN OTHERS.
            IF 1 = 2. MESSAGE E011(R3). ENDIF.
            LOG_WRITE 'E'                  "message type
                      'R3'                 "message class
                      '011'                "message number
                      I_UPDMODE            "message variable 1
                      ' '.                 "message variable 2
            RAISE ERROR_PASSED_TO_MESS_HANDLER.
        ENDCASE.
        APPEND LINES OF I_T_SELECT TO G_T_SELECT.
    Fill parameter buffer for data extraction calls
        S_S_INTERFACE-REQUNR    = I_REQUNR.
        S_S_INTERFACE-ISOURCE   = I_DSOURCE.
        S_S_INTERFACE-MAXSIZE   = I_MAXSIZE.
        S_S_INTERFACE-INITFLAG  = I_INITFLAG.
        S_S_INTERFACE-UPDMODE   = I_UPDMODE.
        S_S_INTERFACE-RLOGSYS   = I_RLOGSYS.
        S_S_INTERFACE-READONLY  = I_READ_ONLY.
        G_FLAG_INTERFACE_INITIALIZED = SBIWA_C_FLAG_ON.
        APPEND LINES OF I_T_FIELDS TO G_T_FIELDS.
    here the timerange for update modes concerning delta is calculated
    and the status table is updated
        PERFORM GET_CAL_INTERVAL TABLES G_R_DELTA_DATE[]
                                  USING  S_S_INTERFACE-ISOURCE
                                             S_S_INTERFACE-UPDMODE
                                             S_S_INTERFACE-RLOGSYS.
      ELSE.                 "Initialization mode or data extraction ?
    Data transfer: First Call      calcualte range tables for key fields
                                   calculate date range due to update mode
                                   OPEN CURSOR + FETCH
                   Following Calls FETCH only
    First data package -> OPEN CURSOR
        G_COUNTER_DATAPAKID = G_COUNTER_DATAPAKID + 1.
        IF G_COUNTER_DATAPAKID = 1.
    Fill range tables.
         LOOP AT G_T_SELECT INTO L_S_SELECT WHERE FIELDNM = 'COUNTRY'.
           MOVE-CORRESPONDING L_S_SELECT TO L_R_COUNTRY.
           APPEND L_R_COUNTRY.
         ENDLOOP.
         LOOP AT G_T_SELECT INTO L_S_SELECT WHERE FIELDNM = 'REGION'.
           MOVE-CORRESPONDING L_S_SELECT TO L_R_REGION.
           APPEND L_R_REGION.
         ENDLOOP.
         LOOP AT G_T_SELECT INTO L_S_SELECT WHERE FIELDNM = 'KUNNR'.
           MOVE-CORRESPONDING L_S_SELECT TO L_R_KUNNR.
           APPEND L_R_KUNNR.
         ENDLOOP.
         LOOP AT G_T_SELECT INTO L_S_SELECT WHERE FIELDNM = 'TYPE'.
           MOVE-CORRESPONDING L_S_SELECT TO L_R_TYPE.
           APPEND L_R_TYPE.
         ENDLOOP.
         LOOP AT G_T_SELECT INTO L_S_SELECT WHERE FIELDNM = 'GJAHR'.
           MOVE-CORRESPONDING L_S_SELECT TO L_R_GJAHR.
           APPEND L_R_GJAHR.
         ENDLOOP.
    no data must be selected in Init simulation mode
          CHECK S_S_INTERFACE-UPDMODE NE SRSC_C_UPDMODE_INITSIMU.
    Determine number of database records to be read per FETCH statement
    from input parameter I_MAXSIZE.
          L_MAXSIZE = G_S_INTERFACE-MAXSIZE.
          REFRESH: L_ERCHC.
          SELECT * FROM ERCH WHERE ERDAT IN G_R_DELTA_DATE
                                          OR AEDAT IN G_R_DELTA_DATE.
            SELECT SINGLE * FROM ERCHC WHERE BELNR = ERCH-BELNR.
            IF SY-SUBRC = 0.
              CLEAR: L_ERCHC.
              L_ERCHC-BUKRS = ERCH-BUKRS.
              L_ERCHC-ABRVORG = ERCH-ABRVORG.
              L_ERCHC-PORTION = ERCH-PORTION.
              L_ERCHC-GPARTNER = ERCH-GPARTNER.
              IF ERCHC-CPUDT IN G_R_DELTA_DATE.
                L_ERCHC-DELDT = ERCHC-CPUDT.
                L_ERCHC-DOCDT = ERCHC-BUDAT.
                L_ERCHC-RELNO = 1.
                COLLECT L_ERCHC.
              ENDIF.
              IF ERCHC-INTCPUDT IN G_R_DELTA_DATE AND
                 ERCHC-INTCPUDT IS NOT INITIAL.
                L_ERCHC-DELDT = ERCHC-INTCPUDT.
                L_ERCHC-DOCDT = ERCHC-INTBUDAT.
                L_ERCHC-REVNO = 1.
                COLLECT L_ERCHC.
              ENDIF.
            ENDIF.
          ENDSELECT.
          DELETE FROM ZISU_TP_ERCHC.
          LOOP AT L_ERCHC.
            MOVE-CORRESPONDING L_ERCHC TO ZISU_TP_ERCHC.
            INSERT ZISU_TP_ERCHC.
          ENDLOOP.
          OPEN CURSOR WITH HOLD G_CURSOR FOR
          SELECT * FROM ZISU_TP_ERCHC.
        ENDIF.                             "First data package ?
        IF S_S_INTERFACE-UPDMODE = SRSC_C_UPDMODE_INITSIMU.
          RAISE NO_MORE_DATA.
        ENDIF.
    Fetch records into interface table.
        FETCH NEXT CURSOR G_CURSOR
                   APPENDING CORRESPONDING FIELDS OF TABLE E_T_DATA
                   PACKAGE SIZE  S_S_INTERFACE-MAXSIZE.
        IF SY-SUBRC <> 0.
          RAISE NO_MORE_DATA.
        ENDIF.
      ENDIF.              "Initialization mode or data extraction ?
    ENDFUNCTION.

    Dave,
    1. You can fire SELECTS in an RFC as well, but in your case the data exists in SYSTEM A and the RFC is in System B, so you can't do that. You can fire SELECTS on tables in the same system.
    2. Quick example of two table loops - EKKO (HEADER) EKPO (ITEM).
    LOOP AT EKKO.
    LOOP AT EKPO WHERE EBELN = EKKO-EBELN.
    ENDLOOP.
    ENDLOOP.
    I hope this is clear now.
    Regards,
    Ravi

  • 0FC_BP_ITEMS: ERP customizing and delta mechanism

    Hi BI fans
    I have two questions:
    1.) The following link describes how to make the settings for delta enabling of datasource 0FC_BP_ITEMS:
    http://help.sap.com/saphelp_nw70/helpdata/en/27/42073e774a4329b6dd6bab21eef613/frameset.htm
    Prerequisites-
    "...If you want to use the delta method, you first have to activate it in the Implementation Guide for Contract Accounts Receivable and Payable ->  Integration Business Intelligence -> Maintain Central Settings in the clients of the OLTP system..."
    But I cannot find the setting for "Maintain Centrall Settings" in the implementation guide!
    Any idea from your side?
    What I see are entries for:
    Define Fields for the Extraction of Items
    Define Grid for Grouping of Items
    2.) What is the exact delta logic of this extractor (working through function module)?
    Which fields are relevant for the delta logic?
    Thanks
    BEOplanet

    Hi Andrea
    First of all I activated the whole content (datasource, BW content, etc.).
    Regarding the pseudo-delta on CPUDT I have designed a BEx variable on a DATS 8 time characteristic, e.g. 0NETDUEDATE. It is a BEx variable feeded by a customer exit, you will find a sample coding below. Furthermore an interval variable, mandatory input.
    Screen for BEx variable properties:
    Assign this BEx variable into your infopackage for intended use of pseudo-deltas, type OLAP-variable:
    The sample coding below gives you an idea about our pseudo-delta mechanism, from 1st. of last month until sy-datum.
    Data wa1 like line of e_t_range.
    data d1 type d.
    data fdate type d.
    data fyear type d.
    data ldate type d.
    data fmonth type d.
    case i_vnam.
    when 'ZL2MTDY'. "BEx variable on 0NETDUEDATE or any other DATS 8 time characteristic
    d1 = sy-datum.
    fdate = d1 - 31.
    fdate+6(2) = '01'.
    ldate = sy-datum.
    wa1-opt = 'BT'.
    wa1-sign = 'I'.
    wa1-low = fdate.
    wa1-high = ldate.
    append wa1 to e_t_range.
    ENDCASE.

  • Delta fo Generic extractor using function module

    Hi,
    I am using the following function module for generic extractor but its always showing me extraction error.Could anyone please suggest to resolve the issue.
    Thanks in advance fo rsuggestion.
    FUNCTION Z_BW_SALESDATA_EXTRACT_CHNG2.
    ""Local interface:
    *"  IMPORTING
    *"     VALUE(I_REQUNR) TYPE  SBIWA_S_INTERFACE-REQUNR
    *"     VALUE(I_ISOURCE) TYPE  SBIWA_S_INTERFACE-ISOURCE OPTIONAL
    *"     VALUE(I_MAXSIZE) TYPE  SBIWA_S_INTERFACE-MAXSIZE OPTIONAL
    *"     VALUE(I_INITFLAG) TYPE  SBIWA_S_INTERFACE-INITFLAG OPTIONAL
    *"     VALUE(I_UPDMODE) TYPE  SBIWA_S_INTERFACE-UPDMODE OPTIONAL
    *"     VALUE(I_DATAPAKID) TYPE  SBIWA_S_INTERFACE-DATAPAKID OPTIONAL
    *"     VALUE(I_PRIVATE_MODE) OPTIONAL
    *"     VALUE(I_CALLMODE) LIKE  ROARCHD200-CALLMODE OPTIONAL
    *"     VALUE(I_REMOTE_CALL) TYPE  SBIWA_FLAG DEFAULT SBIWA_C_FLAG_OFF
    *"  TABLES
    *"      I_T_SELECT TYPE  SBIWA_T_SELECT OPTIONAL
    *"      I_T_FIELDS TYPE  SBIWA_T_FIELDS OPTIONAL
    *"      E_T_DATA OPTIONAL
    *"      E_T_SOURCE_STRUCTURE_NAME OPTIONAL
    *"  EXCEPTIONS
    *"      NO_MORE_DATA
    *"      ERROR_PASSED_TO_MESS_HANDLER
    The input parameter I_DATAPAKID is not supported yet !
    Example: InfoSource containing TADIR objects
      TABLES: VBFA,VBRK,tadir.
    Auxiliary Selection criteria structure
      DATA: l_s_select TYPE sbiwa_s_select.
    Maximum number of lines for DB table
      STATICS: l_maxsize TYPE sbiwa_s_interface-maxsize.
    user defined variables.
      DATA : X_UPDMODE(1) Type c,        " Update Type
            X_LastUpdate Like Sy-Datum. " Last Update Date
             X_LastUpdate TYPE RODELTAID. " Last Update Date   "TCS_KAP
    Select ranges
      RANGES: L_R_VBELN   FOR VBAK-VBELN,
              L_R_AUDAT   FOR VBAK-AUDAT.
    Parameter I_PRIVATE_MODE:
    Some applications might want to use this function module for other
    purposes as well (e.g. data supply for OLTP reporting tools). If the
    processing logic has to be different in this case, use the optional
    parameter I_PRIVATE_MODE (not supplied by BIW !) to distinguish
    between BIW calls (I_PRIVATE_MODE = SPACE) and other calls
    (I_PRIVATE_MODE = X).
    If the message handling has to be different as well, define Your own
    messaging macro which interprets parameter I_PRIVATE_MODE. When
    called by BIW, it should use the LOG_WRITE macro, otherwise do what
    You want.
    Initialization mode (first call by SAPI) or data transfer mode
    (following calls) ?
      IF i_initflag = sbiwa_c_flag_on.
    Initialization: check input parameters
                    buffer input parameters
                    prepare data selection
    The input parameter I_DATAPAKID is not supported yet !
    Invalid second initialization call -> error exit
        IF NOT g_flag_interface_initialized IS INITIAL.
          IF 1 = 2. MESSAGE e008(r3). ENDIF.
          log_write 'E'                    "message type
                    'R3'                   "message class
                    '008'                  "message number
                    ' '                    "message variable 1
                    ' '.                   "message variable 2
          RAISE error_passed_to_mess_handler.
          ENDIF.
    Check InfoSource validity
        CASE i_isource.
          WHEN 'Z_BW_SDDATA_CREATEON'.
          WHEN 'Y'.
          WHEN 'Z'.
          WHEN OTHERS.
            IF 1 = 2. MESSAGE e009(r3). ENDIF.
            log_write 'E'                  "message type
                      'R3'                 "message class
                      '009'                "message number
                      i_isource            "message variable 1
                      ' '.                 "message variable 2
            RAISE error_passed_to_mess_handler.
        ENDCASE.
    Check for supported update mode
       CASE i_updmode.
         WHEN 'F'.
         WHEN OTHERS.
           IF 1 = 2. MESSAGE e011(r3). ENDIF.
           log_write 'E'                  "message type
                     'R3'                 "message class
                     '011'                "message number
                     i_updmode            "message variable 1
                     ' '.                 "message variable 2
           RAISE error_passed_to_mess_handler.
       ENDCASE.
    Check for obligatory selection criteria
       READ TABLE i_t_select INTO l_s_select WITH KEY fieldnm = 'VBELN'.
       IF sy-subrc <> 0.
         IF 1 = 2. MESSAGE e010(r3). ENDIF.
         log_write 'E'                    "message type
                   'R3'                   "message class
                   '010'                  "message number
                   'PGMID'                "message variable 1
                   ' '.                   "message variable 2
         RAISE error_passed_to_mess_handler.
       ENDIF.
       APPEND LINES OF i_t_select TO g_t_select.
    Fill parameter buffer for data extraction calls
        g_s_interface-requnr    = i_requnr.
        g_s_interface-isource   = i_isource.
        g_s_interface-maxsize   = i_maxsize.
        g_s_interface-initflag  = i_initflag.
        g_s_interface-updmode   = i_updmode.
        g_s_interface-datapakid = i_datapakid.
        g_flag_interface_initialized = sbiwa_c_flag_on.
    Store Update mode in static variable...
       X_UPDMODE = I_UPDMODE.
        Select Single DELTAID
               Into   X_LastUpdate
               From   ROOSGENDLM
               Where  OLTPSOURCE = 'Z_BW_SDDATA_CREATEON'.
        If X_LastUpdate Is Initial.
          X_LastUpdate = '19800101'. " The oldest..., this should not happen
        Endif.
    Fill field list table for an optimized select statement
    (in case that there is no 1:1 relation between InfoSource fields
    and database table fields this may be far from beeing trivial)
        APPEND LINES OF i_t_fields TO g_t_segfields.
      ELSE.                 "Initialization mode or data extraction ?
    Data transfer: First Call      OPEN CURSOR + FETCH
                   Following Calls FETCH only
    X_UPDMODE = I_UPDMODE.
    First data package -> OPEN CURSOR
        IF g_counter_datapakid = 0.
    Fill range tables for fixed InfoSources. In the case of generated
    InfoSources, the usage of a dynamical SELECT statement might be
    more reasonable. BIW will only pass down simple selection criteria
    of the type SIGN = 'I' and OPTION = 'EQ' or OPTION = 'BT'.
          LOOP AT g_t_select INTO l_s_select WHERE fieldnm = 'VBELN'.
            MOVE-CORRESPONDING l_s_select TO L_R_VBELN.
            APPEND L_R_VBELN.
          ENDLOOP.
          LOOP AT g_t_select INTO l_s_select WHERE fieldnm = 'AUDAT'.
            MOVE-CORRESPONDING l_s_select TO L_R_AUDAT.
            APPEND L_R_AUDAT.
          ENDLOOP.
    Determine number of database records to be read per FETCH statement
    from input parameter I_MAXSIZE. If there is a one to one relation
    between InfoSource table lines and database entries, this is trivial.
    In other cases, it may be impossible and some estimated value has to
    be determined.
    *added by Yogesh
          DELETE FROM ZBWSALEDATA.
    *ended by Yogesh
          l_maxsize = g_s_interface-maxsize.
    Check for supported update mode
          CASE X_UPDMODE.
            WHEN 'F' Or 'I'. " Full or Init
    **get sales orders
              SELECT *
                           INTO CORRESPONDING FIELDS OF TABLE I_SALESDATA
                           FROM VBAK AS K
                           INNER JOIN VBAP AS P
                                 ON  PVBELN = KVBELN
                           WHERE K~VBELN IN L_R_VBELN
                           AND   K~AUDAT IN L_R_AUDAT
                           AND   K~VBTYP = 'C'.
              IF I_SALESDATA[] IS NOT INITIAL.
                PERFORM F_GET_DATA.                   "get data
                PERFORM F_DEL_VATCOND.                "delete vat conditions
                PERFORM F_GET_TAR_COSTUNIT.           "get tariff cost unit
                PERFORM F_GET_NETVAL TABLES IT_VBDPA1. "get net val of the item
                PERFORM F_GET_SALESDATA.
    *write perform with name F_INSERT_DB_ZBWSALEDATA.
                PERFORM F_INSERT_DB_ZBWSALEDATA.      "insert into table ZBWSALESDATA
               LOOP AT I_SALESDATA WHERE NETPR = 0.
                 MOVE-CORRESPONDING I_SALESDATA TO I_SALESDATA_FIN.
                 APPEND I_SALESDATA_FIN.
               ENDLOOP.
               SORT I_SALESDATA_FIN BY VBELN POSNR KSCHL.
               DELETE ADJACENT DUPLICATES FROM I_SALESDATA_FIN
                                               COMPARING VBELN POSNR
                                                         KSCHL.
               INSERT ZBWSALEDATA FROM TABLE I_SALESDATA_FIN.
              ENDIF.
            WHEN 'D'. " Delta
              SELECT *
                             INTO CORRESPONDING FIELDS OF TABLE I_SALESDATA
                             FROM VBAK AS K
                             INNER JOIN VBAP AS P
                                   ON  PVBELN = KVBELN
                            WHERE K~ERDAT >= X_LastUpdate
                             WHERE K~ERDAT >= X_LastUpdate+0(8)          "TCS_KAP
                             AND   K~VBTYP = 'C'.
              IF I_SALESDATA[] IS NOT INITIAL.
                PERFORM F_GET_DATA.                   "get data
                PERFORM F_DEL_VATCOND.                "delete vat conditions
                PERFORM F_GET_TAR_COSTUNIT.           "get tariff cost unit
                PERFORM F_GET_NETVAL TABLES IT_VBDPA1. "get net val of the item
                PERFORM F_GET_SALESDATA.
    *write perform with name F_INSERT_DB_ZBWSALEDATA.
                PERFORM F_INSERT_DB_ZBWSALEDATA.      "insert into table ZBWSALESDATA
               LOOP AT I_SALESDATA WHERE NETPR = 0.
                 MOVE-CORRESPONDING I_SALESDATA TO I_SALESDATA_FIN.
                 APPEND I_SALESDATA_FIN.
               ENDLOOP.
               SORT I_SALESDATA_FIN BY VBELN POSNR KSCHL.
               DELETE ADJACENT DUPLICATES FROM I_SALESDATA_FIN
                                               COMPARING VBELN POSNR
                                                         KSCHL.
               INSERT ZBWSALEDATA FROM TABLE I_SALESDATA_FIN.
              ENDIF.
            WHEN OTHERS.
              IF 1 = 2. MESSAGE E011(R3). ENDIF.
              LOG_WRITE 'E' "message type
              'R3' "message class
              '011' "message number
              I_UPDMODE "message variable 1
              ' '. "message variable 2
              RAISE ERROR_PASSED_TO_MESS_HANDLER.
          ENDCASE.
    **end get sales orders
          OPEN CURSOR WITH HOLD g_cursor FOR
          SELECT (g_t_fields) FROM ZBWSALEDATA.
         WHERE pgmid  IN l_r_pgmid AND
                                        object IN l_r_object.
        ENDIF.                             "First data package ?
    Fetch records into interface table. There are two different options:
    - fixed interface table structure for fixed InfoSources have to be
      named E_T_'Name of assigned source structure in table ROIS'.
    - for generating applications like LIS and CO-PA, the generic table
      E_T_DATA has to be used.
    Only one of these interface types should be implemented in one API !
        FETCH NEXT CURSOR g_cursor
                   APPENDING CORRESPONDING FIELDS
                   OF TABLE E_T_DATA
                   PACKAGE SIZE l_maxsize.
        IF sy-subrc <> 0.
          CLOSE CURSOR g_cursor.
          RAISE no_more_data.
        ENDIF.
        g_counter_datapakid = g_counter_datapakid + 1.
      ENDIF.              "Initialization mode or data extraction ?
    Best regards,
    Yogesh

    Dear Yogesh,
    Try to debug the code by putting a break point at select statement...is the FM Syntactically correct ??
    Check the Select statements..if all fields are not required avoid using Select * , and use always for all entries rather than JOINS..
    Note : For Joins you have to specify the Fields in the Select...Dont use Select * ....
    Hope it helps..
    Thanks,
    Krish

  • Delta error in GE-Function Module

    Hi ,
    my GE-delta is based on UDATE ( chenged date) from CDHDR table.
    i created datasource in RS02 and i defined delta based in UDATE with upper limit 1 day and lower limit is '0'..
    i created FM based on RSAX_BIW_GEDATA_SIMPLE.
    for full load it working fine.
    i put some extra code for delta.
    it is not take any records...
    i dont know much ABAP.
    plz tell me where is wrong in my code for delta..
    code ...
    FUNCTION ZXBWMM_INV_POT_ID.
    ""Local Interface:
    *"  IMPORTING
    *"     VALUE(I_REQUNR) TYPE  SRSC_S_IF_SIMPLE-REQUNR
    *"     VALUE(I_DSOURCE) TYPE  SRSC_S_IF_SIMPLE-DSOURCE OPTIONAL
    *"     VALUE(I_MAXSIZE) TYPE  SRSC_S_IF_SIMPLE-MAXSIZE OPTIONAL
    *"     VALUE(I_INITFLAG) TYPE  SRSC_S_IF_SIMPLE-INITFLAG OPTIONAL
    *"     VALUE(I_READ_ONLY) TYPE  SRSC_S_IF_SIMPLE-READONLY OPTIONAL
    *"     VALUE(I_REMOTE_CALL) TYPE  SBIWA_FLAG DEFAULT SBIWA_C_FLAG_OFF
    *"  TABLES
    *"      I_T_SELECT TYPE  SRSC_S_IF_SIMPLE-T_SELECT OPTIONAL
    *"      I_T_FIELDS TYPE  SRSC_S_IF_SIMPLE-T_FIELDS OPTIONAL
    *"      E_T_DATA STRUCTURE  ZVSAIPID OPTIONAL
    *"  EXCEPTIONS
    *"      NO_MORE_DATA
    *"      ERROR_PASSED_TO_MESS_HANDLER
    Example: DataSource for table SFLIGHT
    TABLES: SFLIGHT.
    TABLES: EBAN , CDPOS , CDHDR , ZVSAPR.
      TYPES : BEGIN OF TY_OBJDATE ,
            OBJECTID TYPE CDHDR-OBJECTID,
            VALUE_NEW TYPE CDPOS-VALUE_NEW,
            VALUE_OLD TYPE CDPOS-VALUE_OLD,
            UDATE TYPE CDHDR-UDATE,
            MINBE TYPE MARC-MINBE,
            BSTMA TYPE MARC-BSTMA,
            WERKS TYPE MARC-WERKS,
            VERPR TYPE MBEW-VERPR,
            STPRS TYPE MBEW-STPRS,
            LBKUM TYPE MBEW-LBKUM,
            BUDAT TYPE MKPF-BUDAT,
            MBLNR TYPE MSEG-MBLNR,
            MENGE TYPE MSEG-MENGE,
            DMBTR TYPE MSEG-DMBTR,
            END OF TY_OBJDATE.
      data : int_cdhdr type table of cdhdr with header line,
           int_cdpos type table of cdpos with HEADER LINE,
           INT_OBJDATE TYPE TABLE OF TY_OBJDATE WITH HEADER LINE.
          int_marc type table of marc with header line.
    *DATA: int_pr1 TYPE TABLE OF ZVSAIPID WITH HEADER LINE.
      DATA : BEGIN OF INT_MATNR OCCURS 10,
             MAtnr like mara-matnr,
             end of int_matnr.
    DATA : BEGIN OF INT_MARC OCCURS 10,
             matnr like marc-matnr,
             MINBE like marC-mINBE,
             BSTMA LIKE Marc-bstma,
             WERKS LIKE MARC-WERKS,
             end of int_marc.
    DATA : BEGIN OF INT_MBEW OCCURS 10,
             MATNR LIKE MBEW-MATNR,
             VERPR LIKE MBEW-VERPR,
             STPRS LIKE MBEW-STPRS,
             LBKUM LIKE MBEW-LBKUM,
             end of int_MBEW.
    DATA : BEGIN OF INT_MKPF OCCURS 10,
             MBLNR LIKE MKPF-MBLNR,
             BUDAT LIKE MKPF-BUDAT,
             END OF INT_MKPF.
    DATA : BEGIN OF INT_MSEG OCCURS 10,
             MATNR LIKE MSEG-MATNR,
             MBLNR LIKE MSEG-MBLNR,
             MENGE LIKE MSEG-MENGE,
             DMBTR LIKE MSEG-DMBTR,
             END OF INT_MSEG.
    Auxiliary Selection criteria structure
      DATA: L_S_SELECT TYPE SRSC_S_SELECT.
    Maximum number of lines for DB table
      STATICS: S_S_IF TYPE SRSC_S_IF_SIMPLE,
    counter
              S_COUNTER_DATAPAKID LIKE SY-TABIX,
    cursor
              S_CURSOR TYPE CURSOR.
    Select ranges
    RANGES: L_R_CARRID  FOR SFLIGHT-CARRID,
             L_R_CONNID  FOR SFLIGHT-CONNID.
      RANGES : ra_OBJECTID FOR E_T_DATA-OBJECTID.
              RA_UDATE FOR E_T_DATA-UDATE.
    Initialization mode (first call by SAPI) or data transfer mode
    (following calls) ?
      IF I_INITFLAG = SBIWA_C_FLAG_ON.
      IF NOT G_FLAG_INTERFACE_INITIALIZED IS INITIAL.
    IF 1 = 2. MESSAGE E008(R3). ENDIF.
    LOG_WRITE 'E' "message type
    'R3' "message class
    '008' "message number
    ' ' "message variable 1
    ' '. "message variable 2
    RAISE ERROR_PASSED_TO_MESS_HANDLER.
    ENDIF.
    Initialization: check input parameters
                    buffer input parameters
                    prepare data selection
    Check DataSource validity
        CASE I_DSOURCE.
          WHEN 'ZOI_MM_INVENTORY_IPID'.
          WHEN OTHERS.
            IF 1 = 2. MESSAGE E009(R3). ENDIF.
    this is a typical log call. Please write every error message like this
            LOG_WRITE 'E'                  "message type
                      'R3'                 "message class
                      '009'                "message number
                      I_DSOURCE   "message variable 1
                      ' '.                 "message variable 2
            RAISE ERROR_PASSED_TO_MESS_HANDLER.
        ENDCASE.
      Check for supported update mode
    CASE I_UPDMODE.
    WHEN 'F'.
    WHEN 'D'.
    WHEN 'R'.
    WHEN OTHERS.
    IF 1 = 2. MESSAGE E011(R3). ENDIF.
    LOG_WRITE 'E' "message type
    'R3' "message class
    '011' "message number
    I_UPDMODE "message variable 1
    ' '. "message variable 2
    RAISE ERROR_PASSED_TO_MESS_HANDLER.
    ENDCASE.
    READ TABLE I_T_SELECT INTO L_S_SELECT
    WITH KEY FIELDNM = 'UDATE'.
        APPEND LINES OF I_T_SELECT TO S_S_IF-T_SELECT.
    Fill parameter buffer for data extraction calls
        S_S_IF-REQUNR    = I_REQUNR.
        S_S_IF-DSOURCE = I_DSOURCE.
        S_S_IF-MAXSIZE   = I_MAXSIZE.
        G_S_INTERFACE-INITFLAG = I_INITFLAG.
        G_S_INTERFACE-UPDMODE = I_UPDMODE.
        G_S_INTERFACE-DATAPAKID = I_DATAPAKID.
        G_FLAG_INTERFACE_INITIALIZED = SBIWA_C_FLAG_ON.
    Fill field list table for an optimized select statement
    (in case that there is no 1:1 relation between InfoSource fields
    and database table fields this may be far from beeing trivial)
        APPEND LINES OF I_T_FIELDS TO S_S_IF-T_FIELDS.
      ELSE.                 "Initialization mode or data extraction ?
    Data transfer: First Call      OPEN CURSOR + FETCH
                   Following Calls FETCH only
    First data package -> OPEN CURSOR
      LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT
      WHERE FIELDNM = 'UDATE'.
      ENDLOOP
        IF S_COUNTER_DATAPAKID = 0.
    Fill range tables BW will only pass down simple selection criteria
    of the type SIGN = 'I' and OPTION = 'EQ' or OPTION = 'BT'.
         LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT WHERE FIELDNM = 'CARRID'.
           MOVE-CORRESPONDING L_S_SELECT TO L_R_CARRID.
           APPEND L_R_CARRID.
         ENDLOOP.
         LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT WHERE FIELDNM = 'CONNID'.
           MOVE-CORRESPONDING L_S_SELECT TO L_R_CONNID.
           APPEND L_R_CONNID.
         ENDLOOP.
    Determine number of database records to be read per FETCH statement
    from input parameter I_MAXSIZE. If there is a one to one relation
    between DataSource table lines and database entries, this is trivial.
    In other cases, it may be impossible and some estimated value has to
    be determined.
         OPEN CURSOR WITH HOLD S_CURSOR FOR
         SELECT (S_S_IF-T_FIELDS) FROM SFLIGHT
                                  WHERE CARRID  IN L_R_CARRID AND
                                    CONNID  IN L_R_CONNID.
         IF L_S_SELECT-LOW = '' AND L_S_SELECT-HIGH = ''. "FULL or INIT
          OPEN CURSOR WITH HOLD S_CURSOR FOR
          select * from cdhdr where OBJECTCLAS = 'MATERIAL' AND TCODE = 'MM02'.
          ELSE. "DELTA
         OPEN CURSOR WITH HOLD G_CURSOR FOR
         select * from cdhdr where OBJECTCLAS = 'MATERIAL'
         AND TCODE = 'MM02'
         AND UDATE >= L_S_SELECT-LOW
         AND UDATE <= L_S_SELECT-HIGH.
         ENDIF.
         ENDIF.
       ENDIF.
        "First data package ?
        FETCH NEXT CURSOR S_CURSOR
              APPENDING  TABLE int_cdhdr
              PACKAGE SIZE S_S_IF-MAXSIZE.
       into table int_cdhdr
        IF SY-SUBRC <> 0.
          CLOSE CURSOR S_CURSOR.
          RAISE NO_MORE_DATA.
        ENDIF.
        SELECT * FROM CDPOS INTO TABLE INT_CDPOS
             FOR ALL ENTRIES IN INT_CDHDR
             WHERE OBJECTID = INT_CDHDR-OBJECTID
             AND TABNAME = 'MARC'
             AND ( FNAME =  'BSTMA' OR FNAME = 'MINBE' ).
        LOOP AT int_cdpos.
          int_matnr-matnr = int_cdpos-objectid.
          APPEND int_matnr.
        ENDLOOP.
        SELECT  matnr MINBE BSTMA WERKS FROM MARC INTO TABLE INT_marc
                FOR ALL ENTRIES IN int_matnr
               WHERE MATNR = INT_matnr-matnr.
        SELECT  matnr VERPR STPRS LBKUM FROM MBEW INTO TABLE INT_MBEW
                FOR ALL ENTRIES IN int_matnr
               WHERE MATNR = INT_matnr-matnr.
        SELECT  matnr MBLNR MENGE DMBTR FROM MSEG INTO TABLE INT_MSEG
                FOR ALL ENTRIES IN int_matnr
               WHERE MATNR = INT_matnr-matnr.
         LOOP AT int_MSEG.
          int_MKPF-MBLNR = int_MSEG-MBLNR.
          APPEND int_MKPF.
        ENDLOOP.
        SELECT  MBLNR BUDAT FROM MKPF INTO TABLE INT_MKPF
                FOR ALL ENTRIES IN int_MKPF
               WHERE MBLNR = INT_MKPF-MBLNR.
    *BREAK-POINT.
        LOOP AT INT_CDPOS.
          READ TABLE INT_CDHDR WITH KEY OBJECTID = INT_CDPOS-OBJECTID .
          IF SY-SUBRC = 0.
            INT_OBJDATE-OBJECTID = INT_CDPOS-OBJECTID.
            INT_OBJDATE-VALUE_NEW = INT_CDPOS-VALUE_NEW.
            INT_OBJDATE-VALUE_OLD = INT_CDPOS-VALUE_OLD.
            INT_OBJDATE-UDATE = INT_CDHDR-UDATE.
            READ TABLE INT_MARC WITH KEY MATNR = INT_CDPOS-OBJECTID .
            IF SY-SUBRC = 0.
              INT_OBJDATE-MINBE = INT_MARC-MINBE.
              INT_OBJDATE-BSTMA = INT_MARC-BSTMA.
              INT_OBJDATE-WERKS = INT_MARC-WERKS.
              ENDIF.
            READ TABLE INT_MBEW WITH KEY MATNR = INT_CDPOS-OBJECTID .
            IF SY-SUBRC = 0.
              INT_OBJDATE-VERPR = INT_MBEW-VERPR.
              INT_OBJDATE-STPRS = INT_MBEW-STPRS.
              INT_OBJDATE-LBKUM = INT_MBEW-LBKUM.
             ENDIF.
            READ TABLE INT_MSEG WITH KEY MATNR = INT_CDPOS-OBJECTID .
            IF SY-SUBRC = 0.
              INT_OBJDATE-MBLNR = INT_MSEG-MBLNR.
              INT_OBJDATE-MENGE = INT_MSEG-MENGE.
              INT_OBJDATE-DMBTR = INT_MSEG-DMBTR.
             ENDIF.
            READ TABLE INT_MKPF WITH KEY MBLNR = INT_MSEG-MBLNR .
            IF SY-SUBRC = 0.
              INT_OBJDATE-MBLNR = INT_MKPF-MBLNR.
              INT_OBJDATE-BUDAT = INT_MKPF-BUDAT.
             ENDIF.
            APPEND INT_OBJDATE.
          ENDIF.
        ENDLOOP.
    *SELECT * FROM EBAN
        INTO CORRESPONDING FIELDS OF TABLE INT_PR1
        FOR ALL ENTRIES IN INT_OBJDATE
        WHERE BAnfn = int_objdate-objectid.
    *ZZPRREL
        LOOP AT INT_OBJDATE.
          E_T_DATA-OBJECTID = INT_OBJDATE-OBJECTID.
          E_T_DATA-UDATE = INT_OBJDATE-UDATE.
          E_T_DATA-VALUE_NEW = INT_OBJDATE-VALUE_NEW.
          E_T_DATA-VALUE_OLD = INT_OBJDATE-VALUE_OLD.
          E_T_DATA-MINBE = INT_OBJDATE-MINBE.
          E_T_DATA-BSTMA = INT_OBJDATE-BSTMA.
          E_T_DATA-WERKS = INT_OBJDATE-WERKS.
          E_T_DATA-VERPR = INT_OBJDATE-VERPR.
          E_T_DATA-STPRS = INT_OBJDATE-STPRS.
          E_T_DATA-LBKUM = INT_OBJDATE-LBKUM.
          E_T_DATA-MBLNR = INT_OBJDATE-MBLNR.
          E_T_DATA-MENGE = INT_OBJDATE-MENGE.
          E_T_DATA-DMBTR = INT_OBJDATE-DMBTR.
          E_T_DATA-BUDAT = INT_OBJDATE-BUDAT.
          APPEND E_T_DATA.
          CLEAR  E_T_DATA.
        ENDLOOP.
    Fetch records into interface table.
      named E_T_'Name of extract structure'.
        S_COUNTER_DATAPAKID = S_COUNTER_DATAPAKID + 1.
      ENDIF.              "Initialization mode or data extraction ?
    ENDFUNCTION.
    i assign points....
    Regards,
    PSR.

    Hi ,
    i am not find any sollution for this..
    any body help me for this problum...
    i assign points..
    Regards,
    PSR

  • Use of OLAP variable 0FYTCFP in extracting GL transaction figures

    Hi
    We load data to cube 0FIGL_C01.
    We use the OLAP variable to ensure that we are extracting for the current fiscal year to date, as a full load, with a deletion of overlapping requests in the process chain.
    Our fiscal year ends 30 June. My question is around  special periods and opening of the new fiscal year while posting is still allowed into the old year e.g. on 15 July both the old year and the new year are open as the year end processing is still underway, and special periods 13-16 might also be in use.
    Do I have to wait until the user close the year (a manual step) to then do a "final" run for the year, with the periods specified manually, or is there a way to automate this?
    thanks and regards, Lara

    Hi Sander
    Thanks for the response.
    That;s what I have been doing (run manually after the period is closed). It is not ideal, in my mind, because it (1) relies on someone remembering to do it and (2) has to be done repetitively i.e.at least daily until the "old" period is closed, otherwise reports based on the provider will not be accurate. Again, not hard to do, just a pain when everything else is automated.
    This particular DataSource is not delta enabled, otherwise I would have used the delta loads.
    regards, Lara

  • FCP clip time remapping / speed ramping question re realtime after changes?

    Hello All,
    My first post here! I tried searches for this topic but didn't find....
    I wasted hours today messing with the keyframe editor to try and ramp parts of a single clip... first time using this feature and couldn't follow the manual! way too difficult to grasp without fluency in 'techygeekconfusic' lingo. Anyway, I don't think the topic was covered from what I read in my version of the manual.
    So I went straight for the keyframe editor graphic display under the clip in timeframe and put in a few points with the pen tool (using time graph blue line) and seemed to be going great until I realised that the segments in the single clip (ten minutes long) that I was adjusting were affecting what came after - ie slowing down the remainder of the clip. And that was all I could get from my manual that this happened without any explanation about stopping it happen by letting the outpoint of the clip readjust automatically for the changes made to that part of clip so that altered clip would be shorter in timeline...
    I then tried again from the start but noting the minus time on pentool arrow when I slid each keyframe point back and subtracting it from the duration in motion tab and that seemed to work for a while...
    but God bless my little brain! what I really wanted to happen - for the blasted thing to readjust itself automatically after I had adjusted a segment of the clip so that the remaining non-adjusted part would play in realtime with a new shorter outpoint in the sequence timeline - just couldn't be realised in my little brain or in the 'user friendly' control panels of FCP.
    I tried to get hold of the 'bezier' point at the end of clip and drag forward at the same rate as each change but could'nt get hold of it! I tried to put two points with pen tool at same time but couldn't isolate them from one another to create four points for adjustment without having still frames between.. blah blah.. I tried to get snapping to the pen tool points for further control but couldn't... duh!
    Please! how do you do it! obviously I have limited intelligence but I need to do this now. I want to adjust the 10 minute clip (DVCproHD 720p24N format - not that this should matter as my sequence settings are same) adjust the clip at maybe 10 different places so that it ramps in speed to cover up some boring areas and then back to normal speed after the changes - not back to some slo mo **! speed.
    I tried cutting with the razor tool to isolate and that didn't work either and other analogue brain type stuff ok I know you are laughing at me now but please help?!! I'm pretty new to this stuff, give me the old reliable Steenbeck and a few real bins and strips of film hanging on clothes pegs and I'll be ok...
    Help will be most gratefully appreciated!!!!!!!!
    Barra
    Message was edited by: BarraAppleId

    Andy did a very good job explaining the underlying problem with the time remap tool.
    The key thing to remember is the first and last frame are fixed in time. If you speed up the clip, time after that keyframe will have to slow down to compensate. Imagine the clip is a rubber band that has been cut so that it is a long string-like form. Now imagine anchoring each end of it with a push pin to a board. If you grab a point on the band and pull it toward one of the pins, the part of the band on the side you are pulling away from the anchor will stretch (run slower) and the side you are pulling toward will bunch up (run faster). But, when all is done, the start and end will still be at the fixed points.
    The way I've worked through this is to make a general guesstimate of how long the clip will be once all the ramping is complete. For example, I want the clip to start at normal (100%) speed and ramp up to 300% and back down to 100%. I might start with a clip having a constant speed of 200% and then change it to variable and play with it. The key concept is if you can get the overall LENGTH to where it should be, the rest works out fine.
    I have repeatedly asked in the FEEDBACK/New Features page that they add a toggle to the speed/time remap tools. This toggle should allow you decide whether the playback TIME for the clip should be fixed or flexible.
    For example, if you were working with a 4 second clip and wish to slow it down by 50% -
    If 'Maintain Time' is toggled ON, when you decrease the speed of clip by 50% - the clip will still play for 4 sec (but will show only half the total frames).
    If the toggle is OFF, the 4 sec clip will now play for 8 sec and will display all the frames.
    Where this concept becomes really powerful is when it's applied to time remap. If you have 'Maintain time' toggled OFF, as you adjust speed, the end point of the clip will float in time. If you increase the speed, the overall time of the clip will shrink. If you slow it down, the end point moves out in time.
    We need to keep asking ...
    x

  • How to use shared variables to address multiple Watlow controller​s on the same COM port

    Hello,
    I am trying to use LabVIEW 2010 to control 4 Watlow temperature controllers on one COM port. 3 are Model 96 and 1 is an EZ zone controller. Each controller has a unique modbus address, and I am trying to read from and write to individual registers (such as closed loop setpoint) using shared variables. I am getting return data when reading (although the data appears to be invalid), but am unable to change the value in the register by writing. How can I be sure that the Modbus server is sending commands to the correct controller?
    Chuck
    Solved!
    Go to Solution.

    Peter,
    Thanks for the reply. I have actually solved that problem. I realized that the Modbus server address has to be the same as the controller's Modbus address.
    I have, however, run into another problem. Perhaps you could help me with that. I have a system with 4 Watlow controllers, 3 are series 96 controllers, one is PID only and 2 are ramping. The 4th controller is an EZ zone. I am using RS485 for communications and the controllers are all wired in parallel for communications and power.
    I have set up 2 Modbus servers for 2 of the controllers.
    This is the first I have ever worked with Modbus based communications. I have successfully programmed using the Modbus read/write VIs, and am wanting to move to shared variables. My questions right now revolve around addressing, Modbus I/O servers and COM ports. Specifically, at this point, I know the addresses need to match up between the server and the slave device (Watlow controller in my case), how many servers can I create and use on one COM port? If the number is limited, is there a way I can specify an address that I want the server to talk to? Will the broadcast mode work to request data values from the controllers?
    I'd appreciate any information you can help me with, or if you could point me to some sort of concise 'How-To' for Modbus communication.
    Thanks.
    Chuck

Maybe you are looking for

  • Lost cd rom after upgrading to windows 8.1

    System information: Satellite C55-A5300 Windows 8 Problem: This computer worked fine until last month when my son let it update to windows 8.1.  The cd rom then disappeared and he has to have the cd rom for his games.  I've tried everything I could f

  • IPod no longer charges

    After the unfortunate decision of updaing to 7.0 and the 1.2 firmware upgrade, my iPod was a brick for about two weeks. I stumbled upon a potential solution: download itunes 6 and the previous firmware update for my iPod, and all was going smoothly,

  • I book g4 crashing when sleeping

    lately, although i recently have had both the logic board and hard drive replaced, my ibook g4 has been crashing when i leave it sleeping. it is unresponsive and i have to manually turn off the computer. when i try to restart a gray screen with a fla

  • DB connect failed return code 000256 --- disp_work ended

    Hi Friends, I have installed ides ECC 6 on oracle 10g on windows 2003 server.Now I am unable to start SAP console. While starting the disp+work getting ended. I found form the log that the DB connect failed return code 000256 in dev_disp. snapshot is

  • Fill brush stokes ?

    When I'm working with illustrator I like to use the brush tool to create my line work beacuase of the nice ticks and thins I get. I'd love to be able to use my fill bucket to color my art...but no can do. The only way I've found to color it is by pai