ABAP Select data from SAP table EMARC4 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 EMARC4 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 EMARC4. 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 EMARC4 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_EMARC4 TYPE STANDARD TABLE OF EMARC4,
      WA_EMARC4 TYPE EMARC4,
      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: <EMARC4> TYPE EMARC4.

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

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

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM EMARC4
*  INTO TABLE @DATA(IT_EMARC42).
*--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_EMARC4 INDEX 1 INTO DATA(WA_EMARC42).


*Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL
LOOP AT IT_EMARC4 ASSIGNING <EMARC4>.
*To update a field value using a field symbol simply change the value via the field symbol pointer
<EMARC4>-KZAGL = 1.
<EMARC4>-FVIDK = 1.
<EMARC4>-FXPRU = 1.
<EMARC4>-LOGGR = 1.
<EMARC4>-FPRFM = 1.
ENDLOOP.

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

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_EMARC4-GLGMG, sy-vline,
WA_EMARC4-VKGLG, sy-vline,
WA_EMARC4-INDUS, sy-vline,
WA_EMARC4-MOWNR, sy-vline,
WA_EMARC4-MOGRU, sy-vline,
WA_EMARC4-CASNR, sy-vline.
ENDLOOP. *Add any further fields from structure WA_EMARC4 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_EMARC4 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_EMARC4 INTO WA_EMARC4. *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 INDUS CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_EMARC4-INDUS IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_EMARC4-INDUS.
WRITE:/ 'New Value:', ld_input.

*Conversion exit GJAHR, internal->external for field LFGJA CALL FUNCTION 'CONVERSION_EXIT_GJAHR_OUTPUT' EXPORTING input = WA_EMARC4-LFGJA IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_EMARC4-LFGJA.
WRITE:/ 'New Value:', ld_input.

*Conversion exit MATN1, internal->external for field UCMAT CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT' EXPORTING input = WA_EMARC4-UCMAT IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_EMARC4-UCMAT.
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_EMARC4_STR,
KZAGL TYPE STRING,
FVIDK TYPE STRING,
FXPRU TYPE STRING,
LOGGR TYPE STRING,
FPRFM TYPE STRING,
GLGMG TYPE STRING,
VKGLG TYPE STRING,
INDUS TYPE STRING,
MOWNR TYPE STRING,
MOGRU TYPE STRING,
CASNR TYPE STRING,
GPNUM TYPE STRING,
STEUC TYPE STRING,
FABKZ TYPE STRING,
MATGR TYPE STRING,
VSPVB TYPE STRING,
DPLFS TYPE STRING,
DPLPU TYPE STRING,
DPLHO TYPE STRING,
MINLS TYPE STRING,
MAXLS TYPE STRING,
FIXLS TYPE STRING,
LTINC TYPE STRING,
COMPL TYPE STRING,
CONVT TYPE STRING,
SHPRO TYPE STRING,
AHDIS TYPE STRING,
DIBER TYPE STRING,
KZPSP TYPE STRING,
OCMPF TYPE STRING,
APOKZ TYPE STRING,
MCRUE TYPE STRING,
LFMON TYPE STRING,
LFGJA TYPE STRING,
EISLO TYPE STRING,
NCOST TYPE STRING,
ROTATION_DATE TYPE STRING,
UCHKZ TYPE STRING,
UCMAT TYPE STRING,
EXCISE_TAX_RLVNCE TYPE STRING,END OF T_EKKO_STR. DATA: WA_EMARC4_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_EMARC4_STR-KZAGL sy-vline
WA_EMARC4_STR-FVIDK sy-vline
WA_EMARC4_STR-FXPRU sy-vline
WA_EMARC4_STR-LOGGR sy-vline
WA_EMARC4_STR-FPRFM sy-vline
WA_EMARC4_STR-GLGMG sy-vline
WA_EMARC4_STR-VKGLG sy-vline
WA_EMARC4_STR-INDUS sy-vline
WA_EMARC4_STR-MOWNR sy-vline
WA_EMARC4_STR-MOGRU sy-vline
WA_EMARC4_STR-CASNR sy-vline
WA_EMARC4_STR-GPNUM sy-vline
WA_EMARC4_STR-STEUC sy-vline
WA_EMARC4_STR-FABKZ sy-vline
WA_EMARC4_STR-MATGR sy-vline
WA_EMARC4_STR-VSPVB sy-vline
WA_EMARC4_STR-DPLFS sy-vline
WA_EMARC4_STR-DPLPU sy-vline
WA_EMARC4_STR-DPLHO sy-vline
WA_EMARC4_STR-MINLS sy-vline
WA_EMARC4_STR-MAXLS sy-vline
WA_EMARC4_STR-FIXLS sy-vline
WA_EMARC4_STR-LTINC sy-vline
WA_EMARC4_STR-COMPL sy-vline
WA_EMARC4_STR-CONVT sy-vline
WA_EMARC4_STR-SHPRO sy-vline
WA_EMARC4_STR-AHDIS sy-vline
WA_EMARC4_STR-DIBER sy-vline
WA_EMARC4_STR-KZPSP sy-vline
WA_EMARC4_STR-OCMPF sy-vline
WA_EMARC4_STR-APOKZ sy-vline
WA_EMARC4_STR-MCRUE sy-vline
WA_EMARC4_STR-LFMON sy-vline
WA_EMARC4_STR-LFGJA sy-vline
WA_EMARC4_STR-EISLO sy-vline
WA_EMARC4_STR-NCOST sy-vline
WA_EMARC4_STR-ROTATION_DATE sy-vline
WA_EMARC4_STR-UCHKZ sy-vline
WA_EMARC4_STR-UCMAT sy-vline
WA_EMARC4_STR-EXCISE_TAX_RLVNCE sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.