ABAP Select data from SAP table VIEWDEF 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 VIEWDEF 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 VIEWDEF. 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 VIEWDEF 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_VIEWDEF TYPE STANDARD TABLE OF VIEWDEF,
      WA_VIEWDEF TYPE VIEWDEF,
      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: <VIEWDEF> TYPE VIEWDEF.

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

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

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM VIEWDEF
*  INTO TABLE @DATA(IT_VIEWDEF2).
*--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_VIEWDEF INDEX 1 INTO DATA(WA_VIEWDEF2).


*Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL
LOOP AT IT_VIEWDEF ASSIGNING <VIEWDEF>.
*To update a field value using a field symbol simply change the value via the field symbol pointer
<VIEWDEF>-OBJECTNAME = 1.
<VIEWDEF>-OBJECTTYPE = 1.
<VIEWDEF>-LANG_ISKEY = 1.
<VIEWDEF>-KEY_INTERR = 1.
<VIEWDEF>-GUID_ISKEY = 1.
ENDLOOP.

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

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_VIEWDEF-KEYNOTLEFT, sy-vline,
WA_VIEWDEF-STRING, sy-vline,
WA_VIEWDEF-FIELD_LEN, sy-vline,
WA_VIEWDEF-READ_ONLY, sy-vline,
WA_VIEWDEF-NOT_FOUND, sy-vline,
WA_VIEWDEF-NO_TVDIR, sy-vline.
ENDLOOP. *Add any further fields from structure WA_VIEWDEF 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_VIEWDEF 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_VIEWDEF INTO WA_VIEWDEF. *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_VIEWDEF_STR,
OBJECTNAME TYPE STRING,
OBJECTTYPE TYPE STRING,
LANG_ISKEY TYPE STRING,
KEY_INTERR TYPE STRING,
GUID_ISKEY TYPE STRING,
KEYNOTLEFT TYPE STRING,
STRING TYPE STRING,
FIELD_LEN TYPE STRING,
READ_ONLY TYPE STRING,
NOT_FOUND TYPE STRING,
NO_TVDIR TYPE STRING,
INCONSOBJS TYPE STRING,
MAINTVIEW TYPE STRING,
INVAL_V_D TYPE STRING,
FLDLEN_DAT TYPE STRING,
STRNG_DAT TYPE STRING,
ADDR_ISKEY TYPE STRING,
ADDR_ISDAT TYPE STRING,
FLD_NM_KEY TYPE STRING,
FLD_NM_DAT TYPE STRING,
TOO_LARGE TYPE STRING,
SUBOBJECT TYPE STRING,
SUBOBJTYP TYPE STRING,
TABLENAME TYPE STRING,
TABLETYPE TYPE STRING,
FIELDNAME TYPE STRING,
DELIVERYCL TYPE STRING,
INCONSDYCL TYPE STRING,
RIGHT_DYCL TYPE STRING,
INDEP_DYCL TYPE STRING,
SYSTEMOBJ TYPE STRING,
NO_FUNCGRP TYPE STRING,
DOUBLE_FLD TYPE STRING,
KEY_SEQNCE TYPE STRING,
ONEDCOBJNC TYPE STRING,
ONEDCALLNC TYPE STRING,
ALLDCOBJNC TYPE STRING,
ALLDCALLNC TYPE STRING,
TABEXPLDEN TYPE STRING,
TABEXPLALW TYPE STRING,
ONEDENOBJT TYPE STRING,
ONEDENALLT TYPE STRING,
ALLDENOBJT TYPE STRING,
ALLDENALLT TYPE STRING,
OBJ_TAB_NE TYPE STRING,
USR_TAB_NE TYPE STRING,
ADD_TABLE TYPE STRING,
PRMTAB_MIS TYPE STRING,
LANGPISKEY TYPE STRING,
BESTFITOBN TYPE STRING,
BESTFITOBT TYPE STRING,
CLI_DEP_ER TYPE STRING,
CLI_CAS_ER TYPE STRING,
ONECDEPALL TYPE STRING,
ONECDEPOBJ TYPE STRING,
ALLCDEPALL TYPE STRING,
ALLCDEPOBJ TYPE STRING,
ONECCASALL TYPE STRING,
ONECCASOBJ TYPE STRING,
ALLCCASALL TYPE STRING,
ALLCCASOBJ TYPE STRING,
MIXEDCDEPO TYPE STRING,
MIXEDCDEPA TYPE STRING,
MIXEDCCASO TYPE STRING,
MIXEDCCASA TYPE STRING,END OF T_EKKO_STR. DATA: WA_VIEWDEF_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_VIEWDEF_STR-OBJECTNAME sy-vline
WA_VIEWDEF_STR-OBJECTTYPE sy-vline
WA_VIEWDEF_STR-LANG_ISKEY sy-vline
WA_VIEWDEF_STR-KEY_INTERR sy-vline
WA_VIEWDEF_STR-GUID_ISKEY sy-vline
WA_VIEWDEF_STR-KEYNOTLEFT sy-vline
WA_VIEWDEF_STR-STRING sy-vline
WA_VIEWDEF_STR-FIELD_LEN sy-vline
WA_VIEWDEF_STR-READ_ONLY sy-vline
WA_VIEWDEF_STR-NOT_FOUND sy-vline
WA_VIEWDEF_STR-NO_TVDIR sy-vline
WA_VIEWDEF_STR-INCONSOBJS sy-vline
WA_VIEWDEF_STR-MAINTVIEW sy-vline
WA_VIEWDEF_STR-INVAL_V_D sy-vline
WA_VIEWDEF_STR-FLDLEN_DAT sy-vline
WA_VIEWDEF_STR-STRNG_DAT sy-vline
WA_VIEWDEF_STR-ADDR_ISKEY sy-vline
WA_VIEWDEF_STR-ADDR_ISDAT sy-vline
WA_VIEWDEF_STR-FLD_NM_KEY sy-vline
WA_VIEWDEF_STR-FLD_NM_DAT sy-vline
WA_VIEWDEF_STR-TOO_LARGE sy-vline
WA_VIEWDEF_STR-SUBOBJECT sy-vline
WA_VIEWDEF_STR-SUBOBJTYP sy-vline
WA_VIEWDEF_STR-TABLENAME sy-vline
WA_VIEWDEF_STR-TABLETYPE sy-vline
WA_VIEWDEF_STR-FIELDNAME sy-vline
WA_VIEWDEF_STR-DELIVERYCL sy-vline
WA_VIEWDEF_STR-INCONSDYCL sy-vline
WA_VIEWDEF_STR-RIGHT_DYCL sy-vline
WA_VIEWDEF_STR-INDEP_DYCL sy-vline
WA_VIEWDEF_STR-SYSTEMOBJ sy-vline
WA_VIEWDEF_STR-NO_FUNCGRP sy-vline
WA_VIEWDEF_STR-DOUBLE_FLD sy-vline
WA_VIEWDEF_STR-KEY_SEQNCE sy-vline
WA_VIEWDEF_STR-ONEDCOBJNC sy-vline
WA_VIEWDEF_STR-ONEDCALLNC sy-vline
WA_VIEWDEF_STR-ALLDCOBJNC sy-vline
WA_VIEWDEF_STR-ALLDCALLNC sy-vline
WA_VIEWDEF_STR-TABEXPLDEN sy-vline
WA_VIEWDEF_STR-TABEXPLALW sy-vline
WA_VIEWDEF_STR-ONEDENOBJT sy-vline
WA_VIEWDEF_STR-ONEDENALLT sy-vline
WA_VIEWDEF_STR-ALLDENOBJT sy-vline
WA_VIEWDEF_STR-ALLDENALLT sy-vline
WA_VIEWDEF_STR-OBJ_TAB_NE sy-vline
WA_VIEWDEF_STR-USR_TAB_NE sy-vline
WA_VIEWDEF_STR-ADD_TABLE sy-vline
WA_VIEWDEF_STR-PRMTAB_MIS sy-vline
WA_VIEWDEF_STR-LANGPISKEY sy-vline
WA_VIEWDEF_STR-BESTFITOBN sy-vline
WA_VIEWDEF_STR-BESTFITOBT sy-vline
WA_VIEWDEF_STR-CLI_DEP_ER sy-vline
WA_VIEWDEF_STR-CLI_CAS_ER sy-vline
WA_VIEWDEF_STR-ONECDEPALL sy-vline
WA_VIEWDEF_STR-ONECDEPOBJ sy-vline
WA_VIEWDEF_STR-ALLCDEPALL sy-vline
WA_VIEWDEF_STR-ALLCDEPOBJ sy-vline
WA_VIEWDEF_STR-ONECCASALL sy-vline
WA_VIEWDEF_STR-ONECCASOBJ sy-vline
WA_VIEWDEF_STR-ALLCCASALL sy-vline
WA_VIEWDEF_STR-ALLCCASOBJ sy-vline
WA_VIEWDEF_STR-MIXEDCDEPO sy-vline
WA_VIEWDEF_STR-MIXEDCDEPA sy-vline
WA_VIEWDEF_STR-MIXEDCCASO sy-vline
WA_VIEWDEF_STR-MIXEDCCASA sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.