ABAP Select data from SAP table ITCDS 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 ITCDS 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 ITCDS. 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 ITCDS 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_ITCDS TYPE STANDARD TABLE OF ITCDS,
      WA_ITCDS TYPE ITCDS,
      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: <ITCDS> TYPE ITCDS.

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

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

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM ITCDS
*  INTO TABLE @DATA(IT_ITCDS2).
*--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_ITCDS INDEX 1 INTO DATA(WA_ITCDS2).


*Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL
LOOP AT IT_ITCDS ASSIGNING <ITCDS>.
*To update a field value using a field symbol simply change the value via the field symbol pointer
<ITCDS>-TDSTRING = 1.
<ITCDS>-TDTEXT = 1.
<ITCDS>-TDMARK = 1.
<ITCDS>-TDSUPER = 1.
<ITCDS>-TDSUB = 1.
ENDLOOP.

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

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_ITCDS-TDSUDIST, sy-vline,
WA_ITCDS-TDSUDISTU, sy-vline,
WA_ITCDS-TDSUDISTS, sy-vline,
WA_ITCDS-TDHIDDEN, sy-vline,
WA_ITCDS-TDPROTLINE, sy-vline,
WA_ITCDS-TDFAMILY, sy-vline.
ENDLOOP. *Add any further fields from structure WA_ITCDS 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_ITCDS 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_ITCDS INTO WA_ITCDS. *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.
ENDFORM. *&---------------------------------------------------------------------* *& Form process_as_string_field_values *&---------------------------------------------------------------------* FORM process_as_string_field_values CHANGING p_EKKO LIKE wa_EKKO. TYPES: BEGIN OF T_ITCDS_STR,
TDSTRING TYPE STRING,
TDTEXT TYPE STRING,
TDMARK TYPE STRING,
TDSUPER TYPE STRING,
TDSUB TYPE STRING,
TDSUDIST TYPE STRING,
TDSUDISTU TYPE STRING,
TDSUDISTS TYPE STRING,
TDHIDDEN TYPE STRING,
TDPROTLINE TYPE STRING,
TDFAMILY TYPE STRING,
TDHEIGHT TYPE STRING,
TDBOLD TYPE STRING,
TDITALIC TYPE STRING,
TDCAPS TYPE STRING,
TDUNDERLIN TYPE STRING,
TDULPOS TYPE STRING,
TDULPOSU TYPE STRING,
TDULPOSS TYPE STRING,
TDULTHICK TYPE STRING,
TDULTHICKU TYPE STRING,
TDULTHICKS TYPE STRING,
TDULGREY TYPE STRING,
TDBARCODE TYPE STRING,
TDBCMINC TYPE STRING,
TDBCMAXC TYPE STRING,
TDBCSIZE TYPE STRING,
TDBCSIZEU TYPE STRING,
TDBCSYSIZE TYPE STRING,
TDBCHEIGT TYPE STRING,
TDBCHEIGTU TYPE STRING,
TDBCHEIGTS TYPE STRING,
TDBARCTYPE TYPE STRING,
TDBARCROT TYPE STRING,
TDBCUPWARD TYPE STRING,
TDDEFFAM TYPE STRING,
TDDUMMY TYPE STRING,
TDDEFHGHT TYPE STRING,END OF T_EKKO_STR. DATA: WA_ITCDS_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_ITCDS_STR-TDSTRING sy-vline
WA_ITCDS_STR-TDTEXT sy-vline
WA_ITCDS_STR-TDMARK sy-vline
WA_ITCDS_STR-TDSUPER sy-vline
WA_ITCDS_STR-TDSUB sy-vline
WA_ITCDS_STR-TDSUDIST sy-vline
WA_ITCDS_STR-TDSUDISTU sy-vline
WA_ITCDS_STR-TDSUDISTS sy-vline
WA_ITCDS_STR-TDHIDDEN sy-vline
WA_ITCDS_STR-TDPROTLINE sy-vline
WA_ITCDS_STR-TDFAMILY sy-vline
WA_ITCDS_STR-TDHEIGHT sy-vline
WA_ITCDS_STR-TDBOLD sy-vline
WA_ITCDS_STR-TDITALIC sy-vline
WA_ITCDS_STR-TDCAPS sy-vline
WA_ITCDS_STR-TDUNDERLIN sy-vline
WA_ITCDS_STR-TDULPOS sy-vline
WA_ITCDS_STR-TDULPOSU sy-vline
WA_ITCDS_STR-TDULPOSS sy-vline
WA_ITCDS_STR-TDULTHICK sy-vline
WA_ITCDS_STR-TDULTHICKU sy-vline
WA_ITCDS_STR-TDULTHICKS sy-vline
WA_ITCDS_STR-TDULGREY sy-vline
WA_ITCDS_STR-TDBARCODE sy-vline
WA_ITCDS_STR-TDBCMINC sy-vline
WA_ITCDS_STR-TDBCMAXC sy-vline
WA_ITCDS_STR-TDBCSIZE sy-vline
WA_ITCDS_STR-TDBCSIZEU sy-vline
WA_ITCDS_STR-TDBCSYSIZE sy-vline
WA_ITCDS_STR-TDBCHEIGT sy-vline
WA_ITCDS_STR-TDBCHEIGTU sy-vline
WA_ITCDS_STR-TDBCHEIGTS sy-vline
WA_ITCDS_STR-TDBARCTYPE sy-vline
WA_ITCDS_STR-TDBARCROT sy-vline
WA_ITCDS_STR-TDBCUPWARD sy-vline
WA_ITCDS_STR-TDDEFFAM sy-vline
WA_ITCDS_STR-TDDUMMY sy-vline
WA_ITCDS_STR-TDDEFHGHT sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.