ABAP Select data from SAP table /NFM/DIA 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 /NFM/DIA 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 /NFM/DIA. 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 /NFM/DIA 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_/NFM/DIA TYPE STANDARD TABLE OF /NFM/DIA,
      WA_/NFM/DIA TYPE /NFM/DIA,
      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: </NFM/DIA> TYPE /NFM/DIA.

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

SELECT *
*restrict ABAP select to first 10 rows
 UP TO 10 ROWS      
  FROM /NFM/DIA
  INTO TABLE IT_/NFM/DIA.

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM /NFM/DIA
*  INTO TABLE @DATA(IT_/NFM/DIA2).
*--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_/NFM/DIA INDEX 1 INTO DATA(WA_/NFM/DIA2).


*Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL
LOOP AT IT_/NFM/DIA ASSIGNING </NFM/DIA>.
*To update a field value using a field symbol simply change the value via the field symbol pointer
</NFM/DIA>-MANDT = 1.
</NFM/DIA>-FNO = 1.
</NFM/DIA>-AKTIV = 1.
</NFM/DIA>-GNDAT = 1.
</NFM/DIA>-GNZEI = 1.
ENDLOOP.

LOOP AT IT_/NFM/DIA INTO WA_/NFM/DIA.
*Write horizonal line to screen report.
  WRITE:/ sy-uline.

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_/NFM/DIA-BEZEI, sy-vline,
WA_/NFM/DIA-SPRAS, sy-vline,
WA_/NFM/DIA-ROUTIN, sy-vline,
WA_/NFM/DIA-MODUL, sy-vline,
WA_/NFM/DIA-MODMAR, sy-vline,
WA_/NFM/DIA-KAPPL1, sy-vline.
ENDLOOP. *Add any further fields from structure WA_/NFM/DIA 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_/NFM/DIA 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_/NFM/DIA INTO WA_/NFM/DIA. *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 ISOLA, internal->external for field SPRAS CALL FUNCTION 'CONVERSION_EXIT_ISOLA_OUTPUT' EXPORTING input = WA_/NFM/DIA-SPRAS IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_/NFM/DIA-SPRAS.
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_/NFM/DIA_STR,
MANDT TYPE STRING,
FNO TYPE STRING,
AKTIV TYPE STRING,
GNDAT TYPE STRING,
GNZEI TYPE STRING,
BEZEI TYPE STRING,
SPRAS TYPE STRING,
ROUTIN TYPE STRING,
MODUL TYPE STRING,
MODMAR TYPE STRING,
KAPPL1 TYPE STRING,
KAPPL2 TYPE STRING,
INC TYPE STRING,
KAPPL TYPE STRING,
ORG TYPE STRING,
ORGTX TYPE STRING,
FS TYPE STRING,
PBT TYPE STRING,
EAT TYPE STRING,
LAT TYPE STRING,
PARNR TYPE STRING,
NAME1 TYPE STRING,
NES TYPE STRING,
NEB TYPE STRING,
BWR TYPE STRING,
BWM TYPE STRING,
BCU TYPE STRING,
SORG TYPE STRING,
SOCU TYPE STRING,
SOCG TYPE STRING,
SOMG TYPE STRING,
SOCUMG TYPE STRING,
SOCGMG TYPE STRING,
SOMA TYPE STRING,
SOCUMA TYPE STRING,
SOCGMA TYPE STRING,
PORG TYPE STRING,
POSU TYPE STRING,
POSG TYPE STRING,
POMG TYPE STRING,
POSUMG TYPE STRING,
POSGMG TYPE STRING,
POMA TYPE STRING,
POSUMA TYPE STRING,
POSGMA TYPE STRING,
KDGRP TYPE STRING,
KDGTX TYPE STRING,
STK TYPE STRING,
STB TYPE STRING,
EIN TYPE STRING,
EINS TYPE STRING,
EINK TYPE STRING,
FNOCPQ TYPE STRING,
FNOCPZ TYPE STRING,
BEZCPQ TYPE STRING,
BEZCPZ TYPE STRING,
BEI TYPE STRING,
KNL TYPE STRING,
NDT_U TYPE STRING,
NDT_M TYPE STRING,
NDT_K TYPE STRING,
NDT_A TYPE STRING,
NMO_U TYPE STRING,
NMO_M TYPE STRING,
NMO_K TYPE STRING,
NMO_A TYPE STRING,
KTA_U TYPE STRING,
KTA_M TYPE STRING,
KTA_K TYPE STRING,
KTA_A TYPE STRING,
NKU_U TYPE STRING,
NKU_M TYPE STRING,
NKU_K TYPE STRING,
NKU_A TYPE STRING,
EDS_U TYPE STRING,
EDS_M TYPE STRING,
EDS_K TYPE STRING,
EDS_A TYPE STRING,
BEK_U TYPE STRING,
BEK_M TYPE STRING,
BEK_K TYPE STRING,
BEK_A TYPE STRING,
BWR_U TYPE STRING,
BWR_M TYPE STRING,
BWR_K TYPE STRING,
BWR_A TYPE STRING,
NBD_U TYPE STRING,
NBD_M TYPE STRING,
NBD_K TYPE STRING,
NBD_A TYPE STRING,
BSL_U TYPE STRING,
BSL_M TYPE STRING,
BSL_K TYPE STRING,
BSL_A TYPE STRING,END OF T_EKKO_STR. DATA: WA_/NFM/DIA_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_/NFM/DIA_STR-MANDT sy-vline
WA_/NFM/DIA_STR-FNO sy-vline
WA_/NFM/DIA_STR-AKTIV sy-vline
WA_/NFM/DIA_STR-GNDAT sy-vline
WA_/NFM/DIA_STR-GNZEI sy-vline
WA_/NFM/DIA_STR-BEZEI sy-vline
WA_/NFM/DIA_STR-SPRAS sy-vline
WA_/NFM/DIA_STR-ROUTIN sy-vline
WA_/NFM/DIA_STR-MODUL sy-vline
WA_/NFM/DIA_STR-MODMAR sy-vline
WA_/NFM/DIA_STR-KAPPL1 sy-vline
WA_/NFM/DIA_STR-KAPPL2 sy-vline
WA_/NFM/DIA_STR-INC sy-vline
WA_/NFM/DIA_STR-KAPPL sy-vline
WA_/NFM/DIA_STR-ORG sy-vline
WA_/NFM/DIA_STR-ORGTX sy-vline
WA_/NFM/DIA_STR-FS sy-vline
WA_/NFM/DIA_STR-PBT sy-vline
WA_/NFM/DIA_STR-EAT sy-vline
WA_/NFM/DIA_STR-LAT sy-vline
WA_/NFM/DIA_STR-PARNR sy-vline
WA_/NFM/DIA_STR-NAME1 sy-vline
WA_/NFM/DIA_STR-NES sy-vline
WA_/NFM/DIA_STR-NEB sy-vline
WA_/NFM/DIA_STR-BWR sy-vline
WA_/NFM/DIA_STR-BWM sy-vline
WA_/NFM/DIA_STR-BCU sy-vline
WA_/NFM/DIA_STR-SORG sy-vline
WA_/NFM/DIA_STR-SOCU sy-vline
WA_/NFM/DIA_STR-SOCG sy-vline
WA_/NFM/DIA_STR-SOMG sy-vline
WA_/NFM/DIA_STR-SOCUMG sy-vline
WA_/NFM/DIA_STR-SOCGMG sy-vline
WA_/NFM/DIA_STR-SOMA sy-vline
WA_/NFM/DIA_STR-SOCUMA sy-vline
WA_/NFM/DIA_STR-SOCGMA sy-vline
WA_/NFM/DIA_STR-PORG sy-vline
WA_/NFM/DIA_STR-POSU sy-vline
WA_/NFM/DIA_STR-POSG sy-vline
WA_/NFM/DIA_STR-POMG sy-vline
WA_/NFM/DIA_STR-POSUMG sy-vline
WA_/NFM/DIA_STR-POSGMG sy-vline
WA_/NFM/DIA_STR-POMA sy-vline
WA_/NFM/DIA_STR-POSUMA sy-vline
WA_/NFM/DIA_STR-POSGMA sy-vline
WA_/NFM/DIA_STR-KDGRP sy-vline
WA_/NFM/DIA_STR-KDGTX sy-vline
WA_/NFM/DIA_STR-STK sy-vline
WA_/NFM/DIA_STR-STB sy-vline
WA_/NFM/DIA_STR-EIN sy-vline
WA_/NFM/DIA_STR-EINS sy-vline
WA_/NFM/DIA_STR-EINK sy-vline
WA_/NFM/DIA_STR-FNOCPQ sy-vline
WA_/NFM/DIA_STR-FNOCPZ sy-vline
WA_/NFM/DIA_STR-BEZCPQ sy-vline
WA_/NFM/DIA_STR-BEZCPZ sy-vline
WA_/NFM/DIA_STR-BEI sy-vline
WA_/NFM/DIA_STR-KNL sy-vline
WA_/NFM/DIA_STR-NDT_U sy-vline
WA_/NFM/DIA_STR-NDT_M sy-vline
WA_/NFM/DIA_STR-NDT_K sy-vline
WA_/NFM/DIA_STR-NDT_A sy-vline
WA_/NFM/DIA_STR-NMO_U sy-vline
WA_/NFM/DIA_STR-NMO_M sy-vline
WA_/NFM/DIA_STR-NMO_K sy-vline
WA_/NFM/DIA_STR-NMO_A sy-vline
WA_/NFM/DIA_STR-KTA_U sy-vline
WA_/NFM/DIA_STR-KTA_M sy-vline
WA_/NFM/DIA_STR-KTA_K sy-vline
WA_/NFM/DIA_STR-KTA_A sy-vline
WA_/NFM/DIA_STR-NKU_U sy-vline
WA_/NFM/DIA_STR-NKU_M sy-vline
WA_/NFM/DIA_STR-NKU_K sy-vline
WA_/NFM/DIA_STR-NKU_A sy-vline
WA_/NFM/DIA_STR-EDS_U sy-vline
WA_/NFM/DIA_STR-EDS_M sy-vline
WA_/NFM/DIA_STR-EDS_K sy-vline
WA_/NFM/DIA_STR-EDS_A sy-vline
WA_/NFM/DIA_STR-BEK_U sy-vline
WA_/NFM/DIA_STR-BEK_M sy-vline
WA_/NFM/DIA_STR-BEK_K sy-vline
WA_/NFM/DIA_STR-BEK_A sy-vline
WA_/NFM/DIA_STR-BWR_U sy-vline
WA_/NFM/DIA_STR-BWR_M sy-vline
WA_/NFM/DIA_STR-BWR_K sy-vline
WA_/NFM/DIA_STR-BWR_A sy-vline
WA_/NFM/DIA_STR-NBD_U sy-vline
WA_/NFM/DIA_STR-NBD_M sy-vline
WA_/NFM/DIA_STR-NBD_K sy-vline
WA_/NFM/DIA_STR-NBD_A sy-vline
WA_/NFM/DIA_STR-BSL_U sy-vline
WA_/NFM/DIA_STR-BSL_M sy-vline
WA_/NFM/DIA_STR-BSL_K sy-vline
WA_/NFM/DIA_STR-BSL_A sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.