ABAP Select data from SAP table ORFCALC 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 ORFCALC 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 ORFCALC. 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 ORFCALC 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_ORFCALC TYPE STANDARD TABLE OF ORFCALC,
      WA_ORFCALC TYPE ORFCALC,
      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: <ORFCALC> TYPE ORFCALC.

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

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

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM ORFCALC
*  INTO TABLE @DATA(IT_ORFCALC2).
*--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_ORFCALC INDEX 1 INTO DATA(WA_ORFCALC2).


*Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL
LOOP AT IT_ORFCALC ASSIGNING <ORFCALC>.
*To update a field value using a field symbol simply change the value via the field symbol pointer
<ORFCALC>-MANDT = 1.
<ORFCALC>-SQNBR = 1.
<ORFCALC>-PNR = 1.
<ORFCALC>-MFR = 1.
<ORFCALC>-EIP = 1.
ENDLOOP.

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

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_ORFCALC-EIM, sy-vline,
WA_ORFCALC-MATNR, sy-vline,
WA_ORFCALC-CALCNR, sy-vline,
WA_ORFCALC-MOA, sy-vline,
WA_ORFCALC-CUS, sy-vline,
WA_ORFCALC-FLAG_ACTUAL, sy-vline.
ENDLOOP. *Add any further fields from structure WA_ORFCALC 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_ORFCALC 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_ORFCALC INTO WA_ORFCALC. *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 MATN1, internal->external for field MATNR CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT' EXPORTING input = WA_ORFCALC-MATNR IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_ORFCALC-MATNR.
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_ORFCALC_STR,
MANDT TYPE STRING,
SQNBR TYPE STRING,
PNR TYPE STRING,
MFR TYPE STRING,
EIP TYPE STRING,
EIM TYPE STRING,
MATNR TYPE STRING,
CALCNR TYPE STRING,
MOA TYPE STRING,
CUS TYPE STRING,
FLAG_ACTUAL TYPE STRING,
CREATED_ON_TIME TYPE STRING,
CREATED_ON_DATE TYPE STRING,
CREATED_BY TYPE STRING,
PROFL_ID TYPE STRING,
TEXT TYPE STRING,
NEQ_SYST TYPE STRING,
NEQ_MANUF TYPE STRING,
MTBE_SYST TYPE STRING,
MTBE_MANUF TYPE STRING,
TAT_REP_SYSTEM TYPE STRING,
TAT_TRP_SYSTEM TYPE STRING,
TAT_REP_MANUF TYPE STRING,
EC_SYSTEM TYPE STRING,
EC_MANUF TYPE STRING,
HOMESHOP_SYSTEM TYPE STRING,
PRICE_SYSTEM TYPE STRING,
PRICE_MANUF TYPE STRING,
CURR_SYSTEM TYPE STRING,
CURR_MANUF TYPE STRING,
MOA_USER TYPE STRING,
CUS_USER TYPE STRING,
MAKTX TYPE STRING,
SPC_MANUF TYPE STRING,
REC_MANUF TYPE STRING,
SPEC2_DUM1 TYPE STRING,
SPEC2_DUM2 TYPE STRING,
SPEC2_DUM3 TYPE STRING,
SPEC2_DUM4 TYPE STRING,
N_TP TYPE STRING,
N_EQ TYPE STRING,
TAU TYPE STRING,
MTBR TYPE STRING,
TAT_TOT TYPE STRING,
CL TYPE STRING,
MAD TYPE STRING,
ALGIN_DUM1 TYPE STRING,
EC_EX TYPE STRING,
HOMESHOP_EX TYPE STRING,
DD_EX TYPE STRING,
N_TP_EX TYPE STRING,
N_EQ_EX TYPE STRING,
TAU_EX TYPE STRING,
MTBR_EX TYPE STRING,
TAT_REWORK_EX TYPE STRING,
TAT_TRANSP_EX TYPE STRING,
CL_EX TYPE STRING,
PRICE_EX TYPE STRING,
MAD_EX TYPE STRING,
ALGEX_DUM1 TYPE STRING,
ALGEX_DUM2 TYPE STRING,
ALGEX_DUM3 TYPE STRING,
DD TYPE STRING,
ASL TYPE STRING,
RF TYPE STRING,
ALGOUT_DUM1 TYPE STRING,
FLAG_BATCH TYPE STRING,
FLAG_NO_CALC TYPE STRING,
FLAG_MAD_TYPE TYPE STRING,
TCC_BATCH2 TYPE STRING,
TCC_SRC TYPE STRING,
TCC_TRC TYPE STRING,
MTBE_SRC TYPE STRING,
MTBE_TRC TYPE STRING,
NTP_SRC TYPE STRING,
NTP_TRC TYPE STRING,
TAU_SRC TYPE STRING,
TAU_TRC TYPE STRING,
NEQ_SRC TYPE STRING,
NEQ_TRC TYPE STRING,
TAT_REP_SRC TYPE STRING,
TAT_REP_TRC TYPE STRING,
TAT_TRP_SRC TYPE STRING,
TAT_TRP_TRC TYPE STRING,
EC_SRC TYPE STRING,
EC_TRC TYPE STRING,
HS_SRC TYPE STRING,
HS_TRC TYPE STRING,
PRICE_SRC TYPE STRING,
PRICE_TRC TYPE STRING,
BATCH2_DUM1 TYPE STRING,
BATCH2_DUM2 TYPE STRING,
BATCH2_DUM3 TYPE STRING,
EXTERN_CALC TYPE STRING,
INVERSION_CALC TYPE STRING,
EXPEND_PART TYPE STRING,
BANF_CREATED TYPE STRING,
NO_MM_DATA TYPE STRING,
NO_IP_DATA TYPE STRING,
NO_EX_DATA TYPE STRING,
MTBE_SEARCH TYPE STRING,
MTBE_LENGHT TYPE STRING,
MTBE_DATETO TYPE STRING,
FLAG_NUMERIC TYPE STRING,
FLAG_NUM_BATCH TYPE STRING,
FLAG_NUM_N TYPE STRING,
SUPPL1 TYPE STRING,
WERKS TYPE STRING,
BWTAR TYPE STRING,
FLAG_VPRSV TYPE STRING,
IP_MATNR_ASSIGN TYPE STRING,
WRONG_ASSIGN TYPE STRING,
MTBE_SY_SRC TYPE STRING,
TAT_REP_SY_SRC TYPE STRING,
TAT_TRP_SY_SRC TYPE STRING,
EC_SY_SRC TYPE STRING,
HS_SY_SRC TYPE STRING,
PRICE_SY_SRC TYPE STRING,
CURR_SY_SRC TYPE STRING,
MATNR_SY_SRC TYPE STRING,
CUS_SY_SRC TYPE STRING,
SY_SRC_DUM1 TYPE STRING,
CHANGE_MAT TYPE STRING,
FLAG_DUM1 TYPE STRING,
FLAG_DUM2 TYPE STRING,
FLAG_DUM3 TYPE STRING,
FLAG_DUM4 TYPE STRING,
FLAG_DUM5 TYPE STRING,
FLAG_DUM6 TYPE STRING,
FLAG_DUM7 TYPE STRING,
FLAG_DUM8 TYPE STRING,
FLAG_DUM9 TYPE STRING,
RADIO200 TYPE STRING,END OF T_EKKO_STR. DATA: WA_ORFCALC_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_ORFCALC_STR-MANDT sy-vline
WA_ORFCALC_STR-SQNBR sy-vline
WA_ORFCALC_STR-PNR sy-vline
WA_ORFCALC_STR-MFR sy-vline
WA_ORFCALC_STR-EIP sy-vline
WA_ORFCALC_STR-EIM sy-vline
WA_ORFCALC_STR-MATNR sy-vline
WA_ORFCALC_STR-CALCNR sy-vline
WA_ORFCALC_STR-MOA sy-vline
WA_ORFCALC_STR-CUS sy-vline
WA_ORFCALC_STR-FLAG_ACTUAL sy-vline
WA_ORFCALC_STR-CREATED_ON_TIME sy-vline
WA_ORFCALC_STR-CREATED_ON_DATE sy-vline
WA_ORFCALC_STR-CREATED_BY sy-vline
WA_ORFCALC_STR-PROFL_ID sy-vline
WA_ORFCALC_STR-TEXT sy-vline
WA_ORFCALC_STR-NEQ_SYST sy-vline
WA_ORFCALC_STR-NEQ_MANUF sy-vline
WA_ORFCALC_STR-MTBE_SYST sy-vline
WA_ORFCALC_STR-MTBE_MANUF sy-vline
WA_ORFCALC_STR-TAT_REP_SYSTEM sy-vline
WA_ORFCALC_STR-TAT_TRP_SYSTEM sy-vline
WA_ORFCALC_STR-TAT_REP_MANUF sy-vline
WA_ORFCALC_STR-EC_SYSTEM sy-vline
WA_ORFCALC_STR-EC_MANUF sy-vline
WA_ORFCALC_STR-HOMESHOP_SYSTEM sy-vline
WA_ORFCALC_STR-PRICE_SYSTEM sy-vline
WA_ORFCALC_STR-PRICE_MANUF sy-vline
WA_ORFCALC_STR-CURR_SYSTEM sy-vline
WA_ORFCALC_STR-CURR_MANUF sy-vline
WA_ORFCALC_STR-MOA_USER sy-vline
WA_ORFCALC_STR-CUS_USER sy-vline
WA_ORFCALC_STR-MAKTX sy-vline
WA_ORFCALC_STR-SPC_MANUF sy-vline
WA_ORFCALC_STR-REC_MANUF sy-vline
WA_ORFCALC_STR-SPEC2_DUM1 sy-vline
WA_ORFCALC_STR-SPEC2_DUM2 sy-vline
WA_ORFCALC_STR-SPEC2_DUM3 sy-vline
WA_ORFCALC_STR-SPEC2_DUM4 sy-vline
WA_ORFCALC_STR-N_TP sy-vline
WA_ORFCALC_STR-N_EQ sy-vline
WA_ORFCALC_STR-TAU sy-vline
WA_ORFCALC_STR-MTBR sy-vline
WA_ORFCALC_STR-TAT_TOT sy-vline
WA_ORFCALC_STR-CL sy-vline
WA_ORFCALC_STR-MAD sy-vline
WA_ORFCALC_STR-ALGIN_DUM1 sy-vline
WA_ORFCALC_STR-EC_EX sy-vline
WA_ORFCALC_STR-HOMESHOP_EX sy-vline
WA_ORFCALC_STR-DD_EX sy-vline
WA_ORFCALC_STR-N_TP_EX sy-vline
WA_ORFCALC_STR-N_EQ_EX sy-vline
WA_ORFCALC_STR-TAU_EX sy-vline
WA_ORFCALC_STR-MTBR_EX sy-vline
WA_ORFCALC_STR-TAT_REWORK_EX sy-vline
WA_ORFCALC_STR-TAT_TRANSP_EX sy-vline
WA_ORFCALC_STR-CL_EX sy-vline
WA_ORFCALC_STR-PRICE_EX sy-vline
WA_ORFCALC_STR-MAD_EX sy-vline
WA_ORFCALC_STR-ALGEX_DUM1 sy-vline
WA_ORFCALC_STR-ALGEX_DUM2 sy-vline
WA_ORFCALC_STR-ALGEX_DUM3 sy-vline
WA_ORFCALC_STR-DD sy-vline
WA_ORFCALC_STR-ASL sy-vline
WA_ORFCALC_STR-RF sy-vline
WA_ORFCALC_STR-ALGOUT_DUM1 sy-vline
WA_ORFCALC_STR-FLAG_BATCH sy-vline
WA_ORFCALC_STR-FLAG_NO_CALC sy-vline
WA_ORFCALC_STR-FLAG_MAD_TYPE sy-vline
WA_ORFCALC_STR-TCC_BATCH2 sy-vline
WA_ORFCALC_STR-TCC_SRC sy-vline
WA_ORFCALC_STR-TCC_TRC sy-vline
WA_ORFCALC_STR-MTBE_SRC sy-vline
WA_ORFCALC_STR-MTBE_TRC sy-vline
WA_ORFCALC_STR-NTP_SRC sy-vline
WA_ORFCALC_STR-NTP_TRC sy-vline
WA_ORFCALC_STR-TAU_SRC sy-vline
WA_ORFCALC_STR-TAU_TRC sy-vline
WA_ORFCALC_STR-NEQ_SRC sy-vline
WA_ORFCALC_STR-NEQ_TRC sy-vline
WA_ORFCALC_STR-TAT_REP_SRC sy-vline
WA_ORFCALC_STR-TAT_REP_TRC sy-vline
WA_ORFCALC_STR-TAT_TRP_SRC sy-vline
WA_ORFCALC_STR-TAT_TRP_TRC sy-vline
WA_ORFCALC_STR-EC_SRC sy-vline
WA_ORFCALC_STR-EC_TRC sy-vline
WA_ORFCALC_STR-HS_SRC sy-vline
WA_ORFCALC_STR-HS_TRC sy-vline
WA_ORFCALC_STR-PRICE_SRC sy-vline
WA_ORFCALC_STR-PRICE_TRC sy-vline
WA_ORFCALC_STR-BATCH2_DUM1 sy-vline
WA_ORFCALC_STR-BATCH2_DUM2 sy-vline
WA_ORFCALC_STR-BATCH2_DUM3 sy-vline
WA_ORFCALC_STR-EXTERN_CALC sy-vline
WA_ORFCALC_STR-INVERSION_CALC sy-vline
WA_ORFCALC_STR-EXPEND_PART sy-vline
WA_ORFCALC_STR-BANF_CREATED sy-vline
WA_ORFCALC_STR-NO_MM_DATA sy-vline
WA_ORFCALC_STR-NO_IP_DATA sy-vline
WA_ORFCALC_STR-NO_EX_DATA sy-vline
WA_ORFCALC_STR-MTBE_SEARCH sy-vline
WA_ORFCALC_STR-MTBE_LENGHT sy-vline
WA_ORFCALC_STR-MTBE_DATETO sy-vline
WA_ORFCALC_STR-FLAG_NUMERIC sy-vline
WA_ORFCALC_STR-FLAG_NUM_BATCH sy-vline
WA_ORFCALC_STR-FLAG_NUM_N sy-vline
WA_ORFCALC_STR-SUPPL1 sy-vline
WA_ORFCALC_STR-WERKS sy-vline
WA_ORFCALC_STR-BWTAR sy-vline
WA_ORFCALC_STR-FLAG_VPRSV sy-vline
WA_ORFCALC_STR-IP_MATNR_ASSIGN sy-vline
WA_ORFCALC_STR-WRONG_ASSIGN sy-vline
WA_ORFCALC_STR-MTBE_SY_SRC sy-vline
WA_ORFCALC_STR-TAT_REP_SY_SRC sy-vline
WA_ORFCALC_STR-TAT_TRP_SY_SRC sy-vline
WA_ORFCALC_STR-EC_SY_SRC sy-vline
WA_ORFCALC_STR-HS_SY_SRC sy-vline
WA_ORFCALC_STR-PRICE_SY_SRC sy-vline
WA_ORFCALC_STR-CURR_SY_SRC sy-vline
WA_ORFCALC_STR-MATNR_SY_SRC sy-vline
WA_ORFCALC_STR-CUS_SY_SRC sy-vline
WA_ORFCALC_STR-SY_SRC_DUM1 sy-vline
WA_ORFCALC_STR-CHANGE_MAT sy-vline
WA_ORFCALC_STR-FLAG_DUM1 sy-vline
WA_ORFCALC_STR-FLAG_DUM2 sy-vline
WA_ORFCALC_STR-FLAG_DUM3 sy-vline
WA_ORFCALC_STR-FLAG_DUM4 sy-vline
WA_ORFCALC_STR-FLAG_DUM5 sy-vline
WA_ORFCALC_STR-FLAG_DUM6 sy-vline
WA_ORFCALC_STR-FLAG_DUM7 sy-vline
WA_ORFCALC_STR-FLAG_DUM8 sy-vline
WA_ORFCALC_STR-FLAG_DUM9 sy-vline
WA_ORFCALC_STR-RADIO200 sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.