ABAP Select data from SAP table PS0977 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 PS0977 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 PS0977. 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 PS0977 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_PS0977 TYPE STANDARD TABLE OF PS0977, WA_PS0977 TYPE PS0977, 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: <PS0977> TYPE PS0977. *Process all fields in table header/work area as string values PERFORM process_as_string_field_values CHANGING wa_PS0977. SELECT * *restrict ABAP select to first 10 rows UP TO 10 ROWS FROM PS0977 INTO TABLE IT_PS0977. *Select data and declare internal table using in-line method @DATA *SELECT * * FROM PS0977 * INTO TABLE @DATA(IT_PS09772). *--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_PS0977 INDEX 1 INTO DATA(WA_PS09772). *Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL LOOP AT IT_PS0977 ASSIGNING <PS0977>.*To update a field value using a field symbol simply change the value via the field symbol pointer
<PS0977>-CURRENCY = 1.
<PS0977>-FORMTYPE = 1.
<PS0977>-FORMSTATUS = 1.
<PS0977>-HRLY_SAL_HRS_WK = 1.
<PS0977>-HRLY_SAL_LST_AMT = 1.
ENDLOOP. LOOP AT IT_PS0977 INTO WA_PS0977. *Write horizonal line to screen report. WRITE:/ sy-uline. *Write selected data to screen/report before conversion. WRITE:/ sy-vline, WA_PS0977-MON_SAL_LAST_BR, sy-vline,
WA_PS0977-OTHR_SAL_4W_AMT, sy-vline,
WA_PS0977-NAT_SAL_AMT, sy-vline,
WA_PS0977-NAT_SAL_UNIT, sy-vline,
WA_PS0977-REM_SAL_AMT, sy-vline,
WA_PS0977-REM_SAL_UNIT, sy-vline.
ENDLOOP. *Add any further fields from structure WA_PS0977 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_PS0977 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_PS0977 INTO WA_PS0977. *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_PS0977-LWAGE_YEAR01 IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_PS0977-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_PS0977-LWAGE_YEAR02 IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_PS0977-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_PS0977-LWAGE_YEAR03 IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_PS0977-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_PS0977-LWAGE_YEAR04 IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_PS0977-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_PS0977-LWAGE_YEAR05 IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_PS0977-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_PS0977-LWAGE_YEAR06 IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_PS0977-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_PS0977-LWAGE_YEAR07 IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_PS0977-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_PS0977-LWAGE_YEAR08 IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_PS0977-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_PS0977-LWAGE_YEAR09 IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_PS0977-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_PS0977-LWAGE_YEAR10 IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_PS0977-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_PS0977-LWAGE_YEAR11 IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_PS0977-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_PS0977-LWAGE_YEAR12 IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_PS0977-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_PS0977_STR,
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_PS0977_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_PS0977_STR-CURRENCY sy-vline
WA_PS0977_STR-FORMTYPE sy-vline
WA_PS0977_STR-FORMSTATUS sy-vline
WA_PS0977_STR-HRLY_SAL_HRS_WK sy-vline
WA_PS0977_STR-HRLY_SAL_LST_AMT sy-vline
WA_PS0977_STR-MON_SAL_LAST_BR sy-vline
WA_PS0977_STR-OTHR_SAL_4W_AMT sy-vline
WA_PS0977_STR-NAT_SAL_AMT sy-vline
WA_PS0977_STR-NAT_SAL_UNIT sy-vline
WA_PS0977_STR-REM_SAL_AMT sy-vline
WA_PS0977_STR-REM_SAL_UNIT sy-vline
WA_PS0977_STR-CONTRACT_BEGDA sy-vline
WA_PS0977_STR-CONTRACT_ENDDA sy-vline
WA_PS0977_STR-PAYMENT_RATE sy-vline
WA_PS0977_STR-PAYMENT_BEGDA sy-vline
WA_PS0977_STR-PAYMENT_ENDDA sy-vline
WA_PS0977_STR-WTAX_IS_LIABLE sy-vline
WA_PS0977_STR-LWAGE_MONTH01 sy-vline
WA_PS0977_STR-LWAGE_YEAR01 sy-vline
WA_PS0977_STR-LWAGE_AMT01 sy-vline
WA_PS0977_STR-LWAGE_MONTH02 sy-vline
WA_PS0977_STR-LWAGE_YEAR02 sy-vline
WA_PS0977_STR-LWAGE_AMT02 sy-vline
WA_PS0977_STR-LWAGE_MONTH03 sy-vline
WA_PS0977_STR-LWAGE_YEAR03 sy-vline
WA_PS0977_STR-LWAGE_AMT03 sy-vline
WA_PS0977_STR-LWAGE_MONTH04 sy-vline
WA_PS0977_STR-LWAGE_YEAR04 sy-vline
WA_PS0977_STR-LWAGE_AMT04 sy-vline
WA_PS0977_STR-LWAGE_MONTH05 sy-vline
WA_PS0977_STR-LWAGE_YEAR05 sy-vline
WA_PS0977_STR-LWAGE_AMT05 sy-vline
WA_PS0977_STR-LWAGE_MONTH06 sy-vline
WA_PS0977_STR-LWAGE_YEAR06 sy-vline
WA_PS0977_STR-LWAGE_AMT06 sy-vline
WA_PS0977_STR-LWAGE_MONTH07 sy-vline
WA_PS0977_STR-LWAGE_YEAR07 sy-vline
WA_PS0977_STR-LWAGE_AMT07 sy-vline
WA_PS0977_STR-LWAGE_MONTH08 sy-vline
WA_PS0977_STR-LWAGE_YEAR08 sy-vline
WA_PS0977_STR-LWAGE_AMT08 sy-vline
WA_PS0977_STR-LWAGE_MONTH09 sy-vline
WA_PS0977_STR-LWAGE_YEAR09 sy-vline
WA_PS0977_STR-LWAGE_AMT09 sy-vline
WA_PS0977_STR-LWAGE_MONTH10 sy-vline
WA_PS0977_STR-LWAGE_YEAR10 sy-vline
WA_PS0977_STR-LWAGE_AMT10 sy-vline
WA_PS0977_STR-LWAGE_MONTH11 sy-vline
WA_PS0977_STR-LWAGE_YEAR11 sy-vline
WA_PS0977_STR-LWAGE_AMT11 sy-vline
WA_PS0977_STR-LWAGE_MONTH12 sy-vline
WA_PS0977_STR-LWAGE_YEAR12 sy-vline
WA_PS0977_STR-LWAGE_AMT12 sy-vline
WA_PS0977_STR-ABSENCE_FROM_01 sy-vline
WA_PS0977_STR-ABSENCE_TO_01 sy-vline
WA_PS0977_STR-ABSENCE_TYPE_01 sy-vline
WA_PS0977_STR-ABSENCE_FROM_02 sy-vline
WA_PS0977_STR-ABSENCE_TO_02 sy-vline
WA_PS0977_STR-ABSENCE_TYPE_02 sy-vline
WA_PS0977_STR-ABSENCE_FROM_03 sy-vline
WA_PS0977_STR-ABSENCE_TO_03 sy-vline
WA_PS0977_STR-ABSENCE_TYPE_03 sy-vline
WA_PS0977_STR-ABSENCE_FROM_04 sy-vline
WA_PS0977_STR-ABSENCE_TO_04 sy-vline
WA_PS0977_STR-ABSENCE_TYPE_04 sy-vline
WA_PS0977_STR-ABSENCE_FROM_05 sy-vline
WA_PS0977_STR-ABSENCE_TO_05 sy-vline
WA_PS0977_STR-ABSENCE_TYPE_05 sy-vline
WA_PS0977_STR-ABSENCE_FROM_06 sy-vline
WA_PS0977_STR-ABSENCE_TO_06 sy-vline
WA_PS0977_STR-ABSENCE_TYPE_06 sy-vline
WA_PS0977_STR-ABSENCE_FROM_07 sy-vline
WA_PS0977_STR-ABSENCE_TO_07 sy-vline
WA_PS0977_STR-ABSENCE_TYPE_07 sy-vline
WA_PS0977_STR-ABSENCE_FROM_08 sy-vline
WA_PS0977_STR-ABSENCE_TO_08 sy-vline
WA_PS0977_STR-ABSENCE_TYPE_08 sy-vline
WA_PS0977_STR-ABSENCE_FROM_09 sy-vline
WA_PS0977_STR-ABSENCE_TO_09 sy-vline
WA_PS0977_STR-ABSENCE_TYPE_09 sy-vline
WA_PS0977_STR-ABSENCE_FROM_10 sy-vline
WA_PS0977_STR-ABSENCE_TO_10 sy-vline
WA_PS0977_STR-ABSENCE_TYPE_10 sy-vline
WA_PS0977_STR-ABSENCE_FROM_11 sy-vline
WA_PS0977_STR-ABSENCE_TO_11 sy-vline
WA_PS0977_STR-ABSENCE_TYPE_11 sy-vline
WA_PS0977_STR-ABSENCE_FROM_12 sy-vline
WA_PS0977_STR-ABSENCE_TO_12 sy-vline
WA_PS0977_STR-ABSENCE_TYPE_12 sy-vline
WA_PS0977_STR-PAYMENT_AMT sy-vline
WA_PS0977_STR-KTG_UTG_YES sy-vline
WA_PS0977_STR-KTG_UTG_NO sy-vline
WA_PS0977_STR-KTG_UTG_INSURER sy-vline
WA_PS0977_STR-WP_CANTON sy-vline
WA_PS0977_STR-LANGUAGE sy-vline
WA_PS0977_STR-MONTH13 sy-vline
WA_PS0977_STR-INTERIMSTA sy-vline
WA_PS0977_STR-RMCFORWARD sy-vline
WA_PS0977_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.