ABAP Select data from SAP table PA0977 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 PA0977 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 PA0977. 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 PA0977 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_PA0977 TYPE STANDARD TABLE OF PA0977,
      WA_PA0977 TYPE PA0977,
      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: <PA0977> TYPE PA0977.

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

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

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM PA0977
*  INTO TABLE @DATA(IT_PA09772).
*--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_PA0977 INDEX 1 INTO DATA(WA_PA09772).


*Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL
LOOP AT IT_PA0977 ASSIGNING <PA0977>.
*To update a field value using a field symbol simply change the value via the field symbol pointer
<PA0977>-MANDT = 1.
<PA0977>-PERNR = 1.
<PA0977>-SUBTY = 1.
<PA0977>-OBJPS = 1.
<PA0977>-SPRPS = 1.
ENDLOOP.

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

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_PA0977-ENDDA, sy-vline,
WA_PA0977-BEGDA, sy-vline,
WA_PA0977-SEQNR, sy-vline,
WA_PA0977-AEDTM, sy-vline,
WA_PA0977-UNAME, sy-vline,
WA_PA0977-HISTO, sy-vline.
ENDLOOP. *Add any further fields from structure WA_PA0977 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_PA0977 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_PA0977 INTO WA_PA0977. *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 GJAHR, internal->external for field LWAGE_YEAR01 CALL FUNCTION 'CONVERSION_EXIT_GJAHR_OUTPUT' EXPORTING input = WA_PA0977-LWAGE_YEAR01 IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_PA0977-LWAGE_YEAR01.
WRITE:/ 'New Value:', ld_input.

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

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

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

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

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

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

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

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

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

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

*Conversion exit GJAHR, internal->external for field LWAGE_YEAR12 CALL FUNCTION 'CONVERSION_EXIT_GJAHR_OUTPUT' EXPORTING input = WA_PA0977-LWAGE_YEAR12 IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_PA0977-LWAGE_YEAR12.
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_PA0977_STR,
MANDT TYPE STRING,
PERNR TYPE STRING,
SUBTY TYPE STRING,
OBJPS TYPE STRING,
SPRPS TYPE STRING,
ENDDA TYPE STRING,
BEGDA TYPE STRING,
SEQNR TYPE STRING,
AEDTM TYPE STRING,
UNAME TYPE STRING,
HISTO TYPE STRING,
ITXEX TYPE STRING,
REFEX TYPE STRING,
ORDEX TYPE STRING,
ITBLD TYPE STRING,
PREAS TYPE STRING,
FLAG1 TYPE STRING,
FLAG2 TYPE STRING,
FLAG3 TYPE STRING,
FLAG4 TYPE STRING,
RESE1 TYPE STRING,
RESE2 TYPE STRING,
GRPVL TYPE STRING,
CURRENCY TYPE STRING,
FORMTYPE TYPE STRING,
FORMSTATUS TYPE STRING,
HRLY_SAL_HRS_WK TYPE STRING,
HRLY_SAL_LST_AMT TYPE STRING,
MON_SAL_LAST_BR TYPE STRING,
OTHR_SAL_4W_AMT TYPE STRING,
NAT_SAL_AMT TYPE STRING,
NAT_SAL_UNIT TYPE STRING,
REM_SAL_AMT TYPE STRING,
REM_SAL_UNIT TYPE STRING,
CONTRACT_BEGDA TYPE STRING,
CONTRACT_ENDDA TYPE STRING,
PAYMENT_RATE TYPE STRING,
PAYMENT_BEGDA TYPE STRING,
PAYMENT_ENDDA TYPE STRING,
WTAX_IS_LIABLE TYPE STRING,
LWAGE_MONTH01 TYPE STRING,
LWAGE_YEAR01 TYPE STRING,
LWAGE_AMT01 TYPE STRING,
LWAGE_MONTH02 TYPE STRING,
LWAGE_YEAR02 TYPE STRING,
LWAGE_AMT02 TYPE STRING,
LWAGE_MONTH03 TYPE STRING,
LWAGE_YEAR03 TYPE STRING,
LWAGE_AMT03 TYPE STRING,
LWAGE_MONTH04 TYPE STRING,
LWAGE_YEAR04 TYPE STRING,
LWAGE_AMT04 TYPE STRING,
LWAGE_MONTH05 TYPE STRING,
LWAGE_YEAR05 TYPE STRING,
LWAGE_AMT05 TYPE STRING,
LWAGE_MONTH06 TYPE STRING,
LWAGE_YEAR06 TYPE STRING,
LWAGE_AMT06 TYPE STRING,
LWAGE_MONTH07 TYPE STRING,
LWAGE_YEAR07 TYPE STRING,
LWAGE_AMT07 TYPE STRING,
LWAGE_MONTH08 TYPE STRING,
LWAGE_YEAR08 TYPE STRING,
LWAGE_AMT08 TYPE STRING,
LWAGE_MONTH09 TYPE STRING,
LWAGE_YEAR09 TYPE STRING,
LWAGE_AMT09 TYPE STRING,
LWAGE_MONTH10 TYPE STRING,
LWAGE_YEAR10 TYPE STRING,
LWAGE_AMT10 TYPE STRING,
LWAGE_MONTH11 TYPE STRING,
LWAGE_YEAR11 TYPE STRING,
LWAGE_AMT11 TYPE STRING,
LWAGE_MONTH12 TYPE STRING,
LWAGE_YEAR12 TYPE STRING,
LWAGE_AMT12 TYPE STRING,
ABSENCE_FROM_01 TYPE STRING,
ABSENCE_TO_01 TYPE STRING,
ABSENCE_TYPE_01 TYPE STRING,
ABSENCE_FROM_02 TYPE STRING,
ABSENCE_TO_02 TYPE STRING,
ABSENCE_TYPE_02 TYPE STRING,
ABSENCE_FROM_03 TYPE STRING,
ABSENCE_TO_03 TYPE STRING,
ABSENCE_TYPE_03 TYPE STRING,
ABSENCE_FROM_04 TYPE STRING,
ABSENCE_TO_04 TYPE STRING,
ABSENCE_TYPE_04 TYPE STRING,
ABSENCE_FROM_05 TYPE STRING,
ABSENCE_TO_05 TYPE STRING,
ABSENCE_TYPE_05 TYPE STRING,
ABSENCE_FROM_06 TYPE STRING,
ABSENCE_TO_06 TYPE STRING,
ABSENCE_TYPE_06 TYPE STRING,
ABSENCE_FROM_07 TYPE STRING,
ABSENCE_TO_07 TYPE STRING,
ABSENCE_TYPE_07 TYPE STRING,
ABSENCE_FROM_08 TYPE STRING,
ABSENCE_TO_08 TYPE STRING,
ABSENCE_TYPE_08 TYPE STRING,
ABSENCE_FROM_09 TYPE STRING,
ABSENCE_TO_09 TYPE STRING,
ABSENCE_TYPE_09 TYPE STRING,
ABSENCE_FROM_10 TYPE STRING,
ABSENCE_TO_10 TYPE STRING,
ABSENCE_TYPE_10 TYPE STRING,
ABSENCE_FROM_11 TYPE STRING,
ABSENCE_TO_11 TYPE STRING,
ABSENCE_TYPE_11 TYPE STRING,
ABSENCE_FROM_12 TYPE STRING,
ABSENCE_TO_12 TYPE STRING,
ABSENCE_TYPE_12 TYPE STRING,
PAYMENT_AMT TYPE STRING,
KTG_UTG_YES TYPE STRING,
KTG_UTG_NO TYPE STRING,
KTG_UTG_INSURER TYPE STRING,
WP_CANTON TYPE STRING,
LANGUAGE TYPE STRING,
MONTH13 TYPE STRING,
INTERIMSTA TYPE STRING,
RMCFORWARD TYPE STRING,
STATUS TYPE STRING,END OF T_EKKO_STR. DATA: WA_PA0977_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_PA0977_STR-MANDT sy-vline
WA_PA0977_STR-PERNR sy-vline
WA_PA0977_STR-SUBTY sy-vline
WA_PA0977_STR-OBJPS sy-vline
WA_PA0977_STR-SPRPS sy-vline
WA_PA0977_STR-ENDDA sy-vline
WA_PA0977_STR-BEGDA sy-vline
WA_PA0977_STR-SEQNR sy-vline
WA_PA0977_STR-AEDTM sy-vline
WA_PA0977_STR-UNAME sy-vline
WA_PA0977_STR-HISTO sy-vline
WA_PA0977_STR-ITXEX sy-vline
WA_PA0977_STR-REFEX sy-vline
WA_PA0977_STR-ORDEX sy-vline
WA_PA0977_STR-ITBLD sy-vline
WA_PA0977_STR-PREAS sy-vline
WA_PA0977_STR-FLAG1 sy-vline
WA_PA0977_STR-FLAG2 sy-vline
WA_PA0977_STR-FLAG3 sy-vline
WA_PA0977_STR-FLAG4 sy-vline
WA_PA0977_STR-RESE1 sy-vline
WA_PA0977_STR-RESE2 sy-vline
WA_PA0977_STR-GRPVL sy-vline
WA_PA0977_STR-CURRENCY sy-vline
WA_PA0977_STR-FORMTYPE sy-vline
WA_PA0977_STR-FORMSTATUS sy-vline
WA_PA0977_STR-HRLY_SAL_HRS_WK sy-vline
WA_PA0977_STR-HRLY_SAL_LST_AMT sy-vline
WA_PA0977_STR-MON_SAL_LAST_BR sy-vline
WA_PA0977_STR-OTHR_SAL_4W_AMT sy-vline
WA_PA0977_STR-NAT_SAL_AMT sy-vline
WA_PA0977_STR-NAT_SAL_UNIT sy-vline
WA_PA0977_STR-REM_SAL_AMT sy-vline
WA_PA0977_STR-REM_SAL_UNIT sy-vline
WA_PA0977_STR-CONTRACT_BEGDA sy-vline
WA_PA0977_STR-CONTRACT_ENDDA sy-vline
WA_PA0977_STR-PAYMENT_RATE sy-vline
WA_PA0977_STR-PAYMENT_BEGDA sy-vline
WA_PA0977_STR-PAYMENT_ENDDA sy-vline
WA_PA0977_STR-WTAX_IS_LIABLE sy-vline
WA_PA0977_STR-LWAGE_MONTH01 sy-vline
WA_PA0977_STR-LWAGE_YEAR01 sy-vline
WA_PA0977_STR-LWAGE_AMT01 sy-vline
WA_PA0977_STR-LWAGE_MONTH02 sy-vline
WA_PA0977_STR-LWAGE_YEAR02 sy-vline
WA_PA0977_STR-LWAGE_AMT02 sy-vline
WA_PA0977_STR-LWAGE_MONTH03 sy-vline
WA_PA0977_STR-LWAGE_YEAR03 sy-vline
WA_PA0977_STR-LWAGE_AMT03 sy-vline
WA_PA0977_STR-LWAGE_MONTH04 sy-vline
WA_PA0977_STR-LWAGE_YEAR04 sy-vline
WA_PA0977_STR-LWAGE_AMT04 sy-vline
WA_PA0977_STR-LWAGE_MONTH05 sy-vline
WA_PA0977_STR-LWAGE_YEAR05 sy-vline
WA_PA0977_STR-LWAGE_AMT05 sy-vline
WA_PA0977_STR-LWAGE_MONTH06 sy-vline
WA_PA0977_STR-LWAGE_YEAR06 sy-vline
WA_PA0977_STR-LWAGE_AMT06 sy-vline
WA_PA0977_STR-LWAGE_MONTH07 sy-vline
WA_PA0977_STR-LWAGE_YEAR07 sy-vline
WA_PA0977_STR-LWAGE_AMT07 sy-vline
WA_PA0977_STR-LWAGE_MONTH08 sy-vline
WA_PA0977_STR-LWAGE_YEAR08 sy-vline
WA_PA0977_STR-LWAGE_AMT08 sy-vline
WA_PA0977_STR-LWAGE_MONTH09 sy-vline
WA_PA0977_STR-LWAGE_YEAR09 sy-vline
WA_PA0977_STR-LWAGE_AMT09 sy-vline
WA_PA0977_STR-LWAGE_MONTH10 sy-vline
WA_PA0977_STR-LWAGE_YEAR10 sy-vline
WA_PA0977_STR-LWAGE_AMT10 sy-vline
WA_PA0977_STR-LWAGE_MONTH11 sy-vline
WA_PA0977_STR-LWAGE_YEAR11 sy-vline
WA_PA0977_STR-LWAGE_AMT11 sy-vline
WA_PA0977_STR-LWAGE_MONTH12 sy-vline
WA_PA0977_STR-LWAGE_YEAR12 sy-vline
WA_PA0977_STR-LWAGE_AMT12 sy-vline
WA_PA0977_STR-ABSENCE_FROM_01 sy-vline
WA_PA0977_STR-ABSENCE_TO_01 sy-vline
WA_PA0977_STR-ABSENCE_TYPE_01 sy-vline
WA_PA0977_STR-ABSENCE_FROM_02 sy-vline
WA_PA0977_STR-ABSENCE_TO_02 sy-vline
WA_PA0977_STR-ABSENCE_TYPE_02 sy-vline
WA_PA0977_STR-ABSENCE_FROM_03 sy-vline
WA_PA0977_STR-ABSENCE_TO_03 sy-vline
WA_PA0977_STR-ABSENCE_TYPE_03 sy-vline
WA_PA0977_STR-ABSENCE_FROM_04 sy-vline
WA_PA0977_STR-ABSENCE_TO_04 sy-vline
WA_PA0977_STR-ABSENCE_TYPE_04 sy-vline
WA_PA0977_STR-ABSENCE_FROM_05 sy-vline
WA_PA0977_STR-ABSENCE_TO_05 sy-vline
WA_PA0977_STR-ABSENCE_TYPE_05 sy-vline
WA_PA0977_STR-ABSENCE_FROM_06 sy-vline
WA_PA0977_STR-ABSENCE_TO_06 sy-vline
WA_PA0977_STR-ABSENCE_TYPE_06 sy-vline
WA_PA0977_STR-ABSENCE_FROM_07 sy-vline
WA_PA0977_STR-ABSENCE_TO_07 sy-vline
WA_PA0977_STR-ABSENCE_TYPE_07 sy-vline
WA_PA0977_STR-ABSENCE_FROM_08 sy-vline
WA_PA0977_STR-ABSENCE_TO_08 sy-vline
WA_PA0977_STR-ABSENCE_TYPE_08 sy-vline
WA_PA0977_STR-ABSENCE_FROM_09 sy-vline
WA_PA0977_STR-ABSENCE_TO_09 sy-vline
WA_PA0977_STR-ABSENCE_TYPE_09 sy-vline
WA_PA0977_STR-ABSENCE_FROM_10 sy-vline
WA_PA0977_STR-ABSENCE_TO_10 sy-vline
WA_PA0977_STR-ABSENCE_TYPE_10 sy-vline
WA_PA0977_STR-ABSENCE_FROM_11 sy-vline
WA_PA0977_STR-ABSENCE_TO_11 sy-vline
WA_PA0977_STR-ABSENCE_TYPE_11 sy-vline
WA_PA0977_STR-ABSENCE_FROM_12 sy-vline
WA_PA0977_STR-ABSENCE_TO_12 sy-vline
WA_PA0977_STR-ABSENCE_TYPE_12 sy-vline
WA_PA0977_STR-PAYMENT_AMT sy-vline
WA_PA0977_STR-KTG_UTG_YES sy-vline
WA_PA0977_STR-KTG_UTG_NO sy-vline
WA_PA0977_STR-KTG_UTG_INSURER sy-vline
WA_PA0977_STR-WP_CANTON sy-vline
WA_PA0977_STR-LANGUAGE sy-vline
WA_PA0977_STR-MONTH13 sy-vline
WA_PA0977_STR-INTERIMSTA sy-vline
WA_PA0977_STR-RMCFORWARD sy-vline
WA_PA0977_STR-STATUS sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.