Метафора
Представьте себе китайскую вилку и нашу розетку, воткнуть просто так без адаптера у вас не выйдет.
Назначение
Есть некоторые разрозненные классы, которые поддерживают требуемые данные и поведения, однако они не предоставляют необходимого интерфейса для взаимодействия с ними. Для этого Вам необходимо создать класс обёртку с нужным интерфейсом, который внутри себя будет инкапсулировать те самые разрозненные классы, и переадресовывать вызовы из нужного Вам интерфейса к ним.
Диаграмма
Client использует абстракцию Target с нужным ему интерфейсом, класс Adapter реализует этот интерфейс, а уже внутри себя производит перенаправление запроса к целевому объекту Adaptee. Данная диаграмма представляет адаптер уровня объектов, кроме этого может быть еще и адаптер уровня классов. В классическом виде такой адаптер реализуется через множественное наследование, но т.к. ABAP это не поддерживает, представим его через интерфейс:
Adapter в данном случае реализует интерфейс подходящий для клиента и благодаря наследованию поведение Adaptee, внутри себя делает перенаправление из одного метода в другой.
Пример
Адаптер уровня объектов:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | *&---------------------------------------------------------------------* *&  Определение классов шаблона *&---------------------------------------------------------------------* CLASS lcl_target DEFINITION ABSTRACT.   PUBLIC SECTION.     METHODS:       request ABSTRACT. ENDCLASS. CLASS lcl_adaptee DEFINITION.   PUBLIC SECTION.     METHODS:       specialRequest. ENDCLASS. CLASS lcl_adaptee IMPLEMENTATION.   METHOD specialRequest.     WRITE: / 'Adaptee Call'.   ENDMETHOD. ENDCLASS. CLASS lcl_adapter DEFINITION INHERITING FROM lcl_target.   PUBLIC SECTION.     METHODS:       request REDEFINITION,       constructor.   PRIVATE SECTION.     DATA:       mo_adaptee TYPE REF TO lcl_adaptee. ENDCLASS. CLASS lcl_adapter IMPLEMENTATION.   METHOD constructor.     super->constructor( ).     CREATE OBJECT mo_adaptee.   ENDMETHOD.   METHOD request.     mo_adaptee->specialrequest( ).   ENDMETHOD. ENDCLASS. *&---------------------------------------------------------------------* *&  Работа с шаблоном *&---------------------------------------------------------------------* START-OF-SELECTION.   DATA:     lo_adapter TYPE REF TO lcl_adapter.   CREATE OBJECT lo_adapter.   lo_adapter->request( ). | 
Адаптер уровня классов:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | *&---------------------------------------------------------------------* *&  Определение классов шаблона *&---------------------------------------------------------------------* INTERFACE lif_target.   METHODS:     request. ENDINTERFACE. CLASS lcl_adaptee DEFINITION.   PUBLIC SECTION.     METHODS:       specialRequest. ENDCLASS. CLASS lcl_adaptee IMPLEMENTATION.   METHOD specialRequest.     WRITE:/ 'Adaptee Call'.   ENDMETHOD. ENDCLASS. CLASS lcl_adapter DEFINITION INHERITING FROM lcl_adaptee.   PUBLIC SECTION.     INTERFACES: lif_target.     ALIASES request FOR lif_target~request. ENDCLASS. CLASS lcl_adapter IMPLEMENTATION.   METHOD request.     me->specialrequest( ).   ENDMETHOD. ENDCLASS. *&---------------------------------------------------------------------* *&  Работа с шаблоном *&---------------------------------------------------------------------* START-OF-SELECTION.   DATA:     lo_adapter TYPE REF TO lcl_adapter.   CREATE OBJECT lo_adapter.   lo_adapter->request( ). | 

