ABAP Select data from SAP table RM61C 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 RM61C 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 RM61C. 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 RM61C 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_RM61C TYPE STANDARD TABLE OF RM61C,
      WA_RM61C TYPE RM61C,
      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: <RM61C> TYPE RM61C.

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

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

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM RM61C
*  INTO TABLE @DATA(IT_RM61C2).
*--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_RM61C INDEX 1 INTO DATA(WA_RM61C2).


*Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL
LOOP AT IT_RM61C ASSIGNING <RM61C>.
*To update a field value using a field symbol simply change the value via the field symbol pointer
<RM61C>-WERKS = 1.
<RM61C>-WERKA = 1.
<RM61C>-WERKB = 1.
<RM61C>-NAME1 = 1.
<RM61C>-NAM1A = 1.
ENDLOOP.

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

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_RM61C-NAM1B, sy-vline,
WA_RM61C-MTART, sy-vline,
WA_RM61C-MTARTA, sy-vline,
WA_RM61C-MTARTB, sy-vline,
WA_RM61C-GRTXT, sy-vline,
WA_RM61C-GRTXTA, sy-vline.
ENDLOOP. *Add any further fields from structure WA_RM61C 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_RM61C 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_RM61C INTO WA_RM61C. *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_RM61C_STR,
WERKS TYPE STRING,
WERKA TYPE STRING,
WERKB TYPE STRING,
NAME1 TYPE STRING,
NAM1A TYPE STRING,
NAM1B TYPE STRING,
MTART TYPE STRING,
MTARTA TYPE STRING,
MTARTB TYPE STRING,
GRTXT TYPE STRING,
GRTXTA TYPE STRING,
GRTXTB TYPE STRING,
CORRN TYPE STRING,
V024D TYPE STRING,
V436A TYPE STRING,
V460A TYPE STRING,
TCX02 TYPE STRING,
399D_A TYPE STRING,
399D_F TYPE STRING,
399D_L TYPE STRING,
399D_O TYPE STRING,
399D_U TYPE STRING,
399D_W TYPE STRING,
T399D_A TYPE STRING,
T399D_B TYPE STRING,
T399D_C TYPE STRING,
T399D_I TYPE STRING,
T399D_J TYPE STRING,
T399D_S TYPE STRING,
NRKRS TYPE STRING,
399D_NP TYPE STRING,
399D_NR TYPE STRING,
399D_NB TYPE STRING,
399D_ND TYPE STRING,
UMSTZ TYPE STRING,
T399D_E TYPE STRING,
399D_P TYPE STRING,
438M_A TYPE STRING,
438M_S TYPE STRING,
438M_U TYPE STRING,
T438M_D TYPE STRING,
T438M_E TYPE STRING,
T438M_Q TYPE STRING,
T438M_S TYPE STRING,
T438M_V TYPE STRING,
T438M_P TYPE STRING,
T438M_B TYPE STRING,
T438M_C TYPE STRING,
T438M_F TYPE STRING,
T438M_U TYPE STRING,
T438M_L TYPE STRING,
T399D_L TYPE STRING,
T399D_K TYPE STRING,
T399D_R TYPE STRING,
T399D_D TYPE STRING,
D230 TYPE STRING,
D240 TYPE STRING,
T399D_NS TYPE STRING,
T399D_T TYPE STRING,
399D_E TYPE STRING,
T438M_G TYPE STRING,
T438M_T TYPE STRING,
D250 TYPE STRING,
T399D_P TYPE STRING,
T438M_Z TYPE STRING,
T438M_W TYPE STRING,
T399D_SB TYPE STRING,
T399D_REV TYPE STRING,
T438M_REV TYPE STRING,END OF T_EKKO_STR. DATA: WA_RM61C_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_RM61C_STR-WERKS sy-vline
WA_RM61C_STR-WERKA sy-vline
WA_RM61C_STR-WERKB sy-vline
WA_RM61C_STR-NAME1 sy-vline
WA_RM61C_STR-NAM1A sy-vline
WA_RM61C_STR-NAM1B sy-vline
WA_RM61C_STR-MTART sy-vline
WA_RM61C_STR-MTARTA sy-vline
WA_RM61C_STR-MTARTB sy-vline
WA_RM61C_STR-GRTXT sy-vline
WA_RM61C_STR-GRTXTA sy-vline
WA_RM61C_STR-GRTXTB sy-vline
WA_RM61C_STR-CORRN sy-vline
WA_RM61C_STR-V024D sy-vline
WA_RM61C_STR-V436A sy-vline
WA_RM61C_STR-V460A sy-vline
WA_RM61C_STR-TCX02 sy-vline
WA_RM61C_STR-399D_A sy-vline
WA_RM61C_STR-399D_F sy-vline
WA_RM61C_STR-399D_L sy-vline
WA_RM61C_STR-399D_O sy-vline
WA_RM61C_STR-399D_U sy-vline
WA_RM61C_STR-399D_W sy-vline
WA_RM61C_STR-T399D_A sy-vline
WA_RM61C_STR-T399D_B sy-vline
WA_RM61C_STR-T399D_C sy-vline
WA_RM61C_STR-T399D_I sy-vline
WA_RM61C_STR-T399D_J sy-vline
WA_RM61C_STR-T399D_S sy-vline
WA_RM61C_STR-NRKRS sy-vline
WA_RM61C_STR-399D_NP sy-vline
WA_RM61C_STR-399D_NR sy-vline
WA_RM61C_STR-399D_NB sy-vline
WA_RM61C_STR-399D_ND sy-vline
WA_RM61C_STR-UMSTZ sy-vline
WA_RM61C_STR-T399D_E sy-vline
WA_RM61C_STR-399D_P sy-vline
WA_RM61C_STR-438M_A sy-vline
WA_RM61C_STR-438M_S sy-vline
WA_RM61C_STR-438M_U sy-vline
WA_RM61C_STR-T438M_D sy-vline
WA_RM61C_STR-T438M_E sy-vline
WA_RM61C_STR-T438M_Q sy-vline
WA_RM61C_STR-T438M_S sy-vline
WA_RM61C_STR-T438M_V sy-vline
WA_RM61C_STR-T438M_P sy-vline
WA_RM61C_STR-T438M_B sy-vline
WA_RM61C_STR-T438M_C sy-vline
WA_RM61C_STR-T438M_F sy-vline
WA_RM61C_STR-T438M_U sy-vline
WA_RM61C_STR-T438M_L sy-vline
WA_RM61C_STR-T399D_L sy-vline
WA_RM61C_STR-T399D_K sy-vline
WA_RM61C_STR-T399D_R sy-vline
WA_RM61C_STR-T399D_D sy-vline
WA_RM61C_STR-D230 sy-vline
WA_RM61C_STR-D240 sy-vline
WA_RM61C_STR-T399D_NS sy-vline
WA_RM61C_STR-T399D_T sy-vline
WA_RM61C_STR-399D_E sy-vline
WA_RM61C_STR-T438M_G sy-vline
WA_RM61C_STR-T438M_T sy-vline
WA_RM61C_STR-D250 sy-vline
WA_RM61C_STR-T399D_P sy-vline
WA_RM61C_STR-T438M_Z sy-vline
WA_RM61C_STR-T438M_W sy-vline
WA_RM61C_STR-T399D_SB sy-vline
WA_RM61C_STR-T399D_REV sy-vline
WA_RM61C_STR-T438M_REV sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.