DESCRIBE : ABAP Keyword a day
DESCRIBE
Return attributes of a field
- DESCRIBE FIELD f.
Return attributes of an internal table
- DESCRIBE TABLE itab.
Determine distance between two fields
- DESCRIBE DISTANCE BETWEEN f1 AND f2 INTO f3.
Return attributes of a list
- DESCRIBE LIST NUMBER OF LINES lin.
- DESCRIBE LIST NUMBER OF PAGES n.
- DESCRIBE LIST LINE lin PAGE pag.
- DESCRIBE LIST PAGE pag.
DESCRIBE - Supply attributes of a field
Basic form
DESCRIBE FIELD f.
Effect
Supplies the attributes of the field f . You must specify at least one of the additions:
Additions
1. … LENGTH len
2. … TYPE typ
3. … TYPE typ COMPONENTS n
4. … OUTPUT-LENGTH len
5. … DECIMALS n
6. … EDIT MASK mask
Addition 1
… LENGTH len
Effect
Returns the length of the field f in the field
len .
Example
DATA: FLD(8),
LEN TYPE P.
DESCRIBE FIELD FLD LENGTH LEN.
Result: LEN contains the value 8.
Addition 2
… TYPE typ
Effect
Returns the data type of f in the field typ
Example
DATA: FLD(8) TYPE N,
F_TYPE.
DESCRIBE FIELD FLD TYPE F_TYPE.
Result: F_TYPE contains the value ‘N’ .
Note
Along with the elementary data types you can specify under
DATA (C, N, etc.), several other data types are created either
with reference to Dictionary fields or during generation. These data
types, which are also returned by DESCRIBE , have the following
type IDs:
h Internal table s 2-byte integer with leading sign b 1-byte integer without leading sign u Structure without internal table v Structure containing at least one internal table
For compatibility reasons, … TYPE typ returns C rather than u or v with structures.
Addition 3
… TYPE typ COMPONENTS n
Effect
Similar to … TYPE typ except that, with structures in typ , u or v are returned and in the number of structure components is set in n . If f is not a structure, n is set to 0.
Example
Recursive processing of the pages of an ABAP/4 data structure:
FORM TEST USING F.
DATA: TYP(1) TYPE C, N TYPE I.
FIELD-SYMBOLS:
DO.
ASSIGN COMPONENT SY-INDEX OF STRUCTURE F TO
IF SY-SUBRC <> 0. EXIT. ENDIF.
DESCRIBE FIELD
IF N > 0. ” Equivalent is TYP = ‘u’ OR TYP = ‘v’
PERFORM TEST USING
ELSE.
PERFORM DO_SOMETHING USING
ENDIF.
ENDDO.
ENDFORM.
Addition 4
… OUTPUT-LENGTH len
Effect
Enters the output length of the field f in the variable len .
Example
DATA: FLD(4) TYPE P,
O_LEN TYPE P.
DESCRIBE FIELD FLD OUTPUT-LENGTH O_LEN.
Result: O_LEN contains the value 8.
Addition 5
… DECIMALS n
Effect
Enters the number of decimal places for the field f (defined in addition … DECIMALS of the DATA statement or in the ABAP/4 Dictionary ) in the variable n .
Example
DATA: FLD(8) TYPE P DECIMALS 2,
DEC TYPE P.
DESCRIBE FIELD FLD DECIMALS DEC.
Resultat: DEC contains the value 2.
Addition 6
… EDIT MASK mask
Effect
If the field f has a conversion routine in the ABAP/4 Dictionary , this is placed in the field mask in the form ” ==conv “. ” conv ” stands for the name of the conversion routine, e.g. ” ==ALPHA ” in the conversion routine ” ALPHA “. In this form, mask can then be used in the addition USING EDIT MASK mask of the WRITE statement.
Example
Check whether there is a conversion routine for the field “customer number” in the table SBOOK :
TABLES SBOOK.
DATA: CONV_EXIT(10).
DESCRIBE FIELD SBOOK-CUSTOMID EDIT MASK CONV_EXIT.
IF CONV_EXIT <> SPACE. … ENDIF.
Result: CONV_EXIT contains the value ” ==ALPHA “.
Note
If the required field is only known at runtime, this field can also be assigned dynamically to a field symbol (see FIELD-SYMBOLS , ASSIGN )
DESCRIBE - return attributes of an internal table
Basic form
DESCRIBE TABLE itab.
Effect
Returns the attributes of the internal table itab . You must use at least one of the additions listed below.
Additions
1. … LINES lin
2. … OCCURS n
Addition 1
… LINES lin
Effect
Places the number of filled lines of the table t in the field lin .
Example
DATA: BEGIN OF TAB OCCURS 10,
X,
END OF TAB.
DATA: LIN TYPE P.
…
CLEAR TAB. REFRESH TAB.
MOVE ‘?’ TO TAB-X.
APPEND TAB.
DESCRIBE TABLE TAB LINES LIN.
Result: LIN contains the value 1.
Addition 2
… OCCURS n
Effect
Transfers the size of the OCCURS parameter from the table definition to the variable n .
Example
DATA: BEGIN OF TAB OCCURS 10,
X,
END OF TAB.
OCC TYPE P.
DESCRIBE TABLE TAB OCCURS OCC.
Result: OCC contains the value 10.
Note
If the table is meant to accept more lines than specified by the OCCURS parameter, the parameter value is roughly doubled as long as the table size remains smaller than 8 KB; this table area is held in the roll area. If the table exceeds the maximum permitted size, the OCCURS parameter is not increased and the remaining part of the table is rolled out to the paging area (see DATA ).
For this reason, the OCCURS value determined by the DESCRIBE statement may differ from that in the DATA statement.
The runtime required to execute the DESCRIBE TABLE statement is approx. 4 msn (standardized microseconds).
DESCRIBE - determine distance between two fields
Basic form
DESCRIBE DISTANCE BETWEEN f1 AND f2 INTO f3.
Effect
Determines the distance between the fields f1 and f2 and places the result (in bytes) in f3 .
Example
Determine the distance between two components of the demo table SBOOK in the flight reservation system:
TABLES SBOOK.
DATA DIST TYPE I.
DESCRIBE DISTANCE BETWEEN SBOOK-CARRID
AND SBOOK-BOOKID
INTO DIST.
Result: DIST contains the value 15 because exactly two fields, SFLIGHT-CONNID (4 bytes) and SBOOK-FLDATE (8 bytes), lie between the SBOOK components CARRID and BOOKID ; also, SBOOK-CARRID is itself 3 bytes long. The sum of these values gives the distance between the two components in bytes.
DESCRIBE - supply attributes of a list
Variants
1. DESCRIBE LIST NUMBER OF LINES lin.
2. DESCRIBE LIST NUMBER OF PAGES n.
3. DESCRIBE LIST LINE lin PAGE pag.
4. DESCRIBE LIST PAGE pag.
Effect
Returns the attributes of a list. All variants have the addition … INDEX idx allowing you to determine the attributes of a particular list level ( SY-LSIND = 0,1,2,3,… ).
Note
You should use this key word only in exceptional cases (e.g. when editing an ‘anonymous’ list in a program other than that which generated the list). In all other cases, you should save the relevant values when you generate the list.
Take care when attempting to retrieve the list attributes being set up ( …INDEX SY-LSIND ), since some attributes (number of pages, number of lines, …) may not have been updated yet.
Variant 1
DESCRIBE LIST NUMBER OF LINES lin.
Addition
… INDEX idx
Effect
Returns the number of lines in the list.
The return code value is set as follows:
SY-SUBRC = 0 OK
SY-SUBRC <> 0 List does not exist (only with the addition INDEX )
Addition
… INDEX idx
Effect
Returns the attributes of the list level idx (0, 1,2,3,…).
Example
After line selection, determine the number of lines in the displayed list:
DATA: LN LIKE SY-PAGNO. …
AT LINE-SELECTION.
DESCRIBE LIST NUMBER OF LINES LN.
The variable LN now contains the number of lines in the displayed list.
Variant 2
DESCRIBE LIST NUMBER OF PAGES n.
Addition
… INDEX idx
Effect
Returns the number of pages in the list.
The return code value is set as follows:
SY-SUBRC = 0 OK
SY-SUBRC <> 0 List does not exist (only with the addition INDEX )
Addition
… INDEX idx
Effect
Returns the attributes of the list level idx (0, 1,2,3,…).
Example
After line selection, determine the number of pages in the displayed list:
DATA: PN LIKE SY-PAGNO. …
AT LINE-SELECTION.
DESCRIBE LIST NUMBER OF PAGES PN.
The variable PN now contains the number of pages in the displayed list (i.e. the contents of the system field SY-PAGNO after the list has been generated!).
Variant 3
DESCRIBE LIST LINE lin PAGE pag.
Addition
… INDEX idx
Effect
Returns the number of the page for the line lin in the list.
Note
In interactive reporting, line selection causes a value to be assigned to the system field SY-LILLI (absolute number of selected list line). The system field SY-CPAGE contains the page number for the first displayed line in the list. The selected line does not have to belong to this page (in cases where several pages are displayed at the same time). The page number may be of interest even with direct reading of lines (see READ LINE ).
The return code value is set as follows:
SY-SUBRC = 0 OK
SY_SUBRC = 4 Line does not exist
SY-SUBRC = 8 List does not exist
Addition
… INDEX idx
Effect
Returns the attributes of the list level idx (0, 1,2,3,…).
Example
After line selection, determine the page number for the selected line (SY-LILLI) :
DATA: PAGENUMBER LIKE SY-PAGNO. …
AT LINE-SELECTION.
DESCRIBE LIST LINE SY-LILLI PAGE PAGENUMBER.
The variable PAGENUMBER now contains the page number for the line SY-LILLI (i.e. the contents of the system field SY-PAGNO when outputting the line SY-LILLI !).
Variant 4
DESCRIBE LIST PAGE pag
Additions
1. … INDEX idx
2. … LINE-SIZE col
3. … LINE-COUNT lin
4. … LINES lin
5. … FIRST-LINE lin
6. … TOP-LINES lin
7. … TITLE-LINES lin
8. … HEAD-LINES lin
9. … END-LINES lin
Effect
Returns the attributes of the page pag in the list.
The return code value is set as follows:
SY-SUBRC = 0 OK
SY_SUBRC = 4 Page does not exist
SY-SUBRC = 8 List does not exist
Addition 1
… INDEX idx
Effect
Returns the attributes of the list level idx (0, 1,2,3,…).
Addition 2
… LINE-SIZE col
Effect
Returns the line length for the page pag (see NEW-PAGE…LINE-SIZE ).
Addition 3
… LINE-COUNT lin
Effect
Returns the permitted number of lines for the page pag (see NEW-PAGE…LINE-COUNT ).
Addition 4
… LINES lin
Effect
Returns the number of lines output on the page pag .
Addition 5
… FIRST-LINE lin
Effect
Returns the absolute line number of the first line of the page pag .
Addition 6
… TOP-LINES lin
Effect
Returns the number of lines output by page header processing (i.e. standard title + column headers + TOP-OF-PAGE ).
Addition 7
… TITLE-LINES lin
Effect
Returns the number of lines output as standard title lines by page header processing (see NEW-PAGE…NO-TITLE/WITH-TITLE ).
Note
The value of TITLE-LINES is contained in TOP-LINES .
Addition 8
… HEAD-LINES lin
Effect
Returns the number of lines output as column headers by page header processing (see NEW-PAGE…NO-HEADING/WITH-HEADING ).
Note
The value of HEAD-LINES is contained in TOP-LINES .
Addition 9
… END-LINES lin
Effect
Returns the number of lines reserved for end-of-page processing (see END-OF-PAGE ).
Example
Determine the number of lines output on the third page of the basic list ( SY-LSIND = 0) in the event TOP-OF-PAGE :
DATA: TOP TYPE I,
HEAD TYPE I,
TITLE TYPE I,
REAL_TOP TYPE I.
DESCRIBE LIST INDEX 0 PAGE 3
TOP-LINES TOP
HEAD-LINES HEAD
TITLE-LINES TITLE.
REAL_TOP = TOP - TITLE - HEAD.
Examples
Determine the absolute number of lines in the displayed list:
DATA: LN TYPE I, “number of lines on a page
FLN TYPE I, “number of first line on a page
PN TYPE I, “number of a page
LIST_LINES TYPE I. “total number of lines in list
Determine number of last page:
DESCRIBE LIST NUMBER OF PAGES PN.
Determine number of first line of last page and number of lines on that page:
DESCRIBE LIST PAGE PN FIRST-LINE FLN LINES LN.
Number of list lines = number of first line of last page + number of lines - 1.
LIST_LINES = FLN + LN - 1.
Or: Count lines of all pages in a loop:
CLEAR LIST_LINES.
DO PN TIMES.
DESCRIBE LIST PAGE SY-INDEX LINES LN.
ADD LN TO LIST_LINES.
ENDDO.
or:
DESCRIBE LIST NUMBER OF LINES LIST_LINES.
If you like this post, you may as well like these too:
- END-OF-PAGE : ABAP Keyword a day END-OF-PAGE Basic form END-OF-PAGE. Effect List processing event. The END-OF-PAGE event is executed whenever processing reaches that area when formatting a list page or if the RESERVE statement detects...
- BACK: ABAP Keyword a day BACK. EffectReturns output position to the first line of the current page after the TOP-OF-PAGE processing.When used in connection with RESERVE x LINES , the statement returns the output...
- CLEAR : ABAP Keyword a day CLEARBasic formCLEAR f.Additions 1. … WITH g2. … WITH NULL EffectResets the contents of f to its initial value. For predefined types (see DATA ), the following initial values...
- DO : ABAP Keyword a day DO Variants 1. DO. 2. DO n TIMES. Variant 1 DO. Addition … VARYING f FROM f1 NEXT f2 Effect Repeats the processing enclosed by the DO and ENDDO...
- EXPORT : ABAP Keyword a day EXPORT *Export data - EXPORT obj1 ... objn TO MEMORY. - EXPORT obj1 ... objn TO DATABASE dbtab(ar) ID key. - EXPORT obj1 ... objn TO DATASET dsn(ar) ID...
















Leave a Reply