ABAP Select data from SAP table RM61B 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 RM61B 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 RM61B. 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 RM61B 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_RM61B TYPE STANDARD TABLE OF RM61B,
      WA_RM61B TYPE RM61B,
      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: <RM61B> TYPE RM61B.

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

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

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM RM61B
*  INTO TABLE @DATA(IT_RM61B2).
*--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_RM61B INDEX 1 INTO DATA(WA_RM61B2).


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

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

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_RM61B-BWAWE, sy-vline,
WA_RM61B-VERID, sy-vline,
WA_RM61B-ADATU, sy-vline,
WA_RM61B-BDATU, sy-vline,
WA_RM61B-MDV01, sy-vline,
WA_RM61B-MDV02, sy-vline.
ENDLOOP. *Add any further fields from structure WA_RM61B 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_RM61B 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_RM61B INTO WA_RM61B. *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_RM61B-MATNR IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RM61B-MATNR.
WRITE:/ 'New Value:', ld_input.

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

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

*Conversion exit NUMCV, internal->external for field REVLV CALL FUNCTION 'CONVERSION_EXIT_NUMCV_OUTPUT' EXPORTING input = WA_RM61B-REVLV IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RM61B-REVLV.
WRITE:/ 'New Value:', ld_input.

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

*Conversion exit NUMCV, internal->external for field ZPUNKT CALL FUNCTION 'CONVERSION_EXIT_NUMCV_OUTPUT' EXPORTING input = WA_RM61B-ZPUNKT IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RM61B-ZPUNKT.
WRITE:/ 'New Value:', ld_input.

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

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

*Conversion exit ABPSP, internal->external for field PSPNR CALL FUNCTION 'CONVERSION_EXIT_ABPSP_OUTPUT' EXPORTING input = WA_RM61B-PSPNR IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RM61B-PSPNR.
WRITE:/ 'New Value:', ld_input.

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

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

*Conversion exit DOCUB, internal->external for field DOCUBATCH_CHARG CALL FUNCTION 'CONVERSION_EXIT_DOCUB_OUTPUT' EXPORTING input = WA_RM61B-DOCUBATCH_CHARG IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RM61B-DOCUBATCH_CHARG.
WRITE:/ 'New Value:', ld_input.

*Conversion exit CUNIT, internal->external for field /CWM/ERFME CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT' EXPORTING input = WA_RM61B-/CWM/ERFME IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RM61B-/CWM/ERFME.
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_RM61B_STR,
MANDT TYPE STRING,
MATNR TYPE STRING,
WERKS TYPE STRING,
ALORT TYPE STRING,
BWAWA TYPE STRING,
BWAWE TYPE STRING,
VERID TYPE STRING,
ADATU TYPE STRING,
BDATU TYPE STRING,
MDV01 TYPE STRING,
MDV02 TYPE STRING,
AUFNR TYPE STRING,
BUDAT TYPE STRING,
BLDAT TYPE STRING,
BKTXT TYPE STRING,
ERFMG TYPE STRING,
ERFME TYPE STRING,
AUSMG TYPE STRING,
STLHELL TYPE STRING,
STLDARK TYPE STRING,
KKORR TYPE STRING,
KORRZ TYPE STRING,
KORRNZ TYPE STRING,
REVLV TYPE STRING,
LBOFF TYPE STRING,
LBSTD_P TYPE STRING,
GRUND TYPE STRING,
VORPER TYPE STRING,
AKTPER TYPE STRING,
FLGPER TYPE STRING,
OVPMG TYPE STRING,
OAPMG TYPE STRING,
OFPMG TYPE STRING,
IVPMG TYPE STRING,
IAPMG TYPE STRING,
OMGTX TYPE STRING,
IMGTX TYPE STRING,
MAKTX TYPE STRING,
MMGTX TYPE STRING,
ACHARG TYPE STRING,
PLNUM TYPE STRING,
ZPUNKT TYPE STRING,
BWASC TYPE STRING,
BWACO TYPE STRING,
BWAWEM TYPE STRING,
PKNUM TYPE STRING,
PKPOS TYPE STRING,
PRVBE TYPE STRING,
KDAUF TYPE STRING,
KDPOS TYPE STRING,
POS TYPE STRING,
SELEK TYPE STRING,
BWAWAM TYPE STRING,
ZPKNB TYPE STRING,
BWACR TYPE STRING,
REFMG TYPE STRING,
POSTA TYPE STRING,
POSTZ TYPE STRING,
POSTN TYPE STRING,
POWAA TYPE STRING,
POWAZ TYPE STRING,
POWAN TYPE STRING,
BDENR TYPE STRING,
USR01 TYPE STRING,
SCHIV TYPE STRING,
UZEIT TYPE STRING,
UNAME TYPE STRING,
MHDAT TYPE STRING,
BWAWES TYPE STRING,
BWAWAS TYPE STRING,
BWASCS TYPE STRING,
BWACOS TYPE STRING,
BWAWEMS TYPE STRING,
BWAWAMS TYPE STRING,
BWACRS TYPE STRING,
SCRZ TYPE STRING,
SCRZB TYPE STRING,
SCRZZ TYPE STRING,
RADIOFR TYPE STRING,
RADIOQU TYPE STRING,
RADIOSP TYPE STRING,
PWAUS TYPE STRING,
PKOST TYPE STRING,
PKAPA TYPE STRING,
OBART TYPE STRING,
OBNUM TYPE STRING,
KSTLF TYPE STRING,
PLWERK TYPE STRING,
PSPNR TYPE STRING,
SCRAP TYPE STRING,
RB_BAUGR TYPE STRING,
RB_KOMPO TYPE STRING,
RB_LEIST TYPE STRING,
BOM_ON TYPE STRING,
BOM_OFF TYPE STRING,
ROUT_ON TYPE STRING,
ROUT_OFF TYPE STRING,
PRODDATE TYPE STRING,
EXPIRDATE TYPE STRING,
AUFLD TYPE STRING,
REP_POINTS TYPE STRING,
MB_GRUND TYPE STRING,
WE_LGNUM TYPE STRING,
WE_LGTYP TYPE STRING,
WE_LGPLA TYPE STRING,
PERNR TYPE STRING,
GRUNR TYPE STRING,
LOART TYPE STRING,
LOGRP TYPE STRING,
LSTYP TYPE STRING,
USER1 TYPE STRING,
USER2 TYPE STRING,
REWORK_RELEVANT TYPE STRING,
REASON TYPE STRING,
COST_CENTER TYPE STRING,
NOTIF_NUMBER TYPE STRING,
DOCUBATCH_KEY TYPE STRING,
DOCUBATCH_CONTROL TYPE STRING,
DOCUBATCH_CHARG TYPE STRING,
DOCUBATCH_MULT_ENTRIES TYPE STRING,
EWM_LGNUM TYPE STRING,
EWM_LGPLA TYPE STRING,
/CWM/ERFMG TYPE STRING,
/CWM/ERFME TYPE STRING,
/CWM/AUSMG TYPE STRING,
KZTTZ TYPE STRING,END OF T_EKKO_STR. DATA: WA_RM61B_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_RM61B_STR-MANDT sy-vline
WA_RM61B_STR-MATNR sy-vline
WA_RM61B_STR-WERKS sy-vline
WA_RM61B_STR-ALORT sy-vline
WA_RM61B_STR-BWAWA sy-vline
WA_RM61B_STR-BWAWE sy-vline
WA_RM61B_STR-VERID sy-vline
WA_RM61B_STR-ADATU sy-vline
WA_RM61B_STR-BDATU sy-vline
WA_RM61B_STR-MDV01 sy-vline
WA_RM61B_STR-MDV02 sy-vline
WA_RM61B_STR-AUFNR sy-vline
WA_RM61B_STR-BUDAT sy-vline
WA_RM61B_STR-BLDAT sy-vline
WA_RM61B_STR-BKTXT sy-vline
WA_RM61B_STR-ERFMG sy-vline
WA_RM61B_STR-ERFME sy-vline
WA_RM61B_STR-AUSMG sy-vline
WA_RM61B_STR-STLHELL sy-vline
WA_RM61B_STR-STLDARK sy-vline
WA_RM61B_STR-KKORR sy-vline
WA_RM61B_STR-KORRZ sy-vline
WA_RM61B_STR-KORRNZ sy-vline
WA_RM61B_STR-REVLV sy-vline
WA_RM61B_STR-LBOFF sy-vline
WA_RM61B_STR-LBSTD_P sy-vline
WA_RM61B_STR-GRUND sy-vline
WA_RM61B_STR-VORPER sy-vline
WA_RM61B_STR-AKTPER sy-vline
WA_RM61B_STR-FLGPER sy-vline
WA_RM61B_STR-OVPMG sy-vline
WA_RM61B_STR-OAPMG sy-vline
WA_RM61B_STR-OFPMG sy-vline
WA_RM61B_STR-IVPMG sy-vline
WA_RM61B_STR-IAPMG sy-vline
WA_RM61B_STR-OMGTX sy-vline
WA_RM61B_STR-IMGTX sy-vline
WA_RM61B_STR-MAKTX sy-vline
WA_RM61B_STR-MMGTX sy-vline
WA_RM61B_STR-ACHARG sy-vline
WA_RM61B_STR-PLNUM sy-vline
WA_RM61B_STR-ZPUNKT sy-vline
WA_RM61B_STR-BWASC sy-vline
WA_RM61B_STR-BWACO sy-vline
WA_RM61B_STR-BWAWEM sy-vline
WA_RM61B_STR-PKNUM sy-vline
WA_RM61B_STR-PKPOS sy-vline
WA_RM61B_STR-PRVBE sy-vline
WA_RM61B_STR-KDAUF sy-vline
WA_RM61B_STR-KDPOS sy-vline
WA_RM61B_STR-POS sy-vline
WA_RM61B_STR-SELEK sy-vline
WA_RM61B_STR-BWAWAM sy-vline
WA_RM61B_STR-ZPKNB sy-vline
WA_RM61B_STR-BWACR sy-vline
WA_RM61B_STR-REFMG sy-vline
WA_RM61B_STR-POSTA sy-vline
WA_RM61B_STR-POSTZ sy-vline
WA_RM61B_STR-POSTN sy-vline
WA_RM61B_STR-POWAA sy-vline
WA_RM61B_STR-POWAZ sy-vline
WA_RM61B_STR-POWAN sy-vline
WA_RM61B_STR-BDENR sy-vline
WA_RM61B_STR-USR01 sy-vline
WA_RM61B_STR-SCHIV sy-vline
WA_RM61B_STR-UZEIT sy-vline
WA_RM61B_STR-UNAME sy-vline
WA_RM61B_STR-MHDAT sy-vline
WA_RM61B_STR-BWAWES sy-vline
WA_RM61B_STR-BWAWAS sy-vline
WA_RM61B_STR-BWASCS sy-vline
WA_RM61B_STR-BWACOS sy-vline
WA_RM61B_STR-BWAWEMS sy-vline
WA_RM61B_STR-BWAWAMS sy-vline
WA_RM61B_STR-BWACRS sy-vline
WA_RM61B_STR-SCRZ sy-vline
WA_RM61B_STR-SCRZB sy-vline
WA_RM61B_STR-SCRZZ sy-vline
WA_RM61B_STR-RADIOFR sy-vline
WA_RM61B_STR-RADIOQU sy-vline
WA_RM61B_STR-RADIOSP sy-vline
WA_RM61B_STR-PWAUS sy-vline
WA_RM61B_STR-PKOST sy-vline
WA_RM61B_STR-PKAPA sy-vline
WA_RM61B_STR-OBART sy-vline
WA_RM61B_STR-OBNUM sy-vline
WA_RM61B_STR-KSTLF sy-vline
WA_RM61B_STR-PLWERK sy-vline
WA_RM61B_STR-PSPNR sy-vline
WA_RM61B_STR-SCRAP sy-vline
WA_RM61B_STR-RB_BAUGR sy-vline
WA_RM61B_STR-RB_KOMPO sy-vline
WA_RM61B_STR-RB_LEIST sy-vline
WA_RM61B_STR-BOM_ON sy-vline
WA_RM61B_STR-BOM_OFF sy-vline
WA_RM61B_STR-ROUT_ON sy-vline
WA_RM61B_STR-ROUT_OFF sy-vline
WA_RM61B_STR-PRODDATE sy-vline
WA_RM61B_STR-EXPIRDATE sy-vline
WA_RM61B_STR-AUFLD sy-vline
WA_RM61B_STR-REP_POINTS sy-vline
WA_RM61B_STR-MB_GRUND sy-vline
WA_RM61B_STR-WE_LGNUM sy-vline
WA_RM61B_STR-WE_LGTYP sy-vline
WA_RM61B_STR-WE_LGPLA sy-vline
WA_RM61B_STR-PERNR sy-vline
WA_RM61B_STR-GRUNR sy-vline
WA_RM61B_STR-LOART sy-vline
WA_RM61B_STR-LOGRP sy-vline
WA_RM61B_STR-LSTYP sy-vline
WA_RM61B_STR-USER1 sy-vline
WA_RM61B_STR-USER2 sy-vline
WA_RM61B_STR-REWORK_RELEVANT sy-vline
WA_RM61B_STR-REASON sy-vline
WA_RM61B_STR-COST_CENTER sy-vline
WA_RM61B_STR-NOTIF_NUMBER sy-vline
WA_RM61B_STR-DOCUBATCH_KEY sy-vline
WA_RM61B_STR-DOCUBATCH_CONTROL sy-vline
WA_RM61B_STR-DOCUBATCH_CHARG sy-vline
WA_RM61B_STR-DOCUBATCH_MULT_ENTRIES sy-vline
WA_RM61B_STR-EWM_LGNUM sy-vline
WA_RM61B_STR-EWM_LGPLA sy-vline
WA_RM61B_STR-/CWM/ERFMG sy-vline
WA_RM61B_STR-/CWM/ERFME sy-vline
WA_RM61B_STR-/CWM/AUSMG sy-vline
WA_RM61B_STR-KZTTZ sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.