Тормозит в частности вот этот код:
Code:
READ TABLE g_bnka INTO bnka WITH KEY banks = l_bnka-banks
bankl = l_bnka-bankl.
IF sy-subrc NE 0.
MOVE-CORRESPONDING l_bnka TO wa_bnka.
APPEND wa_bnka TO g_bnka.
ELSE.
MOVE-CORRESPONDING L_BNKA TO WA_BNKA.
MODIFY G_BNKA FROM WA_BNKA INDEX SY-TABIX.
ENDIF.
Таблица g_bnka - не сортированная.
Как вариант, можно обнулять перед вызовом BAPI таблицу g_bnka с помощью ASSIGN
Code:
FIELD-SYMBOLS: <fs_bnka> TYPE TABLE.
ASSIGN ('SAPL1011(G_BNKA[])') TO <fs_bnka>.
IF SY-SUBRC = 0.
REFRESH <fs_bnka>.
ENDIF.
CALL FUNCTION 'BAPI_BANK_CHANGE'...
Кроме этого, может тормозить сохранение адресных данных банка.
Для очистки глобальных данных можно использовать вызов ФМ ADDR_MEMORY_NEW_ROLL_AREA перед BAPI_BANK_CHANGE.
Подробнее "тормоза" можно посмотреть в SE30, сделав тестовую программу с вызовом BAPI в цикле.
R/3 4.7 Ext 110.