ABAP Select data from SAP table PSKRL 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 PSKRL 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 PSKRL. 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 PSKRL 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_PSKRL TYPE STANDARD TABLE OF PSKRL,
      WA_PSKRL TYPE PSKRL,
      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: <PSKRL> TYPE PSKRL.

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

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

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM PSKRL
*  INTO TABLE @DATA(IT_PSKRL2).
*--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_PSKRL INDEX 1 INTO DATA(WA_PSKRL2).


*Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL
LOOP AT IT_PSKRL ASSIGNING <PSKRL>.
*To update a field value using a field symbol simply change the value via the field symbol pointer
<PSKRL>-ZC = 1.
<PSKRL>-PERNR = 1.
<PSKRL>-IDENT = 1.
<PSKRL>-DATUM = 1.
<PSKRL>-CAS = 1.
ENDLOOP.

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

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_PSKRL-TYPRL, sy-vline,
WA_PSKRL-ZC, sy-vline,
WA_PSKRL-TYPFO, sy-vline,
WA_PSKRL-FOSTAT, sy-vline,
WA_PSKRL-ZAKLU, sy-vline,
WA_PSKRL-ICP, sy-vline.
ENDLOOP. *Add any further fields from structure WA_PSKRL 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_PSKRL 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_PSKRL INTO WA_PSKRL. *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 PDATE, internal->external for field DATNA CALL FUNCTION 'CONVERSION_EXIT_PDATE_OUTPUT' EXPORTING input = WA_PSKRL-DATNA IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_PSKRL-DATNA.
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_PSKRL_STR,
ZC TYPE STRING,
PERNR TYPE STRING,
IDENT TYPE STRING,
DATUM TYPE STRING,
CAS TYPE STRING,
TYPRL TYPE STRING,
ZC TYPE STRING,
TYPFO TYPE STRING,
FOSTAT TYPE STRING,
ZAKLU TYPE STRING,
ICP TYPE STRING,
RC_CPP TYPE STRING,
PRIEZ TYPE STRING,
MENO TYPE STRING,
TITUL TYPE STRING,
TITZA TYPE STRING,
POHLA TYPE STRING,
PREDPRIEZ TYPE STRING,
POHLA_CHANGE TYPE STRING,
DOPLU TYPE STRING,
RODPR TYPE STRING,
DATNA TYPE STRING,
MIENA TYPE STRING,
STATP TYPE STRING,
STATNARODENIA TYPE STRING,
CUDZINEC TYPE STRING,
RODST TYPE STRING,
TYPDO TYPE STRING,
DATDO TYPE STRING,
DATUK TYPE STRING,
DATSP TYPE STRING,
RODCI TYPE STRING,
ICPV TYPE STRING,
DOHOD TYPE STRING,
CPP TYPE STRING,
SSNST TYPE STRING,
TYPZEC TYPE STRING,
TYDOC TYPE STRING,
ZADOC TYPE STRING,
DOVDP TYPE STRING,
POMER TYPE STRING,
SUCAS TYPE STRING,
PA7O2 TYPE STRING,
ADRES TYPE STRING,
ULICA TYPE STRING,
SUPCI TYPE STRING,
ORICI TYPE STRING,
PSC TYPE STRING,
OBEC TYPE STRING,
ZIP TYPE STRING,
STAT TYPE STRING,
ADRES2 TYPE STRING,
ULICA TYPE STRING,
SUPCI TYPE STRING,
ORICI TYPE STRING,
PSC TYPE STRING,
OBEC TYPE STRING,
ZIP TYPE STRING,
STAT TYPE STRING,
BANKS TYPE STRING,
BANKA TYPE STRING,
BANKL TYPE STRING,
BANKS TYPE STRING,
BANKN TYPE STRING,
IBAN TYPE STRING,
KONTA TYPE STRING,
TELEFON TYPE STRING,
FAX TYPE STRING,
EMAIL TYPE STRING,
KONTA2 TYPE STRING,
TELEFON TYPE STRING,
FAX TYPE STRING,
EMAIL TYPE STRING,
PRERU TYPE STRING,
DATVZ TYPE STRING,
DOVOD TYPE STRING,
DATZA TYPE STRING,
KRATK TYPE STRING,
ZACMD TYPE STRING,
KONMD TYPE STRING,
MDZAK TYPE STRING,
HIRE TYPE STRING,
FIRE TYPE STRING,
VYMZA TYPE STRING,
MD_RD TYPE STRING,
DATPO TYPE STRING,
EVENT TYPE STRING,
HIRE TYPE STRING,
FIRE TYPE STRING,
0002 TYPE STRING,
0006 TYPE STRING,
0009 TYPE STRING,
2001 TYPE STRING,
ZRUP TYPE STRING,
HAND TYPE STRING,
BUKRS TYPE STRING,
WERKS TYPE STRING,
PERSG TYPE STRING,
BTRTL TYPE STRING,
RESE1 TYPE STRING,
RESE2 TYPE STRING,
ZL TYPE STRING,
ICZ TYPE STRING,
ICO TYPE STRING,
DIC TYPE STRING,
ICO_OR_DIC TYPE STRING,
NAZOV TYPE STRING,
NAZOV2 TYPE STRING,
RCFO TYPE STRING,
CPP TYPE STRING,
RC_OR_CPP TYPE STRING,
TYPZL TYPE STRING,
KONTA TYPE STRING,
TELEFON TYPE STRING,
FAX TYPE STRING,
EMAIL TYPE STRING,
ADRES TYPE STRING,
ULICA TYPE STRING,
SUPCI TYPE STRING,
ORICI TYPE STRING,
PSC TYPE STRING,
OBEC TYPE STRING,
ZIP TYPE STRING,
STAT TYPE STRING,
ZOSTA TYPE STRING,END OF T_EKKO_STR. DATA: WA_PSKRL_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_PSKRL_STR-ZC sy-vline
WA_PSKRL_STR-PERNR sy-vline
WA_PSKRL_STR-IDENT sy-vline
WA_PSKRL_STR-DATUM sy-vline
WA_PSKRL_STR-CAS sy-vline
WA_PSKRL_STR-TYPRL sy-vline
WA_PSKRL_STR-ZC sy-vline
WA_PSKRL_STR-TYPFO sy-vline
WA_PSKRL_STR-FOSTAT sy-vline
WA_PSKRL_STR-ZAKLU sy-vline
WA_PSKRL_STR-ICP sy-vline
WA_PSKRL_STR-RC_CPP sy-vline
WA_PSKRL_STR-PRIEZ sy-vline
WA_PSKRL_STR-MENO sy-vline
WA_PSKRL_STR-TITUL sy-vline
WA_PSKRL_STR-TITZA sy-vline
WA_PSKRL_STR-POHLA sy-vline
WA_PSKRL_STR-PREDPRIEZ sy-vline
WA_PSKRL_STR-POHLA_CHANGE sy-vline
WA_PSKRL_STR-DOPLU sy-vline
WA_PSKRL_STR-RODPR sy-vline
WA_PSKRL_STR-DATNA sy-vline
WA_PSKRL_STR-MIENA sy-vline
WA_PSKRL_STR-STATP sy-vline
WA_PSKRL_STR-STATNARODENIA sy-vline
WA_PSKRL_STR-CUDZINEC sy-vline
WA_PSKRL_STR-RODST sy-vline
WA_PSKRL_STR-TYPDO sy-vline
WA_PSKRL_STR-DATDO sy-vline
WA_PSKRL_STR-DATUK sy-vline
WA_PSKRL_STR-DATSP sy-vline
WA_PSKRL_STR-RODCI sy-vline
WA_PSKRL_STR-ICPV sy-vline
WA_PSKRL_STR-DOHOD sy-vline
WA_PSKRL_STR-CPP sy-vline
WA_PSKRL_STR-SSNST sy-vline
WA_PSKRL_STR-TYPZEC sy-vline
WA_PSKRL_STR-TYDOC sy-vline
WA_PSKRL_STR-ZADOC sy-vline
WA_PSKRL_STR-DOVDP sy-vline
WA_PSKRL_STR-POMER sy-vline
WA_PSKRL_STR-SUCAS sy-vline
WA_PSKRL_STR-PA7O2 sy-vline
WA_PSKRL_STR-ADRES sy-vline
WA_PSKRL_STR-ULICA sy-vline
WA_PSKRL_STR-SUPCI sy-vline
WA_PSKRL_STR-ORICI sy-vline
WA_PSKRL_STR-PSC sy-vline
WA_PSKRL_STR-OBEC sy-vline
WA_PSKRL_STR-ZIP sy-vline
WA_PSKRL_STR-STAT sy-vline
WA_PSKRL_STR-ADRES2 sy-vline
WA_PSKRL_STR-ULICA sy-vline
WA_PSKRL_STR-SUPCI sy-vline
WA_PSKRL_STR-ORICI sy-vline
WA_PSKRL_STR-PSC sy-vline
WA_PSKRL_STR-OBEC sy-vline
WA_PSKRL_STR-ZIP sy-vline
WA_PSKRL_STR-STAT sy-vline
WA_PSKRL_STR-BANKS sy-vline
WA_PSKRL_STR-BANKA sy-vline
WA_PSKRL_STR-BANKL sy-vline
WA_PSKRL_STR-BANKS sy-vline
WA_PSKRL_STR-BANKN sy-vline
WA_PSKRL_STR-IBAN sy-vline
WA_PSKRL_STR-KONTA sy-vline
WA_PSKRL_STR-TELEFON sy-vline
WA_PSKRL_STR-FAX sy-vline
WA_PSKRL_STR-EMAIL sy-vline
WA_PSKRL_STR-KONTA2 sy-vline
WA_PSKRL_STR-TELEFON sy-vline
WA_PSKRL_STR-FAX sy-vline
WA_PSKRL_STR-EMAIL sy-vline
WA_PSKRL_STR-PRERU sy-vline
WA_PSKRL_STR-DATVZ sy-vline
WA_PSKRL_STR-DOVOD sy-vline
WA_PSKRL_STR-DATZA sy-vline
WA_PSKRL_STR-KRATK sy-vline
WA_PSKRL_STR-ZACMD sy-vline
WA_PSKRL_STR-KONMD sy-vline
WA_PSKRL_STR-MDZAK sy-vline
WA_PSKRL_STR-HIRE sy-vline
WA_PSKRL_STR-FIRE sy-vline
WA_PSKRL_STR-VYMZA sy-vline
WA_PSKRL_STR-MD_RD sy-vline
WA_PSKRL_STR-DATPO sy-vline
WA_PSKRL_STR-EVENT sy-vline
WA_PSKRL_STR-HIRE sy-vline
WA_PSKRL_STR-FIRE sy-vline
WA_PSKRL_STR-0002 sy-vline
WA_PSKRL_STR-0006 sy-vline
WA_PSKRL_STR-0009 sy-vline
WA_PSKRL_STR-2001 sy-vline
WA_PSKRL_STR-ZRUP sy-vline
WA_PSKRL_STR-HAND sy-vline
WA_PSKRL_STR-BUKRS sy-vline
WA_PSKRL_STR-WERKS sy-vline
WA_PSKRL_STR-PERSG sy-vline
WA_PSKRL_STR-BTRTL sy-vline
WA_PSKRL_STR-RESE1 sy-vline
WA_PSKRL_STR-RESE2 sy-vline
WA_PSKRL_STR-ZL sy-vline
WA_PSKRL_STR-ICZ sy-vline
WA_PSKRL_STR-ICO sy-vline
WA_PSKRL_STR-DIC sy-vline
WA_PSKRL_STR-ICO_OR_DIC sy-vline
WA_PSKRL_STR-NAZOV sy-vline
WA_PSKRL_STR-NAZOV2 sy-vline
WA_PSKRL_STR-RCFO sy-vline
WA_PSKRL_STR-CPP sy-vline
WA_PSKRL_STR-RC_OR_CPP sy-vline
WA_PSKRL_STR-TYPZL sy-vline
WA_PSKRL_STR-KONTA sy-vline
WA_PSKRL_STR-TELEFON sy-vline
WA_PSKRL_STR-FAX sy-vline
WA_PSKRL_STR-EMAIL sy-vline
WA_PSKRL_STR-ADRES sy-vline
WA_PSKRL_STR-ULICA sy-vline
WA_PSKRL_STR-SUPCI sy-vline
WA_PSKRL_STR-ORICI sy-vline
WA_PSKRL_STR-PSC sy-vline
WA_PSKRL_STR-OBEC sy-vline
WA_PSKRL_STR-ZIP sy-vline
WA_PSKRL_STR-STAT sy-vline
WA_PSKRL_STR-ZOSTA sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.