2017-02-03 9 views
2

Мне нужно заполнить ячейку данными, разделенными символом «новая строка». Я пробовал:Новый символ строки при экспорте в excel

data: l_con_sepa TYPE c VALUE cl_abap_char_utilities=>newline. 
... 
    CONCATENATE <gf_aufk>-tplnr " 6000000159 Korchagin AS 02.02.2017 
         <gf_aufk>-pltxt 
         l_con_sepa 
         <gf_aufk>-aufnr 
         INTO lv_str 
      SEPARATED BY space. 

Пытались использовать CL_ABAP_CHAR_UTILITIES=>CR_LF. Пытался использовать символы «&» и «#». Пробовал обернуть lv_str с кавычками. Ничего. У меня либо есть символы как есть, либо просто пустое пространство с эквивалентом «alt + enter».

ответ

2

Простой эксперимент с Excel, а именно создание ячейки с символами Alt+Enter и сохранение ее как файла CSV, показывает, что такой новый символ строки LF, а не CR_LF. Более того, он помещается туда в двойные кавычки.

Так что просто используйте двойные кавычки и CL_ABAP_CHAR_UTILITIES=>NEWLINE.

Excel

Notepad++

Он должен работать с CSV. Вы не указали, какой API вы используете для экспорта своих данных в формат XLS, поэтому я не могу его протестировать. Если вы не возражаете поставить эти детали в вопросе, пожалуйста, сделайте это.

Предполагая, что вы используете FM SAP_CONVERT_TO_XLS_FORMAT, нет необходимости в двойных кавычках.

REPORT YYY. 

TYPES: BEGIN OF gty_my_type, 
    col1 TYPE char255, 
    col2 TYPE char255, 
    END OF gty_my_type, 
    gtty_my_type TYPE STANDARD TABLE OF gty_my_type WITH EMPTY KEY. 

START-OF-SELECTION. 
    DATA(gt_string_table) = VALUE gtty_my_type(
    (
     col1 = 'aaa' 
     && cl_abap_char_utilities=>newline 
     && 'bbb' 
     && cl_abap_char_utilities=>newline 
     && 'ccc' 
     col2 = 'ddd' 
    ) 
). 

    CALL FUNCTION 'SAP_CONVERT_TO_XLS_FORMAT' 
    EXPORTING 
     i_filename     = 'D:\temp\abap.xlsx' 
    TABLES 
     i_tab_sap_data    = gt_string_table 
    EXCEPTIONS 
     conversion_failed   = 1 
     OTHERS      = 2. 

    ASSERT sy-subrc = 0. 

Результат выглядит следующим образом

Convert to XLS format result

Я думал, что это может быть вызвано CONCATENATE .. INTO .. SEPARATED BY space, но это не так. Чтобы проверить это, выполните следующую программу.

REPORT YYY. 

TYPES: BEGIN OF gty_my_type, 
    col1 TYPE char255, 
    col2 TYPE char255, 
    END OF gty_my_type, 
    gtty_my_type TYPE STANDARD TABLE OF gty_my_type WITH EMPTY KEY. 
DATA: gs_string TYPE gty_my_type. 
DATA: gt_string_table TYPE gtty_my_type. 

START-OF-SELECTION. 
    CONCATENATE 'aaa' cl_abap_char_utilities=>newline 'bbb' cl_abap_char_utilities=>newline 'ccc' 
    INTO gs_string-col1 SEPARATED BY space. 
    gs_string-col2 = 'ddd'. 
    APPEND gs_string TO gt_string_table. 


    CALL FUNCTION 'SAP_CONVERT_TO_XLS_FORMAT' 
    EXPORTING 
     i_filename     = 'D:\temp\abap.xlsx' 
    TABLES 
     i_tab_sap_data    = gt_string_table 
    EXCEPTIONS 
     conversion_failed   = 1 
     OTHERS      = 2. 

    ASSERT sy-subrc = 0. 

Result Excel with CONCATENATE SEPARATED BY

Таким образом, проблема должна быть где-то в другом месте. Вы не показываете нам весь ваш код. Может быть, вы используете какой-то сторонний пакет для обработки ваших файлов Excel?

0

Я не помню, если необходимо добавить символ «конец строки». Просто добавьте каждую строку в таблицу и загрузите полную таблицу, используя FM SAP_CONVERT_TO_XLS_FORMAT.

+0

не нужно для экспорта, конечно. Но клиент хочет, чтобы он был отформатирован следующим образом: AUFNR и на следующей строке той же ячейки - TPLNR. – AlexanderK

+0

И почему бы вам не создать внутреннюю таблицу и не разделить поля в столбцах? Я думаю, что лучше использовать внутреннюю таблицу, а затем использовать ее по мере необходимости ... –

+0

Это потому, что в файле xls есть куча макросов внутри, поэтому ... – AlexanderK

 Смежные вопросы

  • Нет связанных вопросов^_^