Академический Документы
Профессиональный Документы
Культура Документы
#######################################################
#q`
###################'####bjbjqPqP##################
###.###:###:###############################################################
#########################################################################(#######
######
######
######
##$###0######(#######?##2###@##$#######################8$#######%#######
%#######%######n?######p?######p?######p?######p?######p?######p?##$###!
A##h###C##L###?##############################+#######################%#######
%######+######+######?#############################################8$#####?
######\######\######\######+############################8$######n?
##############\######################################################+######n?
##############\######\########|
############################################################################!
#########@###4##
###\###########
######;##n##################B!##,###?##0###?#########j
##C######O##
##C##$####!
##############################################################################C###
####################!##4####%##6###I'#####\######(##D###!
*######################################%#######%#######%######?######?
######################################~\##
####################################%#######%#######%######?
######+######+######+######+##############(#######(#######(#####
######(#######(#######(#######
######(#######(#######(#######################################################
######
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
#### HYPERLINK "http://click.hotlog.ru/?20786" \t "_top" ## INCLUDEPICTURE
"http://hit2.hotlog.ru/cgi-bin/hotlog/count?
0.7038333578587375&s=20786&im=27&r=&pg=http
%3A//www.geocities.com/victorav15/sapr3/abap.html&c=Y&j=Y&wh=1024x768&px=32&js=1.3&
" \* MERGEFORMATINET ##### HYPERLINK "http://click.hotlog.ru/?20786" \t "_top" ##
INCLUDEPICTURE "http://hit2.hotlog.ru/cgi-bin/hotlog/count?s=20786&im=27" \*
MERGEFORMATINET #####Here is very compact but full in details ABAP/4 Reference. #
Content. # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "xxprelim"
#Preliminaries.### HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l
"xxdatade" #Data Declaration.### HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "xxdatapr" #Data Processing.###
HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "xxlistpr" #List
Processing.#### HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "xxitab"
#Internal Tables Processing.### HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "xxss" #Selection Screens.###
HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "xxfs" #Field Symbols.###
HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "xxmo"
#Modularization.##### HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l
"prelimi" #Preliminaries:# # HYPERLINK "http://www.geocities.com/victorav15/sapr3/"
\l "notes" #Notation.# # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l
"literal" #Literals.# # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l
"type" #Elementary Data Types.# # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "dicttype" #Correspondence between
ABAP/4 Dictionary Data Types and Elementary Data Types.# # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "offset" #Specifying Offset Values
for Data Objects.# # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l
"conv" #Conversion Rules:# # HYPERLINK "http://www.geocities.com/victorav15/sapr3/"
\l "convedt" #Elementary Data Types.# # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "convfs" #Field Strings.# #
HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "convitab" #Internal
Tables.# # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "convalig"
#Alignment of Data Objects.# # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "format" #Formatting Options.# ##
HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "datadecl" #Declaring
Data:# # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "decltype"
#Types Definition:# # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l
"detytype" #TYPES.# # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l
"typescal" #Elementary Types.# # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "typeitab" #Internal Tables.# #
HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "typeline" #Lines of
Internal Tables.# # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l
"typefstr" #Field Strings.# # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "detypool" #TYPE-POOLS.# #
HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "decldata" #Data
Definition:# # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "dedatabl"
#TABLES.# # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "dedadata"
#DATA.# # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "constant"
#CONSTANTS.# # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "dedastat"
#STATICS.# # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "dedadesc"
#Determining the Attributes of Data Objects (DESCRIBE FIELD|TABLE).# ## HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "dataproc" #Data Processing:# #
HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "assign" #Assignment
digits are allowed after the decimal point. If the program attribute Fixed point
arithmetic is not set, type P fields are interpreted as integers without decimal
places. The DECIMALS parameter of the DATA statement only affects the format of the
WRITE output. ##X #1 #1-65535 #X'00' #Hexadecimal ####Correspondence between
ABAP/4 Dictionary Data Types and Elementary Data Types. # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "top" #Go to top...### HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "offset" #Go to next...# ABAP/4
Dictionary Data Type #Derived Elementary Data Type #Comments ##ACCP #N(6) # ##CHAR
n #C(n) # ##CLNT #C(3) # ##CUKY #C(5) # ##CURR n, m, s #P((n+2)/2) DECIMALS m
[NO-SIGN] # ##DEC n, m, s #P((n+2)/2) DECIMALS m [NO-SIGN] # ##DATS #D # ##FLTP
#F # ##INT1 #No correspondence # ##INT2 #No correspondence # ##INT4 #I # ##LCHR
n #C(n) # ##LRAW n #X(n) # ##LANG #C(1) # ##NUMC n #N(n) # ##PREC #X(2) #
##QUAN n, m, s #P((n+2)/2) DECIMALS m [NO-SIGN] # ##RAW n #X(n) # ##TIMS #T #
##UNIT n #C(n) # ##VARC n #C(n) # ###Specifying Offset Values for Data Objects. #
HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "top" #Go to top...###
HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "conv" #Go to next...#
Offset/Length Extensions for the Assignment/MOVE/WRITE TO Operators: <f>[+<o>]
[(<l>)]. #where o=offset and l=length of the field portion. #Can be on both the
left and right parts of an operator. #Can be variables in MOVE or WRITE TO or
assignment statement and must be literals in mathematical expressions. #Can be used
in # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "write" #WRITE#, #
HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "writeto" #WRITE TO#, #
HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "moveto" #MOVE TO#, #
HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "assignto" #ASSIGN TO#, #
HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "compute" #COMPUTE#, #
HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "mofocall" #PERFORM#. #
Conversion Rules. # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "top"
#Go to top...### HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "format"
#Go to next...# Elementary Data Types: Source: #Target: ###C #D #F #N #P #T #X ##C
#Left-justified. Padded with blanks or truncated. #Only 'YYYMMDD' #Only valid F-#
HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "literal" #literal# #Only
digits are copied. Compressed on the right and padded with zeros. #Source must
contain the representation of a decimal number, i.e. a sequence of digits with an
optional sign and no more than one decimal point. Source can contain blanks. If the
target is too short, an overflow may occur. This may cause the system to terminate
the program. #Only 'HHMMSS' #Valid characters are 0..9,A..F. Left-justified, padded
with zeros or truncated. ##D #Left-justified. No conversion. #No conversion. #->P>F. #->C->N. #->number of days since 01.01.0001. #Not supported. Syntax check or
Runtime error. #->number of days since 01.01.0001. ##F #Converted to the
<mantissa>E<exponent> format. Mantissa lies between 1 and 10 unless the number is
zero. Exponent is always signed. If the target field is too short, the mantissa is
rounded. The length of the character field should be at least 6 bytes.. #->P->D.
#No conversion. #->P->N. #->I and rounded, if necessary. #->P->T. #->P->X. ##N #No
conversion. #->C->D. #->P->F. #Right-justified. Padded with zeros or truncated.
#Packed, right-justified with a positive sign. If the target field is too short,
the program may be terminated. #->C->T. #->P->X. ##P #Right-justified to the
character field, if required with a decimal point. The first position is reserved
for the sign. Leading zeros appear as blanks. If the target field is too short, the
sign is omitted for positive numbers. If this is still not sufficient, the field is
truncated on the left. ABAP/4 indicates the truncation with an asterisk (*). If you
want the leading zeros to appear in the character field, use UNPACK instead of
MOVE. #Represents the number of days since 01.01.0001 and is converted to a date in
YYYYMMDD format. #Accepted as F. #Rounded if necessary, unpacked, and then
transported right-justified. The sign is omitted. If required, the target field is
padded with zeros on the left. #Right-justified. If the target field is too short,
an overflow occurs.#Represents the number of seconds since midnight and is
converted to a time in HHMMSS format. #Rounded if necessary and then converted to a
hexadecimal number. Negative numbers are represented by the two's complement. If
the target field is too short, the number is truncated on the left. ##T #Right-
Dictionary, this is placed in the field <mask> (a C(10) field) in the form
"==conv". "conv" stands for the name of the conversion routine, e.g. "==ALPHA" in
the conversion routine "ALPHA". The ABAP/4 conversion routines have names
CONVERSION_EXIT_name_OUTPUT (and ..._INPUT). In this form, <mask> can then be used
in the addition USING EDIT MASK mask of the # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "write" #WRITE# statement. DESCRIBE
TABLE <itab> [LINES <nl>] [OCCURS <no>]. <nl> - number of filled lines; <no> value of OCCURS. DESCRIBE DISTANCE BETWEEN <f1> AND <f2> INTO <n>. Determines the
distance between the fields <f1> and <f2> and places the result (in bytes) in <n>.
#Data Processing. #Assignment Operations. # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "top" #Go to top...### HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "numer" #Go to next...# Assignment
Operator: <fn> = ... <f3> = <f2> = <f1>. #Equivalent to MOVE. Executed from right
to left. MOVE TO: MOVE <f1> TO <f2>. #Follows the # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "conv" #Conversion Rules.##See also
# HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "percentage" #MOVE
PERCENTAGE# for character string. MOVE-CORRESPONDING: MOVE-CORRESPONDING <fstring1>
TO <fstring2>. #This statement assigns the contents of components of field string
fstring1 to those components of field string fstring2 which have the same names.
WRITE TO: WRITE <f1> TO <f2> [<options>]. #Does NOT follow the # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "conv" #Conversion Rules#. The
target field is interpreted as a type C field. #Option - all # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "format" #Formatting Options#
except UNDER and NO-GAP. #Always checks the settings in the user's master record,
e.g. whether the decimal point appears as a period (.) or a comma (,). Specifying
the Source field at Runtime with WRITE TO: WRITE (<f1>) TO <f2>. #The system places
the value of the data object assigned to <f1> in <f2>. #Example: DATA: NAME(10)
VALUE 'SOURCE', #SOURCE(10) VALUE 'Antony', #TARGET(10). #... #WRITE (NAME) TO
TARGET. #WRITE: TARGET. #This produces the output: #Antony CLEAR: CLEAR <f>|
<fstring> [WITH <g>|NULL]. #Resets the contents to # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "type" #initial values# (or to a
first byte of <g> or to X'00'). FREE: FREE <f>|<fstring>. #Like CLEAR, resets the
contents to # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "type"
#initial values#. Also releases any resources connected with the data object.#This
may be relevant with internal tables, structures with tabular components as well as
table work areas. #Numerical Operations. # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "top" #Go to top...### HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "string" #Go to next...# COMPUTE:
[COMPUTE] <n> = <expression>. Using Mathematical Functions: [COMPUTE] <n> =
<function>( <m> ). #The blanks between the parentheses and the argument <m> are
obligatory. #Functions for all Numeric Data Types: ABS, SIGN, CEIL, FLOOR, TRUNC,
FRAC. #Floating-Point functions: COS, SIN, TAN, ACOS, ASIN, ATAN, COSH, SINH, TANH,
EXP, LOG, LOG10,
SQRT. #Basic Arithmetic Operations: Operation #Using expression #Using keyword
##Addition #<p> = <n> + <m>. #ADD <n> TO <m>. ##Subtraction #<p> = <n> - <m>.
#SUBTRACT <n> FROM <m>. ##Multiplication #<p> = <n> * <m>. #MULTIPLY <m> BY <n>.
##Division #<p> = <n> / <m>. #DIVIDE <m> BY <n>. ##Integer division #<p> = <n> DIV
<m>. #- ##Remainder of division #<p> = <n> MOD <m>. #- ##Exponentiation #<p> = <n>
** <m>. #- ##When using mathematical expressions, please note that the operators +,
-, *, **, and /, as well as opening and closing parentheses, are ABAP/4 words and
must therefore be preceded and followed by blanks. ADD-CORRESPONDING <fstring1> TO
<fstring2>, #SUBTRACT-CORRESPONDING <fstring1> FROM <fstring2>, #MULTIPLYCORRESPONDING <fstring2> BY <fstring1>, #DIVIDE-CORRESPONDING <fstring2> BY
<fstring1>: See # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l
"movecorr" #MOVE-CORRESPONDING#. Adding Sequences of Fields: ADD <n1> THEN <n2>
UNTIL <nz> GIVING <m>. #~ m = n1 + n2 + ... + nz. ADD <n1> THEN <n2> UNTIL <nz> TO
<m>. #~ m = m + n1 + n2 + ... + nz. ADD <n1> THEN <n2> UNTIL <nz> ... ACCORDING TO
<sel> GIVING|TO <m>. #<sel> is generated by # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "ssopti" #SELECT-OPTIONS# or #
The first letter of the word and the string <str> must be the same; STARTING AT
<n1> : Note. SY-FDPOS = offset starting at <n1> as well; ENDING AT <n2> AND MARK :
Marks converting to uppercase. CONDENSE # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "strnote" #*# : CONDENSE <c> [NOGAPS].#Removes leading blanks. Replaces other sequences of blanks with one blank or
removes all blanks if NO-GAPS. STRLEN # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "strnote" #*# : [COMPUTE] <n> =
STRLEN( <c> ).#CONCATENATE # HYPERLINK "http://www.geocities.com/victorav15/sapr3/"
\l "strnote" #*# : CONCATENATE <c1> ... <cn> INTO <c> [SEPARATED BY <s>].#Trailing
blanks ignored. SY-SUBRC = 0 : OK; SY-SUBRC = 4 : result has to be truncated. SPLIT
# HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "strnote" #*# : SPLIT
<c> AT <delimiter> INTO <c1> ... <cn>.#To place all fragments in different target
fields, you must specify enough target fields. Otherwise, the last target field is
filled with the rest of the field <c> and still contains delimiters. #SY-SUBRC =
0 : All target fields are long enough and no fragment has to be truncated.
Otherwise SY-SUBRC = 4. #SPLIT <c> AT <delimiter> INTO TABLE <itab>.#For each part
of the character string, the system adds a new table line. MOVE PERCENTAGE: MOVE
<c1> TO <c2> PERCENTAGE <n> [RIGHT].#<n> = 0...100. PERCENTAGE ignored when either
<c1> or <c2> are not C type. #Logical Operations. # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "top" #Go to top...### HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "write" #Go to next...#
Comparisons: ... <f1> <operator> <f2> ... All Field Types: Operators:
EQ#=#NE#<>#><#LT#<#LE#<=#GT#>#GE#>=##The operands can be database fields, internal
fields, literals, or constants; structured data types (compared component by
component and nested structures are broken down into elementary fields); #
HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "itlogi" #internal
tables#. Fields of different data types can be compared (if they are convertible)
after an automatic # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l
"conv" #Type Conversions# according to the following hierarchical rules: One of the
operands#Other operand#Conversion##F#any#to F##P#any#to P##D or T#any#to D or T.
#Note. Comparison between D and T not supported and causes program
termination.##C#X#to C##C#N#both to P##Character Strings and Numeric Strings: Only
for types C and N. Op.#Meaning#Case-#sensitive#Trailing#Blanks#True if#SY-FDPOS#if
true#SY-FDPOS#if false##CO#Contains Only#yes#included#<f1> contains only characters
from <f2>#length of <f1>#offset of the first character of <f1> that does not occur
in <f2>##CN#contains Not Only#yes#included#<f1> contains characters other than
those in <f2>#offset of the first character of <f1> that does not occur in
<f2>#length of <f1>##CA#Contains Any#yes#?#<f1> contains at least one character
from <f2>#offset of the first character of <f1> that occurs in <f2>#length of
<f1>##NA#contains Not Any#yes#?#<f1> contains no one character from <f2>#length of
<f1>#offset of the first character of <f1> that occurs in <f2>##CS#Contains
String#no#ignored#<f1> contains <f2>#offset of <f2> in <f1>#length of
<f1>##NS#contains No String#no#ignored#<f1> does not contain <f2>#length of
<f1>#offset of <f2> in <f1>##CP#Contains Pattern#no#ignored#<f1> contains pattern
<f2>: * - any character string; + - any single character; #c - the particular
character (in upper or lower case); #* - the "*" symbol; #+ - the "+" symbol; ## the "#" symbol itself; #___ - the trailing blanks. #offset of <f2> in <f1>#length
of <f1>##NP#contains No Pattern#no#ignored#<f1> does not contain pattern
<f2>#length of <f1>#offset of <f2> in <f1>##Bit Structures: Compares first byte of
the <f1> with
<f2>, which should have length 1 byte (recommended use as <f2> type X length 1).
Operator#Meaning#True if##O#bits are one#bits that are 1 in <f2>, are 1 in <f1> as
well##Z#bits are zero#bits that are 1 in <f2>, are 0 in <f1>##M#bits are mixed#from
bits that are 1 in <f2>, at least one is 1 an one is 0 in <f1>##Checking Whether a
Field Belongs to a Range: ... <f1> BETWEEN <f2> AND <f3> ...#it is short form
of#... <f1> GE <f2> AND <f1> LE <f3> ... Checking for the Initial Value: ... <f> IS
INITIAL ...#true if <f> contains the initial value for its # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "type" #type#. In general, any
field, elementary or structured (field strings and # HYPERLINK
corresponding settings of the FORMAT statement for the current output.FORMAT COLOR
<n> [ON] INTENSIFIED [ON|OFF] INVERSE [ON|OFF].#Does not work for # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "lines" #lines#. If INVERSE is
used, the INTENSIFIED has no effect. Has no effect on input fields. vari#Symbol
name#Color##OFF#COL_BACKGROUND#Background (GUI-specific) ##1#COL_HEADING#Headers
(grayish blue) ##2#COL_NORMAL#List body (bright gray) ##3#COL_TOTAL#Totals (yellow)
##4#COL_KEY#Key columns (bluish green) ##5#COL_POSITIVE#Positive threshold value
(green)##6#COL_NEGATIVE#Negative threshold value (red)##7#COL_GROUP#Control levels
(violet)### INCLUDEPICTURE
"http://www.geocities.com/victorav15/sapr3/abapcol.gif" \* MERGEFORMATINET ####Call
the SHOWCOLO report in any system for demonstration of colors in lists. SUMMARY.
this is equivalent to FORMAT INTENSIFIED ON.#DETAIL. this is equivalent to FORMAT
INTENSIFIED OFF.FORMAT HOTSPOT [ON|OFF].#Affects the display format of the mouse
pointer and the effect of the mouse single click: If you drag the mouse pointer
over list areas which are output with the format ...HOTSPOT (lines or fields), the
mouse pointer switches from its standard display format (usually an arrow) to the
format of a hand with an outstretched index finger. If you then click once, the
effect is like double-clicking or pressing the function key F2 (# HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "atlinesel" #AT LINE-SELECTION#).
Has no effect on input fields. FORMAT INPUT [ON|OFF].#Determines whether the user
can enter data. See # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l
"readline" #READ LINE#. FORMAT RESET.#The same as FORMAT COLOR OFF INTENSIFIED OFF
INVERSE OFF HOTSPOT OFF INPUT OFF. #Define Structure of List. # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "top" #Go to top...### HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "readlist" #Go to next...# List
Width: REPORT <report> LINE-SIZE <n>. #n=0 : standard list. List cannot be wider
than 255 (132 for most printers). SY-LINSZ contains the current line size. #To
adapt the line size to the current window width, set <n> to SY-SCOLS. SY-SCOLS
contains the number of characters of a line of the current window. Page Length:
REPORT <report> LINE-COUNT <length>[(<n>)]. #n - number of reserved for footer
lines. length=0 : standard list. SY-LINCT contains the current page length or 0 if
standard page.#To adapt the page length to the current window length, set <length>
to SY-SROWS. SY-SROWS contains the number of lines of the current window.
Individual Page Header: REPORT <report> [NO STANDARD PAGE HEADING]. #....#TOP-OFPAGE [DURING LINE-SELECTION]. #WRITE... . #List processing event that is
executed before the first data is output on a new page. Without the addition ...
DURING LINE-SELECTION, processed only when generating basic lists, not when
creating secondary lists. Only executed before outputting the first line on a new
page - not triggered by a # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "newpage" #NEW-PAGE#
statement.#During the event TOP-OF-PAGE, you can also fill the system fields SYTVAR0...SY-TVAR9 with values that should replace eventual placeholders &0...&9 in
the standard page header. Individual Page Footer: REPORT <report> LINE-COUNT
<length>(<n>). #....#END-OF-PAGE. #WRITE... . #END-OF-PAGE processed only if
n>0. If you explicitly specify a new page with # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "newpage" #NEW-PAGE#, END-OF-PAGE
is ignored. Page Break: NEW-PAGE [# HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "printon" #PRINT ON ...#]. ends the
current page and increased SY-PAGNO by 1; does not trigger the END-OF-PAGE event.
NEW-PAGE [NO-TITLE|WITH-TITLE] [NO-HEADING|WITH-HEADING]. used to suppress or
display the standard header and/or columns headers on all pages to come. default
both: WITH for basic and NO for secondary lists; does not affect the display of a
page header defined at the event TOP-OF-PAGE. NEW-PAGE LINE-COUNT <length>.
length=0 : standard list. Can be variable. NEW-PAGE LINE-SIZE <n>. n=0 : standard
list. Can be variable. Within a list level, that is, if the next page is not the
beginning of a new list level, the system ignores the LINE-SIZE option. RESERVE <n>
LINES. Triggers a page break if less than <n> free lines are left on the current
list page between the last output and the page footer.
<n> can be a variable. Before starting a new page, the system processes the END-
OF-PAGE event. RESERVE only takes effect if output is written to the subsequent
page. No blank pages are created. Scrolling: common notes. SCROLL works for
completed lists only. If you use SCROLL before the first output statement of a
list, it does not affect this list. If you use SCROLL after the first output
statement of a list, it affects the entire list, that is, all subsequent output
statements as well; While creating a secondary list, a SCROLL statement without
INDEX option always refers to the previously displayed list on which the
interactive event occurred (index SY-LISTI); Only when creating the basic list does
the SCROLL statement refer to the currently created list; You can use the INDEX
option to explicitly scroll on existing list levels. To do this, the lists need not
be displayed. When the user displays the list again, it is scrolled to the
specified position. If the specified list level does not exist, the system sets SYSUBRC to 8; If, during an interactive event, you want to scroll through the list
you are currently creating, use SY-LSIND as the index in the SCROLL statement. Note
that a manipulation of SY-LSIND takes effect only at the end of the event on the
created list, independent of where you place the statement in the processing block.
If you want to set the list level explicitly, you must manipulate SY-LSIND in the
last statement of the processing block to make sure that a SCROLL statement within
the processing block accesses the correct list; Another way of scrolling
interactive lists from within the program is to use the SET USER-COMMAND statement
in connection with the corresponding system-defined function codes; SY-SUBRC = 0 :
Ok; = 4 : scrolling was not possible (exit boundaries); = 8 : list level does not
exist. SCROLL LIST FORWARD|BACKWARD [INDEX <index>]. vertical scrolling window by
window SCROLL LIST TO {FIRST PAGE|LAST PAGE|PAGE <n>} [INDEX <index>] [LINE
<line>]. #SCROLL LIST FORWARD|BACKWARD <n> PAGES [INDEX <index>]. vertical
scrolling by pages SCROLL LIST LEFT|RIGHT [INDEX <index>]. horizontal scrolling to
margins SCROLL LIST TO COLUMN <n> [INDEX <index>]. #SCROLL LIST LEFT|RIGHT BY <n>
PLACES [INDEX <index>]. horizontal scrolling by columns SET LEFT SCROLL-BOUNDARY
[COLUMN <n>]. Only the part to the right from {current column|column <n>} will be
scrolled horizontally. Applies to the entire current page, and only to it. To set
the same scrollable area for all pages of a list, use, for example, at the TOP-OFPAGE event. NEW-LINE NO-SCROLLING. Excludes the line following the statement from
horizontal scrolling (for example, title line). NEW-LINE SCROLLING. This statement
makes sense only if after NEW-LINE NO-SCROLLING no line was output. Displaying
Lists in Dialog Windows. WINDOW STARTING AT <left> <upper> [ENDING AT <right>
<lower>].#Causes the current list (index SY-LSIND) to be displayed in a dialog
window. If <upper> = 0, the list appears on a fullscreen. By default, the system
uses the values of the lower right corner of the window on which the event
occurred. If the width of the dialog window is smaller than the width of the
preceding list, the system creates a horizontal scroll bar on the dialog window. To
prevent that, you must adapt the width of the secondary list to the width of the
dialog window by using the following statement: NEW-PAGE LINE-SIZE <width>.#Dialog
window has not a menu bar or a standard toolbar. Standard application toolbar at
the lower margin has functions PRI, %SC, %SC+, and RW. Positioning the output For
the current output position, refer to the system fields SY-COLNO - the current
column; SY-LINNO - the current line. POSITION <column>. Sets horizontal output
position. Se also # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l
"writeat" #WRITE AT# and # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "skipto" #SKIP TO LINE# for
vertical output position. BACK. Subsequent output appears beneath the page header
or to the first line of a block of lines defined with the # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "reserve" #RESERVE#, if used. If
you specify BACK at the TOP-OF-PAGE event, the system does not set the output
position to beneath the entire page header, but only to beneath the standard page
header. Any output written now overwrites the self-defined page header specified at
TOP-OF-PAGE. SET TITLEBAR: SET TITLEBAR <titlebar> [WITH <f0> <f1> ... <f9>]. #Sets
a screen title. A set title remains valid within a transaction until you call SET
TITLEBAR again. SY-TITLE (can be up to 70 characters long) contains the current
screen title. Allows you to build up to 9 parameters into the header, using the
variables &1 to &9. Retrieving List Attributes: 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. DESCRIBE LIST NUMBER OF
LINES|PAGES <n> [INDEX <index>]. Returns the number of lines|pages in the list. SYSUBRC=0 : Ok, <>0 : list does not exists. DESCRIBE LIST LINE <nl> PAGE <n> [INDEX
<index>]. Returns the number of the page for the line <nl> in the list. SYSUBRC=0 : Ok, 4 : line does not exists, 8 : list does not exists. DESCRIBE LIST
PAGE <np> <options> [INDEX <index>]. Returns the attributes of the page <np> in the
list. SY-SUBRC=0 : Ok, 4 : page does not exists, 8 : list does not exists.
<options>: LINE-SIZE <n> - page width; LINE-COUNT <n> - page length; LINES <n> number of displayed lines; FIRST-LINE <n> - absolute number of the first line; TOPLINES <n> - number of lines output by page header processing (i.e. standard title +
column headers + # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l
"pagehd" #TOP-OF-PAGE#); TITLE-LINES <n> - number of lines output as standard title
lines by page header processing (see # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "newpage" #NEW-PAGE#). #Note. The
value of TITLE-LINES is contained in TOP-LINES; HEAD-LINES <n> - number of lines
output as column headers by page header processing (see # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "newpage" #NEW-PAGE#). #Note. The
value of HEAD-LINES is contained in TOP-LINES; END-LINES <n> - number of lines
output by page footer processing (see # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "pageft" #END-OF-PAGE#); #
Interactive Lists. # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l
"top" #Go to top...### HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l
"prefuncd" #Go to next...# HIDE: HIDE <f>. #Stores the contents of variable <f> in
relation to the current output line (system field SY-LINNO) internally in the socalled HIDE area. <f> must not necessarily appear on the current line. READ LINE:
The system internally stores all lists created in succession by one report program.
Therefore, you can access any list from within the program that was created during
the current dialog session and has not been deleted by returning to a previous list
level. #READ LINE <n> [INDEX <index>] # [FIELD VALUE <f1> [INTO <g1>] ... <fn>
[INTO <gn>]] # [OF CURRENT PAGE|OF PAGE <n>]. #READ CURRENT LINE# [FIELD
VALUE <f1> [INTO <g1>] ... <fn> [INTO <gn>]] #Stores the contents of line from the
list on which the event was triggered (list index SY-LISTI, line number SY-LILLI)
in the SY-LISEL system field and fills all HIDE information stored for this line
back into the corresponding fields.#SY-SUBRC = 0 : Ok; = 4 : line does not
exist.#FIELD VALUE uses # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l
"conv" #Conversion Rules# (see Source Type C). Fields that do not appear in a line,
do not affect the target field. If a field appears several times in a line, the
system uses only the first one. MODIFY LINE: MODIFY {LINE <n> | LINE <n> OF CURRENT
PAGE | LINE <n> OF PAGE <page> | CURRENT LINE}# [INDEX <index>] - index=SYLSIND, applied only for LINE <n> # [LINE FORMAT <fmt1> ... <fmtn>] - applied
for whole line # [FIELD FORMAT <f1> <fmt11> ... <fmt1m> [... <fn> <fmtn1> ...
<fmtnm>]] # [LINE VALUE FROM <wa>] # [FIELD VALUE <f1> [FROM <g1>] [...
<fn> [FROM <gn>]]. - <f1> means <f1> FROM <f1> #Changes the line of the list taking
values from SY-LISEL (or from the <wa> or <gn>). Usually after # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "ilevents" #List Events:# AT LINESELECTION, AT PFxx, AT USER-COMMAND, where the SY-LISEL is filled. Fills HIDE
information.#SY-SUBRC = 0 : Ok; <> 0 : line was not changed.#GET CURSOR: GET CURSOR
FIELD <f> [OFFSET <o>] [LINE <n>] [VALUE <val>] [LENGTH <l>]. #Transfers the name
of the field on which the cursor is positioned during a user action into the
variable <f>. If the cursor is on a field, the SY-SUBRC is 0, otherwise 4. The
system transports the names of global variables, constants, field symbols, or
reference parameters of subroutines. For literals, local fields, and VALUE
parameters of subroutines, the system sets SY-SUBRC to 0, but transfers SPACE as
the name.#GET CURSOR LINE <n> [OFFSET <o>] [VALUE <val>] [LENGTH <l>]. #Transfers
the number of the line on which the cursor is positioned during a user action into
the variable <n>. If the cursor is on a list line, the SY-SUBRC is 0, otherwise 4.
<o> contains the position of the cursor within the field. If the cursor is on the
first column, <o> = 0; <n> contains the number of the list line on which the cursor
is positioned (SY-LILLI); <val> contains
the character string output representation of the field|line on which the cursor
is positioned. The representation includes formatting characters; <l> contains the
output length of the field on which the cursor is positioned. SET CURSOR: SET
CURSOR FIELD <f> [OFFSET <o>] [LINE <n>]. #Set cursor at begin of field <f> (should
be in uppercase), or at column <o> (begin is ). In step loop or in list processing
(if the field is displayed on several lines) <n> is needed. In list processing <n>
means SY-LILLI.#SET CURSOR LINE <n> [OFFSET <o>]. #In list processing <n> means SYLILLI.#SET CURSOR <column> <line>. #<column> and <line> are absolute position on
the current screen. Event Control for Interactive Lists: AT LINE-SELECTION occurs
after the user double-clicks on a line, clicks once on a hotspot, or chooses EditChoose; AT PF<nn> occurs after the user presses the corresponding function key.
Predefined system functions have higher priority than self-defined events. The
system does not trigger an event AT PF<nn> for keys whose function code is
predefined: Help #F1#Choose #F2#Back #F3##Possible Entries#F4#Cancel #F12#First
Page #F21##Previous Page #F22#Next Page #F23#Last Page #F24##Recommended use AT PF
for testing purposes only. In final version use AT USER-COMMAND together with selfdefined interfaces. AT USER-COMMAND occurs after the user chooses a self-defined
action. SY-UCOMM contains chosen function code. SET USER-COMMAND <command> triggers
event from within the program. Takes effect after the current list is completed.
Before the system displays the list, it triggers the event that corresponds to the
function code stored in <command>, independent of the applied user interface.
<command>#Event##self-defined function code #AT USER-COMAND ##'PICK' #AT LINESELECTION ##'PF<nn>' #AT PF<nn> ### HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "prefuncd" ##Predefined Function
Code #not event, but direct action##SET PF-STATUS: SET PF-STATUS <status>
[EXCLUDING <function>|<itab>] [IMMEDIATELY]. #Sets user-defined <status> for all
subsequent list levels until you set another status. SY-PFKEY - status of the
current list. <status> is SPACE to set system status. <function>, type C(4), (or
list of functions in the <itab>) - function code(s) to be deactivated in the
<status>. IMMEDIATELY changes the status of the currently displayed list (SY-LISTI)
within the processing block of the interactive event. Without this option, the
system changes the status of the current secondary list (SY-LSIND) that is
displayed only at the end of the processing block. Messages in Lists: Messages are
stored and maintained in the T100 "Messages" table by Language key - type C(1);
Application area (or message Id) - type C(2); Message number - type C(3). REPORT
<report> MESSAGE-ID <id>. Specifies <id> for use in <report> statically.MESSAGE
<type><number>[(<id>)] [WITH <f1>...<f4>] [RAISING <exception>].#MESSAGE ID <fid>
TYPE <ftype> NUMBER <fnumber> [WITH <f1>...<f4>] [RAISING <exception>].Specifies
message dynamically (2nd statement - at runtime: <fid>, <ftype>, <fnumber> variables). <f1>...<f4> replace placeholders in the message text: the '&' - one
after the other; the '&i' - according to the number. Use '&&' to display the '&'
symbol in the message. Up to 4 placeholders are allowed, each can place up to 50
characters.#RAISING is allowed only for a function module.#When executing the
statement, the following system variables are set: SY-MSGID - message ID; SY-MSGTY
- message type; SY-MSGNO - message number. Message Type: Type#Display#Action##I Info #Dialog window #'Press Enter to continue'. ##W - Warning #Status window
#'Correction possible'. #= E for Lists Processing ##E - Error #Status window
#'Correction required'. #= A for Processing of basic list, #returns to the previous
list level for a secondary list.##A - Abend #Dialog window #'Transaction
terminated'. ##X - eXit #Status window #= A, but transaction terminated with short
dump #MESSAGE_TYPE_X##S - Success #Status window #'Message on next screen'. ###
Predefined System Codes. # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "top" #Go to top...### HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "itabid" #Go to next...# Predefined
fields which are not numeric (type F, I, and P) and are not internal tables. These
key fields form the standard key of an internal table. To obtain the standard key
of an internal tables with nested structures (table lines which contain field
strings as components), the system breaks down the sub-structures to the level of
elementary fields; Self-Defined - can be specified when reading lines from an
internal table using the # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "itread" #READ TABLE#. #Filling
Table. # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "top" #Go to
top...### HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "itabread" #Go
to next...# Appending Lines: APPEND [{<wa>|INITIAL LINE} TO] <itab>. Appends a new
line to table. For tables with a header line the source area can be omitted. After
statement, the SY-TABIX contains the index of the appended line. APPEND LINES OF
<itab1> [FROM <idx1>] [TO <idx2>] TO <itab2>. Appends lines from one table to
another table. Default appends entire table. After statement, the SY-TABIX contains
the index of the last appended line. About 3 to 4 times
faster than appending lines line by line in a loop. APPEND [<wa> TO] <itab> SORTED
BY <f>. Inserts the new line so that the internal table <itab> is sorted in
descending order by the field <f>. If you use the SORTED BY option, the table can
contain only the number of lines specified in the OCCURS parameter. If you add more
lines than specified, the last line is discarded. This is useful for creating
ranked lists of limited length (e.g. "Top Ten"). For ranked lists containing more
than 100 entries, use instead the # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "itsort" #SORT# for performance
reasons. Inserting Lines: INSERT [{<wa>|INITIAL LINE} INTO] <itab> [INDEX <idx>].
Inserts a new line into table. For tables with a header line the source area can be
omitted. With INDEX option, the new line is inserted before the line which has the
index <idx>. After the insertion, the new entry has the index <idx> and the index
of the following lines is incremented by 1.#If the table consists of <idx> - 1
entries, the system appends the new entry after the last existing table line. If
the table has less than <idx> - 1 entries, the system cannot insert the entry: SYSUBRC = 4. If success, SY-SUBRC = 0.#Use INSERT without the INDEX option is allowed
only within a # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "itloop"
#LOOP - ENDLOOP# loop by inserting the new entry before the current line (i.e. the
line which has the index returned by SY-TABIX). INSERT LINES OF <itab1> [FROM
<idx1>] [TO <idx2>] INTO <itab2> [INDEX <idx>]. Inserts lines from one table into
another table. Default inserts entire table. Can be up to 20 times faster than
inserting lines line by line in a loop. Collecting Lines: COLLECT [<wa> INTO]
<itab>. If a table entry with the same # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "itabkey" #standard key# does not
exists (all non-numeric fields), the COLLECT has the same effect as the # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "itappend" #APPEND#. If exists, the
COLLECT adds the contents of the numeric fields in the work area to the contents of
the numeric fields in the existing entry. SY-TABIX contains the index of the
processed line. #Reading Table. # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "top" #Go to top...### HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "itabmodi" #Go to next...# Reading
Single Lines: READ TABLE <itab> [INTO <wa>] INDEX <idx>. Reads the single line with
# HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "itabidx" #index# <idx>
into <wa> (or into header line, if omitted). This is the fastest method. <idx> <= 0
: runtime error; <idx> > table size : SY-SUBRC = 4; <idx> found : SY-SUBRC = 0, SYTABIX = <idx>. READ TABLE <itab> [INTO <wa>] [# HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "binsrch" #BINARY SEARCH#]. Reads
the first line with a particular # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "itabidx" #standard key#, which
should be placed in the table work area (works only for internal tables with header
line). entry found : SY-SUBRC = 0, SY-TABIX = <idx>; entry not found : SY-SUBRC <>
0;. READ TABLE <itab> [INTO <wa>] WITH KEY # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "withkey" #<key># [# HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "binsrch" #BINARY SEARCH#]. Reads
the first line with <key>. entry found : SY-SUBRC = 0, SY-TABIX = <idx>; entry not
found : SY-SUBRC <> 0;. Key definition for internal tables: ....WITH KEY <k1> =
<f1> ... <kn> = <fn> ... The self-defined key consists of the table components
<k1>...<kn>. If the data type of <fi> is not compatible to the data type of <ki>,
then <fi> is # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "convedt"
#converted# to the type of <ki>. You can # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "offset" #specify an offset and
length# for any component you use in the key. You can set key fields at runtime by
replacing <ki> with (<ni>). The key field is the contents of the field <ni>. If
<ni> is blank at runtime, the system ignores this key field. If <ni> contains an
invalid component name, a runtime error occurs. ....WITH KEY = <value> ... Defines
entire line as key (will be converted if necessary). ....WITH KEY <value> ... The
system compares the (left-justified) beginning of a line with <value>. <value>
cannot contain an internal table or a structure containing an internal table. In
contrast to the above two options, the comparison is processed using the data type
of <value>. Additions: BINARY SEARCH - performs a binary search instead of the
standard sequential search (much faster). Table must be sorted. SY-SUBRC = 0 :
entry found, SY-TABIX = index of the found entry; SY-SUBRC = 4 : entry not found,
SY-TABIX = index of the next largest entry, output area remains unchanged; SY-SUBRC
= 8 : entry not found, the key is greater than last table entry, SY-TABIX = (number
of all entries + 1), output area remains unchanged. TRANSPORTING {<f1> ... <fn>|NO
FIELDS} - only transports selected fields to the target area. COMPARING {<f1> ...
<fn>|ALL FIELDS} - reads single line with key or index into the target area. After
reading the line, the components specified in fields list are compared to the
corresponding components of the target area: SY-SUBRC = 0 : line is read and the
contents of the compared fields are the same; SY-SUBRC = 2 : line is read, but the
contents of the compared fields are not the same; SY-SUBRC = 4 : no line was read.
LOOP Processing: LOOP AT <itab> [INTO <wa>] [FROM <n1>] [TO <n2>] [WHERE
<condition>].#...#ENDLOOP.#<itab> is read line by line into <wa> or into the
table work area. For each line read, processed the statement block between LOOP and
ENDLOOP. Within the statement block, SY-TABIX contains the index of the current
line. The loop ends as soon as all lines of the table have been processed. After
the ENDLOOP statement: SY-SUBRC = 0 : at least one line was read; SY-SUBRC = 4 :
otherwise it is set to 4. Restriction the number of lines to be processed: FROM
<n1> - the index of the first line to be read. TO <n2> - the index of the last line
to be read. WHERE # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l
"logical" #<condition># - the first operand of the logical expression must be a
component of <itab>. Cannot be used together with the control keyword AT inside the
loop. Note. The FROM and TO options restrict the number of lines which the system
has to read. The WHERE option only prevents unnecessary filling of the work area.
With the WHERE option, the system must read all lines. To improve performance, you
should use the FROM and TO options as much as possible. It can be also beneficial
to leave the loop with the # HYPERLINK "http://www.geocities.com/victorav15/sapr3/"
\l "moxxexit" #EXIT# statement instead of using the WHERE option. Calculating
Totals: SUM.#Can be used only in LOOP - ENDLOOP block. A component of an internal
table line may not be another table. In an AT - ENDAT block, calculates totals for
the numeric fields (I, F, P) of all lines in the current line group and writes them
to the corresponding fields in the work area. Outside an AT - ENDAT block - do it
for lines of the internal table in each loop pass. Therefore, SUM should be used
only in AT - ENDAT blocks. Using Control Levels for Groups of Lines (AT ... ENDAT
Events): AT <line>.#...#ENDAT.#The <line> condition: <line>#Meaning ##FIRST
#First line of the internal table ##LAST #Last line of the internal table ##NEW <f>
#Beginning of a group of lines with the same contents in the field <f> and in the
fields left of <f> ##END OF <f> #End of a group of lines with the same contents in
the field <f> and in the fields left of <f> ##<f> can be: table field name; table
field name with # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l
"offset" #Offset/Length specification#; # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "fisy" #field symbol#. If it does
not point to a valid component, a runtime error occurs; (<name>) instead of <f> (#
internal table that has no table work area (header line).#Clears the table work
area if the table has it. FREE <itab>. Empties internal table and releases reserved
memory without clearing the table work area. #Other Operations With Internal Table.
# HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "top" #Go to top...###
HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "itabrang" #Go to
next...# SORT <itab> [<order>] [AS TEXT]#[BY <f1> [<order>] [AS TEXT] ... <fn>
[<order>] [AS TEXT]]. <order>: ASCENDING (default) or DESCENDING. Sorts by #
HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "itabkey" #standard# or #
HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "itabkey" #self-defined#
(if BY defined) key. The system uses the options you specify before BY as a default
for all fields specified behind BY. The options that you specify after individual
fields overwrite for these fields the options specified before BY.#<f1> ... <fn>
can be: of any type, including type P, I, and F fields, or tables; up to 250;
(<name>) instead of <f> (# HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "writeto" #See also#). The <name>
contains the name of the field <f>. If <name> is empty at runtime, the system
ignores it. If it contains an invalid component name, a runtime error occurs.;
table field name with # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l
"offset" #Offset/Length specification#; Without the option AS TEXT, the system
sorts character fields binarily and according to their platform-dependent internal
coding. With the option AS TEXT, the system sorts character fields alphabetically
according to the current text environment. By default, the text environment is set
in the user's master record. As an exception, you can set the text environment with
the # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "setloclang" #SET
LOCALE LANGUAGE#. The option AS TEXT frees you from # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "convert" #converting a character
field into a sortable format before sorting#. Such a conversion is only necessary,
if you want to sort an internal table alphabetically first and # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "binsrch" #search it binarily
afterwards#. The order of an internal table after alphabetical sorting differs from
the order after binary sorting. sort an internal table several times with
alphabetical keys. In this case, the performance is better, because the conversion
is processed only once; create alphabetical indexes for database tables in your
program. AS TEXT before BY influences only the character fields in the sort key. If
you specify AS TEXT after a field name, this field must be of type C. Sorting is
not stable. This means that the old sequence of lines with the same sort key may
not necessarily be retained. If there is not enough space for sorting in the main
memory, the system writes data into a temporary external file. The name of this
file is defined in the SAP profile parameter DIR_SORTTMP. Searching Internal Tables
for Character String: SEARCH <itab> FOR <str> [<options>]. Options and patterns
like # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "search"
#searching string for string#. No type conversion is performed also (the entire
table line is treated as character string). <itab> is always table, not header
line, if even the table has header line. In addition to SY-SUBRC and SY-FDPOS, SYTABIX is set to found line index. Logical Expressions: ... <itab1> {EQ|=|NE|<>|><|
GE|>=|LE|<=|GT|>|LT|<} <itab2> ...#The first criterion for comparing internal
tables is the number of lines they contain. The more lines an internal table
contains, the larger it is. If two internal tables contain the same number of
lines, they are compared line by line, component by component. If components of the
table lines are themselves internal tables, they are compared recursively. If you
use operators other than the equality operator, the system stops the comparison as
soon as it finds a pair of components which are not equal and returns the result.
In the case of internal tables with a header line, you can use square brackets ([])
after the table name to distinguish the table body from the table work area.
Assignment Operator: MOVE <itab1> TO <itab2>.#[COMPUTE] <itab2> = <itab1>. Copies
entire contens of internal table that has not header line. MOVE <itab1>[] TO
<itab2>[].#[COMPUTE] <itab2>[] = <itab1>[]. Copies entire contens of internal table
with header line. #RANGES. # HYPERLINK "http://www.geocities.com/victorav15/sapr3/"
\l "top" #Go to top...### HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l
"ssparm" #Go to next...# RANGES <range> FOR <f>.This is a short form of#DATA: BEGIN
OF <range> OCCURS 10, #SIGN(1), #OPTION(2), #LOW LIKE <f>, #HIGH
LIKE <f>, #END OF <range>.#Creates a selection table <range> which refers to the
column of database field <f> or to an internal field <f>. The <range> has the same
structure as # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "ssopti"
#Selection Options# internal table, but the are not part of the selection screen
and are not linked to a database table. SIGN#OPTION#LOW#HIGH##I - inclusion; E exclusion. ## HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "logical"
#Logical operators:# EQ, NE, GT, GE, LE, LT, CP, NP - if HIGH is empty; BT
(between), NB (not between) - if HIGH is not empty. #Single value - if HIGH is
empty; Lower limit - if HIGH is not empty. #Upper limit or empty ###Selection
Screens. #Parameters. # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l
"top" #Go to top...### HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l
"ssopti" #Go to next...# PARAMETERS <parm>[(<length>)] <type> [<decimals>]. Creates
a parameter <parm>. The additions length, type, and decimals are the same as for #
HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "dedadata" #DATA#. Cannot
have type F. Comments on the left side of the input fields can be changed using
Selection Texts.#Other additions: DEFAULT <f> - can be either a literal or a field
name. Default values transported before # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "ssevini" #INITIALIZATION#.
Therefore, default can be only fields which are already filled when the user starts
the program (e.g. SY-...); NO-DISPLAY - hides parameter. To hide a parameter only
under certain conditions declare it without NO-DISPLAY suppress its display by
using # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "ssmodiss"
#MODIFY SCREEN#. LOWER CASE - allows accept lower case. Cannot be used if a
parameter references a dictionary fields which has its own attributes; OBLIGATORY
AS CHECKBOX - creates a checkbox (type C(1)). Cannot have TYPE|LIKE addition. Valid
values are ' ' and 'X'.#Note.
Using LIKE to refer to an ABAP/4 Dictionary field of type CHAR of length 1 and
valid values 'X' and ' ' (defined in the field's domain) automatically creates a
checkbox on the selection screen; RADIOBUTTON GROUP <radi> - creates a radiobutton
and assigns it to the group <radi> (length of the <radi> cannot be > 4). Can have
LIKE refering to C(1). Valid values are ' ' and 'X'. If no DEFAULT addition exists
then first radiobutton in group will be 'X'; MEMORY ID <pid> - uses a default value
from the global SAP memory (SPA/GPA parameters). <pid> can be up to 3 characters
long and must not be enclosed in quotation marks. You use the global SAP memory to
pass values retained beyond transaction limits between programs. This memory is
available to a user for the entire duration of a terminal session and any parallel
sessions use the same memory. The SAP memory is thus more comprehensive than the
transaction-bound # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l
"datclust" #Data Clusters in ABAP/4 memory#. See the TPARA table ("Directory of
Memory IDs") for all system Memory IDs. Parameters can be set user specific in the
user's master records with the name <pid>. See also # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "setget" #SET/GET PARAMETER#.
MATCHCODE OBJECT <mobj> - assigns matchcode object from Data Dictionary to the
parameter. <mobj> should be 4 characters long and must not be enclosed in quotation
marks. If you use this option, the possible entries pushbutton # INCLUDEPICTURE
"http://www.geocities.com/victorav15/sapr3/matchcde.gif" \* MERGEFORMATINET
###appears after the input field of the parameter (? not always). When the user
presses this button, the effect is to perform a matchcode selection for the input
field MODIF ID <key> - assigns the parameter to a modification group. <key> should
be 3 characters long and must not be enclosed in quotation marks. The MODIF ID
option always assigns <key> to the column SCREEN-GROUP1 of the internal table
SCREEN. Parameters assigned to a modification group can be processed as an entire
group with the # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l
"ssloopss" #LOOP AT SCREEN#/# HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "ssmodiss" #MODIFY SCREEN#
statements during the # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l
"ssevoutp" #AT SELECTION-SCREEN OUTPUT# event; # HYPERLINK
COMMENT option must be used. SELECTION-SCREEN POSITION <pos>. <pos> can be a number
(in this case it is relative to the frame if inside BEGIN OF BLOCK WITH FRAME...END
OF BLOCK) or POS_LOW|POS_HIGH. SELECTION-SCREEN BEGIN OF BLOCK <block> [WITH FRAME
[TITLE # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "sstxt"
#<text>#]] [NO INTERVALS].#...#SELECTION-SCREEN END OF BLOCK <block>.Creates a
logical block. Blocks can be nested. Only 5 blocks with frames can be nested. NO
INTERVALS displays all SELECT-OPTIONS within the block as with NO INTERVALS
addition; inherited by subordinate blocks with frames and does not by subordinates
blocks without frames. #Selection Screen Events. # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "top" #Go to top...### HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "fsdefi" #Go to next...#
INITIALIZATION. Executes a processing block before the selection screen is
processed. In this block you initialize the selection screen. This is also the only
possibility to change the default values of parameters or selection criteria
defined in logical databases. You can find out the names of the internal fields you
want to change either by examining the logical database SAPDB<ldb> itself (with the
transaction SLDB or by choosing Tools->ABAP/4 Development Workbench->Development>Programming environ.->Logical databases), or by retrieving the technical
information of that field. AT SELECTION-SCREEN. Executes a processing block after
the system has finished processing the selection screen. If an error|warning #
HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "listmsg" #message# is
sent from this processing block, the system displays the selection screen again and
all input fields can be changed. AT SELECTION-SCREEN ON <parm>|<selopt>. Executes a
processing block after the system has finished processing the <parm>|<selopt>. If
an error|warning # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l
"listmsg" #message# is sent from this processing block, the system displays the
selection screen again and only this input field can be changed. AT SELECTIONSCREEN ON END OF <selopt>. Executes a processing block at the end of processing
Multiple Selection Window # INCLUDEPICTURE
"http://www.geocities.com/victorav15/sapr3/multsel.gif" \* MERGEFORMATINET ###of
the <selopt>. Can be used to check the entries in the internal table <selopt>. Both
the E and W messages are sent in dialog window. AT SELECTION-SCREEN ON BLOCK
<block>. Executes a processing block after the system has finished processing the
<block>. If an error|warning # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "listmsg" #message# is sent from
this processing block, the system displays the selection screen again and only the
input fields in the <block> can be changed. AT SELECTION-SCREEN ON RADIOBUTTON
GROUP <radi>. Executes a processing block
after the system has finished processing the <radi>. If an error|warning #
HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "listmsg" #message# is
sent from this processing block, the system displays the selection screen again and
only the radiobutton group <radi> can be changed. AT SELECTION-SCREEN ON VALUEREQUEST FOR <parm>|<selopt>. The possible entries button # INCLUDEPICTURE
"http://www.geocities.com/victorav15/sapr3/f4button.gif" \* MERGEFORMATINET
###automatically appears next to the input field for <parm>|<selopt> when it is
selected on the selection screen. Executes a processing block which allows user to
choice a value from a list when user presses the button or F4. Can be used only in
report programs, not in a logical database program. AT SELECTION-SCREEN ON HELPREQUEST FOR <parm>|<selopt>. Executes a processing block which displays a help text
when user presses F1 or the button # INCLUDEPICTURE
"http://www.geocities.com/victorav15/sapr3/fchelp.gif" \* MERGEFORMATINET ###on the
selected <parm>|<selopt>. Can be used only in report programs, not in a logical
database program. AT SELECTION-SCREEN OUTPUT. Executes a processing block during
the PBO of a selection screen for each ENTER. For example, here can be applied a
modifications to the screen: LOOP AT SCREEN.#....#MODIFY SCREEN.#ENDLOOP.
To change at runtime attributes of screen fields. SCREEN is memory table which
automatically created and maintained by system (with header line). The structure of
the SCREEN: Name#Length#Description##NAME #30#Name of the screen field ##GROUP1 #3
#Modification group 1 ##GROUP2 #3 #Modification group 2 ##GROUP3 #3 #Modification
group 3 ##GROUP4 #3 #Modification group 4 ##ACTIVE #1 #Visible and ready for input
##REQUIRED #1 #Mandatory ##INPUT #1 #Ready for input ##OUTPUT #1 #For display only
##INTENSIFIED #1 #Highlighted ##INVISIBLE #1 #Supressed ##LENGTH #1 #Output length
is reduced ##DISPLAY_3D #1 #Displayed with 3D frames ##VALUE_HELP #1 #Displayed
with value help ##To activate a field attribute, set its value to 1. To deactivate
it, set it to 0. If ACTIVE = 0, then system sets INVISIBLE = 1 and INPUT = 0, and
user can neither see the field nor enter values into it. #Field Symbols. #Defining
Field Symbols. # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "top"
#Go to top...### HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l
"fsassign" #Go to next...# Concept. Field symbols are placeholders for existing
fields. A field symbol does not physically reserve space for a field, but points
(like a pointer in C) to a field which is not known until runtime of the program.
But Field Symbols are not real equivalent to pointers in the sense of variables
which contain a memory address and can be used without the contents operator. You
can only work with the data object to which a field symbol points. A field must
first be assigned to field symbol before working with it in the program.
Assignments to field symbols may extend beyond field boundaries. This allows
effective access to regularly stored data. At runtime, the system performs checks
to prevent erroneous assignments outside the defined data areas: The table storage
area for internal tables. Its size depends on the number of table lines which is
not fixed, but often extended dynamically at runtime; The DATA storage area for
other data objects. Its size is fixed during the data declaration and equal to sum
of all data objects sizes. Field symbols cannot point to addresses outside these
areas. If the system encounters this at runtime, it stops processing the
program.#Note. Certain system information, such as the control blocks of internal
tables, is also stored in the DATA storage area. Therefore, despite the runtime
checks, you may unintentionally overwrite some of these fields and cause subsequent
errors (e.g. destruction of the table header). Defining Field Symbols for Internal
Fields. FIELD-SYMBOLS <FS> [<type>].#For field symbols, the angle brackets are part
of the syntax. <type>#Syntax check for field assignment.##No type
specification,#TYPE ANY#System accepts any field type and uses all attributes and
structure of the field for the <FS>##TYPE TABLE#System accepts only an internal
table uses all attributes of the table for the <FS>##TYPE C, N, P, X#System accepts
only an appropriate field type. The <FS> inherits field length (and DECIMALS for
P)##TYPE D, F, I, T#LIKE <f>#TYPE <user-defined-type>#System accepts only
completely compatible field type.##Defining Structured Field Symbols. FIELD-SYMBOLS
<FS> STRUCTURE <fstring> DEFAULT <f>.#Defines a structured <FS> which points
initially to the field <f> (this assignment can be changed later). The <FS>
inherits the structure of <fstring>, which can be any field string or a structure
defined in the ABAP/4 Dictionary. <fstring> and <f> must be specified without
quotation marks. Specification at runtime is not allowed. If <fstring> contains no
components of type I or F, <f> can be any internal field with at least the same
length as the structure <fstring>. If <f> is shorter than <fstring>, an error
occurs during the syntax check. This will be also while assigning later in program.
Dynamic assignment causes a runtime error. If <fstring> contains components of type
I or F (that is this structure is # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "convalig" #aligned#), then the
data object must also be aligned accordingly, otherwise a runtime error occurs.
Defining Local Field Symbols. If <fstring> id defined in a subroutine or function
module then each time the subroutine or function module is called, no field is
assigned to the local field symbol, even if an ASSIGN was executed the previous
time. #Assigning Data Objects to Field Symbols. # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "top" #Go to top...### HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "mobranch" #Go to next...#
Assigning Data Objects. Static Assignment: ASSIGN [# HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "fsasloco" #LOCAL COPY OF#]
<f>[+<o>][(<l>)] TO <FS> [# HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "fsastype" #TYPE <type>#] [#
HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "fsasdeci" #DECIMALS
<d>#].#<o> and <l> can be variables. If no offset and length defined, then <FS>
points to the same memory area as <f>. <o> and <l> can refer to addresses beyond
<f>. Defaults: <o>=0, <l>=length of <f>. If <o> is smaller than length of <f> then
(*) can be used for <l> to prevent <FS> from referring addresses beyond <f>.
Dinamic Assignment: ASSIGN [# HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "fsasloco" #LOCAL COPY OF#] (<n>)
TO <FS> [# HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "fsastype"
#TYPE <type>#] [# HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l
"fsasdeci" #DECIMALS <d>#].#Offset cannot be specified. Order of search for the
field's name <n>: Local Data of the Subroutine or Function Module; Global Data of
the Program; Table work areas declared with the TABLES statement in the main
program of the current program group. A program group consists of a main program
and all programs containing definitions of the external subroutines called by the
main program (including nested ones). This type of search has very adverse effect
on response times. Return code: SY-SUBRC=0 if success, otherwise SY-SUBRC=4. ASSIGN
[# HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "fsasloco" #LOCAL COPY
OF#] TABLE FIELD (<n>) TO <FS> [# HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "fsastype" #TYPE <type>#] [#
HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "fsasdeci" #DECIMALS
<d>#].#Performs only Step 3 from previous operation. Return code: SY-SUBRC=0 if
success, otherwise SY-SUBRC=4. Assigning Field Symbols to Other Field Symbols.
Static Assignment: ASSIGN [# HYPERLINK "http://www.geocities.com/victorav15/sapr3/"
\l "fsasloco" #LOCAL COPY OF#] <FS1>[+<o>][(<l>)] TO <FS2> [# HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "fsastype" #TYPE <type>#] [#
HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "fsasdeci" #DECIMALS
<d>#]. Dinamic Assignment: ASSIGN [# HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "fsasloco" #LOCAL COPY OF#] [TABLE
FIELD] (<n>) TO <FS2> [# HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l
"fsastype" #TYPE <type>#] [# HYPERLINK "http://www.geocities.com/victorav15/sapr3/"
\l "fsasdeci" #DECIMALS <d>#].#The field <n> contains the name of field symbol
<FS2>. <FS1> and <FS2> can be identical. Assigning Components of Field Strings.
ASSIGN COMPONENT <component> OF STRUCTURE <fstring> TO <FS> [# HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "fsastype" #TYPE <type>#] [#
HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "fsasdeci" #DECIMALS
<d>#].#If <component> is of type C or a field string which has no internal tables
as components - it specifies the name of the component. If <component> has other
type - it is # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "conv"
#converted# to type I and specifies the number of the component in the <fstring>.
Return code: SY-SUBRC=0 if success, otherwise SY-SUBRC=4. Additions: TYPE <type> <type> can be literal or variable. Overrides type of field <f> for # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "fsdeintf" #untyped field symbols#
(in this case <type> must be # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "type" #Elementary Data Type#). For
# HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "fsdeintf" #typed field
symbols# used if the <f> is uncompatible with type of <FS> and runtime error must
be avoided. In this case <type> and type of <FS> must be compatible. DECIMALS <d> defines number of decimal
places in <FS>. A runtime error occurs if <f> is not of P type, or <d> is not
between 0 and 14. LOCAL COPY OF - used in subroutines. The system places a copy of
the specified global data on the stack. In the subroutine, you can access and
change this copy without changing the global data. #Modularization. #Branches and
Loops. # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "top" #Go to
top...### HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "moevents" #Go
to next...# IF#CASE##IF # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l
"logical" #<condition1>#.#<statement block>#ELSEIF # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "logical"
#<condition2>#.#<statement block>#......#ELSE.#<statement block>#ENDIF.
#CASE <f>.#WHEN <f1>.#<statement block>#WHEN <f2>.#<statement
block>#......#WHEN OTHERS.#<statement block>#ENDCASE. ##Unlimited nesting is
allowed. An EVENT keyword may not be inside of block. DO#WHILE##DO [<n> TIMES]
[VARYING <f> FROM <f1> NEXT <f2>].#<statement block>#......#[# HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "moxxcont" #CONTINUE#.]#[#
HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "moxxexit" #EXIT#.]#[#
HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "moxxchck" #CHECK# #
HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "logical"
#<condition>#.#<statement block>]#ENDDO. #WHILE # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "logical" #<condition># [VARY <f>
FROM <f1> NEXT <f2>].#<statement block>#......#[# HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "moxxcont" #CONTINUE#.]#[#
HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "moxxexit" #EXIT#.]#[#
HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "moxxchck" #CHECK# #
HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "logical"
#<condition>#.#<statement block>]#ENDWHILE. ##Unlimited nesting is allowed. An
EVENT keyword may not be inside of block.#<n> can be literal or a variable. If <n>
<=0, the system does not process the loop.#SY-INDEX contains the number of times
the loop has been processed.#<f>, <f1>, <f2> must be a series of equidistant fields
of the same type and length in memory. In the first loop pass, <f1> is assigned to
<f>; in the second loop pass <f2> is assigned to <f>; and so on. Several VARYING|
VARY options can be used in one DO|WHILE statement. If you change the control
variable <f> inside the DO loop, the system changes the corresponding field <fi>
automatically. If loop processed more times than the number of variables <fi>, this
may result in a runtime error. Terminating Loops. CONTINUE. Terminates a loop pass
immediately without any condition, continues with the next loop pass. EXIT. Acts in
following sequence: Terminates a loop entirely without any condition and continues
the processing after the closing statement (ENDDO, ENDWHILE, ENDSELECT). Within
nested loops, leaves the current loop; Leaves the current AT processing block and
branches to the processing block of the next occurring event; Leaves any processing
block (except of AT events) immediately and branch to the output screen; Terminates
a subroutine without any condition. CHECK # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "logical" #<condition>#. Acts in
following sequence: For a loop, if the condition is false, skips all the remaining
statements in the current statement block and continues with the next loop pass;
For # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "ldbget" #GET#
event, if the condition is false, equivalent to # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "moxxreje" #REJECT.# (Leaves the
processing block of a GET event and processes the next GET event at the same
hierarchical level of the logical database.); For processing block, if the
condition is false, leaves the processing block and branches to the processing
block of the next occurring event; For a subroutine, if the condition is false,
terminates the subroutine. #Events. # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "top" #Go to top...### HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "modialog" #Go to next...# All
statements between two event keywords or between an event keyword and a # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "moform" #FORM# statement are a
processing block. When an event occurs, the system processes the processing block
after the corresponding event keyword. Each statement in an ABAP/4 report program
is part of a processing block or a subroutine. Statements which do not follow an
event keyword or a FORM-ENDFORM block are automatically part of the processing
block of the default event # HYPERLINK "http://www.geocities.com/victorav15/sapr3/"
\l "evstofse" #START-OF-SELECTION#. #Note. All statements between an ENDFORM
statement and an event keyword or between an ENDFORM statement and the end of the
program are never processed. Do not place any statements there. Place all
subroutines at the end of your program. Events that occur at runtime of a report
program which#uses logical databases, or#has selection screens and
processes tables (exept GET events): # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "ssevini" #INITIALIZATION.#Point
before the selection screen is displayed. # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "ssevatss" #AT SELECTION-SCREEN.#
Point after processing user input on the selection screen while the selection
screen is still active. START-OF-SELECTION.Point after processing the selection
screen and before accessing database tables using a logical database. GET <table>
[FIELDS <f1> <f2> ...].Point at which the logical database (LDB) offers a line of
the database table <table>. The LDB reads all columns from all database tables
which are not designated for field selection in the LDB and which are superior to
<table> on the access path of the LDB, even if GET for these tables are not
specified. However, only the data of tables declared by # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "dedatabl" #TABLES# can be
accessed. From tables that are not declared by # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "dedatabl" #TABLES# system reads
only the key fields (the LDB needs the key fields to built up the access path). GET
<table> LATE [FIELDS <f1> <f2> ...].Point after processing all tables which are
hierarchically subordinate to the database table <table> in the structure of the
logical database. END-OF-SELECTION.Point after processing all lines offered by the
logical database. The following events occur during the processing of the output
list of a report program: # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "ilevents" #Events Control in
Interactive Lists.# Terminating Events Processing Blocks: STOP. Leaves any
processing block immediately and branches to the END-OF-SELECTION processing block.
REJECT [<dbtab>]. Leaves the processing block of a # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "ldbget" #GET# event and processes
the next GET event of a superior hierarchical level of the logical database <dbtab>
Leaves the processing block of a # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "ldbget" #GET# event and processes
the next GET event at the same hierarchical level of the logical database. See
also: # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "moxxexit"
#EXIT#, # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "moxxchck"
#CHECK#. #Dialogs. # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l
"top" #Go to top...### HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l
"mosource" #Go to next...# # HYPERLINK "http://www.geocities.com/victorav15/sapr3/"
\l "dialogs" #Not ready yet...# #Source Code Modules. # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "top" #Go to top...### HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "moform" #Go to next...# Using
Macros. DEFINE <macro>.#<statements>#END-OF-DEFINITION. Defines <macro>. The
<statements> can contain up to 9 placeholders: &1, &2, ... &9. <macro> [<p1>
<p2> ... <p9>]. Calls <macro> (System replaced macro during generation of the
program). Macro can call another macro, but cannot call itself. Using Include
Programs. INCLUDE <name_of_include_program> Inserts the source code
<name_of_include_program> into the ABAP/4 program during the syntax check and
during generation. INCLUDE statement must be whole on one line and only on this
line; The INCLUDE program must consist of complete statements (and comments);
Service report RSINCL00 can be used to generate reference list for included
programs. #Subroutines. # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l
"top" #Go to top...### HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l
"mofunc" #Go to next...# Defining Subroutines. FORM <subroutine> [# HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "mofoparm"
#<parameters>#].#<statements>#ENDFORM.Calling Subroutines. Internal subroutines
have the source code in the calling ABAP/4 program: PERFORM <subroutine> [#
HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "mofoparm"
#<parameters>#]. PERFORM (<subrname>) [# HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "mofoparm" #<parameters>#].
Specifies the subroutine name at runtime. PERFORM <subroutine> ON COMMIT [LEVEL
<n>]. Calls the subroutine later on a first encountered # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "commitwork" #COMMIT WORK#
statement. The subroitine is called only once even if call performed many times.
LEVEL <n> (# HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "literal"
#literal#
or # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "constant"
"mofopafs" #as for Field Strings#). If actual parameter table has no header line,
but formal parameter table with header line, the header line will be automatically
created in the subroutine for this table. Defining Local Data in Subroutines.
Dynamic Local Data Types and Objects. # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "detytype" #TYPES#, # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "dedadata" #DATA# - define
automatic objects that newly created for each call and deleted after exit. Static
Local Data Types and Objects. # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "dedastat" #STATICS# - defines
static objects that initialized for first call and keep their values after exit.
LOCAL <f>. Preserves the value of a global data object from being changed inside a
subroutine (for example, a work area of a database table defined using # HYPERLINK
"http://www.geocities.com/victorav15/sapr3/" \l "dedatabl" #TABLES#). Instead a
local copy of the <f> used inside of subroutine. Terminating Subroutines. See #
HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "moxxexit" #EXIT#, #
HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "moxxchck" #CHECK#. #
Function Modules. # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "top"
#Go to top...### HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "top"
#Go to next...# Function modules are special external subroutines stored in a
central library. Can be created users own function modules. The main difference
between a function module and a normal ABAP/4 subroutine is a clearly defined
interface for passing data. The calling program and the called function module have
separate work areas for ABAP/4 Dictionary tables. Several function modules can be
combined to a function group in the program library with the attribute type F with
definition of global data that can be accessed from all function modules of one
function group. Interfaces: Import parameter: # INCLUDEPICTURE
"http://www.geocities.com/victorav15/sapr3/fimport.gif" \* MERGEFORMATINET ####Pass
data from the calling program to the function module. Cannot be overwritten, even
when passed by reference. Export parameters: # INCLUDEPICTURE
"http://www.geocities.com/victorav15/sapr3/fexport.gif" \* MERGEFORMATINET ####Pass
data from the function module back to the calling program. Always optional.
CHANGING parameter: # INCLUDEPICTURE
"http://www.geocities.com/victorav15/sapr3/fchange.gif" \* MERGEFORMATINET
####Passed by reference or # HYPERLINK "http://www.geocities.com/victorav15/sapr3/"
\l "byvalres" #by value and result#. Act simultaneously as import and export
parameters. They change the value passed to the function module and return it to
the calling program. Table parameters: # INCLUDEPICTURE
"http://www.geocities.com/victorav15/sapr3/ftable.gif" \* MERGEFORMATINET
####Internal tables. Treated like changing parameters and are always passed by
reference. Exception: # INCLUDEPICTURE
"http://www.geocities.com/victorav15/sapr3/fexcept.gif" \* MERGEFORMATINET ####Used
to handle error scenarios which can occur in function modules. Proposal - default
value for optional parameters.#Reference field|structure, Reference type - used for
# HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "tyfopa" #typing of
formal parameters#. Calling Function Modules:#CALL FUNCTION
<module_name>#[EXPORTING <f1> = <a1> ... <fn> = <an>]#[IMPORTING <f1> =
<a1> ... <fn> = <an>]#[CHANGING <f1> = <a1> ... <fn> = <an>]#[TABLES <f1> =
<a1> ... <fn> = <an>]#[EXCEPTIONS <e1> = <r1> ... <en> = <rn> [ERROR_MESSAGE =
<rE>] [OTHER = <rO>]]. EXPORTING - the formal parameters must be declared as import
parameters in the function module.#IMPORTING - the formal parameters must be
declared as export parameters in the function module.#EXCEPTIONS - <ri> is a
numeric # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l "literal"
#literal# that is assigned to SY-SUBRC if the exception is raised. <rE> is used for
additional exception ERROR_MESSAGE if a message of types A, E was issued in the
function module without # HYPERLINK "http://www.geocities.com/victorav15/sapr3/" \l
"messraise" #RAISING# option.#OTHERS - used to handle all exceptions that are not
specified explicitly in the list. The same number <ri> can be used for several
exceptions. Programming Function Modules:#FUNCTION <module_name>#....#RAISE
<exception>.#....## HYPERLINK
##
##
###
##
###
##
###
##
##F
##
##G
##
##H
##
##
##;
##
##
##
##
##
##<
##J
##K
##L
##M
##
##
##
##
##
##
##
##
##
##############H###I###Y###Z###[### #####
#hJ##0J###
#hJ##0J###
#hJ##5#\####j####hJ##U####j#####hJ##B*#U##ph#f####j####hJ##B*#U##ph#f####
hJ##B*#ph#f###j#####hJ##B*#U##ph#f####hJ#####j
###hJ##U####j
###hJ##U####j####hJ##U####j####hJ##U####j#####hJ##U###5####
##
##L
##
######[###\#######
##
##
##k
##
############################################################################
######################w#######################################################
###################u##kdg ###$##$#If#####T######\##L
h##@##########################################################################
########6######################################################
###3#######4#######a###T######$#If#########$#a$##########$#a$##
####'############################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
##############[###\###]######################
###
###
###
###
###
##Z
##[
##i
##j
##k
##l
##
##
##
##
##
##
##
##
##### ##############^##_##h##i##k##l############
##########################b###c#####################$###%###'###(###j###k###|
###}###########################$###
%###3###4###
####hJ##0J##5#\##
#hJ##5#\####j#####hJ##5#U##\#
#hJ##0J#####hJ#####j#####hJ##U####hJ##CJ##aJ##P
##
#####k##
#########'#########6#################################{############{#########
###{############{############{############{############o############o############o#
###########o##########################
##
&##F###d##d#[$#\$#
##
&##F###d##d#[$#\$######u##kd ###$##$#If#####T######\##L
h##@##########################################################################
########6######################################################
###3#######4#######a###T###
4###6###7###}###~#################################;###<###O###P###S###T##
################################# ###
###P###Q###W###X###Z###[###########################################X###Y###
r###s###u###v#############################!###"###$###%###k###l###|
###}#######################################
#####hJ##0J##5#\##
#hJ##5#\####j#####hJ##5#U##\#
#hJ##0J#####j#####hJ##U####hJ##S###R######
###Z##########u######$#########!
###v######V##########p##########r###########################################
#############################################################################
############################################################################
############################################################
##
&##F###d##d#[$#\$#
##
&##F###d##d#[$#\$#
##
&##F###d##d#[$#\$#
##
&##F###d##d#[$#\$#
##
&##F###d##d#[$#\$#####
##
&##F###d##d#[$#\$###########!
###"###h###i###s###t###v###w#############################S###T###W###X######
#####################################X###Y###m###n###p###q##############
###########
###############
###e###f###o###p###r###s#############################
###############T###U###j###k###m###n#############################
###hJ##0J#
#5#\##
#hJ##5#\####j#####hJ##5#U##\#
#hJ##0J#####hJ#####j#####hJ##U###Sr##########m######&################K####
##, ## ## ##J!##!
##""##"##"##c#######$######################################################
#############################################################################
############################################################################
###############################################################################
############
##
&##F###d##d#[$#\$#####
##
&##F###d##d#[$#\$#
##
&##F###d##d#[$#\$#
##
&##F###d##d#[$#\
$###########$###&###'###j###k#####################################W###X#####
############################*###+###H###I###K###L###################
####################1###2###;###<###>###?
#######################################%###&###,######/###0###v###w#########################################"#######
%###&###i###j###o###p###r###s###
####hJ#####j#####hJ##U##
#hJ##0J##^s###################### ### ##) ##* ##, ##- ##o ##p ##| ##} ##
## ## ## ## ## ## ## ## !##!!##G!##H!##J!##K!##!##!##!##!##!##!##!
##!###"##
"##""###"##g"##h"##"##"##"##"##"##"##"##"##"##"##4###5###`###a###d###e###
###################$###$###$###$###$###$##\$##]
$##c$##d$##f$##g$##$##$##$##$##$##
#####hJ##0J##5#\##
#hJ##5#\####j#####hJ##5#U##\#
#hJ##0J#####j#####hJ##U####hJ##S#$##f$##$##/%##
%###&##r&##&##7'##'##'##3(##(##(##7)##)##)##n*##*##F+##+##+##W,##,#################################################################################
#############################################################################
#############################################################################
#############################################################################
####
##
&##F###d##d#[$#\$#
##
&##F###d##d#[$#\$#
##
&##F###d##d#[$#\$###$##$##
%###%##,%##-%##/%##0%##s%##t%##%##%##%##%##%##
%###&###&###&###&##I&##J&##o&##p&##r&##s&##&##&##&##&##&##&##"'###'##4'##5'##
7'##8'##}'##~'##'##'##'##'##'##'##'##'##'##'##'(##((##0(##1(##3(##4(##y(#
#z(##(##(##(##(##(##(##(##(##(##(###)###)##4)##5)##7)##8)##|)##})##)##)
##)##)##)##)##)##)##)##)##;*##<*##k*##l*##n*##o*##*##*##*##
#hJ##0J#####hJ#####j#####hJ##U###^*##*##*##*##,+##+##C+##D+##F+##G+##+##+##+##+##+##+##+##+##+##+##+##+##1,##2,##T,##U,##
W,##X,##,##,##,##,##,##,###-###-###-###-###-###-##c-##d-##-##-##-##-####-##-##-##-####2.##3.##8.##9.##;.##<.##.##.##.##.##.##.##.##.##.##.##.##.##0/##1/##;
/##</##>/##?/##/##/##/##/##/##/##/##/###0###0###0###0##L0##M0##_0##`0##b0##
c0##0##
#hJ##0J#####hJ#####j#####hJ##U###^-##-##;.##.##/###0##b0##0###1##k1##1##!
2##z2##2##D3##3###4##a4##4##5###6##\6##6###################################
############################################################################
#############################################################################
#############################################################################
#########
##
&##F###d##d#[$#\$#
##
&##F###d##d#[$#\$#####
##
&##F###d##d#[$#\$#
##
&##F###d##d#[$#\$#
##
&##F###d##d#[$#\$###0##0##0##0##0##0##0##0###1##
1###1###1##V1##W1##h1##i1##k1##l1##1##1##1##1##1##1###2##
2###2###2##!2##"2##g2##h2##w2##x2##z2##{2##2##2##2##2##2##2##
%3##&3##A3##B3##D3##E3##3##3##3##3##3##3##3##3###4###4###4###4##J4##K4##^4#
#_4##a4##b4##4##4##4##4##4##4###5###5###5##
5###5##
5##R5##S5##Y5##Z5##\5##]5##
###hJ##0J##5#\##
#hJ##5#\####j#####hJ##5#U##\###hJ###
#hJ##0J#####j#####hJ##U###S]5##5##5##5##5##5##5##5##5###6###6###6##
6##M6##N6##Y6##Z6##\6##]6##6##6##6##6##6##6##6##6###7###7###7###7##Y7##Z7##
n7##o7##q7##r7##7##7##7##7##7##7###8###8###8###8###8###8##`8##a8##i8##j8##l8#
#m8##8##8##8##8##8##8###9###9###9###9###9###9##[9##\9##c9##d9##f9##g9##9##9
##9##9##9##9##9##9##9##9###:###:##I:##J:##o:##p:##r:##s:##:##:##:##:##
##
#hJ##0J#####j#####hJ##U####hJ##^6###7##q7##7##8###9###:##r:##:###;##x;##;##
'<##<##<##,=##=##=##J>##>###?##{?##?
############################################################################
#############################################################################
#############################################################################
############################################
##
&##F###d##d#[$#\$#
##
&##F###d##d#[$#\$#####
##
&##F###d##d#[$#\$#
##
&##F###d##d#[$#\$#
##
&##F###d##d#[$#\
$###:##:##:###;###;###;###;###;###;##`;##a;##u;##v;##x;##y;##;##;##;##;##;#
#;###<###<##$<##%<##(<##)<##i<##j<##|
<##}<##<##<##<##<##<##<##<##<###=###=##)=##*=##,=##=##o=##p=##=##=##=##=##=##=##=##=##=##=##7>##8>##F>##G>##J>##K>##>##>##
>##>##>##>##>##>###?##
?###?###?##V?##W?##w?##x?##{?##|?##?##?##?
##
#####hJ##0J##5#\##
#hJ##5#\####j#####hJ##5#U##\#
#hJ##0J#####j#####hJ##U####hJ##S?##?##?##?##@##.@##Y@##Z@##]@##^@##@##@##@##@##@##@###A###A##HA##IA##LA##MA##A##A##A##
A##A##A##A##A###B##
B##
B##
B##SB##TB##aB##bB##fB##gB##B##B##B##B##B##B###C###C###C###C###C###C##bC##cC##
jC##kC##nC##oC##C##C##C##C##C##C##+D##,D##MD##ND##QD##RD##D##D##D##D##D#
#D###E###E##)E##*E##,E##E##sE##tE##
###hJ##0J##5#\##
#hJ##5#\####j#####hJ##5#U##\#
#hJ##0J#####hJ#####j#####hJ##U###S?##]@##@##LA##A##
B##eB##B###C##nC##C##QD##D##,E##E###F##wF##F##G##\H##H###I################################################################
#############################################################################
#############################################################################
#####################################
##
&##F###d##d#[$#\$#
##
&##F###d##d#[$#\$#
##
&##F###d##d#[$#\$#
##
&##F###d##d#[$#\$#####
##
&##F###d##d#[$#\$#
##
&##F###d##d#[$#\
$###tE##E##E##E##E##E##E###F###F###F###F##MF##NF##sF##tF##xF##yF##F##F##F#
#F##F##F###G###G##*G##+G##G##.G##pG##qG##sG##tG##vG##wG##G##G##G##G##G##G###H###H## H##
H##
H##H##RH##SH##XH##YH##\H##]H##H##H##H##H##H##H###I###I###I##
I###I##
I##QI##RI##`I##aI##fI##gI##I##I##I##I##I##I###J###J##"J###J##
%J##&J##jJ##
#####hJ##0J##5#\##
#hJ##5#\####j#####hJ##5#U##\###hJ#####j#####hJ##U##
#hJ##0J##SjJ##kJ##uJ##vJ##xJ##yJ##J##J##J##J##J##J###K###K##?
K##@K##CK##DK##K##K##K##K##K##K##K##K###L###L###L###L##KL##LL##`L##aL##cL##
dL##L##L##L##L##L##L##L##L###M###M###M###M##JM##KM##_M##`M##bM##cM##M##M#
#M##M##M##M##M###N###N###N###N###N##^N##_N##kN##lN##qN##rN##N##N##N##N##N
##N##&O##'O##>O##?
O##BO##CO##O##O##O##O##O##O##O##O##O##O##O##
##hJ###
#hJ##0J#####j#####hJ##U###^#I##J##CK##K###L##cL###M##bM###N##N##BO##O##O##VP
##P##P##P##P##P##Q##Q##Q###############################################
############################################################################
#############################################################################
###############################################################################
##################################$#If#########$#a$######$#a$######$#a$#####
##
&##F###d##d#[$#\$#
##
&##F###d##d#[$#\
$###O##O##9P##:P##RP##SP##VP##WP##P##P##P##P##P##P##P##P##P##P##P##P#
#P##P###Q## Q##,Q##Q##.Q##/Q##tQ##uQ##Q##Q##Q##Q##Q##Q##Q##Q###R###R##>R##?
R##OR##PR##R##R##R##R###S###S###S###S##S##.S##GS##HS##S##S##S##S##S##S##!T##"T##3T##4T##bT##cT##T##T##T##T##
U###U##0U##1U##2U##3U##=U##
######jM1###hJ##U####hJ##CJ##aJ#####j#"###hJ##U##
#hJ##0J#####jy!###hJ##U##
#hJ##0J#####hJ#####j#####hJ##U###NQ##Q##Q##Q#############################
###################################################################################
###################################################################################
##################################################$#If####x##kd"###$##$#If#######
###########################0### !
#######################################0###################################
############6#################################3#######4#######a###
b###########Q##Q##Q##Q#####################################################
###################################################################################
###################################################################################
##########################$#If####x##kd[####$##$#If##############################
####0### !
#######################################0###################################
############6#################################3#######4#######a###
b###########Q##Q###R###R#####################################################
###################################################################################
###################################################################################
##########################$#If####x##kd#$###$##$#If##############################
####0### !
#######################################0###################################
############6#################################3#######4#######a###
b############R###R##+R##>R#####################################################
###################################################################################
###################################################################################
##########################$#If####x##kd$###$##$#If##############################
####0### !
#######################################0###################################
############6#################################3#######4#######a###
b###########>R##?
R##DR##OR#######################################################################
###################################################################################
###################################################################################
########$#If####x##kdY%###$##$#If##################################0### !
#######################################0###################################
############6#################################3#######4#######a###
b###########OR##PR##[R##R#####################################################
###################################################################################
###################################################################################
##########################$#If####x##kd#&###$##$#If##############################
####0### !
#######################################0###################################
############6#################################3#######4#######a###
b###########R##R##R##R#####################################################
###################################################################################
###################################################################################
##########################$#If####x##kd&###$##$#If##############################
####0### !
#######################################0###################################
############6#################################3#######4#######a###
b###########R##R##R###S#####################################################
###################################################################################
###################################################################################
##########################$#If####x##kdW'###$##$#If##############################
####0### !
#######################################0###################################
############6#################################3#######4#######a###
b############S###S###S###S#####################################################
###################################################################################
###################################################################################
##########################$#If####x##kd#(###$##$#If##############################
####0### !
#######################################0###################################
############6#################################3#######4#######a###
b############S###S###S##S###############################################################################
###################################################################################
###################################################################################
$#If####x##kd(###$##$#If##################################0###
!
#######################################0###################################
############6#################################3#######4#######a###
b###########S##.S##6S##GS###################################################################
###################################################################################
###################################################################################
############$#If####x##kdU)###$##$#If##################################0###
!
#######################################0###################################
############6#################################3#######4#######a###
b###########GS##HS##NS##S#####################################################
###################################################################################
###################################################################################
##########################$#If####x##kd)###$##$#If##############################
####0### !
#######################################0###################################
############6#################################3#######4#######a###
b###########S##S##S##S#####################################################
###################################################################################
###################################################################################
##########################$#If####x##kd*###$##$#If##############################
####0### !
#######################################0###################################
############6#################################3#######4#######a###
b###########S##S##S##S#####################################################
###################################################################################
###################################################################################
##########################$#If####x##kdS+###$##$#If##############################
####0### !
#######################################0###################################
############6#################################3#######4#######a###
b###########S##S##S##!
T###############################################################################
###################################################################################
###################################################################################
$#If####x##kd+###$##$#If##################################0###
!
#######################################0###################################
############6#################################3#######4#######a###
b###########!
T##"T##+T##3T###################################################################
###################################################################################
###################################################################################
############$#If####x##kd,###$##$#If##################################0###
!
#######################################0###################################
############6#################################3#######4#######a###
b###########3T##4T##;T##bT#####################################################
###################################################################################
###################################################################################
##########################$#If####x##kdQ###$##$#If##################################0### !
#######################################0###################################
############6#################################3#######4#######a###
b###########bT##cT##jT##T#####################################################
###################################################################################
###################################################################################
##########################$#If####x##kd###$##$#If##################################0### !
#######################################0###################################
############6#################################3#######4#######a###
b###########T##T##T##T#####################################################
###################################################################################
###################################################################################
##########################$#If####x##kd.###$##$#If##############################
####0### !
#######################################0###################################
############6#################################3#######4#######a###
b###########T##T##T##
U###############################################################################
###################################################################################
###################################################################################
$#If####x##kdO/###$##$#If##################################0###
!
#######################################0###################################
############6#################################3#######4#######a###
b###########
U###U###U##0U###################################################################
###################################################################################
###################################################################################
############$#If####x##kd/###$##$#If##################################0###
!
#######################################0###################################
############6#################################3#######4#######a###
b###########0U##1U##3U##>U##U###V###V##kV##|
V##V##[W##mW######################################{############y##############
##########s############c############c############s################################
##
&##F ####d##d#[$#\
$#^#######^##########$#a$######$#a$#####x##kd0###$##$#If##################
################0### !
#######################################0###################################
############6#################################3#######4#######a###
b###########=U##>U##?
U##U##U##U##U##U##U##U##U##U##U###V###V##[W##lW##*X##<X##nX##oX##X##X##
X##X##JY##hY##}Y##~Y##Y##Y##Y##Y##Y##Y##Y##Y##Y##Y##/Z##0Z##=Z##>Z##@Z#
#JZ##KZ##XZ##YZ##dZ##eZ##sZ##tZ##Z##Z##Z##Z##Z##Z##Z##Z##Z##Z###[##"[###[
##o[##p[##[##[##.]##/]##T]##U]##]]##^]##_]##]##
####jw:###hJ##U####hv####hJ##CJ##aJ
###
#hJ##0J#####j1###hJ##U####h-
##
#hJ##5#\##
#hJ##0J#####j#####hJ##U####hJ##LmW##W##W##W##W##X##X##X##iY##qY##}Y##Y##
Y##@Z##KZ##YZ##eZ##tZ##Z##Z#################################################
############################################################################
#############################################################################
#############################################################
###$##$#If####a$######$#a$######$#a$########
&##F
####d##d#[$#\$#^####
&##F#####d##d#[$#\$#^####
&##F
####d##d#[$#\$#^#######^###Z##Z##Z##Z##Z##Z##3########################-############-#############################$#If######kd2###$##$#If####################################E
#6#
#
#!
##############################################################################
#####################################0######################################
#########6#####################################################
############################3#######4#######a###b####################
#######Z##Z##Z##Z##Z##Z#################################################################kdg3###$##$#If#########################
###########E#6#
#
#!
##############################################################################
#####################################0######################################
#########6#####################################################
############################3#######4#######a###b####################
#########$#If######Z##Z##Z##Z##Z##Z######################################
###########################kdI4###$##$#If####################################E#6#
#
#!
##############################################################################
#####################################0######################################
#########6#####################################################
############################3#######4#######a###b####################
#########$#If######Z##Z##Z##Z##Z##Z##Z###################################
################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
#######################$#If######Z###[###[###[##
[###[##3########################-############-#############################$#If######kd+5###$##$#If####################################E
#6#
#
#!
##############################################################################
#####################################0######################################
#########6#####################################################
############################3#######4#######a###b####################
########[## [##"[###[##&[##)[#################################################################kd
6###$##$#If####################################E#6#
#
#!
##############################################################################
#####################################0######################################
#########6#####################################################
############################3#######4#######a###b####################
#########$#If######)[##,[##/
[##8[##o[##p[#################################################################kd6###$##$#If####################################E#6#
#
#!
##############################################################################
#####################################0######################################
#########6#####################################################
############################3#######4#######a###b####################
#########$#If######p[##s[##v[##y[##|
[##[##[####################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
######################################################################$#If######[#
#[##[##[##[##[##3############-############-############-#############################$#If######kd7###$##$#If####################################E
#6#
#
#!
##############################################################################
#####################################0######################################
#########6#####################################################
############################3#######4#######a###b####################
#######[##[##.]##/]##2]##5]#################################################################kd8###$##$#If#########################
###########E#6#
#
#!
##############################################################################
#####################################0######################################
#########6#####################################################
############################3#######4#######a###b####################
#########$#If######5]##>]##E]##R]##T]##U]######################################
###########################kd9###$##$#If####################################E#6#
#
#!
##############################################################################
#####################################0######################################
#########6#####################################################
############################3#######4#######a###b####################
#########$#If######U]##V]##W]##X]##Y]##Z]##[]##\]##]]##_]##]##V^##s^##^##^#####
#############################################################################
############################################################################
###################################################################################
###################################################################################
########################################################################
###$##$#If####a$######$#a$######$#a$#######]##]##]##]##]##]##]###^###^##E^##
F^##S^##T^##V^##r^##s^##^##^##^##^##^##^##^##^##^##^##^##^##^###_###_#
#B_##C_##O_##P_##\_##]_##y_##z_##_##_##_##_##_##_##_##_##_##_##_##_##_
##_##,`##`##=`##>`##J`##K`##\`##]`##n`##o`##w`##x`##y`##`##`##`##`##`##`##`##`##`##
9a##:a##Ga##Ha##Ja##a##a##
#
#hJ##0J#####jJ###hJ##U####h/#####hJ##CJ##aJ###
#hJ##5#\##
#hJ##0J#####j#####hJ##U####hJ##Q^##^##^##^##^##r############l############l#
###########l#######################################################################
###################################################################################
######$#If######kd#;###$##$#If##################################F##d
j#&
##########################################################0#################
##############################6##
##########
##########
##########
#########3#######4#######a###b
##############^##^##^##^##^##r############l############l############l#########
###################################################################################
####################################################################$#If######kd;
###$##$#If##################################F##d
j#&
##########################################################0#################
##############################6##
##########
##########
##########
#########3#######4#######a###b
##############^##^##^##^##^##r############l############l############l#########
###################################################################################
####################################################################$#If######kd<
###$##$#If##################################F##d
j#&
##########################################################0#################
##############################6##
##########
##########
##########
#########3#######4#######a###b
##############^##^##^##^##^##r############l############l############l#########
###################################################################################
####################################################################$#If######kd;=
###$##$#If##################################F##d
j#&
##########################################################0#################
##############################6##
##########
##########
##########
#########3#######4#######a###b
##############^##^##^##
_###_##r############l############l############l####################################
###################################################################################
#########################################$#If######kd=###$##$#If###############
###################F##d
j#&
##########################################################0#################
##############################6##
##########
##########
##########
#########3#######4#######a###b
###############_###_###_##?
_##B_##r############l############l############l####################################
###################################################################################
#########################################$#If######kd>###$##$#If###############
###################F##d
j#&
##########################################################0#################
##############################6##
##########
##########
##########
#########3#######4#######a###b
##############B_##C_##I_##L_##O_##r############l############l############l#########
###################################################################################
####################################################################$#If######kdc?
###$##$#If##################################F##d
j#&
##########################################################0#################
##############################6##
##########
##########
##########
#########3#######4#######a###b
##############O_##P_##V_##Y_##\_##r############l############l############l#########
###################################################################################
####################################################################$#If######kd#@
###$##$#If##################################F##d
j#&
##########################################################0#################
##############################6##
##########
##########
##########
#########3#######4#######a###b
##############\_##]_##c_##v_##y_##r############l############l############l#########
###################################################################################
####################################################################$#If######kd@
###$##$#If##################################F##d
j#&
##########################################################0#################
##############################6##
##########
##########
##########
#########3#######4#######a###b
##############y_##z_##_##_##_##r############l############l############l#########
###################################################################################
####################################################################$#If######kdA
###$##$#If##################################F##d
j#&
##########################################################0#################
##############################6##
##########
##########
##########
#########3#######4#######a###b
##############_##_##_##_##_##r############l############l############l#########
###################################################################################
####################################################################$#If######kdCB
###$##$#If##################################F##d
j#&
##########################################################0#################
##############################6##
##########
##########
##########
#########3#######4#######a###b
##############_##_##_##_##_##r############l############l############l#########
###################################################################################
####################################################################$#If######kdB
###$##$#If##################################F##d
j#&
##########################################################0#################
##############################6##
##########
##########
##########
#########3#######4#######a###b
##############_##_##_##_##_##r############l############l############l#########
###################################################################################
####################################################################$#If######kdC
###$##$#If##################################F##d
j#&
##########################################################0#################
##############################6##
##########
##########
##########
#########3#######4#######a###b
##############_##_##_##_##_##r############l############l############l#########
###################################################################################
####################################################################$#If######kdkD
###$##$#If##################################F##d
j#&
##########################################################0#################
##############################6##
##########
##########
##########
#########3#######4#######a###b
##############_##_##_##_##_##r############l############l############l#########
###################################################################################
####################################################################$#If######kd#E
###$##$#If##################################F##d
j#&
##########################################################0#################
##############################6##
##########
##########
##########
#########3#######4#######a###b
##############_##_##_##_##_##r############l############l############l#########
###################################################################################
####################################################################$#If######kdE
###$##$#If##################################F##d
j#&
##########################################################0#################
##############################6##
##########
##########
##########
#########3#######4#######a###b
##############_##_###`##)`##,`##r############l############l############l#########
###################################################################################
####################################################################$#If######kdF
###$##$#If##################################F##d
j#&
##########################################################0#################
##############################6##
##########
##########
##########
#########3#######4#######a###b
##############,`##`##4`##:`##=`##r############l############l############l############################
###################################################################################
#################################################$#If######kdKG###$##$#If########
##########################F##d
j#&
##########################################################0#################
##############################6##
##########
##########
##########
#########3#######4#######a###b
##############=`##>`##D`##G`##J`##r############l############l############l#########
###################################################################################
####################################################################$#If######kd#H
###$##$#If##################################F##d
j#&
##########################################################0#################
##############################6##
##########
##########
##########
#########3#######4#######a###b
##############J`##K`##S`##Y`##\`##r############l############l############l#########
###################################################################################
####################################################################$#If######kdH
###$##$#If##################################F##d
j#&
##########################################################0#################
##############################6##
##########
##########
##########
#########3#######4#######a###b
##############\`##]`##e`##k`##n`##r############l############l############l#########
###################################################################################
####################################################################$#If######kdsI
###$##$#If##################################F##d
j#&
##########################################################0#################
##############################6##
##########
##########
##########
#########3#######4#######a###b
##############n`##o`##p`##q`##r`##s`##t`##u`##v`##w`##y`##`##r############p#######
#####p############p############p############p############p############p############
p############p############k########################################$#a$#######kd+J
###$##$#If##################################F##d
j#&
##########################################################0#################
##############################6##
##########
##########
##########
#########3#######4#######a###b
##############`##Ja##a##ud##wd##d##1e##Ie##Re##[e##\e##]e#####################
#############################################################################
############c###############################{##kd#L###$##$#If########4#########
###################0#####K/#######################################0##########
#####################################6#############################
####3#######4#######a##b#########f4#
###$##$#If####a$#####$#If#########$#a$#######^##########$#a$###a##a##b##b##
b##b##b##b##b##b##!c##"c##*c##+c##c##.c##rc##sc##zc##{c##}c##~c##c##c##c##c##c##c###d###d###d##
d##"d###d##id##jd##qd##rd##ud##vd##wd##d##d##d##d##d##d##d##d##d## e##!
e##.e##/e##1e##He##Ie##Qe##Re##Ze##[e##\e##]e##_e##`e##be##ce##ee##fe##he##ie##ke##
le##ne##oe##qe##re##se##ue##e##e###f##
f##
######hJ##CJ##aJ###
#hJ##0J#####jK###hJ##U##
#hJ##0J#####j#####hJ##U####hJ###
#hJ##5#\#R]e##`e##ce##fe##ie##le##oe##re##se##ve##e##e###f##^f##qg##g##g##g
##g##g###h###h###h##;h##jh##h##h###########################################
#############################################################################
############################################################################
#############################################################################
#################################################FfS######FfP######$#If#######
#FfM##
###$##$#If####a$###
f###f###f##g##g##g##h##h##h##i##i##i##j##j##j##n##n##n##o##o##o##
#r###r###r###r##dr##sr##tr##r##r##r##es##s###t###t##
v##
%v###w###w###w##.w##/w##0w##qw##rw##~w##w##w##w##w##w##w##w##w##w##w##w#
#w##w##>x##?
x##Dx##Ex##Fx##Gx##jx##kx##x##x##x##x##)y##*y###z###z##
######hJ##0J##5#\####j#####hJ#
#5#U##\#
#hJ##0J#####jVd###hJ##U##
#hJ##5#\####hJ##CJ##aJ#####hJ#####j#####hJ##U##
#hJ##0J##Jh##h##i##i##i##i##i##i##i##i##i##i###j###j##=j##j##j##j##
j##j##~l##l##l##m##m##.n##n#############################################
#############################################################################
############################################################################
#############################################################################
#########################################################FfY######FfV######$#I
f####
###$##$#If####a$###n##n##n###o##Eo##No##Wo##o##o##o##o##o##o##Vp##_p##hp##
vq##q###r###r##dr##tr##r##r##r##es#########################################
#############################################################################
############################################################################
#############################################################################
##############################################^#####Ffkb######Ff}_######$#If#
###
###$##$#If####a$#####Ff\####es##s###t###t##t##pu##
v##&v###w###w##/w##w##w##w##Fx##############################################
############################################################################
################################################################################
###################################################################################
###################################################################
###$##$#If####a$######$#a$######$#a$####
&##F####d##d#[$#\
$#^###########^###Fx##Gx##Wx##`x##jx##r############l############l############
l##################################################################################
##############################################################################$#If#
#####kdd###$##$#If##################################F###R#!
##########################################################0#################
##############################6##
##########
##########
##########
#########3#######4#######a###b
##############jx##kx##ux##x##x##r############l############l############l#########
###################################################################################
####################################################################$#If######kde
###$##$#If##################################F###R#!
##########################################################0#################
##############################6##
##########
##########
##########
#########3#######4#######a###b
##############x##x##x##x##x##r############l############l############l#########
###################################################################################
####################################################################$#If######kdbf
###$##$#If##################################F###R#!
##########################################################0#################
##############################6##
##########
##########
##########
#########3#######4#######a###b
##############x##x###y###y##)y##r############l############l############l#########
###################################################################################
####################################################################$#If######kd#g
###$##$#If##################################F###R#!
##########################################################0#################
##############################6##
##########
##########
##########
#########3#######4#######a###b
##############)y##*y##2y###z###z##r############l############l############l#########
###################################################################################
####################################################################$#If######kdg
###$##$#If##################################F###R#!
##########################################################0#################
##############################6##
##########
##########
##########
#########3#######4#######a###b
###############z###z##rz##o{##{##{##l|##t|
##r############l############l############[############[############[############l##
#########################################################################
&##F###d##d##$#If####[$#\
$#####$#If######kdh###$##$#If##################################F###R#!
##########################################################0#################
##############################6##
##########
##########
##########
#########3#######4#######a###b
###############z###z###z##_z##`z##pz##qz##t|##u|##|##|##|##|##|##|##|##|
##|##|##|##|##|
###}###}##:}##;}##<}##=}##@}##\}##]}##`}##}}##~}##}##}##}##}##}##}##}##}##
}##}##}###~##
~##m~##n~##~##~##~##~##~##~##~##~##~##~##~###########I##J##V##W##
X##Y##########
####jVq###hJ##U##
#hJ##0J#####jp###hJ##U####hO[####hJ##0J##5#\##
#hJ##5#\##
#hJ##<###hJ##CJ##aJ###
#hJ##0J#####j#####hJ##U####hJ##Ht|##u|##|##|##|
##r############l############l############l#########################################
###################################################################################
####################################$#If######kdBi###$##$#If####################
##############F###R#!
##########################################################0#################
##############################6##
##########
##########
##########
#########3#######4#######a###b
##############|##|##|##|##|
##r############l############l############l#########################################
###################################################################################
####################################$#If######kdi###$##$#If####################
##############F###R#!
##########################################################0#################
##############################6##
##########
##########
##########
#########3#######4#######a###b
##############|##|##|##|##|
##r############p############g############g#########################################
###################################################################################
######################
###$##$#If####a$#######kdj###$##$#If##################################F###R#
!
##########################################################0#################
##############################6##
##########
##########
##########
#########3#######4#######a###b
##############|##|##|
##<}############################################################################
###################################################################################
###################################################################################
###$#If####x##kdjk###$##$#If##################################0##############
##############################0###########################################
####6#################################3#######4#######a###b########
###<}##=}##A}##\}###############################################################
###################################################################################
###################################################################################
################$#If####x##kd#l###$##$#If##################################0##
##########################################0################################
###############6#################################3#######4#######a
###b###########\}##]}##a}##}}##################################################
###################################################################################
###################################################################################
#############################$#If####x##kdl###$##$#If###########################
#######0############################################0#####################
##########################6#################################3#####
##4#######a###b###########}}##~}##}##}#####################################
###################################################################################
###################################################################################
##########################################$#If####x##kdhm###$##$#If##############
####################0############################################0##########
#####################################6#############################
####3#######4#######a###b###########}##}##}##}#########################
##################################################################################
###################################################################################
#######################################################$#If####x##kd#n###$##$#If###
###############################0############################################
0###############################################6###################
##############3#######4#######a###b###########}##}##}##}#############
#################################################################################
###################################################################################
####################################################################$#If####x##kdn
###$##$#If##################################0###############################
#############0###############################################6##########
#######################3#######4#######a###b###########}##}##}###~#
################################################################################
###################################################################################
#################################################################################$#
If####x##kdfo###$##$#If##################################0###################
#########################0###############################################6
#################################3#######4#######a###b############~
##
~##~##~##~##~#########@##U##########################################
####################{############v############p############_############_#########
#######################
&##F###d##d##$#If####[$#\
$#####$#If#########$#a$######$#a$######$#a$#####x##kd#p###$##$#If################
##################0############################################0###########
####################################6##############################
###3#######4#######a###b##########
################<##=########## #######r##s##########
########F##c##d##y######|
########$##U##{############T##U##V##g##h##i########
##########
#############0######3##4##>##?
##B##H##`##a######
###########j#####hJ##5#U##\#
#hJ##0J#####jr###hJ##U####hO[####hJ##CJ##aJ###
#hJ##0J#####j#####hJ##U##
#hJ##5#\####hJ##KU##u################F########################
##########################z############x############r############b############R##
####################
&##F###p##d##d#[$#\$#^p####
&##F#####d##d#[$#\
$#^#######^#####c##kdq###$##$#If#####################################&#
####################0###############################################6#####
################3#######4#######a###b#########
&##F###d##d##$#If####[$#\$#####
&##F###d##d##$#If####[$#\$##
F##|
##$##{####T##V##h########B##I## ######|
####################################################################
############################################################################
#############################################################################
####################################
&##F#####d##d#[$#\$#^####
&##F#####d##d#[$#\$#^######$#a$######$#a$#######^########
&##F#####d##d#[$#\$#^####
&##F###p##d##d#[$#\$#^p#########
##########L##M##T##U##Y##Z##############|
#
####L##################a##b##w##x##########
######
#####*##+########6########## ##
#####!##"#####e##f##z##{##|##}################
#########
#####A##B##K##]##o##~##
####hJ##CJ##aJ###
#hJ##0J#####j#####hJ##U##
#hJ##5#\####hJ#####j#####hJ##5#U##\###hJ##0J##5#\#P####7#### #####
##
#####"##|
###########################################################################
###########f############`############`##################################$#If####x##
kd*s###$##$#If##################################0##d#o
#######################################0###################################
############6#################################3#######4#######a##
b######### ###$##$#If####a$####
&##F#####d##d#[$#\$#^#######^######
|
##}#######################################################################
###################################################################################
###################################################################################
############$#If####x##kds###$##$#If##################################0##d#o
#######################################0###################################
############6#################################3#######4#######a##
b######################################################################
###################################################################################
###################################################################################
##########################$#If####x##kdt###$##$#If##############################
####0##d#o
#######################################0###################################
############6#################################3#######4#######a##
b#######################################################################
###################################################################################
###################################################################################
#########################$#If####x##kd7u###$##$#If###############################
###0##d#o
#######################################0###################################
############6#################################3#######4#######a##
b##########################################################################
###################################################################################
###################################################################################
#######################$#If####x##kdu###$##$#If#################################
#0##d#o
#######################################0###################################
############6#################################3#######4#######a##
b############## ##
##A###########################################################################
###################################################################################
###################################################################################
####$#If####x##kdv###$##$#If##################################0##d#o
#######################################0###################################
############6#################################3#######4#######a##
b###########A##B######E##g##f###########h##############w##########
##w############w############w############w############q############a############a##
##########q############q##################
&##F#####d##d#[$#\$#^#######^####
&##F#####d##d#[$#\
$#^#x##kdDw###$##$#If##################################0##d#o
#######################################0###################################
############6#################################3#######4#######a##
b###########~##$##
%##h##i##n##o######9##@############R##S##X##Y##f#########h
##i##j##{##|
##}##~####################+##,##9##:##<##Q##R##q######
##W###############$##.##/##w##x##############j##t##w####
###############
##O##P##
####jx###hJ##U##
#hJ##0J#####jw###hJ##U##
#hJ##5#\##
#hJ##0J###
#hJ##0J#####j#####hJ##U####hJ##Ph##j##|
##~####<##R##########w####C##z########B##I##~######>
##H##g####################################################################
#############################################################################
############################################################################
#############################################################################
##############d##d#[$#\
$#]#^#######^######$#a$######$#a$######$#a$#######P##########C##y
##z################ ##!####.##2##3##K##L##[##\##v##w##~##########################B
##H##I##]##############~##########################.##;##<##>##G##H##f##g########## #
####
########
#
#hJ##0J#####j+y###hJ##U####hJ##CJ##OJ##PJ##QJ##^J##aJ###
#hJ##0J###
#hJ##5#\##
#hJ##0J#####j#####hJ##U####hJ##Mg##################
###########################################################################
##a############[############[############[########################$#If######kdy##
#$##$#If##################################F###`##!
##########################################################0#################
##############################6##
##########
##########
##########
#########3#######4#######a##b
############
###$##$#If####a$#######^######
#############
###########+##<##=##T##U##V##f##w##x##################
!################################)##;##<##>##?##@##
##############.##/##2##N##O##y###### #####6##7##{##|
############## #############N##O##P##n##o##
####
#hJ##0J#####j###hJ##U##
#hJ##0J#####j#####hJ##U####hJ##CJ##aJ#####hJ###
#hJ##5#\#R######+##=##U##r############l############l############l##########
###################################################################################
###################################################################$#If######kdz#
##$##$#If##################################F###`##!
##########################################################0#################
##############################6##
##########
##########
##########
#########3#######4#######a##b
##############U##V##f##x####r############l############l############l#########
###################################################################################
####################################################################$#If######kdA{
###$##$#If##################################F###`##!
##########################################################0#################
##############################6##
##########
##########
##########
#########3#######4#######a##b
########################r############l############l############l#########
###################################################################################
####################################################################$#If######kd{
###$##$#If##################################F###`##!
##########################################################0#################
##############################6##
##########
##########
##########
#########3#######4#######a##b
################!
########r############l############l############c################################
###################################################################################
####################### ###$##$#If####a$#####$#If######kd|
###$##$#If##################################F###`##!
##########################################################0#################
##############################6##
##########
##########
##########
#########3#######4#######a##b
###########################r############l############l############c###########
###################################################################################
############################################
###$##$#I