ABAP Select data from SAP table V399D 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 V399D 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 V399D. 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 V399D 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_V399D TYPE STANDARD TABLE OF V399D,
      WA_V399D TYPE V399D,
      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: <V399D> TYPE V399D.

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

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

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM V399D
*  INTO TABLE @DATA(IT_V399D2).
*--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_V399D INDEX 1 INTO DATA(WA_V399D2).


*Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL
LOOP AT IT_V399D ASSIGNING <V399D>.
*To update a field value using a field symbol simply change the value via the field symbol pointer
<V399D>-MANDT = 1.
<V399D>-WERKS = 1.
<V399D>-FIXPA = 1.
<V399D>-FIXBA = 1.
<V399D>-FIXBE = 1.
ENDLOOP.

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

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_V399D-UMTHZ, sy-vline,
WA_V399D-VWVOR, sy-vline,
WA_V399D-VWVER, sy-vline,
WA_V399D-PLAHZ, sy-vline,
WA_V399D-NKPAF, sy-vline,
WA_V399D-NKBAN, sy-vline.
ENDLOOP. *Add any further fields from structure WA_V399D 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_V399D 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_V399D INTO WA_V399D. *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_V399D_STR,
MANDT TYPE STRING,
WERKS TYPE STRING,
FIXPA TYPE STRING,
FIXBA TYPE STRING,
FIXBE TYPE STRING,
UMTHZ TYPE STRING,
VWVOR TYPE STRING,
VWVER TYPE STRING,
PLAHZ TYPE STRING,
NKPAF TYPE STRING,
NKBAN TYPE STRING,
PSBAN TYPE STRING,
NKDIS TYPE STRING,
NKRES TYPE STRING,
PSRES TYPE STRING,
BZTEK TYPE STRING,
EREKG TYPE STRING,
ERDSG TYPE STRING,
MXBST TYPE STRING,
MXPLA TYPE STRING,
ANZLS TYPE STRING,
MXSTA TYPE STRING,
NKCRQ TYPE STRING,END OF T_EKKO_STR. DATA: WA_V399D_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_V399D_STR-MANDT sy-vline
WA_V399D_STR-WERKS sy-vline
WA_V399D_STR-FIXPA sy-vline
WA_V399D_STR-FIXBA sy-vline
WA_V399D_STR-FIXBE sy-vline
WA_V399D_STR-UMTHZ sy-vline
WA_V399D_STR-VWVOR sy-vline
WA_V399D_STR-VWVER sy-vline
WA_V399D_STR-PLAHZ sy-vline
WA_V399D_STR-NKPAF sy-vline
WA_V399D_STR-NKBAN sy-vline
WA_V399D_STR-PSBAN sy-vline
WA_V399D_STR-NKDIS sy-vline
WA_V399D_STR-NKRES sy-vline
WA_V399D_STR-PSRES sy-vline
WA_V399D_STR-BZTEK sy-vline
WA_V399D_STR-EREKG sy-vline
WA_V399D_STR-ERDSG sy-vline
WA_V399D_STR-MXBST sy-vline
WA_V399D_STR-MXPLA sy-vline
WA_V399D_STR-ANZLS sy-vline
WA_V399D_STR-MXSTA sy-vline
WA_V399D_STR-NKCRQ sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.