SageMaker contoh menggunakan SDK untuk SAP ABAP - AWS SDKContoh Kode

Ada lebih banyak AWS SDK contoh yang tersedia di GitHub repo SDKContoh AWS Dokumen.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

SageMaker contoh menggunakan SDK untuk SAP ABAP

Contoh kode berikut menunjukkan cara melakukan tindakan dan mengimplementasikan skenario umum dengan menggunakan AWS SDK for SAP ABAP with SageMaker.

Tindakan adalah kutipan kode dari program yang lebih besar dan harus dijalankan dalam konteks. Sementara tindakan menunjukkan cara memanggil fungsi layanan individual, Anda dapat melihat tindakan dalam konteks dalam skenario terkait.

Skenario adalah contoh kode yang menunjukkan kepada Anda bagaimana menyelesaikan tugas tertentu dengan memanggil beberapa fungsi dalam layanan atau dikombinasikan dengan yang lain Layanan AWS.

Setiap contoh menyertakan tautan ke kode sumber lengkap, di mana Anda dapat menemukan instruksi tentang cara mengatur dan menjalankan kode dalam konteks.

Tindakan

Contoh kode berikut menunjukkan cara menggunakanCreateEndpoint.

SDKuntuk SAP ABAP
catatan

Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara pengaturan dan menjalankannya di Repositori Contoh Kode AWS.

DATA lt_production_variants TYPE /aws1/cl_sgmproductionvariant=>tt_productionvariantlist. DATA lo_production_variants TYPE REF TO /aws1/cl_sgmproductionvariant. DATA oo_ep_config_result TYPE REF TO /aws1/cl_sgmcreateendptcfgout. "Create a production variant as an ABAP object." "Identifies a model that you want to host and the resources chosen to deploy for hosting it." CREATE OBJECT lo_production_variants EXPORTING iv_variantname = iv_variant_name iv_modelname = iv_model_name iv_initialinstancecount = iv_initial_instance_count iv_instancetype = iv_instance_type. INSERT lo_production_variants INTO TABLE lt_production_variants. "Create an endpoint configuration." TRY. oo_ep_config_result = lo_sgm->createendpointconfig( iv_endpointconfigname = iv_endpoint_config_name it_productionvariants = lt_production_variants ). MESSAGE 'Endpoint configuration created.' TYPE 'I'. CATCH /aws1/cx_sgmresourcelimitexcd. MESSAGE 'You have reached the limit on the number of resources.' TYPE 'E'. ENDTRY. "Create an endpoint." TRY. oo_result = lo_sgm->createendpoint( " oo_result is returned for testing purposes. " iv_endpointconfigname = iv_endpoint_config_name iv_endpointname = iv_endpoint_name ). MESSAGE 'Endpoint created.' TYPE 'I'. CATCH /aws1/cx_sgmresourcelimitexcd. MESSAGE 'You have reached the limit on the number of resources.' TYPE 'E'. ENDTRY.

Contoh kode berikut menunjukkan cara menggunakanCreateModel.

SDKuntuk SAP ABAP
catatan

Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara pengaturan dan menjalankannya di Repositori Contoh Kode AWS.

DATA lo_primarycontainer TYPE REF TO /aws1/cl_sgmcontainerdefn. "Create an ABAP object for the container image based on input variables." CREATE OBJECT lo_primarycontainer EXPORTING iv_image = iv_container_image iv_modeldataurl = iv_model_data_url. "Create an Amazon SageMaker model." TRY. oo_result = lo_sgm->createmodel( " oo_result is returned for testing purposes. " iv_executionrolearn = iv_execution_role_arn iv_modelname = iv_model_name io_primarycontainer = lo_primarycontainer ). MESSAGE 'Model created.' TYPE 'I'. CATCH /aws1/cx_sgmresourcelimitexcd. MESSAGE 'You have reached the limit on the number of resources.' TYPE 'E'. ENDTRY.
  • Untuk API detailnya, lihat CreateModel AWSSDKuntuk SAP ABAP API referensi.

Contoh kode berikut menunjukkan cara menggunakanCreateTrainingJob.

SDKuntuk SAP ABAP
catatan

Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara pengaturan dan menjalankannya di Repositori Contoh Kode AWS.

DATA lo_hyperparameters_w TYPE REF TO /aws1/cl_sgmhyperparameters_w. DATA lt_hyperparameters TYPE /aws1/cl_sgmhyperparameters_w=>tt_hyperparameters. DATA lt_input_data_config TYPE /aws1/cl_sgmchannel=>tt_inputdataconfig. DATA lo_trn_channel TYPE REF TO /aws1/cl_sgmchannel. DATA lo_trn_datasource TYPE REF TO /aws1/cl_sgmdatasource. DATA lo_trn_s3datasource TYPE REF TO /aws1/cl_sgms3datasource. DATA lo_val_channel TYPE REF TO /aws1/cl_sgmchannel. DATA lo_val_datasource TYPE REF TO /aws1/cl_sgmdatasource. DATA lo_val_s3datasource TYPE REF TO /aws1/cl_sgms3datasource. DATA lo_algorithm_specification TYPE REF TO /aws1/cl_sgmalgorithmspec. DATA lo_resource_config TYPE REF TO /aws1/cl_sgmresourceconfig. DATA lo_output_data_config TYPE REF TO /aws1/cl_sgmoutputdataconfig. DATA lo_stopping_condition TYPE REF TO /aws1/cl_sgmstoppingcondition. "Create ABAP internal table for hyperparameters based on input variables." "These hyperparameters are based on the Amazon SageMaker built-in algorithm, XGBoost." CREATE OBJECT lo_hyperparameters_w EXPORTING iv_value = iv_hp_max_depth. INSERT VALUE #( key = 'max_depth' value = lo_hyperparameters_w ) INTO TABLE lt_hyperparameters. CREATE OBJECT lo_hyperparameters_w EXPORTING iv_value = iv_hp_eta. INSERT VALUE #( key = 'eta' value = lo_hyperparameters_w ) INTO TABLE lt_hyperparameters. CREATE OBJECT lo_hyperparameters_w EXPORTING iv_value = iv_hp_eval_metric. INSERT VALUE #( key = 'eval_metric' value = lo_hyperparameters_w ) INTO TABLE lt_hyperparameters. CREATE OBJECT lo_hyperparameters_w EXPORTING iv_value = iv_hp_scale_pos_weight. INSERT VALUE #( key = 'scale_pos_weight' value = lo_hyperparameters_w ) INTO TABLE lt_hyperparameters. CREATE OBJECT lo_hyperparameters_w EXPORTING iv_value = iv_hp_subsample. INSERT VALUE #( key = 'subsample' value = lo_hyperparameters_w ) INTO TABLE lt_hyperparameters. CREATE OBJECT lo_hyperparameters_w EXPORTING iv_value = iv_hp_objective. INSERT VALUE #( key = 'objective' value = lo_hyperparameters_w ) INTO TABLE lt_hyperparameters. CREATE OBJECT lo_hyperparameters_w EXPORTING iv_value = iv_hp_num_round. INSERT VALUE #( key = 'num_round' value = lo_hyperparameters_w ) INTO TABLE lt_hyperparameters. "Create ABAP objects for training data sources." CREATE OBJECT lo_trn_s3datasource EXPORTING iv_s3datatype = iv_trn_data_s3datatype iv_s3datadistributiontype = iv_trn_data_s3datadistribution iv_s3uri = iv_trn_data_s3uri. CREATE OBJECT lo_trn_datasource EXPORTING io_s3datasource = lo_trn_s3datasource. CREATE OBJECT lo_trn_channel EXPORTING iv_channelname = 'train' io_datasource = lo_trn_datasource iv_compressiontype = iv_trn_data_compressiontype iv_contenttype = iv_trn_data_contenttype. INSERT lo_trn_channel INTO TABLE lt_input_data_config. "Create ABAP objects for validation data sources." CREATE OBJECT lo_val_s3datasource EXPORTING iv_s3datatype = iv_val_data_s3datatype iv_s3datadistributiontype = iv_val_data_s3datadistribution iv_s3uri = iv_val_data_s3uri. CREATE OBJECT lo_val_datasource EXPORTING io_s3datasource = lo_val_s3datasource. CREATE OBJECT lo_val_channel EXPORTING iv_channelname = 'validation' io_datasource = lo_val_datasource iv_compressiontype = iv_val_data_compressiontype iv_contenttype = iv_val_data_contenttype. INSERT lo_val_channel INTO TABLE lt_input_data_config. "Create an ABAP object for algorithm specification." CREATE OBJECT lo_algorithm_specification EXPORTING iv_trainingimage = iv_training_image iv_traininginputmode = iv_training_input_mode. "Create an ABAP object for resource configuration." CREATE OBJECT lo_resource_config EXPORTING iv_instancecount = iv_instance_count iv_instancetype = iv_instance_type iv_volumesizeingb = iv_volume_sizeingb. "Create an ABAP object for output data configuration." CREATE OBJECT lo_output_data_config EXPORTING iv_s3outputpath = iv_s3_output_path. "Create an ABAP object for stopping condition." CREATE OBJECT lo_stopping_condition EXPORTING iv_maxruntimeinseconds = iv_max_runtime_in_seconds. "Create a training job." TRY. oo_result = lo_sgm->createtrainingjob( " oo_result is returned for testing purposes. " iv_trainingjobname = iv_training_job_name iv_rolearn = iv_role_arn it_hyperparameters = lt_hyperparameters it_inputdataconfig = lt_input_data_config io_algorithmspecification = lo_algorithm_specification io_outputdataconfig = lo_output_data_config io_resourceconfig = lo_resource_config io_stoppingcondition = lo_stopping_condition ). MESSAGE 'Training job created.' TYPE 'I'. CATCH /aws1/cx_sgmresourceinuse. MESSAGE 'Resource being accessed is in use.' TYPE 'E'. CATCH /aws1/cx_sgmresourcenotfound. MESSAGE 'Resource being accessed is not found.' TYPE 'E'. CATCH /aws1/cx_sgmresourcelimitexcd. MESSAGE 'You have reached the limit on the number of resources.' TYPE 'E'. ENDTRY.

Contoh kode berikut menunjukkan cara menggunakanCreateTransformJob.

SDKuntuk SAP ABAP
catatan

Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara pengaturan dan menjalankannya di Repositori Contoh Kode AWS.

DATA lo_transforminput TYPE REF TO /aws1/cl_sgmtransforminput. DATA lo_transformoutput TYPE REF TO /aws1/cl_sgmtransformoutput. DATA lo_transformresources TYPE REF TO /aws1/cl_sgmtransformresources. DATA lo_datasource TYPE REF TO /aws1/cl_sgmtransformdatasrc. DATA lo_s3datasource TYPE REF TO /aws1/cl_sgmtransforms3datasrc. "Create an ABAP object for an Amazon Simple Storage Service (Amazon S3) data source." CREATE OBJECT lo_s3datasource EXPORTING iv_s3uri = iv_tf_data_s3uri iv_s3datatype = iv_tf_data_s3datatype. "Create an ABAP object for data source." CREATE OBJECT lo_datasource EXPORTING io_s3datasource = lo_s3datasource. "Create an ABAP object for transform data source." CREATE OBJECT lo_transforminput EXPORTING io_datasource = lo_datasource iv_contenttype = iv_tf_data_contenttype iv_compressiontype = iv_tf_data_compressiontype. "Create an ABAP object for resource configuration." CREATE OBJECT lo_transformresources EXPORTING iv_instancecount = iv_instance_count iv_instancetype = iv_instance_type. "Create an ABAP object for output data configuration." CREATE OBJECT lo_transformoutput EXPORTING iv_s3outputpath = iv_s3_output_path. "Create a transform job." TRY. oo_result = lo_sgm->createtransformjob( " oo_result is returned for testing purposes. " iv_modelname = iv_tf_model_name iv_transformjobname = iv_tf_job_name io_transforminput = lo_transforminput io_transformoutput = lo_transformoutput io_transformresources = lo_transformresources ). MESSAGE 'Transform job created.' TYPE 'I'. CATCH /aws1/cx_sgmresourceinuse. MESSAGE 'Resource being accessed is in use.' TYPE 'E'. CATCH /aws1/cx_sgmresourcenotfound. MESSAGE 'Resource being accessed is not found.' TYPE 'E'. CATCH /aws1/cx_sgmresourcelimitexcd. MESSAGE 'You have reached the limit on the number of resources.' TYPE 'E'. ENDTRY.

Contoh kode berikut menunjukkan cara menggunakanDeleteEndpoint.

SDKuntuk SAP ABAP
catatan

Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara pengaturan dan menjalankannya di Repositori Contoh Kode AWS.

"Delete an endpoint." TRY. lo_sgm->deleteendpoint( iv_endpointname = iv_endpoint_name ). MESSAGE 'Endpoint configuration deleted.' TYPE 'I'. CATCH /aws1/cx_rt_service_generic INTO DATA(lo_endpoint_exception). DATA(lv_endpoint_error) = |"{ lo_endpoint_exception->av_err_code }" - { lo_endpoint_exception->av_err_msg }|. MESSAGE lv_endpoint_error TYPE 'E'. ENDTRY. "Delete an endpoint configuration." TRY. lo_sgm->deleteendpointconfig( iv_endpointconfigname = iv_endpoint_config_name ). MESSAGE 'Endpoint deleted.' TYPE 'I'. CATCH /aws1/cx_rt_service_generic INTO DATA(lo_endpointconfig_exception). DATA(lv_endpointconfig_error) = |"{ lo_endpointconfig_exception->av_err_code }" - { lo_endpointconfig_exception->av_err_msg }|. MESSAGE lv_endpointconfig_error TYPE 'E'. ENDTRY.

Contoh kode berikut menunjukkan cara menggunakanDeleteModel.

SDKuntuk SAP ABAP
catatan

Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara pengaturan dan menjalankannya di Repositori Contoh Kode AWS.

TRY. lo_sgm->deletemodel( iv_modelname = iv_model_name ). MESSAGE 'Model deleted.' TYPE 'I'. CATCH /aws1/cx_rt_service_generic INTO DATA(lo_exception). DATA(lv_error) = |"{ lo_exception->av_err_code }" - { lo_exception->av_err_msg }|. MESSAGE lv_error TYPE 'E'. ENDTRY.
  • Untuk API detailnya, lihat DeleteModel AWSSDKuntuk SAP ABAP API referensi.

Contoh kode berikut menunjukkan cara menggunakanDescribeTrainingJob.

SDKuntuk SAP ABAP
catatan

Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara pengaturan dan menjalankannya di Repositori Contoh Kode AWS.

TRY. oo_result = lo_sgm->describetrainingjob( " oo_result is returned for testing purposes. " iv_trainingjobname = iv_training_job_name ). MESSAGE 'Retrieved description of training job.' TYPE 'I'. CATCH /aws1/cx_rt_service_generic INTO DATA(lo_exception). DATA(lv_error) = |"{ lo_exception->av_err_code }" - { lo_exception->av_err_msg }|. MESSAGE lv_error TYPE 'E'. ENDTRY.

Contoh kode berikut menunjukkan cara menggunakanListAlgorithms.

SDKuntuk SAP ABAP
catatan

Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara pengaturan dan menjalankannya di Repositori Contoh Kode AWS.

TRY. oo_result = lo_sgm->listalgorithms( " oo_result is returned for testing purposes. " iv_namecontains = iv_name_contains ). MESSAGE 'Retrieved list of algorithms.' TYPE 'I'. CATCH /aws1/cx_rt_service_generic INTO DATA(lo_exception). DATA(lv_error) = |"{ lo_exception->av_err_code }" - { lo_exception->av_err_msg }|. MESSAGE lv_error TYPE 'E'. ENDTRY.

Contoh kode berikut menunjukkan cara menggunakanListModels.

SDKuntuk SAP ABAP
catatan

Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara pengaturan dan menjalankannya di Repositori Contoh Kode AWS.

TRY. oo_result = lo_sgm->listmodels( " oo_result is returned for testing purposes. " iv_namecontains = iv_name_contains ). MESSAGE 'Retrieved list of models.' TYPE 'I'. CATCH /aws1/cx_rt_service_generic INTO DATA(lo_exception). DATA(lv_error) = |"{ lo_exception->av_err_code }" - { lo_exception->av_err_msg }|. MESSAGE lv_error TYPE 'E'. ENDTRY.
  • Untuk API detailnya, lihat ListModels AWSSDKuntuk SAP ABAP API referensi.

Contoh kode berikut menunjukkan cara menggunakanListNotebookInstances.

SDKuntuk SAP ABAP
catatan

Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara pengaturan dan menjalankannya di Repositori Contoh Kode AWS.

TRY. oo_result = lo_sgm->listnotebookinstances( " oo_result is returned for testing purposes. " iv_namecontains = iv_name_contains ). MESSAGE 'Retrieved list of notebook instances.' TYPE 'I'. CATCH /aws1/cx_rt_service_generic INTO DATA(lo_exception). DATA(lv_error) = |"{ lo_exception->av_err_code }" - { lo_exception->av_err_msg }|. MESSAGE lv_error TYPE 'E'. ENDTRY.

Contoh kode berikut menunjukkan cara menggunakanListTrainingJobs.

SDKuntuk SAP ABAP
catatan

Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara pengaturan dan menjalankannya di Repositori Contoh Kode AWS.

TRY. oo_result = lo_sgm->listtrainingjobs( " oo_result is returned for testing purposes. " iv_namecontains = iv_name_contains iv_maxresults = iv_max_results ). MESSAGE 'Retrieved list of training jobs.' TYPE 'I'. CATCH /aws1/cx_rt_service_generic INTO DATA(lo_exception). DATA(lv_error) = |"{ lo_exception->av_err_code }" - { lo_exception->av_err_msg }|. MESSAGE lv_error TYPE 'E'. ENDTRY.

Skenario

Contoh kode berikut ini menunjukkan cara:

  • Mulai pekerjaan pelatihan dan buat SageMaker model.

  • Buat konfigurasi titik akhir.

  • Buat titik akhir, lalu bersihkan sumber daya.

SDKuntuk SAP ABAP
catatan

Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara pengaturan dan menjalankannya di Repositori Contoh Kode AWS.

DATA lo_hyperparameters_w TYPE REF TO /aws1/cl_sgmhyperparameters_w. DATA lo_trn_channel TYPE REF TO /aws1/cl_sgmchannel. DATA lo_trn_datasource TYPE REF TO /aws1/cl_sgmdatasource. DATA lo_trn_s3datasource TYPE REF TO /aws1/cl_sgms3datasource. DATA lo_val_channel TYPE REF TO /aws1/cl_sgmchannel. DATA lo_val_datasource TYPE REF TO /aws1/cl_sgmdatasource. DATA lo_val_s3datasource TYPE REF TO /aws1/cl_sgms3datasource. DATA lo_algorithm_specification TYPE REF TO /aws1/cl_sgmalgorithmspec. DATA lo_resource_config TYPE REF TO /aws1/cl_sgmresourceconfig. DATA lo_output_data_config TYPE REF TO /aws1/cl_sgmoutputdataconfig. DATA lo_stopping_condition TYPE REF TO /aws1/cl_sgmstoppingcondition. DATA lo_primarycontainer TYPE REF TO /aws1/cl_sgmcontainerdefn. DATA lo_production_variants TYPE REF TO /aws1/cl_sgmproductionvariant. DATA lo_ep_config_result TYPE REF TO /aws1/cl_sgmcreateendptcfgout. DATA lo_training_result TYPE REF TO /aws1/cl_sgmdescrtrnjobrsp. DATA lt_production_variants TYPE /aws1/cl_sgmproductionvariant=>tt_productionvariantlist. DATA lt_input_data_config TYPE /aws1/cl_sgmchannel=>tt_inputdataconfig. DATA lt_hyperparameters TYPE /aws1/cl_sgmhyperparameters_w=>tt_hyperparameters. DATA lv_model_data_url TYPE /aws1/sgmurl. lv_model_data_url = iv_s3_output_path && iv_training_job_name && '/output/model.tar.gz'. "Create ABAP internal table for hyperparameters based on input variables." "These hyperparameters are based on Amazon SageMaker built-in algorithm - XGBoost" CREATE OBJECT lo_hyperparameters_w EXPORTING iv_value = iv_hp_max_depth. INSERT VALUE #( key = 'max_depth' value = lo_hyperparameters_w ) INTO TABLE lt_hyperparameters. CREATE OBJECT lo_hyperparameters_w EXPORTING iv_value = iv_hp_eta. INSERT VALUE #( key = 'eta' value = lo_hyperparameters_w ) INTO TABLE lt_hyperparameters. CREATE OBJECT lo_hyperparameters_w EXPORTING iv_value = iv_hp_eval_metric. INSERT VALUE #( key = 'eval_metric' value = lo_hyperparameters_w ) INTO TABLE lt_hyperparameters. CREATE OBJECT lo_hyperparameters_w EXPORTING iv_value = iv_hp_scale_pos_weight. INSERT VALUE #( key = 'scale_pos_weight' value = lo_hyperparameters_w ) INTO TABLE lt_hyperparameters. CREATE OBJECT lo_hyperparameters_w EXPORTING iv_value = iv_hp_subsample. INSERT VALUE #( key = 'subsample' value = lo_hyperparameters_w ) INTO TABLE lt_hyperparameters. CREATE OBJECT lo_hyperparameters_w EXPORTING iv_value = iv_hp_objective. INSERT VALUE #( key = 'objective' value = lo_hyperparameters_w ) INTO TABLE lt_hyperparameters. CREATE OBJECT lo_hyperparameters_w EXPORTING iv_value = iv_hp_num_round. INSERT VALUE #( key = 'num_round' value = lo_hyperparameters_w ) INTO TABLE lt_hyperparameters. "Create ABAP internal table for data based on input variables." "Training data." CREATE OBJECT lo_trn_s3datasource EXPORTING iv_s3datatype = iv_trn_data_s3datatype iv_s3datadistributiontype = iv_trn_data_s3datadistribution iv_s3uri = iv_trn_data_s3uri. CREATE OBJECT lo_trn_datasource EXPORTING io_s3datasource = lo_trn_s3datasource. CREATE OBJECT lo_trn_channel EXPORTING iv_channelname = 'train' io_datasource = lo_trn_datasource iv_compressiontype = iv_trn_data_compressiontype iv_contenttype = iv_trn_data_contenttype. INSERT lo_trn_channel INTO TABLE lt_input_data_config. "Validation data." CREATE OBJECT lo_val_s3datasource EXPORTING iv_s3datatype = iv_val_data_s3datatype iv_s3datadistributiontype = iv_val_data_s3datadistribution iv_s3uri = iv_val_data_s3uri. CREATE OBJECT lo_val_datasource EXPORTING io_s3datasource = lo_val_s3datasource. CREATE OBJECT lo_val_channel EXPORTING iv_channelname = 'validation' io_datasource = lo_val_datasource iv_compressiontype = iv_val_data_compressiontype iv_contenttype = iv_val_data_contenttype. INSERT lo_val_channel INTO TABLE lt_input_data_config. "Create an ABAP object for algorithm specification based on input variables." CREATE OBJECT lo_algorithm_specification EXPORTING iv_trainingimage = iv_training_image iv_traininginputmode = iv_training_input_mode. "Create an ABAP object for resource configuration." CREATE OBJECT lo_resource_config EXPORTING iv_instancecount = iv_instance_count iv_instancetype = iv_instance_type iv_volumesizeingb = iv_volume_sizeingb. "Create an ABAP object for output data configuration." CREATE OBJECT lo_output_data_config EXPORTING iv_s3outputpath = iv_s3_output_path. "Create an ABAP object for stopping condition." CREATE OBJECT lo_stopping_condition EXPORTING iv_maxruntimeinseconds = iv_max_runtime_in_seconds. TRY. lo_sgm->createtrainingjob( iv_trainingjobname = iv_training_job_name iv_rolearn = iv_role_arn it_hyperparameters = lt_hyperparameters it_inputdataconfig = lt_input_data_config io_algorithmspecification = lo_algorithm_specification io_outputdataconfig = lo_output_data_config io_resourceconfig = lo_resource_config io_stoppingcondition = lo_stopping_condition ). MESSAGE 'Training job created.' TYPE 'I'. CATCH /aws1/cx_sgmresourceinuse. MESSAGE 'Resource being accessed is in use.' TYPE 'E'. CATCH /aws1/cx_sgmresourcenotfound. MESSAGE 'Resource being accessed is not found.' TYPE 'E'. CATCH /aws1/cx_sgmresourcelimitexcd. MESSAGE 'You have reached the limit on the number of resources.' TYPE 'E'. ENDTRY. "Wait for training job to be completed." lo_training_result = lo_sgm->describetrainingjob( iv_trainingjobname = iv_training_job_name ). WHILE lo_training_result->get_trainingjobstatus( ) <> 'Completed'. IF sy-index = 30. EXIT. "Maximum 900 seconds." ENDIF. WAIT UP TO 30 SECONDS. lo_training_result = lo_sgm->describetrainingjob( iv_trainingjobname = iv_training_job_name ). ENDWHILE. "Create ABAP object for the container image based on input variables." CREATE OBJECT lo_primarycontainer EXPORTING iv_image = iv_training_image iv_modeldataurl = lv_model_data_url. "Create an Amazon SageMaker model." TRY. lo_sgm->createmodel( iv_executionrolearn = iv_role_arn iv_modelname = iv_model_name io_primarycontainer = lo_primarycontainer ). MESSAGE 'Model created.' TYPE 'I'. CATCH /aws1/cx_sgmresourcelimitexcd. MESSAGE 'You have reached the limit on the number of resources.' TYPE 'E'. ENDTRY. "Create an endpoint production variant." CREATE OBJECT lo_production_variants EXPORTING iv_variantname = iv_ep_variant_name iv_modelname = iv_model_name iv_initialinstancecount = iv_ep_initial_instance_count iv_instancetype = iv_ep_instance_type. INSERT lo_production_variants INTO TABLE lt_production_variants. TRY. "Create an endpoint configuration." lo_ep_config_result = lo_sgm->createendpointconfig( iv_endpointconfigname = iv_ep_cfg_name it_productionvariants = lt_production_variants ). MESSAGE 'Endpoint configuration created.' TYPE 'I'. "Create an endpoint." oo_ep_output = lo_sgm->createendpoint( " oo_ep_output is returned for testing purposes. " iv_endpointconfigname = iv_ep_cfg_name iv_endpointname = iv_ep_name ). MESSAGE 'Endpoint created.' TYPE 'I'. CATCH /aws1/cx_sgmresourcelimitexcd. MESSAGE 'You have reached the limit on the number of resources.' TYPE 'E'. ENDTRY. "Wait for endpoint creation to be completed." DATA(lo_endpoint_result) = lo_sgm->describeendpoint( iv_endpointname = iv_ep_name ). WHILE lo_endpoint_result->get_endpointstatus( ) <> 'InService'. IF sy-index = 30. EXIT. "Maximum 900 seconds." ENDIF. WAIT UP TO 30 SECONDS. lo_endpoint_result = lo_sgm->describeendpoint( iv_endpointname = iv_ep_name ). ENDWHILE. TRY. "Delete an endpoint." lo_sgm->deleteendpoint( iv_endpointname = iv_ep_name ). MESSAGE 'Endpoint deleted' TYPE 'I'. "Delete an endpoint configuration." lo_sgm->deleteendpointconfig( iv_endpointconfigname = iv_ep_cfg_name ). MESSAGE 'Endpoint configuration deleted.' TYPE 'I'. "Delete model." lo_sgm->deletemodel( iv_modelname = iv_model_name ). MESSAGE 'Model deleted.' TYPE 'I'. CATCH /aws1/cx_rt_service_generic INTO DATA(lo_endpointconfig_exception). DATA(lv_endpointconfig_error) = |"{ lo_endpointconfig_exception->av_err_code }" - { lo_endpointconfig_exception->av_err_msg }|. MESSAGE lv_endpointconfig_error TYPE 'E'. ENDTRY.