com.sap.conn.jco
Interface JCoMetaData

All Superinterfaces:
Cloneable, Serializable
All Known Subinterfaces:
JCoClassMetaData, JCoListMetaData, JCoRecordMetaData

public interface JCoMetaData
extends Serializable, Cloneable

Encapsulates the metadata of JCo data containers. Each element of metadata describes a field of these data containers in terms of name, type, length, etc. JCoMetadata is the basis for the two important metadata interfaces of JCo, and includes their common functionality: JCoListMetaData and JCoRecordMetaData.
Moreover, it contains constants for all supported data types, where each JCo data type corresponds to one of the builtin types of ABAP.


Field Summary
static int TYPE_ABAPOBJECT
          ABAP object.
static int TYPE_BCD
          Packed BCD number, any length between 1 and 16 bytes.
static int TYPE_BOX
          ABAP boxed component.
static int TYPE_BYTE
          Raw data, binary, fixed length, zero padded.
static int TYPE_CDAY
          Date representing a month and a day of the month without specifying a year, corresponds to ABAP type 'c'.
static int TYPE_CHAR
          1-byte or multi-byte character.Fixed sized, blank padded.
static int TYPE_DATE
          Date ( YYYYYMMDD ).
static int TYPE_DECF16
          decimal floating point.
static int TYPE_DECF34
          decimal floating point.
static int TYPE_DTDAY
          Date representing year, month, and day, corresponds to ABAP type 'd'.
static int TYPE_DTMONTH
          Date representing a year and a month, corresponds to ABAP type 'x'.
static int TYPE_DTWEEK
          Date representing a year and a week of the year, corresponds to ABAP type '7'.
static int TYPE_EXCEPTION
          ABAP exception.
static int TYPE_FLOAT
          Floating point,double precision.
static int TYPE_GENERIC_BOX
          ABAP boxed generic component.
static int TYPE_INT
          4-byte integer .
static int TYPE_INT1
          1-byte integer .
static int TYPE_INT2
          2-byte integer .
static int TYPE_INT8
          Eight-byte integer, corresponds to ABAP type '8'.
static int TYPE_INVALID
          The field info does not contain a valid JCO type.
static int TYPE_ITAB
          Internal table.
static int TYPE_NUM
          Digits, fixed size,'0' padded.
static int TYPE_STRING
          UTF8 encoded string of variable length.
static int TYPE_STRUCTURE
          A heterogeneous structure.
static int TYPE_TABLE
          A JCoTable.
static int TYPE_TIME
          Time (HHMMSS).
static int TYPE_TMINUTE
          Time representing hours and minutes, corresponds to ABAP type 'i'.
static int TYPE_TSECOND
          Time representing hours, minutes, and seconds, corresponds to ABAP type 't'.
static int TYPE_UTCLONG
          Timestamp with high precision, i.e., date and time including fractions of a second, corresponds to ABAP type 'p'.
static int TYPE_UTCMINUTE
          Timestamp with a precision of one minute, i.e., date and time with hours and minutes, corresponds to ABAP type 'w'.
static int TYPE_UTCSECOND
          timestamp with a precision of one second, i.e., date and time with hours, minutes and seconds, corresponds to ABAP type 'n'.
static int TYPE_XSTRING
          Byte array of variable length.
static int UNINITIALIZED
          The field info was not initialized yet.
 
Method Summary
 int getByteLength(int index)
          Returns the byte length of the data field for non-Unicode layout at the specified index.
 int getByteLength(String fieldName)
          Returns the byte length of the field for non-Unicode layout with the specified name.
 String getClassNameOfField(int index)
          Returns the fully-qualified name of the Java class whose instances are manufactured if the methods getValue(int index) or getValue(String fieldName) are called to retrieve a value from the field.
 String getClassNameOfField(String fieldName)
          Returns the fully-qualified name of the Java class whose instances are manufactured if the methods getValue(int index) or getValue(String fieldName) are called to retrieve a value from the field.
 int getDecimals(int index)
          Returns the number of decimals of the data field at the specified index Decimals are only necessary for the JCO data types TYPE_BCD and TYPE_FLOAT, respectively.
 int getDecimals(String fieldName)
          Returns the number of decimals for the field with the specified name Decimals are only necessary for the JCO data types TYPE_BCD and TYPE_FLOAT, respectively.
 String getDescription(int index)
          Returns the descriptional text of the data field at the specified index.
 String getDescription(String fieldName)
          Returns the descriptional text for the field with the specified name.
 JCoExtendedFieldMetaData getExtendedFieldMetaData(int index)
          Returns the extended field metadata object at the specified index.
 JCoExtendedFieldMetaData getExtendedFieldMetaData(String fieldName)
          Returns the extended metadata object for the field with the specified name.
 int getFieldCount()
          Returns the number of entries (fields).
 int getLength(int index)
          Returns the max length of the data field at the specified index.
 int getLength(String fieldName)
          Returns the max length of the data field at the specified index.
 String getName()
          Returns the name of the table/structure this meta-data describes.
 String getName(int index)
          Returns the field name of the data field at the specified index.
 JCoRecordMetaData getRecordMetaData(int index)
          Returns the meta data object for the field, if the specified field is a table or structure and was defined with a reference to a meta data object.
 JCoRecordMetaData getRecordMetaData(String fieldName)
          Returns the meta data object for the field, if the specified field is a table or structure and was defined with a reference to a meta data object.
 String getRecordTypeName(int index)
          Returns the table/structure name of the data field or null if no table name is available.
 String getRecordTypeName(String fieldName)
          Returns the table/structure or data element name of the data field or null if no table name or data element name is available.
 int getType(int index)
          Returns the JCo data type of the data field at the specified index.
 int getType(String fieldName)
          Returns the JCo data type of the data for the field with the specified name.
 String getTypeAsString(int index)
          Returns a String representation of the JCo data type of the data field at the specified index.
 String getTypeAsString(String fieldName)
          Returns a String representation of the JCo data type of the data field for the field with the specified name.
 int getUnicodeByteLength(int index)
          Returns the length of the data field at the specified index for Unicode layout.
 int getUnicodeByteLength(String fieldName)
          Returns the length of the field with the specified name for Unicode layout.
 boolean hasField(String fieldName)
          Checks whether a named field exists.
 int indexOf(String fieldName)
          Returns the index of the named field info.
 boolean isAbapObject(int index)
          Checks whether the field with the specified index is an ABAP object.
 boolean isAbapObject(String fieldName)
          Checks whether the field with the specified name is an ABAP object.
 boolean isLocked()
          Returns whether this meta data instance is locked.
 boolean isNestedType1Structure(int index)
          Checks whether the field at the specified index is a nested TYPE1 structure, which is a structure with a fixed length in memory, but with a nested layout.
 boolean isNestedType1Structure(String fieldName)
          Checks whether the field with the specified name is a nested TYPE1 structure, which is a structure with a fixed length in memory, but with a nested layout.
 boolean isStructure(int index)
          Checks whether the field at the specified index is a structure parameter.
 boolean isStructure(String fieldName)
          Checks whether the field with the specified name is a structure parameter.
 boolean isTable(int index)
          Checks whether the field is a table parameter.
 boolean isTable(String fieldName)
          Checks whether the field with the specified name is a table parameter.
 void lock()
          Locks the meta data to prevent further changes.
 void setName(String name)
          Sets the name of the table/structure this meta data describes.
 

Field Detail

UNINITIALIZED

static final int UNINITIALIZED
The field info was not initialized yet.

See Also:
Constant Field Values

TYPE_INVALID

static final int TYPE_INVALID
The field info does not contain a valid JCO type.

See Also:
Constant Field Values

TYPE_CHAR

static final int TYPE_CHAR
1-byte or multi-byte character.Fixed sized, blank padded. Corresponds to ABAP type 'C'.

See Also:
Constant Field Values

TYPE_DATE

static final int TYPE_DATE
Date ( YYYYYMMDD ). Corresponds to ABAP type 'D'.

See Also:
Constant Field Values

TYPE_BCD

static final int TYPE_BCD
Packed BCD number, any length between 1 and 16 bytes. Corresponds to ABAP type 'P'.

See Also:
Constant Field Values

TYPE_TIME

static final int TYPE_TIME
Time (HHMMSS). Corresponds to ABAP type 'T'

See Also:
Constant Field Values

TYPE_BYTE

static final int TYPE_BYTE
Raw data, binary, fixed length, zero padded. Corresponds to ABAP type 'X'.

See Also:
Constant Field Values

TYPE_ITAB

static final int TYPE_ITAB
Internal table. (Deprecated! Not used)

See Also:
Constant Field Values

TYPE_NUM

static final int TYPE_NUM
Digits, fixed size,'0' padded. Corresponds to ABAP type 'N'.

See Also:
Constant Field Values

TYPE_FLOAT

static final int TYPE_FLOAT
Floating point,double precision. Corresponds to ABAP type 'F'.

See Also:
Constant Field Values

TYPE_INT

static final int TYPE_INT
4-byte integer . Corresponds to ABAP type 'I'.

See Also:
Constant Field Values

TYPE_INT2

static final int TYPE_INT2
2-byte integer . Corresponds to ABAP type 's'.

See Also:
Constant Field Values

TYPE_INT1

static final int TYPE_INT1
1-byte integer . Corresponds to ABAP type 'b'.

See Also:
Constant Field Values

TYPE_STRUCTURE

static final int TYPE_STRUCTURE
A heterogeneous structure. Corresponds to ABAP type 'u' and 'v'.

See Also:
Constant Field Values

TYPE_DECF16

static final int TYPE_DECF16
decimal floating point. Corresponds to ABAP type 'a'.

See Also:
Constant Field Values

TYPE_DECF34

static final int TYPE_DECF34
decimal floating point. Corresponds to ABAP type 'e'.

See Also:
Constant Field Values

TYPE_STRING

static final int TYPE_STRING
UTF8 encoded string of variable length. Corresponds to ABAP type 'g'.

See Also:
Constant Field Values

TYPE_XSTRING

static final int TYPE_XSTRING
Byte array of variable length. Corresponds to ABAP type 'y'.

See Also:
Constant Field Values

TYPE_INT8

static final int TYPE_INT8
Eight-byte integer, corresponds to ABAP type '8'.

See Also:
Constant Field Values

TYPE_UTCLONG

static final int TYPE_UTCLONG
Timestamp with high precision, i.e., date and time including fractions of a second, corresponds to ABAP type 'p'.

See Also:
Constant Field Values

TYPE_UTCSECOND

static final int TYPE_UTCSECOND
timestamp with a precision of one second, i.e., date and time with hours, minutes and seconds, corresponds to ABAP type 'n'.

See Also:
Constant Field Values

TYPE_UTCMINUTE

static final int TYPE_UTCMINUTE
Timestamp with a precision of one minute, i.e., date and time with hours and minutes, corresponds to ABAP type 'w'.

See Also:
Constant Field Values

TYPE_DTDAY

static final int TYPE_DTDAY
Date representing year, month, and day, corresponds to ABAP type 'd'.

See Also:
Constant Field Values

TYPE_DTWEEK

static final int TYPE_DTWEEK
Date representing a year and a week of the year, corresponds to ABAP type '7'.

See Also:
Constant Field Values

TYPE_DTMONTH

static final int TYPE_DTMONTH
Date representing a year and a month, corresponds to ABAP type 'x'.

See Also:
Constant Field Values

TYPE_TSECOND

static final int TYPE_TSECOND
Time representing hours, minutes, and seconds, corresponds to ABAP type 't'.

See Also:
Constant Field Values

TYPE_TMINUTE

static final int TYPE_TMINUTE
Time representing hours and minutes, corresponds to ABAP type 'i'.

See Also:
Constant Field Values

TYPE_CDAY

static final int TYPE_CDAY
Date representing a month and a day of the month without specifying a year, corresponds to ABAP type 'c'.

See Also:
Constant Field Values

TYPE_TABLE

static final int TYPE_TABLE
A JCoTable. Corresponds to ABAP type 'h'.

See Also:
Constant Field Values

TYPE_EXCEPTION

static final int TYPE_EXCEPTION
ABAP exception.

See Also:
Constant Field Values

TYPE_ABAPOBJECT

static final int TYPE_ABAPOBJECT
ABAP object.

See Also:
Constant Field Values

TYPE_BOX

static final int TYPE_BOX
ABAP boxed component.

See Also:
Constant Field Values

TYPE_GENERIC_BOX

static final int TYPE_GENERIC_BOX
ABAP boxed generic component.

See Also:
Constant Field Values
Method Detail

indexOf

int indexOf(String fieldName)
Returns the index of the named field info.

Parameters:
fieldName - the name of the field for which the index is being returned
Returns:
the index of the named field in the fields list
Throws:
JCoRuntimeException - with group JCO_ERROR_FIELD_NOT_FOUND if a field with this name does not exist

hasField

boolean hasField(String fieldName)
Checks whether a named field exists.

Parameters:
fieldName - the name of the field to check for existence
Returns:
true if the field with the specified name exist, false otherwise

getName

String getName()
Returns the name of the table/structure this meta-data describes.

Returns:
The name of the underlying table/structure

setName

void setName(String name)
Sets the name of the table/structure this meta data describes. This is in particular useful, when creating a similar instance from an existing metadata instance.

Parameters:
name - the name for the record meta data
Since:
JCo 3.0.7

getFieldCount

int getFieldCount()
Returns the number of entries (fields).

Returns:
the number of entries

getName

String getName(int index)
Returns the field name of the data field at the specified index. The field name is used for identfying a field in a structure or table row.

Parameters:
index - the index of the field
Returns:
The field name of the data field described by this meta information object.

getRecordTypeName

String getRecordTypeName(int index)
Returns the table/structure name of the data field or null if no table name is available.

Parameters:
index - the index of the field
Returns:
The table/structure name of the data field described by this meta information object.

getRecordTypeName

String getRecordTypeName(String fieldName)
Returns the table/structure or data element name of the data field or null if no table name or data element name is available.

Parameters:
fieldName - the name of the field
Returns:
The table/structure name of the data field described by this meta information object.
Throws:
JCoRuntimeException - with group JCO_ERROR_FIELD_NOT_FOUND if a field with this name does not exist

getRecordMetaData

JCoRecordMetaData getRecordMetaData(int index)
Returns the meta data object for the field, if the specified field is a table or structure and was defined with a reference to a meta data object.
The method will return null if no meta data are available. This is the case if the definition was done with type name or the meta data object was not obtained from repository. Note: to get the proper meta data object for the field it is possible to call
                JCoRepository repository;
      ...
        repository.getRecordMetaData(metaDataInstance.getRecordTypeName(index));
 

Parameters:
index - the index of the field
Returns:
The table/structure metadata of the data field or null
See Also:
getRecordTypeName(int)

getRecordMetaData

JCoRecordMetaData getRecordMetaData(String fieldName)
Returns the meta data object for the field, if the specified field is a table or structure and was defined with a reference to a meta data object.
The method will return null if no meta data are available. This is the case if the definition was done with type name or the meta data object was not obtained from repository. Note: to get the proper meta data object for the field it is possible to call
                JCoRepository repository;
      ...
        repository.getRecordMetaData(metaDataInstance.getRecordTypeName(index));
 

Parameters:
fieldName - the name of the field
Returns:
The table/structure metadata of the data field or null
Throws:
JCoRuntimeException - with group JCO_ERROR_FIELD_NOT_FOUND if a field with this name does not exist
See Also:
getRecordTypeName(String)

getExtendedFieldMetaData

JCoExtendedFieldMetaData getExtendedFieldMetaData(int index)
Returns the extended field metadata object at the specified index.

Parameters:
index - the index of the field
Returns:
the extended field metadata object or null if not available

getExtendedFieldMetaData

JCoExtendedFieldMetaData getExtendedFieldMetaData(String fieldName)
Returns the extended metadata object for the field with the specified name.

Parameters:
fieldName - the name of the field
Returns:
the extended field metadata object or null if not available
Throws:
JCoRuntimeException - with group JCO_ERROR_FIELD_NOT_FOUND if a field with this name does not exist

getUnicodeByteLength

int getUnicodeByteLength(int index)
Returns the length of the data field at the specified index for Unicode layout.

Parameters:
index - the index of the field
Returns:
data field length for Unicode layout

getUnicodeByteLength

int getUnicodeByteLength(String fieldName)
Returns the length of the field with the specified name for Unicode layout.

Parameters:
fieldName - the name of the field
Returns:
data field length for Unicode layout
Throws:
JCoRuntimeException - with group JCO_ERROR_FIELD_NOT_FOUND if a field with this name does not exist

getByteLength

int getByteLength(int index)
Returns the byte length of the data field for non-Unicode layout at the specified index.

Parameters:
index - the index of the field
Returns:
data field length for non-Unicode layout

getByteLength

int getByteLength(String fieldName)
Returns the byte length of the field for non-Unicode layout with the specified name.

Parameters:
fieldName - the name of the field
Returns:
data field length for non-Unicode layout
Throws:
JCoRuntimeException - with group JCO_ERROR_FIELD_NOT_FOUND if a field with this name does not exist

getLength

int getLength(int index)
Returns the max length of the data field at the specified index. Note: in case of deep metadata the length for tables and structures can only be requested by their metadata directly.

Parameters:
index - the index of the field
Returns:
data field length

getLength

int getLength(String fieldName)
Returns the max length of the data field at the specified index.

Parameters:
fieldName - the name of the field
Returns:
data field length
Throws:
JCoRuntimeException - with group JCO_ERROR_FIELD_NOT_FOUND if a field with this name does not exist

getType

int getType(int index)
Returns the JCo data type of the data field at the specified index.

Parameters:
index - the index of the field
Returns:
the JCo data type

getType

int getType(String fieldName)
Returns the JCo data type of the data for the field with the specified name.

Parameters:
fieldName - the name of the field
Returns:
the JCo data type
Throws:
JCoRuntimeException - with group JCO_ERROR_FIELD_NOT_FOUND if a field with this name does not exist

getTypeAsString

String getTypeAsString(int index)
Returns a String representation of the JCo data type of the data field at the specified index.

Parameters:
index - the index of the field
Returns:
a String description of the JCo data type

getTypeAsString

String getTypeAsString(String fieldName)
Returns a String representation of the JCo data type of the data field for the field with the specified name.

Parameters:
fieldName - the name of the field
Returns:
a String description of the JCo data type
Throws:
JCoRuntimeException - with group JCO_ERROR_FIELD_NOT_FOUND if a field with this name does not exist

getClassNameOfField

String getClassNameOfField(String fieldName)
Returns the fully-qualified name of the Java class whose instances are manufactured if the methods getValue(int index) or getValue(String fieldName) are called to retrieve a value from the field.

Parameters:
fieldName - the name of the field
Returns:
the fully-qualified class name of the value object
Throws:
JCoRuntimeException - with group JCO_ERROR_FIELD_NOT_FOUND if a field with this name does not exist

getClassNameOfField

String getClassNameOfField(int index)
Returns the fully-qualified name of the Java class whose instances are manufactured if the methods getValue(int index) or getValue(String fieldName) are called to retrieve a value from the field.

Parameters:
index - the field index
Returns:
the fully-qualified class name of the value object

getDecimals

int getDecimals(int index)
Returns the number of decimals of the data field at the specified index Decimals are only necessary for the JCO data types TYPE_BCD and TYPE_FLOAT, respectively.

Parameters:
index - the index of the field
Returns:
data field number of decimals.

getDecimals

int getDecimals(String fieldName)
Returns the number of decimals for the field with the specified name Decimals are only necessary for the JCO data types TYPE_BCD and TYPE_FLOAT, respectively.

Parameters:
fieldName - the name of the field
Returns:
data field number of decimals.
Throws:
JCoRuntimeException - with group JCO_ERROR_FIELD_NOT_FOUND if a field with this name does not exist

getDescription

String getDescription(int index)
Returns the descriptional text of the data field at the specified index.

Parameters:
index - the index of the field
Returns:
A descriptional text of the data field

getDescription

String getDescription(String fieldName)
Returns the descriptional text for the field with the specified name.

Parameters:
fieldName - the name of the field
Returns:
A descriptional text of the data field
Throws:
JCoRuntimeException - with group JCO_ERROR_FIELD_NOT_FOUND if a field with this name does not exist

isStructure

boolean isStructure(int index)
Checks whether the field at the specified index is a structure parameter.

Parameters:
index - the index of the field
Returns:
true if the specified field is a structure parameter, false otherwise

isStructure

boolean isStructure(String fieldName)
Checks whether the field with the specified name is a structure parameter.

Parameters:
fieldName - the name of the field
Returns:
true if the specified field is a structure parameter, false otherwise
Throws:
JCoRuntimeException - with group JCO_ERROR_FIELD_NOT_FOUND if a field with this name does not exist

isNestedType1Structure

boolean isNestedType1Structure(int index)
Checks whether the field at the specified index is a nested TYPE1 structure, which is a structure with a fixed length in memory, but with a nested layout.

Parameters:
index - the index of the field
Returns:
true if the specified field is a nested TYPE1 structure, false otherwise

isNestedType1Structure

boolean isNestedType1Structure(String fieldName)
Checks whether the field with the specified name is a nested TYPE1 structure, which is a structure with a fixed length in memory, but with a nested layout.

Parameters:
fieldName - the name of the field
Returns:
true if the specified field is a nested TYPE1 structure, false otherwise
Throws:
JCoRuntimeException - with group JCO_ERROR_FIELD_NOT_FOUND if a field with this name does not exist

isTable

boolean isTable(int index)
Checks whether the field is a table parameter.

Parameters:
index - the index of the field
Returns:
true if the specified field is a table parameter, false otherwise

isTable

boolean isTable(String fieldName)
Checks whether the field with the specified name is a table parameter.

Parameters:
fieldName - the name of the field
Returns:
true if the specified field is a table parameter, false otherwise
Throws:
JCoRuntimeException - with group JCO_ERROR_FIELD_NOT_FOUND if a field with this name does not exist

isAbapObject

boolean isAbapObject(String fieldName)
Checks whether the field with the specified name is an ABAP object.

Parameters:
fieldName - the name of the field
Returns:
true if the specified field is an ABAP object, false otherwise

isAbapObject

boolean isAbapObject(int index)
Checks whether the field with the specified index is an ABAP object.

Parameters:
index - the index of the field
Returns:
true if the specified field is an ABAP object, false otherwise

lock

void lock()
Locks the meta data to prevent further changes.
Any method that would change the metadata instance will throw an UnsupportedOperationException from then on.

See Also:
JCoListMetaData.add(String, int, int, int, int, String, String, int, Object, String, JCoExtendedFieldMetaData), JCoRecordMetaData.add(String, int, int, int, int, int, int, String, Object, JCoExtendedFieldMetaData)

isLocked

boolean isLocked()
Returns whether this meta data instance is locked.

Returns:
true if the meta data instance is locked, false otherwise.
See Also:
lock()


Copyright © 2015 SAP. All Rights Reserved.