ABAP Select data from SAP table P22_SIL_ALV 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 P22_SIL_ALV 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 P22_SIL_ALV. 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 P22_SIL_ALV 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_P22_SIL_ALV TYPE STANDARD TABLE OF P22_SIL_ALV,
      WA_P22_SIL_ALV TYPE P22_SIL_ALV,
      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: <P22_SIL_ALV> TYPE P22_SIL_ALV.

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

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

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM P22_SIL_ALV
*  INTO TABLE @DATA(IT_P22_SIL_ALV2).
*--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_P22_SIL_ALV INDEX 1 INTO DATA(WA_P22_SIL_ALV2).


*Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL
LOOP AT IT_P22_SIL_ALV ASSIGNING <P22_SIL_ALV>.
*To update a field value using a field symbol simply change the value via the field symbol pointer
<P22_SIL_ALV>-PERNR = 1.
<P22_SIL_ALV>-ENAME = 1.
<P22_SIL_ALV>-SUBJE = 1.
<P22_SIL_ALV>-WERKS = 1.
<P22_SIL_ALV>-NAME1 = 1.
ENDLOOP.

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

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_P22_SIL_ALV-BTRTL, sy-vline,
WA_P22_SIL_ALV-BTEXT, sy-vline,
WA_P22_SIL_ALV-PERSG, sy-vline,
WA_P22_SIL_ALV-PTEXT, sy-vline,
WA_P22_SIL_ALV-PERSK, sy-vline,
WA_P22_SIL_ALV-PERST, sy-vline.
ENDLOOP. *Add any further fields from structure WA_P22_SIL_ALV 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_P22_SIL_ALV 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_P22_SIL_ALV INTO WA_P22_SIL_ALV. *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 GBDAT CALL FUNCTION 'CONVERSION_EXIT_PDATE_OUTPUT' EXPORTING input = WA_P22_SIL_ALV-GBDAT IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_P22_SIL_ALV-GBDAT.
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_P22_SIL_ALV_STR,
PERNR TYPE STRING,
ENAME TYPE STRING,
SUBJE TYPE STRING,
WERKS TYPE STRING,
NAME1 TYPE STRING,
BTRTL TYPE STRING,
BTEXT TYPE STRING,
PERSG TYPE STRING,
PTEXT TYPE STRING,
PERSK TYPE STRING,
PERST TYPE STRING,
ORGEH TYPE STRING,
ORGTX TYPE STRING,
PLANS TYPE STRING,
PLSTX TYPE STRING,
ENTRY TYPE STRING,
ENTRYJ TYPE STRING,
LEADT TYPE STRING,
LEADTJ TYPE STRING,
ACQDT TYPE STRING,
ACQDTJ TYPE STRING,
LOSDT TYPE STRING,
LOSDTJ TYPE STRING,
OFFDT TYPE STRING,
OFFDTJ TYPE STRING,
KANJI TYPE STRING,
KANA TYPE STRING,
GESCH TYPE STRING,
SEXTX TYPE STRING,
GBDAT TYPE STRING,
GBDATJ TYPE STRING,
ADDRE TYPE STRING,
SIPNR TYPE STRING,
SIINR TYPE STRING,
KAJID1 TYPE STRING,
KANAD1 TYPE STRING,
BIRTH1 TYPE STRING,
BIRTHJ1 TYPE STRING,
FASEX1 TYPE STRING,
STEXT1 TYPE STRING,
RELAD1 TYPE STRING,
DCQDT1 TYPE STRING,
DCQDTJ1 TYPE STRING,
DLOSD1 TYPE STRING,
DLOSDJ1 TYPE STRING,
KAJID2 TYPE STRING,
KANAD2 TYPE STRING,
BIRTH2 TYPE STRING,
BIRTHJ2 TYPE STRING,
FASEX2 TYPE STRING,
STEXT2 TYPE STRING,
RELAD2 TYPE STRING,
DCQDT2 TYPE STRING,
DCQDTJ2 TYPE STRING,
DLOSD2 TYPE STRING,
DLOSDJ2 TYPE STRING,
KAJID3 TYPE STRING,
KANAD3 TYPE STRING,
BIRTH3 TYPE STRING,
BIRTHJ3 TYPE STRING,
FASEX3 TYPE STRING,
STEXT3 TYPE STRING,
RELAD3 TYPE STRING,
DCQDT3 TYPE STRING,
DCQDTJ3 TYPE STRING,
DLOSD3 TYPE STRING,
DLOSDJ3 TYPE STRING,
KAJID4 TYPE STRING,
KANAD4 TYPE STRING,
BIRTH4 TYPE STRING,
BIRTHJ4 TYPE STRING,
FASEX4 TYPE STRING,
STEXT4 TYPE STRING,
RELAD4 TYPE STRING,
DCQDT4 TYPE STRING,
DCQDTJ4 TYPE STRING,
DLOSD4 TYPE STRING,
DLOSDJ4 TYPE STRING,
KAJID5 TYPE STRING,
KANAD5 TYPE STRING,
BIRTH5 TYPE STRING,
BIRTHJ5 TYPE STRING,
FASEX5 TYPE STRING,
STEXT5 TYPE STRING,
RELAD5 TYPE STRING,
DCQDT5 TYPE STRING,
DCQDTJ5 TYPE STRING,
DLOSD5 TYPE STRING,
DLOSDJ5 TYPE STRING,
JGNPR TYPE STRING,
ADDOF TYPE STRING,
ADDI1 TYPE STRING,
ADDI2 TYPE STRING,
ADDI3 TYPE STRING,
JGSNM TYPE STRING,
TELNR TYPE STRING,
REPRE TYPE STRING,
SCICC TYPE STRING,
SCINR TYPE STRING,
CHARG TYPE STRING,
INSURER TYPE STRING,END OF T_EKKO_STR. DATA: WA_P22_SIL_ALV_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_P22_SIL_ALV_STR-PERNR sy-vline
WA_P22_SIL_ALV_STR-ENAME sy-vline
WA_P22_SIL_ALV_STR-SUBJE sy-vline
WA_P22_SIL_ALV_STR-WERKS sy-vline
WA_P22_SIL_ALV_STR-NAME1 sy-vline
WA_P22_SIL_ALV_STR-BTRTL sy-vline
WA_P22_SIL_ALV_STR-BTEXT sy-vline
WA_P22_SIL_ALV_STR-PERSG sy-vline
WA_P22_SIL_ALV_STR-PTEXT sy-vline
WA_P22_SIL_ALV_STR-PERSK sy-vline
WA_P22_SIL_ALV_STR-PERST sy-vline
WA_P22_SIL_ALV_STR-ORGEH sy-vline
WA_P22_SIL_ALV_STR-ORGTX sy-vline
WA_P22_SIL_ALV_STR-PLANS sy-vline
WA_P22_SIL_ALV_STR-PLSTX sy-vline
WA_P22_SIL_ALV_STR-ENTRY sy-vline
WA_P22_SIL_ALV_STR-ENTRYJ sy-vline
WA_P22_SIL_ALV_STR-LEADT sy-vline
WA_P22_SIL_ALV_STR-LEADTJ sy-vline
WA_P22_SIL_ALV_STR-ACQDT sy-vline
WA_P22_SIL_ALV_STR-ACQDTJ sy-vline
WA_P22_SIL_ALV_STR-LOSDT sy-vline
WA_P22_SIL_ALV_STR-LOSDTJ sy-vline
WA_P22_SIL_ALV_STR-OFFDT sy-vline
WA_P22_SIL_ALV_STR-OFFDTJ sy-vline
WA_P22_SIL_ALV_STR-KANJI sy-vline
WA_P22_SIL_ALV_STR-KANA sy-vline
WA_P22_SIL_ALV_STR-GESCH sy-vline
WA_P22_SIL_ALV_STR-SEXTX sy-vline
WA_P22_SIL_ALV_STR-GBDAT sy-vline
WA_P22_SIL_ALV_STR-GBDATJ sy-vline
WA_P22_SIL_ALV_STR-ADDRE sy-vline
WA_P22_SIL_ALV_STR-SIPNR sy-vline
WA_P22_SIL_ALV_STR-SIINR sy-vline
WA_P22_SIL_ALV_STR-KAJID1 sy-vline
WA_P22_SIL_ALV_STR-KANAD1 sy-vline
WA_P22_SIL_ALV_STR-BIRTH1 sy-vline
WA_P22_SIL_ALV_STR-BIRTHJ1 sy-vline
WA_P22_SIL_ALV_STR-FASEX1 sy-vline
WA_P22_SIL_ALV_STR-STEXT1 sy-vline
WA_P22_SIL_ALV_STR-RELAD1 sy-vline
WA_P22_SIL_ALV_STR-DCQDT1 sy-vline
WA_P22_SIL_ALV_STR-DCQDTJ1 sy-vline
WA_P22_SIL_ALV_STR-DLOSD1 sy-vline
WA_P22_SIL_ALV_STR-DLOSDJ1 sy-vline
WA_P22_SIL_ALV_STR-KAJID2 sy-vline
WA_P22_SIL_ALV_STR-KANAD2 sy-vline
WA_P22_SIL_ALV_STR-BIRTH2 sy-vline
WA_P22_SIL_ALV_STR-BIRTHJ2 sy-vline
WA_P22_SIL_ALV_STR-FASEX2 sy-vline
WA_P22_SIL_ALV_STR-STEXT2 sy-vline
WA_P22_SIL_ALV_STR-RELAD2 sy-vline
WA_P22_SIL_ALV_STR-DCQDT2 sy-vline
WA_P22_SIL_ALV_STR-DCQDTJ2 sy-vline
WA_P22_SIL_ALV_STR-DLOSD2 sy-vline
WA_P22_SIL_ALV_STR-DLOSDJ2 sy-vline
WA_P22_SIL_ALV_STR-KAJID3 sy-vline
WA_P22_SIL_ALV_STR-KANAD3 sy-vline
WA_P22_SIL_ALV_STR-BIRTH3 sy-vline
WA_P22_SIL_ALV_STR-BIRTHJ3 sy-vline
WA_P22_SIL_ALV_STR-FASEX3 sy-vline
WA_P22_SIL_ALV_STR-STEXT3 sy-vline
WA_P22_SIL_ALV_STR-RELAD3 sy-vline
WA_P22_SIL_ALV_STR-DCQDT3 sy-vline
WA_P22_SIL_ALV_STR-DCQDTJ3 sy-vline
WA_P22_SIL_ALV_STR-DLOSD3 sy-vline
WA_P22_SIL_ALV_STR-DLOSDJ3 sy-vline
WA_P22_SIL_ALV_STR-KAJID4 sy-vline
WA_P22_SIL_ALV_STR-KANAD4 sy-vline
WA_P22_SIL_ALV_STR-BIRTH4 sy-vline
WA_P22_SIL_ALV_STR-BIRTHJ4 sy-vline
WA_P22_SIL_ALV_STR-FASEX4 sy-vline
WA_P22_SIL_ALV_STR-STEXT4 sy-vline
WA_P22_SIL_ALV_STR-RELAD4 sy-vline
WA_P22_SIL_ALV_STR-DCQDT4 sy-vline
WA_P22_SIL_ALV_STR-DCQDTJ4 sy-vline
WA_P22_SIL_ALV_STR-DLOSD4 sy-vline
WA_P22_SIL_ALV_STR-DLOSDJ4 sy-vline
WA_P22_SIL_ALV_STR-KAJID5 sy-vline
WA_P22_SIL_ALV_STR-KANAD5 sy-vline
WA_P22_SIL_ALV_STR-BIRTH5 sy-vline
WA_P22_SIL_ALV_STR-BIRTHJ5 sy-vline
WA_P22_SIL_ALV_STR-FASEX5 sy-vline
WA_P22_SIL_ALV_STR-STEXT5 sy-vline
WA_P22_SIL_ALV_STR-RELAD5 sy-vline
WA_P22_SIL_ALV_STR-DCQDT5 sy-vline
WA_P22_SIL_ALV_STR-DCQDTJ5 sy-vline
WA_P22_SIL_ALV_STR-DLOSD5 sy-vline
WA_P22_SIL_ALV_STR-DLOSDJ5 sy-vline
WA_P22_SIL_ALV_STR-JGNPR sy-vline
WA_P22_SIL_ALV_STR-ADDOF sy-vline
WA_P22_SIL_ALV_STR-ADDI1 sy-vline
WA_P22_SIL_ALV_STR-ADDI2 sy-vline
WA_P22_SIL_ALV_STR-ADDI3 sy-vline
WA_P22_SIL_ALV_STR-JGSNM sy-vline
WA_P22_SIL_ALV_STR-TELNR sy-vline
WA_P22_SIL_ALV_STR-REPRE sy-vline
WA_P22_SIL_ALV_STR-SCICC sy-vline
WA_P22_SIL_ALV_STR-SCINR sy-vline
WA_P22_SIL_ALV_STR-CHARG sy-vline
WA_P22_SIL_ALV_STR-INSURER sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.