Generic extractors as delta enabled
Hi Experts,
I am looking for a thread or Blog that describes the steps to enable Generic extractors as delta enabled.
Alok
Hi,
Goto--> RSO2 -> Enter your datasource name->Press on Generic Delta
Select one in Delta Specfied field...
U can set any of the below 3 based on ur reqmnt..
Time stamp or Calender day or numeric Pointer.
How to Create Delta..
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/84bf4d68-0601-0010-13b5-b062adbb3e33
/people/siegfried.szameitat/blog/2005/09/29/generic-extraction-via-function-module
Generic.. SAP Help
http://help.sap.com/saphelp_nw2004s/helpdata/en/3f/548c9ec754ee4d90188a4f108e0121/frameset.htm
http://wiki.ittoolbox.com/index.php/HOWTO:Generate_a_generic_DataSource
Thanks
(Assign Points if useful..)
Similar Messages
-
How can i make the Master data extractor to delta enable
Hi,
I am working on 0EQUIPMENT_ATTR(Master data).
I want to load the data to ODS,
By default SAP has not provided delta for this Object.
can anybody know how to make this 0EQUIPMENT_ATTR to delta enable.
or any other solution.
its urgent..
help me
MadhuHi dear and welcome on board !
If a std datasource is not available in delta mode, you cannot change it in order to deliver a delta...if you consider your requirement absolutely necessary, you can go for a generic datasource (RSO2) and try to set a generica delta...
Hope it helps!
Bye,
Roberto
...please don't forget to reward the answers...it's THE way to say thanks here... -
hi all,
can any one please provide any thing on generic extractors particular to delta (time-stamp)
VRKRHi,
please search the forums. This question has been asked already a lot of times. Additionally you might check my business card --> there is a link to a weblog related to that issue.
Siggi -
What if the extractor is not delta enabled?
How do we work it out in process chains..say if I use the full infopackage and DTP in the Process chain the full data will be loaded again and again...is that a problem?
To overcome this if we use infopackage selection we need to go change it daily isn't it not sure though..!
Can anyone give some good ideas?Voodi,
We are just in development now ( its an implementation project ), so I need to know what exactly we follow if there is a non delta enabled extractor being mapped to a cube directly via transformation.
So far I can make out : Create only one infopackage (full) and one DTP (full) and add the same in process chain?
Now if thats the case wont my data double up everytime we schedule the chain?
Please advise.
Thanks. -
Generic Datasource eventhough delta enabled not working
Hi Experts,
I have created a Datasource by creating a Function Module and also this function module i copied and did the changes the function module i used as a template is RSAX_BIW_GET_DATA_SIMPLE
and after creating the thing i have created a generic delta by using LAST_CHANGED_ON date as delta specific field and i have initialized the delta its fine it creating an entry in RSA7
in my first init load i got 4000 records so immly i have done delta again it brought 4000 but when i checked in RSA7 for delta their are no records but still its brining 4000 records ...but as per my assumption it should not get any records becoz we already got the delta.
Thanks and regards
SreedharHi
Even after making changes to code its still bring all the records with each load.
below i am pasting my code please advise what is that i am doing wrong so that delta is not getting picked up. instead every time its a full load.
FUNCTION ZRSAX_BIW_GET_DATA_SIMPLE.
""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 TYPE ZDPR_DASHBOARD_T OPTIONAL
*" EXCEPTIONS
*" NO_MORE_DATA
*" ERROR_PASSED_TO_MESS_HANDLER
Example: DataSource for table SFLIGHT
TABLES: DPR_DASHBOARD.
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.
DATA : LF_OBJECT TYPE EVE_TV_OBJECT_GUID.
DATA : LF_DATE TYPE DPR_TV_LAST_CHANGE_DATE.
Select ranges
RANGES: L_R_OBJECT FOR LF_OBJECT .
RANGES: L_R_DATE FOR LF_DATE.
L_R_CONNID FOR SFLIGHT-CONNID.
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 'ZDPREXTRACTION'.
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 = 'OBJECT_GUID'.
MOVE-CORRESPONDING L_S_SELECT TO L_R_OBJECT.
APPEND L_R_OBJECT.
ENDLOOP.
LOOP AT g_t_select INTO l_s_select WHERE fieldnm = 'LAST_CHANGE_DATE'.
MOVE-CORRESPONDING l_s_select TO l_r_date.
APPEND l_r_date.
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 (S_S_IF-T_FIELDS) FROM DPR_DASHBOARD
WHERE LAST_CHANGE_DATE in l_R_DATE. "AND
OBJECT_GUID IN L_R_OBJECT.
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.
Regards
Sreedhar
Message was edited by:
Sreedhar M -
Delta in generic extractor.
Hi Everyone,
I have created one of the generic extractor on a table and the other one on a view. While selecting the GENERIC DELTA, I let the numeric pointer selection checked.
Now, my question is will it allow me to do delta load in my cube using this extractor?
2nd question is how?
3rd question is if not then what is the change that I need to make so that it allows me to load the delta load. How this changes need to be made can you please explain step by step. thanks in advance.
My issue arose after loading the data when I went to change the InfoPackage to load the delta part, I realised in my InfoPackage I do not have the choice to load delta. How do I settle this. Actually this is an inventory cube where the data is loaded at the end of each month and now when I wanted to test it for today's month I realised that I do not have the choice to load delta for inventory load.
Please explain. Thank you once again in advance.<u>1. my question is will it allow me to do delta load in my cube using this extractor?</u>
Yes... you build Generic Extractor with Delta based on Numeric Pointer. Material Documents is the Perfect Example for that (We can't Sales Document or Purchase Document for this).
<u>2. 2nd question is how?</u>
Simple enable Material Document Number Fileds for Numeric Pointer (Select Numeric Pointer... provide Mat. Document No. field i.e. MBLNR).
<u>3rd question is if not then what is the change that I need to make so that it allows me to load the delta load. How this changes need to be made can you please explain step by step. thanks in advance.</u>
you need to create Material Documents in SAP R/3. If you build your Extractor on MSEG Table. You need to create any Material Document which populates in MSEG.
I don't remember wht exactly option we will get in Infopackage for Numeric Pointer. To my knowledge, it should give Delta only in Update Tab page.
Hope this helps.
Nagesh Ganisetti.
Assign points if it helps. -
Delta enabling in Generic data source
Hi,
Here is the requirement to create a generic datasource with delta enable.
Master data objects 0RPA_MEAN and 0RPA_MARM are not delta enabled but we need them as delta enabled. Hence created generic datasource but still not able to do.
Could you pl suggest the detailed procedure for creating generic datasource so that i can make them delta enabled.Is this possible in otherwise?
Thanks & Regards,
VijayaHi,
Delta Generic DataSource time stamp fields
Delta Generic DataSource
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/10b68b99-022e-2a10-999d-c4dc9ec24a59
Create Generic Delta
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/84bf4d68-0601-0010-13b5-b062adbb3e33
Also Refer:
/people/siegfried.szameitat/blog/2005/09/29/generic-extraction-via-function-module
http://help.sap.com/saphelp_nw04/helpdata/en/3f/548c9ec754ee4d90188a4f108e0121/content.htm
Hope this helps.
Thanks,
JituK -
Generic Extractor using FM with Delta Logic
Hi,
i want to create a generic extractor with Delta Logic based on a FM.
The extractor works fine for full loads (extractor method "F" or "C"), but delivers no record for the extractor method "D" (Delta). I placed a hard coded break-point in the FM, so that the processing should stop while testing it with TC "rsa3". Using the extractor method "D" the debugger doesn't stop. So it seems, that this FM will not be processed for method "D". What could be wrong?
I tried different ways to create the generic extractor:
First i copied the template "RSAX_BIW_GET_DATA_SIMPLE" and tried to get the information for delta-run by "LOOP AT i_t_select INTO l_s_select WHERE fieldnm = 'DATE_FIELD'." But as the processing for method "D" does not consider the FM, there is no chance to get delta data.
On second try i used the template "RSAX_BIW_GET_DATA" and changed "EXMETHOD" from "F1" to "F2" in table ROOSOURCE for the Data Source. In this case i get information about the Update mode (Parameter i_updmode). But the processing leaves the FM for extractor method "D" out too.
Does anybody know, why the FM is not processed for extractor method "D"?
Is there another way to get delta capable extractors based on FMs?
Thanks for help in advance!Hello
See this blog which uses the same FM with explanation
/people/siegfried.szameitat/blog/2005/09/29/generic-extraction-via-function-module
See this forum too
Generic Delta Function Module
Other docs
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/84bf4d68-0601-0010-13b5-b062adbb3e33
http://help.sap.com/saphelp_nw04/helpdata/en/37/4f3ca8b672a34082ab3085d3c22145/content.htm
Thanks
Chandran -
Generic extractor is not reading delta
Hi !
I have a generic extractor with delta queue, for a Z view.
The delta is on 'ZLOAD_DATE' field / calendar day /safety interval upper limit = 1 / new status for changed records
In BI the init with data is ok.
In ECC the delta queue (RSA7) show as actual status: 03 June 2010
then, I add 3 new records
ZMAT ZLOAD_DATE
x 01 June 2010
x 02 June 2010
x 03 June 2010
But when I run again the delta load in BI, dont load any records.. (0 records readed)
> What is wrong?
Thanks in advance!Hi Prem
The new record were created after the init (the same day), but specify manually in the ZLOAD_DATE several dates (diferent from the real load date, today)
1 - If I load records today and after run a delta, can I see they in BI or I need wait until tomorrow?
2 - if the upper limit is regarding the actual date, which is the meaning of specify a delta key field?
3 - if I want a delta with the same behaivour than standard delta, do I need add the field timestamp to the table, and change the extractor?
Thanks for your support! -
Delta Enabled Generic Data Source
Hi All,
I have created one Delta Enabled Generic Data Source with
Function Module. The Delta field is Date Field. The Data source picks data from R3 to BW.
In RSA3, I executed the Extractor with the Delta Type "C" i.e Delta Initialization ... but it is throwing the error "Errors occured during the extraction". I also checked the Display Log and the error message is "Could not determine BW release of logical system".
Moreover I am not able to see the Delta Attributes in
RSA7. I checked with the other delta enabled generic extractors which uses Views .. is found to be working fine ... and I also able to see the Delta Attributes in RSA7.
Any suggestions?
Bye
DineshDinesh,
Once you have generated transfer rules in BW for the datasource, delta init can be tried out in RSA3. It iwll not create the delta queue though. Only test the initialization.
To do this, once you have created the transfer rules in BW, specify the logical system name of the BW system in the target system field. After that the extractor can be run in RSA3. It is flagged as read only so delta queue will not get created.
Cheers
Aneesh -
Delta Enabling Text Extractors
Is it possible to delta enable text extractors? Thanks
Thanks Arun,
In our case we are expecting very huge volumes even for master data loads and although limited columns our rows could be well in excess of 50 Million lines. Is there an option to delta enable i.e. could I create a generic and delta on text? do standard extractors provide this functionality? -
Delta loading through Generic extractor - function module not found
Hi,
I'm working on a BW3.5 system and we have some generic delta FM extractors. One of these is called ZBW_CONF_DELTA and the FM is also called ZBW_CONF_DELTA. It is a delta-enabled extractor. Whenever an extraction is done in the init delta mode, the data gets picked up from SAP.
However, whenever we load subsequent deltas, the extractor brings zero records. When I look in the SM37 logs in R/3, it says "Function module /BIC/QIZBW_CONF_DELTA0001 does not exist"
I'm not sure where the "/BIC/QIZBW_CONF_DELTA0001" function module name came from, because I haven't given it like that (if I did, the init load would also have failed).
Due to this problem, I'm unable to perform any delta loads. Is there anything I could be doing to fix this?
RegardsHi,
First check how extractor works in R/3 side using RSA3
Make a full load.
Now check the generic delta field of your generic extractor, lets say changed on date.
Do the SAP transaction ( take help from some Functional COnsultant ) to update that delta field. Note that record.
Now if u do the delta load with same extractor, you are suppose to get that record.
If not then there is some problem with FM or extracor.
Let me know what happens.
Thank-You.
Regards,
Vinod -
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 -
How to use 2 date field as delta control in generic extractor.
Hi colleagues:
I have developed a generic extractor to extract logistic data: Purchase Orders and Invoice. In order to do that, I have defined a view joining EKBE, EKKO, EKPO, EKET tables on R/3. By this approach, the delta mechanism is supposed to be controlled by the EKBE-BUDAT field and also by the EKPO-AEDAT field. Both fields are available on the view used to create the Datasource. However, the Datasource creation allows us to define just one field as delta control.
I have a few questions regarding to this scenario:
<b>1 - Is it possible to define 2 fields as delta control field on Generic Datasource?</b>
<b>2 - How about creating two similar Datasouces, one having AEDAT as delta control, the other having BUDAT as delta control, and then connect those Datasources to an unique Infosource on the bw side?</b>
Best regards
Waldemarhi,
1 - as far as I know it is not possible to define 2 fields
2 - this workaround is used often in cases like yours.
Just remember about order of extracting: first you extract new documents then changed
Regards,
Andrzej -
I am trying to have more then one field in my generic extractor as a delta and so far i can only set one field as delta in my generic extractor....can someone help me in setting more than one field as a delta in my custom generic extractor ????
The last delta performed will be stored in the ROOSGENDLM table....
Use this value and then fetch the delta pointers you need..
Here is how I would do it...
In the FM :
Look up value of DELTAID from table ROOSGENDLM for your datasource - this will give details of the last delta performed..
Then use this value and search for the actual delta pointers in your custom table - then perform your delta logic within the FM...
P.S The entry in ROOSGENDLM will come only after you init the datasource...
Maybe you are looking for
-
System generate PR for Stock material when it goes below specific quantity
Hi Gurus, My requirement is that system should generate PR for Stock material when it goes below specific quantity eg. 5 Qty. I think it is possible through MRP in that respective material master but I am not getting exactly what data I need to maint
-
How to use class.forName
I am trying to use Class.forName() from a string which is passed to me as argument. Class batchClass = Class.forName(args[1]); A jar file contains the class file for the string received above and I have this jar file in the manifest of my executable
-
Using SAP Business content with different client number
Hi, I want to use and upload client numbers into SAP BW in an InfoObject as master data. The client number is for example with 9 figures. Can I use the SAP standard InfoObject 0Client for that or is there another one or should I define my own InfoObj
-
Hi, I experience various locale problems on Solaris 10. One of them relates to the thousand separator of the fr_CA locale : its value is A0 (hex) rather than a space. It can be easily reproduced by the following command : LC_ALL=fr_CA; export LC_ALL;
-
Being new to this site, I am wondering how frequent are maintenance outages? The last time was over a weekend, but Friday it looks like almost the whole workday for EST is affected. I had read somewhere in the forum that the site is being moved to se