Package com.sap.conn.jco
Interface JCoRecordMetaData
- All Superinterfaces:
Cloneable
,JCoMetaData
,Serializable
Encapsulates the metadata of either a structure or a table.
Each element of metadata describes a field of these record
oriented data containers in terms of name, type, length, offsets, etc.
JCoRecordMetadata objects are mainly used to create structures and tables
of a certain layout.
JCoRecordMetadata contains all the metadata which is specific to records
- See Also:
-
Field Summary
Fields inherited from interface com.sap.conn.jco.JCoMetaData
TYPE_ABAPOBJECT, TYPE_BCD, TYPE_BOX, TYPE_BYTE, TYPE_CDAY, TYPE_CHAR, TYPE_DATE, TYPE_DECF16, TYPE_DECF34, TYPE_DTDAY, TYPE_DTMONTH, TYPE_DTWEEK, TYPE_EXCEPTION, TYPE_FLOAT, TYPE_GENERIC_BOX, TYPE_INT, TYPE_INT1, TYPE_INT2, TYPE_INT8, TYPE_INVALID, TYPE_ITAB, TYPE_NUM, TYPE_STRING, TYPE_STRUCTURE, TYPE_TABLE, TYPE_TIME, TYPE_TMINUTE, TYPE_TSECOND, TYPE_UTCLONG, TYPE_UTCMINUTE, TYPE_UTCSECOND, TYPE_XSTRING, UNINITIALIZED
-
Method Summary
Modifier and TypeMethodDescriptionvoid
add
(String name, int type, int nucByteLength, int nucByteOffset, int ucByteLength, int ucByteOffset) Adds a new scalar field descriptor to the metadata object.void
add
(String name, int type, int nucByteLength, int nucByteOffset, int ucByteLength, int ucByteOffset, int decimals, String description, Object tabMetaData, JCoExtendedFieldMetaData extended) Adds a new field descriptor to the metadata object.void
add
(String name, int type, int nucByteOffset, int ucByteOffset, JCoRecordMetaData recordMetaData) Adds a new complex field descriptor to the metadata object, i.e.int
getByteOffset
(int index) Returns the offset in a non-Unicode layout of the data field at the specified index.int
getByteOffset
(String fieldName) Returns the offset in a non-Unicode layout of the field with the specified name.In case the JCoRecordMetaData represents a table type,getLineType()
returns the name of the structure, table or data element, which is the line type of the table.int
Returns the total length of a structure or single row of a table with a non-Unicode layout.int
getUnicodeByteOffset
(int index) Returns the offset in a Unicode layout of the data field at the specified index.int
getUnicodeByteOffset
(String fieldName) Returns the offset in a Unicode layout of the field with the specified name.int
Returns the total length of a structure or single row of a table with a Unicode layout.boolean
Checks whether this JCoRecordMetaData is a nested TYPE1 structure, which is a structure with a fixed length in memory, but with a nested layout.void
setLineType
(String lineTypeName) In case the JCoRecordMetaData is created for aJCoCustomRepository
and represents a table type,setLineType()
allows setting the name of the structure, table or data element, which is the line type of the table.void
setRecordLength
(int recordNUCLength, int recordUCLength) Sets the total length of a structure or single row of a table.Methods inherited from interface com.sap.conn.jco.JCoMetaData
getByteLength, getByteLength, getClassMetaData, getClassMetaData, getClassNameOfField, getClassNameOfField, getDecimals, getDecimals, getDescription, getDescription, getExtendedFieldMetaData, getExtendedFieldMetaData, getFieldCount, getLength, getLength, getName, getName, getRecordMetaData, getRecordMetaData, getRecordTypeName, getRecordTypeName, getType, getType, getTypeAsString, getTypeAsString, getUnicodeByteLength, getUnicodeByteLength, hasField, indexOf, isAbapObject, isAbapObject, isLocked, isNestedType1Structure, isNestedType1Structure, isStructure, isStructure, isTable, isTable, lock, setName
-
Method Details
-
add
void add(String name, int type, int nucByteLength, int nucByteOffset, int ucByteLength, int ucByteOffset) Adds a new scalar field descriptor to the metadata object.- Parameters:
name
- Field name for identifying this data fieldtype
- Data field typenucByteLength
- Data field length in bytes for non-Unicode layoutucByteLength
- Data field length in bytes for Unicode layoutnucByteOffset
- Data field offset in bytes for non-Unicode layoutucByteOffset
- Data field offset in bytes for Unicode layout
-
add
void add(String name, int type, int nucByteOffset, int ucByteOffset, JCoRecordMetaData recordMetaData) Adds a new complex field descriptor to the metadata object, i.e. a structure or table- Parameters:
name
- Field name for identifying this data fieldtype
- Data field typenucByteOffset
- Data field offset in bytes for non-Unicode layoutucByteOffset
- Data field offset in bytes for Unicode layoutrecordMetaData
- the metadata for the structure or table
-
add
void add(String name, int type, int nucByteLength, int nucByteOffset, int ucByteLength, int ucByteOffset, int decimals, String description, Object tabMetaData, JCoExtendedFieldMetaData extended) Adds a new field descriptor to the metadata object.- Parameters:
name
- Field name for identifying this data fieldtype
- Data field typenucByteLength
- Data field length in bytes for non-Unicode layoutucByteLength
- Data field length in bytes for Unicode layoutnucByteOffset
- Data field offset in bytes for non-Unicode layoutucByteOffset
- Data field offset in bytes for Unicode layoutdecimals
- Data field number of decimals (only necessary for the data types TYPE_BCD and TYPE_FLOAT)description
- Descriptional text of the data fieldtabMetaData
- metadata if the field is a complex field, i.e. structure or table,null
otherwiseextended
- extended metadata for this field ornull
if none available.
-
getUnicodeByteOffset
int getUnicodeByteOffset(int index) Returns the offset in a Unicode layout of the data field at the specified index.- Parameters:
index
- the index of the field- Returns:
- data field offset in Unicode layout
-
getUnicodeByteOffset
Returns the offset in a Unicode layout of the field with the specified name.- Parameters:
fieldName
- the name of the field- Returns:
- data field offset in Unicode layout
- Throws:
JCoRuntimeException
- with group JCO_ERROR_FIELD_NOT_FOUND if a field with this name does not exist
-
getByteOffset
int getByteOffset(int index) Returns the offset in a non-Unicode layout of the data field at the specified index.- Parameters:
index
- the index of the field- Returns:
- data field offset in non-Unicode layout
-
getByteOffset
Returns the offset in a non-Unicode layout of the field with the specified name.- Parameters:
fieldName
- the name of the field- Returns:
- data field offset in non-Unicode layout
- Throws:
JCoRuntimeException
- with group JCO_ERROR_FIELD_NOT_FOUND if a field with this name does not exist
-
getUnicodeRecordLength
int getUnicodeRecordLength()Returns the total length of a structure or single row of a table with a Unicode layout. Due to alignment constraints the length of a structure or table row is not necessarily the same as the sum of the field length.- Returns:
- The total length of the record with Unicode layout
-
getRecordLength
int getRecordLength()Returns the total length of a structure or single row of a table with a non-Unicode layout. Due to alignment constraints the length of a structure or table row is not necessarily the same as the sum of the field length.- Returns:
- The total length of the record with non-Unicode layout
-
setRecordLength
void setRecordLength(int recordNUCLength, int recordUCLength) Sets the total length of a structure or single row of a table. If the metadata instance has already been locked, anUnsupportedOperationException
will be thrown.- Parameters:
recordNUCLength
- the byte length of the structure with non-Unicode layoutrecordUCLength
- the byte length of the structure with Unicode layout
-
isNestedType1Structure
boolean isNestedType1Structure()Checks whether this JCoRecordMetaData is a nested TYPE1 structure, which is a structure with a fixed length in memory, but with a nested layout.- Returns:
true
if the JCoRecordData is a nested TYPE1 structure,false
otherwise
-
getLineType
String getLineType()In case the JCoRecordMetaData represents a table type,getLineType()
returns the name of the structure, table or data element, which is the line type of the table. If the metadata represents a structure,null
is returned.- Returns:
- the name of the line type for table types,
null
otherwise
-
setLineType
In case the JCoRecordMetaData is created for aJCoCustomRepository
and represents a table type,setLineType()
allows setting the name of the structure, table or data element, which is the line type of the table. If the metadata instance has already been locked, anUnsupportedOperationException
will be thrown.- Parameters:
lineTypeName
- the name of the line type for table types,null
otherwise- Since:
- JCo 3.0.7
-