ABAP Select data from SAP table HRCUSCL_TAX 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 HRCUSCL_TAX 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 HRCUSCL_TAX. 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 HRCUSCL_TAX 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_HRCUSCL_TAX TYPE STANDARD TABLE OF HRCUSCL_TAX,
      WA_HRCUSCL_TAX TYPE HRCUSCL_TAX,
      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: <HRCUSCL_TAX> TYPE HRCUSCL_TAX.

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

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

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM HRCUSCL_TAX
*  INTO TABLE @DATA(IT_HRCUSCL_TAX2).
*--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_HRCUSCL_TAX INDEX 1 INTO DATA(WA_HRCUSCL_TAX2).


*Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL
LOOP AT IT_HRCUSCL_TAX ASSIGNING <HRCUSCL_TAX>.
*To update a field value using a field symbol simply change the value via the field symbol pointer
<HRCUSCL_TAX>-CONTROLLER = 1.
<HRCUSCL_TAX>-ACTUAL_YTD_WAGES = 1.
<HRCUSCL_TAX>-ADDITIONAL_AMOUNT = 1.
<HRCUSCL_TAX>-ADDITIONAL_EXEMPTION_AMOUNT = 1.
<HRCUSCL_TAX>-ADDITIONAL_EXEMPTIONS = 1.
ENDLOOP.

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

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_HRCUSCL_TAX-ADDITIONAL_TAX_CODE, sy-vline,
WA_HRCUSCL_TAX-ADDITIONAL_TAX_RATE, sy-vline,
WA_HRCUSCL_TAX-AGGREGATION_INDICATOR, sy-vline,
WA_HRCUSCL_TAX-ALTERNATE_AGGREGATION_LIMIT, sy-vline,
WA_HRCUSCL_TAX-AUTHORITY_CODE, sy-vline,
WA_HRCUSCL_TAX-BASE_WAGES, sy-vline.
ENDLOOP. *Add any further fields from structure WA_HRCUSCL_TAX 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_HRCUSCL_TAX 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_HRCUSCL_TAX INTO WA_HRCUSCL_TAX. *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_HRCUSCL_TAX_STR,
CONTROLLER TYPE STRING,
ACTUAL_YTD_WAGES TYPE STRING,
ADDITIONAL_AMOUNT TYPE STRING,
ADDITIONAL_EXEMPTION_AMOUNT TYPE STRING,
ADDITIONAL_EXEMPTIONS TYPE STRING,
ADDITIONAL_TAX_CODE TYPE STRING,
ADDITIONAL_TAX_RATE TYPE STRING,
AGGREGATION_INDICATOR TYPE STRING,
ALTERNATE_AGGREGATION_LIMIT TYPE STRING,
AUTHORITY_CODE TYPE STRING,
BASE_WAGES TYPE STRING,
CRSVD0 TYPE STRING,
CRSVD1 TYPE STRING,
CALCULATED_TAX TYPE STRING,
CALCULATION_STATUS TYPE STRING,
CERTIFICATE_CODE TYPE STRING,
DRSVD0 TYPE STRING,
DRSVD1 TYPE STRING,
DEPENDENT_EXEMPTIONS TYPE STRING,
EICSTATUS_INDICATOR TYPE STRING,
ELECTED_STATE_IND TYPE STRING,
EXPERIENCE_RATE TYPE STRING,
FORMULA_NUMBER TYPE STRING,
HRSVD0 TYPE STRING,
HRSVD1 TYPE STRING,
HOURS_WORKED TYPE STRING,
INPUT_TOTAL_NON_TAXABLE_EMPLOY TYPE STRING,
INPUT_TOTAL_TAXABLE_EARNINGS TYPE STRING,
INPUT_TOTAL_TAXABLE_EMPLOYER_C TYPE STRING,
MARITAL_STATUS_INDICATOR TYPE STRING,
MAXIMUM_WAGE_OVERRIDE TYPE STRING,
MTD_TAX TYPE STRING,
MTD_WAGES TYPE STRING,
NXINDICATOR TYPE STRING,
NON_TAXABLE_WAGES TYPE STRING,
NUMBER_OF_PAYMENT_ENTRIES TYPE STRING,
OUTPUT_TOTAL_NON_TAXABLE_EMPLO TYPE STRING,
OUTPUT_TOTAL_TAXABLE_EARNINGS TYPE STRING,
OUTPUT_TOTAL_TAXABLE_EMPLOYER TYPE STRING,
PAY_PERIOD_TAX TYPE STRING,
PAY_PERIOD_WAGES TYPE STRING,
PERCENT_WORKED TYPE STRING,
PERSONAL_EXEMPTIONS TYPE STRING,
PRIOR_COMMISSIONS TYPE STRING,
QTD_TAX TYPE STRING,
QTD_WAGES TYPE STRING,
RRSVD0 TYPE STRING,
RRSVD1 TYPE STRING,
RECIP_FORMULA TYPE STRING,
RECIPROCAL_PARTICIPATION TYPE STRING,
RECIPROCAL_TAX_CREDIT_AMOUNT TYPE STRING,
REGULAR_EXEMPTION_AMOUNT TYPE STRING,
REGULAR_EXEMPTIONS TYPE STRING,
REPORTABLE_TAX TYPE STRING,
REPORTABLE_WAGES TYPE STRING,
RESIDENT_CODE TYPE STRING,
ROUNDING_INDICATOR TYPE STRING,
SRSVD0 TYPE STRING,
SRSVD1 TYPE STRING,
SELF_ADJUST_TAX TYPE STRING,
SUBJECT_WAGES TYPE STRING,
SUPPLEMENTAL_CODE TYPE STRING,
TAX_EXEMPTION_INDICATOR TYPE STRING,
TAX_RATE TYPE STRING,
TAX_TYPE TYPE STRING,
TAXABLE_HOURS TYPE STRING,
TAXABLE_WAGES TYPE STRING,
TOTAL_EXEMPTION_VALUE TYPE STRING,
TOTAL_TAXABLE_WAGES TYPE STRING,
USER_TAX_TYPE TYPE STRING,
WAGES TYPE STRING,
YTD_OPT_PWS TYPE STRING,
YTD_SUBJECT_WAGES TYPE STRING,
YTD_SUPPL TYPE STRING,
YTD_TAX TYPE STRING,
YTD_TAX_PWS TYPE STRING,
YTD_WAGES TYPE STRING,END OF T_EKKO_STR. DATA: WA_HRCUSCL_TAX_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_HRCUSCL_TAX_STR-CONTROLLER sy-vline
WA_HRCUSCL_TAX_STR-ACTUAL_YTD_WAGES sy-vline
WA_HRCUSCL_TAX_STR-ADDITIONAL_AMOUNT sy-vline
WA_HRCUSCL_TAX_STR-ADDITIONAL_EXEMPTION_AMOUNT sy-vline
WA_HRCUSCL_TAX_STR-ADDITIONAL_EXEMPTIONS sy-vline
WA_HRCUSCL_TAX_STR-ADDITIONAL_TAX_CODE sy-vline
WA_HRCUSCL_TAX_STR-ADDITIONAL_TAX_RATE sy-vline
WA_HRCUSCL_TAX_STR-AGGREGATION_INDICATOR sy-vline
WA_HRCUSCL_TAX_STR-ALTERNATE_AGGREGATION_LIMIT sy-vline
WA_HRCUSCL_TAX_STR-AUTHORITY_CODE sy-vline
WA_HRCUSCL_TAX_STR-BASE_WAGES sy-vline
WA_HRCUSCL_TAX_STR-CRSVD0 sy-vline
WA_HRCUSCL_TAX_STR-CRSVD1 sy-vline
WA_HRCUSCL_TAX_STR-CALCULATED_TAX sy-vline
WA_HRCUSCL_TAX_STR-CALCULATION_STATUS sy-vline
WA_HRCUSCL_TAX_STR-CERTIFICATE_CODE sy-vline
WA_HRCUSCL_TAX_STR-DRSVD0 sy-vline
WA_HRCUSCL_TAX_STR-DRSVD1 sy-vline
WA_HRCUSCL_TAX_STR-DEPENDENT_EXEMPTIONS sy-vline
WA_HRCUSCL_TAX_STR-EICSTATUS_INDICATOR sy-vline
WA_HRCUSCL_TAX_STR-ELECTED_STATE_IND sy-vline
WA_HRCUSCL_TAX_STR-EXPERIENCE_RATE sy-vline
WA_HRCUSCL_TAX_STR-FORMULA_NUMBER sy-vline
WA_HRCUSCL_TAX_STR-HRSVD0 sy-vline
WA_HRCUSCL_TAX_STR-HRSVD1 sy-vline
WA_HRCUSCL_TAX_STR-HOURS_WORKED sy-vline
WA_HRCUSCL_TAX_STR-INPUT_TOTAL_NON_TAXABLE_EMPLOY sy-vline
WA_HRCUSCL_TAX_STR-INPUT_TOTAL_TAXABLE_EARNINGS sy-vline
WA_HRCUSCL_TAX_STR-INPUT_TOTAL_TAXABLE_EMPLOYER_C sy-vline
WA_HRCUSCL_TAX_STR-MARITAL_STATUS_INDICATOR sy-vline
WA_HRCUSCL_TAX_STR-MAXIMUM_WAGE_OVERRIDE sy-vline
WA_HRCUSCL_TAX_STR-MTD_TAX sy-vline
WA_HRCUSCL_TAX_STR-MTD_WAGES sy-vline
WA_HRCUSCL_TAX_STR-NXINDICATOR sy-vline
WA_HRCUSCL_TAX_STR-NON_TAXABLE_WAGES sy-vline
WA_HRCUSCL_TAX_STR-NUMBER_OF_PAYMENT_ENTRIES sy-vline
WA_HRCUSCL_TAX_STR-OUTPUT_TOTAL_NON_TAXABLE_EMPLO sy-vline
WA_HRCUSCL_TAX_STR-OUTPUT_TOTAL_TAXABLE_EARNINGS sy-vline
WA_HRCUSCL_TAX_STR-OUTPUT_TOTAL_TAXABLE_EMPLOYER sy-vline
WA_HRCUSCL_TAX_STR-PAY_PERIOD_TAX sy-vline
WA_HRCUSCL_TAX_STR-PAY_PERIOD_WAGES sy-vline
WA_HRCUSCL_TAX_STR-PERCENT_WORKED sy-vline
WA_HRCUSCL_TAX_STR-PERSONAL_EXEMPTIONS sy-vline
WA_HRCUSCL_TAX_STR-PRIOR_COMMISSIONS sy-vline
WA_HRCUSCL_TAX_STR-QTD_TAX sy-vline
WA_HRCUSCL_TAX_STR-QTD_WAGES sy-vline
WA_HRCUSCL_TAX_STR-RRSVD0 sy-vline
WA_HRCUSCL_TAX_STR-RRSVD1 sy-vline
WA_HRCUSCL_TAX_STR-RECIP_FORMULA sy-vline
WA_HRCUSCL_TAX_STR-RECIPROCAL_PARTICIPATION sy-vline
WA_HRCUSCL_TAX_STR-RECIPROCAL_TAX_CREDIT_AMOUNT sy-vline
WA_HRCUSCL_TAX_STR-REGULAR_EXEMPTION_AMOUNT sy-vline
WA_HRCUSCL_TAX_STR-REGULAR_EXEMPTIONS sy-vline
WA_HRCUSCL_TAX_STR-REPORTABLE_TAX sy-vline
WA_HRCUSCL_TAX_STR-REPORTABLE_WAGES sy-vline
WA_HRCUSCL_TAX_STR-RESIDENT_CODE sy-vline
WA_HRCUSCL_TAX_STR-ROUNDING_INDICATOR sy-vline
WA_HRCUSCL_TAX_STR-SRSVD0 sy-vline
WA_HRCUSCL_TAX_STR-SRSVD1 sy-vline
WA_HRCUSCL_TAX_STR-SELF_ADJUST_TAX sy-vline
WA_HRCUSCL_TAX_STR-SUBJECT_WAGES sy-vline
WA_HRCUSCL_TAX_STR-SUPPLEMENTAL_CODE sy-vline
WA_HRCUSCL_TAX_STR-TAX_EXEMPTION_INDICATOR sy-vline
WA_HRCUSCL_TAX_STR-TAX_RATE sy-vline
WA_HRCUSCL_TAX_STR-TAX_TYPE sy-vline
WA_HRCUSCL_TAX_STR-TAXABLE_HOURS sy-vline
WA_HRCUSCL_TAX_STR-TAXABLE_WAGES sy-vline
WA_HRCUSCL_TAX_STR-TOTAL_EXEMPTION_VALUE sy-vline
WA_HRCUSCL_TAX_STR-TOTAL_TAXABLE_WAGES sy-vline
WA_HRCUSCL_TAX_STR-USER_TAX_TYPE sy-vline
WA_HRCUSCL_TAX_STR-WAGES sy-vline
WA_HRCUSCL_TAX_STR-YTD_OPT_PWS sy-vline
WA_HRCUSCL_TAX_STR-YTD_SUBJECT_WAGES sy-vline
WA_HRCUSCL_TAX_STR-YTD_SUPPL sy-vline
WA_HRCUSCL_TAX_STR-YTD_TAX sy-vline
WA_HRCUSCL_TAX_STR-YTD_TAX_PWS sy-vline
WA_HRCUSCL_TAX_STR-YTD_WAGES sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.