ABAP Select data from SAP table CPOITEMTP 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 CPOITEMTP 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 CPOITEMTP. 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 CPOITEMTP 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_CPOITEMTP TYPE STANDARD TABLE OF CPOITEMTP,
      WA_CPOITEMTP TYPE CPOITEMTP,
      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: <CPOITEMTP> TYPE CPOITEMTP.

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

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

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM CPOITEMTP
*  INTO TABLE @DATA(IT_CPOITEMTP2).
*--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_CPOITEMTP INDEX 1 INTO DATA(WA_CPOITEMTP2).


*Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL
LOOP AT IT_CPOITEMTP ASSIGNING <CPOITEMTP>.
*To update a field value using a field symbol simply change the value via the field symbol pointer
<CPOITEMTP>-MANDT = 1.
<CPOITEMTP>-PROCUREMENTHUBPO = 1.
<CPOITEMTP>-PURCHASEORDERITEM = 1.
<CPOITEMTP>-EXTSOURCESYSTEM = 1.
<CPOITEMTP>-PROCMTHUBPOITEMUNIQUEID = 1.
ENDLOOP.

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

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_CPOITEMTP-PURCHASEORDERITEMCATEGORY, sy-vline,
WA_CPOITEMTP-PURORDEXTERNALITEMCATEGORY, sy-vline,
WA_CPOITEMTP-ITEMCATEGORYNAME, sy-vline,
WA_CPOITEMTP-MATERIAL, sy-vline,
WA_CPOITEMTP-MATERIALNAME, sy-vline,
WA_CPOITEMTP-PURCHASEORDERITEMTEXT, sy-vline.
ENDLOOP. *Add any further fields from structure WA_CPOITEMTP 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_CPOITEMTP 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_CPOITEMTP INTO WA_CPOITEMTP. *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 ALPHA, internal->external for field PROCUREMENTHUBPO CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_CPOITEMTP-PROCUREMENTHUBPO IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_CPOITEMTP-PROCUREMENTHUBPO.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ALPHA, internal->external for field PROCMTHUBPOITEMUNIQUEID CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_CPOITEMTP-PROCMTHUBPOITEMUNIQUEID IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_CPOITEMTP-PROCMTHUBPOITEMUNIQUEID.
WRITE:/ 'New Value:', ld_input.

*Conversion exit MATN1, internal->external for field MATERIAL CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT' EXPORTING input = WA_CPOITEMTP-MATERIAL IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_CPOITEMTP-MATERIAL.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ALPHA, internal->external for field SERVICEPERFORMER CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_CPOITEMTP-SERVICEPERFORMER IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_CPOITEMTP-SERVICEPERFORMER.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ALPHA, internal->external for field ITEMDELIVERYADDRESSID CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_CPOITEMTP-ITEMDELIVERYADDRESSID IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_CPOITEMTP-ITEMDELIVERYADDRESSID.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ALPHA, internal->external for field CUSTOMER CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_CPOITEMTP-CUSTOMER IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_CPOITEMTP-CUSTOMER.
WRITE:/ 'New Value:', ld_input.

*Conversion exit CUNIT, internal->external for field ORDERPRICEUNIT CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT' EXPORTING input = WA_CPOITEMTP-ORDERPRICEUNIT IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_CPOITEMTP-ORDERPRICEUNIT.
WRITE:/ 'New Value:', ld_input.

*Conversion exit CUNIT, internal->external for field PURCHASEORDERQUANTITYUNIT CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT' EXPORTING input = WA_CPOITEMTP-PURCHASEORDERQUANTITYUNIT IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_CPOITEMTP-PURCHASEORDERQUANTITYUNIT.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ALPHA, internal->external for field PURCHASINGINFORECORD CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_CPOITEMTP-PURCHASINGINFORECORD IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_CPOITEMTP-PURCHASINGINFORECORD.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ALPHA, internal->external for field PURCHASECONTRACT CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_CPOITEMTP-PURCHASECONTRACT IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_CPOITEMTP-PURCHASECONTRACT.
WRITE:/ 'New Value:', ld_input.

*Conversion exit MATN1, internal->external for field MANUFACTURERMATERIAL CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT' EXPORTING input = WA_CPOITEMTP-MANUFACTURERMATERIAL IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_CPOITEMTP-MANUFACTURERMATERIAL.
WRITE:/ 'New Value:', ld_input.

*Conversion exit CUNIT, internal->external for field ITEMVOLUMEUNIT CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT' EXPORTING input = WA_CPOITEMTP-ITEMVOLUMEUNIT IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_CPOITEMTP-ITEMVOLUMEUNIT.
WRITE:/ 'New Value:', ld_input.

*Conversion exit CUNIT, internal->external for field ITEMWEIGHTUNIT CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT' EXPORTING input = WA_CPOITEMTP-ITEMWEIGHTUNIT IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_CPOITEMTP-ITEMWEIGHTUNIT.
WRITE:/ 'New Value:', ld_input.

*Conversion exit EAN11, internal->external for field INTERNATIONALARTICLENUMBER CALL FUNCTION 'CONVERSION_EXIT_EAN11_OUTPUT' EXPORTING input = WA_CPOITEMTP-INTERNATIONALARTICLENUMBER IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_CPOITEMTP-INTERNATIONALARTICLENUMBER.
WRITE:/ 'New Value:', ld_input.

*Conversion exit CUNIT, internal->external for field BASEUNIT CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT' EXPORTING input = WA_CPOITEMTP-BASEUNIT IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_CPOITEMTP-BASEUNIT.
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_CPOITEMTP_STR,
MANDT TYPE STRING,
PROCUREMENTHUBPO TYPE STRING,
PURCHASEORDERITEM TYPE STRING,
EXTSOURCESYSTEM TYPE STRING,
PROCMTHUBPOITEMUNIQUEID TYPE STRING,
PURCHASEORDERITEMCATEGORY TYPE STRING,
PURORDEXTERNALITEMCATEGORY TYPE STRING,
ITEMCATEGORYNAME TYPE STRING,
MATERIAL TYPE STRING,
MATERIALNAME TYPE STRING,
PURCHASEORDERITEMTEXT TYPE STRING,
MATERIALGROUP TYPE STRING,
HASNOTE TYPE STRING,
HASATTACHMENT TYPE STRING,
SERVICEPERFORMER TYPE STRING,
ITEMDELIVERYADDRESSID TYPE STRING,
PRODUCTGROUPNAME TYPE STRING,
PLANT TYPE STRING,
PROCMTHUBPLANTNAME TYPE STRING,
ORDERQUANTITY TYPE STRING,
NETPRICEAMOUNT TYPE STRING,
NETPRICEQUANTITY TYPE STRING,
NETAMOUNT TYPE STRING,
EXPECTEDOVERALLLIMITAMOUNT TYPE STRING,
OVERALLLIMITAMOUNT TYPE STRING,
CUSTOMER TYPE STRING,
PURCHASINGDOCUMENTDELETIONCODE TYPE STRING,
ISDELETED TYPE STRING,
DOCUMENTCURRENCY TYPE STRING,
ORDERPRICEUNIT TYPE STRING,
PURCHASEORDERQUANTITYUNIT TYPE STRING,
GOODSRECEIPTISEXPECTED TYPE STRING,
GOODSRECEIPTISNONVALUATED TYPE STRING,
INVOICEISEXPECTED TYPE STRING,
ISFINALLYINVOICED TYPE STRING,
INVOICEISGOODSRECEIPTBASED TYPE STRING,
ISCOMPLETELYDELIVERED TYPE STRING,
OVERDELIVTOLRTDLMTRATIOINPCT TYPE STRING,
UNDERDELIVTOLRTDLMTRATIOINPCT TYPE STRING,
UNLIMITEDOVERDELIVERYISALLOWED TYPE STRING,
STORAGELOCATION TYPE STRING,
INTRASTATSERVICECODE TYPE STRING,
COMMODITYCODE TYPE STRING,
PURCHASEORDERITEMSTATUS TYPE STRING,
INCOTERMSCLASSIFICATION TYPE STRING,
INCOTERMSLOCATION1 TYPE STRING,
INCOTERMSLOCATION2 TYPE STRING,
FULLNAME TYPE STRING,
STREETNAME TYPE STRING,
HOUSENUMBER TYPE STRING,
POSTALCODE TYPE STRING,
CITYNAME TYPE STRING,
REGION TYPE STRING,
COUNTRY TYPE STRING,
PURCHASINGINFORECORD TYPE STRING,
PURCHASECONTRACT TYPE STRING,
PURCHASECONTRACTITEM TYPE STRING,
ACCOUNTASSIGNMENTCATEGORY TYPE STRING,
ACCTASSIGNMENTCATEGORYNAME TYPE STRING,
TAXCODE TYPE STRING,
TAXCODENAME TYPE STRING,
TAXJURISDICTION TYPE STRING,
TAXCALCULATIONPROCEDURE TYPE STRING,
NOTETYPELISTTEXT TYPE STRING,
SUPPLIERMATERIALNUMBER TYPE STRING,
MANUFACTURERPARTNMBR TYPE STRING,
MANUFACTURERMATERIAL TYPE STRING,
ORDERITEMQTYTOBASEQTYNMRTR TYPE STRING,
ORDERITEMQTYTOBASEQTYDNMNTR TYPE STRING,
EVALDRCPTSETTLMTISALLOWED TYPE STRING,
ITEMVOLUMEUNIT TYPE STRING,
ITEMWEIGHTUNIT TYPE STRING,
MULTIPLEACCTASSGMTDISTRIBUTION TYPE STRING,
PARTIALINVOICEDISTRIBUTION TYPE STRING,
PRICINGDATECONTROL TYPE STRING,
ISSTATISTICALITEM TYPE STRING,
ISRETURNSITEM TYPE STRING,
INTERNATIONALARTICLENUMBER TYPE STRING,
SUPPLIERCONFIRMATIONCONTROLKEY TYPE STRING,
PRICEISTOBEPRINTED TYPE STRING,
EFFECTIVEAMOUNT TYPE STRING,
ORDERPRICEUNITTOORDERUNITNMRTR TYPE STRING,
ORDPRICEUNITTOORDERUNITDNMNTR TYPE STRING,
BASEUNIT TYPE STRING,
REQUISITIONERNAME TYPE STRING,
PLANNEDDELIVERYDURATIONINDAYS TYPE STRING,
CONSUMPTIONPOSTING TYPE STRING,
COMPANYCODE TYPE STRING,END OF T_EKKO_STR. DATA: WA_CPOITEMTP_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_CPOITEMTP_STR-MANDT sy-vline
WA_CPOITEMTP_STR-PROCUREMENTHUBPO sy-vline
WA_CPOITEMTP_STR-PURCHASEORDERITEM sy-vline
WA_CPOITEMTP_STR-EXTSOURCESYSTEM sy-vline
WA_CPOITEMTP_STR-PROCMTHUBPOITEMUNIQUEID sy-vline
WA_CPOITEMTP_STR-PURCHASEORDERITEMCATEGORY sy-vline
WA_CPOITEMTP_STR-PURORDEXTERNALITEMCATEGORY sy-vline
WA_CPOITEMTP_STR-ITEMCATEGORYNAME sy-vline
WA_CPOITEMTP_STR-MATERIAL sy-vline
WA_CPOITEMTP_STR-MATERIALNAME sy-vline
WA_CPOITEMTP_STR-PURCHASEORDERITEMTEXT sy-vline
WA_CPOITEMTP_STR-MATERIALGROUP sy-vline
WA_CPOITEMTP_STR-HASNOTE sy-vline
WA_CPOITEMTP_STR-HASATTACHMENT sy-vline
WA_CPOITEMTP_STR-SERVICEPERFORMER sy-vline
WA_CPOITEMTP_STR-ITEMDELIVERYADDRESSID sy-vline
WA_CPOITEMTP_STR-PRODUCTGROUPNAME sy-vline
WA_CPOITEMTP_STR-PLANT sy-vline
WA_CPOITEMTP_STR-PROCMTHUBPLANTNAME sy-vline
WA_CPOITEMTP_STR-ORDERQUANTITY sy-vline
WA_CPOITEMTP_STR-NETPRICEAMOUNT sy-vline
WA_CPOITEMTP_STR-NETPRICEQUANTITY sy-vline
WA_CPOITEMTP_STR-NETAMOUNT sy-vline
WA_CPOITEMTP_STR-EXPECTEDOVERALLLIMITAMOUNT sy-vline
WA_CPOITEMTP_STR-OVERALLLIMITAMOUNT sy-vline
WA_CPOITEMTP_STR-CUSTOMER sy-vline
WA_CPOITEMTP_STR-PURCHASINGDOCUMENTDELETIONCODE sy-vline
WA_CPOITEMTP_STR-ISDELETED sy-vline
WA_CPOITEMTP_STR-DOCUMENTCURRENCY sy-vline
WA_CPOITEMTP_STR-ORDERPRICEUNIT sy-vline
WA_CPOITEMTP_STR-PURCHASEORDERQUANTITYUNIT sy-vline
WA_CPOITEMTP_STR-GOODSRECEIPTISEXPECTED sy-vline
WA_CPOITEMTP_STR-GOODSRECEIPTISNONVALUATED sy-vline
WA_CPOITEMTP_STR-INVOICEISEXPECTED sy-vline
WA_CPOITEMTP_STR-ISFINALLYINVOICED sy-vline
WA_CPOITEMTP_STR-INVOICEISGOODSRECEIPTBASED sy-vline
WA_CPOITEMTP_STR-ISCOMPLETELYDELIVERED sy-vline
WA_CPOITEMTP_STR-OVERDELIVTOLRTDLMTRATIOINPCT sy-vline
WA_CPOITEMTP_STR-UNDERDELIVTOLRTDLMTRATIOINPCT sy-vline
WA_CPOITEMTP_STR-UNLIMITEDOVERDELIVERYISALLOWED sy-vline
WA_CPOITEMTP_STR-STORAGELOCATION sy-vline
WA_CPOITEMTP_STR-INTRASTATSERVICECODE sy-vline
WA_CPOITEMTP_STR-COMMODITYCODE sy-vline
WA_CPOITEMTP_STR-PURCHASEORDERITEMSTATUS sy-vline
WA_CPOITEMTP_STR-INCOTERMSCLASSIFICATION sy-vline
WA_CPOITEMTP_STR-INCOTERMSLOCATION1 sy-vline
WA_CPOITEMTP_STR-INCOTERMSLOCATION2 sy-vline
WA_CPOITEMTP_STR-FULLNAME sy-vline
WA_CPOITEMTP_STR-STREETNAME sy-vline
WA_CPOITEMTP_STR-HOUSENUMBER sy-vline
WA_CPOITEMTP_STR-POSTALCODE sy-vline
WA_CPOITEMTP_STR-CITYNAME sy-vline
WA_CPOITEMTP_STR-REGION sy-vline
WA_CPOITEMTP_STR-COUNTRY sy-vline
WA_CPOITEMTP_STR-PURCHASINGINFORECORD sy-vline
WA_CPOITEMTP_STR-PURCHASECONTRACT sy-vline
WA_CPOITEMTP_STR-PURCHASECONTRACTITEM sy-vline
WA_CPOITEMTP_STR-ACCOUNTASSIGNMENTCATEGORY sy-vline
WA_CPOITEMTP_STR-ACCTASSIGNMENTCATEGORYNAME sy-vline
WA_CPOITEMTP_STR-TAXCODE sy-vline
WA_CPOITEMTP_STR-TAXCODENAME sy-vline
WA_CPOITEMTP_STR-TAXJURISDICTION sy-vline
WA_CPOITEMTP_STR-TAXCALCULATIONPROCEDURE sy-vline
WA_CPOITEMTP_STR-NOTETYPELISTTEXT sy-vline
WA_CPOITEMTP_STR-SUPPLIERMATERIALNUMBER sy-vline
WA_CPOITEMTP_STR-MANUFACTURERPARTNMBR sy-vline
WA_CPOITEMTP_STR-MANUFACTURERMATERIAL sy-vline
WA_CPOITEMTP_STR-ORDERITEMQTYTOBASEQTYNMRTR sy-vline
WA_CPOITEMTP_STR-ORDERITEMQTYTOBASEQTYDNMNTR sy-vline
WA_CPOITEMTP_STR-EVALDRCPTSETTLMTISALLOWED sy-vline
WA_CPOITEMTP_STR-ITEMVOLUMEUNIT sy-vline
WA_CPOITEMTP_STR-ITEMWEIGHTUNIT sy-vline
WA_CPOITEMTP_STR-MULTIPLEACCTASSGMTDISTRIBUTION sy-vline
WA_CPOITEMTP_STR-PARTIALINVOICEDISTRIBUTION sy-vline
WA_CPOITEMTP_STR-PRICINGDATECONTROL sy-vline
WA_CPOITEMTP_STR-ISSTATISTICALITEM sy-vline
WA_CPOITEMTP_STR-ISRETURNSITEM sy-vline
WA_CPOITEMTP_STR-INTERNATIONALARTICLENUMBER sy-vline
WA_CPOITEMTP_STR-SUPPLIERCONFIRMATIONCONTROLKEY sy-vline
WA_CPOITEMTP_STR-PRICEISTOBEPRINTED sy-vline
WA_CPOITEMTP_STR-EFFECTIVEAMOUNT sy-vline
WA_CPOITEMTP_STR-ORDERPRICEUNITTOORDERUNITNMRTR sy-vline
WA_CPOITEMTP_STR-ORDPRICEUNITTOORDERUNITDNMNTR sy-vline
WA_CPOITEMTP_STR-BASEUNIT sy-vline
WA_CPOITEMTP_STR-REQUISITIONERNAME sy-vline
WA_CPOITEMTP_STR-PLANNEDDELIVERYDURATIONINDAYS sy-vline
WA_CPOITEMTP_STR-CONSUMPTIONPOSTING sy-vline
WA_CPOITEMTP_STR-COMPANYCODE sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.