Generic datasource - Extract delta by FM
Hi,
I used the FM RSAX_BIW_GET_DATA_SIMPLE as template to extract data from datasource.
But this FM extarct full data.
I need to extract delta by FM.
Can you please send me a sample code that extract delta using timestamp?
Thanks,
Mohamad.
Thank you Soumya for the reply.
I need a sapmle code. That's mean a FM that extract from non sap table, by delta.
Best Regards,
Mohamad.
Similar Messages
-
Generic Datasource with Delta and functionmodule
Hi together,
who can help me ??
Ihave created a generic datasource with function module and
delta.
the extractor runs well while i use full update and also initialization.
If i start the delta extraction, the extractor crashed with short-dump.
the message is SAPSQL_INVALID_FIELDNAME
What can i do, and what is wrong.
regards
thorsten WeissHi Roberto,
here is the code from the function-module:
FUNCTION zbw_mm_get_eket.
""Lokale Schnittstelle:
*" 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 DEFAULT 1000
*" VALUE(I_INITFLAG) TYPE SBIWA_S_INTERFACE-INITFLAG OPTIONAL
*" VALUE(I_READ_ONLY) TYPE SBIW_BOOL DEFAULT SBIW_C_FALSE
*" TABLES
*" I_T_SELECT TYPE SBIWA_T_SELECT OPTIONAL
*" I_T_FIELDS TYPE SBIWA_T_FIELDS OPTIONAL
*" E_T_DATA OPTIONAL
*" EXCEPTIONS
*" NO_MORE_DATA
*" ERROR_PASSED_TO_MESS_HANDLER
INCLUDE lrsalk01.
DataSource for table EKET
TABLES: zv_mm_eket.
interne Tabelle für Bearbeitung
DATA: itab_0 TYPE TABLE OF zstr_eket WITH HEADER LINE.
TYPES: BEGIN OF typ_categ,
j_4kbwef TYPE atnam,
/afs/bwel TYPE j_4kbwef,
END OF typ_categ.
DATA: l_s_data_eket TYPE zstr_eket,
ld_cat_struct TYPE j_4kcsgr,
lt_cat_fields TYPE TABLE OF j_4kcif001,
ls_cat_fields TYPE j_4kcif001,
ls_mara TYPE mara,
l_tabix LIKE sy-tabix,
itab_cat TYPE TABLE OF typ_categ ,
ls_cat TYPE typ_categ,
h_feldsize1(8) TYPE c,"wegen Typ-konflikt im FB
h_feldsize2(8) TYPE c."wegen Typ-konflikt im FB
Auxiliary Selection criteria structure
DATA: l_s_select TYPE rsselect.
Maximum number of lines for DB table
STATICS: s_t_select LIKE rsselect OCCURS 0 WITH HEADER LINE,
s_t_fields LIKE rsfieldsel OCCURS 0 WITH HEADER LINE,
counter
s_counter_datapakid LIKE sy-tabix,
cursor
s_cursor TYPE cursor.
Select ranges
RANGES: l_r_ebeln FOR zv_mm_eket-ebeln,
l_r_ebelp FOR zv_mm_eket-ebelp,
l_r_bsart FOR zv_mm_eket-bsart.
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 'ZDS_V_MM_EKET'.
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
' function modul was created for DS ' &
'ZDS_V_MM_EKET"!'.
"message variable 2
RAISE error_passed_to_mess_handler.
ENDCASE.
APPEND LINES OF i_t_select TO s_t_select.
Fill parameter buffer for data extraction calls
S_T_SELECT-REQUNR = I_REQUNR.
S_T_SELECT-DSOURCE = I_DSOURCE.
S_T_SELECT-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_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_t_select INTO l_s_select WHERE fieldnm = 'EBELN'.
MOVE-CORRESPONDING l_s_select TO l_r_ebeln.
APPEND l_r_ebeln.
ENDLOOP.
LOOP AT s_t_select INTO l_s_select WHERE fieldnm = 'EBELP'.
MOVE-CORRESPONDING l_s_select TO l_r_ebelp.
APPEND l_r_ebelp.
ENDLOOP.
LOOP AT s_t_select INTO l_s_select WHERE fieldnm = 'BSART'.
MOVE-CORRESPONDING l_s_select TO l_r_bsart.
APPEND l_r_bsart.
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_t_fields) FROM zv_mm_eket
WHERE
ebeln IN l_r_ebeln AND
ebelp IN l_r_ebelp AND
bsart IN l_r_bsart.
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 i_maxsize.
FETCH NEXT CURSOR s_cursor
APPENDING CORRESPONDING FIELDS
OF TABLE itab_0
PACKAGE SIZE i_maxsize.
LOOP AT itab_0 INTO l_s_data_eket.
l_tabix = sy-tabix.
Lesen Erstellungsdatum aus EKKO
SELECT SINGLE aedat FROM ekko INTO l_s_data_eket-sydat
WHERE ebeln = l_s_data_eket-ebeln.
Lesen Partner aus EKPA
SELECT SINGLE lifn2 FROM ekpa INTO l_s_data_eket-plief
WHERE ebeln = l_s_data_eket-ebeln AND
ebelp = l_s_data_eket-ebelp AND
ekorg = l_s_data_eket-ekorg AND
werks = l_s_data_eket-werks .
IF NOT l_s_data_eket-matnr IS INITIAL .
*A Lesen material für Kategoriestruktur j_4kcsgr(F001 oder R002)
CLEAR ls_mara.
CALL FUNCTION 'J_3A1_LESEN_MARA_SINGLE'
EXPORTING
i_matnr = l_s_data_eket-matnr
IMPORTING
e_mara = ls_mara
EXCEPTIONS
param_not_valid = 1
OTHERS = 2.
IF sy-subrc NE 0.
ENDIF.
*E Lesen material für Kategoriestruktur j_4kcsgr(F001 oder R002)
*A Aufsplitten Bestandskategorie
REFRESH lt_cat_fields.
CALL FUNCTION 'J_4KG_SPLIT_CAT'
EXPORTING
client = sy-mandt
csgr = ls_mara-j_4kcsgr
cat_appl = 'S'
cat_value = l_s_data_eket-j_4kscat
NECESSARY_SPECIFIED = ' '
TABLES
cat_fields_tab = lt_cat_fields
EXCEPTIONS
no_category_structure_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE."sy-subrc <> 0
Verarbeitung der Ergebnisse
LOOP AT lt_cat_fields INTO ls_cat_fields.
IF ls_cat_fields-j_4kbwef EQ 'BW_CAT_SCONFIG'.
l_s_data_eket-zz_bwel_sconfig = ls_cat_fields-j_4kcatv.
ENDIF.
IF ls_cat_fields-j_4kbwef EQ 'BW_CAT_CONFIG'.
l_s_data_eket-zz_bwel_config = ls_cat_fields-j_4kcatv.
ENDIF.
IF ls_cat_fields-j_4kbwef EQ 'BW_CAT_COUNTRY'.
l_s_data_eket-j_3abwel_country = ls_cat_fields-j_4kcatv.
ENDIF.
IF ls_cat_fields-j_4kbwef EQ 'BW_CAT_COUNTRYGRP'.
l_s_data_eket-zz_bwel_coungrp = ls_cat_fields-j_4kcatv.
ENDIF.
IF ls_cat_fields-j_4kbwef EQ 'BW_CAT_STOCKTYPE'.
l_s_data_eket-zz_bwel_stktype = ls_cat_fields-j_4kcatv.
ENDIF.
IF ls_cat_fields-j_4kbwef EQ 'BW_CAT_ORDER'.
l_s_data_eket-zz_bwel_order = ls_cat_fields-j_4kcatv.
ENDIF.
IF ls_cat_fields-j_4kbwef EQ 'BW_CAT_QUALITY'.
l_s_data_eket-j_3abwel_qual = ls_cat_fields-j_4kcatv.
ENDIF.
ENDLOOP."lt_cat_fields
ENDIF.
*E Aufsplitten Bestandskategorie
*A Aufsplitten MAtrix
IF NOT l_s_data_eket-j_3asize IS INITIAL.
CALL FUNCTION 'J_3A_SPLIT_SIZES'
EXPORTING
matnr = l_s_data_eket-matnr
j_3asize = l_s_data_eket-j_3asize
IMPORTING
j_3akord1 = l_s_data_eket-j_3abwel_color
j_3akord2 = h_feldsize1
j_3akord3 = h_feldsize2
EXCEPTIONS
no_grid_determined = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
l_s_data_eket-zz_bwel_size1 = h_feldsize1.
l_s_data_eket-zz_bwel_size2 = h_feldsize2.
ENDIF.
ENDIF."not l_s_data_eket-J_3ASIZE is initial
*E Aufsplitten MAtrix
MODIFY itab_0 FROM l_s_data_eket INDEX l_tabix.
ENDIF."not l_s_data_eket-matnr is initial
ENDLOOP. "itab_0
An Ausgabe-Tabelle übergeben
APPEND LINES OF itab_0 TO e_t_data.
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
thorsten -
Generic datasource with Delta queue
Hi All,
I 've created a generic datasource on prices tables A* and KONP. Next, I used HowTo document "create generic datasource that uses delta queue", finding the right BTE that could catch prices modification. Up to this point, everything works fine.
I've extracted an Init delta to BW and now, on R/3, in RSA7, I can see a delta queue for my generic datasource.
When I modify price conditions in VK12, BTE works fine and I can see the counter in RSA7 increasing. I also can see new entries in table TRFCQOUT with status READY. (either in SE16 or in SMQ1 )
The problem is :
- in RSA7, if I want to display the posted data, system returns an empty list (whereas the counter is different from 0)
- when I run a delta InfoPackage, no data is sent to BW, but in table TRFCQOUT, status has been changed to READ for entries that previously had status READY (and old entries that had status READ due to a previous delta upload are deleted)
Does anyone has any idea about the reason of the issue ?
Thanks for any help
AJSure, I can.
The problem was in the specific coding that update the delta queue : not all the fields were updated and some of these fields were used as selection criteria in th delta infopackage...
in RSA7, when you try to see the data in the queue, the system only shows you the records that match the selection criterias of your delta IP...so in our case, because of those empty fields, no records were selected...
AJ -
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 -
BW GENERIC EXTRACTION DELTA PROBLEM
I have a problem for extracting delta from R/3 to BW.
Init data is loaded from R/3 to BW system for ZST_ORDER datasource.
Repair full request and selection parameter is created on date August 1st 2007 to August15th 2007.
During the delta extraction - A lot of records around 500,000 records are getting extracting from R/3 to BW.
R/3 side - There is only 5 entries available in AUFK table.
It should extract delta only less than 35 entries.
ZST_ORDER is generic datasource . Delta captured field is DATUM -New status changed record value 2.
Advance Thx for your help. The code looks like
FUNCTION ZST_ORDER.
""Local Interface:
*" IMPORTING
*" REFERENCE(I_REQUNR) TYPE SRSC_S_IF_SIMPLE-REQUNR
*" REFERENCE(I_DSOURCE) TYPE SRSC_S_IF_SIMPLE-DSOURCE OPTIONAL
*" REFERENCE(I_MAXSIZE) TYPE SRSC_S_IF_SIMPLE-MAXSIZE DEFAULT 1000
*" REFERENCE(I_INITFLAG) TYPE SRSC_S_IF_SIMPLE-INITFLAG OPTIONAL
*" REFERENCE(I_READ_ONLY) TYPE SRSC_S_IF_SIMPLE-READONLY OPTIONAL
*" 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 ZST_ORDEROPTIONAL
*" EXCEPTIONS
*" NO_MORE_DATA
*" ERROR_PASSED_TO_MESS_HANDLER
TABLES: AUFK, "Order master data
TJ02T, "System status texts
TJ30T, "Texts for user status
JSTO. "Status object information
DATA DECLARATION
DATA: L_DATE TYPE DATS,
L_STATUS TYPE J_STATUS,
L_LINES TYPE SY-TABIX,
L_CHANGED(1) TYPE C.
Auxiliary Selection criteria structure
DATA: L_S_SELECT TYPE SRSC_S_SELECT.
Another data objects
Service Order Data
DATA: BEGIN OF LT_AUFK OCCURS 0,
AUFNR LIKE AUFK-AUFNR,
AUART LIKE AUFK-AUART,
ERDAT LIKE AUFK-ERDAT,
AEDAT LIKE AUFK-AEDAT,
STDAT LIKE AUFK-STDAT,
AEZEIT LIKE AUFK-AEZEIT,
ERFZEIT LIKE AUFK-ERFZEIT,
IDAT1 LIKE AUFK-IDAT1,
IDAT2 LIKE AUFK-IDAT2,
IDAT3 LIKE AUFK-IDAT3,
LOEKZ LIKE AUFK-LOEKZ,
OBJNR LIKE AUFK-OBJNR,
END OF LT_AUFK.
Individual Object Status
DATA: BEGIN OF LT_JEST OCCURS 0,
OBJNR LIKE JEST-OBJNR,
STAT LIKE JEST-STAT,
INACT LIKE JEST-INACT,
CHGNR LIKE JEST-CHGNR,
END OF LT_JEST.
***Change Documents for System/User Statuses (Table JEST)
DATA: BEGIN OF LT_JCDS OCCURS 0,
OBJNR LIKE JCDS-OBJNR,
STAT LIKE JCDS-STAT,
CHGNR LIKE JCDS-CHGNR,
USNAM LIKE JCDS-USNAM,
UDATE LIKE JCDS-UDATE,
UTIME LIKE JCDS-UTIME,
INACT LIKE JCDS-INACT,
CHIND LIKE JCDS-CHIND,
END OF LT_JCDS.
DATA: BEGIN OF LT_JSTO OCCURS 0,
OBJNR LIKE JSTO-OBJNR,
STSMA LIKE JSTO-STSMA,
END OF LT_JSTO.
STATIC FIELDS
STATICS: S_S_IF TYPE SRSC_S_IF_SIMPLE,
counter
S_COUNTER_DATAPAKID LIKE SY-TABIX,
cursor
S_CURSOR TYPE CURSOR.
User-defined Ranges
RANGES: L_R_AUFNR FOR AUFK-AUFNR ,
L_R_ERDAT FOR AUFK-ERDAT.
Initialization mode (first call by SAPI) or data transfer mode
(following calls) ?
IF I_INITFLAG = SBIWA_C_FLAG_ON.
Check DataSource validity
CASE I_DSOURCE.
WHEN 'ZST_ORDER '.
WHEN OTHERS.
RAISE ERROR_PASSED_TO_MESS_HANDLER.
ENDCASE.
Copy selection criteria for future extractor calls (fetch-calls)
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.
S_S_IF-INITFLAG = I_INITFLAG.
APPEND LINES OF I_T_FIELDS TO S_S_IF-T_FIELDS.
ELSE.
First data package -> OPEN CURSOR
IF S_COUNTER_DATAPAKID = 0.
LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT
WHERE FIELDNM = 'AUFNR'.
MOVE-CORRESPONDING L_S_SELECT TO L_R_AUFNR.
APPEND L_R_AUFNR.
ENDLOOP.
LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT
WHERE FIELDNM = 'ERDAT'.
MOVE-CORRESPONDING L_S_SELECT TO L_R_ERDAT.
APPEND L_R_ERDAT.
ENDLOOP.
LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT
WHERE FIELDNM = 'DATUM'.
L_DATE = L_S_SELECT-LOW.
ENDLOOP.
OPEN CURSOR WITH HOLD S_CURSOR FOR
SELECT AUFNR AUART ERDAT
AEDAT OBJNR AEZEIT
STDAT ERFZEIT IDAT1
IDAT2 IDAT3 LOEKZ
FROM AUFK
WHERE AUFNR IN L_R_AUFNR AND
ERDAT IN L_R_ERDAT.
ENDIF.
Fetch records into interface table LT_AUFK
FETCH NEXT CURSOR S_CURSOR
APPENDING CORRESPONDING FIELDS OF TABLE LT_AUFK
PACKAGE SIZE S_S_IF-MAXSIZE.
IF SY-SUBRC <> 0.
CLOSE CURSOR S_CURSOR.
RAISE NO_MORE_DATA.
ENDIF.
Determining the number of lines of the table LT_AUFK .
L_LINES = LINES( LT_AUFK ).
IF L_LINES IS NOT INITIAL.
Sort the internal table LT_AUFK
SORT LT_AUFK BY OBJNR ASCENDING.
Selecting the records from JCDS depending upon the entries in LT_AUFK.
SELECT OBJNR STAT CHGNR USNAM
UDATE UTIME INACT CHIND
INTO TABLE LT_JCDS
FROM JCDS
FOR ALL ENTRIES IN LT_AUFK
WHERE OBJNR EQ LT_AUFK-OBJNR
AND ( CHGNR EQ '001'
OR UDATE >= L_DATE ).
Sort the internal table lt_jcds.
SORT LT_JCDS BY OBJNR STAT CHGNR ASCENDING.
Select records from table JEST depending upon the entries in LT_AUFK.
SELECT OBJNR STAT INACT CHGNR
INTO TABLE LT_JEST
FROM JEST
FOR ALL ENTRIES IN LT_AUFK
WHERE OBJNR = LT_AUFK-OBJNR.
SELECT OBJNR STSMA
INTO TABLE LT_JSTO
FROM JSTO
FOR ALL ENTRIES IN LT_AUFK
WHERE OBJNR = LT_AUFK-OBJNR.
SORT LT_JSTO BY OBJNR.
ENDIF.
LOOP AT LT_JEST.
CLEAR: LT_AUFK,
l_changed.
CLEAR L_CHANGED.
CLEAR LT_JSTO.
READ TABLE LT_JSTO WITH KEY OBJNR = LT_JEST-OBJNR BINARY SEARCH.
IF SY-SUBRC EQ 0.
E_T_DATA-STSMA = LT_JSTO-STSMA.
ENDIF.
*End**
Read the data from LT_AUFK.
READ TABLE LT_AUFK WITH KEY OBJNR = LT_JEST-OBJNR BINARY SEARCH.
E_T_DATA-AUFNR = LT_AUFK-AUFNR.
E_T_DATA-AUART = LT_AUFK-AUART.
E_T_DATA-ERDAT = LT_AUFK-ERDAT.
E_T_DATA-AEDAT = LT_AUFK-AEDAT.
E_T_DATA-AEZEIT = LT_AUFK-AEZEIT.
E_T_DATA-ERFZEIT = LT_AUFK-ERFZEIT.
E_T_DATA-IDAT1 = LT_AUFK-IDAT1.
E_T_DATA-IDAT2 = LT_AUFK-IDAT2.
E_T_DATA-IDAT3 = LT_AUFK-IDAT3.
E_T_DATA-LOEKZ = LT_AUFK-LOEKZ.
E_T_DATA-INACT = LT_JEST-INACT.
E_T_DATA-CHGNR = LT_JCDS-CHGNR.
e_t_data-datum = lt_aufk-erdat.
READ TABLE LT_JCDS WITH KEY OBJNR = LT_JEST-OBJNR
STAT = LT_JEST-STAT
CHGNR = '001'
BINARY SEARCH.
IF SY-SUBRC EQ 0.
E_T_DATA-UDATE = LT_JCDS-UDATE.
E_T_DATA-AEDAT = LT_JCDS-UDATE.
E_T_DATA-UTIME = LT_JCDS-UTIME.
E_T_DATA-AEZEIT = LT_JCDS-UTIME.
E_T_DATA-CHIND = LT_JCDS-CHIND.
E_T_DATA-USNAM = LT_JCDS-USNAM.
e_t_data-chgnr = lt_jcds-chgnr.
IF LT_JCDS-UDATE GE L_DATE
AND L_DATE IS NOT INITIAL.
L_CHANGED = 'X'.
ENDIF.
IF LT_JEST-CHGNR NE '001'.
CLEAR LT_JCDS.
READ TABLE LT_JCDS WITH KEY OBJNR = LT_JEST-OBJNR
STAT = LT_JEST-STAT
CHGNR = LT_JEST-CHGNR
BINARY SEARCH.
IF SY-SUBRC EQ 0.
L_CHANGED = 'X'.
E_T_DATA-AEDAT = LT_JCDS-UDATE.
E_T_DATA-AEZEIT = LT_JCDS-UTIME.
E_T_DATA-CHIND = LT_JCDS-CHIND.
E_T_DATA-USNAM = LT_JCDS-USNAM.
e_t_data-chgnr = lt_jcds-chgnr.
ENDIF.
ENDIF.
IF LT_JEST-STAT(1) EQ 'I'.
E_T_DATA-ISTAT = LT_JEST-STAT.
ELSEIF LT_JEST-STAT(1) EQ 'E'.
E_T_DATA-ESTAT = LT_JEST-STAT.
ENDIF.
IF L_CHANGED EQ 'X'
AND L_DATE IS NOT INITIAL.
APPEND E_T_DATA.
ELSEIF L_DATE IS INITIAL.
APPEND E_T_DATA.
ENDIF.
ENDIF.
CLEAR: LT_AUFK,
E_T_DATA.
ENDLOOP.
CLEAR LT_JEST.
REFRESH LT_JEST.
next data package
S_COUNTER_DATAPAKID = S_COUNTER_DATAPAKID + 1.
ENDIF. "Initialization mode or data extraction ?
ENDFUNCTION.hi,
for that quantity SALK3 is referring a different table in the reference field for your table fields. check that field and refer the correct table for that field in table view.
table join has a problem in that. i think your joined some other table with that field. replace the field assignment or create a new view.
hope this help you
regards
harikrishna N -
GENERIC EXTRACTION DELTA SETTINGS
HI Everyone,
I need to know how we set up Generic Delta in the following scenarios.
1) When we have a Generic Extractor based on a View and this View has multiple table(For Example 2 Tables to start with).
Then how wil you have the Generic Delta based on which field from which table? FOr example Table 1 has Header Data and Table2 has Item Data.Our Functional Consultant says Header can change or Item data can change.So we need to pick up the record based on the change in each of the tables. For Example , there is a field called CHANGED DATE(AENDT) which is present in both the tables. Now , in the view if I add AENDT from Table1, then Table1's chnages will only be updated i guess. What if the change occurs in TABLE2 (ITEM).
I dont know how to go about this. The solution is I created two Generic Extractors with two views (The only difference between the views is AENDT field coming from TABLE1 in the first extractor and AENDT field coming from TABEL2 in the second Extractor).But I think this is not the best way and there must be an alternative for this
2) The other issue is If I have a Function Module which Brings data from Multiple Tables, then how to select the field on which Delta is set.Do we need to write some Logic. After writing the logic, can we directly set the Generic Delta in RSO2 or is there any other way to do it.
Regards,
SamirHi Samir,
We too had a simliar requirement. In your case you can create a FM generic datasource on top of the view. The view in your case will get the intersection of the Header and Item level data. the main challenge was to get the delta records as we can have both Orders created and changed , and in Delta can be maintained on only one field.
To overcome this issue in the FM coding, Steps:
create Generic datasource, with Delta on changed on date (AENDT)
So during extraction you get the date on which the last Load was succesfully completed using the (AENDT).
So in the selection part use the statement similar to this:
select * from vbap into table it_order where
( erdat in l_r_erdat or aedat in l_r_zaedat ) and
( erdat in l_r_aedat or aedat in l_r_aedat )
Sample generic datasource for your reference:
http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/403b299b-94e5-2c10-a3b4-e2cecb8ee869?quicklink=index&overridelayout=true
Hope this helps.
Regards,
Umesh. -
Generic datasource delta enabling against S973 & S966
hellow gurus
m workin on BW 3.5
i have to create Generic datasource for Warrqanty FOC against Sales
for that i need to create a datasource using S966 and S973 View
could u plzz tel me
on which field should i make Delta enable in generic Datasource and
what shuld i selc in DATA-Specific Field -
and which radio button
Time Stamp
or Cal Day or Numeric Pointer
and
Saftety interval upper and lower limit for the same.
points will be awarded as my gesture and thanks for ur efforts
regardsHi,
The following is the criteria that needs to be looked upon during Delta enabling in Generic Datasource.
Delta Specific Field :
Time Stamp - If you are extracting data for critical modules like FICO, go for Time stamp.
Calendar Day - If data is extracted from modules that does not have huge postings in a day, like Sales or Delivery Billing, go for Calendar day.
Numeric Pointer - For sequentially generated records like GLPCA, go for Numeric Pointer.
Safety Interval (Upper & Lower Limits) :
(1) If delta field is Date (Record Create Date or change date), then use Upper Limit of 1 day.This will load Delta in BW as of yesterday. Leave Lower limit blank.
(2) If delta field is Time Stamp, then use Upper Limit of equal to 1800 Seconds (30 minutes). This will load Delta in BW as of 30 minutes old. Leave Lower limit blank.
(3) If delta field is a Numeric Pointer i.e. generated record # like in GLPCA table, then use Lower Limit. Use count 10-100. Leave upper limit blank. If value 10 is used then last 10 records will be loaded again.
If a record is created when load was running, those records may get lost. To prevent this situation, lower limit can be used to backup the starting sequence number.
This may result in some records being processed more than once; therefore, be sure this DataSources is only feeding an ODS Object.
Regards,
Balaji V -
Delta-Specific Field for Generic DataSource
Hi,
I have defined a Generic DataSource for Transaction data on R/3-Side.
This DataSource is based on View/Table EKKO (Purchasing Document Header) for some specific customer requirements. Delta-Specific Field is AEDAT (Calend. Day). Safety Interval Upper Limit is set 1 Cal. Days. No Safety Interval Lower Limit has been defined. "New Status for Changed Records" has been marked.
When we see this DataSource in Extractor Checker (RSA3), this data source
Extracted all delta data where AEDAT is not blank.
When I see the content of table EKKO, I can find few records where AEDAT is blank.
These records are missing in Extractor Checker.
How I can solve this problem? Which delta-specific field can be used in
this generic Datasource? Should I define an additional Generic DataSource with
Delta-Specific Field BEDAT (as BEDAT is filled when AEDAT is blank in table EKKO)?
Thanks for the answer.Delta based on calday wont pick all the records which are recently posted and you can not run the delta more than one time in a day ,end of the day only you can run the delta.
Set the delta as Tme Stamp and specify the Upper limit to 5 minuts.
We can run the delta no. times and pick the documents posted in short interval of time.
With Regards,
Kishore. -
Generic DataSource & Delta setup
Hello Folks,
I am trying to get my Generic DataSources and Delta concepts straight and got more confused after reading a white paper titled "how to ...create generic delta". <b>I am on SAP R/3 4.6c and BW 3.0b.</b>
<b>This white paper talks about creating generic datasource and delta using RSO2 in BW</b>. It explains how to specify delta-specific field and then select a delta type (AIE or ADD) which sets the "delta update" flag after generating.
My question is
1)should we create a generic datasource and delta from BW as suggested by this white paper and not in SAP R/3 directly using RSO2 and RSA3? what are the pros and cons.
I tried creating a generic datasource in SAP R/3 using RSO2 since these transactions are available in SAP R/3. I noticed the "delta update" checkbox was always(or for the cases I tried) blank and protected. Also noticed a menu item under "Datasource" called "setup delta" to be grayed out as well. So looks like, a delta can be set up in SAP R/3 but does not let me do it.
My question is
1) why can't I set up a delta?Hi Jay,
First, you do not create a Datasource from BW. A Datasource is created in R/3. You replicate them to BW afterwards so that you can create/map them to Transfer Rules.
Datasource creation is in R/3 only. You can of course create BW as a source of data for other systems but thats something else.
Creating a <b>GENERIC DELTA</b> is based only on <b>TIMESTAMP</b>, <b>NUMERIC POINTER</b> and <b>CALENDAR DAY</b>. <i>Delta Check box</i> is really grayed out for <b>GENERIC DATASOURCES</b> because once you specify that your generic data source is <i>DELTA</i> capable by using any of the three options above as DELTA, then the <i>Delta Check Box</i> is automatically checked.
What <i>Setup Delta</i> are you referring that you cannot do?
--Jkyle -
Cannot create R3TR OSOA Version from a Generic Datasource
Hello my friends,
I need your help, please,
I have created a Generic Datasource, this generic datasource extracts data from a View in ECC, when I create the datasource and save it(RSO2 transaction), the system(ECC) only show me the R3TR OSOD object available to transport it, I need see the R3TR OSOA object to transport de datasource from Dev to QA system. So when I transport the datasource, i can't find the active version in QA System.
I think that this could be an authorizations issue, but i am not very sure.
This are the steps that I am executing:
1.- Assign the datasource to an Object Directory.
2.-The Object generated is OSOD(Delivery version) type.
Thanks for your help!!
Regards.
Antonio.HI,
Have you enhanced any fields if please collect the append structure
that is the not problem first collect the TR at RSA6 same data source.
please find the doc how to collect the data source in ECC.
ECC Data sources Transportation
Thanks,
Phani. -
Delta extraction for a generic datasource
Hi BWers,
I want put in Delta the extraction of a generic datasource.
Currently this generic datasource is based on the table VBPA (Sales Document: Partner). Any time field exists.
We need a time field in order to converse to a Delta extraction. This time field exists in the table VBAP (Sales Document: Item data). In fact two time fields exist: one which is filled at the creation of the sales order (ERDAT), another at the change of the sales order (AEDAT).
The fields VBELN, POSNR and MANDT are keys in the tables VBAP and VBPA.
The table VBAP changes when partner functions is created or changed in a sales order (VBELN) :
- When it is a creation of a new sales order (with new partner functions), a new record is created in VBAP and the field ERDAT (Created on) is filled. The field AEDAT (Changed on) is empty.
- When is a change of an existing sales order, the corresponding record in VBAP changed, and the field AEDAT is filled. ERDAT stays unchanged.
In order to converse to the Delta extraction, i need a only one time-field (calendar day) in RSO2 / Generic Delta.
But there is 2 time-fields ERDAT and AEDAT. So i just need to get AEDAT if it is filled, else if AEDAT is empty I will get ERDAT.
I would base my datasource on a view between VBPA and VBAP with one field which will be filled by AEDAT or ERDAT (with the conditions below). But it seems it is not possible.
Can you give me other ideas ?
Thanks a lot.
Cheers,
Vince.In order to create a generic delta from two source fields, ERDAT and AEDAT in this case, you're going to have to create your generic extractor from a Function Module. Otherwise you'll only have the standard functionality available to you for creating the generic delta, which allows you to base it on only one column.
Here's a sample you can use, that was created for VBFA, and change for your DataSource.
FUNCTION y_docu_flow.
*"*"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 YSDS_DOCU_FLOW OPTIONAL
*" EXCEPTIONS
*" NO_MORE_DATA
*" ERROR_PASSED_TO_MESS_HANDLER
*& Global Data Declarations
* Type for VBFA Data
TYPES : BEGIN OF ty_vbfa ,
mandt TYPE vbfa-mandt ,
vbelv TYPE vbfa-vbelv ,
posnv TYPE vbfa-posnv ,
vbeln TYPE vbfa-vbeln ,
posnn TYPE vbfa-posnn ,
vbtyp_n TYPE vbfa-vbtyp_n ,
rfmng TYPE vbfa-rfmng ,
meins TYPE vbfa-meins ,
rfwrt TYPE vbfa-rfwrt ,
waers TYPE vbfa-waers ,
vbtyp_v TYPE vbfa-vbtyp_v ,
plmin TYPE vbfa-plmin ,
erdat TYPE vbfa-erdat ,
aedat TYPE vbfa-aedat ,
END OF ty_vbfa .
* Internal Tables and Selection Criteria Structure
DATA : t_vbfa TYPE STANDARD TABLE OF ty_vbfa ,
l_s_select TYPE srsc_s_select .
* Field Symbols
FIELD-SYMBOLS : <fs_fields> TYPE rsfieldsel.
* Constants
CONSTANTS : c_error_msgty TYPE rslogparms-msgty VALUE 'E' ,
c_error_msgid TYPE rslogparms-msgid VALUE 'YAERO_WTY_VSR',
c_error_msgv1 TYPE rslogparms-msgv1 VALUE ' MESSAGE_V1 ' ,
c_error_msgv2 TYPE rslogparms-msgv1 VALUE ' MESSAGE_V2 ' ,
c_error_msgv3 TYPE rslogparms-msgv1 VALUE ' MESSAGE_V3 ' ,
c_error_msgv4 TYPE rslogparms-msgv1 VALUE ' MESSAGE_V4 ' ,
c_error_msgno TYPE rslogparms-msgno VALUE 999 ,
c_alias(2) TYPE c VALUE 'A~' ,
c_vbfa TYPE dntab-tabname VALUE 'VBFA' .
* Maximum Database Lines, Data Package Counter and Cursor
STATICS : s_s_if TYPE srsc_s_if_simple ,
s_counter_datapakid TYPE sy-tabix ,
s_cursor TYPE cursor .
* Select Ranges
RANGES : r_erdat FOR vbfa-erdat ,
r_aedat FOR vbfa-aedat ,
r_vbelv FOR vbfa-vbelv ,
r_posnv FOR vbfa-posnv ,
r_vbeln FOR vbfa-vbeln ,
r_posnn FOR vbfa-posnn .
*& Processing Logic
* Refresh Internal Table and Clear work area
REFRESH: t_vbfa ,
e_t_data .
* Check the Extraction Mode (Delta Initialization Or Delta)
IF i_initflag EQ sbiwa_c_flag_on.
* Determine DataSource Validity
IF i_dsource NE 'YSDDS_DOCU_FLOW'.
* Call Function to Write Log
CALL FUNCTION 'RSAL_LOG_WRITE'
EXPORTING
i_msgty = c_error_msgty
i_msgid = c_error_msgid
i_msgno = c_error_msgno
i_msgv1 = c_error_msgv1
i_msgv2 = c_error_msgv2
i_msgv3 = c_error_msgv3
i_msgv4 = c_error_msgv4.
* Raise Exception
RAISE error_passed_to_mess_handler.
ENDIF. " IF i_dsource NE 'YSDDS_DOCU_FLOW'.
* Append the Selection Criteria
APPEND LINES OF i_t_select TO s_s_if-t_select.
* Fill parameter buffer for data extraction calls
MOVE : i_requnr TO s_s_if-requnr ,
i_dsource TO s_s_if-dsource ,
i_maxsize TO s_s_if-maxsize .
* Append Fields to be Selected
APPEND LINES OF i_t_fields TO s_s_if-t_fields.
* Add the Alias to Fields
LOOP AT s_s_if-t_fields
ASSIGNING <fs_fields>.
CONCATENATE c_alias
<fs_fields>-fieldnm
INTO <fs_fields>-fieldnm.
CONDENSE <fs_fields>-fieldnm NO-GAPS.
ENDLOOP. " LOOP AT s_s_if-t_fields..
ELSE. " IF i_initflag EQ sbiwa_c_flag_on
* For First Data Package, Open Cursor
IF s_counter_datapakid EQ 0.
* Clear Ranges
CLEAR : r_erdat ,
r_aedat ,
r_vbelv ,
r_posnv ,
r_vbeln ,
r_posnn .
* Fill Selection Ranges
LOOP AT s_s_if-t_select
INTO l_s_select.
* Determine Selection Range Field Name
CASE l_s_select-fieldnm.
* Created On Date
WHEN 'ERDAT'.
MOVE : l_s_select-sign TO r_erdat-sign ,
l_s_select-option TO r_erdat-option ,
l_s_select-low TO r_erdat-low ,
l_s_select-high TO r_erdat-high .
APPEND r_erdat.
* Fill the change date too
MOVE r_erdat[] TO r_aedat[].
* Predecessor Document Number
WHEN 'VBELV'.
MOVE : l_s_select-sign TO r_vbelv-sign ,
l_s_select-option TO r_vbelv-option ,
l_s_select-low TO r_vbelv-low ,
l_s_select-high TO r_vbelv-high .
APPEND r_vbelv.
* Predecessor Document Line Item
WHEN 'POSNV'.
MOVE : l_s_select-sign TO r_posnv-sign ,
l_s_select-option TO r_posnv-option ,
l_s_select-low TO r_posnv-low ,
l_s_select-high TO r_posnv-high .
APPEND r_posnv.
* Successor Document Number
WHEN 'VBELN'.
MOVE : l_s_select-sign TO r_vbeln-sign ,
l_s_select-option TO r_vbeln-option ,
l_s_select-low TO r_vbeln-low ,
l_s_select-high TO r_vbeln-high .
APPEND r_vbeln.
* Successor Document Line Item
WHEN 'POSNN'.
MOVE : l_s_select-sign TO r_posnn-sign ,
l_s_select-option TO r_posnn-option ,
l_s_select-low TO r_posnn-low ,
l_s_select-high TO r_posnn-high .
APPEND r_posnn.
ENDCASE. " CASE l_s_select-fieldnm.
ENDLOOP. " LOOP AT s_s_if-t_select..
* Open Cursor on View to Fetch data
* If full load with Selection on Fiscal Year
IF r_aedat[] IS INITIAL.
* Full Extraction
OPEN CURSOR
WITH HOLD s_cursor FOR
SELECT (s_s_if-t_fields)
FROM vbfa AS a
JOIN pnwtyv AS b
ON a~vbelv EQ b~sdvbeln
WHERE a~vbelv IN r_vbelv
AND a~posnv IN r_posnv
AND a~vbeln IN r_vbeln
AND a~posnn IN r_posnn
AND a~rfmng NE 0
AND a~erdat IN r_erdat
AND b~sdvbeln NE space.
ELSE.
* Delta Extraction Using ERDAT and AEDAT
OPEN CURSOR
WITH HOLD s_cursor FOR
SELECT (s_s_if-t_fields)
FROM vbfa AS a
JOIN pnwtyv AS b
ON a~vbelv EQ b~sdvbeln
WHERE a~vbelv IN r_vbelv
AND a~posnv IN r_posnv
AND a~vbeln IN r_vbeln
AND a~posnn IN r_posnn
AND a~rfmng NE 0
AND ( a~erdat IN r_erdat
OR a~aedat IN r_aedat )
AND b~sdvbeln NE space.
ENDIF. " IF r_aedat[] IS INITIAL
ENDIF. " IF s_counter_datapakid..
* Fetch Records into Interface Table
FETCH NEXT CURSOR s_cursor
APPENDING CORRESPONDING FIELDS
OF TABLE t_vbfa
PACKAGE SIZE s_s_if-maxsize.
* No More Data, Raise Exception
IF sy-subrc NE 0.
* Close the Cursor
CLOSE CURSOR s_cursor.
* Raise Exception
RAISE no_more_data.
ELSE.
* Move Extracted Data to Output Structure
MOVE t_vbfa[] TO e_t_data[].
* Release Memory
FREE t_vbfa.
* Sort Output Structure
SORT e_t_data BY vbelv
posnv
vbeln
posnn
vbtyp_n.
* Delete Duplicate Records from Output Structure
DELETE ADJACENT DUPLICATES
FROM e_t_data
COMPARING vbelv
posnv
vbeln
posnn
vbtyp_n.
* Increment Data Package Number
s_counter_datapakid = s_counter_datapakid + 1.
ENDIF. " IF sy-subrc NE 0
ENDIF. " IF i_initflag EQ sbiwa_c_flag_on
ENDFUNCTION.
Edited by: Dennis Scoville on Jul 16, 2009 8:29 AM
Edited by: Dennis Scoville on Jul 16, 2009 8:29 AM -
Delta extraction for COPA generic datasource
Hi,
I have created generic datasource for COPA with timestamp as delta.I have initialized the delta in BW and was able to extract the same number of records which I had in RSA3.To test the delta created couple of records and when tried to extract it was giving me 0 records with Info doc status 8 in the status tab.The processing is red and it does not drop down. I checked in the the roosource table in R3 and it shows delta process as AIE and safety interval is 120 for the timestamp(will change it later).The safety interval is just 120 seconds. One more thing is when I initialized the delta on the R3 side in RSA7 I can find my datasource but under the status tab it shows some other datasource and also the delta field and current status are empty. So do u think I have to add the UPMOD field to my generic datasource or any of your suggestions for creating delta are welcome.
Regards,
Kal -
Delta issue on a Generic Datasource
Hi
I had a Generic Datasource on a Z table.
The Z table had a Date field on which Delta is based.The Postings are performed manually.
How to solve the delta issue in the below scenario.
Ex; A user made a manual posting with a date 09AUG2010 today and delta is extracted to BW.
But tommorow a used made another posting with a date 14JULY2010....
Currently that record is not being extracted....how can i resolve this
ThanksHi,
Once the data source is created you will extract the data till that date and as the delta is set it will fetch the newly updated records .But i dont think one can post with the back dates in R/3 side.
If i'm not wrong if you are asking regarding record got missed out them wht need to be done?
Then do the repair full request and pull the missed delta records and it wont effect the delta settings.
Regards
KP -
Generic Datasource on table IMRG in R/3- delta on timestamp is it ok ?
Hi
I am creating Generic datasource based on table IMRG in R/3, This has stoppages related data. which we need in BI report. There is a field for Time-stamp in the table, i have checked values in table IMRG, but in R/3 it shows no data for the time-stamp.
Now i want to create delta basis for this generic datasource based on table, so shall i create delta based on time-stamp or date field.
If I create delta based on time-stamp will it create problem in delta extraction subsequently? Please share your experience in such a cases.There is a field for Time-stamp in the table, i have checked values in table IMRG, but in R/3 it shows no data for the time-stamp.
Delta specific field should be something which defines changes in your table, not something which is blank always.Based on the change in this delta specific field only delta will be pulled.Having it blank will never pull you delta.
Hope this helps. -
Error while extracting data from Generic datasource
Hello Gurus,
I have encountered an error "Errors in source system" with status red while extracting data from generic datasource into DSO.
I have done below things:-
1. Checked the jobs in source system, the job is successfully completed
2. The generic datasource is active and supporting delta with calender day in source system.
3. No TRfc error and no idocs stucked.
4. No short dumps in source system.
5. The delta queue(RSA7) is showing 0 with status as green.
6. Replicated the datasource On BW side and also activated the transfer rules by RS_TRANSU_ACTIVATE_ALL
The problem has not yet solved. Could you guys please suggest me what might be the reason for this error......
Thanks,
SonuHello,
I have used the generic delta using calender day.
Safety upper limit : - 1
Safety lowerr limit : - 0
I have made the entries in va01 transaction, but the delta queus is not getting updated which should show 1.
Do Generic extraction require any job to transfer data from Database table to delta queue.
We are not able to get the delta records on BW side. Please suggest.
Please suggest.
Thanks,
Sonu
Maybe you are looking for
-
HP LaserJet Pro M1217 nfw MFP - Scanner Error 22
We are having Scan/Copy/Fax issues. Specifically "Scanner Error 22" (Yes 22, no not 52). I cannot find a manual specific to this model. When I bring one up via HP's website the actual pdf of the manual is for two other versions and they have the Erro
-
Special Standard printer only for acrobat reader, is this possible? Registry Hack
In my networking earea are a lot of printers also a big toshiba copying mashine. While printing a pdf file to it with an PCL6 printer driver it takes a lot of time to print this. When i take a Postscript driver it runs faster ... so when my users wil
-
Multiple legal entities in one Request Set
Hi, I have a question that hopefully someone can help with. It will make life so much easier here! In our environment on 11.5.9, we have multiple legal entities each a separate set of books. We're trying to create a request set to run multiple financ
-
Why is my shipping taking so long?
i ordered my macbook pro 15 inch 2.2 gig for college about 2 weeks ago and have seen nothing about the product being shipped, i called up my college's book store where i ordered the computer and asked them what the problem was, to which i was told th
-
Apple id password not accepted after ipad update to ios5
So I've just upgraded my iPad 2 with ios 5 and the apple id password doesn't work. I've reset the password 4 times now and still it's not accepting it. I've turned off the iPad and tried again and still no joy. Any ideas?