ABAP Select data from SAP table PMRHBC 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 PMRHBC 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 PMRHBC. 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 PMRHBC 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_PMRHBC TYPE STANDARD TABLE OF PMRHBC,
      WA_PMRHBC TYPE PMRHBC,
      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: <PMRHBC> TYPE PMRHBC.

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

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

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM PMRHBC
*  INTO TABLE @DATA(IT_PMRHBC2).
*--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_PMRHBC INDEX 1 INTO DATA(WA_PMRHBC2).


*Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL
LOOP AT IT_PMRHBC ASSIGNING <PMRHBC>.
*To update a field value using a field symbol simply change the value via the field symbol pointer
<PMRHBC>-BEGDA = 1.
<PMRHBC>-ENDDA = 1.
<PMRHBC>-OTYPE = 1.
<PMRHBC>-OBJID = 1.
<PMRHBC>-SHORT = 1.
ENDLOOP.

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

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_PMRHBC-STEXT, sy-vline,
WA_PMRHBC-AMNT, sy-vline,
WA_PMRHBC-TOTAL, sy-vline,
WA_PMRHBC-CURCY, sy-vline,
WA_PMRHBC-COMIT, sy-vline,
WA_PMRHBC-CURCY1, sy-vline.
ENDLOOP. *Add any further fields from structure WA_PMRHBC 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_PMRHBC 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_PMRHBC INTO WA_PMRHBC. *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_PMRHBC_STR,
BEGDA TYPE STRING,
ENDDA TYPE STRING,
OTYPE TYPE STRING,
OBJID TYPE STRING,
SHORT TYPE STRING,
STEXT TYPE STRING,
AMNT TYPE STRING,
TOTAL TYPE STRING,
CURCY TYPE STRING,
COMIT TYPE STRING,
CURCY1 TYPE STRING,
CHANG TYPE STRING,
CURCY2 TYPE STRING,
RESTR TYPE STRING,
CURCY3 TYPE STRING,
RESER TYPE STRING,
CURCY4 TYPE STRING,
PROVE TYPE STRING,
CURCY5 TYPE STRING,
REQUI TYPE STRING,
CURCY6 TYPE STRING,
AVAIL1 TYPE STRING,
CURCY7 TYPE STRING,
AVAIL2 TYPE STRING,
CURCY8 TYPE STRING,
CONSUME TYPE STRING,
CURCY9 TYPE STRING,
PRECOM TYPE STRING,
CURCY10 TYPE STRING,
CMMT TYPE STRING,
CURCY11 TYPE STRING,
COMIT_M TYPE STRING,
UNIT1 TYPE STRING,
CHANG_M TYPE STRING,
UNIT2 TYPE STRING,
RESTR_M TYPE STRING,
UNIT3 TYPE STRING,
RESER_M TYPE STRING,
UNIT4 TYPE STRING,
PROVE_M TYPE STRING,
UNIT5 TYPE STRING,
REQUI_M TYPE STRING,
UNIT6 TYPE STRING,
AVAIL1_M TYPE STRING,
UNIT7 TYPE STRING,
AVAIL2_M TYPE STRING,
UNIT8 TYPE STRING,
CONV_M TYPE STRING,
UNIT9 TYPE STRING,
BEGDA1 TYPE STRING,
ENDDA1 TYPE STRING,
TSUM1 TYPE STRING,
TCURCY1 TYPE STRING,
BEGDA2 TYPE STRING,
ENDDA2 TYPE STRING,
TSUM2 TYPE STRING,
TCURCY2 TYPE STRING,END OF T_EKKO_STR. DATA: WA_PMRHBC_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_PMRHBC_STR-BEGDA sy-vline
WA_PMRHBC_STR-ENDDA sy-vline
WA_PMRHBC_STR-OTYPE sy-vline
WA_PMRHBC_STR-OBJID sy-vline
WA_PMRHBC_STR-SHORT sy-vline
WA_PMRHBC_STR-STEXT sy-vline
WA_PMRHBC_STR-AMNT sy-vline
WA_PMRHBC_STR-TOTAL sy-vline
WA_PMRHBC_STR-CURCY sy-vline
WA_PMRHBC_STR-COMIT sy-vline
WA_PMRHBC_STR-CURCY1 sy-vline
WA_PMRHBC_STR-CHANG sy-vline
WA_PMRHBC_STR-CURCY2 sy-vline
WA_PMRHBC_STR-RESTR sy-vline
WA_PMRHBC_STR-CURCY3 sy-vline
WA_PMRHBC_STR-RESER sy-vline
WA_PMRHBC_STR-CURCY4 sy-vline
WA_PMRHBC_STR-PROVE sy-vline
WA_PMRHBC_STR-CURCY5 sy-vline
WA_PMRHBC_STR-REQUI sy-vline
WA_PMRHBC_STR-CURCY6 sy-vline
WA_PMRHBC_STR-AVAIL1 sy-vline
WA_PMRHBC_STR-CURCY7 sy-vline
WA_PMRHBC_STR-AVAIL2 sy-vline
WA_PMRHBC_STR-CURCY8 sy-vline
WA_PMRHBC_STR-CONSUME sy-vline
WA_PMRHBC_STR-CURCY9 sy-vline
WA_PMRHBC_STR-PRECOM sy-vline
WA_PMRHBC_STR-CURCY10 sy-vline
WA_PMRHBC_STR-CMMT sy-vline
WA_PMRHBC_STR-CURCY11 sy-vline
WA_PMRHBC_STR-COMIT_M sy-vline
WA_PMRHBC_STR-UNIT1 sy-vline
WA_PMRHBC_STR-CHANG_M sy-vline
WA_PMRHBC_STR-UNIT2 sy-vline
WA_PMRHBC_STR-RESTR_M sy-vline
WA_PMRHBC_STR-UNIT3 sy-vline
WA_PMRHBC_STR-RESER_M sy-vline
WA_PMRHBC_STR-UNIT4 sy-vline
WA_PMRHBC_STR-PROVE_M sy-vline
WA_PMRHBC_STR-UNIT5 sy-vline
WA_PMRHBC_STR-REQUI_M sy-vline
WA_PMRHBC_STR-UNIT6 sy-vline
WA_PMRHBC_STR-AVAIL1_M sy-vline
WA_PMRHBC_STR-UNIT7 sy-vline
WA_PMRHBC_STR-AVAIL2_M sy-vline
WA_PMRHBC_STR-UNIT8 sy-vline
WA_PMRHBC_STR-CONV_M sy-vline
WA_PMRHBC_STR-UNIT9 sy-vline
WA_PMRHBC_STR-BEGDA1 sy-vline
WA_PMRHBC_STR-ENDDA1 sy-vline
WA_PMRHBC_STR-TSUM1 sy-vline
WA_PMRHBC_STR-TCURCY1 sy-vline
WA_PMRHBC_STR-BEGDA2 sy-vline
WA_PMRHBC_STR-ENDDA2 sy-vline
WA_PMRHBC_STR-TSUM2 sy-vline
WA_PMRHBC_STR-TCURCY2 sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.