Это как мои две глобальные классы выглядеть следующим образом:доступа статические методы и свойства класса друга в ABAP
CLASS zcl_singleton_class DEFINITION CREATE PRIVATE friends ZCL_FLINFO
PUBLIC SECTION.
CLASS-METHODS:
CLASS_CONSTRUCTOR,
get_instance
RETURNING VALUE(r_instance) TYPE REF TO zcl_singleton_class.
PRIVATE SECTION.
types:
TY_CONNECTION_LIST TYPE STANDARD TABLE OF SPFLI WITH KEY carrid connid.
class-data instance type ref to zcl_singleton_class .
class-data CONNECTION_LIST type TY_CONNECTION_LIST .
ENDCLASS.
CLASS zcl_singleton_class IMPLEMENTATION.
method CLASS_CONSTRUCTOR.
instance = instance.
SELECT * FROM SPFLI INTO TABLE CONNECTION_LIST.
endmethod.
METHOD get_instance.
r_instance = instance.
ENDMETHOD.
ENDCLASS.
CLASS ZCL_FLINFO DEFINITION.
PUBLIC SECTION.
CLASS-METHODS:
CLASS_CONSTRUCTOR,
get_connection
IMPORTING im_carrid type S_CARR_ID
RETURNING VALUE(re_connection) TYPE.
ENDCLASS.
CLASS ZCL_FLINFO IMPLEMENTATION.
METHOD get_connection.
LOOP at CONNECTION_LIST TRANSPORTING NO FIELDS WHERE carrid = im_carrid.
re_connection = re_connection + 1.
ENDLOOP.
ENDMETHOD.
ENDCLASS.
Как я могу реализовать get_connection
метод ZCL_FLINFO
так перебирать внутренней таблицы CONNECTION_LIST
из zcl_singleton_class
, чтобы подсчитать количество соединений для данной авиакомпании и вернуть их в параметр?
Что вы пробовали до сих пор, с какими проблемами вы столкнулись? Также обратите внимание, что это плохая идея, чтобы фабрика/менеджер хранила фактические данные, а не инкапсулировала их в управляемых экземплярах. – vwegert
Использование принципа дружбы - довольно плохая идея. – Jagger
Это то, что я пробовал: 'метод GET_N_O_CONNECTIONS. DATA: CONNECTION_LIST TYPE TABLE OF REF TO ZCL_3609_SINGLETON. LOOP В CONNECTION_LIST ТРАНСПОРТИРОВКА НЕТ ПОЛЕЙ ГДЕ CARRID = IM_CARRID. RE_N_O_CONNECTIONS = RE_N_O_CONNECTIONS + 1. ENDLOOP. endmethod.' и у меня есть ошибка, указывающая, что никакой компонент не существует с именем CARRID. – user2120167