Problem z optymalizacją kolumn w ALV.
Re: Problem z optymalizacją kolumn w ALV.
Musisz sprawdzić, w którym momencie tracisz referencję do obiekty ALV, bo na to wskazuje błąd. Obiekt ALV najlepiej zrobić globalny, aby z dowolnego miejsca klasy, zawsze mieć dostęp do niego. Postaw STOPy w kilku miejscach i zobaczysz. Obstawiam, że metoda do refresh, nie widzi już ALV, czyli obiekt jest NULL, bo korzystasz z jego kopii, zamiast oryginału...
SAP ABAP Certified Developer
-
- Posty: 15
- Rejestracja: wt kwie 12, 2022 12:42 pm
- Has thanked: 4 times
- Been thanked: 5 times
Re: Problem z optymalizacją kolumn w ALV.
Kod: Zaznacz cały
METHOD build_alv.
***********************************************************
* Print ALV
***********************************************************
DATA: "lt_fcat TYPE lvc_t_fcat,
ls_layo TYPE lvc_s_layo,
lv_title TYPE lvc_title,
ls_layout TYPE disvariant.
DATA: ls_stable TYPE lvc_s_stbl.
CLEAR ls_stable.
* ls_stable-row = 'X'.
* ls_stable-col = 'X'.
FIELD-SYMBOLS: <lt_tab> TYPE ANY TABLE.
ASSIGN mt_data TO <lt_tab>.
CHECK sy-subrc = 0.
IF mr_cc IS NOT BOUND.
CREATE OBJECT mr_cc
EXPORTING
container_name = 'CC_0100'
EXCEPTIONS
OTHERS = 99.
IF sy-subrc = 0.
CREATE OBJECT mr_alv
EXPORTING
i_parent = mr_cc
* i_appl_events = 'X'
EXCEPTIONS
OTHERS = 99.
IF sy-subrc = 0.
SET HANDLER handle_toolbar FOR mr_alv.
SET HANDLER handle_user_command FOR mr_alv.
REFRESH mt_fcat.
build_fcat( EXPORTING it_data_structure = <lt_tab>
IMPORTING et_fieldcat = mt_fcat ).
modify_fieldcatalog( CHANGING ct_fieldcat = mt_fcat ).
set_layout( IMPORTING es_layout = ls_layo ).
ls_layout-report = sy-repid.
* ls_layout-report = sy-repid.
* ls_layout-username = sy-uname. "To jest ważne
* ls_layout-handle = 'AML'. "To jest ważne
CALL METHOD mr_alv->set_table_for_first_display
EXPORTING
is_variant = ls_layout
is_layout = ls_layo
i_save = 'A'
CHANGING
it_outtab = mt_data
it_fieldcatalog = mt_fcat
EXCEPTIONS
OTHERS = 99.
* ls_stable-row = 'X'.
* ls_stable-col = 'X'.
CALL METHOD mr_alv->set_ready_for_input
EXPORTING
i_ready_for_input = 0.
ENDIF.
ENDIF.
mr_alv->GET_FRONTEND_LAYOUT( IMPORTING es_layout = ls_layo ).
mr_alv->SET_FRONTEND_LAYOUT( ls_layo ).
* mr_alv->set
* mr_alv->GET_FRONTEND_FIELDCATALOG( ).
refresh_alv( ).
ENDIF.
ENDMETHOD. "build_alv
METHOD build_fcat.
CLEAR: et_fieldcat[].
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'ZTM_CUSTOMER_ZONE_ALV_ST' " <-- Wpisać strukturę jaka będzie wyświetlana
i_client_never_display = 'X'
CHANGING
ct_fieldcat = et_fieldcat[].
ENDMETHOD. "build_fcat
METHOD set_layout.
* es_layout-grid_title = TEXT-003.
es_layout-cwidth_opt = 'X'.
es_layout-col_opt = 'X'.
es_layout-zebra = 'X'.
es_layout-no_keyfix = 'X'.
"es_layout-no_rowmark = 'X'.
es_layout-sel_mode = 'A'.
* es_layout-info_fname = 'ROWCOLOR'.
* es_layout-ctab_fname = 'CELLCOLOR'.
ENDMETHOD. "set_layout
SET_FRONTEND_LAYOUT i GET_FRONTEND_LAYOUT jednak nic to nie zmieniło odnośnie optymalizacji kolumn. Dalej są zbyt małe w stosunko do danych które posiadają.