ABAP Select data from SAP table RM61M 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 RM61M 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 RM61M. 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 RM61M 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_RM61M TYPE STANDARD TABLE OF RM61M,
      WA_RM61M TYPE RM61M,
      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: <RM61M> TYPE RM61M.

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

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

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM RM61M
*  INTO TABLE @DATA(IT_RM61M2).
*--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_RM61M INDEX 1 INTO DATA(WA_RM61M2).


*Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL
LOOP AT IT_RM61M ASSIGNING <RM61M>.
*To update a field value using a field symbol simply change the value via the field symbol pointer
<RM61M>-AGSL1 = 1.
<RM61M>-AGSL2 = 1.
<RM61M>-AGSL3 = 1.
<RM61M>-AGSL4 = 1.
<RM61M>-AGSL5 = 1.
ENDLOOP.

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

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_RM61M-AGSL6, sy-vline,
WA_RM61M-AGSL7, sy-vline,
WA_RM61M-AGSL8, sy-vline,
WA_RM61M-AGTX1, sy-vline,
WA_RM61M-AGTX2, sy-vline,
WA_RM61M-AGTX3, sy-vline.
ENDLOOP. *Add any further fields from structure WA_RM61M 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_RM61M 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_RM61M INTO WA_RM61M. *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_RM61M-MATNR IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RM61M-MATNR.
WRITE:/ 'New Value:', ld_input.

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

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

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

*Conversion exit ABPSN, internal->external for field ANPRONR CALL FUNCTION 'CONVERSION_EXIT_ABPSN_OUTPUT' EXPORTING input = WA_RM61M-ANPRONR IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RM61M-ANPRONR.
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_RM61M_STR,
AGSL1 TYPE STRING,
AGSL2 TYPE STRING,
AGSL3 TYPE STRING,
AGSL4 TYPE STRING,
AGSL5 TYPE STRING,
AGSL6 TYPE STRING,
AGSL7 TYPE STRING,
AGSL8 TYPE STRING,
AGTX1 TYPE STRING,
AGTX2 TYPE STRING,
AGTX3 TYPE STRING,
AGTX4 TYPE STRING,
AGTX5 TYPE STRING,
AGTX6 TYPE STRING,
AGTX7 TYPE STRING,
AGTX8 TYPE STRING,
AUSKT TYPE STRING,
AUSK2 TYPE STRING,
AUSLT TYPE STRING,
AUSL2 TYPE STRING,
AUSNM TYPE STRING,
BEADB TYPE STRING,
BEADV TYPE STRING,
BESKZ TYPE STRING,
BWPRH TYPE STRING,
BWPRS TYPE STRING,
DAT00 TYPE STRING,
DELB1 TYPE STRING,
DISGR TYPE STRING,
DISPO TYPE STRING,
DISTR TYPE STRING,
DRPDY TYPE STRING,
DSDAB TYPE STRING,
DSDAV TYPE STRING,
DSELK TYPE STRING,
DSNAM TYPE STRING,
EKGRP TYPE STRING,
EKNAM TYPE STRING,
EXTRA TYPE STRING,
FCODE TYPE STRING,
ISOCD TYPE STRING,
JBEKZ TYPE STRING,
MAKTX TYPE STRING,
MANDT TYPE STRING,
MATNR TYPE STRING,
MATNS TYPE STRING,
MATN1 TYPE STRING,
MDPRF TYPE STRING,
MDSEC TYPE STRING,
MDTXT TYPE STRING,
MEINH TYPE STRING,
MPSDY TYPE STRING,
MNG01 TYPE STRING,
MSEHT TYPE STRING,
NAUKZ TYPE STRING,
NBEKZ TYPE STRING,
PAGEC TYPE STRING,
PAGE1 TYPE STRING,
PLANR TYPE STRING,
PLANO TYPE STRING,
PLAN1 TYPE STRING,
PLSCN TYPE STRING,
PLSCN2 TYPE STRING,
PLSCT TYPE STRING,
PLSCT2 TYPE STRING,
PL_MRPLS TYPE STRING,
PL_NTHNG TYPE STRING,
PL_PLSCN TYPE STRING,
PL_STCKR TYPE STRING,
PL_SECTION TYPE STRING,
PRAST TYPE STRING,
PRGRP TYPE STRING,
RWDA1 TYPE STRING,
RWDA2 TYPE STRING,
SBEW1 TYPE STRING,
SBEW2 TYPE STRING,
SBEW3 TYPE STRING,
SBEW4 TYPE STRING,
SBEW5 TYPE STRING,
SGRTX TYPE STRING,
SOBES TYPE STRING,
SOBSL TYPE STRING,
SSECB TYPE STRING,
SSECC TYPE STRING,
SSECN TYPE STRING,
SSECV TYPE STRING,
STOCKITEMS TYPE STRING,
STPRS TYPE STRING,
USPRF TYPE STRING,
USTEX TYPE STRING,
VERPR TYPE STRING,
WAERS TYPE STRING,
WERKS TYPE STRING,
WRKTX TYPE STRING,
ZKPRS TYPE STRING,
BOOLEAN TYPE STRING,
BERID TYPE STRING,
BERTX TYPE STRING,
DBRKZ TYPE STRING,
WRKKZ TYPE STRING,
OLDVIEW TYPE STRING,
COLUMNF TYPE STRING,
COLUMNT TYPE STRING,
COLUMNM TYPE STRING,
LABST TYPE STRING,
DISMM TYPE STRING,
WZEIT TYPE STRING,
PG_TXT TYPE STRING,
LABSTV TYPE STRING,
LABSTC TYPE STRING,
LABSTCV TYPE STRING,
CONVERO TYPE STRING,
CONVERQ TYPE STRING,
CONVERC TYPE STRING,
MSEHTO TYPE STRING,
MSEHTQ TYPE STRING,
MSEHTC TYPE STRING,
COMPWITH TYPE STRING,
COMPORG TYPE STRING,
COMPSHON TYPE STRING,
COMPDIFF TYPE STRING,
CONVEROC TYPE STRING,
MSEHTO2 TYPE STRING,
MANO TYPE STRING,
ABSCH TYPE STRING,
ABSCH2 TYPE STRING,
ANPLANR TYPE STRING,
ANKDNR TYPE STRING,
ANKDPOS TYPE STRING,
ANPRONR TYPE STRING,
ANLANR1 TYPE STRING,
ANLANR2 TYPE STRING,
ANLONR TYPE STRING,
PRABSCH TYPE STRING,
KDABSCH TYPE STRING,
LA1ABSCH TYPE STRING,
LA2ABSCH TYPE STRING,
LOABSCH TYPE STRING,
VOABSCH TYPE STRING,
EMPTYLINE TYPE STRING,
MNTXT TYPE STRING,
WERKS2 TYPE STRING,
WERKS2TXT TYPE STRING,
LABSTO TYPE STRING,END OF T_EKKO_STR. DATA: WA_RM61M_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_RM61M_STR-AGSL1 sy-vline
WA_RM61M_STR-AGSL2 sy-vline
WA_RM61M_STR-AGSL3 sy-vline
WA_RM61M_STR-AGSL4 sy-vline
WA_RM61M_STR-AGSL5 sy-vline
WA_RM61M_STR-AGSL6 sy-vline
WA_RM61M_STR-AGSL7 sy-vline
WA_RM61M_STR-AGSL8 sy-vline
WA_RM61M_STR-AGTX1 sy-vline
WA_RM61M_STR-AGTX2 sy-vline
WA_RM61M_STR-AGTX3 sy-vline
WA_RM61M_STR-AGTX4 sy-vline
WA_RM61M_STR-AGTX5 sy-vline
WA_RM61M_STR-AGTX6 sy-vline
WA_RM61M_STR-AGTX7 sy-vline
WA_RM61M_STR-AGTX8 sy-vline
WA_RM61M_STR-AUSKT sy-vline
WA_RM61M_STR-AUSK2 sy-vline
WA_RM61M_STR-AUSLT sy-vline
WA_RM61M_STR-AUSL2 sy-vline
WA_RM61M_STR-AUSNM sy-vline
WA_RM61M_STR-BEADB sy-vline
WA_RM61M_STR-BEADV sy-vline
WA_RM61M_STR-BESKZ sy-vline
WA_RM61M_STR-BWPRH sy-vline
WA_RM61M_STR-BWPRS sy-vline
WA_RM61M_STR-DAT00 sy-vline
WA_RM61M_STR-DELB1 sy-vline
WA_RM61M_STR-DISGR sy-vline
WA_RM61M_STR-DISPO sy-vline
WA_RM61M_STR-DISTR sy-vline
WA_RM61M_STR-DRPDY sy-vline
WA_RM61M_STR-DSDAB sy-vline
WA_RM61M_STR-DSDAV sy-vline
WA_RM61M_STR-DSELK sy-vline
WA_RM61M_STR-DSNAM sy-vline
WA_RM61M_STR-EKGRP sy-vline
WA_RM61M_STR-EKNAM sy-vline
WA_RM61M_STR-EXTRA sy-vline
WA_RM61M_STR-FCODE sy-vline
WA_RM61M_STR-ISOCD sy-vline
WA_RM61M_STR-JBEKZ sy-vline
WA_RM61M_STR-MAKTX sy-vline
WA_RM61M_STR-MANDT sy-vline
WA_RM61M_STR-MATNR sy-vline
WA_RM61M_STR-MATNS sy-vline
WA_RM61M_STR-MATN1 sy-vline
WA_RM61M_STR-MDPRF sy-vline
WA_RM61M_STR-MDSEC sy-vline
WA_RM61M_STR-MDTXT sy-vline
WA_RM61M_STR-MEINH sy-vline
WA_RM61M_STR-MPSDY sy-vline
WA_RM61M_STR-MNG01 sy-vline
WA_RM61M_STR-MSEHT sy-vline
WA_RM61M_STR-NAUKZ sy-vline
WA_RM61M_STR-NBEKZ sy-vline
WA_RM61M_STR-PAGEC sy-vline
WA_RM61M_STR-PAGE1 sy-vline
WA_RM61M_STR-PLANR sy-vline
WA_RM61M_STR-PLANO sy-vline
WA_RM61M_STR-PLAN1 sy-vline
WA_RM61M_STR-PLSCN sy-vline
WA_RM61M_STR-PLSCN2 sy-vline
WA_RM61M_STR-PLSCT sy-vline
WA_RM61M_STR-PLSCT2 sy-vline
WA_RM61M_STR-PL_MRPLS sy-vline
WA_RM61M_STR-PL_NTHNG sy-vline
WA_RM61M_STR-PL_PLSCN sy-vline
WA_RM61M_STR-PL_STCKR sy-vline
WA_RM61M_STR-PL_SECTION sy-vline
WA_RM61M_STR-PRAST sy-vline
WA_RM61M_STR-PRGRP sy-vline
WA_RM61M_STR-RWDA1 sy-vline
WA_RM61M_STR-RWDA2 sy-vline
WA_RM61M_STR-SBEW1 sy-vline
WA_RM61M_STR-SBEW2 sy-vline
WA_RM61M_STR-SBEW3 sy-vline
WA_RM61M_STR-SBEW4 sy-vline
WA_RM61M_STR-SBEW5 sy-vline
WA_RM61M_STR-SGRTX sy-vline
WA_RM61M_STR-SOBES sy-vline
WA_RM61M_STR-SOBSL sy-vline
WA_RM61M_STR-SSECB sy-vline
WA_RM61M_STR-SSECC sy-vline
WA_RM61M_STR-SSECN sy-vline
WA_RM61M_STR-SSECV sy-vline
WA_RM61M_STR-STOCKITEMS sy-vline
WA_RM61M_STR-STPRS sy-vline
WA_RM61M_STR-USPRF sy-vline
WA_RM61M_STR-USTEX sy-vline
WA_RM61M_STR-VERPR sy-vline
WA_RM61M_STR-WAERS sy-vline
WA_RM61M_STR-WERKS sy-vline
WA_RM61M_STR-WRKTX sy-vline
WA_RM61M_STR-ZKPRS sy-vline
WA_RM61M_STR-BOOLEAN sy-vline
WA_RM61M_STR-BERID sy-vline
WA_RM61M_STR-BERTX sy-vline
WA_RM61M_STR-DBRKZ sy-vline
WA_RM61M_STR-WRKKZ sy-vline
WA_RM61M_STR-OLDVIEW sy-vline
WA_RM61M_STR-COLUMNF sy-vline
WA_RM61M_STR-COLUMNT sy-vline
WA_RM61M_STR-COLUMNM sy-vline
WA_RM61M_STR-LABST sy-vline
WA_RM61M_STR-DISMM sy-vline
WA_RM61M_STR-WZEIT sy-vline
WA_RM61M_STR-PG_TXT sy-vline
WA_RM61M_STR-LABSTV sy-vline
WA_RM61M_STR-LABSTC sy-vline
WA_RM61M_STR-LABSTCV sy-vline
WA_RM61M_STR-CONVERO sy-vline
WA_RM61M_STR-CONVERQ sy-vline
WA_RM61M_STR-CONVERC sy-vline
WA_RM61M_STR-MSEHTO sy-vline
WA_RM61M_STR-MSEHTQ sy-vline
WA_RM61M_STR-MSEHTC sy-vline
WA_RM61M_STR-COMPWITH sy-vline
WA_RM61M_STR-COMPORG sy-vline
WA_RM61M_STR-COMPSHON sy-vline
WA_RM61M_STR-COMPDIFF sy-vline
WA_RM61M_STR-CONVEROC sy-vline
WA_RM61M_STR-MSEHTO2 sy-vline
WA_RM61M_STR-MANO sy-vline
WA_RM61M_STR-ABSCH sy-vline
WA_RM61M_STR-ABSCH2 sy-vline
WA_RM61M_STR-ANPLANR sy-vline
WA_RM61M_STR-ANKDNR sy-vline
WA_RM61M_STR-ANKDPOS sy-vline
WA_RM61M_STR-ANPRONR sy-vline
WA_RM61M_STR-ANLANR1 sy-vline
WA_RM61M_STR-ANLANR2 sy-vline
WA_RM61M_STR-ANLONR sy-vline
WA_RM61M_STR-PRABSCH sy-vline
WA_RM61M_STR-KDABSCH sy-vline
WA_RM61M_STR-LA1ABSCH sy-vline
WA_RM61M_STR-LA2ABSCH sy-vline
WA_RM61M_STR-LOABSCH sy-vline
WA_RM61M_STR-VOABSCH sy-vline
WA_RM61M_STR-EMPTYLINE sy-vline
WA_RM61M_STR-MNTXT sy-vline
WA_RM61M_STR-WERKS2 sy-vline
WA_RM61M_STR-WERKS2TXT sy-vline
WA_RM61M_STR-LABSTO sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.