ABAP Select data from SAP table FAC_ACC_DET_S_COND_STRUC 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 FAC_ACC_DET_S_COND_STRUC 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 FAC_ACC_DET_S_COND_STRUC. 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 FAC_ACC_DET_S_COND_STRUC 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_FAC_ACC_DET_S_COND_STRUC TYPE STANDARD TABLE OF FAC_ACC_DET_S_COND_STRUC,
      WA_FAC_ACC_DET_S_COND_STRUC TYPE FAC_ACC_DET_S_COND_STRUC,
      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: <FAC_ACC_DET_S_COND_STRUC> TYPE FAC_ACC_DET_S_COND_STRUC.

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

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

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM FAC_ACC_DET_S_COND_STRUC
*  INTO TABLE @DATA(IT_FAC_ACC_DET_S_COND_STRUC2).
*--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_FAC_ACC_DET_S_COND_STRUC INDEX 1 INTO DATA(WA_FAC_ACC_DET_S_COND_STRUC2).


*Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL
LOOP AT IT_FAC_ACC_DET_S_COND_STRUC ASSIGNING <FAC_ACC_DET_S_COND_STRUC>.
*To update a field value using a field symbol simply change the value via the field symbol pointer
<FAC_ACC_DET_S_COND_STRUC>-KOTABNR = 1.
<FAC_ACC_DET_S_COND_STRUC>-ROW_ID = 1.
<FAC_ACC_DET_S_COND_STRUC>-ACTION = 1.
<FAC_ACC_DET_S_COND_STRUC>-KSCHL = 1.
<FAC_ACC_DET_S_COND_STRUC>-VKORG_CO = 1.
ENDLOOP.

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

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_FAC_ACC_DET_S_COND_STRUC-VTWEG_CO, sy-vline,
WA_FAC_ACC_DET_S_COND_STRUC-KTGRD_CO, sy-vline,
WA_FAC_ACC_DET_S_COND_STRUC-WERKS_CO, sy-vline,
WA_FAC_ACC_DET_S_COND_STRUC-KTGRM_CO, sy-vline,
WA_FAC_ACC_DET_S_COND_STRUC-KSCHA_CO, sy-vline,
WA_FAC_ACC_DET_S_COND_STRUC-KVSL1_CO, sy-vline.
ENDLOOP. *Add any further fields from structure WA_FAC_ACC_DET_S_COND_STRUC 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_FAC_ACC_DET_S_COND_STRUC 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_FAC_ACC_DET_S_COND_STRUC INTO WA_FAC_ACC_DET_S_COND_STRUC. *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 KOTAB, internal->external for field KOTABNR CALL FUNCTION 'CONVERSION_EXIT_KOTAB_OUTPUT' EXPORTING input = WA_FAC_ACC_DET_S_COND_STRUC-KOTABNR IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_FAC_ACC_DET_S_COND_STRUC-KOTABNR.
WRITE:/ 'New Value:', ld_input.

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

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

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

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

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

*Conversion exit ALPHA, internal->external for field SAKN2 CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_FAC_ACC_DET_S_COND_STRUC-SAKN2 IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_FAC_ACC_DET_S_COND_STRUC-SAKN2.
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_FAC_ACC_DET_S_COND_STRUC_STR,
KOTABNR TYPE STRING,
ROW_ID TYPE STRING,
ACTION TYPE STRING,
KSCHL TYPE STRING,
VKORG_CO TYPE STRING,
VTWEG_CO TYPE STRING,
KTGRD_CO TYPE STRING,
WERKS_CO TYPE STRING,
KTGRM_CO TYPE STRING,
KSCHA_CO TYPE STRING,
KVSL1_CO TYPE STRING,
SPART_CO TYPE STRING,
CCINS_CO TYPE STRING,
LOCID_CO TYPE STRING,
LIFNR_CO TYPE STRING,
MWSKZ_CO TYPE STRING,
BEMOT_CO TYPE STRING,
AUGRU_CO TYPE STRING,
BUKRS_CO TYPE STRING,
CONTR_TYPE_CO TYPE STRING,
PROCESS_VARIANT_CO TYPE STRING,
PSTYV_CO TYPE STRING,
VBUND_CO TYPE STRING,
SETTLMT_COMPN_RSN_CO TYPE STRING,
EKORG_CO TYPE STRING,
KDUMMY_CO TYPE STRING,
J_3GKBAUL_CO TYPE STRING,
PDUMMY_CO TYPE STRING,
DUMMY_ACDTC_H_INCL_EEW_PS_CO TYPE STRING,
DUMMY_ACDTC_I_INCL_EEW_PS_CO TYPE STRING,
J_3GLGSBER_CO TYPE STRING,
J_3GLBUKRS_CO TYPE STRING,
J_3GETYPA_CO TYPE STRING,
J_3GBGSBER_CO TYPE STRING,
J_3GBBUKRS_CO TYPE STRING,
J_3GETYPE_CO TYPE STRING,
J_3GEIFR_CO TYPE STRING,
J_3GTPLKZ_CO TYPE STRING,
J_3GBLTYP_CO TYPE STRING,
J_3GLVART_CO TYPE STRING,
J_3GKATGR1_CO TYPE STRING,
J_3GKATGR2_CO TYPE STRING,
KTOPL_HE TYPE STRING,
VKORG_HE TYPE STRING,
VTWEG_HE TYPE STRING,
KTGRD_HE TYPE STRING,
KAPPL_HE TYPE STRING,
KALSMC_HE TYPE STRING,
RKPREL_HE TYPE STRING,
LIFNR_HE TYPE STRING,
LLAND_HE TYPE STRING,
AUGRU_HE TYPE STRING,
BUKRS_HE TYPE STRING,
VBUND_HE TYPE STRING,
SETTLMT_COMPN_RSN_HE TYPE STRING,
EKORG_HE TYPE STRING,
KDUMMY_HE TYPE STRING,
J_3GKBAUL_HE TYPE STRING,
DUMMY_ACDTC_H_INCL_EEW_PS_HE TYPE STRING,
IX_KOMT1_V_HE TYPE STRING,
IX_KOMT1_B_HE TYPE STRING,
CLMTY_HE TYPE STRING,
RELTY_HE TYPE STRING,
KATEG_HE TYPE STRING,
WERKS_IT TYPE STRING,
KTGRM_IT TYPE STRING,
KSCHA_IT TYPE STRING,
KVSL1_IT TYPE STRING,
POSNR_IT TYPE STRING,
STUNR_IT TYPE STRING,
KRUEK_IT TYPE STRING,
SPART_IT TYPE STRING,
CCINS_IT TYPE STRING,
LOCID_IT TYPE STRING,
MWSKZ_IT TYPE STRING,
BEMOT_IT TYPE STRING,
CONTR_TYPE_IT TYPE STRING,
PROCESS_VARIANT_IT TYPE STRING,
PSTYV_IT TYPE STRING,
PDUMMY_IT TYPE STRING,
DUMMY_ACDTC_I_INCL_EEW_PS_IT TYPE STRING,
J_1ISTCODE_IT TYPE STRING,
J_1IFORMC1_IT TYPE STRING,
J_1IFORMC2_IT TYPE STRING,
J_3GLGSBER_IT TYPE STRING,
J_3GLBUKRS_IT TYPE STRING,
J_3GETYPA_IT TYPE STRING,
J_3GBGSBER_IT TYPE STRING,
J_3GBBUKRS_IT TYPE STRING,
J_3GETYPE_IT TYPE STRING,
J_3GEIFR_IT TYPE STRING,
J_3GTPLKZ_IT TYPE STRING,
J_3GBLTYP_IT TYPE STRING,
J_3GLVART_IT TYPE STRING,
J_3GKATGR1_IT TYPE STRING,
J_3GKATGR2_IT TYPE STRING,
POSKT_IT TYPE STRING,
REFKT_IT TYPE STRING,
RETPA_IT TYPE STRING,
SAKN1 TYPE STRING,
SAKN2 TYPE STRING,
ETAG TYPE STRING,
ROW_TEXT TYPE STRING,
VALIDATION_MSG TYPE STRING,END OF T_EKKO_STR. DATA: WA_FAC_ACC_DET_S_COND_STRUC_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_FAC_ACC_DET_S_COND_STRUC_STR-KOTABNR sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-ROW_ID sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-ACTION sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-KSCHL sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-VKORG_CO sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-VTWEG_CO sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-KTGRD_CO sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-WERKS_CO sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-KTGRM_CO sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-KSCHA_CO sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-KVSL1_CO sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-SPART_CO sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-CCINS_CO sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-LOCID_CO sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-LIFNR_CO sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-MWSKZ_CO sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-BEMOT_CO sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-AUGRU_CO sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-BUKRS_CO sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-CONTR_TYPE_CO sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-PROCESS_VARIANT_CO sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-PSTYV_CO sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-VBUND_CO sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-SETTLMT_COMPN_RSN_CO sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-EKORG_CO sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-KDUMMY_CO sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-J_3GKBAUL_CO sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-PDUMMY_CO sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-DUMMY_ACDTC_H_INCL_EEW_PS_CO sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-DUMMY_ACDTC_I_INCL_EEW_PS_CO sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-J_3GLGSBER_CO sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-J_3GLBUKRS_CO sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-J_3GETYPA_CO sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-J_3GBGSBER_CO sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-J_3GBBUKRS_CO sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-J_3GETYPE_CO sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-J_3GEIFR_CO sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-J_3GTPLKZ_CO sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-J_3GBLTYP_CO sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-J_3GLVART_CO sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-J_3GKATGR1_CO sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-J_3GKATGR2_CO sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-KTOPL_HE sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-VKORG_HE sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-VTWEG_HE sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-KTGRD_HE sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-KAPPL_HE sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-KALSMC_HE sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-RKPREL_HE sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-LIFNR_HE sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-LLAND_HE sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-AUGRU_HE sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-BUKRS_HE sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-VBUND_HE sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-SETTLMT_COMPN_RSN_HE sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-EKORG_HE sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-KDUMMY_HE sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-J_3GKBAUL_HE sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-DUMMY_ACDTC_H_INCL_EEW_PS_HE sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-IX_KOMT1_V_HE sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-IX_KOMT1_B_HE sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-CLMTY_HE sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-RELTY_HE sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-KATEG_HE sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-WERKS_IT sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-KTGRM_IT sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-KSCHA_IT sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-KVSL1_IT sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-POSNR_IT sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-STUNR_IT sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-KRUEK_IT sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-SPART_IT sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-CCINS_IT sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-LOCID_IT sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-MWSKZ_IT sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-BEMOT_IT sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-CONTR_TYPE_IT sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-PROCESS_VARIANT_IT sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-PSTYV_IT sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-PDUMMY_IT sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-DUMMY_ACDTC_I_INCL_EEW_PS_IT sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-J_1ISTCODE_IT sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-J_1IFORMC1_IT sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-J_1IFORMC2_IT sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-J_3GLGSBER_IT sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-J_3GLBUKRS_IT sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-J_3GETYPA_IT sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-J_3GBGSBER_IT sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-J_3GBBUKRS_IT sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-J_3GETYPE_IT sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-J_3GEIFR_IT sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-J_3GTPLKZ_IT sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-J_3GBLTYP_IT sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-J_3GLVART_IT sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-J_3GKATGR1_IT sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-J_3GKATGR2_IT sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-POSKT_IT sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-REFKT_IT sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-RETPA_IT sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-SAKN1 sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-SAKN2 sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-ETAG sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-ROW_TEXT sy-vline
WA_FAC_ACC_DET_S_COND_STRUC_STR-VALIDATION_MSG sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.