- •Часть I. Основы языка 5
- •Часть II. Расширенные приемы программирования в sap bw 37
- •Часть III. Полезные советы 85
- •Вступление
- •Задание атрибутов программы
- •Составление исходного текста программы
- •Локальные данные программы Определение полей с помощью элементарных типов и ссылок
- •Записи и внутренние таблицы
- •Объявление составных неэлементарных типов и объектов
- •Область определения данных
- •Глобальные таблицы словаря Dictionary
- •Отображение определения
- •Отображение содержимого таблицы
- •Создание таблицы или структуры
- •Использование таблиц и структур в программе
- •Создание доменов
- •Работа с данными Копирование полей с помощью команд Move и Compute
- •Преобразования содержимого полей
- •Копирование структурированных объектов
- •Арифметические выражения и математические функции
- •Операции со строками текста Конкатенация и разделение строк
- •Замена и преобразование символов в строке
- •Поиск символьных строк в полях или внутренних таблицах
- •Символ «Перенос каретки»
- •Запись данных
- •Простой формат вывода
- •Использование символов и пиктограмм
- •Использование цветов
- •Интерфейсы форм
- •Подпрограммы и функции Глобальные функции
- •Функциональные группы
- •Создание функций
- •Вызов функции
- •Чтение таблиц базы данных Построение простейшего запроса
- •Использование конструкции where
- •Чтение единственного элемента таблицы
- •Извлечение ограниченного числа полей
- •Упорядочение результатов запроса
- •Динамическая выборка данных
- •Вложенные циклы select
- •Часть II. Расширенные приемы программирования в sap bw Тип функции планирования
- •Создание класса
- •Определение нового типа функции планирования
- •Разработка класса Считывание значений управляющих параметров
- •Определение ссылочных данных
- •Добавление сообщений в спул вывода
- •Обработка данных для изменения
- •Badi для консолидации (перенос данных)
- •Чтение данных инфо-провайдера
- •Формирование структуры признаков из настроечной таблицы
- •Отправка e-mail сообщения из abap на внешний адрес
- •Выполнение расчетов в параллельных (фоновых) задачах
- •Подпрограмма преобразования
- •Вызов транзакции через web интерфейс
- •Передача параметров
- •Загрузка данных из 1с 8
- •Загрузка справочников
- •Загрузка транзакционных данных
- •Загрузка данных из файлов Excel с помощью ole
- •Загрузка сообщений (tcode se91) из файла Excel
- •Программа загрузки данных из файла csv в таблицу бд
- •Вызов последовательности планирования из abap
- •Динамическое программирование
- •Определение полей таблицы в runtime
- •Создание динамической таблицы в runtime
- •Генерирование abap подпрограммы в runtime
- •Создание пользовательского средства поиска
- •Часть III. Полезные советы Создание abap программы без ключа разработчика
- •Поиск внутренних таблиц
- •Редактирование данных в таблицах sap, недоступных для ведения
- •Оптимизация выборки данных
- •Справочник транзакций
Программа загрузки данных из файла csv в таблицу бд
Данная программа позволяет загружать данные из плоского файла CSV в таблицу базы данных с идентичной структурой без модификации ABAP кода.
*&---------------------------------------------------------------------* *& Report Z_FRM_MAP_UPLAOD *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT z_csv_to_ztab_upload. TYPES: BEGIN OF ttab, rec TYPE string, END OF ttab. DATA: l_fname_str TYPE string, txt_str TYPE string, l_f_tab TYPE TABLE OF ttab, l_t_frm_map TYPE TABLE OF zfr_kf_mapping, l_s_frm_map LIKE LINE OF l_t_frm_map, l_t_list TYPE table_of_strings, l_counter TYPE i, l_tab_name(30) TYPE c. DATA: BEGIN OF l_t_taget OCCURS 0. INCLUDE STRUCTURE dntab. DATA: END OF l_t_taget. DATA: i_alv_cat TYPE TABLE OF lvc_s_fcat, ls_alv_cat LIKE LINE OF i_alv_cat, d_ref TYPE REF TO data. FIELD-SYMBOLS: <fs_t_tab> TYPE table, <fs_s_tab> TYPE ANY, <l_f_tab_line> LIKE LINE OF l_f_tab, <fs_s_tab_field> TYPE ANY, <fs_l_s_list> LIKE LINE OF l_t_list. PARAMETERS: p_fname TYPE localfile DEFAULT 'Y:\CSV\', p_sk_lin TYPE i DEFAULT 1, p_t_name TYPE tabname DEFAULT '', p_del_t TYPE rs_bool DEFAULT 'X'. AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fname. CALL FUNCTION 'KD_GET_FILENAME_ON_F4' EXPORTING static = 'X' CHANGING file_name = p_fname. START-OF-SELECTION. l_fname_str = p_fname. l_tab_name = p_t_name. REFRESH l_t_taget. CALL FUNCTION 'NAMETAB_GET' EXPORTING langu = sy-langu tabname = p_t_name TABLES nametab = l_t_taget EXCEPTIONS no_texts_found = 1. LOOP AT l_t_taget . ls_alv_cat-fieldname = l_t_taget-fieldname. ls_alv_cat-ref_table = p_t_name. ls_alv_cat-ref_field = l_t_taget-fieldname. APPEND ls_alv_cat TO i_alv_cat. ENDLOOP. * internal table build CALL METHOD cl_alv_table_create=>create_dynamic_table EXPORTING it_fieldcatalog = i_alv_cat IMPORTING ep_table = d_ref. ASSIGN d_ref->* TO <fs_t_tab>. CALL FUNCTION 'GUI_UPLOAD' EXPORTING filename = l_fname_str TABLES data_tab = l_f_tab EXCEPTIONS file_open_error = 1 file_read_error = 2 no_batch = 3 gui_refuse_filetransfer = 4 invalid_type = 5 no_authority = 6 unknown_error = 7 bad_data_format = 8 header_not_allowed = 9 separator_not_allowed = 10 header_too_long = 11 unknown_dp_error = 12 access_denied = 13 dp_out_of_memory = 14 disk_full = 15 dp_timeout = 16 OTHERS = 17. APPEND INITIAL LINE TO <fs_t_tab>. READ TABLE <fs_t_tab> INDEX 1 ASSIGNING <fs_s_tab>. IF p_del_t EQ 'X'. DELETE FROM (p_t_name). ENDIF. ADD 1 TO p_sk_lin. "If no lines to skip start from first line LOOP AT l_f_tab ASSIGNING <l_f_tab_line> FROM p_sk_lin. * CALL FUNCTION 'RSDS_CONVERT_CSV' * EXPORTING * i_data_sep = ';' * i_esc_char = '"' * i_record = <l_f_tab_line>-rec * i_field_count = l_fld_n * IMPORTING * e_t_data = l_t_list. SPLIT <l_f_tab_line>-rec AT ';' INTO TABLE l_t_list. l_counter = 1. LOOP AT l_t_list ASSIGNING <fs_l_s_list>. ASSIGN COMPONENT l_counter OF STRUCTURE <fs_s_tab> TO <fs_s_tab_field>. <fs_s_tab_field> = <fs_l_s_list>. ADD 1 TO l_counter. ENDLOOP. INSERT (l_tab_name) FROM <fs_s_tab>. CLEAR <fs_s_tab>. ENDLOOP. WRITE: / sy-subrc.