ABAP Select data from SAP table IR8A_MAIN 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 IR8A_MAIN 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 IR8A_MAIN. 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 IR8A_MAIN 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_IR8A_MAIN TYPE STANDARD TABLE OF IR8A_MAIN,
      WA_IR8A_MAIN TYPE IR8A_MAIN,
      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: <IR8A_MAIN> TYPE IR8A_MAIN.

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

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

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM IR8A_MAIN
*  INTO TABLE @DATA(IT_IR8A_MAIN2).
*--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_IR8A_MAIN INDEX 1 INTO DATA(WA_IR8A_MAIN2).


*Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL
LOOP AT IT_IR8A_MAIN ASSIGNING <IR8A_MAIN>.
*To update a field value using a field symbol simply change the value via the field symbol pointer
<IR8A_MAIN>-YEAR1 = 1.
<IR8A_MAIN>-FORMNAME = 1.
<IR8A_MAIN>-APPENDIX = 1.
<IR8A_MAIN>-PAGENO = 1.
<IR8A_MAIN>-PERSONS_SELECTED = 1.
ENDLOOP.

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

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_IR8A_MAIN-PERSONS_PRINTED, sy-vline,
WA_IR8A_MAIN-PRINTED_PAGES, sy-vline,
WA_IR8A_MAIN-PERNR, sy-vline,
WA_IR8A_MAIN-EPTAX, sy-vline,
WA_IR8A_MAIN-REFNB, sy-vline,
WA_IR8A_MAIN-ICTYP, sy-vline.
ENDLOOP. *Add any further fields from structure WA_IR8A_MAIN 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_IR8A_MAIN 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_IR8A_MAIN INTO WA_IR8A_MAIN. *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_IR8A_MAIN_STR,
YEAR1 TYPE STRING,
FORMNAME TYPE STRING,
APPENDIX TYPE STRING,
PAGENO TYPE STRING,
PERSONS_SELECTED TYPE STRING,
PERSONS_PRINTED TYPE STRING,
PRINTED_PAGES TYPE STRING,
PERNR TYPE STRING,
EPTAX TYPE STRING,
REFNB TYPE STRING,
ICTYP TYPE STRING,
ICNU3 TYPE STRING,
TEXT_3A TYPE STRING,
TEXT_3B TYPE STRING,
TEXT_4A TYPE STRING,
TEXT_4B TYPE STRING,
TEXT_4C TYPE STRING,
NAME TYPE STRING,
BIRTH_DATE TYPE STRING,
SEX TYPE STRING,
DESIGNATION TYPE STRING,
DESIGNATION1 TYPE STRING,
DESIGNATION2 TYPE STRING,
ADRES TYPE STRING,
ADRES1 TYPE STRING,
ADRES2 TYPE STRING,
ADRES3 TYPE STRING,
ADRES4 TYPE STRING,
MARITAL_STATUS TYPE STRING,
COMM_DT TYPE STRING,
CESS_DT TYPE STRING,
GROSS_BETRAG TYPE STRING,
CY_BONUS_FROM TYPE STRING,
CY_BONUS_TO TYPE STRING,
CY_BONUS_DECL TYPE STRING,
CY_BONUS_CONTRACTUAL TYPE STRING,
CY_BONUS_BETRAG TYPE STRING,
PY_BONUS_FROM TYPE STRING,
PY_BONUS_TO TYPE STRING,
PY_BONUS_DECL TYPE STRING,
PY_BONUS_CONTRACTUAL TYPE STRING,
PY_BONUS_BETRAG TYPE STRING,
DIRECTOR_FEE_FROM TYPE STRING,
DIRECTOR_FEE_TO TYPE STRING,
DIRECTOR_FEE_APPROV TYPE STRING,
DIRECTOR_FEE_BETRAG TYPE STRING,
COMMISSION_FROM TYPE STRING,
COMMISSION_TO TYPE STRING,
COMMISSION_MONTHLY TYPE STRING,
COMMISSION_ONE_TIME TYPE STRING,
COMMISSION_BETRAG TYPE STRING,
PENSION TYPE STRING,
ALLOW_TRANSPORT TYPE STRING,
ALLOW_ENTERTAINMENT TYPE STRING,
ALLOW_OTHERS TYPE STRING,
ALLOW_TOTAL TYPE STRING,
GRATUITY_BETRAG TYPE STRING,
BENEFITS_BETRAG_92 TYPE STRING,
AMT_TOACC TYPE STRING,
AMT_FMACC TYPE STRING,
CONTR_OUTSIDE_SGP TYPE STRING,
EXCESS_VOL_CONTR TYPE STRING,
EXCESS_CONTR TYPE STRING,
SHARE_GAINS TYPE STRING,
BENEFITS_IN_KIND TYPE STRING,
TOTAL_INCOME TYPE STRING,
INTAX TYPE STRING,
COMP_CPF_MARKER TYPE STRING,
APPROV_MARKER TYPE STRING,
COMP_FUND_NAME TYPE STRING,
COMP_CPF_BETRAG TYPE STRING,
OVERSEAS_VOL_CPF TYPE STRING,
OVERSEAS_VOL_OTHERS TYPE STRING,
MBMF TYPE STRING,
CHEST TYPE STRING,
SINDA TYPE STRING,
CDAC TYPE STRING,
ECF TYPE STRING,
OTHER TYPE STRING,
DONATIONS_BETRAG TYPE STRING,
EMPR_NAME TYPE STRING,
EMPR_ADRES_ORT TYPE STRING,
AUTH_PERSON TYPE STRING,
EMP_DESIGN TYPE STRING,
EMP_TELENR TYPE STRING,
EMP_IDATA TYPE STRING,
GRATUITY_TXT TYPE STRING,
INSURANCE TYPE STRING,
REMARK_IR8A TYPE STRING,
REMARK_APP8B TYPE STRING,
SEQNO TYPE STRING,
STAFL TYPE STRING,
LOTNO TYPE STRING,
USERNAME TYPE STRING,
RUNDATE TYPE STRING,
RUNTIME TYPE STRING,
YMF TYPE STRING,
DONATIONS_MB TYPE STRING,
REMARK_FUND TYPE STRING,
REMARK_CPF1 TYPE STRING,
REMARK_ARRE TYPE STRING,
GRAT_BETRAG TYPE STRING,
LOSS_OFF_BETRAG TYPE STRING,
NOTICE_PAY_BETRAG TYPE STRING,
EX_GRAT_BETRAG TYPE STRING,
OTHERS_BETRAG TYPE STRING,
GRAT_PAY_RES_TEXT TYPE STRING,
GAIN_REL_DATE TYPE STRING,
OPEN_MKT_PRICE TYPE STRING,
STK_OFF_PLAN TYPE STRING,
GRAND_TOTAL_03 TYPE STRING,
GRAND_TOTAL_GE03 TYPE STRING,
SHARE_GAINS_03 TYPE STRING,
SHARE_GAINS_GE03 TYPE STRING,
TAX_INDICATOR TYPE STRING,
EXMPT_INDICATOR TYPE STRING,
IRAS_APPRVL_DATE TYPE STRING,
EXMPT_INCOME TYPE STRING,
PARTIAL_TAX_ER TYPE STRING,
FIXED_TAX_EE TYPE STRING,
NO_OF_PER TYPE STRING,
LEN_OF_SERVICE TYPE STRING,
SL_NO TYPE STRING,
LONGNAME TYPE STRING,
YEAR2 TYPE STRING,
AMMENDED TYPE STRING,
PAYROLL_DATE TYPE STRING,
BENEFITS_FUND_NAME TYPE STRING,
BENEFITS_BETRAG TYPE STRING,
GAIN_SHR TYPE STRING,
DEDUCTION_LIP TYPE STRING,
APPRL_DTE TYPE STRING,
FLAG_MAIN TYPE STRING,
PERNR_TEM TYPE STRING,
REMISSION TYPE STRING,
CONCESSION_NAME TYPE STRING,
CONCESSION_AMT TYPE STRING,
MANDATORY_FLAG TYPE STRING,
CLAIM_FLAG TYPE STRING,
GLOBAL_ID TYPE STRING,
AIS_ON TYPE STRING,
OVERSEAS_FLAG TYPE STRING,END OF T_EKKO_STR. DATA: WA_IR8A_MAIN_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_IR8A_MAIN_STR-YEAR1 sy-vline
WA_IR8A_MAIN_STR-FORMNAME sy-vline
WA_IR8A_MAIN_STR-APPENDIX sy-vline
WA_IR8A_MAIN_STR-PAGENO sy-vline
WA_IR8A_MAIN_STR-PERSONS_SELECTED sy-vline
WA_IR8A_MAIN_STR-PERSONS_PRINTED sy-vline
WA_IR8A_MAIN_STR-PRINTED_PAGES sy-vline
WA_IR8A_MAIN_STR-PERNR sy-vline
WA_IR8A_MAIN_STR-EPTAX sy-vline
WA_IR8A_MAIN_STR-REFNB sy-vline
WA_IR8A_MAIN_STR-ICTYP sy-vline
WA_IR8A_MAIN_STR-ICNU3 sy-vline
WA_IR8A_MAIN_STR-TEXT_3A sy-vline
WA_IR8A_MAIN_STR-TEXT_3B sy-vline
WA_IR8A_MAIN_STR-TEXT_4A sy-vline
WA_IR8A_MAIN_STR-TEXT_4B sy-vline
WA_IR8A_MAIN_STR-TEXT_4C sy-vline
WA_IR8A_MAIN_STR-NAME sy-vline
WA_IR8A_MAIN_STR-BIRTH_DATE sy-vline
WA_IR8A_MAIN_STR-SEX sy-vline
WA_IR8A_MAIN_STR-DESIGNATION sy-vline
WA_IR8A_MAIN_STR-DESIGNATION1 sy-vline
WA_IR8A_MAIN_STR-DESIGNATION2 sy-vline
WA_IR8A_MAIN_STR-ADRES sy-vline
WA_IR8A_MAIN_STR-ADRES1 sy-vline
WA_IR8A_MAIN_STR-ADRES2 sy-vline
WA_IR8A_MAIN_STR-ADRES3 sy-vline
WA_IR8A_MAIN_STR-ADRES4 sy-vline
WA_IR8A_MAIN_STR-MARITAL_STATUS sy-vline
WA_IR8A_MAIN_STR-COMM_DT sy-vline
WA_IR8A_MAIN_STR-CESS_DT sy-vline
WA_IR8A_MAIN_STR-GROSS_BETRAG sy-vline
WA_IR8A_MAIN_STR-CY_BONUS_FROM sy-vline
WA_IR8A_MAIN_STR-CY_BONUS_TO sy-vline
WA_IR8A_MAIN_STR-CY_BONUS_DECL sy-vline
WA_IR8A_MAIN_STR-CY_BONUS_CONTRACTUAL sy-vline
WA_IR8A_MAIN_STR-CY_BONUS_BETRAG sy-vline
WA_IR8A_MAIN_STR-PY_BONUS_FROM sy-vline
WA_IR8A_MAIN_STR-PY_BONUS_TO sy-vline
WA_IR8A_MAIN_STR-PY_BONUS_DECL sy-vline
WA_IR8A_MAIN_STR-PY_BONUS_CONTRACTUAL sy-vline
WA_IR8A_MAIN_STR-PY_BONUS_BETRAG sy-vline
WA_IR8A_MAIN_STR-DIRECTOR_FEE_FROM sy-vline
WA_IR8A_MAIN_STR-DIRECTOR_FEE_TO sy-vline
WA_IR8A_MAIN_STR-DIRECTOR_FEE_APPROV sy-vline
WA_IR8A_MAIN_STR-DIRECTOR_FEE_BETRAG sy-vline
WA_IR8A_MAIN_STR-COMMISSION_FROM sy-vline
WA_IR8A_MAIN_STR-COMMISSION_TO sy-vline
WA_IR8A_MAIN_STR-COMMISSION_MONTHLY sy-vline
WA_IR8A_MAIN_STR-COMMISSION_ONE_TIME sy-vline
WA_IR8A_MAIN_STR-COMMISSION_BETRAG sy-vline
WA_IR8A_MAIN_STR-PENSION sy-vline
WA_IR8A_MAIN_STR-ALLOW_TRANSPORT sy-vline
WA_IR8A_MAIN_STR-ALLOW_ENTERTAINMENT sy-vline
WA_IR8A_MAIN_STR-ALLOW_OTHERS sy-vline
WA_IR8A_MAIN_STR-ALLOW_TOTAL sy-vline
WA_IR8A_MAIN_STR-GRATUITY_BETRAG sy-vline
WA_IR8A_MAIN_STR-BENEFITS_BETRAG_92 sy-vline
WA_IR8A_MAIN_STR-AMT_TOACC sy-vline
WA_IR8A_MAIN_STR-AMT_FMACC sy-vline
WA_IR8A_MAIN_STR-CONTR_OUTSIDE_SGP sy-vline
WA_IR8A_MAIN_STR-EXCESS_VOL_CONTR sy-vline
WA_IR8A_MAIN_STR-EXCESS_CONTR sy-vline
WA_IR8A_MAIN_STR-SHARE_GAINS sy-vline
WA_IR8A_MAIN_STR-BENEFITS_IN_KIND sy-vline
WA_IR8A_MAIN_STR-TOTAL_INCOME sy-vline
WA_IR8A_MAIN_STR-INTAX sy-vline
WA_IR8A_MAIN_STR-COMP_CPF_MARKER sy-vline
WA_IR8A_MAIN_STR-APPROV_MARKER sy-vline
WA_IR8A_MAIN_STR-COMP_FUND_NAME sy-vline
WA_IR8A_MAIN_STR-COMP_CPF_BETRAG sy-vline
WA_IR8A_MAIN_STR-OVERSEAS_VOL_CPF sy-vline
WA_IR8A_MAIN_STR-OVERSEAS_VOL_OTHERS sy-vline
WA_IR8A_MAIN_STR-MBMF sy-vline
WA_IR8A_MAIN_STR-CHEST sy-vline
WA_IR8A_MAIN_STR-SINDA sy-vline
WA_IR8A_MAIN_STR-CDAC sy-vline
WA_IR8A_MAIN_STR-ECF sy-vline
WA_IR8A_MAIN_STR-OTHER sy-vline
WA_IR8A_MAIN_STR-DONATIONS_BETRAG sy-vline
WA_IR8A_MAIN_STR-EMPR_NAME sy-vline
WA_IR8A_MAIN_STR-EMPR_ADRES_ORT sy-vline
WA_IR8A_MAIN_STR-AUTH_PERSON sy-vline
WA_IR8A_MAIN_STR-EMP_DESIGN sy-vline
WA_IR8A_MAIN_STR-EMP_TELENR sy-vline
WA_IR8A_MAIN_STR-EMP_IDATA sy-vline
WA_IR8A_MAIN_STR-GRATUITY_TXT sy-vline
WA_IR8A_MAIN_STR-INSURANCE sy-vline
WA_IR8A_MAIN_STR-REMARK_IR8A sy-vline
WA_IR8A_MAIN_STR-REMARK_APP8B sy-vline
WA_IR8A_MAIN_STR-SEQNO sy-vline
WA_IR8A_MAIN_STR-STAFL sy-vline
WA_IR8A_MAIN_STR-LOTNO sy-vline
WA_IR8A_MAIN_STR-USERNAME sy-vline
WA_IR8A_MAIN_STR-RUNDATE sy-vline
WA_IR8A_MAIN_STR-RUNTIME sy-vline
WA_IR8A_MAIN_STR-YMF sy-vline
WA_IR8A_MAIN_STR-DONATIONS_MB sy-vline
WA_IR8A_MAIN_STR-REMARK_FUND sy-vline
WA_IR8A_MAIN_STR-REMARK_CPF1 sy-vline
WA_IR8A_MAIN_STR-REMARK_ARRE sy-vline
WA_IR8A_MAIN_STR-GRAT_BETRAG sy-vline
WA_IR8A_MAIN_STR-LOSS_OFF_BETRAG sy-vline
WA_IR8A_MAIN_STR-NOTICE_PAY_BETRAG sy-vline
WA_IR8A_MAIN_STR-EX_GRAT_BETRAG sy-vline
WA_IR8A_MAIN_STR-OTHERS_BETRAG sy-vline
WA_IR8A_MAIN_STR-GRAT_PAY_RES_TEXT sy-vline
WA_IR8A_MAIN_STR-GAIN_REL_DATE sy-vline
WA_IR8A_MAIN_STR-OPEN_MKT_PRICE sy-vline
WA_IR8A_MAIN_STR-STK_OFF_PLAN sy-vline
WA_IR8A_MAIN_STR-GRAND_TOTAL_03 sy-vline
WA_IR8A_MAIN_STR-GRAND_TOTAL_GE03 sy-vline
WA_IR8A_MAIN_STR-SHARE_GAINS_03 sy-vline
WA_IR8A_MAIN_STR-SHARE_GAINS_GE03 sy-vline
WA_IR8A_MAIN_STR-TAX_INDICATOR sy-vline
WA_IR8A_MAIN_STR-EXMPT_INDICATOR sy-vline
WA_IR8A_MAIN_STR-IRAS_APPRVL_DATE sy-vline
WA_IR8A_MAIN_STR-EXMPT_INCOME sy-vline
WA_IR8A_MAIN_STR-PARTIAL_TAX_ER sy-vline
WA_IR8A_MAIN_STR-FIXED_TAX_EE sy-vline
WA_IR8A_MAIN_STR-NO_OF_PER sy-vline
WA_IR8A_MAIN_STR-LEN_OF_SERVICE sy-vline
WA_IR8A_MAIN_STR-SL_NO sy-vline
WA_IR8A_MAIN_STR-LONGNAME sy-vline
WA_IR8A_MAIN_STR-YEAR2 sy-vline
WA_IR8A_MAIN_STR-AMMENDED sy-vline
WA_IR8A_MAIN_STR-PAYROLL_DATE sy-vline
WA_IR8A_MAIN_STR-BENEFITS_FUND_NAME sy-vline
WA_IR8A_MAIN_STR-BENEFITS_BETRAG sy-vline
WA_IR8A_MAIN_STR-GAIN_SHR sy-vline
WA_IR8A_MAIN_STR-DEDUCTION_LIP sy-vline
WA_IR8A_MAIN_STR-APPRL_DTE sy-vline
WA_IR8A_MAIN_STR-FLAG_MAIN sy-vline
WA_IR8A_MAIN_STR-PERNR_TEM sy-vline
WA_IR8A_MAIN_STR-REMISSION sy-vline
WA_IR8A_MAIN_STR-CONCESSION_NAME sy-vline
WA_IR8A_MAIN_STR-CONCESSION_AMT sy-vline
WA_IR8A_MAIN_STR-MANDATORY_FLAG sy-vline
WA_IR8A_MAIN_STR-CLAIM_FLAG sy-vline
WA_IR8A_MAIN_STR-GLOBAL_ID sy-vline
WA_IR8A_MAIN_STR-AIS_ON sy-vline
WA_IR8A_MAIN_STR-OVERSEAS_FLAG sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.