SAP KBPR_READ_DATA Function Module for Data selection budgeting/planning









KBPR_READ_DATA is a standard kbpr read data SAP function module available within SAP R/3 or S/4 Hana systems, depending on your version and release level. It is used for Data selection budgeting/planning processing and below is the pattern details for this FM, showing its interface including any import and export parameters, exceptions etc. there is also a full "cut and paste" ABAP pattern code example, along with implementation ABAP coding, documentation and contribution comments specific to this or related objects.


See here to view full function module documentation and code listing for kbpr read data FM, simply by entering the name KBPR_READ_DATA into the relevant SAP transaction such as SE37 or SE38.

Function Group: KBPR
Program Name: SAPLKBPR
Main Program: SAPLKBPR
Appliation area: K
Release date: N/A
Mode(Normal, Remote etc): Normal Function Module
Update:



Function KBPR_READ_DATA pattern details

In-order to call this FM within your sap programs, simply using the below ABAP pattern details to trigger the function call...or see the full ABAP code listing at the end of this article. You can simply cut and paste this code into your ABAP progrom as it is, including variable declarations.
CALL FUNCTION 'KBPR_READ_DATA'"Data selection budgeting/planning
EXPORTING
* ACTIVITY = ' ' "Transaction
* INIT = 'X' "Refresh internal tables of selected data
* KOKRS = ' ' "Controlling area
* LEDGER_ALL = ' ' "
* NEW_LEDGER = ' ' "Create new ledger
* OBJHI = ' ' "RW object number for BPHI
* OBJNR = ' ' "FI/CO object number
* PERIV = ' ' "Period version
* POSIT = ' ' "Item
* POSIT_ALL = ' ' "
* TRGKZ = ' ' "Object indicator
* CURRENCY = ' ' "Currency
* VALUE_TYP = ' ' "Value type
* VERSN = '000' "Version
* VERSN_INIT = ' ' "
* VERSN_ALL = ' ' "Import all versions
* YEAR_END = 9999 "Final year
* YEAR_START = 0000 "Start Year
* READ_BPJA = 'X' "
* READ_BPGE = 'X' "
* READ_BPPE = 'X' "
* READ_BPTR = 'X' "
* FIKRS = ' ' "Financial management area
* READ_BPJV = 'X' "
* READ_BPTX = 'X' "
* READ_BPGV = 'X' "
* READ_BPIJ = 'X' "
* READ_BPIG = 'X' "
* READ_BPDK = ' ' "
* READ_MODE_OPT = ' ' "
* READ_MODE = ' ' "
* FIKRS_CA_PERIV = ' ' "Period version in FM01-CA_PERIV
* FIKRS_PERIV = ' ' "Period version in FM01-PERIV
* GEBER = ' ' "Fund
* GEBER_ALL = ' ' "Import all financial backers
* FAREA = ' ' "Functional Area
* FAREA_ALL = ' ' "

IMPORTING
SUBRC = "Return code

TABLES
* BP_BK = "BPBK document header
* BP_PE = "BPPE period values
* BP_TR = "BPTR carrier data
* BP_TX = "
* BP_GV = "
* BP_JV = "
* BP_DK = "
* BP_VK = "
* BP_DKT = "
* BP_DZ = "
* BP_DZT = "
* BP_EG = "BPEG line item entire
* BP_DJ = "
* BP_DG = "
* BP_DP = "
* TAB_ACTIVITY = "Activities Table
* TAB_BPCU = "Table currencies
* TAB_GEBER = "
* TAB_OBJHI = "Table BPHI
* TAB_OBJNR = "Table RW object numbers
* TAB_POSIT = "Table items
* TAB_FAREA = "
* BP_EJ = "BPEJ line item year
* TAB_TRGKZ = "Table object indicator
* TAB_VALUE = "Table value types
* TAB_VERSN = "
* BP_EP = "BPEP line item period
* BP_GE = "BPGE total values
* BP_HI = "BPHI hierarchy data
* BP_IG = "BPIG index entire
* BP_IJ = "BPIJ index years
* BP_JA = "BPJA annual values
.



IMPORTING Parameters details for KBPR_READ_DATA

ACTIVITY - Transaction

Data type: BPIN-VORGA
Default: SPACE
Optional: Yes
Call by Reference: No ( called with pass by value option)

INIT - Refresh internal tables of selected data

Data type:
Default: 'X'
Optional: Yes
Call by Reference: No ( called with pass by value option)

KOKRS - Controlling area

Data type: BPIN-KOKRS
Default: SPACE
Optional: Yes
Call by Reference: No ( called with pass by value option)

LEDGER_ALL -

Data type:
Default: SPACE
Optional: Yes
Call by Reference: No ( called with pass by value option)

NEW_LEDGER - Create new ledger

Data type:
Default: SPACE
Optional: Yes
Call by Reference: No ( called with pass by value option)

OBJHI - RW object number for BPHI

Data type: BPIN-OBJHI
Default: SPACE
Optional: Yes
Call by Reference: No ( called with pass by value option)

OBJNR - FI/CO object number

Data type: BPIN-OBJNR
Default: SPACE
Optional: Yes
Call by Reference: No ( called with pass by value option)

PERIV - Period version

Data type: BPIN-PERIV
Default: SPACE
Optional: Yes
Call by Reference: No ( called with pass by value option)

POSIT - Item

Data type: BPIN-POSIT
Default: SPACE
Optional: Yes
Call by Reference: No ( called with pass by value option)

POSIT_ALL -

Data type:
Default: SPACE
Optional: Yes
Call by Reference: No ( called with pass by value option)

TRGKZ - Object indicator

Data type: BPIN-TRGKZ
Default: SPACE
Optional: Yes
Call by Reference: No ( called with pass by value option)

CURRENCY - Currency

Data type: BPIN-OWAER
Default: SPACE
Optional: Yes
Call by Reference: No ( called with pass by value option)

VALUE_TYP - Value type

Data type: BPIN-WRTTP
Default: SPACE
Optional: Yes
Call by Reference: No ( called with pass by value option)

VERSN - Version

Data type: BPIN-VERSN
Default: '000'
Optional: Yes
Call by Reference: No ( called with pass by value option)

VERSN_INIT -

Data type:
Default: SPACE
Optional: Yes
Call by Reference: No ( called with pass by value option)

VERSN_ALL - Import all versions

Data type:
Default: SPACE
Optional: Yes
Call by Reference: No ( called with pass by value option)

YEAR_END - Final year

Data type: BPIN-EJAHR
Default: 9999
Optional: Yes
Call by Reference: No ( called with pass by value option)

YEAR_START - Start Year

Data type: BPIN-SJAHR
Default: 0000
Optional: Yes
Call by Reference: No ( called with pass by value option)

READ_BPJA -

Data type:
Default: 'X'
Optional: Yes
Call by Reference: No ( called with pass by value option)

READ_BPGE -

Data type:
Default: 'X'
Optional: Yes
Call by Reference: No ( called with pass by value option)

READ_BPPE -

Data type:
Default: 'X'
Optional: Yes
Call by Reference: No ( called with pass by value option)

READ_BPTR -

Data type:
Default: 'X'
Optional: Yes
Call by Reference: No ( called with pass by value option)

FIKRS - Financial management area

Data type: BPIN-FIKRS
Default: SPACE
Optional: Yes
Call by Reference: No ( called with pass by value option)

READ_BPJV -

Data type:
Default: 'X'
Optional: Yes
Call by Reference: No ( called with pass by value option)

READ_BPTX -

Data type:
Default: 'X'
Optional: Yes
Call by Reference: No ( called with pass by value option)

READ_BPGV -

Data type:
Default: 'X'
Optional: Yes
Call by Reference: No ( called with pass by value option)

READ_BPIJ -

Data type:
Default: 'X'
Optional: Yes
Call by Reference: No ( called with pass by value option)

READ_BPIG -

Data type:
Default: 'X'
Optional: Yes
Call by Reference: No ( called with pass by value option)

READ_BPDK -

Data type:
Default: SPACE
Optional: Yes
Call by Reference: No ( called with pass by value option)

READ_MODE_OPT -

Data type:
Default: SPACE
Optional: Yes
Call by Reference: No ( called with pass by value option)

READ_MODE -

Data type:
Default: SPACE
Optional: Yes
Call by Reference: No ( called with pass by value option)

FIKRS_CA_PERIV - Period version in FM01-CA_PERIV

Data type:
Default: SPACE
Optional: Yes
Call by Reference: No ( called with pass by value option)

FIKRS_PERIV - Period version in FM01-PERIV

Data type:
Default: SPACE
Optional: Yes
Call by Reference: No ( called with pass by value option)

GEBER - Fund

Data type: BPIN-GEBER
Default: SPACE
Optional: Yes
Call by Reference: No ( called with pass by value option)

GEBER_ALL - Import all financial backers

Data type:
Default: SPACE
Optional: Yes
Call by Reference: No ( called with pass by value option)

FAREA - Functional Area

Data type: BPJA-FAREA
Default: SPACE
Optional: Yes
Call by Reference: No ( called with pass by value option)

FAREA_ALL -

Data type:
Default: SPACE
Optional: Yes
Call by Reference: No ( called with pass by value option)

EXPORTING Parameters details for KBPR_READ_DATA

SUBRC - Return code

Data type:
Optional: No
Call by Reference: No ( called with pass by value option)

TABLES Parameters details for KBPR_READ_DATA

BP_BK - BPBK document header

Data type:
Optional: Yes
Call by Reference: No ( called with pass by value option)

BP_PE - BPPE period values

Data type:
Optional: Yes
Call by Reference: No ( called with pass by value option)

BP_TR - BPTR carrier data

Data type:
Optional: Yes
Call by Reference: No ( called with pass by value option)

BP_TX -

Data type: BPTX
Optional: Yes
Call by Reference: No ( called with pass by value option)

BP_GV -

Data type:
Optional: Yes
Call by Reference: No ( called with pass by value option)

BP_JV -

Data type:
Optional: Yes
Call by Reference: No ( called with pass by value option)

BP_DK -

Data type: BPDK
Optional: Yes
Call by Reference: No ( called with pass by value option)

BP_VK -

Data type:
Optional: Yes
Call by Reference: No ( called with pass by value option)

BP_DKT -

Data type: BPDKT
Optional: Yes
Call by Reference: No ( called with pass by value option)

BP_DZ -

Data type: BPDZ
Optional: Yes
Call by Reference: No ( called with pass by value option)

BP_DZT -

Data type: BPDZT
Optional: Yes
Call by Reference: No ( called with pass by value option)

BP_EG - BPEG line item entire

Data type:
Optional: Yes
Call by Reference: No ( called with pass by value option)

BP_DJ -

Data type: BPDJ
Optional: Yes
Call by Reference: No ( called with pass by value option)

BP_DG -

Data type: BPDG
Optional: Yes
Call by Reference: No ( called with pass by value option)

BP_DP -

Data type: BPDP
Optional: Yes
Call by Reference: No ( called with pass by value option)

TAB_ACTIVITY - Activities Table

Data type:
Optional: Yes
Call by Reference: No ( called with pass by value option)

TAB_BPCU - Table currencies

Data type:
Optional: Yes
Call by Reference: No ( called with pass by value option)

TAB_GEBER -

Data type:
Optional: Yes
Call by Reference: No ( called with pass by value option)

TAB_OBJHI - Table BPHI

Data type:
Optional: Yes
Call by Reference: No ( called with pass by value option)

TAB_OBJNR - Table RW object numbers

Data type:
Optional: Yes
Call by Reference: No ( called with pass by value option)

TAB_POSIT - Table items

Data type:
Optional: Yes
Call by Reference: No ( called with pass by value option)

TAB_FAREA -

Data type:
Optional: Yes
Call by Reference: Yes

BP_EJ - BPEJ line item year

Data type:
Optional: Yes
Call by Reference: No ( called with pass by value option)

TAB_TRGKZ - Table object indicator

Data type:
Optional: Yes
Call by Reference: No ( called with pass by value option)

TAB_VALUE - Table value types

Data type:
Optional: Yes
Call by Reference: No ( called with pass by value option)

TAB_VERSN -

Data type:
Optional: Yes
Call by Reference: No ( called with pass by value option)

BP_EP - BPEP line item period

Data type:
Optional: Yes
Call by Reference: No ( called with pass by value option)

BP_GE - BPGE total values

Data type:
Optional: Yes
Call by Reference: No ( called with pass by value option)

BP_HI - BPHI hierarchy data

Data type:
Optional: Yes
Call by Reference: No ( called with pass by value option)

BP_IG - BPIG index entire

Data type:
Optional: Yes
Call by Reference: No ( called with pass by value option)

BP_IJ - BPIJ index years

Data type:
Optional: Yes
Call by Reference: No ( called with pass by value option)

BP_JA - BPJA annual values

Data type:
Optional: Yes
Call by Reference: No ( called with pass by value option)

Copy and paste ABAP code example for KBPR_READ_DATA Function Module

The ABAP code below is a full code listing to execute function module POPUP_TO_CONFIRM including all data declarations. The code uses the original data declarations rather than the latest in-line data DECLARATION SYNTAX but I have included an ABAP code snippet at the end to show how declarations would look using the newer method of declaring data variables on the fly. This will allow you to compare and fully understand the new inline method. Please note some of the newer syntax such as the @DATA is not available until a later 4.70 service pack (SP8), which i why i have stuck to the origianl for this example.

DATA:
lt_bp_bk  TYPE STANDARD TABLE OF STRING, "   
lv_subrc  TYPE STRING, "   
lv_activity  TYPE BPIN-VORGA, "   SPACE
lv_init  TYPE BPIN, "   'X'
lt_bp_pe  TYPE STANDARD TABLE OF BPIN, "   
lt_bp_tr  TYPE STANDARD TABLE OF BPIN, "   
lv_kokrs  TYPE BPIN-KOKRS, "   SPACE
lt_bp_tx  TYPE STANDARD TABLE OF BPTX, "   
lv_ledger_all  TYPE BPTX, "   SPACE
lt_bp_gv  TYPE STANDARD TABLE OF BPTX, "   
lv_new_ledger  TYPE BPTX, "   SPACE
lt_bp_jv  TYPE STANDARD TABLE OF BPTX, "   
lv_objhi  TYPE BPIN-OBJHI, "   SPACE
lt_bp_dk  TYPE STANDARD TABLE OF BPDK, "   
lv_objnr  TYPE BPIN-OBJNR, "   SPACE
lt_bp_vk  TYPE STANDARD TABLE OF BPIN, "   
lv_periv  TYPE BPIN-PERIV, "   SPACE
lv_posit  TYPE BPIN-POSIT, "   SPACE
lt_bp_dkt  TYPE STANDARD TABLE OF BPDKT, "   
lt_bp_dz  TYPE STANDARD TABLE OF BPDZ, "   
lv_posit_all  TYPE BPDZ, "   SPACE
lv_trgkz  TYPE BPIN-TRGKZ, "   SPACE
lt_bp_dzt  TYPE STANDARD TABLE OF BPDZT, "   
lt_bp_eg  TYPE STANDARD TABLE OF BPDZT, "   
lv_currency  TYPE BPIN-OWAER, "   SPACE
lt_bp_dj  TYPE STANDARD TABLE OF BPDJ, "   
lv_value_typ  TYPE BPIN-WRTTP, "   SPACE
lt_bp_dg  TYPE STANDARD TABLE OF BPDG, "   
lv_versn  TYPE BPIN-VERSN, "   '000'
lt_bp_dp  TYPE STANDARD TABLE OF BPDP, "   
lv_versn_init  TYPE BPDP, "   SPACE
lv_versn_all  TYPE BPDP, "   SPACE
lt_tab_activity  TYPE STANDARD TABLE OF BPDP, "   
lt_tab_bpcu  TYPE STANDARD TABLE OF BPDP, "   
lv_year_end  TYPE BPIN-EJAHR, "   9999
lt_tab_geber  TYPE STANDARD TABLE OF BPIN, "   
lv_year_start  TYPE BPIN-SJAHR, "   0000
lv_read_bpja  TYPE BPIN, "   'X'
lt_tab_objhi  TYPE STANDARD TABLE OF BPIN, "   
lv_read_bpge  TYPE BPIN, "   'X'
lt_tab_objnr  TYPE STANDARD TABLE OF BPIN, "   
lv_read_bppe  TYPE BPIN, "   'X'
lt_tab_posit  TYPE STANDARD TABLE OF BPIN, "   
lv_read_bptr  TYPE BPIN, "   'X'
lt_tab_farea  TYPE STANDARD TABLE OF BPIN, "   
lt_bp_ej  TYPE STANDARD TABLE OF BPIN, "   
lv_fikrs  TYPE BPIN-FIKRS, "   SPACE
lv_read_bpjv  TYPE BPIN, "   'X'
lt_tab_trgkz  TYPE STANDARD TABLE OF BPIN, "   
lv_read_bptx  TYPE BPIN, "   'X'
lt_tab_value  TYPE STANDARD TABLE OF BPIN, "   
lv_read_bpgv  TYPE BPIN, "   'X'
lt_tab_versn  TYPE STANDARD TABLE OF BPIN, "   
lv_read_bpij  TYPE BPIN, "   'X'
lv_read_bpig  TYPE BPIN, "   'X'
lv_read_bpdk  TYPE BPIN, "   SPACE
lv_read_mode_opt  TYPE BPIN, "   SPACE
lv_read_mode  TYPE BPIN, "   SPACE
lt_bp_ep  TYPE STANDARD TABLE OF BPIN, "   
lv_fikrs_ca_periv  TYPE BPIN, "   SPACE
lt_bp_ge  TYPE STANDARD TABLE OF BPIN, "   
lv_fikrs_periv  TYPE BPIN, "   SPACE
lt_bp_hi  TYPE STANDARD TABLE OF BPIN, "   
lv_geber  TYPE BPIN-GEBER, "   SPACE
lt_bp_ig  TYPE STANDARD TABLE OF BPIN, "   
lv_geber_all  TYPE BPIN, "   SPACE
lt_bp_ij  TYPE STANDARD TABLE OF BPIN, "   
lv_farea  TYPE BPJA-FAREA, "   SPACE
lt_bp_ja  TYPE STANDARD TABLE OF BPJA, "   
lv_farea_all  TYPE BPJA. "   SPACE

  CALL FUNCTION 'KBPR_READ_DATA'  "Data selection budgeting/planning
    EXPORTING
         ACTIVITY = lv_activity
         INIT = lv_init
         KOKRS = lv_kokrs
         LEDGER_ALL = lv_ledger_all
         NEW_LEDGER = lv_new_ledger
         OBJHI = lv_objhi
         OBJNR = lv_objnr
         PERIV = lv_periv
         POSIT = lv_posit
         POSIT_ALL = lv_posit_all
         TRGKZ = lv_trgkz
         CURRENCY = lv_currency
         VALUE_TYP = lv_value_typ
         VERSN = lv_versn
         VERSN_INIT = lv_versn_init
         VERSN_ALL = lv_versn_all
         YEAR_END = lv_year_end
         YEAR_START = lv_year_start
         READ_BPJA = lv_read_bpja
         READ_BPGE = lv_read_bpge
         READ_BPPE = lv_read_bppe
         READ_BPTR = lv_read_bptr
         FIKRS = lv_fikrs
         READ_BPJV = lv_read_bpjv
         READ_BPTX = lv_read_bptx
         READ_BPGV = lv_read_bpgv
         READ_BPIJ = lv_read_bpij
         READ_BPIG = lv_read_bpig
         READ_BPDK = lv_read_bpdk
         READ_MODE_OPT = lv_read_mode_opt
         READ_MODE = lv_read_mode
         FIKRS_CA_PERIV = lv_fikrs_ca_periv
         FIKRS_PERIV = lv_fikrs_periv
         GEBER = lv_geber
         GEBER_ALL = lv_geber_all
         FAREA = lv_farea
         FAREA_ALL = lv_farea_all
    IMPORTING
         SUBRC = lv_subrc
    TABLES
         BP_BK = lt_bp_bk
         BP_PE = lt_bp_pe
         BP_TR = lt_bp_tr
         BP_TX = lt_bp_tx
         BP_GV = lt_bp_gv
         BP_JV = lt_bp_jv
         BP_DK = lt_bp_dk
         BP_VK = lt_bp_vk
         BP_DKT = lt_bp_dkt
         BP_DZ = lt_bp_dz
         BP_DZT = lt_bp_dzt
         BP_EG = lt_bp_eg
         BP_DJ = lt_bp_dj
         BP_DG = lt_bp_dg
         BP_DP = lt_bp_dp
         TAB_ACTIVITY = lt_tab_activity
         TAB_BPCU = lt_tab_bpcu
         TAB_GEBER = lt_tab_geber
         TAB_OBJHI = lt_tab_objhi
         TAB_OBJNR = lt_tab_objnr
         TAB_POSIT = lt_tab_posit
         TAB_FAREA = lt_tab_farea
         BP_EJ = lt_bp_ej
         TAB_TRGKZ = lt_tab_trgkz
         TAB_VALUE = lt_tab_value
         TAB_VERSN = lt_tab_versn
         BP_EP = lt_bp_ep
         BP_GE = lt_bp_ge
         BP_HI = lt_bp_hi
         BP_IG = lt_bp_ig
         BP_IJ = lt_bp_ij
         BP_JA = lt_bp_ja
. " KBPR_READ_DATA




ABAP code using 7.40 inline data declarations to call FM KBPR_READ_DATA

The below ABAP code uses the newer in-line data declarations. This allows you to see the coding differences/benefits of the later inline syntax. Please note some of the newer syntax below, such as the @DATA is not available until 4.70 EHP 8.

 
 
"SELECT single VORGA FROM BPIN INTO @DATA(ld_activity).
DATA(ld_activity) = ' '.
 
DATA(ld_init) = 'X'.
 
 
 
"SELECT single KOKRS FROM BPIN INTO @DATA(ld_kokrs).
DATA(ld_kokrs) = ' '.
 
 
DATA(ld_ledger_all) = ' '.
 
 
DATA(ld_new_ledger) = ' '.
 
 
"SELECT single OBJHI FROM BPIN INTO @DATA(ld_objhi).
DATA(ld_objhi) = ' '.
 
 
"SELECT single OBJNR FROM BPIN INTO @DATA(ld_objnr).
DATA(ld_objnr) = ' '.
 
 
"SELECT single PERIV FROM BPIN INTO @DATA(ld_periv).
DATA(ld_periv) = ' '.
 
"SELECT single POSIT FROM BPIN INTO @DATA(ld_posit).
DATA(ld_posit) = ' '.
 
 
 
DATA(ld_posit_all) = ' '.
 
"SELECT single TRGKZ FROM BPIN INTO @DATA(ld_trgkz).
DATA(ld_trgkz) = ' '.
 
 
 
"SELECT single OWAER FROM BPIN INTO @DATA(ld_currency).
DATA(ld_currency) = ' '.
 
 
"SELECT single WRTTP FROM BPIN INTO @DATA(ld_value_typ).
DATA(ld_value_typ) = ' '.
 
 
"SELECT single VERSN FROM BPIN INTO @DATA(ld_versn).
DATA(ld_versn) = '000'.
 
 
DATA(ld_versn_init) = ' '.
 
DATA(ld_versn_all) = ' '.
 
 
 
"SELECT single EJAHR FROM BPIN INTO @DATA(ld_year_end).
DATA(ld_year_end) = 9999.
 
 
"SELECT single SJAHR FROM BPIN INTO @DATA(ld_year_start).
DATA(ld_year_start) = 0000.
 
DATA(ld_read_bpja) = 'X'.
 
 
DATA(ld_read_bpge) = 'X'.
 
 
DATA(ld_read_bppe) = 'X'.
 
 
DATA(ld_read_bptr) = 'X'.
 
 
 
"SELECT single FIKRS FROM BPIN INTO @DATA(ld_fikrs).
DATA(ld_fikrs) = ' '.
 
DATA(ld_read_bpjv) = 'X'.
 
 
DATA(ld_read_bptx) = 'X'.
 
 
DATA(ld_read_bpgv) = 'X'.
 
 
DATA(ld_read_bpij) = 'X'.
 
DATA(ld_read_bpig) = 'X'.
 
DATA(ld_read_bpdk) = ' '.
 
DATA(ld_read_mode_opt) = ' '.
 
DATA(ld_read_mode) = ' '.
 
 
DATA(ld_fikrs_ca_periv) = ' '.
 
 
DATA(ld_fikrs_periv) = ' '.
 
 
"SELECT single GEBER FROM BPIN INTO @DATA(ld_geber).
DATA(ld_geber) = ' '.
 
 
DATA(ld_geber_all) = ' '.
 
 
"SELECT single FAREA FROM BPJA INTO @DATA(ld_farea).
DATA(ld_farea) = ' '.
 
 
DATA(ld_farea_all) = ' '.
 


Search for further information about these or an SAP related objects



Comments on this SAP object

What made you want to lookup this SAP object? Please tell us what you were looking for and anything you would like to be included on this page!