ABAP Select data from SAP table RIHEA 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 RIHEA 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 RIHEA. 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 RIHEA 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_RIHEA TYPE STANDARD TABLE OF RIHEA,
      WA_RIHEA TYPE RIHEA,
      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: <RIHEA> TYPE RIHEA.

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

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

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM RIHEA
*  INTO TABLE @DATA(IT_RIHEA2).
*--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_RIHEA INDEX 1 INTO DATA(WA_RIHEA2).


*Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL
LOOP AT IT_RIHEA ASSIGNING <RIHEA>.
*To update a field value using a field symbol simply change the value via the field symbol pointer
<RIHEA>-LEVUP = 1.
<RIHEA>-LEVDO = 1.
<RIHEA>-FLHIE = 1.
<RIHEA>-EQHIE = 1.
<RIHEA>-BOMEX = 1.
ENDLOOP.

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

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_RIHEA-GRAFC, sy-vline,
WA_RIHEA-EQUBI, sy-vline,
WA_RIHEA-PMOBJ, sy-vline,
WA_RIHEA-HIELE, sy-vline,
WA_RIHEA-EQUSE, sy-vline,
WA_RIHEA-TPLSE, sy-vline.
ENDLOOP. *Add any further fields from structure WA_RIHEA 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_RIHEA 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_RIHEA INTO WA_RIHEA. *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_RIHEA_STR,
LEVUP TYPE STRING,
LEVDO TYPE STRING,
FLHIE TYPE STRING,
EQHIE TYPE STRING,
BOMEX TYPE STRING,
GRAFC TYPE STRING,
EQUBI TYPE STRING,
PMOBJ TYPE STRING,
HIELE TYPE STRING,
EQUSE TYPE STRING,
TPLSE TYPE STRING,
STPSE TYPE STRING,
HIERE TYPE STRING,
SELMO TYPE STRING,
SLKNZ TYPE STRING,
IHREL TYPE STRING,
IHBGR TYPE STRING,
CLSEL TYPE STRING,
I_STATSEL TYPE STRING,
I_VSTATIN TYPE STRING,
I_QSTATIN TYPE STRING,
I_ASTATIN TYPE STRING,
I_VSTATEX TYPE STRING,
I_QSTATEX TYPE STRING,
I_ASTATEX TYPE STRING,
I_ESTATIN TYPE STRING,
I_ESTATEX TYPE STRING,
I_PSTATIN TYPE STRING,
I_PSTATEX TYPE STRING,
MITTP TYPE STRING,
MITEQ TYPE STRING,
MITBG TYPE STRING,
MITAP TYPE STRING,
MITAUF TYPE STRING,
MITQM TYPE STRING,
MITLB TYPE STRING,
MITSIM TYPE STRING,
MITUVO TYPE STRING,
MITWA TYPE STRING,
MITWO TYPE STRING,
MITAB TYPE STRING,
TERMAB TYPE STRING,
TERMBI TYPE STRING,
DY_OFN TYPE STRING,
DY_RST TYPE STRING,
DY_IAR TYPE STRING,
DY_MAB TYPE STRING,
DY_HIS TYPE STRING,
DY_AKTU TYPE STRING,
SUCC_DIS TYPE STRING,
OBJEKT TYPE STRING,
STRUKTUR TYPE STRING,
PREDECESS TYPE STRING,
CUST TYPE STRING,
KEYCOL TYPE STRING,
CUST_LIST TYPE STRING,
AP_LIST TYPE STRING,
DY_PMO TYPE STRING,
DY_COL TYPE STRING,
DY_OBL TYPE STRING,
TIMER TYPE STRING,
INOPR TYPE STRING,
PM_REFFIELD TYPE STRING,
PM_SELFIELD TYPE STRING,
PM_TERMINSTAT TYPE STRING,
PN_IHAN TYPE STRING,
PN_EQUI TYPE STRING,
PN_IFLO TYPE STRING,
WITH_OBJ TYPE STRING,
WITH_LT TYPE STRING,
SERV_PACKAGE TYPE STRING,
IBASEEX TYPE STRING,
I_STATUS TYPE STRING,
AUTHC TYPE STRING,
IHGSE TYPE STRING,
GRBOM TYPE STRING,
SUBCL TYPE STRING,
IHBTY TYPE STRING,
LVORM TYPE STRING,END OF T_EKKO_STR. DATA: WA_RIHEA_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_RIHEA_STR-LEVUP sy-vline
WA_RIHEA_STR-LEVDO sy-vline
WA_RIHEA_STR-FLHIE sy-vline
WA_RIHEA_STR-EQHIE sy-vline
WA_RIHEA_STR-BOMEX sy-vline
WA_RIHEA_STR-GRAFC sy-vline
WA_RIHEA_STR-EQUBI sy-vline
WA_RIHEA_STR-PMOBJ sy-vline
WA_RIHEA_STR-HIELE sy-vline
WA_RIHEA_STR-EQUSE sy-vline
WA_RIHEA_STR-TPLSE sy-vline
WA_RIHEA_STR-STPSE sy-vline
WA_RIHEA_STR-HIERE sy-vline
WA_RIHEA_STR-SELMO sy-vline
WA_RIHEA_STR-SLKNZ sy-vline
WA_RIHEA_STR-IHREL sy-vline
WA_RIHEA_STR-IHBGR sy-vline
WA_RIHEA_STR-CLSEL sy-vline
WA_RIHEA_STR-I_STATSEL sy-vline
WA_RIHEA_STR-I_VSTATIN sy-vline
WA_RIHEA_STR-I_QSTATIN sy-vline
WA_RIHEA_STR-I_ASTATIN sy-vline
WA_RIHEA_STR-I_VSTATEX sy-vline
WA_RIHEA_STR-I_QSTATEX sy-vline
WA_RIHEA_STR-I_ASTATEX sy-vline
WA_RIHEA_STR-I_ESTATIN sy-vline
WA_RIHEA_STR-I_ESTATEX sy-vline
WA_RIHEA_STR-I_PSTATIN sy-vline
WA_RIHEA_STR-I_PSTATEX sy-vline
WA_RIHEA_STR-MITTP sy-vline
WA_RIHEA_STR-MITEQ sy-vline
WA_RIHEA_STR-MITBG sy-vline
WA_RIHEA_STR-MITAP sy-vline
WA_RIHEA_STR-MITAUF sy-vline
WA_RIHEA_STR-MITQM sy-vline
WA_RIHEA_STR-MITLB sy-vline
WA_RIHEA_STR-MITSIM sy-vline
WA_RIHEA_STR-MITUVO sy-vline
WA_RIHEA_STR-MITWA sy-vline
WA_RIHEA_STR-MITWO sy-vline
WA_RIHEA_STR-MITAB sy-vline
WA_RIHEA_STR-TERMAB sy-vline
WA_RIHEA_STR-TERMBI sy-vline
WA_RIHEA_STR-DY_OFN sy-vline
WA_RIHEA_STR-DY_RST sy-vline
WA_RIHEA_STR-DY_IAR sy-vline
WA_RIHEA_STR-DY_MAB sy-vline
WA_RIHEA_STR-DY_HIS sy-vline
WA_RIHEA_STR-DY_AKTU sy-vline
WA_RIHEA_STR-SUCC_DIS sy-vline
WA_RIHEA_STR-OBJEKT sy-vline
WA_RIHEA_STR-STRUKTUR sy-vline
WA_RIHEA_STR-PREDECESS sy-vline
WA_RIHEA_STR-CUST sy-vline
WA_RIHEA_STR-KEYCOL sy-vline
WA_RIHEA_STR-CUST_LIST sy-vline
WA_RIHEA_STR-AP_LIST sy-vline
WA_RIHEA_STR-DY_PMO sy-vline
WA_RIHEA_STR-DY_COL sy-vline
WA_RIHEA_STR-DY_OBL sy-vline
WA_RIHEA_STR-TIMER sy-vline
WA_RIHEA_STR-INOPR sy-vline
WA_RIHEA_STR-PM_REFFIELD sy-vline
WA_RIHEA_STR-PM_SELFIELD sy-vline
WA_RIHEA_STR-PM_TERMINSTAT sy-vline
WA_RIHEA_STR-PN_IHAN sy-vline
WA_RIHEA_STR-PN_EQUI sy-vline
WA_RIHEA_STR-PN_IFLO sy-vline
WA_RIHEA_STR-WITH_OBJ sy-vline
WA_RIHEA_STR-WITH_LT sy-vline
WA_RIHEA_STR-SERV_PACKAGE sy-vline
WA_RIHEA_STR-IBASEEX sy-vline
WA_RIHEA_STR-I_STATUS sy-vline
WA_RIHEA_STR-AUTHC sy-vline
WA_RIHEA_STR-IHGSE sy-vline
WA_RIHEA_STR-GRBOM sy-vline
WA_RIHEA_STR-SUBCL sy-vline
WA_RIHEA_STR-IHBTY sy-vline
WA_RIHEA_STR-LVORM sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.