/AWS1/IF_S3=>LISTOBJECTVERSIONS()¶
About ListObjectVersions¶
End of support notice: Beginning November 21, 2025, Amazon S3 will stop returning DisplayName. Update your applications to use canonical IDs (unique identifier for
Amazon Web Services accounts), Amazon Web Services account ID (12 digit identifier) or IAM ARNs (full resource naming) as a direct replacement of DisplayName.
This change affects the following Amazon Web Services Regions: US East (N. Virginia) Region, US West (N. California) Region, US West (Oregon) Region, Asia Pacific (Singapore) Region, Asia Pacific (Sydney) Region, Asia Pacific (Tokyo) Region, Europe (Ireland) Region, and South America (São Paulo) Region.
This operation is not supported for directory buckets.
Returns metadata about all versions of the objects in a bucket. You can also use request parameters as selection criteria to return metadata about a subset of all the object versions.
To use this operation, you must have permission to perform the s3:ListBucketVersions
action. Be aware of the name difference.
A 200 OK response can contain valid or invalid XML. Make sure to design your
application to parse the contents of the response and handle it appropriately.
To use this operation, you must have READ access to the bucket.
The following operations are related to ListObjectVersions:
You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.
Method Signature¶
METHODS /AWS1/IF_S3~LISTOBJECTVERSIONS
IMPORTING
!IV_BUCKET TYPE /AWS1/S3_BUCKETNAME OPTIONAL
!IV_DELIMITER TYPE /AWS1/S3_DELIMITER OPTIONAL
!IV_ENCODINGTYPE TYPE /AWS1/S3_ENCODINGTYPE OPTIONAL
!IV_KEYMARKER TYPE /AWS1/S3_KEYMARKER OPTIONAL
!IV_MAXKEYS TYPE /AWS1/S3_MAXKEYS OPTIONAL
!IV_PREFIX TYPE /AWS1/S3_PREFIX OPTIONAL
!IV_VERSIONIDMARKER TYPE /AWS1/S3_VERSIONIDMARKER OPTIONAL
!IV_EXPECTEDBUCKETOWNER TYPE /AWS1/S3_ACCOUNTID OPTIONAL
!IV_REQUESTPAYER TYPE /AWS1/S3_REQUESTPAYER OPTIONAL
!IT_OPTIONALOBJECTATTRIBUTES TYPE /AWS1/CL_S3_OPTIONALOBJATTRS00=>TT_OPTIONALOBJECTATTRSLIST OPTIONAL
RETURNING
VALUE(OO_OUTPUT) TYPE REF TO /aws1/cl_s3_listobjvrssoutput
RAISING
/AWS1/CX_S3_CLIENTEXC
/AWS1/CX_S3_SERVEREXC
/AWS1/CX_RT_TECHNICAL_GENERIC
/AWS1/CX_RT_SERVICE_GENERIC.
IMPORTING¶
Required arguments:¶
iv_bucket TYPE /AWS1/S3_BUCKETNAME /AWS1/S3_BUCKETNAME¶
The bucket name that contains the objects.
Optional arguments:¶
iv_delimiter TYPE /AWS1/S3_DELIMITER /AWS1/S3_DELIMITER¶
A delimiter is a character that you specify to group keys. All keys that contain the same string between the
prefixand the first occurrence of the delimiter are grouped under a single result element inCommonPrefixes. These groups are counted as one result against themax-keyslimitation. These keys are not returned elsewhere in the response.
CommonPrefixesis filtered out from results if it is not lexicographically greater than the key-marker.
iv_encodingtype TYPE /AWS1/S3_ENCODINGTYPE /AWS1/S3_ENCODINGTYPE¶
EncodingType
iv_keymarker TYPE /AWS1/S3_KEYMARKER /AWS1/S3_KEYMARKER¶
Specifies the key to start with when listing objects in a bucket.
iv_maxkeys TYPE /AWS1/S3_MAXKEYS /AWS1/S3_MAXKEYS¶
Sets the maximum number of keys returned in the response. By default, the action returns up to 1,000 key names. The response might contain fewer keys but will never contain more. If additional keys satisfy the search criteria, but were not returned because
max-keyswas exceeded, the response contains. To return the additional keys, seetrue key-markerandversion-id-marker.
iv_prefix TYPE /AWS1/S3_PREFIX /AWS1/S3_PREFIX¶
Use this parameter to select only those keys that begin with the specified prefix. You can use prefixes to separate a bucket into different groupings of keys. (You can think of using
prefixto make groups in the same way that you'd use a folder in a file system.) You can useprefixwithdelimiterto roll up numerous objects into a single result underCommonPrefixes.
iv_versionidmarker TYPE /AWS1/S3_VERSIONIDMARKER /AWS1/S3_VERSIONIDMARKER¶
Specifies the object version you want to start listing from.
iv_expectedbucketowner TYPE /AWS1/S3_ACCOUNTID /AWS1/S3_ACCOUNTID¶
The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code
403 Forbidden(access denied).
iv_requestpayer TYPE /AWS1/S3_REQUESTPAYER /AWS1/S3_REQUESTPAYER¶
RequestPayer
it_optionalobjectattributes TYPE /AWS1/CL_S3_OPTIONALOBJATTRS00=>TT_OPTIONALOBJECTATTRSLIST TT_OPTIONALOBJECTATTRSLIST¶
Specifies the optional fields that you want returned in the response. Fields that you do not specify are not returned.
RETURNING¶
oo_output TYPE REF TO /aws1/cl_s3_listobjvrssoutput /AWS1/CL_S3_LISTOBJVRSSOUTPUT¶
Domain /AWS1/RT_ACCOUNT_ID Primitive Type NUMC
Examples¶
Syntax Example¶
This is an example of the syntax for calling the method. It includes every possible argument and initializes every possible value. The data provided is not necessarily semantically accurate (for example the value "string" may be provided for something that is intended to be an instance ID, or in some cases two arguments may be mutually exclusive). The syntax shows the ABAP syntax for creating the various data structures.
DATA(lo_result) = lo_client->listobjectversions(
it_optionalobjectattributes = VALUE /aws1/cl_s3_optionalobjattrs00=>tt_optionalobjectattrslist(
( new /aws1/cl_s3_optionalobjattrs00( |string| ) )
)
iv_bucket = |string|
iv_delimiter = |string|
iv_encodingtype = |string|
iv_expectedbucketowner = |string|
iv_keymarker = |string|
iv_maxkeys = 123
iv_prefix = |string|
iv_requestpayer = |string|
iv_versionidmarker = |string|
).
This is an example of reading all possible response values
lo_result = lo_result.
IF lo_result IS NOT INITIAL.
lv_istruncated = lo_result->get_istruncated( ).
lv_keymarker = lo_result->get_keymarker( ).
lv_versionidmarker = lo_result->get_versionidmarker( ).
lv_nextkeymarker = lo_result->get_nextkeymarker( ).
lv_nextversionidmarker = lo_result->get_nextversionidmarker( ).
LOOP AT lo_result->get_versions( ) into lo_row.
lo_row_1 = lo_row.
IF lo_row_1 IS NOT INITIAL.
lv_etag = lo_row_1->get_etag( ).
LOOP AT lo_row_1->get_checksumalgorithm( ) into lo_row_2.
lo_row_3 = lo_row_2.
IF lo_row_3 IS NOT INITIAL.
lv_checksumalgorithm = lo_row_3->get_value( ).
ENDIF.
ENDLOOP.
lv_checksumtype = lo_row_1->get_checksumtype( ).
lv_size = lo_row_1->get_size( ).
lv_objectversionstoragecla = lo_row_1->get_storageclass( ).
lv_objectkey = lo_row_1->get_key( ).
lv_objectversionid = lo_row_1->get_versionid( ).
lv_islatest = lo_row_1->get_islatest( ).
lv_lastmodified = lo_row_1->get_lastmodified( ).
lo_owner = lo_row_1->get_owner( ).
IF lo_owner IS NOT INITIAL.
lv_displayname = lo_owner->get_displayname( ).
lv_id = lo_owner->get_id( ).
ENDIF.
lo_restorestatus = lo_row_1->get_restorestatus( ).
IF lo_restorestatus IS NOT INITIAL.
lv_isrestoreinprogress = lo_restorestatus->get_isrestoreinprogress( ).
lv_restoreexpirydate = lo_restorestatus->get_restoreexpirydate( ).
ENDIF.
ENDIF.
ENDLOOP.
LOOP AT lo_result->get_deletemarkers( ) into lo_row_4.
lo_row_5 = lo_row_4.
IF lo_row_5 IS NOT INITIAL.
lo_owner = lo_row_5->get_owner( ).
IF lo_owner IS NOT INITIAL.
lv_displayname = lo_owner->get_displayname( ).
lv_id = lo_owner->get_id( ).
ENDIF.
lv_objectkey = lo_row_5->get_key( ).
lv_objectversionid = lo_row_5->get_versionid( ).
lv_islatest = lo_row_5->get_islatest( ).
lv_lastmodified = lo_row_5->get_lastmodified( ).
ENDIF.
ENDLOOP.
lv_bucketname = lo_result->get_name( ).
lv_prefix = lo_result->get_prefix( ).
lv_delimiter = lo_result->get_delimiter( ).
lv_maxkeys = lo_result->get_maxkeys( ).
LOOP AT lo_result->get_commonprefixes( ) into lo_row_6.
lo_row_7 = lo_row_6.
IF lo_row_7 IS NOT INITIAL.
lv_prefix = lo_row_7->get_prefix( ).
ENDIF.
ENDLOOP.
lv_encodingtype = lo_result->get_encodingtype( ).
lv_requestcharged = lo_result->get_requestcharged( ).
ENDIF.
To list object versions¶
The following example returns versions of an object with specific key name prefix.
DATA(lo_result) = lo_client->listobjectversions(
iv_bucket = |examplebucket|
iv_prefix = |HappyFace.jpg|
).