cancel
Showing results for 
Search instead for 
Did you mean: 

Unable to get delta observation,

0 Kudos

i am trying get delta records from ztable based on time stamp with 900sec lower timestamp,,,,,,,,,,

please correct my code,

  • Example: DataSource for table SFLIGHT

TABLES: zsales_order1.

  • Auxiliary Selection criteria structure

DATA: l_s_select TYPE srsc_s_select.

  • Maximum number of lines for DB table

STATICS: s_s_if TYPE srsc_s_if_simple,

  • counter

s_counter_datapakid LIKE sy-tabix,

  • cursor

s_cursor TYPE cursor.

  • Select ranges

RANGES: l_r_zvbeln FOR zsales_order1-zvbeln,

l_r_zerdat FOR zsales_order1-zerdat,

l_r_zerzet FOR zsales_order1-zerzet,

l_r_ztimestamp FOR zsales_order1-ztimestamp.

DATA : startdate TYPE sy-datum,

starttime TYPE sy-uzeit,

enddate TYPE sy-datum,

endtime TYPE sy-uzeit,

timestamp TYPE tzonref-tstamps.

  • Initialization mode (first call by SAPI) or data transfer mode

  • (following calls) ?

IF i_initflag = sbiwa_c_flag_on.

************************************************************************

  • Initialization: check input parameters

  • buffer input parameters

  • prepare data selection

************************************************************************

  • Check DataSource validity

CASE i_dsource.

WHEN 'ZSALES_ORDER_FUN1'.

WHEN OTHERS.

IF 1 = 2.

MESSAGE e009(r3).

ENDIF.

  • this is a typical log call. Please write every error message like this

log_write 'E' "message type

'R3' "message class

'009' "message number

i_dsource "message variable 1

' '. "message variable 2

RAISE error_passed_to_mess_handler.

ENDCASE.

APPEND LINES OF i_t_select TO s_s_if-t_select.

  • Fill parameter buffer for data extraction calls

s_s_if-requnr = i_requnr.

s_s_if-dsource = i_dsource.

s_s_if-maxsize = i_maxsize.

  • Fill field list table for an optimized select statement

  • (in case that there is no 1:1 relation between InfoSource fields

  • and database table fields this may be far from beeing trivial)

APPEND LINES OF i_t_fields TO s_s_if-t_fields.

ELSE. "Initialization mode or data extraction ?

************************************************************************

  • Data transfer: First Call OPEN CURSOR + FETCH

  • Following Calls FETCH only

************************************************************************

  • First data package -> OPEN CURSOR

IF s_counter_datapakid = 0.

  • Fill range tables BW will only pass down simple selection criteria

  • of the type SIGN = 'I' and OPTION = 'EQ' or OPTION = 'BT'.

LOOP AT s_s_if-t_select INTO l_s_select WHERE fieldnm = 'ZVBELN'.

MOVE-CORRESPONDING l_s_select TO l_r_zvbeln.

APPEND l_r_zvbeln.

LOOP AT s_s_if-t_select INTO l_s_select WHERE fieldnm = 'ZERDAT'.

MOVE-CORRESPONDING l_s_select TO l_r_zerdat.

APPEND l_r_zerdat.

LOOP AT s_s_if-t_select INTO l_s_select WHERE fieldnm = 'ZERZET'.

MOVE-CORRESPONDING l_s_select TO l_r_zerzet.

APPEND l_r_zerzet.

LOOP AT s_s_if-t_select INTO l_s_select WHERE fieldnm = 'ZTIMESTAMP'.

timestamp = l_s_select-low.

CONVERT TIME STAMP timestamp

TIME ZONE sy-zonlo INTO DATE startdate TIME starttime.

timestamp = l_s_select-high.

CONVERT TIME STAMP timestamp

TIME ZONE sy-zonlo INTO DATE enddate TIME endtime.

l_r_zerdat-low = startdate.

l_r_zerdat-sign = l_s_select-sign.

l_r_zerdat-option = l_s_select-option.

l_r_zerdat-high = enddate.

APPEND l_r_zerdat.

l_r_zerzet-low = starttime.

l_r_zerzet-sign = l_s_select-sign.

l_r_zerzet-option = l_s_select-option.

l_r_zerzet-high = endtime.

APPEND l_r_zerzet.

ENDLOOP.

ENDLOOP.

ENDLOOP.

ENDLOOP.

  • Determine number of database records to be read per FETCH statement

  • from input parameter I_MAXSIZE. If there is a one to one relation

  • between DataSource table lines and database entries, this is trivial.

  • In other cases, it may be impossible and some estimated value has to

  • be determined.

OPEN CURSOR WITH HOLD s_cursor FOR

SELECT zvbeln

zerdat

zerzet

zland1

zkunnr

zlgort

zposnv

zmatnr

znetpr

waerk

zkpein

zkmein

zarktx

zstadat

zaedat

zaezet

ztimestamp FROM zsales_order1 WHERE zvbeln IN l_r_zvbeln

AND zerdat IN l_r_zerdat

AND zerzet IN l_r_zerzet

AND (

( zerdat >= startdate AND ( zerzet >= starttime OR

( zerdat <= enddate AND zerzet <= endtime ) ) ) OR

( zaedat >= startdate AND ( zaezet >= starttime OR

( zaedat <= enddate AND zaezet <= endtime ) ) )

).

ENDIF. "First data package ?

  • Fetch records into interface table.

  • named E_T_'Name of extract structure'.

FETCH NEXT CURSOR s_cursor

APPENDING CORRESPONDING FIELDS

OF TABLE e_t_data

PACKAGE SIZE s_s_if-maxsize.

IF sy-subrc <> 0.

CLOSE CURSOR s_cursor.

RAISE no_more_data.

ENDIF.

s_counter_datapakid = s_counter_datapakid + 1.

ENDIF. "Initialization mode or data extraction ?

ENDFUNCTION.

thanks in advance

Accepted Solutions (1)

Accepted Solutions (1)

former_member183750
Active Contributor
0 Kudos

As per the description of this forum at the top of the page I do not think this is posted correctly:

This forum is dedicated to all other development-related questions which are not directly addressed by other forums. This includes Business Objects SDKs, products, or technologies which do not fall under BusinessObjects Enterprise, BusinessObjects Edge, Crystal Reports Server, or Crystal Reports (for example Desktop Intelligence SDK, Universe Designer SDK, Portal Integration Kits, Java User Function Libraries, and other third party technologies or development languages).

- Ludek

Answers (0)