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