ABAP Select data from SAP table RCURT into internal table

Get Example source ABAP code based on a different SAP table
  

Below is a number of ABAP code snippets to demonstrate how to select data from SAP RCURT table and store it within an internal table, including using the newer @DATA inline declaration methods. It also shows you various ways to process this data using ABAP work area, inline declaration or field symbols including executing all the relevant CONVERSION_EXIT routines specific to RCURT. See here for more generic Select statement tips.

Sometimes data within SAP is stored within the database table in a different format to what it is displayed to the user. These input/output conversation FM routines are what translates the data between the two formats.

There is also a full declaration of the RCURT table where each field has a char/string type for you to simply copy and paste. This allows you to use processing that is only available to these field types such as the CONCATENATE statement.

DATA: IT_RCURT TYPE STANDARD TABLE OF RCURT,
      WA_RCURT TYPE RCURT,
      GD_STR TYPE STRING.

DATA: lo_typedescr type REF TO cl_abap_typedescr.
DATA: lv_fieldname type fieldname.

FIELD-SYMBOLS: <FIELD> TYPE any.
FIELD-SYMBOLS: <RCURT> TYPE RCURT.

*Process all fields in table header/work area as string values
  PERFORM process_as_string_field_values CHANGING wa_RCURT.

SELECT *
*restrict ABAP select to first 10 rows
 UP TO 10 ROWS      
  FROM RCURT
  INTO TABLE IT_RCURT.

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM RCURT
*  INTO TABLE @DATA(IT_RCURT2).
*--Further methods of using ABAP code to  select data from SAP database tables

*You can also declare the header/work area using the in-line DATA declaration method
READ TABLE IT_RCURT INDEX 1 INTO DATA(WA_RCURT2).


*Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL
LOOP AT IT_RCURT ASSIGNING <RCURT>.
*To update a field value using a field symbol simply change the value via the field symbol pointer
<RCURT>-MANDT = 1.
<RCURT>-KBOBJNAME = 1.
<RCURT>-VERSION = 1.
<RCURT>-KBOBJDESCR = 1.
<RCURT>-RTSTATUS = 1.
ENDLOOP.

LOOP AT IT_RCURT INTO WA_RCURT.
*Write horizonal line to screen report.
  WRITE:/ sy-uline.

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_RCURT-RTSTATTXT, sy-vline,
WA_RCURT-AUTHORIZE, sy-vline,
WA_RCURT-CREATOR, sy-vline,
WA_RCURT-CREADATE, sy-vline,
WA_RCURT-CHANGER, sy-vline,
WA_RCURT-CHANGEDATE, sy-vline.
ENDLOOP. *Add any further fields from structure WA_RCURT you want to display... WRITE:/ sy-uline. * Aternatively use generic code to Write field values (and NAME) to screen report DO. ASSIGN COMPONENT sy-index OF STRUCTURE wa_RCURT TO <field>. IF sy-subrc <> 0. EXIT. ENDIF. WRITE:/ 'Field Value', <field>, sy-vline. gd_str = <field> . lo_typedescr ?= CL_ABAP_DATADESCR=>DESCRIBE_BY_DATA( <field> ). lv_fieldname = lo_typedescr->GET_RELATIVE_NAME( ). WRITE:/ 'Field Name', lv_fieldname. ENDDO. *Redo loop but convert all fields from internal to out value LOOP AT IT_RCURT INTO WA_RCURT. *Write horizonal line to screen report. WRITE:/ sy-uline. *Convert all fields to display/output versions using conversion routines PERFORM convert_all_field_values CHANGING wa_EKKO. ENDLOOP. *&---------------------------------------------------------------------* *& Form convert_all_field_values *&---------------------------------------------------------------------* FORM convert_all_field_values CHANGING p_EKKO LIKE wa_EKKO. DATA: ld_input(1000) TYPE c, ld_output(1000) TYPE C.

*Conversion exit ISOLA, internal->external for field LANGUAGEID CALL FUNCTION 'CONVERSION_EXIT_ISOLA_OUTPUT' EXPORTING input = WA_RCURT-LANGUAGEID IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RCURT-LANGUAGEID.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ISOLA, internal->external for field LANG_DOWN CALL FUNCTION 'CONVERSION_EXIT_ISOLA_OUTPUT' EXPORTING input = WA_RCURT-LANG_DOWN IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RCURT-LANG_DOWN.
WRITE:/ 'New Value:', ld_input.
ENDFORM. *&---------------------------------------------------------------------* *& Form process_as_string_field_values *&---------------------------------------------------------------------* FORM process_as_string_field_values CHANGING p_EKKO LIKE wa_EKKO. TYPES: BEGIN OF T_RCURT_STR,
MANDT TYPE STRING,
KBOBJNAME TYPE STRING,
VERSION TYPE STRING,
KBOBJDESCR TYPE STRING,
RTSTATUS TYPE STRING,
RTSTATTXT TYPE STRING,
AUTHORIZE TYPE STRING,
CREATOR TYPE STRING,
CREADATE TYPE STRING,
CHANGER TYPE STRING,
CHANGEDATE TYPE STRING,
FROMDATE TYPE STRING,
DELFAG TYPE STRING,
LANGUAGEID TYPE STRING,
PLANT TYPE STRING,
KLART_DOWN TYPE STRING,
LANG_DOWN TYPE STRING,
BUILD TYPE STRING,
CLASS_DEP TYPE STRING,
ACTIONFLAG TYPE STRING,
FOLDER TYPE STRING,
ODBC_DSN TYPE STRING,
ODBC_UID TYPE STRING,
ODBC_PWD TYPE STRING,
ODBC_DRV TYPE STRING,
C_PROFILE TYPE STRING,
BOMAPPL TYPE STRING,
SCE_MODUS TYPE STRING,END OF T_EKKO_STR. DATA: WA_RCURT_STR type T_EKKO_STR. DATA: ld_text TYPE string. LOOP AT IT_EKKO INTO WA_EKKO. MOVE-CORRESPONDING wa_EKKO TO WA_EKKO_STR. CONCATENATE: sy-vline
WA_RCURT_STR-MANDT sy-vline
WA_RCURT_STR-KBOBJNAME sy-vline
WA_RCURT_STR-VERSION sy-vline
WA_RCURT_STR-KBOBJDESCR sy-vline
WA_RCURT_STR-RTSTATUS sy-vline
WA_RCURT_STR-RTSTATTXT sy-vline
WA_RCURT_STR-AUTHORIZE sy-vline
WA_RCURT_STR-CREATOR sy-vline
WA_RCURT_STR-CREADATE sy-vline
WA_RCURT_STR-CHANGER sy-vline
WA_RCURT_STR-CHANGEDATE sy-vline
WA_RCURT_STR-FROMDATE sy-vline
WA_RCURT_STR-DELFAG sy-vline
WA_RCURT_STR-LANGUAGEID sy-vline
WA_RCURT_STR-PLANT sy-vline
WA_RCURT_STR-KLART_DOWN sy-vline
WA_RCURT_STR-LANG_DOWN sy-vline
WA_RCURT_STR-BUILD sy-vline
WA_RCURT_STR-CLASS_DEP sy-vline
WA_RCURT_STR-ACTIONFLAG sy-vline
WA_RCURT_STR-FOLDER sy-vline
WA_RCURT_STR-ODBC_DSN sy-vline
WA_RCURT_STR-ODBC_UID sy-vline
WA_RCURT_STR-ODBC_PWD sy-vline
WA_RCURT_STR-ODBC_DRV sy-vline
WA_RCURT_STR-C_PROFILE sy-vline
WA_RCURT_STR-BOMAPPL sy-vline
WA_RCURT_STR-SCE_MODUS sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.