ABAP Select data from SAP table RM60X 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 RM60X 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 RM60X. 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 RM60X 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_RM60X TYPE STANDARD TABLE OF RM60X,
      WA_RM60X TYPE RM60X,
      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: <RM60X> TYPE RM60X.

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

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

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM RM60X
*  INTO TABLE @DATA(IT_RM60X2).
*--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_RM60X INDEX 1 INTO DATA(WA_RM60X2).


*Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL
LOOP AT IT_RM60X ASSIGNING <RM60X>.
*To update a field value using a field symbol simply change the value via the field symbol pointer
<RM60X>-MANDT = 1.
<RM60X>-MATNR = 1.
<RM60X>-WERKS = 1.
<RM60X>-BERID = 1.
<RM60X>-BDTYP = 1.
ENDLOOP.

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

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_RM60X-ENTLI, sy-vline,
WA_RM60X-ENTLIB, sy-vline,
WA_RM60X-ENTLU, sy-vline,
WA_RM60X-ENTLUB, sy-vline,
WA_RM60X-EDATV, sy-vline,
WA_RM60X-EDATB, sy-vline.
ENDLOOP. *Add any further fields from structure WA_RM60X 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_RM60X 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_RM60X INTO WA_RM60X. *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 MATN1, internal->external for field MATNR CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT' EXPORTING input = WA_RM60X-MATNR IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RM60X-MATNR.
WRITE:/ 'New Value:', ld_input.

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

*Conversion exit MATN1, internal->external for field PRGRP CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT' EXPORTING input = WA_RM60X-PRGRP IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RM60X-PRGRP.
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_RM60X_STR,
MANDT TYPE STRING,
MATNR TYPE STRING,
WERKS TYPE STRING,
BERID TYPE STRING,
BDTYP TYPE STRING,
ENTLI TYPE STRING,
ENTLIB TYPE STRING,
ENTLU TYPE STRING,
ENTLUB TYPE STRING,
EDATV TYPE STRING,
EDATB TYPE STRING,
EDATVI TYPE STRING,
EDATBI TYPE STRING,
AUTEN TYPE STRING,
TXTAW TYPE STRING,
BEDAE TYPE STRING,
BDTXT TYPE STRING,
BEDAR TYPE STRING,
PBDNR TYPE STRING,
MEINS TYPE STRING,
PLMNG TYPE STRING,
LTEX1 TYPE STRING,
H_FABKL TYPE STRING,
PBPT_SELKZ TYPE STRING,
POSNR TYPE STRING,
CUA_LONG TYPE STRING,
ZEILE_LEER TYPE STRING,
SERNR TYPE STRING,
VERSB TYPE STRING,
VBTXT TYPE STRING,
VERVS TYPE STRING,
HISKZ TYPE STRING,
BEDPP TYPE STRING,
URMKZ TYPE STRING,
ANZUO TYPE STRING,
ZUTXT TYPE STRING,
VERID TYPE STRING,
PANEW TYPE STRING,
PASUM TYPE STRING,
PAGNW TYPE STRING,
PAGSU TYPE STRING,
PLSCN TYPE STRING,
STRA1 TYPE STRING,
DISPO TYPE STRING,
PRGKZ TYPE STRING,
PRGRP TYPE STRING,
MAKTX TYPE STRING,
PRITX TYPE STRING,
AGGPB TYPE STRING,
PER01 TYPE STRING,
PER02 TYPE STRING,
PER03 TYPE STRING,
PER04 TYPE STRING,
PER05 TYPE STRING,
PER06 TYPE STRING,
PER07 TYPE STRING,
PER08 TYPE STRING,
PER09 TYPE STRING,
PER10 TYPE STRING,
PER11 TYPE STRING,
PER12 TYPE STRING,
PER13 TYPE STRING,
PER14 TYPE STRING,
PER15 TYPE STRING,
PER16 TYPE STRING,
PER17 TYPE STRING,
PER18 TYPE STRING,
PER19 TYPE STRING,
PER20 TYPE STRING,
PER21 TYPE STRING,
PER22 TYPE STRING,
PER23 TYPE STRING,
PER24 TYPE STRING,
PER25 TYPE STRING,
PER26 TYPE STRING,
PER27 TYPE STRING,
PER28 TYPE STRING,
PER29 TYPE STRING,
PER30 TYPE STRING,
PER31 TYPE STRING,
PER32 TYPE STRING,
PER33 TYPE STRING,
PER34 TYPE STRING,
PER35 TYPE STRING,
PER36 TYPE STRING,
PER37 TYPE STRING,
PER38 TYPE STRING,
PER39 TYPE STRING,
PER40 TYPE STRING,
PER41 TYPE STRING,
PER42 TYPE STRING,
PER43 TYPE STRING,
PER44 TYPE STRING,
PER45 TYPE STRING,
PER46 TYPE STRING,
PER47 TYPE STRING,
PER48 TYPE STRING,
PER49 TYPE STRING,
PER50 TYPE STRING,
PER51 TYPE STRING,
PER52 TYPE STRING,
PLN01 TYPE STRING,
PLN02 TYPE STRING,
PLN03 TYPE STRING,
PLN04 TYPE STRING,
PLN05 TYPE STRING,
PLN06 TYPE STRING,
PLN07 TYPE STRING,
PLN08 TYPE STRING,
PLN09 TYPE STRING,
PLN10 TYPE STRING,
PLN11 TYPE STRING,
PLN12 TYPE STRING,
PLN13 TYPE STRING,
PLN14 TYPE STRING,
PLN15 TYPE STRING,
PLN16 TYPE STRING,
PLN17 TYPE STRING,
PLN18 TYPE STRING,
PLN19 TYPE STRING,
PLN20 TYPE STRING,
PLN21 TYPE STRING,
PLN22 TYPE STRING,
PLN23 TYPE STRING,
PLN24 TYPE STRING,
PLN25 TYPE STRING,
PLN26 TYPE STRING,
PLN27 TYPE STRING,
PLN28 TYPE STRING,
PLN29 TYPE STRING,
PLN30 TYPE STRING,
PLN31 TYPE STRING,
PLN32 TYPE STRING,
PLN33 TYPE STRING,
PLN34 TYPE STRING,
PLN35 TYPE STRING,
PLN36 TYPE STRING,
PLN37 TYPE STRING,
PLN38 TYPE STRING,
PLN39 TYPE STRING,
PLN40 TYPE STRING,
PLN41 TYPE STRING,
PLN42 TYPE STRING,
PLN43 TYPE STRING,
PLN44 TYPE STRING,
PLN45 TYPE STRING,
PLN46 TYPE STRING,
PLN47 TYPE STRING,
PLN48 TYPE STRING,
PLN49 TYPE STRING,
PLN50 TYPE STRING,
PLN51 TYPE STRING,
PLN52 TYPE STRING,
DATVE TYPE STRING,
DATBE TYPE STRING,
MD_LIST TYPE STRING,END OF T_EKKO_STR. DATA: WA_RM60X_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_RM60X_STR-MANDT sy-vline
WA_RM60X_STR-MATNR sy-vline
WA_RM60X_STR-WERKS sy-vline
WA_RM60X_STR-BERID sy-vline
WA_RM60X_STR-BDTYP sy-vline
WA_RM60X_STR-ENTLI sy-vline
WA_RM60X_STR-ENTLIB sy-vline
WA_RM60X_STR-ENTLU sy-vline
WA_RM60X_STR-ENTLUB sy-vline
WA_RM60X_STR-EDATV sy-vline
WA_RM60X_STR-EDATB sy-vline
WA_RM60X_STR-EDATVI sy-vline
WA_RM60X_STR-EDATBI sy-vline
WA_RM60X_STR-AUTEN sy-vline
WA_RM60X_STR-TXTAW sy-vline
WA_RM60X_STR-BEDAE sy-vline
WA_RM60X_STR-BDTXT sy-vline
WA_RM60X_STR-BEDAR sy-vline
WA_RM60X_STR-PBDNR sy-vline
WA_RM60X_STR-MEINS sy-vline
WA_RM60X_STR-PLMNG sy-vline
WA_RM60X_STR-LTEX1 sy-vline
WA_RM60X_STR-H_FABKL sy-vline
WA_RM60X_STR-PBPT_SELKZ sy-vline
WA_RM60X_STR-POSNR sy-vline
WA_RM60X_STR-CUA_LONG sy-vline
WA_RM60X_STR-ZEILE_LEER sy-vline
WA_RM60X_STR-SERNR sy-vline
WA_RM60X_STR-VERSB sy-vline
WA_RM60X_STR-VBTXT sy-vline
WA_RM60X_STR-VERVS sy-vline
WA_RM60X_STR-HISKZ sy-vline
WA_RM60X_STR-BEDPP sy-vline
WA_RM60X_STR-URMKZ sy-vline
WA_RM60X_STR-ANZUO sy-vline
WA_RM60X_STR-ZUTXT sy-vline
WA_RM60X_STR-VERID sy-vline
WA_RM60X_STR-PANEW sy-vline
WA_RM60X_STR-PASUM sy-vline
WA_RM60X_STR-PAGNW sy-vline
WA_RM60X_STR-PAGSU sy-vline
WA_RM60X_STR-PLSCN sy-vline
WA_RM60X_STR-STRA1 sy-vline
WA_RM60X_STR-DISPO sy-vline
WA_RM60X_STR-PRGKZ sy-vline
WA_RM60X_STR-PRGRP sy-vline
WA_RM60X_STR-MAKTX sy-vline
WA_RM60X_STR-PRITX sy-vline
WA_RM60X_STR-AGGPB sy-vline
WA_RM60X_STR-PER01 sy-vline
WA_RM60X_STR-PER02 sy-vline
WA_RM60X_STR-PER03 sy-vline
WA_RM60X_STR-PER04 sy-vline
WA_RM60X_STR-PER05 sy-vline
WA_RM60X_STR-PER06 sy-vline
WA_RM60X_STR-PER07 sy-vline
WA_RM60X_STR-PER08 sy-vline
WA_RM60X_STR-PER09 sy-vline
WA_RM60X_STR-PER10 sy-vline
WA_RM60X_STR-PER11 sy-vline
WA_RM60X_STR-PER12 sy-vline
WA_RM60X_STR-PER13 sy-vline
WA_RM60X_STR-PER14 sy-vline
WA_RM60X_STR-PER15 sy-vline
WA_RM60X_STR-PER16 sy-vline
WA_RM60X_STR-PER17 sy-vline
WA_RM60X_STR-PER18 sy-vline
WA_RM60X_STR-PER19 sy-vline
WA_RM60X_STR-PER20 sy-vline
WA_RM60X_STR-PER21 sy-vline
WA_RM60X_STR-PER22 sy-vline
WA_RM60X_STR-PER23 sy-vline
WA_RM60X_STR-PER24 sy-vline
WA_RM60X_STR-PER25 sy-vline
WA_RM60X_STR-PER26 sy-vline
WA_RM60X_STR-PER27 sy-vline
WA_RM60X_STR-PER28 sy-vline
WA_RM60X_STR-PER29 sy-vline
WA_RM60X_STR-PER30 sy-vline
WA_RM60X_STR-PER31 sy-vline
WA_RM60X_STR-PER32 sy-vline
WA_RM60X_STR-PER33 sy-vline
WA_RM60X_STR-PER34 sy-vline
WA_RM60X_STR-PER35 sy-vline
WA_RM60X_STR-PER36 sy-vline
WA_RM60X_STR-PER37 sy-vline
WA_RM60X_STR-PER38 sy-vline
WA_RM60X_STR-PER39 sy-vline
WA_RM60X_STR-PER40 sy-vline
WA_RM60X_STR-PER41 sy-vline
WA_RM60X_STR-PER42 sy-vline
WA_RM60X_STR-PER43 sy-vline
WA_RM60X_STR-PER44 sy-vline
WA_RM60X_STR-PER45 sy-vline
WA_RM60X_STR-PER46 sy-vline
WA_RM60X_STR-PER47 sy-vline
WA_RM60X_STR-PER48 sy-vline
WA_RM60X_STR-PER49 sy-vline
WA_RM60X_STR-PER50 sy-vline
WA_RM60X_STR-PER51 sy-vline
WA_RM60X_STR-PER52 sy-vline
WA_RM60X_STR-PLN01 sy-vline
WA_RM60X_STR-PLN02 sy-vline
WA_RM60X_STR-PLN03 sy-vline
WA_RM60X_STR-PLN04 sy-vline
WA_RM60X_STR-PLN05 sy-vline
WA_RM60X_STR-PLN06 sy-vline
WA_RM60X_STR-PLN07 sy-vline
WA_RM60X_STR-PLN08 sy-vline
WA_RM60X_STR-PLN09 sy-vline
WA_RM60X_STR-PLN10 sy-vline
WA_RM60X_STR-PLN11 sy-vline
WA_RM60X_STR-PLN12 sy-vline
WA_RM60X_STR-PLN13 sy-vline
WA_RM60X_STR-PLN14 sy-vline
WA_RM60X_STR-PLN15 sy-vline
WA_RM60X_STR-PLN16 sy-vline
WA_RM60X_STR-PLN17 sy-vline
WA_RM60X_STR-PLN18 sy-vline
WA_RM60X_STR-PLN19 sy-vline
WA_RM60X_STR-PLN20 sy-vline
WA_RM60X_STR-PLN21 sy-vline
WA_RM60X_STR-PLN22 sy-vline
WA_RM60X_STR-PLN23 sy-vline
WA_RM60X_STR-PLN24 sy-vline
WA_RM60X_STR-PLN25 sy-vline
WA_RM60X_STR-PLN26 sy-vline
WA_RM60X_STR-PLN27 sy-vline
WA_RM60X_STR-PLN28 sy-vline
WA_RM60X_STR-PLN29 sy-vline
WA_RM60X_STR-PLN30 sy-vline
WA_RM60X_STR-PLN31 sy-vline
WA_RM60X_STR-PLN32 sy-vline
WA_RM60X_STR-PLN33 sy-vline
WA_RM60X_STR-PLN34 sy-vline
WA_RM60X_STR-PLN35 sy-vline
WA_RM60X_STR-PLN36 sy-vline
WA_RM60X_STR-PLN37 sy-vline
WA_RM60X_STR-PLN38 sy-vline
WA_RM60X_STR-PLN39 sy-vline
WA_RM60X_STR-PLN40 sy-vline
WA_RM60X_STR-PLN41 sy-vline
WA_RM60X_STR-PLN42 sy-vline
WA_RM60X_STR-PLN43 sy-vline
WA_RM60X_STR-PLN44 sy-vline
WA_RM60X_STR-PLN45 sy-vline
WA_RM60X_STR-PLN46 sy-vline
WA_RM60X_STR-PLN47 sy-vline
WA_RM60X_STR-PLN48 sy-vline
WA_RM60X_STR-PLN49 sy-vline
WA_RM60X_STR-PLN50 sy-vline
WA_RM60X_STR-PLN51 sy-vline
WA_RM60X_STR-PLN52 sy-vline
WA_RM60X_STR-DATVE sy-vline
WA_RM60X_STR-DATBE sy-vline
WA_RM60X_STR-MD_LIST sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.