ABAP Select data from SAP table P1036 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 P1036 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 P1036. 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 P1036 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_P1036 TYPE STANDARD TABLE OF P1036,
      WA_P1036 TYPE P1036,
      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: <P1036> TYPE P1036.

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

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

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM P1036
*  INTO TABLE @DATA(IT_P10362).
*--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_P1036 INDEX 1 INTO DATA(WA_P10362).


*Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL
LOOP AT IT_P1036 ASSIGNING <P1036>.
*To update a field value using a field symbol simply change the value via the field symbol pointer
<P1036>-MANDT = 1.
<P1036>-PLVAR = 1.
<P1036>-OTYPE = 1.
<P1036>-OBJID = 1.
<P1036>-INFTY = 1.
ENDLOOP.

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

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_P1036-SUBTY, sy-vline,
WA_P1036-ISTAT, sy-vline,
WA_P1036-PRIOX, sy-vline,
WA_P1036-BEGDA, sy-vline,
WA_P1036-ENDDA, sy-vline,
WA_P1036-VARYF, sy-vline.
ENDLOOP. *Add any further fields from structure WA_P1036 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_P1036 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_P1036 INTO WA_P1036. *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 CUNIT, internal->external for field BZGME CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT' EXPORTING input = WA_P1036-BZGME IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_P1036-BZGME.
WRITE:/ 'New Value:', ld_input.

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

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

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

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

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

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

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

*Conversion exit CUNIT, internal->external for field BZGME008 CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT' EXPORTING input = WA_P1036-BZGME008 IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_P1036-BZGME008.
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_P1036_STR,
MANDT TYPE STRING,
PLVAR TYPE STRING,
OTYPE TYPE STRING,
OBJID TYPE STRING,
INFTY TYPE STRING,
SUBTY TYPE STRING,
ISTAT TYPE STRING,
PRIOX TYPE STRING,
BEGDA TYPE STRING,
ENDDA TYPE STRING,
VARYF TYPE STRING,
SEQNR TYPE STRING,
AEDTM TYPE STRING,
UNAME TYPE STRING,
REASN TYPE STRING,
HISTO TYPE STRING,
ITXNR TYPE STRING,
KOBES TYPE STRING,
PRDIR TYPE STRING,
PRICE TYPE STRING,
WAERS TYPE STRING,
BUNIT TYPE STRING,
BZGME TYPE STRING,
KOBES001 TYPE STRING,
PRDIR001 TYPE STRING,
PRICE001 TYPE STRING,
WAERS001 TYPE STRING,
BUNIT001 TYPE STRING,
BZGME001 TYPE STRING,
KOBES002 TYPE STRING,
PRDIR002 TYPE STRING,
PRICE002 TYPE STRING,
WAERS002 TYPE STRING,
BUNIT002 TYPE STRING,
BZGME002 TYPE STRING,
KOBES003 TYPE STRING,
PRDIR003 TYPE STRING,
PRICE003 TYPE STRING,
WAERS003 TYPE STRING,
BUNIT003 TYPE STRING,
BZGME003 TYPE STRING,
KOBES004 TYPE STRING,
PRDIR004 TYPE STRING,
PRICE004 TYPE STRING,
WAERS004 TYPE STRING,
BUNIT004 TYPE STRING,
BZGME004 TYPE STRING,
KOBES005 TYPE STRING,
PRDIR005 TYPE STRING,
PRICE005 TYPE STRING,
WAERS005 TYPE STRING,
BUNIT005 TYPE STRING,
BZGME005 TYPE STRING,
KOBES006 TYPE STRING,
PRDIR006 TYPE STRING,
PRICE006 TYPE STRING,
WAERS006 TYPE STRING,
BUNIT006 TYPE STRING,
BZGME006 TYPE STRING,
KOBES007 TYPE STRING,
PRDIR007 TYPE STRING,
PRICE007 TYPE STRING,
WAERS007 TYPE STRING,
BUNIT007 TYPE STRING,
BZGME007 TYPE STRING,
KOBES008 TYPE STRING,
PRDIR008 TYPE STRING,
PRICE008 TYPE STRING,
WAERS008 TYPE STRING,
BUNIT008 TYPE STRING,
BZGME008 TYPE STRING,END OF T_EKKO_STR. DATA: WA_P1036_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_P1036_STR-MANDT sy-vline
WA_P1036_STR-PLVAR sy-vline
WA_P1036_STR-OTYPE sy-vline
WA_P1036_STR-OBJID sy-vline
WA_P1036_STR-INFTY sy-vline
WA_P1036_STR-SUBTY sy-vline
WA_P1036_STR-ISTAT sy-vline
WA_P1036_STR-PRIOX sy-vline
WA_P1036_STR-BEGDA sy-vline
WA_P1036_STR-ENDDA sy-vline
WA_P1036_STR-VARYF sy-vline
WA_P1036_STR-SEQNR sy-vline
WA_P1036_STR-AEDTM sy-vline
WA_P1036_STR-UNAME sy-vline
WA_P1036_STR-REASN sy-vline
WA_P1036_STR-HISTO sy-vline
WA_P1036_STR-ITXNR sy-vline
WA_P1036_STR-KOBES sy-vline
WA_P1036_STR-PRDIR sy-vline
WA_P1036_STR-PRICE sy-vline
WA_P1036_STR-WAERS sy-vline
WA_P1036_STR-BUNIT sy-vline
WA_P1036_STR-BZGME sy-vline
WA_P1036_STR-KOBES001 sy-vline
WA_P1036_STR-PRDIR001 sy-vline
WA_P1036_STR-PRICE001 sy-vline
WA_P1036_STR-WAERS001 sy-vline
WA_P1036_STR-BUNIT001 sy-vline
WA_P1036_STR-BZGME001 sy-vline
WA_P1036_STR-KOBES002 sy-vline
WA_P1036_STR-PRDIR002 sy-vline
WA_P1036_STR-PRICE002 sy-vline
WA_P1036_STR-WAERS002 sy-vline
WA_P1036_STR-BUNIT002 sy-vline
WA_P1036_STR-BZGME002 sy-vline
WA_P1036_STR-KOBES003 sy-vline
WA_P1036_STR-PRDIR003 sy-vline
WA_P1036_STR-PRICE003 sy-vline
WA_P1036_STR-WAERS003 sy-vline
WA_P1036_STR-BUNIT003 sy-vline
WA_P1036_STR-BZGME003 sy-vline
WA_P1036_STR-KOBES004 sy-vline
WA_P1036_STR-PRDIR004 sy-vline
WA_P1036_STR-PRICE004 sy-vline
WA_P1036_STR-WAERS004 sy-vline
WA_P1036_STR-BUNIT004 sy-vline
WA_P1036_STR-BZGME004 sy-vline
WA_P1036_STR-KOBES005 sy-vline
WA_P1036_STR-PRDIR005 sy-vline
WA_P1036_STR-PRICE005 sy-vline
WA_P1036_STR-WAERS005 sy-vline
WA_P1036_STR-BUNIT005 sy-vline
WA_P1036_STR-BZGME005 sy-vline
WA_P1036_STR-KOBES006 sy-vline
WA_P1036_STR-PRDIR006 sy-vline
WA_P1036_STR-PRICE006 sy-vline
WA_P1036_STR-WAERS006 sy-vline
WA_P1036_STR-BUNIT006 sy-vline
WA_P1036_STR-BZGME006 sy-vline
WA_P1036_STR-KOBES007 sy-vline
WA_P1036_STR-PRDIR007 sy-vline
WA_P1036_STR-PRICE007 sy-vline
WA_P1036_STR-WAERS007 sy-vline
WA_P1036_STR-BUNIT007 sy-vline
WA_P1036_STR-BZGME007 sy-vline
WA_P1036_STR-KOBES008 sy-vline
WA_P1036_STR-PRDIR008 sy-vline
WA_P1036_STR-PRICE008 sy-vline
WA_P1036_STR-WAERS008 sy-vline
WA_P1036_STR-BUNIT008 sy-vline
WA_P1036_STR-BZGME008 sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.