ABAP Select data from SAP table RM08Y 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 RM08Y 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 RM08Y. 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 RM08Y 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_RM08Y TYPE STANDARD TABLE OF RM08Y,
      WA_RM08Y TYPE RM08Y,
      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: <RM08Y> TYPE RM08Y.

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

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

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM RM08Y
*  INTO TABLE @DATA(IT_RM08Y2).
*--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_RM08Y INDEX 1 INTO DATA(WA_RM08Y2).


*Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL
LOOP AT IT_RM08Y ASSIGNING <RM08Y>.
*To update a field value using a field symbol simply change the value via the field symbol pointer
<RM08Y>-PREIS = 1.
<RM08Y>-BRT_PREIS = 1.
<RM08Y>-MAT_PREIS = 1.
<RM08Y>-ZUG_PREIS = 1.
<RM08Y>-SUM_MYMNG = 1.
ENDLOOP.

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

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_RM08Y-SUM_MYWRN, sy-vline,
WA_RM08Y-SUM_MYWRT, sy-vline,
WA_RM08Y-SUM_ZUMNG, sy-vline,
WA_RM08Y-SUM_ZUWRT, sy-vline,
WA_RM08Y-KEYTEXT, sy-vline,
WA_RM08Y-DYFRAGE, sy-vline.
ENDLOOP. *Add any further fields from structure WA_RM08Y 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_RM08Y 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_RM08Y INTO WA_RM08Y. *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_RM08Y_STR,
PREIS TYPE STRING,
BRT_PREIS TYPE STRING,
MAT_PREIS TYPE STRING,
ZUG_PREIS TYPE STRING,
SUM_MYMNG TYPE STRING,
SUM_MYWRN TYPE STRING,
SUM_MYWRT TYPE STRING,
SUM_ZUMNG TYPE STRING,
SUM_ZUWRT TYPE STRING,
KEYTEXT TYPE STRING,
DYFRAGE TYPE STRING,
DYINDX_MAN TYPE STRING,
DYINDX_AUT TYPE STRING,
DYINDLIFO TYPE STRING,
LIF_SDM TYPE STRING,
LIF_SDT TYPE STRING,
LIF_SMP TYPE STRING,
LIF_SDJ TYPE STRING,
LIF_NETTO TYPE STRING,
LIF_BRT TYPE STRING,
LIF_AUFHOL TYPE STRING,
LIF_POOL TYPE STRING,
LIF_UPDA TYPE STRING,
LIF_VJAHR TYPE STRING,
LIF_VVJAHR TYPE STRING,
LIF_VMONAT TYPE STRING,
LIF_CURRENT TYPE STRING,
LIF_SUM TYPE STRING,
NO_POOL TYPE STRING,
NO_LIFO TYPE STRING,
LIF_BWA TYPE STRING,
PERIOD TYPE STRING,
PERIOD1 TYPE STRING,
PERIOD2 TYPE STRING,
EX_INIT TYPE STRING,
COMCT TYPE STRING,
NIWE_PREIS TYPE STRING,
SLDBM TYPE STRING,
SFREE TYPE STRING,
SEXTR TYPE STRING,
FIXTIME TYPE STRING,
DYNTIME TYPE STRING,
ALLTIME TYPE STRING,
XLIFO_SET TYPE STRING,
XLIFO_ERASE TYPE STRING,
MYMS_REORG TYPE STRING,
MYPS_V1 TYPE STRING,
MYPS_V2 TYPE STRING,
MYPS_V3 TYPE STRING,
GANZZAHL TYPE STRING,
NUR_NEU TYPE STRING,
WERTPROP TYPE STRING,
MYMPY TYPE STRING,
INS_UP TYPE STRING,
COM_WORK TYPE STRING,
UXFILE TYPE STRING,
PCFILE TYPE STRING,
INS_ALWAYS TYPE STRING,
INS_ONLY_NEW TYPE STRING,
SIMULA TYPE STRING,
KZ_MYMP TYPE STRING,
KZ_MYMP1 TYPE STRING,
KZ_MYML TYPE STRING,
KZ_MYMLM TYPE STRING,
KZ_MYPL TYPE STRING,
KZ_MYPLM TYPE STRING,
KZ_MYMFT TYPE STRING,
DTAIL TYPE STRING,
PRECHK TYPE STRING,
FNIWE TYPE STRING,
KZ_MYMLX TYPE STRING,
KZ_MYPLX TYPE STRING,
METHTEXT TYPE STRING,
LS_MYPS3 TYPE STRING,
LS_REASS TYPE STRING,
LS_NOACT TYPE STRING,
PRPRO TYPE STRING,
PRALL TYPE STRING,
CHDOC TYPE STRING,
BBSTP0 TYPE STRING,
TRPIP TYPE STRING,
TRVAL TYPE STRING,END OF T_EKKO_STR. DATA: WA_RM08Y_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_RM08Y_STR-PREIS sy-vline
WA_RM08Y_STR-BRT_PREIS sy-vline
WA_RM08Y_STR-MAT_PREIS sy-vline
WA_RM08Y_STR-ZUG_PREIS sy-vline
WA_RM08Y_STR-SUM_MYMNG sy-vline
WA_RM08Y_STR-SUM_MYWRN sy-vline
WA_RM08Y_STR-SUM_MYWRT sy-vline
WA_RM08Y_STR-SUM_ZUMNG sy-vline
WA_RM08Y_STR-SUM_ZUWRT sy-vline
WA_RM08Y_STR-KEYTEXT sy-vline
WA_RM08Y_STR-DYFRAGE sy-vline
WA_RM08Y_STR-DYINDX_MAN sy-vline
WA_RM08Y_STR-DYINDX_AUT sy-vline
WA_RM08Y_STR-DYINDLIFO sy-vline
WA_RM08Y_STR-LIF_SDM sy-vline
WA_RM08Y_STR-LIF_SDT sy-vline
WA_RM08Y_STR-LIF_SMP sy-vline
WA_RM08Y_STR-LIF_SDJ sy-vline
WA_RM08Y_STR-LIF_NETTO sy-vline
WA_RM08Y_STR-LIF_BRT sy-vline
WA_RM08Y_STR-LIF_AUFHOL sy-vline
WA_RM08Y_STR-LIF_POOL sy-vline
WA_RM08Y_STR-LIF_UPDA sy-vline
WA_RM08Y_STR-LIF_VJAHR sy-vline
WA_RM08Y_STR-LIF_VVJAHR sy-vline
WA_RM08Y_STR-LIF_VMONAT sy-vline
WA_RM08Y_STR-LIF_CURRENT sy-vline
WA_RM08Y_STR-LIF_SUM sy-vline
WA_RM08Y_STR-NO_POOL sy-vline
WA_RM08Y_STR-NO_LIFO sy-vline
WA_RM08Y_STR-LIF_BWA sy-vline
WA_RM08Y_STR-PERIOD sy-vline
WA_RM08Y_STR-PERIOD1 sy-vline
WA_RM08Y_STR-PERIOD2 sy-vline
WA_RM08Y_STR-EX_INIT sy-vline
WA_RM08Y_STR-COMCT sy-vline
WA_RM08Y_STR-NIWE_PREIS sy-vline
WA_RM08Y_STR-SLDBM sy-vline
WA_RM08Y_STR-SFREE sy-vline
WA_RM08Y_STR-SEXTR sy-vline
WA_RM08Y_STR-FIXTIME sy-vline
WA_RM08Y_STR-DYNTIME sy-vline
WA_RM08Y_STR-ALLTIME sy-vline
WA_RM08Y_STR-XLIFO_SET sy-vline
WA_RM08Y_STR-XLIFO_ERASE sy-vline
WA_RM08Y_STR-MYMS_REORG sy-vline
WA_RM08Y_STR-MYPS_V1 sy-vline
WA_RM08Y_STR-MYPS_V2 sy-vline
WA_RM08Y_STR-MYPS_V3 sy-vline
WA_RM08Y_STR-GANZZAHL sy-vline
WA_RM08Y_STR-NUR_NEU sy-vline
WA_RM08Y_STR-WERTPROP sy-vline
WA_RM08Y_STR-MYMPY sy-vline
WA_RM08Y_STR-INS_UP sy-vline
WA_RM08Y_STR-COM_WORK sy-vline
WA_RM08Y_STR-UXFILE sy-vline
WA_RM08Y_STR-PCFILE sy-vline
WA_RM08Y_STR-INS_ALWAYS sy-vline
WA_RM08Y_STR-INS_ONLY_NEW sy-vline
WA_RM08Y_STR-SIMULA sy-vline
WA_RM08Y_STR-KZ_MYMP sy-vline
WA_RM08Y_STR-KZ_MYMP1 sy-vline
WA_RM08Y_STR-KZ_MYML sy-vline
WA_RM08Y_STR-KZ_MYMLM sy-vline
WA_RM08Y_STR-KZ_MYPL sy-vline
WA_RM08Y_STR-KZ_MYPLM sy-vline
WA_RM08Y_STR-KZ_MYMFT sy-vline
WA_RM08Y_STR-DTAIL sy-vline
WA_RM08Y_STR-PRECHK sy-vline
WA_RM08Y_STR-FNIWE sy-vline
WA_RM08Y_STR-KZ_MYMLX sy-vline
WA_RM08Y_STR-KZ_MYPLX sy-vline
WA_RM08Y_STR-METHTEXT sy-vline
WA_RM08Y_STR-LS_MYPS3 sy-vline
WA_RM08Y_STR-LS_REASS sy-vline
WA_RM08Y_STR-LS_NOACT sy-vline
WA_RM08Y_STR-PRPRO sy-vline
WA_RM08Y_STR-PRALL sy-vline
WA_RM08Y_STR-CHDOC sy-vline
WA_RM08Y_STR-BBSTP0 sy-vline
WA_RM08Y_STR-TRPIP sy-vline
WA_RM08Y_STR-TRVAL sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.