ABAP Select data from SAP table PINPEW16 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 PINPEW16 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 PINPEW16. 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 PINPEW16 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_PINPEW16 TYPE STANDARD TABLE OF PINPEW16,
      WA_PINPEW16 TYPE PINPEW16,
      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: <PINPEW16> TYPE PINPEW16.

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

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

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM PINPEW16
*  INTO TABLE @DATA(IT_PINPEW162).
*--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_PINPEW16 INDEX 1 INTO DATA(WA_PINPEW162).


*Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL
LOOP AT IT_PINPEW16 ASSIGNING <PINPEW16>.
*To update a field value using a field symbol simply change the value via the field symbol pointer
<PINPEW16>-DPAG1 = 1.
<PINPEW16>-DPAG2 = 1.
<PINPEW16>-DPAG3 = 1.
<PINPEW16>-DPAG4 = 1.
<PINPEW16>-DPAG5 = 1.
ENDLOOP.

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

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_PINPEW16-DPAG6, sy-vline,
WA_PINPEW16-DPAG7, sy-vline,
WA_PINPEW16-DPAG8, sy-vline,
WA_PINPEW16-DPAG9, sy-vline,
WA_PINPEW16-DPAG10, sy-vline,
WA_PINPEW16-DPAG11, sy-vline.
ENDLOOP. *Add any further fields from structure WA_PINPEW16 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_PINPEW16 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_PINPEW16 INTO WA_PINPEW16. *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_PINPEW16_STR,
DPAG1 TYPE STRING,
DPAG2 TYPE STRING,
DPAG3 TYPE STRING,
DPAG4 TYPE STRING,
DPAG5 TYPE STRING,
DPAG6 TYPE STRING,
DPAG7 TYPE STRING,
DPAG8 TYPE STRING,
DPAG9 TYPE STRING,
DPAG10 TYPE STRING,
DPAG11 TYPE STRING,
DPAG12 TYPE STRING,
DPAG13 TYPE STRING,
DPAG14 TYPE STRING,
DPAG15 TYPE STRING,
DPAG16 TYPE STRING,
DPAG17 TYPE STRING,
DPAG18 TYPE STRING,
DPAG19 TYPE STRING,
DPAG20 TYPE STRING,END OF T_EKKO_STR. DATA: WA_PINPEW16_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_PINPEW16_STR-DPAG1 sy-vline
WA_PINPEW16_STR-DPAG2 sy-vline
WA_PINPEW16_STR-DPAG3 sy-vline
WA_PINPEW16_STR-DPAG4 sy-vline
WA_PINPEW16_STR-DPAG5 sy-vline
WA_PINPEW16_STR-DPAG6 sy-vline
WA_PINPEW16_STR-DPAG7 sy-vline
WA_PINPEW16_STR-DPAG8 sy-vline
WA_PINPEW16_STR-DPAG9 sy-vline
WA_PINPEW16_STR-DPAG10 sy-vline
WA_PINPEW16_STR-DPAG11 sy-vline
WA_PINPEW16_STR-DPAG12 sy-vline
WA_PINPEW16_STR-DPAG13 sy-vline
WA_PINPEW16_STR-DPAG14 sy-vline
WA_PINPEW16_STR-DPAG15 sy-vline
WA_PINPEW16_STR-DPAG16 sy-vline
WA_PINPEW16_STR-DPAG17 sy-vline
WA_PINPEW16_STR-DPAG18 sy-vline
WA_PINPEW16_STR-DPAG19 sy-vline
WA_PINPEW16_STR-DPAG20 sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.