0% found this document useful (0 votes)
227 views6 pages

Extractor Po Rsa3

This document describes a function that extracts descriptive text data from an SAP database table into structured output. It initializes parameters, selects records from the database table based on selection criteria, fetches the records in packages, reads any long text for a record, maps the data to output structures, and returns it. Exceptions are handled for reaching the end of data or errors.

Uploaded by

Narendra Reddy
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
Download as pdf or txt
0% found this document useful (0 votes)
227 views6 pages

Extractor Po Rsa3

This document describes a function that extracts descriptive text data from an SAP database table into structured output. It initializes parameters, selects records from the database table based on selection criteria, fetches the records in packages, reads any long text for a record, maps the data to output structures, and returns it. Exceptions are handled for reaching the end of data or errors.

Uploaded by

Narendra Reddy
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
Download as pdf or txt
Download as pdf or txt
You are on page 1/ 6

FUNCTION z_po_text_desc .

*"---------------------------------------------------------------------*"*"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 ZPO_DESC_ATTR_STRUCT OPTIONAL *" EXCEPTIONS *" NO_MORE_DATA *" ERROR_PASSED_TO_MESS_HANDLER *"---------------------------------------------------------------------import

Tables

* Example: DataSource for table SFLIGHT TABLES: ekko.

*local declaritions DATA: lt_data TYPE TABLE OF zpo_desc_attr_struct, ls_data TYPE zpo_desc_attr_struct. TYPES: BEGIN OF lt_ekko_temp, ebeln LIKE ekko-ebeln, bsart LIKE ekko-bsart, id LIKE thead-tdid, END OF lt_ekko_temp. DATA: lt_ekko TYPE STANDARD TABLE OF lt_ekko_temp, ls_ekko LIKE LINE OF lt_ekko. DATA: lt_ekko_long_text_tline TYPE fmlines. DATA: st_ekko_long_text_tline TYPE LINE OF tttext. DATA: lv_textname LIKE thead-tdname. DATA: lv_ekko_long_text(1500) TYPE c. * 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_ebeln FOR ekko-ebeln, l_r_bsart FOR ekko-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 ZSTIP_DESC_ATTR BREAK-POINT. CASE i_dsource. WHEN 'ZPO_DESC_ATTR'. 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

'ZERPBWD' "message class '000' "message number 'ZPO_DESC_ATTR' "message variable 1 'ZPO_DESC_ATTR'. "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. LOOP AT s_s_if-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_s_if-t_select INTO l_s_select WHERE MOVE-CORRESPONDING l_s_select TO l_r_bsart. APPEND l_r_bsart. ENDLOOP. BREAK-POINT. fieldnm = 'BSART'.

OPEN CURSOR WITH HOLD s_cursor FOR "(s_s_if-t_fields) " SELECT DISTINCT ebeln bsart FROM ekko WHERE ebeln IN l_r_ebeln AND bsart IN l_r_bsart. ENDIF. *Select records for this data package REFRESH lt_ekko. TRY. FETCH NEXT CURSOR s_cursor

APPENDING CORRESPONDING FIELDS OF TABLE lt_ekko PACKAGE SIZE s_s_if-maxsize. *Check whether the SQL statement retrieved more data IF sy-subrc IS NOT INITIAL. *Stop. Nothing else to do CLOSE CURSOR s_cursor. RAISE no_more_data. ELSE. LOOP AT lt_ekko INTO ls_ekko. CLEAR lv_ekko_long_text. MOVE ls_ekko-ebeln TO lv_textname. CALL FUNCTION 'READ_TEXT' EXPORTING CLIENT id language name object ARCHIVE_HANDLE LOCAL_CAT IMPORTING HEADER TABLES lines EXCEPTIONS id language name not_found object reference_check wrong_access_to_archive OTHERS

* * * *

= = = = = = = =

SY-MANDT 'F01' 'E' lv_textname 'EKKO' 0 ' '

= lt_ekko_long_text_tline = = = = = = = = 1 2 3 4 5 6 7 8.

IF sy-subrc = 0. LOOP AT lt_ekko_long_text_tline INTO st_ekko_long_text_tline. CONCATENATE lv_ekko_long_text st_ekko_long_text_tlinetdline INTO lv_ekko_long_text SEPARATED BY space. ENDLOOP. ENDIF. ls_data-ebeln ls_data-bsart ls_data-id ls_data-txt01 ls_data-txt02 ls_data-txt03 ls_data-txt04 ls_data-txt05 = = = = = = = = lv_textname. ls_ekko-bsart. 'F01'. lv_ekko_long_text(60). lv_ekko_long_text+60(60). lv_ekko_long_text+120(60). lv_ekko_long_text+180(60). lv_ekko_long_text+240(60).

APPEND ls_data TO lt_data.

CLEAR ls_data. CLEAR ls_ekko. CLEAR lv_textname. CLEAR lv_ekko_long_text. CLEAR st_ekko_long_text_tline. ENDLOOP. BREAK-POINT. e_t_data[] = lt_data. ENDIF. *If dynamic SQL statement fails, then close cursor and stop process CLEANUP. CLOSE CURSOR s_cursor. RAISE no_more_data. ENDTRY. s_counter_datapakid = s_counter_datapakid + 1. ENDIF. "Initialization mode or data extraction ?

ENDFUNCTION.

SE11 STRUCTURE

You might also like