ABAP Select data from SAP table RKB1B 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 RKB1B 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 RKB1B. 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 RKB1B 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_RKB1B TYPE STANDARD TABLE OF RKB1B,
      WA_RKB1B TYPE RKB1B,
      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: <RKB1B> TYPE RKB1B.

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

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

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM RKB1B
*  INTO TABLE @DATA(IT_RKB1B2).
*--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_RKB1B INDEX 1 INTO DATA(WA_RKB1B2).


*Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL
LOOP AT IT_RKB1B ASSIGNING <RKB1B>.
*To update a field value using a field symbol simply change the value via the field symbol pointer
<RKB1B>-FUNC_START = 1.
<RKB1B>-FUNC_BVZ = 1.
<RKB1B>-FUNC_DEF = 1.
<RKB1B>-FUNCD_ANL = 1.
<RKB1B>-FUNCD_AEN = 1.
ENDLOOP.

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

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_RKB1B-FUNCD_COP, sy-vline,
WA_RKB1B-FUNCD_LOE, sy-vline,
WA_RKB1B-FUNCDA_EIN, sy-vline,
WA_RKB1B-FUNCDA_VGL, sy-vline,
WA_RKB1B-AUSWAHLE1, sy-vline,
WA_RKB1B-AUSWAHLE2, sy-vline.
ENDLOOP. *Add any further fields from structure WA_RKB1B 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_RKB1B 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_RKB1B INTO WA_RKB1B. *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 AC132, internal->external for field BWRT CALL FUNCTION 'CONVERSION_EXIT_AC132_OUTPUT' EXPORTING input = WA_RKB1B-BWRT IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RKB1B-BWRT.
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_RKB1B_STR,
FUNC_START TYPE STRING,
FUNC_BVZ TYPE STRING,
FUNC_DEF TYPE STRING,
FUNCD_ANL TYPE STRING,
FUNCD_AEN TYPE STRING,
FUNCD_COP TYPE STRING,
FUNCD_LOE TYPE STRING,
FUNCDA_EIN TYPE STRING,
FUNCDA_VGL TYPE STRING,
AUSWAHLE1 TYPE STRING,
AUSWAHLE2 TYPE STRING,
AUSWAHLE3 TYPE STRING,
LNMI1 TYPE STRING,
LNMI2 TYPE STRING,
LNMI3 TYPE STRING,
AUSWAHLW1 TYPE STRING,
AUSWAHLW2 TYPE STRING,
AUSWAHLW3 TYPE STRING,
TEXTMT1 TYPE STRING,
TEXTMT2 TYPE STRING,
TEXTMT3 TYPE STRING,
ZEILE1 TYPE STRING,
ZEILE2 TYPE STRING,
ZEILE3 TYPE STRING,
LNMI01 TYPE STRING,
NUMMER01 TYPE STRING,
AUSPG01 TYPE STRING,
TXT01 TYPE STRING,
TXT02 TYPE STRING,
TXT03 TYPE STRING,
TXT04 TYPE STRING,
TXT05 TYPE STRING,
TXT06 TYPE STRING,
TXT07 TYPE STRING,
TXT08 TYPE STRING,
TXT09 TYPE STRING,
TXT10 TYPE STRING,
TXT11 TYPE STRING,
TXT12 TYPE STRING,
TXT13 TYPE STRING,
TXT14 TYPE STRING,
TXT15 TYPE STRING,
SEITE TYPE STRING,
LETZTE_S TYPE STRING,
FUNC_D0 TYPE STRING,
FUNC_D1 TYPE STRING,
FUNC_D2 TYPE STRING,
FUNC_D3 TYPE STRING,
FUNC_D4 TYPE STRING,
FUNC_D5 TYPE STRING,
FUNC_D6 TYPE STRING,
FUNC_D7 TYPE STRING,
FUNC_D8 TYPE STRING,
FUNC_D9 TYPE STRING,
EVKZTXT TYPE STRING,
OK TYPE STRING,
SPALTE TYPE STRING,
DECIM TYPE STRING,
ROUND TYPE STRING,
KOMMA TYPE STRING,
CUKYD TYPE STRING,
BWRT TYPE STRING,
BOPE TYPE STRING,
TOPN TYPE STRING,
TOPP TYPE STRING,
ASCDESC TYPE STRING,
WERTDAR TYPE STRING,
DARSTELL TYPE STRING,
EPOS TYPE STRING,
INDX TYPE STRING,
LTEXT TYPE STRING,
VBERNAME TYPE STRING,
PLISZ TYPE STRING,
NSKSZ TYPE STRING,
COLSZ TYPE STRING,
EXPIN1 TYPE STRING,
EXPIN2 TYPE STRING,
EXPIN3 TYPE STRING,
SORT TYPE STRING,
VARIN1 TYPE STRING,
VARIN2 TYPE STRING,
VARIN3 TYPE STRING,
BININ TYPE STRING,
SIGNIF TYPE STRING,
SPURA TYPE STRING,
DSAVE2 TYPE STRING,
METHOD1 TYPE STRING,
METHOD2 TYPE STRING,
DSAVE3 TYPE STRING,
RS_ZEILE TYPE STRING,
RS_TEXT TYPE STRING,
EPOS_WRN_TYPE TYPE STRING,END OF T_EKKO_STR. DATA: WA_RKB1B_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_RKB1B_STR-FUNC_START sy-vline
WA_RKB1B_STR-FUNC_BVZ sy-vline
WA_RKB1B_STR-FUNC_DEF sy-vline
WA_RKB1B_STR-FUNCD_ANL sy-vline
WA_RKB1B_STR-FUNCD_AEN sy-vline
WA_RKB1B_STR-FUNCD_COP sy-vline
WA_RKB1B_STR-FUNCD_LOE sy-vline
WA_RKB1B_STR-FUNCDA_EIN sy-vline
WA_RKB1B_STR-FUNCDA_VGL sy-vline
WA_RKB1B_STR-AUSWAHLE1 sy-vline
WA_RKB1B_STR-AUSWAHLE2 sy-vline
WA_RKB1B_STR-AUSWAHLE3 sy-vline
WA_RKB1B_STR-LNMI1 sy-vline
WA_RKB1B_STR-LNMI2 sy-vline
WA_RKB1B_STR-LNMI3 sy-vline
WA_RKB1B_STR-AUSWAHLW1 sy-vline
WA_RKB1B_STR-AUSWAHLW2 sy-vline
WA_RKB1B_STR-AUSWAHLW3 sy-vline
WA_RKB1B_STR-TEXTMT1 sy-vline
WA_RKB1B_STR-TEXTMT2 sy-vline
WA_RKB1B_STR-TEXTMT3 sy-vline
WA_RKB1B_STR-ZEILE1 sy-vline
WA_RKB1B_STR-ZEILE2 sy-vline
WA_RKB1B_STR-ZEILE3 sy-vline
WA_RKB1B_STR-LNMI01 sy-vline
WA_RKB1B_STR-NUMMER01 sy-vline
WA_RKB1B_STR-AUSPG01 sy-vline
WA_RKB1B_STR-TXT01 sy-vline
WA_RKB1B_STR-TXT02 sy-vline
WA_RKB1B_STR-TXT03 sy-vline
WA_RKB1B_STR-TXT04 sy-vline
WA_RKB1B_STR-TXT05 sy-vline
WA_RKB1B_STR-TXT06 sy-vline
WA_RKB1B_STR-TXT07 sy-vline
WA_RKB1B_STR-TXT08 sy-vline
WA_RKB1B_STR-TXT09 sy-vline
WA_RKB1B_STR-TXT10 sy-vline
WA_RKB1B_STR-TXT11 sy-vline
WA_RKB1B_STR-TXT12 sy-vline
WA_RKB1B_STR-TXT13 sy-vline
WA_RKB1B_STR-TXT14 sy-vline
WA_RKB1B_STR-TXT15 sy-vline
WA_RKB1B_STR-SEITE sy-vline
WA_RKB1B_STR-LETZTE_S sy-vline
WA_RKB1B_STR-FUNC_D0 sy-vline
WA_RKB1B_STR-FUNC_D1 sy-vline
WA_RKB1B_STR-FUNC_D2 sy-vline
WA_RKB1B_STR-FUNC_D3 sy-vline
WA_RKB1B_STR-FUNC_D4 sy-vline
WA_RKB1B_STR-FUNC_D5 sy-vline
WA_RKB1B_STR-FUNC_D6 sy-vline
WA_RKB1B_STR-FUNC_D7 sy-vline
WA_RKB1B_STR-FUNC_D8 sy-vline
WA_RKB1B_STR-FUNC_D9 sy-vline
WA_RKB1B_STR-EVKZTXT sy-vline
WA_RKB1B_STR-OK sy-vline
WA_RKB1B_STR-SPALTE sy-vline
WA_RKB1B_STR-DECIM sy-vline
WA_RKB1B_STR-ROUND sy-vline
WA_RKB1B_STR-KOMMA sy-vline
WA_RKB1B_STR-CUKYD sy-vline
WA_RKB1B_STR-BWRT sy-vline
WA_RKB1B_STR-BOPE sy-vline
WA_RKB1B_STR-TOPN sy-vline
WA_RKB1B_STR-TOPP sy-vline
WA_RKB1B_STR-ASCDESC sy-vline
WA_RKB1B_STR-WERTDAR sy-vline
WA_RKB1B_STR-DARSTELL sy-vline
WA_RKB1B_STR-EPOS sy-vline
WA_RKB1B_STR-INDX sy-vline
WA_RKB1B_STR-LTEXT sy-vline
WA_RKB1B_STR-VBERNAME sy-vline
WA_RKB1B_STR-PLISZ sy-vline
WA_RKB1B_STR-NSKSZ sy-vline
WA_RKB1B_STR-COLSZ sy-vline
WA_RKB1B_STR-EXPIN1 sy-vline
WA_RKB1B_STR-EXPIN2 sy-vline
WA_RKB1B_STR-EXPIN3 sy-vline
WA_RKB1B_STR-SORT sy-vline
WA_RKB1B_STR-VARIN1 sy-vline
WA_RKB1B_STR-VARIN2 sy-vline
WA_RKB1B_STR-VARIN3 sy-vline
WA_RKB1B_STR-BININ sy-vline
WA_RKB1B_STR-SIGNIF sy-vline
WA_RKB1B_STR-SPURA sy-vline
WA_RKB1B_STR-DSAVE2 sy-vline
WA_RKB1B_STR-METHOD1 sy-vline
WA_RKB1B_STR-METHOD2 sy-vline
WA_RKB1B_STR-DSAVE3 sy-vline
WA_RKB1B_STR-RS_ZEILE sy-vline
WA_RKB1B_STR-RS_TEXT sy-vline
WA_RKB1B_STR-EPOS_WRN_TYPE sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.