login as:
~/abapcraft.dev — code, crafted in SAP
florin@abapcraft:~/abap/posts/exercism-abap/src/zcl_itab_combination.clas.abap $ cat zcl_itab_combination.clas.abap
exercism-abap / src / zcl_itab_combination.clas.abap
ABAP 62 lines
CLASS zcl_itab_combination DEFINITION
  PUBLIC
  FINAL
  CREATE PUBLIC .

  PUBLIC SECTION.

    TYPES: BEGIN OF alphatab_type,
             cola TYPE string,
             colb TYPE string,
             colc TYPE string,
           END OF alphatab_type.
    TYPES alphas TYPE STANDARD TABLE OF alphatab_type.

    TYPES: BEGIN OF numtab_type,
             col1 TYPE string,
             col2 TYPE string,
             col3 TYPE string,
           END OF numtab_type.
    TYPES nums TYPE STANDARD TABLE OF numtab_type.

    TYPES: BEGIN OF combined_data_type,
             colx TYPE string,
             coly TYPE string,
             colz TYPE string,
           END OF combined_data_type.
    TYPES combined_data TYPE STANDARD TABLE OF combined_data_type WITH EMPTY KEY.

    METHODS perform_combination
      IMPORTING
        alphas               TYPE alphas
        nums                 TYPE nums
      RETURNING
        VALUE(combined_data) TYPE combined_data.

  PROTECTED SECTION.
  PRIVATE SECTION.


ENDCLASS.

CLASS zcl_itab_combination IMPLEMENTATION.

  METHOD perform_combination.

    LOOP AT alphas INTO DATA(alpha).

      DATA(num) = VALUE #( nums[ sy-tabix ] DEFAULT VALUE #( ) ).

      combined_data = VALUE #( BASE combined_data
                                  ( colx = |{ alpha-cola }{ num-col1 }|
                                    coly = |{ alpha-colb }{ num-col2 }|
                                    colz = |{ alpha-colc }{ num-col3 }| )
                                   ).

    ENDLOOP.

  ENDMETHOD.

ENDCLASS.