ABAP Select data from SAP table LFB1_DI 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 LFB1_DI 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 LFB1_DI. 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 LFB1_DI 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_LFB1_DI TYPE STANDARD TABLE OF LFB1_DI,
      WA_LFB1_DI TYPE LFB1_DI,
      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: <LFB1_DI> TYPE LFB1_DI.

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

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

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM LFB1_DI
*  INTO TABLE @DATA(IT_LFB1_DI2).
*--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_LFB1_DI INDEX 1 INTO DATA(WA_LFB1_DI2).


*Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL
LOOP AT IT_LFB1_DI ASSIGNING <LFB1_DI>.
*To update a field value using a field symbol simply change the value via the field symbol pointer
<LFB1_DI>-BEGRU_LFB1 = 1.
<LFB1_DI>-ALTKN_LFB1 = 1.
<LFB1_DI>-PERNR_LFB1 = 1.
<LFB1_DI>-AKONT_LFB1 = 1.
<LFB1_DI>-ZUAWA_LFB1 = 1.
ENDLOOP.

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

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_LFB1_DI-LNRZE, sy-vline,
WA_LFB1_DI-FRGRP_LFB1, sy-vline,
WA_LFB1_DI-FDGRV_LFB1, sy-vline,
WA_LFB1_DI-BLNKZ_LFB1, sy-vline,
WA_LFB1_DI-MINDK, sy-vline,
WA_LFB1_DI-CERDT, sy-vline.
ENDLOOP. *Add any further fields from structure WA_LFB1_DI 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_LFB1_DI 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_LFB1_DI INTO WA_LFB1_DI. *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 AKONT_LFB1 CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_LFB1_DI-AKONT_LFB1 IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_LFB1_DI-AKONT_LFB1.
WRITE:/ 'New Value:', ld_input.

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

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

*Conversion exit ALPHA, internal->external for field LNRZB CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_LFB1_DI-LNRZB IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_LFB1_DI-LNRZB.
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_LFB1_DI_STR,
BEGRU_LFB1 TYPE STRING,
ALTKN_LFB1 TYPE STRING,
PERNR_LFB1 TYPE STRING,
AKONT_LFB1 TYPE STRING,
ZUAWA_LFB1 TYPE STRING,
LNRZE TYPE STRING,
FRGRP_LFB1 TYPE STRING,
FDGRV_LFB1 TYPE STRING,
BLNKZ_LFB1 TYPE STRING,
MINDK TYPE STRING,
CERDT TYPE STRING,
VZSKZ_LFB1 TYPE STRING,
ZINRT_LFB1 TYPE STRING,
ZINDT_LFB1 TYPE STRING,
DATLZ_LFB1 TYPE STRING,
QSSKZ TYPE STRING,
QLAND TYPE STRING,
QSREC TYPE STRING,
QSZNR TYPE STRING,
QSZDT TYPE STRING,
QSBGR TYPE STRING,
ZTERM_LFB1 TYPE STRING,
GUZTE_LFB1 TYPE STRING,
KULTG_LFB1 TYPE STRING,
TOGRU_LFB1 TYPE STRING,
REPRF TYPE STRING,
ZWELS_LFB1 TYPE STRING,
ZAHLS_LFB1 TYPE STRING,
LNRZB TYPE STRING,
HBKID_LFB1 TYPE STRING,
XPORE_LFB1 TYPE STRING,
ZGRUP_LFB1 TYPE STRING,
WEBTR_LFB1 TYPE STRING,
UZAWE_LFB1 TYPE STRING,
XEDIP_LFB1 TYPE STRING,
TOGRR TYPE STRING,END OF T_EKKO_STR. DATA: WA_LFB1_DI_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_LFB1_DI_STR-BEGRU_LFB1 sy-vline
WA_LFB1_DI_STR-ALTKN_LFB1 sy-vline
WA_LFB1_DI_STR-PERNR_LFB1 sy-vline
WA_LFB1_DI_STR-AKONT_LFB1 sy-vline
WA_LFB1_DI_STR-ZUAWA_LFB1 sy-vline
WA_LFB1_DI_STR-LNRZE sy-vline
WA_LFB1_DI_STR-FRGRP_LFB1 sy-vline
WA_LFB1_DI_STR-FDGRV_LFB1 sy-vline
WA_LFB1_DI_STR-BLNKZ_LFB1 sy-vline
WA_LFB1_DI_STR-MINDK sy-vline
WA_LFB1_DI_STR-CERDT sy-vline
WA_LFB1_DI_STR-VZSKZ_LFB1 sy-vline
WA_LFB1_DI_STR-ZINRT_LFB1 sy-vline
WA_LFB1_DI_STR-ZINDT_LFB1 sy-vline
WA_LFB1_DI_STR-DATLZ_LFB1 sy-vline
WA_LFB1_DI_STR-QSSKZ sy-vline
WA_LFB1_DI_STR-QLAND sy-vline
WA_LFB1_DI_STR-QSREC sy-vline
WA_LFB1_DI_STR-QSZNR sy-vline
WA_LFB1_DI_STR-QSZDT sy-vline
WA_LFB1_DI_STR-QSBGR sy-vline
WA_LFB1_DI_STR-ZTERM_LFB1 sy-vline
WA_LFB1_DI_STR-GUZTE_LFB1 sy-vline
WA_LFB1_DI_STR-KULTG_LFB1 sy-vline
WA_LFB1_DI_STR-TOGRU_LFB1 sy-vline
WA_LFB1_DI_STR-REPRF sy-vline
WA_LFB1_DI_STR-ZWELS_LFB1 sy-vline
WA_LFB1_DI_STR-ZAHLS_LFB1 sy-vline
WA_LFB1_DI_STR-LNRZB sy-vline
WA_LFB1_DI_STR-HBKID_LFB1 sy-vline
WA_LFB1_DI_STR-XPORE_LFB1 sy-vline
WA_LFB1_DI_STR-ZGRUP_LFB1 sy-vline
WA_LFB1_DI_STR-WEBTR_LFB1 sy-vline
WA_LFB1_DI_STR-UZAWE_LFB1 sy-vline
WA_LFB1_DI_STR-XEDIP_LFB1 sy-vline
WA_LFB1_DI_STR-TOGRR sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.