100% found this document useful (2 votes)
3K views7 pages

Sample Code FM Based Extractor

1. The document describes the steps in a sample code for an FM-based data extractor. It declares internal tables and structures to store extracted data and declares counters and selection screens. 2. Open cursor statements are used to extract data from source tables into internal tables. Data is then populated from these tables into an output table to be returned. 3. Loops through the extracted data tables to populate fields in the output table with key fields and related data. The populated output table is then assigned to the function parameter table to return the result set.

Uploaded by

Vikas Gautam
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
Download as docx, pdf, or txt
100% found this document useful (2 votes)
3K views7 pages

Sample Code FM Based Extractor

1. The document describes the steps in a sample code for an FM-based data extractor. It declares internal tables and structures to store extracted data and declares counters and selection screens. 2. Open cursor statements are used to extract data from source tables into internal tables. Data is then populated from these tables into an output table to be returned. 3. Loops through the extracted data tables to populate fields in the output table with key fields and related data. The populated output table is then assigned to the function parameter table to return the result set.

Uploaded by

Vikas Gautam
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1/ 7

Sample Code - FM based extractor

Steps
**1 - Tables and Internal tables declaration......................................................................................... 1 **2 - Declare Output internal tables similar to Extract Structure ........................................................ 2 **3 - Declare selection screen and other counters .............................................................................. 2 **4 - Capture Select ranges .................................................................................................................. 3 **5 - Capture Extractor ......................................................................................................................... 3 * Check DataSource validity .................................................................................................................. 3 * Fill parameter buffer for data extraction calls ................................................................................... 3 **6 - Use Open Cursor for first and main select statement ................................................................. 4 **7 - Other Select Statements .............................................................................................................. 5 **8 - Generate Output data - First Loop begins VTBFINKO data .......................................................... 5 **9 - Assign the out internal table to E_T_DATA for result set ............................................................ 6

FUNCTION ZTEST_VIKAS_TR. *"---------------------------------------------------------------------*"*"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 ZBWDS_CF OPTIONAL *" EXCEPTIONS *" NO_MORE_DATA *" ERROR_PASSED_TO_MESS_HANDLER *"----------------------------------------------------------------------

**1 - Tables and Internal tables declaration


TABLES : vtbfha, vtb_asgn_limit, vtb_asgn_pos, vtb_asgn_relat, vtbfinko.

* Data declaration
DATA : wa_vtb_asgn_relat TYPE vtb_asgn_relat, it_vtb_asgn_relat TYPE TABLE OF vtb_asgn_relat, wa_vtb_asgn_pos TYPE vtb_asgn_pos, it_vtb_asgn_pos TYPE TABLE OF vtb_asgn_pos, wa_vtb_asgn_limit TYPE vtb_asgn_limit, it_vtb_asgn_limit TYPE TABLE OF vtb_asgn_limit, wa_vtbfinko TYPE vtbfinko, it_vtbfinko TYPE TABLE OF vtbfinko. DATA : wa_temp TYPE zbwds_cf, it_temp TYPE TABLE OF zbwds_cf. TYPES: BEGIN OF ls_vtbfha, bukrs TYPE vtbfha-bukrs, rfha TYPE vtbfha-rfha, sanlf TYPE vtbfha-sanlf, sfgtyp TYPE vtbfha-sfgtyp, sgsart TYPE vtbfha-sgsart, saktiv TYPE vtbfha-saktiv, END OF ls_vtbfha. DATA: wa_vtbfha TYPE ls_vtbfha, it_vtbfha TYPE TABLE OF ls_vtbfha.

CONSTANTS : c_rfhazu TYPE i VALUE '2', c_pkond_un TYPE i VALUE '9901', c_pkond TYPE i VALUE '9902', c_pkond_fco TYPE i VALUE '9903', c_pkond_fcc TYPE i VALUE '9904'. DATA : lv_pkond TYPE vtbfinko-pkond, lv_pkond_un TYPE vtbfinko-pkond, lv_pkond_fco TYPE vtbfinko-pkond, lv_pkond_fcc TYPE vtbfinko-pkond.

"FC "FC "FC "FC

not utilized Utilized ovedrwan Credit line

**2 - Declare Output internal tables similar to Extract Structure


DATA : ls TYPE zbwds_cf, wa_out TYPE zbwds_cf, itab_out TYPE TABLE OF zbwds_cf, wa_itab_out LIKE LINE OF itab_out, wa_et LIKE LINE OF e_t_data.

**3 - Declare selection screen and other counters

* 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.

**4 - Capture Select ranges


RANGES : l_compcode FOR vtb_asgn_relat-company_code, l_transno FOR vtb_asgn_relat-deal_number, l_rkond FOR vtbfinko-rkond.

**5 - Capture Extractor


* 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 'ZPZZDS_TR_VIKAS' .

*APPEND LINES OF I_T_SELECT TO S_S_IF-T_SELECT. WHEN OTHERS. 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 APPEND LINES OF i_t_fields TO s_s_if-t_fields. ELSE. "Initialization mode or data extraction ?

* First data package -> OPEN CURSOR IF s_counter_datapakid = 0. LOOP AT s_s_if-t_select INTO l_s_select WHERE fieldnm = 'COMPANY_CODE'. MOVE-CORRESPONDING l_s_select TO l_compcode. APPEND l_compcode . ENDLOOP.

LOOP AT s_s_if-t_select INTO l_s_select WHERE fieldnm = 'DEAL_NUMBER'. MOVE-CORRESPONDING l_s_select TO l_transno . APPEND l_transno. ENDLOOP. * Will pad the transaction no. with leading zeroes. LOOP AT l_transno. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = l_transno-low IMPORTING output = l_transno-low. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = l_transno-high IMPORTING output = l_transno-high. MODIFY l_transno INDEX sy-index. ENDLOOP. l_rkond-sign = 'I'. l_rkond-option = 'BT'. l_rkond-low = '9901'. l_rkond-high = '9902'. MODIFY l_rkond index sy-index. ** First Select * perform selection_data. * SELECT bukrs * rfha * sanlf * sfgtyp * sgsart * saktiv * FROM vtbfha * INTO CORRESPONDING FIELDS OF TABLE it_vtbfha * WHERE bukrs IN l_compcode * AND rfha IN l_transno * AND sanlf EQ '560' * AND sgsart EQ 'CF' * AND saktiv EQ 0. * Rather than using select statement, we have used open cursor for first and * main select statement

**6 - Use Open Cursor for first and main select statement
OPEN CURSOR WITH HOLD s_cursor FOR SELECT bukrs rfha sanlf sfgtyp sgsart saktiv FROM vtbfha INTO CORRESPONDING FIELDS OF TABLE it_vtbfha WHERE bukrs IN l_compcode AND rfha IN l_transno AND sanlf EQ '560' AND sgsart EQ 'CF' AND saktiv EQ 0.

FETCH NEXT CURSOR s_cursor APPENDING CORRESPONDING FIELDS OF TABLE it_vtbfha PACKAGE SIZE i_maxsize. ** IF it_vtbfha IS NOT INITIAL.

**7 - Other Select Statements


SELECT * FROM vtb_asgn_relat INTO TABLE it_vtb_asgn_relat FOR ALL ENTRIES IN it_vtbfha WHERE company_code EQ it_vtbfha-bukrs AND deal_number EQ it_vtbfha-rfha AND relat_obj_cat = 'SYN'. SELECT * FROM vtb_asgn_pos INTO TABLE it_vtb_asgn_pos FOR ALL ENTRIES IN it_vtb_asgn_relat WHERE relat_obj EQ it_vtb_asgn_relat-relat_obj AND relat_obj_cat EQ it_vtb_asgn_relat-relat_obj_cat. SELECT * FROM vtb_asgn_limit INTO TABLE it_vtb_asgn_limit FOR ALL ENTRIES IN it_vtb_asgn_relat WHERE relat_obj EQ it_vtb_asgn_relat-relat_obj AND relat_obj_cat EQ it_vtb_asgn_relat-relat_obj_cat. SELECT * FROM vtbfinko INTO TABLE it_vtbfinko FOR ALL ENTRIES IN it_vtb_asgn_relat WHERE bukrs EQ it_vtb_asgn_relat-company_code AND rfha EQ it_vtb_asgn_relat-deal_number AND rfhazu = 2 AND rkond IN l_rkond. DATA: lv_date TYPE sy-datum. SORT it_vtbfinko BY bukrs rfha rfhazu dguel_kp. ** We are populating data from VTBFINKO,VTB_ASGN_RELAT and other tables

**8 - Generate Output data - First Loop begins VTBFINKO data


LOOP AT it_vtbfinko INTO wa_vtbfinko. ls-company_code = wa_vtbfinko-bukrs. ls-deal_number = wa_vtbfinko-rfha. ls-date = wa_vtbfinko-dguel_kp.

CLEAR lv_date. lv_date

wa_vtbfinko-dguel_kp.

CASE wa_vtbfinko-rkond. WHEN c_pkond_un. ls-pkond_un = wa_vtbfinko-pkond. "FC not utilized WHEN c_pkond. ls-pkond = wa_vtbfinko-pkond. "FC Utilized WHEN c_pkond_fco. ls-pkond_fco = wa_vtbfinko-pkond. "FC ovedrwan

WHEN c_pkond_fcc. ls-pkond_fcc = wa_vtbfinko-pkond. "FC Credit line ENDCASE.

READ TABLE it_vtb_asgn_relat INTO wa_vtb_asgn_relat WITH KEY company_code = wa_vtbfinko-bukrs deal_number = wa_vtbfinko-rfha. IF sy-subrc = 0. ls-relat_obj = wa_vtb_asgn_relat-relat_obj. ENDIF. READ TABLE it_vtb_asgn_limit INTO wa_vtb_asgn_limit WITH KEY relat_obj = wa_vtb_asgn_relat-relat_obj. IF sy-subrc = 0. ls-limit_chg_amount = wa_vtb_asgn_limit-limit_chg_amount. ls-limit_currency = wa_vtb_asgn_limit-limit_currency. ENDIF.

CLEAR : wa_vtb_asgn_relat, wa_vtb_asgn_limit. APPEND ls TO itab_out. CLEAR ls. ENDLOOP. * First loop ends CLEAR: ls. SORT it_vtb_asgn_pos BY relat_obj chg_date. ENDIF. **

**9 - Assign the out internal table to E_T_DATA for result set
e_t_data[] = itab_out[]. s_counter_datapakid = s_counter_datapakid + 1.

ELSE. RAISE no_more_data. ENDIF. ENDIF.

"First data package ?

ENDFUNCTION.

You might also like