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 PMThank 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,
JoostThanks 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.* -
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
MathiasHello 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 advanceAs 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
BEOplanetHi 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,
YogeshDear 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, LaraHi 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: BarraAppleIdAndy 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 -
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
-
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
-
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