ABAP Select data from SAP table PKRPRVCM 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 PKRPRVCM 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 PKRPRVCM. 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 PKRPRVCM 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_PKRPRVCM TYPE STANDARD TABLE OF PKRPRVCM,
      WA_PKRPRVCM TYPE PKRPRVCM,
      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: <PKRPRVCM> TYPE PKRPRVCM.

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

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

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM PKRPRVCM
*  INTO TABLE @DATA(IT_PKRPRVCM2).
*--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_PKRPRVCM INDEX 1 INTO DATA(WA_PKRPRVCM2).


*Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL
LOOP AT IT_PKRPRVCM ASSIGNING <PKRPRVCM>.
*To update a field value using a field symbol simply change the value via the field symbol pointer
<PKRPRVCM>-COM01 = 1.
<PKRPRVCM>-BUS01 = 1.
<PKRPRVCM>-SAL01 = 1.
<PKRPRVCM>-BON01 = 1.
<PKRPRVCM>-INT01 = 1.
ENDLOOP.

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

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_PKRPRVCM-RET01, sy-vline,
WA_PKRPRVCM-OUT01, sy-vline,
WA_PKRPRVCM-OVR01, sy-vline,
WA_PKRPRVCM-OTH01, sy-vline,
WA_PKRPRVCM-MED01, sy-vline,
WA_PKRPRVCM-NPM01, sy-vline.
ENDLOOP. *Add any further fields from structure WA_PKRPRVCM 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_PKRPRVCM 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_PKRPRVCM INTO WA_PKRPRVCM. *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_PKRPRVCM_STR,
COM01 TYPE STRING,
BUS01 TYPE STRING,
SAL01 TYPE STRING,
BON01 TYPE STRING,
INT01 TYPE STRING,
RET01 TYPE STRING,
OUT01 TYPE STRING,
OVR01 TYPE STRING,
OTH01 TYPE STRING,
MED01 TYPE STRING,
NPM01 TYPE STRING,
EIM01 TYPE STRING,
FLD01 TYPE STRING,
FRI01 TYPE STRING,
FRE01 TYPE STRING,
COM02 TYPE STRING,
BUS02 TYPE STRING,
SAL02 TYPE STRING,
BON02 TYPE STRING,
INT02 TYPE STRING,
RET02 TYPE STRING,
OUT02 TYPE STRING,
OVR02 TYPE STRING,
OTH02 TYPE STRING,
MED02 TYPE STRING,
NPM02 TYPE STRING,
EIM02 TYPE STRING,
FLD02 TYPE STRING,
FRI02 TYPE STRING,
FRE02 TYPE STRING,
COM03 TYPE STRING,
BUS03 TYPE STRING,
SAL03 TYPE STRING,
BON03 TYPE STRING,
INT03 TYPE STRING,
RET03 TYPE STRING,
OUT03 TYPE STRING,
OVR03 TYPE STRING,
OTH03 TYPE STRING,
MED03 TYPE STRING,
NPM03 TYPE STRING,
EIM03 TYPE STRING,
FLD03 TYPE STRING,
FRI03 TYPE STRING,
FRE03 TYPE STRING,
COM04 TYPE STRING,
BUS04 TYPE STRING,
SAL04 TYPE STRING,
BON04 TYPE STRING,
INT04 TYPE STRING,
RET04 TYPE STRING,
OUT04 TYPE STRING,
OVR04 TYPE STRING,
OTH04 TYPE STRING,
MED04 TYPE STRING,
NPM04 TYPE STRING,
EIM04 TYPE STRING,
FLD04 TYPE STRING,
FRI04 TYPE STRING,
FRE04 TYPE STRING,
COM05 TYPE STRING,
BUS05 TYPE STRING,
SAL05 TYPE STRING,
BON05 TYPE STRING,
INT05 TYPE STRING,
RET05 TYPE STRING,
OUT05 TYPE STRING,
OVR05 TYPE STRING,
OTH05 TYPE STRING,
MED05 TYPE STRING,
NPM05 TYPE STRING,
EIM05 TYPE STRING,
FLD05 TYPE STRING,
FRI05 TYPE STRING,
FRE05 TYPE STRING,END OF T_EKKO_STR. DATA: WA_PKRPRVCM_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_PKRPRVCM_STR-COM01 sy-vline
WA_PKRPRVCM_STR-BUS01 sy-vline
WA_PKRPRVCM_STR-SAL01 sy-vline
WA_PKRPRVCM_STR-BON01 sy-vline
WA_PKRPRVCM_STR-INT01 sy-vline
WA_PKRPRVCM_STR-RET01 sy-vline
WA_PKRPRVCM_STR-OUT01 sy-vline
WA_PKRPRVCM_STR-OVR01 sy-vline
WA_PKRPRVCM_STR-OTH01 sy-vline
WA_PKRPRVCM_STR-MED01 sy-vline
WA_PKRPRVCM_STR-NPM01 sy-vline
WA_PKRPRVCM_STR-EIM01 sy-vline
WA_PKRPRVCM_STR-FLD01 sy-vline
WA_PKRPRVCM_STR-FRI01 sy-vline
WA_PKRPRVCM_STR-FRE01 sy-vline
WA_PKRPRVCM_STR-COM02 sy-vline
WA_PKRPRVCM_STR-BUS02 sy-vline
WA_PKRPRVCM_STR-SAL02 sy-vline
WA_PKRPRVCM_STR-BON02 sy-vline
WA_PKRPRVCM_STR-INT02 sy-vline
WA_PKRPRVCM_STR-RET02 sy-vline
WA_PKRPRVCM_STR-OUT02 sy-vline
WA_PKRPRVCM_STR-OVR02 sy-vline
WA_PKRPRVCM_STR-OTH02 sy-vline
WA_PKRPRVCM_STR-MED02 sy-vline
WA_PKRPRVCM_STR-NPM02 sy-vline
WA_PKRPRVCM_STR-EIM02 sy-vline
WA_PKRPRVCM_STR-FLD02 sy-vline
WA_PKRPRVCM_STR-FRI02 sy-vline
WA_PKRPRVCM_STR-FRE02 sy-vline
WA_PKRPRVCM_STR-COM03 sy-vline
WA_PKRPRVCM_STR-BUS03 sy-vline
WA_PKRPRVCM_STR-SAL03 sy-vline
WA_PKRPRVCM_STR-BON03 sy-vline
WA_PKRPRVCM_STR-INT03 sy-vline
WA_PKRPRVCM_STR-RET03 sy-vline
WA_PKRPRVCM_STR-OUT03 sy-vline
WA_PKRPRVCM_STR-OVR03 sy-vline
WA_PKRPRVCM_STR-OTH03 sy-vline
WA_PKRPRVCM_STR-MED03 sy-vline
WA_PKRPRVCM_STR-NPM03 sy-vline
WA_PKRPRVCM_STR-EIM03 sy-vline
WA_PKRPRVCM_STR-FLD03 sy-vline
WA_PKRPRVCM_STR-FRI03 sy-vline
WA_PKRPRVCM_STR-FRE03 sy-vline
WA_PKRPRVCM_STR-COM04 sy-vline
WA_PKRPRVCM_STR-BUS04 sy-vline
WA_PKRPRVCM_STR-SAL04 sy-vline
WA_PKRPRVCM_STR-BON04 sy-vline
WA_PKRPRVCM_STR-INT04 sy-vline
WA_PKRPRVCM_STR-RET04 sy-vline
WA_PKRPRVCM_STR-OUT04 sy-vline
WA_PKRPRVCM_STR-OVR04 sy-vline
WA_PKRPRVCM_STR-OTH04 sy-vline
WA_PKRPRVCM_STR-MED04 sy-vline
WA_PKRPRVCM_STR-NPM04 sy-vline
WA_PKRPRVCM_STR-EIM04 sy-vline
WA_PKRPRVCM_STR-FLD04 sy-vline
WA_PKRPRVCM_STR-FRI04 sy-vline
WA_PKRPRVCM_STR-FRE04 sy-vline
WA_PKRPRVCM_STR-COM05 sy-vline
WA_PKRPRVCM_STR-BUS05 sy-vline
WA_PKRPRVCM_STR-SAL05 sy-vline
WA_PKRPRVCM_STR-BON05 sy-vline
WA_PKRPRVCM_STR-INT05 sy-vline
WA_PKRPRVCM_STR-RET05 sy-vline
WA_PKRPRVCM_STR-OUT05 sy-vline
WA_PKRPRVCM_STR-OVR05 sy-vline
WA_PKRPRVCM_STR-OTH05 sy-vline
WA_PKRPRVCM_STR-MED05 sy-vline
WA_PKRPRVCM_STR-NPM05 sy-vline
WA_PKRPRVCM_STR-EIM05 sy-vline
WA_PKRPRVCM_STR-FLD05 sy-vline
WA_PKRPRVCM_STR-FRI05 sy-vline
WA_PKRPRVCM_STR-FRE05 sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.