ABAP Select data from SAP table EDISCVAR 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 EDISCVAR 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 EDISCVAR. 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 EDISCVAR 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_EDISCVAR TYPE STANDARD TABLE OF EDISCVAR,
      WA_EDISCVAR TYPE EDISCVAR,
      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: <EDISCVAR> TYPE EDISCVAR.

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

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

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM EDISCVAR
*  INTO TABLE @DATA(IT_EDISCVAR2).
*--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_EDISCVAR INDEX 1 INTO DATA(WA_EDISCVAR2).


*Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL
LOOP AT IT_EDISCVAR ASSIGNING <EDISCVAR>.
*To update a field value using a field symbol simply change the value via the field symbol pointer
<EDISCVAR>-MANDT = 1.
<EDISCVAR>-DISCPROCV = 1.
<EDISCVAR>-DISCREASON = 1.
<EDISCVAR>-NO_RELEASE = 1.
<EDISCVAR>-NO_AUTO_COMPLETE = 1.
ENDLOOP.

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

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_EDISCVAR-BILLREL, sy-vline,
WA_EDISCVAR-ORD_CODE_D, sy-vline,
WA_EDISCVAR-ORD_WERK_D, sy-vline,
WA_EDISCVAR-ORD_CODE_R, sy-vline,
WA_EDISCVAR-ORD_WERK_R, sy-vline,
WA_EDISCVAR-CHARGE_DC, sy-vline.
ENDLOOP. *Add any further fields from structure WA_EDISCVAR 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_EDISCVAR 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_EDISCVAR INTO WA_EDISCVAR. *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 ALPHA, internal->external for field BBP_D_MODE CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_EDISCVAR-BBP_D_MODE IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_EDISCVAR-BBP_D_MODE.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ALPHA, internal->external for field BBP_R_MODE CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_EDISCVAR-BBP_R_MODE IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_EDISCVAR-BBP_R_MODE.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ALPHA, internal->external for field BC_D_TYPE CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_EDISCVAR-BC_D_TYPE IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_EDISCVAR-BC_D_TYPE.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ALPHA, internal->external for field BC_R_TYPE CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_EDISCVAR-BC_R_TYPE IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_EDISCVAR-BC_R_TYPE.
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_EDISCVAR_STR,
MANDT TYPE STRING,
DISCPROCV TYPE STRING,
DISCREASON TYPE STRING,
NO_RELEASE TYPE STRING,
NO_AUTO_COMPLETE TYPE STRING,
BILLREL TYPE STRING,
ORD_CODE_D TYPE STRING,
ORD_WERK_D TYPE STRING,
ORD_CODE_R TYPE STRING,
ORD_WERK_R TYPE STRING,
CHARGE_DC TYPE STRING,
CHARGE_RC TYPE STRING,
BBP_D_MODE TYPE STRING,
BBP_R_MODE TYPE STRING,
BC_D_TYPE TYPE STRING,
BC_D_CLASS TYPE STRING,
BC_D_ACTVT TYPE STRING,
BC_R_TYPE TYPE STRING,
BC_R_CLASS TYPE STRING,
BC_R_ACTVT TYPE STRING,
DO_DATE_OFFSET TYPE STRING,
DE_DATE_OFFSET TYPE STRING,
DE_TIME TYPE STRING,
RO_DATE_OFFSET TYPE STRING,
RE_DATE_OFFSET TYPE STRING,
RE_TIME TYPE STRING,
COMPLETE_TECHN TYPE STRING,
CONTRACT_PROP TYPE STRING,
ORDSTATE_D TYPE STRING,
ORDSTATE_R TYPE STRING,
NOTIFICATION TYPE STRING,
NOT_CODE_D TYPE STRING,
NOT_WERK_D TYPE STRING,
NOT_CODE_R TYPE STRING,
NOT_WERK_R TYPE STRING,
RECN_REMOV TYPE STRING,
BONIG_KK TYPE STRING,
SEL_NOT_COUNT TYPE STRING,
INTERIM_BILLING TYPE STRING,
BBP_STOP TYPE STRING,
BBP_DISC_POPUP TYPE STRING,
MR_AUT_REVERSE TYPE STRING,
CHRG_AUT_REVERSE TYPE STRING,
AMI_CHARGE_DC TYPE STRING,
AMI_CHARGE_RC TYPE STRING,
AMI_DO_DATE_OFFS TYPE STRING,
AMI_DE_TIME TYPE STRING,
AMI_RO_DATE_OFFS TYPE STRING,
AMI_RE_TIME TYPE STRING,
AMI_MR_AUT_REVER TYPE STRING,
AMI_CHRG_AUT_REV TYPE STRING,
APRV_DC_REQD TYPE STRING,
APRV_RC_REQD TYPE STRING,
APRV_DC_MIN_STAR TYPE STRING,
APRV_DC_OFF_STAR TYPE STRING,
APRV_DC_OFF_DUE TYPE STRING,
APRV_DC_MAX_INTV TYPE STRING,
APRV_DC_INTERVAL TYPE STRING,
APRV_RC_MIN_STAR TYPE STRING,
APRV_RC_OFF_STAR TYPE STRING,
APRV_RC_OFF_DUE TYPE STRING,
APRV_RC_MAX_INTV TYPE STRING,
APRV_RC_INTERVAL TYPE STRING,
AMI_SCENARIO TYPE STRING,
DC_WI_CATEGORY TYPE STRING,
RC_WI_CATEGORY TYPE STRING,
AMI_BBP_DISC_POP TYPE STRING,
APRV_DC_OFF_STIM TYPE STRING,
APRV_RC_OFF_STIM TYPE STRING,
APRV_DC_OFF_DTIM TYPE STRING,
APRV_RC_OFF_DTIM TYPE STRING,
APRV_DC_MAX_AGRD TYPE STRING,
APRV_RC_MAX_AGRD TYPE STRING,
AMI_REMOTE_MR TYPE STRING,END OF T_EKKO_STR. DATA: WA_EDISCVAR_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_EDISCVAR_STR-MANDT sy-vline
WA_EDISCVAR_STR-DISCPROCV sy-vline
WA_EDISCVAR_STR-DISCREASON sy-vline
WA_EDISCVAR_STR-NO_RELEASE sy-vline
WA_EDISCVAR_STR-NO_AUTO_COMPLETE sy-vline
WA_EDISCVAR_STR-BILLREL sy-vline
WA_EDISCVAR_STR-ORD_CODE_D sy-vline
WA_EDISCVAR_STR-ORD_WERK_D sy-vline
WA_EDISCVAR_STR-ORD_CODE_R sy-vline
WA_EDISCVAR_STR-ORD_WERK_R sy-vline
WA_EDISCVAR_STR-CHARGE_DC sy-vline
WA_EDISCVAR_STR-CHARGE_RC sy-vline
WA_EDISCVAR_STR-BBP_D_MODE sy-vline
WA_EDISCVAR_STR-BBP_R_MODE sy-vline
WA_EDISCVAR_STR-BC_D_TYPE sy-vline
WA_EDISCVAR_STR-BC_D_CLASS sy-vline
WA_EDISCVAR_STR-BC_D_ACTVT sy-vline
WA_EDISCVAR_STR-BC_R_TYPE sy-vline
WA_EDISCVAR_STR-BC_R_CLASS sy-vline
WA_EDISCVAR_STR-BC_R_ACTVT sy-vline
WA_EDISCVAR_STR-DO_DATE_OFFSET sy-vline
WA_EDISCVAR_STR-DE_DATE_OFFSET sy-vline
WA_EDISCVAR_STR-DE_TIME sy-vline
WA_EDISCVAR_STR-RO_DATE_OFFSET sy-vline
WA_EDISCVAR_STR-RE_DATE_OFFSET sy-vline
WA_EDISCVAR_STR-RE_TIME sy-vline
WA_EDISCVAR_STR-COMPLETE_TECHN sy-vline
WA_EDISCVAR_STR-CONTRACT_PROP sy-vline
WA_EDISCVAR_STR-ORDSTATE_D sy-vline
WA_EDISCVAR_STR-ORDSTATE_R sy-vline
WA_EDISCVAR_STR-NOTIFICATION sy-vline
WA_EDISCVAR_STR-NOT_CODE_D sy-vline
WA_EDISCVAR_STR-NOT_WERK_D sy-vline
WA_EDISCVAR_STR-NOT_CODE_R sy-vline
WA_EDISCVAR_STR-NOT_WERK_R sy-vline
WA_EDISCVAR_STR-RECN_REMOV sy-vline
WA_EDISCVAR_STR-BONIG_KK sy-vline
WA_EDISCVAR_STR-SEL_NOT_COUNT sy-vline
WA_EDISCVAR_STR-INTERIM_BILLING sy-vline
WA_EDISCVAR_STR-BBP_STOP sy-vline
WA_EDISCVAR_STR-BBP_DISC_POPUP sy-vline
WA_EDISCVAR_STR-MR_AUT_REVERSE sy-vline
WA_EDISCVAR_STR-CHRG_AUT_REVERSE sy-vline
WA_EDISCVAR_STR-AMI_CHARGE_DC sy-vline
WA_EDISCVAR_STR-AMI_CHARGE_RC sy-vline
WA_EDISCVAR_STR-AMI_DO_DATE_OFFS sy-vline
WA_EDISCVAR_STR-AMI_DE_TIME sy-vline
WA_EDISCVAR_STR-AMI_RO_DATE_OFFS sy-vline
WA_EDISCVAR_STR-AMI_RE_TIME sy-vline
WA_EDISCVAR_STR-AMI_MR_AUT_REVER sy-vline
WA_EDISCVAR_STR-AMI_CHRG_AUT_REV sy-vline
WA_EDISCVAR_STR-APRV_DC_REQD sy-vline
WA_EDISCVAR_STR-APRV_RC_REQD sy-vline
WA_EDISCVAR_STR-APRV_DC_MIN_STAR sy-vline
WA_EDISCVAR_STR-APRV_DC_OFF_STAR sy-vline
WA_EDISCVAR_STR-APRV_DC_OFF_DUE sy-vline
WA_EDISCVAR_STR-APRV_DC_MAX_INTV sy-vline
WA_EDISCVAR_STR-APRV_DC_INTERVAL sy-vline
WA_EDISCVAR_STR-APRV_RC_MIN_STAR sy-vline
WA_EDISCVAR_STR-APRV_RC_OFF_STAR sy-vline
WA_EDISCVAR_STR-APRV_RC_OFF_DUE sy-vline
WA_EDISCVAR_STR-APRV_RC_MAX_INTV sy-vline
WA_EDISCVAR_STR-APRV_RC_INTERVAL sy-vline
WA_EDISCVAR_STR-AMI_SCENARIO sy-vline
WA_EDISCVAR_STR-DC_WI_CATEGORY sy-vline
WA_EDISCVAR_STR-RC_WI_CATEGORY sy-vline
WA_EDISCVAR_STR-AMI_BBP_DISC_POP sy-vline
WA_EDISCVAR_STR-APRV_DC_OFF_STIM sy-vline
WA_EDISCVAR_STR-APRV_RC_OFF_STIM sy-vline
WA_EDISCVAR_STR-APRV_DC_OFF_DTIM sy-vline
WA_EDISCVAR_STR-APRV_RC_OFF_DTIM sy-vline
WA_EDISCVAR_STR-APRV_DC_MAX_AGRD sy-vline
WA_EDISCVAR_STR-APRV_RC_MAX_AGRD sy-vline
WA_EDISCVAR_STR-AMI_REMOTE_MR sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.