ABAP Select data from SAP table RMCP4 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 RMCP4 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 RMCP4. 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 RMCP4 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_RMCP4 TYPE STANDARD TABLE OF RMCP4,
      WA_RMCP4 TYPE RMCP4,
      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: <RMCP4> TYPE RMCP4.

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

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

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM RMCP4
*  INTO TABLE @DATA(IT_RMCP42).
*--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_RMCP4 INDEX 1 INTO DATA(WA_RMCP42).


*Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL
LOOP AT IT_RMCP4 ASSIGNING <RMCP4>.
*To update a field value using a field symbol simply change the value via the field symbol pointer
<RMCP4>-TXTSUM = 1.
<RMCP4>-TXTSP0 = 1.
<RMCP4>-TXTFLD = 1.
<RMCP4>-TXTOP = 1.
<RMCP4>-TXTMUS = 1.
ENDLOOP.

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

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_RMCP4-PER001, sy-vline,
WA_RMCP4-PER002, sy-vline,
WA_RMCP4-PER003, sy-vline,
WA_RMCP4-PER004, sy-vline,
WA_RMCP4-PER005, sy-vline,
WA_RMCP4-PER006, sy-vline.
ENDLOOP. *Add any further fields from structure WA_RMCP4 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_RMCP4 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_RMCP4 INTO WA_RMCP4. *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_RMCP4_STR,
TXTSUM TYPE STRING,
TXTSP0 TYPE STRING,
TXTFLD TYPE STRING,
TXTOP TYPE STRING,
TXTMUS TYPE STRING,
PER001 TYPE STRING,
PER002 TYPE STRING,
PER003 TYPE STRING,
PER004 TYPE STRING,
PER005 TYPE STRING,
PER006 TYPE STRING,
PER007 TYPE STRING,
PER008 TYPE STRING,
PER009 TYPE STRING,
PER010 TYPE STRING,
PER011 TYPE STRING,
PER012 TYPE STRING,
PER013 TYPE STRING,
PER014 TYPE STRING,
PER015 TYPE STRING,
PER016 TYPE STRING,
PER017 TYPE STRING,
PER018 TYPE STRING,
PER019 TYPE STRING,
PER020 TYPE STRING,
PER021 TYPE STRING,
PER022 TYPE STRING,
PER023 TYPE STRING,
PER024 TYPE STRING,
PER025 TYPE STRING,
PER026 TYPE STRING,
PER027 TYPE STRING,
PER028 TYPE STRING,
PER029 TYPE STRING,
PER030 TYPE STRING,
PER031 TYPE STRING,
PER032 TYPE STRING,
PER033 TYPE STRING,
PER034 TYPE STRING,
PER035 TYPE STRING,
SUMME TYPE STRING,
SPALTE0 TYPE STRING,
VEFLD TYPE STRING,
OPERA TYPE STRING,
VEMUST TYPE STRING,
FLD001 TYPE STRING,
FLD002 TYPE STRING,
FLD003 TYPE STRING,
FLD004 TYPE STRING,
FLD005 TYPE STRING,
FLD006 TYPE STRING,
FLD007 TYPE STRING,
FLD008 TYPE STRING,
FLD009 TYPE STRING,
FLD010 TYPE STRING,
FLD011 TYPE STRING,
FLD012 TYPE STRING,
FLD013 TYPE STRING,
FLD014 TYPE STRING,
FLD015 TYPE STRING,
FLD016 TYPE STRING,
FLD017 TYPE STRING,
FLD018 TYPE STRING,
FLD019 TYPE STRING,
FLD020 TYPE STRING,
FLD021 TYPE STRING,
FLD022 TYPE STRING,
FLD023 TYPE STRING,
FLD024 TYPE STRING,
FLD025 TYPE STRING,
FLD026 TYPE STRING,
FLD027 TYPE STRING,
FLD028 TYPE STRING,
FLD029 TYPE STRING,
FLD030 TYPE STRING,
FLD031 TYPE STRING,
FLD032 TYPE STRING,
FLD033 TYPE STRING,
FLD034 TYPE STRING,
FLD035 TYPE STRING,END OF T_EKKO_STR. DATA: WA_RMCP4_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_RMCP4_STR-TXTSUM sy-vline
WA_RMCP4_STR-TXTSP0 sy-vline
WA_RMCP4_STR-TXTFLD sy-vline
WA_RMCP4_STR-TXTOP sy-vline
WA_RMCP4_STR-TXTMUS sy-vline
WA_RMCP4_STR-PER001 sy-vline
WA_RMCP4_STR-PER002 sy-vline
WA_RMCP4_STR-PER003 sy-vline
WA_RMCP4_STR-PER004 sy-vline
WA_RMCP4_STR-PER005 sy-vline
WA_RMCP4_STR-PER006 sy-vline
WA_RMCP4_STR-PER007 sy-vline
WA_RMCP4_STR-PER008 sy-vline
WA_RMCP4_STR-PER009 sy-vline
WA_RMCP4_STR-PER010 sy-vline
WA_RMCP4_STR-PER011 sy-vline
WA_RMCP4_STR-PER012 sy-vline
WA_RMCP4_STR-PER013 sy-vline
WA_RMCP4_STR-PER014 sy-vline
WA_RMCP4_STR-PER015 sy-vline
WA_RMCP4_STR-PER016 sy-vline
WA_RMCP4_STR-PER017 sy-vline
WA_RMCP4_STR-PER018 sy-vline
WA_RMCP4_STR-PER019 sy-vline
WA_RMCP4_STR-PER020 sy-vline
WA_RMCP4_STR-PER021 sy-vline
WA_RMCP4_STR-PER022 sy-vline
WA_RMCP4_STR-PER023 sy-vline
WA_RMCP4_STR-PER024 sy-vline
WA_RMCP4_STR-PER025 sy-vline
WA_RMCP4_STR-PER026 sy-vline
WA_RMCP4_STR-PER027 sy-vline
WA_RMCP4_STR-PER028 sy-vline
WA_RMCP4_STR-PER029 sy-vline
WA_RMCP4_STR-PER030 sy-vline
WA_RMCP4_STR-PER031 sy-vline
WA_RMCP4_STR-PER032 sy-vline
WA_RMCP4_STR-PER033 sy-vline
WA_RMCP4_STR-PER034 sy-vline
WA_RMCP4_STR-PER035 sy-vline
WA_RMCP4_STR-SUMME sy-vline
WA_RMCP4_STR-SPALTE0 sy-vline
WA_RMCP4_STR-VEFLD sy-vline
WA_RMCP4_STR-OPERA sy-vline
WA_RMCP4_STR-VEMUST sy-vline
WA_RMCP4_STR-FLD001 sy-vline
WA_RMCP4_STR-FLD002 sy-vline
WA_RMCP4_STR-FLD003 sy-vline
WA_RMCP4_STR-FLD004 sy-vline
WA_RMCP4_STR-FLD005 sy-vline
WA_RMCP4_STR-FLD006 sy-vline
WA_RMCP4_STR-FLD007 sy-vline
WA_RMCP4_STR-FLD008 sy-vline
WA_RMCP4_STR-FLD009 sy-vline
WA_RMCP4_STR-FLD010 sy-vline
WA_RMCP4_STR-FLD011 sy-vline
WA_RMCP4_STR-FLD012 sy-vline
WA_RMCP4_STR-FLD013 sy-vline
WA_RMCP4_STR-FLD014 sy-vline
WA_RMCP4_STR-FLD015 sy-vline
WA_RMCP4_STR-FLD016 sy-vline
WA_RMCP4_STR-FLD017 sy-vline
WA_RMCP4_STR-FLD018 sy-vline
WA_RMCP4_STR-FLD019 sy-vline
WA_RMCP4_STR-FLD020 sy-vline
WA_RMCP4_STR-FLD021 sy-vline
WA_RMCP4_STR-FLD022 sy-vline
WA_RMCP4_STR-FLD023 sy-vline
WA_RMCP4_STR-FLD024 sy-vline
WA_RMCP4_STR-FLD025 sy-vline
WA_RMCP4_STR-FLD026 sy-vline
WA_RMCP4_STR-FLD027 sy-vline
WA_RMCP4_STR-FLD028 sy-vline
WA_RMCP4_STR-FLD029 sy-vline
WA_RMCP4_STR-FLD030 sy-vline
WA_RMCP4_STR-FLD031 sy-vline
WA_RMCP4_STR-FLD032 sy-vline
WA_RMCP4_STR-FLD033 sy-vline
WA_RMCP4_STR-FLD034 sy-vline
WA_RMCP4_STR-FLD035 sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.