How to create different SARS COVID variants in SAP ABAP

Required Elements in creating the classifications.

  • Structure – It includes the details such as variant id, variant name, amino acid changes, potential, spread.
  • Interface Definition – The variant details of the sars covid 2 will be handled here.
  • Abstract super class definition – This class implements the interface. The constructor is used to set the details of the variant.
  • Sars covid variant 1 sub class definition – It inherits the Abstract super class definition.
  • Report creation – It creates the instances of the sars covid 2 variant.

Structure definition:

Before creating the structure, let’s define the Data elements for the fields of the structure. All the fields of the structure can be defined with string type of data element. The variant can be identified with the key element as variant id.Let’s create a data element as ‚ZDE_Variant_string‘ with string type domain. Another Data element ZDE_VARIANT_ID with int4 type domain.

Let’s define the structure name ‚ZSVARIANT_DETAILS‘ with description

The fields of the structure are created as shown below.

  • Field = Variant_id , Data element = ZDE_VARIANT_ID, Domain type INT4
  • Field = Variant_name, Data element = ZDE_VARIANT_STRING, Domain type STRING
  • Field = amino acid changes, Data element = ZDE_VARIANT_STRING, Domain type STRING
  • Field = Potential, Data element = ZDE_VARIANT_STRING, Domain type STRING
  • Field = Spread, Data element = ZDE_VARIANT_STRING, Domain type STRING

Interface definition:

INTERFACE zif_sars_covid_2_variants

    PUBLIC.

METHODS get_variant_details EXPORTING es_variant_details TYPE zsvariant_details.

ENDINTERFACE.

Abstract super class definition and implementation:

CLASS zcl_sars_covid_2 DEFINITION.

    PUBLIC

    ABSTRACT

    CREATE PUBLIC.

     PUBLIC SECTION.

                INTERFACES zif_sars_covid_2_variants.

                METHODS constructor IMPORTING is_variant_details TYPE zsvariant_details.

    PROTECTED SECTION.

    PRIVATE SECTION.

                DATA ps_variant_details TYPE zsvariant_details.

ENDCLASS.

CLASS zcl_sars_covid_2 IMPLEMENTATION.

                METHOD zif_sars_covid_2_variants~get_variant_details.

                               Es_variant_details = ps_variant_details.

                ENDMETHOD.

                METHOD constructor.

                               Ps_variant_details = is_variant_details.

                ENDMETHOD.

ENDCLASS.

Sars covid variant 1 sub class definition

CLASS zcl_sars_covid_variant1  DEFINITION

PUBLIC

INHERITING FROM zcl_sars_covid_2

FINAL

CREATE PUBLIC.

PUBLIC SECTION.

PROTECTED SECTION.

PRIVATE SECTION.

ENDCLASS.

CLASS zcl_sars_covid_variant1 IMPLEMENTATION.

ENDCLASS.

REPORT TO CREATE INSTANCES OF THE COVID 2 VARIANTS.

REPORT zpr_sars_covid_program.

DATA lr_variant1 TYPE REF TO zcl_sars_covid_variant1.

DATA lr_variant2 TYPE REF TO zcl_sars_covid_variant1.

DATA lr_variant3 TYPE REF TO zcl_sars_covid_variant1.

DATA lt_variant_details TYPE TABLE OF ztvariant_details.

DATA ls_variant_details TYPE zsvariant_details.

DATA ls_print_variant_details TYPE zsvariant_details.

FIELD-SYMBOLS <lv_field> TYPE any.

Ls_variant_details-variant_id = 001.

Ls_variant_details-variant_name = ‚VOC 202012/01‘.

Ls_variant_details-amino_acid_changes = ‚ S: del 69-70, del 144, N501Y, A570D, P681H, T716I, S982A, D1118H‘‘.

Ls_variant_details-potential = ‚ increased transmissibility‘

Ls_variant_details-spread = ‚ UK and other european countries‘.

Lr_variant1 = NEW zcl_sars_covid_variant1( is_variant_details = ls_variant_details ).

Lr_variant1->zif_sars_covid_2_variants~get_variant_details( IMPORTING

                                                                                              Es_variant_details = ls_print_variant_details ).

WRITE: / ‚Variant ID:‘, ls_print_variant_details-Variant_id.

WRITE:/ ,Variant name:‘, ls_print_variant_details-variant_name.

WRITE:/ ,Amino acid changes:‘, ls_print_variant_details-amino_acid_changes.

WRITE:/ ,Potential:‘, ls_print_variant_details-potential.

WRITE:/ ,Spread:‘, ls_print_variant_details-spread.

Ls_variant_details-variant_id = 002.

Ls_variant_details-variant_name = ‚ 501.V2‘.

Ls_variant_details-amino_acid_changes = ‚S: D80A, D215G, E484K, N501Y and A701V‘.

Ls_variant_details-potential = ,increased transmissibility‘

Ls_variant_details-spread = ‚ South Africa, two cases recently detected in the UK‘.

Lr_variant2 = NEW zcl_sars_covid_variant1( is_variant_details = ls_variant_details ).

Lr_variant2->zif_sars_covid_2_variants~get_variant_details( IMPORTING

                                                                                              Es_variant_details = ls_print_variant_details ).

Ls_variant_details-variant_id = 003.

Ls_variant_details-variant_name = ‚Danish mink variant‘.

Ls_variant_details-amino_acid_changes = ‚ S: del 69-70, Y453F‘.

Ls_variant_details-potential = , Transmission from mink to humans and community spread confirmed without any change in transmissibility‘

Ls_variant_details-spread = ‚ Denmark‘.

Lr_variant3 = NEW zcl_sars_covid_variant1( is_variant_details = ls_variant_details ).

Lr_variant3->zif_sars_covid_2_variants~get_variant_details( IMPORTING

                                                                                              Es_variant_details = ls_print_variant_details ).

WRITE: / ‚Variant ID:‘, ls_print_variant_details-Variant_id.

WRITE:/ ,Variant name:‘, ls_print_variant_details-variant_name.

WRITE:/ ,Amino acid changes:‘, ls_print_variant_details-amino_acid_changes.

WRITE:/ ,Potential:‘, ls_print_variant_details-potential.

WRITE:/ ,Spread:‘, ls_print_variant_details-spread.

References: Covid variant details are taken from below report.

European centre for Disease Prevention and Control: Risk related to spread of new SARSCoV-2 variants of concern in the EU/EEA

How to do encapsulation in SAP ABAP

CLASS big_boss DEFINITION.

   PUBLIC SECTION.

   METHODS set_name IMPORTING i_name TYPE string.

   METHODS get_name EXPORTING e_name TYPE string.

   METHODS set_age IMPORTING i_age TYPE int4.

   METHODS get_age EXPORTING e_age TYPE int4.

   METHODS set_profession IMPORTING i_profession TYPE string.

   METHODS get_profession EXPORTING e_profession TYPE string.

   PROTECTED SECTION.

   PRIVATE SECTION.

   DATA p_name TYPE string.

   DATA p_age TYPE int4.

   DATA p_profession TYPE string.

ENDCLASS.

CLASS big_boss IMPLEMENTATION.

METHOD set_name.

  p_name = i_name.

ENDMETHOD.

METHOD get_name.

  e_name = p_name.

ENDMETHOD.

METHOD set_age.

   P_age = i_age.

ENDMETHOD.

METHOD get_age.

   E_age = p_age.

ENDMETHOD.

METHOD set_profession.

   P_profession = i_profession.

ENDMETHOD.

METHOD get_profession.

   E_profession = p_profession.

ENDMETHOD.

ENDCLASS.

REPORT TO ACCESS GETTER AND SETTER METHODS.

DATA lr_bigboss TYPE REF TO bigboss.

DATA l_name TYPE string.

DATA l_age TYPE int4.

DATA l_profession TYPE string.

Lr_bigboss = NEW bigboss( ).

Lr_bigboss->set_name(  EXPORTING i_name = ‚Bala‘ ).

Lr_bigboss->set_age( EXPORTING i_age = 24 ).

Lr_bigboss->set_profession( EXPORTING i_profession = ‚Model and Mr. India‘ ).

 Lr_bigboss->get_name( IMPORTING e_name = l_name ).

Lr_bigboss->get_age( IMPORTING e_age = l_age ).

Lr_bigboss->get_profession( IMPORTING e_profession = l_profession ).

WRITE: / ‚NAME OF THE CONTESTANT:‘ , l_name.

WRITE:/ ,AGE OF THE CONTESTANT:‘; l_age.

WRITE:/ ,PROFESSION OF THE CONTESTANT:‘, L_PROFESSION.