ABAP Select data from SAP table RM08M 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 RM08M 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 RM08M. 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 RM08M 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_RM08M TYPE STANDARD TABLE OF RM08M,
      WA_RM08M TYPE RM08M,
      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: <RM08M> TYPE RM08M.

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

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

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM RM08M
*  INTO TABLE @DATA(IT_RM08M2).
*--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_RM08M INDEX 1 INTO DATA(WA_RM08M2).


*Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL
LOOP AT IT_RM08M ASSIGNING <RM08M>.
*To update a field value using a field symbol simply change the value via the field symbol pointer
<RM08M>-AMPEL = 1.
<RM08M>-ANZPS = 1.
<RM08M>-DIFFERENZ = 1.
<RM08M>-EBELN = 1.
<RM08M>-EBELP = 1.
ENDLOOP.

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

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_RM08M-FRBNR, sy-vline,
WA_RM08M-FWSTE, sy-vline,
WA_RM08M-KONT_SUMME, sy-vline,
WA_RM08M-LFSNR, sy-vline,
WA_RM08M-MULTI_CO, sy-vline,
WA_RM08M-NETTOSUMME, sy-vline.
ENDLOOP. *Add any further fields from structure WA_RM08M 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_RM08M 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_RM08M INTO WA_RM08M. *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 ALPHA, internal->external for field EBELN CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_RM08M-EBELN IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RM08M-EBELN.
WRITE:/ 'New Value:', ld_input.

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

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

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

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

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

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

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

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

*Conversion exit ALPHA, internal->external for field LIFNR_DCFL CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_RM08M-LIFNR_DCFL IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RM08M-LIFNR_DCFL.
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_RM08M_STR,
AMPEL TYPE STRING,
ANZPS TYPE STRING,
DIFFERENZ TYPE STRING,
EBELN TYPE STRING,
EBELP TYPE STRING,
FRBNR TYPE STRING,
FWSTE TYPE STRING,
KONT_SUMME TYPE STRING,
LFSNR TYPE STRING,
MULTI_CO TYPE STRING,
NETTOSUMME TYPE STRING,
WERKS TYPE STRING,
XGUTS TYPE STRING,
XMSEL TYPE STRING,
XMSEL_BEST TYPE STRING,
XMSEL_LIFS TYPE STRING,
XMSEL_WERK TYPE STRING,
XMSEL_FRBR TYPE STRING,
XMSEL_LBLN TYPE STRING,
XMSEL_SERV TYPE STRING,
ZOLLT TYPE STRING,
WMWST1 TYPE STRING,
MWSKZ1 TYPE STRING,
WMWST2 TYPE STRING,
MWSKZ2 TYPE STRING,
EXTNR TYPE STRING,
XIOUT TYPE STRING,
XWOUT TYPE STRING,
XAUTOBETR TYPE STRING,
LAND1 TYPE STRING,
SERVICEENTRYSHEET TYPE STRING,
SERVICEENTRYSHEETITEM TYPE STRING,
TOR_ID TYPE STRING,
LBLNI TYPE STRING,
ERFPR TYPE STRING,
REPVZ TYPE STRING,
XABWRS TYPE STRING,
XRECHLS TYPE STRING,
XRECHLH TYPE STRING,
XRECHRS TYPE STRING,
XRECHRH TYPE STRING,
XLIFNRMAN TYPE STRING,
LIFNR TYPE STRING,
BUYER_NAME TYPE STRING,
BUYER_DEPARTMENT TYPE STRING,
BUYER_TEL TYPE STRING,
BUYER_EXT TYPE STRING,
RECEIVER_NAME TYPE STRING,
RECEIVER_DEPARTMENT TYPE STRING,
RECEIVER_TEL TYPE STRING,
RECEIVER_EXT TYPE STRING,
USER_NAME TYPE STRING,
USER_DEPARTMENT TYPE STRING,
USER_TEL TYPE STRING,
USER_EXT TYPE STRING,
SEARCH_STRING TYPE STRING,
XUSVR TYPE STRING,
VORGANG TYPE STRING,
DINV_VORGANG TYPE STRING,
REFERENZBELEGTYP TYPE STRING,
TM_REFERENCE_DOCUMENT TYPE STRING,
TM_DATA_DYSPLAY TYPE STRING,
ITEM_LIST_VERSION TYPE STRING,
AGGR_LIST_VERSION TYPE STRING,
SKIP_TO TYPE STRING,
POSL_SHKZG TYPE STRING,
POSR_SHKZG TYPE STRING,
ERNAM TYPE STRING,
AFNAM TYPE STRING,
WENAM TYPE STRING,
LINE0 TYPE STRING,
LINE1 TYPE STRING,
LINE2 TYPE STRING,
LINE3 TYPE STRING,
ANZPS_TOTAL TYPE STRING,
LIFNR_TEXT TYPE STRING,
RBLGP TYPE STRING,
TXZ01 TYPE STRING,
LSTML TYPE STRING,
SUPERFIELD TYPE STRING,
XWARE_BNK TYPE STRING,
ITEM_SK_LIST_VERSION TYPE STRING,
KOND_EIGENE TYPE STRING,
KOND_LIEFER TYPE STRING,
KOND_EIG TYPE STRING,
KOND_LIEF TYPE STRING,
HEADER_COLLAPSE TYPE STRING,
PAOB TYPE STRING,
REBEL TYPE STRING,
EXTI1 TYPE STRING,
VBELN TYPE STRING,
XMSEL_DELI TYPE STRING,
USNAM TYPE STRING,
INV_ENTER_NAME TYPE STRING,
INV_ENTER_DEPARTMENT TYPE STRING,
INV_ENTER_TEL TYPE STRING,
INV_ENTER_EXT TYPE STRING,
ADDTL_DATA TYPE STRING,
COPIER_ENTER_NAME TYPE STRING,
COPIER_ENTER_DEPARTMENT TYPE STRING,
COPIER_ENTER_TEL TYPE STRING,
COPIER_EXT_TEL TYPE STRING,
CONTRACT TYPE STRING,
CONTRACT_ITEM TYPE STRING,
CONTRACT_SERVICES TYPE STRING,
CONTRACTREFERENCETYPE TYPE STRING,
CON_ANZ_PS TYPE STRING,
CON_ANZ_PS_TOTAL TYPE STRING,
PRICE_DET TYPE STRING,
CON_SKIP_TO TYPE STRING,
CON_SEARCH_STRING TYPE STRING,
EBELN_DCFL TYPE STRING,
LOGSYS_DCFL TYPE STRING,
LIFNR_DCFL TYPE STRING,
FMFGUSKONT TYPE STRING,
LONGNUM TYPE STRING,
EXLIN TYPE STRING,
XMSEL_EXLIN TYPE STRING,END OF T_EKKO_STR. DATA: WA_RM08M_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_RM08M_STR-AMPEL sy-vline
WA_RM08M_STR-ANZPS sy-vline
WA_RM08M_STR-DIFFERENZ sy-vline
WA_RM08M_STR-EBELN sy-vline
WA_RM08M_STR-EBELP sy-vline
WA_RM08M_STR-FRBNR sy-vline
WA_RM08M_STR-FWSTE sy-vline
WA_RM08M_STR-KONT_SUMME sy-vline
WA_RM08M_STR-LFSNR sy-vline
WA_RM08M_STR-MULTI_CO sy-vline
WA_RM08M_STR-NETTOSUMME sy-vline
WA_RM08M_STR-WERKS sy-vline
WA_RM08M_STR-XGUTS sy-vline
WA_RM08M_STR-XMSEL sy-vline
WA_RM08M_STR-XMSEL_BEST sy-vline
WA_RM08M_STR-XMSEL_LIFS sy-vline
WA_RM08M_STR-XMSEL_WERK sy-vline
WA_RM08M_STR-XMSEL_FRBR sy-vline
WA_RM08M_STR-XMSEL_LBLN sy-vline
WA_RM08M_STR-XMSEL_SERV sy-vline
WA_RM08M_STR-ZOLLT sy-vline
WA_RM08M_STR-WMWST1 sy-vline
WA_RM08M_STR-MWSKZ1 sy-vline
WA_RM08M_STR-WMWST2 sy-vline
WA_RM08M_STR-MWSKZ2 sy-vline
WA_RM08M_STR-EXTNR sy-vline
WA_RM08M_STR-XIOUT sy-vline
WA_RM08M_STR-XWOUT sy-vline
WA_RM08M_STR-XAUTOBETR sy-vline
WA_RM08M_STR-LAND1 sy-vline
WA_RM08M_STR-SERVICEENTRYSHEET sy-vline
WA_RM08M_STR-SERVICEENTRYSHEETITEM sy-vline
WA_RM08M_STR-TOR_ID sy-vline
WA_RM08M_STR-LBLNI sy-vline
WA_RM08M_STR-ERFPR sy-vline
WA_RM08M_STR-REPVZ sy-vline
WA_RM08M_STR-XABWRS sy-vline
WA_RM08M_STR-XRECHLS sy-vline
WA_RM08M_STR-XRECHLH sy-vline
WA_RM08M_STR-XRECHRS sy-vline
WA_RM08M_STR-XRECHRH sy-vline
WA_RM08M_STR-XLIFNRMAN sy-vline
WA_RM08M_STR-LIFNR sy-vline
WA_RM08M_STR-BUYER_NAME sy-vline
WA_RM08M_STR-BUYER_DEPARTMENT sy-vline
WA_RM08M_STR-BUYER_TEL sy-vline
WA_RM08M_STR-BUYER_EXT sy-vline
WA_RM08M_STR-RECEIVER_NAME sy-vline
WA_RM08M_STR-RECEIVER_DEPARTMENT sy-vline
WA_RM08M_STR-RECEIVER_TEL sy-vline
WA_RM08M_STR-RECEIVER_EXT sy-vline
WA_RM08M_STR-USER_NAME sy-vline
WA_RM08M_STR-USER_DEPARTMENT sy-vline
WA_RM08M_STR-USER_TEL sy-vline
WA_RM08M_STR-USER_EXT sy-vline
WA_RM08M_STR-SEARCH_STRING sy-vline
WA_RM08M_STR-XUSVR sy-vline
WA_RM08M_STR-VORGANG sy-vline
WA_RM08M_STR-DINV_VORGANG sy-vline
WA_RM08M_STR-REFERENZBELEGTYP sy-vline
WA_RM08M_STR-TM_REFERENCE_DOCUMENT sy-vline
WA_RM08M_STR-TM_DATA_DYSPLAY sy-vline
WA_RM08M_STR-ITEM_LIST_VERSION sy-vline
WA_RM08M_STR-AGGR_LIST_VERSION sy-vline
WA_RM08M_STR-SKIP_TO sy-vline
WA_RM08M_STR-POSL_SHKZG sy-vline
WA_RM08M_STR-POSR_SHKZG sy-vline
WA_RM08M_STR-ERNAM sy-vline
WA_RM08M_STR-AFNAM sy-vline
WA_RM08M_STR-WENAM sy-vline
WA_RM08M_STR-LINE0 sy-vline
WA_RM08M_STR-LINE1 sy-vline
WA_RM08M_STR-LINE2 sy-vline
WA_RM08M_STR-LINE3 sy-vline
WA_RM08M_STR-ANZPS_TOTAL sy-vline
WA_RM08M_STR-LIFNR_TEXT sy-vline
WA_RM08M_STR-RBLGP sy-vline
WA_RM08M_STR-TXZ01 sy-vline
WA_RM08M_STR-LSTML sy-vline
WA_RM08M_STR-SUPERFIELD sy-vline
WA_RM08M_STR-XWARE_BNK sy-vline
WA_RM08M_STR-ITEM_SK_LIST_VERSION sy-vline
WA_RM08M_STR-KOND_EIGENE sy-vline
WA_RM08M_STR-KOND_LIEFER sy-vline
WA_RM08M_STR-KOND_EIG sy-vline
WA_RM08M_STR-KOND_LIEF sy-vline
WA_RM08M_STR-HEADER_COLLAPSE sy-vline
WA_RM08M_STR-PAOB sy-vline
WA_RM08M_STR-REBEL sy-vline
WA_RM08M_STR-EXTI1 sy-vline
WA_RM08M_STR-VBELN sy-vline
WA_RM08M_STR-XMSEL_DELI sy-vline
WA_RM08M_STR-USNAM sy-vline
WA_RM08M_STR-INV_ENTER_NAME sy-vline
WA_RM08M_STR-INV_ENTER_DEPARTMENT sy-vline
WA_RM08M_STR-INV_ENTER_TEL sy-vline
WA_RM08M_STR-INV_ENTER_EXT sy-vline
WA_RM08M_STR-ADDTL_DATA sy-vline
WA_RM08M_STR-COPIER_ENTER_NAME sy-vline
WA_RM08M_STR-COPIER_ENTER_DEPARTMENT sy-vline
WA_RM08M_STR-COPIER_ENTER_TEL sy-vline
WA_RM08M_STR-COPIER_EXT_TEL sy-vline
WA_RM08M_STR-CONTRACT sy-vline
WA_RM08M_STR-CONTRACT_ITEM sy-vline
WA_RM08M_STR-CONTRACT_SERVICES sy-vline
WA_RM08M_STR-CONTRACTREFERENCETYPE sy-vline
WA_RM08M_STR-CON_ANZ_PS sy-vline
WA_RM08M_STR-CON_ANZ_PS_TOTAL sy-vline
WA_RM08M_STR-PRICE_DET sy-vline
WA_RM08M_STR-CON_SKIP_TO sy-vline
WA_RM08M_STR-CON_SEARCH_STRING sy-vline
WA_RM08M_STR-EBELN_DCFL sy-vline
WA_RM08M_STR-LOGSYS_DCFL sy-vline
WA_RM08M_STR-LIFNR_DCFL sy-vline
WA_RM08M_STR-FMFGUSKONT sy-vline
WA_RM08M_STR-LONGNUM sy-vline
WA_RM08M_STR-EXLIN sy-vline
WA_RM08M_STR-XMSEL_EXLIN sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.