FUNCTION ***get_fr_prperiod .
*"----------------------------------------------------------------------
*"*"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
*" 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_BI_FR_PRPERIOD OPTIONAL
*" EXCEPTIONS
*" NO_MORE_DATA
*" ERROR_PASSED_TO_MESS_HANDLER
*"----------------------------------------------------------------------
*---------------------------------------------------------------------*
* DataSources
* TABLES: zcommvtbfha. "Commodity Transaction
TYPES: BEGIN OF ty_con_header,
contract_no TYPE zfr_con_header-contract_no,
vessel TYPE zfr_con_header-vessel,
END OF ty_con_header.
*Types for Contract Header
TYPES: BEGIN OF t_vyg_hdr,
vyg_no TYPE zfr_vyg_hdr-vyg_no,
END OF t_vyg_hdr.
*types for Header Data (Voyage)
DATA: it_con_header TYPE HASHED TABLE OF ty_con_header WITH UNIQUE KEY
contract_no WITH HEADER LINE.
*internal table for Contract Header
DATA: it_prper TYPE STANDARD TABLE OF ty_prper.
* internal table for BW interface pricing period
DATA: it_vyg_cargo TYPE STANDARD TABLE OF ty_vyg_cargo WITH HEADER LINE.
*internal table for Cargo (Voyage)
DATA: it_doc_status TYPE STANDARD TABLE OF ty_doc_status WITH HEADER LINE.
*internal table for Document statuses
DATA: it_doc_prtnr TYPE STANDARD TABLE OF ty_doc_prtnr WITH HEADER LINE.
*internal table for Document Partners
FIELD-SYMBOLS: <fs_es> TYPE ty_prper,
<fs_vyg> TYPE ty_vyg_cargo.
* CONSTANTS: c_null TYPE zfr_doc_status-item_no VALUE '000000'.
* 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 TYPE sy-tabix,
x_nr_lines TYPE rsaapi_if-maxsize,
x_ln TYPE i,
* cursor
s_cursor TYPE cursor,
* itab
e_t_2_data TYPE zst_bi_fr_prperiod OCCURS 0.
* Select ranges
* These fields have been marked as 'selection fields' in the DataSource.
RANGES: r_contract_no FOR zfr_contract_md-contract_no, "Contract number
r_changed_on FOR zfr_contract_md-changed_on. "timstamp for delta
calculation
* 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 zcl_constants=>c_char26_fr_prperiod1_tran.
WHEN OTHERS.
IF 1 = 2. MESSAGE e009(r3). ENDIF.
* this is a typical log call. Please write every error message like this
log_write zcl_constants=>c_msgty_e "message type
zcl_constants=>c_symsgid_r3 "message class
zcl_constants=>c_wdr_text_key_009 "message
number
i_dsource "message variable 1
zcl_constants=>c_char1_space. "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 ?
************************************************************************
* Select data
************************************************************************
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 =
zcl_constants=>c_char12_contract_no.
MOVE-CORRESPONDING l_s_select TO r_contract_no.
APPEND r_contract_no.
CLEAR r_contract_no.
ENDLOOP.
*
LOOP AT s_s_if-t_select INTO l_s_select WHERE fieldnm =
zcl_constants=>c_char10_changed_on.
MOVE-CORRESPONDING l_s_select TO r_changed_on.
APPEND r_changed_on.
CLEAR r_changed_on.
ENDLOOP.
* search the contracts that have changed since last load
New FM :-
FUNCTION ****get_fr_prperiod_new .
*"----------------------------------------------------------------------
*"*"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
*" 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_BI_FR_PRPERIOD OPTIONAL
*" EXCEPTIONS
*" NO_MORE_DATA
*" ERROR_PASSED_TO_MESS_HANDLER
*"----------------------------------------------------------------------
TYPES:
BEGIN OF ty_doc_flow.
INCLUDE STRUCTURE zfr_doc_flow.
TYPES : END OF ty_doc_flow.
* types for Document Flow Data
*****************************************************************
* TABLES: zcommvtbfha. "Commodity Transaction
TYPES: BEGIN OF ty_con_header,
contract_no TYPE zfr_con_header-contract_no,
vessel TYPE zfr_con_header-vessel,
END OF ty_con_header.
*Types for Contract Header
TYPES: BEGIN OF t_vyg_hdr,
vyg_no TYPE zfr_vyg_hdr-vyg_no,
END OF t_vyg_hdr.
DATA : get_obj TYPE REF TO zap_cl_bi_get_fr_prperiod.
CREATE OBJECT get_obj.
*types for Header Data (Voyage)
* DATA: it_con_header TYPE HASHED TABLE OF ty_con_header WITH UNIQUE KEY
contract_no WITH HEADER LINE.
DATA: it_con_header TYPE TABLE OF ty_con_header.
*internal table for Contract Header
* DATA: it_prper TYPE STANDARD TABLE OF ty_prper.
** internal table for BW interface pricing period
* DATA: it_vyg_cargo TYPE STANDARD TABLE OF ty_vyg_cargo WITH HEADER LINE.
**internal table for Cargo (Voyage)
* DATA: it_doc_status TYPE STANDARD TABLE OF ty_doc_status WITH HEADER LINE.
**internal table for Document statuses
* DATA: it_doc_prtnr TYPE STANDARD TABLE OF ty_doc_prtnr WITH HEADER LINE.
**internal table for Document Partners
FIELD-SYMBOLS: <fs_es> TYPE ty_prper,
<fs_vyg> TYPE ty_vyg_cargo.
* CONSTANTS: c_null TYPE zfr_doc_status-item_no VALUE '000000'.
* 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 TYPE sy-tabix,
x_nr_lines TYPE rsaapi_if-maxsize,
x_ln TYPE i,
* cursor
s_cursor TYPE cursor,
* itab
e_t_2_data TYPE zst_bi_fr_prperiod OCCURS 0.
* Select ranges
* These fields have been marked as 'selection fields' in the DataSource.
RANGES: r_contract_no FOR zfr_contract_md-contract_no, "Contract number
r_changed_on FOR zfr_contract_md-changed_on. "timstamp for delta
calculation
* 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 DS NAME.
WHEN OTHERS.
IF 1 = 2. MESSAGE e009(r3). ENDIF.
* this is a typical log call. Please write every error message like this
log_write zcl_constants=>c_msgty_e "message type
zcl_constants=>c_symsgid_r3 "message class
zcl_constants=>c_wdr_text_key_009 "message
number
i_dsource "message variable 1
zcl_constants=>c_char1_space. "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 ?
************************************************************************
* Select data
************************************************************************
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 =
zcl_constants=>c_char12_contract_no.
MOVE-CORRESPONDING l_s_select TO r_contract_no.
APPEND r_contract_no.
CLEAR r_contract_no.
ENDLOOP.
*
LOOP AT s_s_if-t_select INTO l_s_select WHERE fieldnm =
zcl_constants=>c_char10_changed_on.
MOVE-CORRESPONDING l_s_select TO r_changed_on.
APPEND r_changed_on.
CLEAR r_changed_on.
ENDLOOP.
* search the contracts that have changed since last load
e_t_2_data[] = e_t_data[].
CLEAR e_t_data. REFRESH e_t_data.
*
s_counter_datapakid = s_counter_datapakid + 1.
*
ENDIF.
************************************************************************
* Transfer data
************************************************************************
* Determine number of lines to transfer.
*
DESCRIBE TABLE e_t_2_data LINES x_nr_lines.
*
IF s_s_if-maxsize EQ space.
s_s_if-maxsize = 10000.
ENDIF.
*
IF x_nr_lines NE 0.
IF x_nr_lines GT s_s_if-maxsize.
x_ln = s_s_if-maxsize.
ELSE.
x_ln = x_nr_lines.
ENDIF.
* transfer data to data package and delete it from the buffer
APPEND LINES OF e_t_2_data FROM 1 TO x_ln TO e_t_data.
DELETE e_t_2_data FROM 1 TO x_ln.
ELSE.
RAISE no_more_data.
ENDIF.
*
ENDIF. "Initialization mode or data extraction ?
*
ENDFUNCTION.
AMDP
CLASS *****_get_fr_prperiod DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
INTERFACES if_amdp_marker_hdb. "AMDP marker Interface
TYPES: BEGIN OF ty_con_header,
contract_no TYPE zfr_con_header-contract_no,
vessel TYPE zfr_con_header-vessel,
END OF ty_con_header,
tt_con_header TYPE TABLE OF ty_con_header.
*Types for Contract Header
TYPES: BEGIN OF t_vyg_hdr,
vyg_no TYPE zfr_vyg_hdr-vyg_no,
END OF t_vyg_hdr.
TYPES:
BEGIN OF ty_doc_status,
doc_category TYPE zfr_doc_status-doc_category,
document_no TYPE zfr_doc_status-document_no,
item_no TYPE zfr_doc_status-item_no,
sub_item_no TYPE zfr_doc_status-sub_item_no,
status_type TYPE zfr_doc_status-status_type,
* status TYPE zfr_doc_status-status,
frstatpp TYPE zfr_doc_status-status,
frstatcl TYPE zfr_doc_status-status,
END OF ty_doc_status,
tt_doc_stat TYPE TABLE OF ty_doc_status.
TYPES:
BEGIN OF ty_doc_prtnr,
doc_category TYPE zfr_doc_prtnr-doc_category,
document_no TYPE zfr_doc_prtnr-document_no,
item_no TYPE zfr_doc_prtnr-item_no,
broker_ch TYPE zfr_doc_prtnr-parvw,
broker_ow TYPE zfr_doc_prtnr-parvw,
vendor TYPE zfr_doc_prtnr-parvw,
customer TYPE zfr_doc_prtnr-parvw,
parza TYPE zfr_doc_prtnr-parza,
partner TYPE zfr_doc_prtnr-partner,
END OF ty_doc_prtnr,
tt_doc_prtnr TYPE TABLE OF ty_doc_prtnr.
TYPES:
BEGIN OF ty_prper,
contract_no TYPE zfr_con_prperiod-contract_no,
item_no TYPE zfr_con_prperiod-item_no,
period_id TYPE zfr_con_prperiod-period_id,
item_cat TYPE zfr_con_prperiod-item_cat,
from_period TYPE zfr_con_prperiod-from_period,
to_period TYPE zfr_con_prperiod-to_period,
tzone TYPE zfr_con_prperiod-tzone,
for_duration TYPE zfr_con_prperiod-for_duration,
for_duration_uom TYPE zfr_con_prperiod-for_duration_uom,
werks TYPE zfr_con_prperiod-werks,
comments TYPE zfr_con_prperiod-comments,
baltic_e_perc TYPE zfr_con_prperiod-baltic_e_perc,
market_rate TYPE zfr_con_prperiod-market_rate,
market_rate_cuky TYPE zfr_con_prperiod-market_rate_cuky,
curve TYPE zfr_con_prperiod-curve,
END OF ty_prper,
tt_prper TYPE TABLE OF ty_prper.
DATA: l_s_select TYPE srsc_s_select.
* Maximum number of lines for DB table
DATA: s_s_if TYPE srsc_s_if_simple,
* counter
s_counter_datapakid TYPE sy-tabix,
x_nr_lines TYPE rsaapi_if-maxsize,
x_ln TYPE i,
s_cursor TYPE cursor,
e_t_2_data TYPE zst_bi_fr_prperiod.
METHODS extract_data
IMPORTING
VALUE(it_con_header) TYPE tt_con_header
VALUE(gc_doc_category) TYPE char2
VALUE(gc_stat_type_1) TYPE char2
VALUE(gc_stat_type_2) TYPE char2
VALUE(gc_parvw_bc) TYPE parvw
VALUE(gc_parvw_bo) TYPE parvw
VALUE(gc_parvw_ag) TYPE parvw
VALUE(gc_parvw_lf) TYPE parvw
EXPORTING
VALUE(it_final) TYPE tt_final.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
Extract Structure
VYG_NO
VYG_ITM
CONTRACT_NO
ITEM_NO
PERIOD_ID
ITEM_CAT
FROM_PERIOD
TO_PERIOD
TZONE
FOR_DURATION
FOR_DURATION_UOM
WERKS
COMMENTS
BALTIC_E_PERC
MARKET_RATE
MARKET_RATE_CUKY
CURVE
CHANGED_ON
VESSEL
FRSTATPP
FRSTATCL
BROKER_CH
BROKER_OW
VENDOR
CUSTOMER