-
Notifications
You must be signed in to change notification settings - Fork 0
/
abapassign_mem_area_static_dobj.html
194 lines (192 loc) · 11.2 KB
/
abapassign_mem_area_static_dobj.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
<!doctype HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="EN">
<!-- ABAPASSIGN_MEM_AREA_STATIC_DOBJ -->
<!-- Mirrored from help.sap.com/doc/abapdocu_751_index_htm/7.51/en-US/abapassign_mem_area_static_dobj.htm by HTTrack Website Copier/3.x [XR&CO'2014], Thu, 20 Jan 2022 17:39:29 GMT -->
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="author" content="SAP">
<meta name="description" content="ASSIGN - static_dobj">
<title>
ASSIGN - static_dobj - ABAP Keyword Documentation
</title>
<link rel="icon" href="ABAPIcon.ico" type="image/ico">
<link rel="shortcut icon" href="ABAPIcon.ico">
<LINK rel="stylesheet" href="abap_docu.css" type="text/css">
<script type="text/JavaScript">
function call_link(linked_file)
{
if(parent.frames.length>0){
parent.window.frames["basefrm"].window.location = linked_file;
parent.window.frames["treeframe"].window.location = "abap_docu_tree92bd.html?file=" + linked_file;}
else {
window.location = linked_file;}
}
function urlToClipboard(id){
try{ var loc = top.location.href;}
catch(e){ alert( "URL cannnot be determined" ); return; }
var field = document.getElementById(id);
field.focus();
if ( loc.search( ".htm" ) == -1 && loc.search( ".HTM" ) == -1 ){ loc = loc + "index.htm"; }
if ( loc.search( "index.html" ) != -1
|| loc.search( "INDEX-2.html" ) != -1 ){
var off = loc.search( "file=" );
if ( off == -1 ){
field.value = loc + "?file=abapassign_mem_area_static_dobj.htm"; }
else {
field.value = loc.substring( 0, off ) + "file=abapassign_mem_area_static_dobj.htm";
}
}
else {
field.value = loc; }
field.setSelectionRange(0, field.value.length);
var r = confirm( "Copy URL to clipboard?\n\n" + field.value + "\n\nCopy to clipboard does not work in all browsers." );
if (r == true) {
try{
document.execCommand("copy");
}
catch(e){ alert( "URL could not be copied to clipboard" ); }
}
window.scrollTo(0,0);
}
</script>
</head>
<body>
<div class="all">
<p class="copyright">SAP NetWeaver AS ABAP Release 751, ©Copyright 2017 SAP AG. All rights reserved.
<input type="button" value="URL" style="font-size:8px; width:26px; height:16px; padding:0"
onclick="urlToClipboard('url')" title="Copy URL to Clipboard" >
</p>
<span class="path">
<a href="javascript:call_link('abenabap.html')" class="blue">ABAP - Keyword Documentation</a> →
<a href="javascript:call_link('abenabap_reference.html')" class="blue">ABAP - Reference</a> →
<a href="javascript:call_link('abenabap_data_working.html')" class="blue">Processing Internal Data</a> →
<a href="javascript:call_link('abenvalue_assignments.html')" class="blue">Assignments</a> →
<a href="javascript:call_link('abenreference_assignments.html')" class="blue">Assigning References</a> →
<a href="javascript:call_link('abenset_field_symbols.html')" class="blue">Setting Field Symbols</a> →
<a href="javascript:call_link('abapassign.html')" class="blue">ASSIGN</a> →
<a href="javascript:call_link('abapassign_mem_area.html')" class="blue">ASSIGN - mem_area</a> →
</span>
<p><span class="h1">
ASSIGN - static_dobj <br><br>
</span></p>
<P>
<a href="javascript:call_link('abapassign_shortref.html')" class="blue">Quick Reference</a> <br><br>
</P>
<p><span class="h2">
<span class="bold">Syntax</span>
</span></p>
<P>
<span class="qtext">... dobj<i class=bn>[</i>+off<i class=bn>]</i><i class=bn>[</i>(len)<i class=bn>]</i> ...</span> <br><br>
</P>
<p><span class="h4">
Effect
</span></p>
<P>
In the static variant for the memory area, a data object <span class="qtext">dobj</span> with an optional offset/length <span class="qtext">+off(len)</span> can be specified in accordance with the rules in the section
<a href="javascript:call_link('abenoperands_data_objects.html')" class="blue">Data Objects in Operand Positions</a>, with the following exception: A data reference dereferenced using the dereferencing operator ->* is
<a href="javascript:call_link('abapassign_mem_area_dynamic_dobj.html')" class="blue">specified dynamically</a>. <span class="qtext">dobj</span> specified using a field symbol, on the other hand, is a static variant.
</P>
<P>
The memory area is determined by the specified offset/length <span class="qtext">+off(len)</span> as follows:
</P>
<ul class="disc">
<li>
If no offset/length specification is made, the assigned memory area is the same as the memory area of
the data object. The entire data object <span class="qtext">dobj</span> is assigned to the field symbol, and statements that contain the field symbol in operand positions work with the data object. <br>
<br></li>
<li>
If an offset/length is specified, the memory area is determined from the memory address of the data object and the offset/length specifications. The general rules for
<a href="javascript:call_link('abenoffset_length.html')" class="blue">substring accesses</a> apply. If these rules are met, memory
outside the <span class="qtext">dobj</span> field limits can also be addressed. The addressable memory
is based on the specification <a href="javascript:call_link('abapassign_range.html')" class="blue"><span class="qtext">range_spec</span></a>.
If an offset <span class="qtext">off</span> is specified without a length <span class="qtext">len</span>,
the length of the data object <span class="qtext">dobj</span> is used implicitly for <span class="qtext">len</span>.
If a field symbol is specified for <span class="qtext">dobj</span>, to which a memory area is already
assigned, the content of the offset length can be negative, as long as the area specified in <span class="qtext">range_spec</span> is not exited. The following restrictions apply when offsets/lengths are specified:
<br></li>
</ul>
<ul class="circlem2">
<li>No inline declaration of the field symbol with <a href="javascript:call_link('abenfield-symbol_inline.html')" class="blue"><span class="qtext">FIELD-SYMBOL(<fs>)</span></a> can be made.</li>
</ul>
<ul class="circlem2">
<li>The data type of <span class="qtext">dobj</span> cannot be <span class="qtext">string</span> or
<span class="qtext">xstring</span>. This means that <span class="qtext">len</span> can never be less than or equal to zero.</li>
</ul>
<ul class="circlem2">
<li>If the name of a data object is specified for <span class="qtext">dobj</span> and if no explicit
<a href="javascript:call_link('abapassign_range.html')" class="blue"><span class="qtext">RANGE</span></a> addition is used, no
offset <span class="qtext">off</span> can be specified without the length <span class="qtext">len</span>. If the name of a field symbol is specified for <span class="qtext">dobj</span>, its data type must be
<a href="javascript:call_link('abenflat_glosry.html')" class="grey" title="Glossary Entry">flat</a> and elementary whenever an offset <span class="qtext">off</span> is specified without length <span class="qtext">len</span>.</li>
</ul>
<P>
If the assignment is not successful, no memory area is assigned to the field symbol after the <span class="qtext">ASSIGN</span> statement. The return code <span class="qtext">sy-subrc</span> is not set for static variants. Instead, the
<a href="javascript:call_link('abenpredicate_expression_glosry.html')" class="grey" title="Glossary Entry">predicate expression</a>
<a href="javascript:call_link('abenlogexp_assigned.html')" class="blue"><span class="qtext"><fs> IS ASSIGNED</span></a> can be evaluated.
</P>
<P>
In an inline declaration of the field symbol with <a href="javascript:call_link('abenfield-symbol_inline.html')" class="blue"><span class="qtext">
FIELD-SYMBOL(<fs>)</span></a>, the field symbol is typed with the data type that can be determined
statically for <span class="qtext">mem_area</span>. If <span class="qtext">mem_area</span> is a generically typed field symbol or a generically typed formal parameter, the generic type is used. <br><br>
</P>
<p><span class="h4">
Notes
</span></p>
<ul class="disc">
<li>
Ensure that the system field <span class="qtext">sy-subrc</span> is not evaluated inadvertently after
the static variant. The value of the system field in this case is always the same as it was before the
<span class="qtext">ASSIGN</span> statement was executed and therefore does not indicate whether the statement was successful.
<br><br></li>
<li>
Even the static variant is dynamic in the sense that the offset and length specifications may be dynamic.
Dynamic offset/length specifications do not, however, result in the system field <span class="qtext">sy-subrc</span> being set.
<br><br></li>
<li>
If a generically typed field symbol or a generically typed formal parameter is specified for <span class="qtext">dobj</span>,
its current type at runtime determines the behavior, for example whether offsets/lengths can be specified. <br><br>
<br></li>
</ul>
<p><span class="h4">
Example
</span></p>
<P>
Assigns the memory area of the individual characters of a data object <span class="qtext">text</span> to a field symbol <span class="qtext"><char></span>.
</P>
<p class="qtextml1">
<span class="qtext">
DATA text TYPE c LENGTH 10 VALUE '0123456789'. <br> <br>FIELD-SYMBOLS <char> TYPE c. <br> <br>DATA off TYPE i. <br>
<br>DO 10 TIMES. <br> off = sy-index - 1. <br> ASSIGN text+off(1) TO <char>. <br> cl_demo_output=>write_text( |{ <char> }| ). <br>ENDDO. <br>cl_demo_output=>display( ). <br><br>
</span>
</p>
<p><span class="h4">
Example
</span></p>
<P>
A field symbol <span class="qtext"><fs1></span> points to the component <span class="qtext">col1</span>
of the structure <span class="qtext">struct</span>. In the first assignment of <span class="qtext"><fs1></span>
to a field symbol <span class="qtext"><fs2></span>, an offset without length is specified, which
means that the length 10 of the component <span class="qtext">col1</span> is used implicitly. This assignment
is not possible, since the assigned memory area is outside of the permitted range. In the second assignment,
the permitted memory area is expanded to the full structure using the assignment <a href="javascript:call_link('abapassign_range.html')" class="blue"><span class="qtext">RANGE</span></a> and the assignment is successful.
</P>
<p class="qtextml1">
<span class="qtext">
DATA: <br> BEGIN OF struct, <br> col1 TYPE c LENGTH 10 VALUE 'aaaaaaaaaa', <br>
col2 TYPE c LENGTH 10 VALUE 'bbbbbbbbbb', <br> END OF struct. <br> <br>
FIELD-SYMBOLS: <fs1> TYPE c, <br> <fs2> TYPE c. <br>
<br>ASSIGN struct-col1 TO <fs1>. <br>ASSIGN <fs1>+5 TO <fs2>. <br>IF <fs2> IS NOT ASSIGNED. <br>
cl_demo_output=>write( `No assignment without sufficient RANGE` ). <br>ENDIF. <br>ASSIGN <fs1>+5 TO <fs2> RANGE struct. <br>
IF <fs2> IS ASSIGNED. <br> cl_demo_output=>display( `Assignment with sufficient RANGE` ). <br>ENDIF. <br><br>
</span>
</p>
<br>
<br>
<br>
<br>
</DIV>
<fieldset style="opacity:0">
<input id="url" type="text" />
</fieldset>
</BODY>
<!-- Mirrored from help.sap.com/doc/abapdocu_751_index_htm/7.51/en-US/abapassign_mem_area_static_dobj.htm by HTTrack Website Copier/3.x [XR&CO'2014], Thu, 20 Jan 2022 17:39:29 GMT -->
</html>