ABAP Select data from SAP table RM06I 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 RM06I 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 RM06I. 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 RM06I 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_RM06I TYPE STANDARD TABLE OF RM06I,
      WA_RM06I TYPE RM06I,
      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: <RM06I> TYPE RM06I.

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

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

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM RM06I
*  INTO TABLE @DATA(IT_RM06I2).
*--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_RM06I INDEX 1 INTO DATA(WA_RM06I2).


*Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL
LOOP AT IT_RM06I ASSIGNING <RM06I>.
*To update a field value using a field symbol simply change the value via the field symbol pointer
<RM06I>-MEIN1 = 1.
<RM06I>-MEIN2 = 1.
<RM06I>-MEIN3 = 1.
<RM06I>-MEIN4 = 1.
<RM06I>-MEIN5 = 1.
ENDLOOP.

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

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_RM06I-MEIN7, sy-vline,
WA_RM06I-WAER1, sy-vline,
WA_RM06I-WAER2, sy-vline,
WA_RM06I-PEINH, sy-vline,
WA_RM06I-WNAME, sy-vline,
WA_RM06I-KLATX, sy-vline.
ENDLOOP. *Add any further fields from structure WA_RM06I 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_RM06I 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_RM06I INTO WA_RM06I. *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 CUNIT, internal->external for field MEIN1 CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT' EXPORTING input = WA_RM06I-MEIN1 IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RM06I-MEIN1.
WRITE:/ 'New Value:', ld_input.

*Conversion exit CUNIT, internal->external for field MEIN2 CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT' EXPORTING input = WA_RM06I-MEIN2 IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RM06I-MEIN2.
WRITE:/ 'New Value:', ld_input.

*Conversion exit CUNIT, internal->external for field MEIN3 CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT' EXPORTING input = WA_RM06I-MEIN3 IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RM06I-MEIN3.
WRITE:/ 'New Value:', ld_input.

*Conversion exit CUNIT, internal->external for field MEIN4 CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT' EXPORTING input = WA_RM06I-MEIN4 IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RM06I-MEIN4.
WRITE:/ 'New Value:', ld_input.

*Conversion exit CUNIT, internal->external for field MEIN5 CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT' EXPORTING input = WA_RM06I-MEIN5 IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RM06I-MEIN5.
WRITE:/ 'New Value:', ld_input.

*Conversion exit CUNIT, internal->external for field MEIN7 CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT' EXPORTING input = WA_RM06I-MEIN7 IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RM06I-MEIN7.
WRITE:/ 'New Value:', ld_input.

*Conversion exit MATN1, internal->external for field MATN1 CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT' EXPORTING input = WA_RM06I-MATN1 IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RM06I-MATN1.
WRITE:/ 'New Value:', ld_input.

*Conversion exit MATN1, internal->external for field MATN2 CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT' EXPORTING input = WA_RM06I-MATN2 IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RM06I-MATN2.
WRITE:/ 'New Value:', ld_input.

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

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

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

*Conversion exit ALPHA, internal->external for field PSANF CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_RM06I-PSANF IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RM06I-PSANF.
WRITE:/ 'New Value:', ld_input.

*Conversion exit CUNIT, internal->external for field MEBME CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT' EXPORTING input = WA_RM06I-MEBME IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RM06I-MEBME.
WRITE:/ 'New Value:', ld_input.

*Conversion exit CUNIT, internal->external for field MEIN6 CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT' EXPORTING input = WA_RM06I-MEIN6 IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RM06I-MEIN6.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ALPHA, internal->external for field SRCSU CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_RM06I-SRCSU IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RM06I-SRCSU.
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_RM06I_STR,
MEIN1 TYPE STRING,
MEIN2 TYPE STRING,
MEIN3 TYPE STRING,
MEIN4 TYPE STRING,
MEIN5 TYPE STRING,
MEIN7 TYPE STRING,
WAER1 TYPE STRING,
WAER2 TYPE STRING,
PEINH TYPE STRING,
WNAME TYPE STRING,
KLATX TYPE STRING,
SELKZ TYPE STRING,
MATN1 TYPE STRING,
MATN2 TYPE STRING,
WERK1 TYPE STRING,
WERK2 TYPE STRING,
DATUM TYPE STRING,
TEXT1 TYPE STRING,
LTEX1 TYPE STRING,
LTEX2 TYPE STRING,
LTEX3 TYPE STRING,
LTEX4 TYPE STRING,
LTEX5 TYPE STRING,
LTEX6 TYPE STRING,
KZLTX TYPE STRING,
SPRAS TYPE STRING,
FORM1 TYPE STRING,
FORM2 TYPE STRING,
FORM3 TYPE STRING,
FORM4 TYPE STRING,
FORM5 TYPE STRING,
FORM6 TYPE STRING,
SPRA1 TYPE STRING,
EXSPR TYPE STRING,
FLAG1 TYPE STRING,
FLAG2 TYPE STRING,
SPRA2 TYPE STRING,
UNAME TYPE STRING,
AEDAT TYPE STRING,
EKORG TYPE STRING,
PTEXT TYPE STRING,
AENAM TYPE STRING,
RELEV TYPE STRING,
ONLYW TYPE STRING,
ONLYL TYPE STRING,
SORTE TYPE STRING,
OHNEE TYPE STRING,
INFTX TYPE STRING,
PSSKO TYPE STRING,
PSMIT TYPE STRING,
PSMIN TYPE STRING,
PSPRZ TYPE STRING,
PSANF TYPE STRING,
FIXIE TYPE STRING,
PSBEZ TYPE STRING,
PSEFF TYPE STRING,
SIMNG TYPE STRING,
BPABW TYPE STRING,
LOHNB TYPE STRING,
NORMB TYPE STRING,
MEPTX TYPE STRING,
VABTX TYPE STRING,
MEBME TYPE STRING,
PIPEL TYPE STRING,
ANZMD TYPE STRING,
MEIN6 TYPE STRING,
PSCOL TYPE STRING,
WEINE TYPE STRING,
KONSI TYPE STRING,
VARCOND TYPE STRING,
VARCONDIN TYPE STRING,
VCKEY_NEU TYPE STRING,
UP_MENGE TYPE STRING,
UP_TEXT TYPE STRING,
C_INFOS TYPE STRING,
SRCSU TYPE STRING,
ACTPR TYPE STRING,
CHARG TYPE STRING,
METHOD TYPE STRING,
J_1NWRKSEL TYPE STRING,
J_1NPRSIM TYPE STRING,
J_1NWERKS TYPE STRING,
J_1NWRKINF TYPE STRING,END OF T_EKKO_STR. DATA: WA_RM06I_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_RM06I_STR-MEIN1 sy-vline
WA_RM06I_STR-MEIN2 sy-vline
WA_RM06I_STR-MEIN3 sy-vline
WA_RM06I_STR-MEIN4 sy-vline
WA_RM06I_STR-MEIN5 sy-vline
WA_RM06I_STR-MEIN7 sy-vline
WA_RM06I_STR-WAER1 sy-vline
WA_RM06I_STR-WAER2 sy-vline
WA_RM06I_STR-PEINH sy-vline
WA_RM06I_STR-WNAME sy-vline
WA_RM06I_STR-KLATX sy-vline
WA_RM06I_STR-SELKZ sy-vline
WA_RM06I_STR-MATN1 sy-vline
WA_RM06I_STR-MATN2 sy-vline
WA_RM06I_STR-WERK1 sy-vline
WA_RM06I_STR-WERK2 sy-vline
WA_RM06I_STR-DATUM sy-vline
WA_RM06I_STR-TEXT1 sy-vline
WA_RM06I_STR-LTEX1 sy-vline
WA_RM06I_STR-LTEX2 sy-vline
WA_RM06I_STR-LTEX3 sy-vline
WA_RM06I_STR-LTEX4 sy-vline
WA_RM06I_STR-LTEX5 sy-vline
WA_RM06I_STR-LTEX6 sy-vline
WA_RM06I_STR-KZLTX sy-vline
WA_RM06I_STR-SPRAS sy-vline
WA_RM06I_STR-FORM1 sy-vline
WA_RM06I_STR-FORM2 sy-vline
WA_RM06I_STR-FORM3 sy-vline
WA_RM06I_STR-FORM4 sy-vline
WA_RM06I_STR-FORM5 sy-vline
WA_RM06I_STR-FORM6 sy-vline
WA_RM06I_STR-SPRA1 sy-vline
WA_RM06I_STR-EXSPR sy-vline
WA_RM06I_STR-FLAG1 sy-vline
WA_RM06I_STR-FLAG2 sy-vline
WA_RM06I_STR-SPRA2 sy-vline
WA_RM06I_STR-UNAME sy-vline
WA_RM06I_STR-AEDAT sy-vline
WA_RM06I_STR-EKORG sy-vline
WA_RM06I_STR-PTEXT sy-vline
WA_RM06I_STR-AENAM sy-vline
WA_RM06I_STR-RELEV sy-vline
WA_RM06I_STR-ONLYW sy-vline
WA_RM06I_STR-ONLYL sy-vline
WA_RM06I_STR-SORTE sy-vline
WA_RM06I_STR-OHNEE sy-vline
WA_RM06I_STR-INFTX sy-vline
WA_RM06I_STR-PSSKO sy-vline
WA_RM06I_STR-PSMIT sy-vline
WA_RM06I_STR-PSMIN sy-vline
WA_RM06I_STR-PSPRZ sy-vline
WA_RM06I_STR-PSANF sy-vline
WA_RM06I_STR-FIXIE sy-vline
WA_RM06I_STR-PSBEZ sy-vline
WA_RM06I_STR-PSEFF sy-vline
WA_RM06I_STR-SIMNG sy-vline
WA_RM06I_STR-BPABW sy-vline
WA_RM06I_STR-LOHNB sy-vline
WA_RM06I_STR-NORMB sy-vline
WA_RM06I_STR-MEPTX sy-vline
WA_RM06I_STR-VABTX sy-vline
WA_RM06I_STR-MEBME sy-vline
WA_RM06I_STR-PIPEL sy-vline
WA_RM06I_STR-ANZMD sy-vline
WA_RM06I_STR-MEIN6 sy-vline
WA_RM06I_STR-PSCOL sy-vline
WA_RM06I_STR-WEINE sy-vline
WA_RM06I_STR-KONSI sy-vline
WA_RM06I_STR-VARCOND sy-vline
WA_RM06I_STR-VARCONDIN sy-vline
WA_RM06I_STR-VCKEY_NEU sy-vline
WA_RM06I_STR-UP_MENGE sy-vline
WA_RM06I_STR-UP_TEXT sy-vline
WA_RM06I_STR-C_INFOS sy-vline
WA_RM06I_STR-SRCSU sy-vline
WA_RM06I_STR-ACTPR sy-vline
WA_RM06I_STR-CHARG sy-vline
WA_RM06I_STR-METHOD sy-vline
WA_RM06I_STR-J_1NWRKSEL sy-vline
WA_RM06I_STR-J_1NPRSIM sy-vline
WA_RM06I_STR-J_1NWERKS sy-vline
WA_RM06I_STR-J_1NWRKINF sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.