ABAP Select data from SAP table CMAKEBTTP 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 CMAKEBTTP 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 CMAKEBTTP. 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 CMAKEBTTP 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_CMAKEBTTP TYPE STANDARD TABLE OF CMAKEBTTP,
      WA_CMAKEBTTP TYPE CMAKEBTTP,
      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: <CMAKEBTTP> TYPE CMAKEBTTP.

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

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

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM CMAKEBTTP
*  INTO TABLE @DATA(IT_CMAKEBTTP2).
*--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_CMAKEBTTP INDEX 1 INTO DATA(WA_CMAKEBTTP2).


*Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL
LOOP AT IT_CMAKEBTTP ASSIGNING <CMAKEBTTP>.
*To update a field value using a field symbol simply change the value via the field symbol pointer
<CMAKEBTTP>-MANDT = 1.
<CMAKEBTTP>-PAYMENTREQUEST = 1.
<CMAKEBTTP>-VALUEDATE = 1.
<CMAKEBTTP>-ACCOUNTINGDOCUMENTCREATIONDATE = 1.
<CMAKEBTTP>-PAYINGCOMPANYCODE = 1.
ENDLOOP.

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

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_CMAKEBTTP-PAYINGCOMPANYCODENAME, sy-vline,
WA_CMAKEBTTP-PAYINGBANKACCOUNTINTERNALID, sy-vline,
WA_CMAKEBTTP-PAYINGBANKACCOUNT, sy-vline,
WA_CMAKEBTTP-PAYINGBANKACCOUNTDESCRIPTION, sy-vline,
WA_CMAKEBTTP-PAYINGHOUSEBANK, sy-vline,
WA_CMAKEBTTP-PAYINGHOUSEBANKACCOUNT, sy-vline.
ENDLOOP. *Add any further fields from structure WA_CMAKEBTTP 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_CMAKEBTTP 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_CMAKEBTTP INTO WA_CMAKEBTTP. *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 PAYMENTREQUEST CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_CMAKEBTTP-PAYMENTREQUEST IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_CMAKEBTTP-PAYMENTREQUEST.
WRITE:/ 'New Value:', ld_input.

*Conversion exit AU132, internal->external for field PAYMENTREQUESTAMOUNTINPAYTCRCY CALL FUNCTION 'CONVERSION_EXIT_AU132_OUTPUT' EXPORTING input = WA_CMAKEBTTP-PAYMENTREQUESTAMOUNTINPAYTCRCY IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_CMAKEBTTP-PAYMENTREQUESTAMOUNTINPAYTCRCY.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ALPHA, internal->external for field CLEARINGACCOUNTINGDOCUMENT CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_CMAKEBTTP-CLEARINGACCOUNTINGDOCUMENT IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_CMAKEBTTP-CLEARINGACCOUNTINGDOCUMENT.
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_CMAKEBTTP_STR,
MANDT TYPE STRING,
PAYMENTREQUEST TYPE STRING,
VALUEDATE TYPE STRING,
ACCOUNTINGDOCUMENTCREATIONDATE TYPE STRING,
PAYINGCOMPANYCODE TYPE STRING,
PAYINGCOMPANYCODENAME TYPE STRING,
PAYINGBANKACCOUNTINTERNALID TYPE STRING,
PAYINGBANKACCOUNT TYPE STRING,
PAYINGBANKACCOUNTDESCRIPTION TYPE STRING,
PAYINGHOUSEBANK TYPE STRING,
PAYINGHOUSEBANKACCOUNT TYPE STRING,
PAYEEHOUSEBANK TYPE STRING,
PAYEEHOUSEBANKACCOUNT TYPE STRING,
PAYMENTREQUESTAMOUNTINPAYTCRCY TYPE STRING,
PAYMENTREQUESTCURRENCY TYPE STRING,
PAYMENTMETHOD TYPE STRING,
PAYMENTMETHODNAME TYPE STRING,
PAYEEBANKACCOUNTINTERNALID TYPE STRING,
PAYEEBANKACCOUNT TYPE STRING,
PAYEEBANKACCOUNTDESCRIPTION TYPE STRING,
PAYEECOMPANYCODE TYPE STRING,
PAYEECOMPANYCODENAME TYPE STRING,
CREATEDBYUSER TYPE STRING,
CREATEDBYUSERDESCRIPTION TYPE STRING,
STATUSCODE TYPE STRING,
SYSTEMSTATUSNAME TYPE STRING,
PAYMENTREQUESTPOSTINGDATE TYPE STRING,
NOTE TYPE STRING,
CLEARINGACCOUNTINGDOCUMENT TYPE STRING,
REPETITIVECODE TYPE STRING,
PAYTREQISRELEASEDFORPOSTING TYPE STRING,
PAYTREQISCOMPLETED TYPE STRING,
PAYTREQISRELEASEDFORPAYMENT TYPE STRING,
ISREVERSED TYPE STRING,
BANKTRANSFERRELEASEANDPAY TYPE STRING,
PAYINGBANKKEY TYPE STRING,
BANKNAME TYPE STRING,
PAYEEBANKKEY TYPE STRING,
PAYEEBANKNAME TYPE STRING,
BANKACCOUNTREVISION TYPE STRING,
ISSINGLEPAYMENT TYPE STRING,
STATECENTRALBANKPAYMENTREASON TYPE STRING,
SUPPLYINGCOUNTRY TYPE STRING,
DATAEXCHANGEINSTRUCTIONKEY TYPE STRING,
DATAEXCHANGEINSTRUCTION1 TYPE STRING,
DATAEXCHANGEINSTRUCTION2 TYPE STRING,
DATAEXCHANGEINSTRUCTION3 TYPE STRING,
DATAEXCHANGEINSTRUCTION4 TYPE STRING,
PAYMENTMETHODSUPPLEMENT TYPE STRING,
PAYMENTREFERENCE TYPE STRING,
COUNTRY TYPE STRING,
LOGHANDLE TYPE STRING,END OF T_EKKO_STR. DATA: WA_CMAKEBTTP_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_CMAKEBTTP_STR-MANDT sy-vline
WA_CMAKEBTTP_STR-PAYMENTREQUEST sy-vline
WA_CMAKEBTTP_STR-VALUEDATE sy-vline
WA_CMAKEBTTP_STR-ACCOUNTINGDOCUMENTCREATIONDATE sy-vline
WA_CMAKEBTTP_STR-PAYINGCOMPANYCODE sy-vline
WA_CMAKEBTTP_STR-PAYINGCOMPANYCODENAME sy-vline
WA_CMAKEBTTP_STR-PAYINGBANKACCOUNTINTERNALID sy-vline
WA_CMAKEBTTP_STR-PAYINGBANKACCOUNT sy-vline
WA_CMAKEBTTP_STR-PAYINGBANKACCOUNTDESCRIPTION sy-vline
WA_CMAKEBTTP_STR-PAYINGHOUSEBANK sy-vline
WA_CMAKEBTTP_STR-PAYINGHOUSEBANKACCOUNT sy-vline
WA_CMAKEBTTP_STR-PAYEEHOUSEBANK sy-vline
WA_CMAKEBTTP_STR-PAYEEHOUSEBANKACCOUNT sy-vline
WA_CMAKEBTTP_STR-PAYMENTREQUESTAMOUNTINPAYTCRCY sy-vline
WA_CMAKEBTTP_STR-PAYMENTREQUESTCURRENCY sy-vline
WA_CMAKEBTTP_STR-PAYMENTMETHOD sy-vline
WA_CMAKEBTTP_STR-PAYMENTMETHODNAME sy-vline
WA_CMAKEBTTP_STR-PAYEEBANKACCOUNTINTERNALID sy-vline
WA_CMAKEBTTP_STR-PAYEEBANKACCOUNT sy-vline
WA_CMAKEBTTP_STR-PAYEEBANKACCOUNTDESCRIPTION sy-vline
WA_CMAKEBTTP_STR-PAYEECOMPANYCODE sy-vline
WA_CMAKEBTTP_STR-PAYEECOMPANYCODENAME sy-vline
WA_CMAKEBTTP_STR-CREATEDBYUSER sy-vline
WA_CMAKEBTTP_STR-CREATEDBYUSERDESCRIPTION sy-vline
WA_CMAKEBTTP_STR-STATUSCODE sy-vline
WA_CMAKEBTTP_STR-SYSTEMSTATUSNAME sy-vline
WA_CMAKEBTTP_STR-PAYMENTREQUESTPOSTINGDATE sy-vline
WA_CMAKEBTTP_STR-NOTE sy-vline
WA_CMAKEBTTP_STR-CLEARINGACCOUNTINGDOCUMENT sy-vline
WA_CMAKEBTTP_STR-REPETITIVECODE sy-vline
WA_CMAKEBTTP_STR-PAYTREQISRELEASEDFORPOSTING sy-vline
WA_CMAKEBTTP_STR-PAYTREQISCOMPLETED sy-vline
WA_CMAKEBTTP_STR-PAYTREQISRELEASEDFORPAYMENT sy-vline
WA_CMAKEBTTP_STR-ISREVERSED sy-vline
WA_CMAKEBTTP_STR-BANKTRANSFERRELEASEANDPAY sy-vline
WA_CMAKEBTTP_STR-PAYINGBANKKEY sy-vline
WA_CMAKEBTTP_STR-BANKNAME sy-vline
WA_CMAKEBTTP_STR-PAYEEBANKKEY sy-vline
WA_CMAKEBTTP_STR-PAYEEBANKNAME sy-vline
WA_CMAKEBTTP_STR-BANKACCOUNTREVISION sy-vline
WA_CMAKEBTTP_STR-ISSINGLEPAYMENT sy-vline
WA_CMAKEBTTP_STR-STATECENTRALBANKPAYMENTREASON sy-vline
WA_CMAKEBTTP_STR-SUPPLYINGCOUNTRY sy-vline
WA_CMAKEBTTP_STR-DATAEXCHANGEINSTRUCTIONKEY sy-vline
WA_CMAKEBTTP_STR-DATAEXCHANGEINSTRUCTION1 sy-vline
WA_CMAKEBTTP_STR-DATAEXCHANGEINSTRUCTION2 sy-vline
WA_CMAKEBTTP_STR-DATAEXCHANGEINSTRUCTION3 sy-vline
WA_CMAKEBTTP_STR-DATAEXCHANGEINSTRUCTION4 sy-vline
WA_CMAKEBTTP_STR-PAYMENTMETHODSUPPLEMENT sy-vline
WA_CMAKEBTTP_STR-PAYMENTREFERENCE sy-vline
WA_CMAKEBTTP_STR-COUNTRY sy-vline
WA_CMAKEBTTP_STR-LOGHANDLE sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.