Сапёр

В данном разделе собраны статьи и рекомендации экспертов в области SAP из России и стран СНГ

Загрузка «длинных» текстов основных записей материалов при помощи транзакции LSMW.

7827
9

Иногда длины 40 символов для поля «Краткий текст»в основной записи материала (ОЗМ) недостаточно, чтобы точно описатьматериал (услугу). В этом случае используется поле «Текст к основным данным». Это поле находится в ракурсе «Основные данные» в закладке «Дополнительные данные» (Рис.1) на вкладке «Текст/ОсновнДанные» (Рис.2)

Рис. 1 Переход к дополнительным данным ОЗМ

Рис. 2 Вкладка "Текст/ОсновнДанные" содержит длинные тексты ОЗМ

Видим, что поле «Текст к основным данным» («длинный текст материала») может содержать более 132 символов, а также может содержать символы переноса строк (Рис.2).

Посмотрим, как данный текст выглядит в редакторе текстов.

Для этого нажмем на кнопку «Редак.»  в экране, содержащем длинные тексты (Рис. 3).

Рис. 3 Кнопка перехода к просмотру длинного текста в редакторе текстов.

Видим, что «длинный» текст материалов состоит из строк, каждая из которых имеет длину 72 символа, и спецсимволов, которые находятся в начале каждой из строк (Рис.4). Эти спецсимволы называются «форматами» «format» (в английском варианте имеют название «tag»; термин «tag» нам пригодится при создании пакетной загрузки).

Рис. 4 «Длинный» текст ОЗМ, представленный в редакторе.

Вопрос: возможно ли загрузить такие«длинные» тексты (более 132 символов) через пакетный ввод стандартными средствами LSMW?

Ответ: да, возможно, если использовать при загрузке параллельно две структуры, т.е. два входных файла. Ниже в статье будет показано, как это сделать на примере метода DirectInput транзакции LSMW.

Прежде, чем приступать к созданию пакетной загрузки, нужно определить некоторые параметры длинных текстов, а именно ID, LANGUAGE, NAME, OBJECT.Это нам пригодится при указании параметров пакетного ввода.

В системе длинные тексты создаются и просматриваются с помощью двух функциональных модулей SAVE_TEXTи READ_TEXT. Поставим точку останова в функциональном модуле SAVE_TEXT и изменим длинный текст для материала Z00000000000000005.Нажмём на  кнопку «Сохранить». После перехода в режим отладки зададим имена нужных нам переменных, совершим несколько шагов выполнения программы с помощью нажатия клавиши F5и определим значения и смысл переменных ID, LANGUAGE, NAME, OBJECT при сохранении длинного текста материала (Рис.5).

Рис. 5 Определение значений и смысла переменных ID, LANGUAGE, NAME, OBJECTпри сохранении длинного текста материала

Делаем вывод: при создании/сохранении длинного текста основной записи материала параметр IDдолжен иметь значение GRUN (это значение является константой для текста основных данных ОЗМ), LANGUAGE – значение (язык, для которого создаётся текст; по умолчанию система ставит язык входа в систему), NAME– значение Z00000000000000005 (код материала, для которого создаётся длинный текст), OBJECT–значение MATERIAL (также для ОЗМ является константой).

Теперь можно приступать к созданию пакетной загрузки с помощью транзакции LSWM. Для этого запускаем транзакцию LSMW через поле для транзакции (поле команды) (Рис. 6)

Рис. 6 Запуск транзакции LSMW

На первом информационном экране нажимаем «зеленую галочку»

Рис. 7 Информационный приветствующий экран транзакции LSMW

Примечание: Интерфейс транзакции LSMWне переведен на русский язык в полной мере. Поэтому в данной статье элементы интерфейса будут называться так, как они показаны на экране (на английском или немецком языках); ноодновременно будут приводиться пояснения к этим элементам.

Прежде всего, нам необходимо создать и задать имена Project, Teilprojectи Object (проекта, подпроекта и объекта).

Задаём коды (чем короче – тем лучше) и нажимаем на кнопку «Создать» (Рис.8)

Рис. 8 Задаём коды проекта (Project), подпроекта (Teilproject) и объекта (Object) (значение выбираем сами)  и нажимаем кнопку "Создать"

Затем приводим описание на понятном языке  (Рис. 9) и нажимаем зеленую галочку

Рис. 9 После нажатия на кнопку "Создать"  - система потребует задать описание

После указания кодов и описания – нажимаем кнопку «Выполнить»

Рис. 10 Запускаем созданный объект для редактирования и использования

На следующем экране убеждаемся, что выбрана опция «Maintainobjectattributes» (указание атрибутов объекта) и нажимаем кнопку «Выполнить»(Рис.11)

Рис. 11 Выбираем опцию "Maintainobjectattributes" – указанием атрибутов объекта загрузки

Переходим в режим редактирования экрана, нажав на кнопку «Display<->Change» . Выбираем метод «Standart-Batch/Direct-Input»и указываем параметры Object: 0001 (Подробные тексты), остальные параметры должны подтянуться автоматически:

  • Methode: 0001 (No selection),
  • Programmname /SAPDMC/SAP_LSMW_IMPORT_TEXTS,
  • Programmtyp: D (Рис.12).

Рис. 12 Указываем атрибуты пакетного ввода: метод DirectInputчерез Object 0001 (Подробные тексты)

После заполнения экрана нажимаем кнопку «Сохранить» и назад (Рис.13)

Рис. 13 Сохраняем атрибуты и выходим к экрану списка этапов

На следующем экране убеждаемся, что выбранаопция «Maintainsourcestructures»(создание входных структур) и нажимаем кнопку «Выполнить»  (Рис.14).На следующем шагенами будет создано две связанные между собой структуры: одна будет содержать коды материалов, другая длинные тексты разбитые на части с указанием тэгов/форматов.

Рис. 14 Запускаем этап "Maintainsourcestructures" - определение входных структур

На открывшемся экране переходим в режим редактирования с помощью кнопки «Очки/Карандаш» (Рис. 15)

Рис. 15 Переход в режим изменения на этапе создания входных структур

ЗатемпереходимпопутименюSource Structures –> Create a Structure (Рис.16)

Рис. 16 Создание входной структуры для пакетного ввода

Задаём код структуры (чем короче – тем лучше, но не менее 3х символов) и описание данной структуры (описание должно быть содержательным) (Рис.17). После заполнения полей подтверждаем ввод с помощью нажатия на «зеленую галочку».

Рис. 17 Создание кода и описания входной структуры для пакетного ввода

Нам необходимо создать подчиненную структуру, которая будет служить источником тэгов и составных частей длинного текста материала. Для этого ставим курсор на только что созданную структуру и нажимаем на кнопку «Создать»

Рис. 18 Для создания подчиненной структуры: ставим курсор на вышестоящую структур и нажимаем кнопку "Создать"

На каком бы языке у Вас не вышло следующее окно – выбирайте в нем второй пункт, который обозначает, что создаваемая структура будет подчинена уже созданной структуре. Затем нажимаем кнопку «Зеленая галочка» (Рис.19).

Рис. 19 Выбираем пункт "untergerodnet" /LowerLevel / Подчиненная структура и нажимаем зеленую галочку.

Затем, как и ранее, задаем код структуры и описание; затем для подтверждения нажимаем кнопку «Зеленая галочка» . (Рис.20)

Рис. 20 Задаем имя и описание подчиненной структуры.

В результате, будем иметь связь между структурами, представленную на Рис.21.

Рис. 21 Созданная связь между структурами.

Убеждаемся, что связь такая, как мы того хотели. Если это так, то нажимаем кнопку «Сохранить»  и выходим в экран со списком этапов на кнопке «Назад»  (Рис.22).

Рис. 22 Сохраняем созданную связь и выходим в экран со списком этапов создания пакетного ввода

На следующем экране убеждаемся, что выбранаопция «Maintainsourcefields» (создание полей входных структур) и нажимаем кнопку «Выполнить» (Рис.23).

На этом шаге мы создадим поля для входных структур. В вышестоящей структуре ZLMMD1 (Коды материалов) у нас будут находиться только коды материалов, для которых мы будем создавать длинные тексты; а в структуре ZLMMD2 (Длинные тексты ОЗМ) будет содержаться три поля:

  • код материала (для связи с вышестоящей структурой), длина 18 символов;
  • тэг / формат, длина 2 символа;
  • составная часть длинного текста, максимальная длина 132 символа.

Рис. 23 Запускаем  этап "Maintainsourcefields" (ведение полей входных структур).

В открывшемся окне переходим в режим изменения с помощью нажатия на кнопку «Очки/Карандаш»и ставим курсор на структуру ZLMMD1 (Коды материалов) (Рис.24)

Рис. 24 Переходим в режим изменения и ставим курсор на структуру, для которой будем создавать поля

После перехода в режим изменения и установки курсора на нужную нам структуру переходим по меню Source Fields -> Table Maintenance (Рис. 25)

Рис. 25 Переходим к ведению полей структуры ZLMMD1.

На следующем экране мы укажем поля, содержащиеся в структуре. Подчеркиваю, на каком бы языке не открылся экран – порядок расположения полей всегда будет одним и тем же. В первом столбце указываем код поля, во втором – тип поля (в большинстве случае – C (латинская)), в третьем поле – максимальная длина для входного файла (нет смысла делать больше, чем в принимаемом системном поле), в четвертом столбце – описание поля на любом языке. (Рис.26)

После заполнения полей нажимаем последовательно кнопки «Сохранить»  и «Назад» 

Ограниченный доступ

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

На сайте проводятся технические работы, добавление комментариев недоступно до 24.06.2017. Приносим извинения за доставленные неудобства.
Комментарии:

Андрей Белобродский (Рейтинг: 1054) 12:43, 08 февраля 2013

Привет Олег, в этом случае я обычно стандартный Batch-input делаю, мне кажется так проще. В рекординге каждую строчку заполняю цифрами, затем гружу данные в формате MATNR TEXT1 TEXT2 TEXT3...
22:38, 09 февраля 2013

Александр Дублин (Рейтинг: 13408)

Андрей,
вот Вам и тема для следующей статьи :-)
09:42, 10 февраля 2013

Олег Башкатов (Рейтинг: 7631)

Согласен с Александром: нужна статья.
А потом сравним два подхода по следующим критериям:
 
1) простота: количество диалоговых форм, с которыми имеет дело консультант при создании той или иной загрузки, и количество кликов мышкой и нажатий клавиш с клавиатуры.
Чем меньше того и другого, тем подход проще.
 
2) возможность изменения пакетного ввода по загрузки текста основных данных к "длинным" сбытовым и закупочным текстам на языке, который в системе не ведется.
(например, для клиентов из Италии мы создадим длинный текст на итальянском языке, при этом в системе можно работать на английском и русском); а также трудозатратратность перехода на загрузку сбытовых и закупочных длинных текстов ОЗМ.
также оценивается по количеству кликов и нажатий на клавиатуре.
 
3) скорость осуществления загрузки на 1500 ОЗМ с длинным текстом 500 символом с различным форматированием на одном и той же системе с одинаковой загрузкой.
 
4) любые другие критерии, которые подчёркивают достоинства и недостатки того или иного подхода.
 
Итак, задача:
Имеется перечень ОЗМ, к которым требуется загрузить длинные тексты "Основные данные" к ОЗМ с различным форматированием посредством тэгов SAPscript (как это выглядит - у меня описано во второй части данной статьи).
 
А пока статьи нет, я утверждаю следующее:
1) загружать длинные тексты ОЗМ с помощью метода Batch-Input вместо DirectInput все равно, что использовать сковородку для забивание гвоздей вместо молотка.
2) твой комментарий не более, чем попытка бездоказательно "поумничать".
18:04, 11 февраля 2013

Олег Точенюк (Рейтинг: 9877)

Программка загрузки текстов, пишется минут за, ну скажем ниже приведенную программу с нуля написал за 30 минут. Модифицировать ее под разные языки, 5 минут времени. Для загрузки под разные объекты аналогично. Импорт программы в систему клиента тоже минут 5 (LSMW пожалуй по дольше будет создаваться). Скорость, ну вряд ли, что-то будет быстрее, хотя можете на своей системе проверить.
 
*&---------------------------------------------------*
*& Report  YTSH_SAVE_LONG_TEXT
*&
*&---------------------------------------------------*
*&
*&
*&---------------------------------------------------*
REPORT ytsh_save_long_text.
TABLES: rlgrap.
 
PARAMETERS: p_file LIKE rlgrap-filename DEFAULT 'C:\1.cvs'.
 
DATA: BEGIN OF lt_text OCCURS 1,
  matnr LIKE mara-matnr,
  tdformat LIKE tline-tdformat,
  tdline LIKE tline-tdline,
END OF lt_text.
 
PERFORM read_text.
PERFORM save_text.
 
*&---------------------------------------------------*
*&      Form  READ_TEXT
*&---------------------------------------------------*
*       Прочитать файл с даннами
*----------------------------------------------------*
*  <--  LT_TEXT - Данные загруженные для обработки
*----------------------------------------------------*
FORM read_text.
  DATA: l_filename TYPE string,
        l_filelength LIKE sy-tabix.
 
  l_filename = p_file.
  CALL METHOD cl_gui_frontend_services=>gui_upload
    EXPORTING
      filename                = l_filename
      filetype                = 'DAT'
    IMPORTING
      filelength              = l_filelength
    CHANGING
      data_tab                = lt_text[]
    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
      not_supported_by_gui    = 17
      error_no_gui            = 18
      OTHERS                  = 19.
  IF sy-subrc <> 0. MESSAGE 'Ошибка чтения файла с данными' TYPE 'I'. EXIT. ENDIF.
ENDFORM.                    " READ_TEXT
*&---------------------------------------------------*
*&      Form  SAVE_TEXT
*&---------------------------------------------------*
*       text
*----------------------------------------------------*
*  -->  LT_TEXT - Данные для обработки
*----------------------------------------------------*
FORM save_text.
  DATA: l_count LIKE sy-tabix,
        ls_header LIKE thead,
        lt_lines LIKE tline OCCURS 1 WITH HEADER LINE.
  SORT lt_text BY matnr.
  CLEAR: lt_lines[].
 
  LOOP AT lt_text.
    ON CHANGE OF lt_text-matnr.
      DESCRIBE TABLE lt_lines LINES l_count.
      IF l_count > 0.
        CALL FUNCTION 'SAVE_TEXT'
          EXPORTING
            header   = ls_header
            insert   = 'I'
          TABLES
            lines    = lt_lines
          EXCEPTIONS
            id       = 1
            language = 2
            name     = 3
            object   = 4
            OTHERS   = 5.
      ENDIF.
      ls_header-tdobject = 'MATERIAL'.
      ls_header-tdname = lt_text-matnr.
      ls_header-tdlinesize = '132'.
      ls_header-tdid = 'GRUN'.
      ls_header-tdspras = sy-langu.
 
      CLEAR: lt_lines[].
    ENDON.
    MOVE-CORRESPONDING lt_text TO lt_lines.
    APPEND lt_lines.
  ENDLOOP.
 
  DESCRIBE TABLE lt_lines LINES l_count.
  IF sy-subrc = 0.
    CALL FUNCTION 'SAVE_TEXT'
      EXPORTING
        header   = ls_header
      TABLES
        lines    = lt_lines
      EXCEPTIONS
        id       = 1
        language = 2
        name     = 3
        object   = 4
        OTHERS   = 5.
  ENDIF.
  CALL FUNCTION 'COMMIT_TEXT'
    IMPORTING
      commit_count = l_count.
  IF l_count > 0. COMMIT WORK. ENDIF.
ENDFORM.                    " SAVE_TEXT
19:19, 12 февраля 2013

Олег Башкатов (Рейтинг: 7631)

Олег Виталиевич, спасибо за комментарий!
 
Интервал "30 минут" Вы указали, чтобы не "сесть в галошу", как в прошлый раз?)))
(sapland.ru/articles/stats)
Огорчу: сели, но не так катастрофично. Поясню. Метод Direct Input не требует процедуры записи, а только сопоставление полей, поэтому занимает меньше времени, чем Batch-Input (время для которого я указал в своей прошлой статье). Поэтому создание данной загрузки я оцениваю в 20 минут.
 
Давайте сразу о Вашей программе:
1) бросается в глаза, что Вы загружаете файл из .cvs-файла, а не из .xls или .odf.
Вы не умеете делать загрузку данных из файлов .xls? Или в Вашей программе предусмотрен переход на .xls за 5 минут?
Если программу делать, то делать её удобной сразу.
 
2) пришлите пожалуйста файл загрузки в формате .cvs (именно cvs, а не csv).
я понимаю, что Вы состряпали программу на скорую руку, но можно было еще хотя бы раз запустить.
 
3) в Вашей программе отсутствует (я не заметил) процедура предварительного просмотра, что защищает от загрузки не того файла, защищает от ошибок в кодировках и, вообще, предварительный просмотр - это лучшая практика :-)))))).
Вы этого тоже не умеете делать, как консультант ABAP?)))
 
4) Ваша временные трудозатраты вообще говоря мне не кажутся реальными. Для системы-песочницы, возможно, это и так, но для того, чтобы она[программа] оказалась в продуктиве потребуется гораздо больше времени.
Процедура разработки обычно состоит из этапов (порядок может меняться, но этапы есть и их кто-то делает - скорее всего, не тот, кто загружает, но тем не менее затраты есть):
1) написание техн.задания;
2) согласование техн.задания;
3) разработка;
4) тестирование (создание протокола тестирования);
5) описание разработки;
6) перенос программы в продуктив;
7) корректировка и улучшение разработки.
+ возможно, инструкция.
 
В Ваши 30 минут, конечно же, вошло время на эту "бюрократию"? то есть приблизительно чуть более 2х минут на каждый пункт???!!!??? - очень и очень не реально.
 
Теперь об импорте программы - на мой взгляд проект LSWM импортируется быстрее, чем программа ABAP (особенно Direct Input). А объективно, если время импорта ABAP-программы из текстового файла и отличается от импорта LSMW, то речь идет о нескольких секундах - в целом, можно сказать, что как импорт программы так и проекта LSMW занимает не более минуты.
 
Оценим, простоту подходов:
 
текстовый редактор насчитал 3782 символа. то есть, как минимум, столько нужно нажать клавиш на клавиатуре, чтобы её создать - это без учета backspace; для создания загрузки через LSMW - думаю, около 700 (не считал) с учетом возможных ошибок.
Что касается диалоговых форм, то Ваша программа выигрывает: всего-то один диалог - SE80 и делов-то ))))).
Думаю (если не согласны - обоснуйте; моё обоснование - "количество нажатий") по простоте создания LSMW Direct Input выигрывает у Вашей программки даже при такой простой задаче как загрузка длинных текстов на языке системы.
 
Теперь подумаем немного шире.
Консультант, осуществивший любую загрузку методом Direct Input через LSMW, без труда перейдет к загрузке других данных.
Вопрос: за сколько Вы напишете программки для загрузки таких сущностей как: Подробные тексты, ОснЗаписи ОснСчетов, ОснЗаписи материалов, СпецификацМатериала, Сверхзапас LIFO, ОснЗаписиПоставщиков, ОснЗаписиКлиентов, Инфо-запись закупки, Запись условий, Заявка, Заказ на поставку, Торговые документы, Финансовые документы, и прочих.?
Таким образом, по критерию "переход к загрузке других данных", Ваша программа опять проигрывает; я бы даже сказал не Ваша программа, а Ваш подход.
 
Назовите и поясните, пожалуйста, хотя бы один критерий, где программа выигрывает. Только без "ну скажем" или "вот это был проектище", а желательно обосновано, если можете.
 
PS.
я поддерживаю такой подход, который удобен исполнителю (какой бы он ни был) - если Вам так удобно, то на здоровье!!!
18:25, 13 февраля 2013

Олег Точенюк (Рейтинг: 9877)

Да не за что.. так сказать, но как-то вы не ровно в мою сторону дышите, с чего бы это? Вот если бы это был Александр Поляков или кто там за него пишет колонку, это я еще могу как-то понять, у меня похоже идеологически разные подходы к чтению святого писания.
 

Про калошу я не понял если честно, так как писать в доказательство своих слов какие-то программки, не очень нужные мне или кому-то рядом, особо не хочется. В данный момент, как-то совпало поэтому набросал небольшой пример, заодно и время посмотрел, да в районе 30 минут, при среднем уровне знаний абапа. Вот вы там про 20 минут рассказали, вы знаете верю, только вот забыли одну мелочь, повторный импорт готового текста программы в любую систему займет минуту две, т.е. берем SE38 создаем новую программку далее Cntrl+A + Cntl+C -> Cntr+V и через минуту имеем готовую программу, протестированную ранее и полностью рабочую, хотя вы можете по этому поводу поспорить дальше.
 
1. Вы знаете действительно переход на чтение *.xls файла у меня займет минут 10, правда смысла не очень много вижу в этих действиях, хотя наверное вам операция "Сохранить как..." в экселе не ведома, поэтому и возникли данные проблемы, ну самоучитель экселя за 24 часа в руки и читаем, читаем, читаем.
 
2. Да в принципе все равно какое расширение у файла, знаете ли присвоение расширения xls не сделает файл книгой экселя, так что там все равно что в хвосте файла написано, программы знаете ли формат файла не по расширению определяют, уже лет 20 как не встречал таких программ. Хотя верю что есть еще уникальные люди, которые считают, что расширения определяет содержимое. Так что мне надо просто файл внутри которого разделитель табуляция, а как уж вы назовете эту лодку, программе все равно. Да кстати программку я запустил, результат посмотрел - работает. У меня как-то нет предвзятого отношения к расширениям файла. И кстати программы я пишу, а стряпают это где-то в другом месте.
 
3. Да читали плавали, знаем, мало того лучшие практики видели, но этой программке как-то фиолетово, так как загрузили не правильно, не страшно, запускаете второй раз с правильным файлом и все будет исправлено, но вы я так понимаю не очень представляете как работает SAVE_TEXT поэтому открою страшную тайну, он по умолчанию перегружает информацию по ключу текста. Кстати, предварительный просмотр это еще 10 минут, для простоты работы, SAP потрудился и сделал неплохой класс CL_SALV_TABLE, который позволяет вывести внутреннюю таблицу в течении 1 минуты. Меня это не затруднит сделать, если у клиента будет такая необходимость, хотя я в прошлый раз не понял на фига склады по 100 раз перегружать, так и с текстами тоже не понял, о каком постоянном использовании данной программы идет речь. Хотя опять же верю, варианты бывают разные и не все по нужде.
 
4. Как говорит народная мудрость, когда кажется - крестятся. Я вот вам почему-то верю, а вы мне постоянно нет. Все про ошибки кодирования, да какие-то песочницы рассказываете, про которые я по вашему мнению почему-то не знаю. А то типа LSMW вы сразу на боевой системе делаете, файл без всяких согласований с клиентом грузите, а потом что получилось, то получилось, главное в 20 минут успеваете как я понимаю решить все бюрократические процедуры, хотя по идее согласование формата файла с клиентом у нас должно быть по времени одинаковым.
 
Что касается ошибок кодирования, вот у меня так с абапом не выходит, там знаете ли сначала в разработке пишем, потом в тесте проверяем, потом уже продуктив, так что про ошибки кодирования это вы своей барышне расскажите за чашкой кофе, когда про ABAP-разработку в SAP ERP будете рассказывать. Да время привел без учета транспорта в продуктив, так что накиньте еще 30 секунд на STMS для продуктива.
 
Да кстати, у меня инструкция наверное займет все таки времени по меньше, чем ваша на LSMW? Нет? Ну хорошо, займет столько же, хотя экранов у меня, там будет максимум два, первый ввод файла, второй так уж и быть добавлю еще 3 строчки результата обработки данных, после загрузки итого накинем еще 5 минут к общему времени разработки.
 

Ой, а дальше давайте с вами поговорим про ваш взгляд - вот когда вы принесете мне справочку из лаборатории метрологии, где будет записано что ваш взгляд является точным прибором определяющим время работы программ на ABAP + имеющим погрешность измерения вашего взгляда, вот тогда будете рассказывать мне и остальным сказки о том что LSMW быстрее читает файл с рабочей станции, а особенно "на поржать" импортирует его в систему, как вы выразились используя Direct Input. Кстати, вы там в начале про какие-то калоши упоминали, так вот как раз сейчас речь и пойдет про эти самые калоши. Вы когда метод Direct Input выбирали на экране LSMW я так понимаю не очень поняли что оно вам там показывало, а показывало оно вам, что использоваться будет программа /SAPDMC/SAP_LSMW_IMPORT_TEXTS которая собственно говоря и проведет обновление данных длинных текстов, опять же, для вас это наверное будет открытие, но она это делает используя функцию SAVE_TEXT. А поэтому говорить, что какой-то Direct Input быстрее работает, чем приведенная мной ABAP-программа, которая тоже вы знаете пишет тексты той же функцией?! В общем возьмите свой глазок и повесьте его где-нибудь в дальнем углу и больше не используйте, а тем более не ссылайтесь на данный измерительный прибор.
 

Ну и на десерт как вы говорите оценим, опять же похоже на ваш глазок (хотя после выше приведенного примера, это уже звучит как-то странно), простоту подхода, как вы говорите. В качестве критерия вы почему-то решили использовать количество нажатий клавиш и насчитали у себя ну пусть 700, у меня вы там насчитали один диалог SE80, не угадали, эту ерунду можно и просто в SE38 набрать, а далее вы посчитали что в редакторе я нажал и ввел минимум 3782 символа. Как любят писать в интернете, "афтар пиши исчо", потому что для ввода функции загрузки файла мне нужно было сделать 5 кликов мышью + 24 нажатия на клавиатуре, по факту так как класс известный, то из 24 нажатий хватило 4 букв и два раза стрелку вниз... итого 6 мышью и 6 нажатий на клавиатуре. Так что там пропорция явно не 1 к 3, поэтому ваши 700 нажатий пусть стоят и нервно курят в стороне, потому что конечно транзакции разработки SAP-а это не верх удобства, но все таки, на данном этапе, это неплохой редактор кода, упрощающий ввод текстов за счет шаблонов и контекстных подсказок. Поэтому веселите народ в другом месте, например можно зайти к коллегам из 1С и рассказать там про ужасы разработки в SAP, по крайней мере там вам больше поверят.
 

И на остаток про широту. Минут 15 и эту программу без проблем можно модифицировать для загрузки любых текстов, для любых объектов системы, так как работа с текстами она унифицирована. Поэтому про широту тоже наверное бесполезно, это я вам верю, а вы мне почему-то нет.
 

А теперь про долготу. Пару лет назад как раз был пример LSMW или программа. Очень рекомендую попытаться загрузить используя LSMW, например остатки по карточкам ОС, при нескольких областях оценки и суммах проводок в текущем году, по разным же областям, там пару месяцев перманентно пытались это сделать, пока уже не прижало и за субботу была написано программа.. Но для вас то это тоже наверное не аргумент, скажете что там просто LSMW не знали, на что ответить вам не смогу, так как я LSMW точно не знаю, а поэтому оценивать знания по тому, что не знаю сам не умею, у вас зато это получается замечательно.
 

PS: А вообще, не обижайте абаперов, потому что абапер-профессионал, практически всегда, знает как работает функциональность под которую он пишет, в отличии от бизнес консультанта по модулю, который чаще только думает, что знает как же оно на самом деле работает.
21:14, 13 февраля 2013

Олег Башкатов (Рейтинг: 7631)

Про Excel, Олег Виталиевич, Вы меня очень обидели. В своё время я концы с концами сводил благодаря написанию форм и программ с помощью Excel/VBA. Более того, даже для военных целей разрабатывал программы (это были военные образовательные цели).
И, обидели, как всегда, в противоречии с фактами:
1) посмотрите рисунок 49 моей первой статьи про Batch-Input LSMW (sapland.ru/articles/stats)
2) и рисунки 60-63 этой статьи.
 
Поэтому я доказательно утверждаю: у Вас в комментарии ложь.
 
Остальную часть комментария трогать не буду ибо есть поговорка: не тронь ...., ...ть не будет.
 
Жаль, что Вы его сделали под моей статьёй :-(
 
Но еще больше меня возмущает факт того, что Вы бросаете тень на автора колонки, который не является участником нашего диалога. Если бы Вы это делали под своей статьёй - опять же на здоровье Вам.
 
Но под статьёй, автором которой являюсь я, этого быть не должно - я её писал для других целей.
 
а к слову сказать: сколько колонок написали Вы за более чем 2ух летний опыт пребывания на портале, что Вы бросаете тень на авторство других колонок?
 
Поэтому диалог я с Вами продолжу при наличии, как минимум, одного из двух обстоятельств, а лучше двух сразу:
 
1) Вы ответом на Ваш же комментарий попросите извинения перед автором колонок, на которого Вы бросили тень; и этот автор примет эти извинения.
 
2) Администрация sapland.ru удалит эту Вашу часть комментария, или перенесет комментарий куда-нибудь на Вашу статью: главное, чтобы не было под моей.
 
А чтобы Вы нос, Олег Виталиевич, высоко свой не задирали скажу Вам следующее:
1) это Вы комментируете мою статью; и необходимость в нем [комменте] равна необходимости пингвинов в iPod.
2) на ABAP умеете писать не только Вы (наверное, для Вас открытие).
Каждый уважающий себя консультант использует отладчик, расширения, пишет отчёты; и знает, как работает функционал. Конечно, функциональный консультант не так умело обращается с ABAP-кодом как тот, который только и делает, что пишет код на ABAP.
Часты случаи когда из консультантов по функциональным модулям переходят в консультанты ABAP и, наоборот. И такие сотрудники весьма эффективны, т.к. смотрят неоднобоко.
 

Специально для Вас резюме (а то неправильно поймете): в Вашем комменте значительно нечистот, чтобы закончить с Вами диалог.
23:13, 13 февраля 2013

Олег Точенюк (Рейтинг: 9877)

Извините, но я очень буду просить администрация SAP-Land ни в коем случае не удалять комментарии, как говорится чтобы дурь каждого видна была.
 
1. Посмотрел, рад... очень рад, что с экселями у вас все хорошо, поэтому не понял почему проблема чтения именно из файла xls в моей программе или точнее его предварительная конвертация у вас вызвала затруднения :-).
 
2. Я думаю без посредников разберусь с другими участниками колонок.
 
3. Я вашу статью не комментировал, я предложил альтернативу, которую вы назвали "стряпней", так что извини, не надо было начинать хамить дружок.
 
4. Да вы что, я на АBAP, никогда я и SAP то вижу по праздникам, когда начальство домой уходит, а меня на прогулку выпускают. А уж функционал, это да... завод и склады грузить через LSMW ни разу не пришлось и даже не виделось в страшном сне, но благодаря вам понял, все в этой жизни бывает в первые, так что и вас тоже вылечат.
00:25, 14 февраля 2013

Олег Башкатов (Рейтинг: 7631)

ABAP-стряпня, склады, и прочее - это одно.
 
Доказательность речи - это другое. Здесь ABAP не поможет; здесь я бы позвал на помощь CO и/или MM/SD.
Консультанты этих модулей отличаются логичностью и последовательностью :-)
 
и, Олег Виталиевич, я Вам не дружок, и дурь присутствует только Ваша.
 
1) у меня не проблема возникла; у меня возникла идея по её совершенствованию. и изумление, как такой опытный консультант, сразу не сделал так.
 
2) я только за: чтобы Вы без посредников разбирались с другими участниками колонок - не в рамках моих статей. (снова зовём CO и MM/SD). Так Вы же тут пишите.
 
3) И еще раз позовём CO-шника: то, что Вы пишите под статьёй - это комментарий. То есть, даже если Вы туда выложите приглашение на работу или резюме - то это будет комментарий, содержащий приглашение на работу или резюме. В Вашем случае комментарий содержал прогу, но это был комментарий.
 
4) сочувствую Вам.
даже "троллинг" 70х годов.
 
Следите за статьями - скоро речь пойдёт про использование ABAP-кода в процессе загрузки LSMW.
 
Олег Виталиевич, у меня вопрос: почему у Вас отчество Виталиевич, а не Витальевич?
Этот вопрос направлен исключительно на то, чтобы прояснить ситуацию с обращением и не допускать ненужных ошибок.

Любое воспроизведение запрещено.
Копирайт © «Издательство ООО «Эксперт РП»