Skip to content

Instantly share code, notes, and snippets.

@rijdz
Created February 14, 2017 09:01
Show Gist options
  • Save rijdz/9b91c8f22dd347940ed8cd1655b84103 to your computer and use it in GitHub Desktop.
Save rijdz/9b91c8f22dd347940ed8cd1655b84103 to your computer and use it in GitHub Desktop.
Create Customize Logic for Datasource using Function Module
FUNCTION zfm_fi_depi.
*"----------------------------------------------------------------------
*"*"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 ZTT_FI_DEPI OPTIONAL
*" EXCEPTIONS
*" NO_MORE_DATA
*" ERROR_PASSED_TO_MESS_HANDLER
*"----------------------------------------------------------------------
TYPE-POOLS: sbiwa, rsap, srsc.
INCLUDE lrsalk01.
DATA: l_s_select TYPE srsc_s_select,
lt_date LIKE stko-datuv,
i_qty TYPE stpo-menge,
l_tabix LIKE sy-tabix.
DATA: lt_fi_depi LIKE zst_fi_depi OCCURS 0 WITH HEADER LINE.
DATA: ld_startdate LIKE sy-datum,
ld_starttime LIKE sy-uzeit,
ld_enddate LIKE sy-datum,
ld_endtime LIKE sy-uzeit,
ld_tstamp LIKE tzonref-tstamps.
RANGES: l_r_belnr FOR bkpf-belnr,
l_r_tmstmp FOR zst_bpc_prime_cost_all-tmstmp.
RANGES: l_r_erdat FOR aufk-erdat,
l_r_erfzeit FOR aufk-erfzeit.
* Maximum number of lines for DB table
STATICS: s_s_if TYPE srsc_s_if_simple,
s_counter_datapakid LIKE sy-tabix.
IF i_initflag = sbiwa_c_flag_on.
* Check DataSource validity
CASE i_dsource.
WHEN 'ZDS_FI_DEPI'. "name of datasource will be created
WHEN OTHERS.
IF 1 = 2. MESSAGE e009(r3). ENDIF.
log_write 'E' 'R3' '009' i_dsource ' '.
RAISE error_passed_to_mess_handler.
ENDCASE.
APPEND LINES OF i_t_select TO s_s_if-t_select.
s_s_if-requnr = i_requnr.
s_s_if-dsource = i_dsource.
s_s_if-maxsize = i_maxsize.
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.
"Initialize Timestamp
LOOP AT s_s_if-t_select INTO l_s_select WHERE fieldnm = 'BELNR'.
MOVE-CORRESPONDING l_s_select TO l_r_belnr.
APPEND l_r_belnr.
ENDLOOP.
LOOP AT s_s_if-t_select INTO l_s_select WHERE fieldnm = 'TMSTMP'.
ld_tstamp = l_s_select-low.
CONVERT TIME STAMP ld_tstamp TIME ZONE sy-zonlo
INTO DATE ld_startdate TIME ld_starttime.
ld_tstamp = l_s_select-high.
CONVERT TIME STAMP ld_tstamp TIME ZONE sy-zonlo
INTO DATE ld_enddate TIME ld_endtime.
l_r_erdat-low = ld_startdate.
l_r_erdat-sign = l_s_select-sign.
l_r_erdat-option = l_s_select-option.
l_r_erdat-high = ld_enddate.
APPEND l_r_erdat.
l_r_erfzeit-low = ld_starttime.
l_r_erfzeit-sign = l_s_select-sign.
l_r_erfzeit-option = l_s_select-option.
l_r_erfzeit-high = ld_endtime.
APPEND l_r_erfzeit.
MOVE-CORRESPONDING l_s_select TO l_r_tmstmp.
APPEND l_r_tmstmp.
ENDLOOP.
"Add Your Code Here
SELECT * INTO CORRESPONDING FIELDS OF TABLE lt_fi_depi
FROM zta_fi_depi.
LOOP AT lt_fi_depi.
lt_fi_depi-waers = 'IDR'.
MODIFY lt_fi_depi TRANSPORTING waers.
ENDLOOP.
ENDIF. "First data package ?
APPEND LINES OF lt_fi_depi TO e_t_data.
s_counter_datapakid = s_counter_datapakid + 1.
REFRESH lt_fi_depi.
"End Of Add
* IF I_STPO IS INITIAL.
** IF SY-SUBRC <> 0.
* RAISE NO_MORE_DATA.
* ENDIF.
IF s_counter_datapakid > 1.
RAISE no_more_data.
ENDIF.
ENDIF.
ENDFUNCTION.
Import on FM
I_REQUNR TYPE SRSC_S_IF_SIMPLE-REQUNR
I_DSOURCE TYPE SRSC_S_IF_SIMPLE-DSOURCE
I_MAXSIZE TYPE SRSC_S_IF_SIMPLE-MAXSIZE
I_INITFLAG TYPE SRSC_S_IF_SIMPLE-INITFLAG
I_READ_ONLY TYPE SRSC_S_IF_SIMPLE-READONLY
I_REMOTE_CALL TYPE SBIWA_FLAG SBIWA_C_FLAG_OFF
Tables on FM
I_T_SELECT TYPE SRSC_S_IF_SIMPLE-T_SELECT
I_T_FIELDS TYPE SRSC_S_IF_SIMPLE-T_FIELDS
E_T_DATA TYPE ZTT_FI_DEPI Table Type of Deposito Transaction Flow
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment