sap r3 версия для обучения
Изучение SAP R/3 в нетипичных и затруднительных условиях
Доброго времени суток, Хабра-сообщество.
Я начинающий SAP-консультант модуля PM и хотел бы поделиться опытом (а если статья пройдет песочницу, то и набраться в ходе обсуждения в комментариях) изучения ERP-системы SAP R/3. Моя проблема заключалась в том, что придя в компанию и, попав на испытательный срок, я не получил никакой прикладной задачи. У меня было время на ознакомление с системой, набор курсов и человек, которого изредка можно было помучить вопросами. Все это, конечно, замечательно, но это было равносильно учебе играть в футбол по книжке. Даже мяч дали. Но не с кем.
Кому интересно как научиться играть в футбол в одиночку — прошу пожаловать под кат.
В ходе первого месяца моей работы мне сказали, что меня записали на конференцию молодых специалистов, на которой я должен предоставить проект. Мне дали тему, сказали «копай отсюда и до обеда». Тема была «Приоритетность ремонта оборудования, управление рисками». Два месяца я упорно штудировал литературу, разглядывал презентации, разрабатывал алгоритмы анализа и прогнозирования состояния оборудования, оценивал риски и генерировал матрицы, составлял приоритетность ремонтов и т.д. В общем, я занимался чем угодно, но только не SAP R/3. Пришло время конференции, результат не оправдал ожидания в силу некоторых причин, но я не особо расстроился.
Конференция – это, конечно, замечательно, но понял, что за 3 месяца работы я практически не продвинулся в знании SAP R/3. Нет, я знал, как работают все основные компоненты, некоторые их свойства и настройки (я говорю некоторые, ибо их там тьма-тьмущая, особенно настроек), но этого было крайне мало. Преимущественно это были теоретические знания. Я решил, что пора что-то менять. Практической задачи на горизонте не планировалось и надо дело брать в свои руки. Я давно занимаюсь программированием и решил, что пойду я по той же схеме: поставлю себе простенькую задачку и решу ее. А не тут-то было. Если изучая программирование, можно начать с написания калькулятора, функционал которого все себе прекрасно представляют, то тут я себе весьма слабо представлял возможности функционала подшефного мне модуля.
И тут я подался в странствия по просторам интернета в поисках методики изучения. Бродил я по форумам (преимущественно это sapboard.ru); читал всю литературу, которую только мог достать; активно общался со специалистами, до которых мог дотянуться. Все утыкалось в постановку задачи. И в очередной хмурый зимний день меня осенило. Форум – кладезь нерешенных кем-то задач. Начал я с малого: конфигурация объекта. При смене значения признака изменялась спецификация объекта. Вроде ничего сложного, но и нет так просто, как казалось бы (повторюсь, что сложность заключается в обилии настроек). Потратив на это несколько дней, в итоге получив желаемый результат, я начал лопатить все задачи с топиков, которые только видел. Тут стоит понимать и учитывать нюанс: задача может быть довольно узкой и выполняться в рамках реализованного проекта, который у меня, само собой, не реализован (кто-бы его реализовывал) и поэтому можно упереться в стену. В конечном итоге, мое обучение пошло в гору. В процессе я наткнулся на сборник ТЗ, где были как простенькие задачи (ради закрепления и систематизации знаний я реализовал и их), так и довольно сложные, которые не решить с помощью стандартного функционала. На данный момент я продолжаю «решать» этот сборник и, я вам скажу, прогресс на лицо.
Подведем итог: если вы столкнулись с проблемой, схожей с моей, ваш выход – чужие задачи. Желательно, чтобы они были составлены еще по-человечески, иначе есть шанс серьезно запутаться и, блуждая во тьме, вы просто потеряете время. Также, если на манданте продуктива присутствуют реализации специфических задач, советую обратить на них внимание и, по возможности, пытаться их реализовать на манданте разработки.
Как разрабатывали SAP R/3 для нашей компании
Недавно стал работать в R/3. Безусловно, мощная и полезная программа. Но ее юзабилити осталось в прошлом веке. Я как программист догадываюсь, как разрабатывали SAP R/3 для нашей компании.
— А давай назовем простые понятные людям объекты случайными кодами. Нет, тайный смысл в кодах, конечно, будет, но только для посвященных. Пусть люди говорят как машины.
— Не, это не достаточно абсурдно, давай еще наречем привычные вещи необычными именами. Пусть люди развивают кругозор. Ну, типа там «мандант», «фаворит». И вообще, побольше ретро.
— А давай сделаем элементы управления настолько необычными, чтобы никто не догадался, что, например, часть панели – это кнопка, а вот этот квадратик – это ссылка.
— А давай выведем все, какие только можно, кнопочки и поля на один экран, чтобы на анализ формы пользователь потратил весь свой мозг.
— Дело говоришь, только давай половину из них сделаем неработающими, но чтобы это было не очевидно, а другая половина будет выдавать ошибки, которые без обращения к программисту не поймешь.
— Класс! Только давай еще сократим в текстах ошибок все слова, чтобы юзер прочувствовал свою неполноценность.
— Да, только это не достаточно унизительно, давай запутаем логику управления формами, чтобы люди поняли, что работают в очень сложной и мощной программе и их IQ ну никак не дотягивает.
— Я тут нашел кучку дурацких иконок, давай их поналепим как получится.
— А для продвинутых сделаем нелепые комбинации горячих клавиш, пусть не выделываются.
— А еще давай сделаем реакцию элементов формы непредсказуемой. А то все привыкли, что во всяких андроидах да айфонах интуитивно понятные поля и кнопки – это скучно. У нас все будет похоже на квест. Пока не угадаешь, куда и чем тыкнуть, на следующий уровень не пройдешь.
— А чтобы улучшить интеграцию, давай внедрим беспроводную передачу данных. Пусть выписывают на клочок бумажки свои коды и вставляют их в другую форму.
— Ну, еще надо сделать, чтобы все поняли, что нормальные принтеры тоже неполноценны, раз не могут распечатать из программы.
— Ага, а те, которые все-таки смогут, будут печатать в стиле стимпанк, как на печатной машинке моей бабушки.
— Ну, еще можно так приколоться – переведем на русский название статей справки, а сами статьи оставим на английском. Тупым справка, все-равно, не нужна.
— Теперь остается только написать пошаговые инструкции с картинками для умственно отсталых – теперь это единственный возможный способ работы в программе.
История создания и назначение
Аббревиатура SAP (Systems Analysis and Program Development) расшифровывается как «системный анализ и разработка программного обеспечения». Организовали компанию пятеро сотрудников гиганта IT-индустрии IBM. Идея создания проекта возникла из анализа спроса клиентов, приходящих в фирму за различными услугами.
Пять аналитиков поставили перед собой цель — написать приложение, выполняющее обработку данных в реальном времени. Софт должен был объединить различные бизнес-процессы, ведение финансового и бухгалтерского учёта.
В 1973 году ими была представлена первая версия приложения. Она включала системы управления материалами, закупками, запасами, а также умела формировать выписку счетов-фактур. Через четыре года компания становится корпорацией закрытого типа и получает название SAP. Доходы организации на тот момент составляют порядка 4 млн немецких марок, а штат расширяется до 25 человек.
Клиентами компании становятся иностранные предприятия. Продукция SAP входит в ТОП-100 лучших продуктов Германии. В приложение добавляются модули «Управление персоналом» и «Обслуживание и ремонт». К концу 1982 года услугами продукции пользуется уже более 236 компаний.
Программисты фирмы создают новый продукт «Управление предприятием». Система начинает быть востребованной не только на Европейских рынках, но и в Южной Африке, Канаде, США. В Голландии, Франции, Испании и Англии открываются четыре филиала. Штат к 1988 году уже составляет 750 работников, прибыль компании возрастает до 245 миллионов. Фирма становится публичным акционерским обществом и вскоре уже включает 2 дочерних филиалов.
К 1995 году количество пользователей уже достигло 2 тысяч человек, а разработчики представили новую версию под номером SAP R3. Это приложение сделало разработчиков миллиардерами. Сегодняшними конкурентами приложения являются: 1С, Axapta, Oracle. Несмотря на них, с каждым годом число пользователей SAP только увеличивается.
Особенности приложения
Система SAP ориентирована на средние и крупные предприятия. Она предоставляет руководству важную информацию, связанную с деятельностью компании в реальном времени. Образуя единое информационное пространство, программное обеспечение заменяет ручные задачи автоматизированными процессами.
Внедрив на предприятие SAP, можно не только проще управлять своим бизнесом, но и эффективно контролировать расходы, расширить возможности сотрудников, организовать их самообучение, улучшить продажи, обслуживание и маркетинг. Наблюдая за происходящими процессами в онлайн-режиме и анализируя их, можно предусмотреть будущие результаты, оптимизировать операции.
С помощью SAP можно вести:
Пользователями SAP могут быть сотрудники разного звена. Но структура программы и интерфейс сложен. Поэтому перед тем как работник приступит к ведению складского учёта или начнёт составлять график выдачи зарплат, ему необходимо пройти курс обучения.
К преимуществам софта относится гибкость настройки данных. В программе можно установить язык, валюту, определённые условия, соответствующие правовой базе страны. Существует возможность синхронизировать приложение с другим программным обеспечением. При этом одновременно в системе могут работать более 5 тыс. пользователей. Особенностью является и самообучаемость SAP. Анализируя опыт других компаний, она позволяет эффективнее использовать инновации.
Из недостатков выделяется довольно высокая стоимость пакета и сложный программный код, требующий обучать работников и нанимать на работу обслуживающий персонал с навыками программирования. Локализация на русском выполнена плохо, что порой приводит к затруднениям при работе.
На официальном портале есть информация, касающаяся продуктов фирмы, и контакты. Также там можно найти комьюнити и поддержку.
Популярные пакеты
Продуктовая линейка приложения специализируется на решениях управления бизнесом. Ведущим пакетом является mySAP Business Suite. Он обеспечивает интеграцию информационных данных и процессов в единую платформу. Система разработана на технологической платформе NetWeaver. Это семейство включает в себя решения по управлению ресурсами, взаимоотношению с клиентами и поставщиками, логистической сетью и жизненным циклом продукции.
С помощью системы можно автоматизировать ряд операций. Например, поступивший заказ закрепляется за ответственным лицом, обеспечивающим его выполнение. После обработки сотрудником документ отправляется оператору следующего звена, который дополняет его необходимыми данными. Сотрудники не беспокоятся о своевременности передачи документов или необходимости поиска нужных специалистов.
Весь процесс документооборота по поставкам, снабжению, товародвижению на предприятии происходит автоматически. Цикл может охватывать весь процесс, начиная от закупки сырья до продаж и гарантийного сопровождения готовой продукции. Приложение развивается с учётом актуальных требований и возрастающих темпов производства.
В 2011 году был разработан продукт HANA, являющийся высокопроизводительной системой управления базы данных. Приложение может самостоятельно размещать всю базу в оперативной памяти без использования дискового пространства. На её базе создаются и бизнес-приложения. C помощью SAP HANA можно повысить производительность различных процессов. Например, посредством него возможно закрытие финансового периода, анализ доступа, планирование материалов и контроль их перемещения. Лучше всего проект подходит для работы с данными, имеющими высокую ценность.
Компания имеет широкую сеть партнёров. В России их уже больше десяти. У организации есть опыт сотрудничества с «Эльдорадо», «Сургутнефтегаз», «Российскими железными дорогами».
SAP включает следующие пакеты:
Инструкция пользователя
Программа SAP довольно сложная и требует компьютерных знаний на уровне уверенного пользователя. Состоит она из трёх частей: функциональных модулей, базы данных и графического интерфейса. Как правило, модули располагаются на серверах, способных быстро обработать информационный поток, провести расшифровку данных и представить их пользователю в удобном виде.
Главной частью приложения является окно. Для начинающих пользователей существует возможность организации доступа через веб-браузер. Окно содержит различные поля, в которые вносится информация. Существует много расширений, предназначенные для интеграции в систему. Предприятие покупает интересующие модули, а программист связывает их с клиентскими базами.
Любая операция в системе называется транзакцией. Пользователю для успешной работы необходимо выполнить четыре шага:
Верхнее меню называется строкой и содержит три компонента: заголовок, пиктограмму, кнопки управления. Пользовательский интерфейс SAP GUI формирует односистемную среду. Клиент, работающий в ней, регистрируется в одной из предложенных инфраструктур (landscape).
Если возникает необходимость параллельной работы, то открывается дополнительное окно. В результате пространство загромождается, и даже опытный пользователь может растеряться. Поэтому удобнее через пиктограмму запускать сервис «Логон», позволяющий сразу организовать необходимые соединения по установленным заранее параметрам.
Существуют также дополнения к программному обеспечению. Выпускает их лаборатория SAP. Устанавливаются они совместно с основным пакетом. Востребованным является дополнение Open PS, позволяющее получить доступ к SAP даже с компьютера без установленного основного модуля. Популярно также приложение Intranet, используемое для создания аккаунта и настройки персонального интерфейса.
Удобное онлайн-обучение
Программа САП требует знаний и практического опыта. Разработчик через своих партнёров предлагает эффективное изучение работы системы без посещения офисов и затрат на дорогу. Обучение может быть бесплатным, но чаще средняя цена курса составляет порядка 30 тыс. рублей. Лекции включают: вебинары, демонстрации слайдов, предоставление доступа к практическим работам.
Онлайн-обучение предпочтительней, чем изучение системы по самоучителю. Для подачи заявки необходимо посетить сайт-партнёр и зарегистрироваться. Популярными местами, где можно пройти обучение, являются:
По окончании обучения выдаётся сертификат. В нём указывается количество часов, тип лекций и описание курса. Свидетельство распечатывается на фирменном бланке с логотипом SAP.
Консультации специалиста
При знакомстве с системой пользователь теряется в интерфейсе. Разобраться самостоятельно очень сложно. Поэтому компания выпускает специалистов по внедрению информационных систем.
Работа консультанта SAP состоит в определении услуг, которые может предложить немецкая компания предприятию, а также в оценке ее технических возможностей и уровня подготовки персонала. Все консультанты проходят трудный путь, начиная с позиции стажера. Чтобы им стать, необходимо пройти полный курс обучения на базе центра SAP. Немаловажным в работе специалиста является умение общения с людьми. Он должен уметь превращать желания и цели клиента в конкретные задачи. Чтобы стать консультантом, желательно знать ABAP/4 — язык, на котором написан программный код SAP.
Кроме того, компания является владельцем SAP Labs. Это лаборатория, создающая основные продукты и занимающаяся их усовершенствованием. В ней координируются бизнес-идеи, разрабатывается инновационная стратегия развития. Лаборатория не работает напрямую с клиентами, но непосредственно влияет на функциональность продукта.
SAP ERP / ABAP полезные ресурсы
Честно говоря, эту статью я пишу даже больше для себя — чтобы как то систематизировать информацию по внутреннему языку программирования ABAP/4 системы SAP R/3 в одном месте. Тем не менее, я буду очень рад, если кому то ещё она окажется полезной и сэкономит время. Сразу оговорюсь, что статья ориентирована на новичков, которые только начинают изучать ABAP/4 (коим, в некоторой мере, я и сам являюсь).
Меня сразу заинтересовали «/4» и «/3» в названиях продукта и языка программирования (далее ЯП) для него. Однако, всё весьма банально. Согласно википедии, буква R из R/3 является начальной буквой слова «Realtime» и означает немедленную проводку и актуализацию данных, которые в рамках интеграции немедленно доступны всем заинтересованным отделам предприятия. Цифра 3 означает, что в системе реализована архитектура клиент/сервер приложений/система управления базами данных (трёхзвенная модель), в отличие от R/2, которая работала на мейнфреймах. А название ABAP расшифровывается как Advanced Business Application Programming, а цифра «4» символизирует отношение к четвёртому поколению ЯП. Язык был создан в 1980 году для работы с системой SAP R/2, позднее унаследован в SAP R/3. С более подробной информацией все желающие могут ознакомиться непосредственно на вики.
Чуть более подробную информацию в сравнении с вики можно найти здесь. Кроме того, на этом же сайте можно найти книгу, с которой я бы рекомендовал начать изучение материала. Несмотря на то, что выпущена она 17(!) лет назад, большая часть информации в ней остаётся актуальной. Кроме того, существенный ее плюс в том, что это одна из немногих книг по сабжу, переведённая на русский язык. Конечно, тот факт, что ЯП почти не претерпел изменений за такой промежуток времени и при этом остаётся актуальным по сей день вызвал немалое удивление (во всяком случае у меня), но, по крайней мере, чувствуется его «фундаментальность». Тем не менее, существует перечень функциональных модулей (ФМ) в системе, которые считаются устаревшими. Ознакомится можно здесь.
Собственно, моя карьера сложилась так, что внезапно пришлось переквалифицироваться из программиста C# в «абаперы». Во многом это случилось из-за кризиса (с моей прежней должности меня сократили), но, как ни странно, оказалась востребованной разработка для SAP. Для провинциального города, где я живу, большинство заводов и 1С считают роскошью, а тут SAP… Впрочем, довольно лирики.
Вообще, обычно рекомендуют начинать изучение с курсов ВС400, ВС401, ВС402 и т.д.
При должном упорстве можно их нагуглить (причём в русском исполнении). Если же устраивает и английский (на самом деле так даже лучше — всё же переводчики частенько играют роль «сломанного телефона»), то здесь есть большой перечень разных курсов; все можно скачать по прямым ссылкам. Тем не менее, лично для себя, больше пользы я почувствовал от ранее упомянутой мной книги за авторством Кречмера и Вейса.
Также к полезным для начинающих я бы отнёс этот ресурс. Здесь автор последовательно шаг за шагом обучает работе в системе (по его словам это необходимый минимум для Junior ABAP programmer-а). Последняя статья там была написана 7 июня 2015 года и как раз про alv. Поначалу очень полезно, но, конечно, хотелось бы, чтобы сайт не «забросили». Кстати, некоторые, указанные мной ссылки есть и в похожей теме, а также базовая информация по синтаксису языка.
Небольшие понятные примеры можно найти здесь (правда, их не так уж много, но зато аккуратно оформлено): abapmaster.com.
Хочу сразу заметить, что методом вывода информации на экран с помощью ключевого слова WRITE сейчас стараются не пользоваться — его практически полностью вытесняют т.н. ALV-отчёты.
Официальная справка по ALV.
Кстати, здесь можно увидеть перечень всех ключевых слов, используемых в ЯП АВАР/4. А здесь всё то же самое, только с краткими примерами, но не так удобно для просмотра. Вообще, по alv есть достаточно много информации (я начинал отсюда) и большую часть времени разработчик будет иметь дело именно с этим. У пользователей всегда есть желания типа «А можно мне вот такой z-отчётик, чтобы как в ххх транзакции, только попроще и с другими таблицами?»
(Примечание: В SAP R/3 все программы, таблицы и прочее, созданное пользователями, должно начинаться с букв y или z).
Много примеров с исходниками можно взять отсюда. На этом ресурсе предлагают выучить всё за 21 день… Весьма оптимистично, но статьи и правда неплохие. Всё на английском.
Вот тут и тут блоги АВАР-разработчиков; можно найти некоторые полезные советы.
Кстати, тем, кто не хочет долго разбираться во всех этих делах есть особая волшебная ссылка. Тем, кто настроен крайне серьёзно и решительно, заходить по ней не обязательно. Много плюшек для начинающих разработчиков здесь, ну и вообще по сайту полезные вещи есть — скрытие исходников, проверка исходников на «хардкод» и проч.
Далее идут уже большие сайты — не только для новичков, но и для матёрых «саперов». Про ABAP в общем и про ALV в частности. Немного про BADI и WebDyn технологии написано здесь (английский). Тут тоже нашёл полезные вещи, но ресурс англоязычный.
Отсюда я очень много взял примеров (в частности, маленькие хитрости по работе с транзакциями). Отзывчивый форум. Хорошие ресурсы на русском языке.
Официальная справка по АВАР. Желающие проверить себя или подготовиться к сертификации, могут скачать приложение или ознакомиться с книгой. Здесь случайные вопросы с относительно подробными ответами.
Примеры сертификационных вопросов:
1. If a table does not have MANDT as part of the primary key, it is ____.
A: A structure
B: Invalid
C: Client-independent
D: Not mandatory
2. In regard to CALL, which of the following is NOT a valid statement?
A: CALL FUNCTION
B: CALL SCREEN
C: CALL TRANSACTION
D: CALL PROGRAM
3. Name the type of ABAP Dictionary table that has these characteristics:
Same number of fields as the database table
Same name as database table
Maps 1:1 to database table
A: Pooled
B: Cluster
C: Transparent
D: View
4. An event starts with an event keyword and ends with:
A: Program execution.
B: END-OF-EVENT.
C: Another event keyword.
D: END-EVENT.
5. What is the system field for the current date?
A: SY-DATUM
B: SY-DATE
C: SY-DATID
D: SY-SDATE
6. The following code indicates:
SELECT fld1 fld2 FROM tab1 APPENDING TABLE itab
WHERE fld1 IN sfld1.
A: Add rows to the existing rows of itab.
B: Add rows to itab after first deleting any existing rows of itab.
C: Select rows from tab1 for matching itab entries.
D: Nothing, this is a syntax error.
7. You may change the following data object as shown below so that it equals 3.14.
CONSTANTS: PI type P decimals 2 value ‘3.1’.
PI = ‘3.14’.
8. The SAP service that ensures data integrity by handling locking is called:
A: Update
B: Dialog
C: Enqueue/Dequeue
D: Spool
9. Which of these sentences most accurately describes the GET VBAK LATE. event?
A: This event is processed before the second time the GET VBAK event is processed.
B: This event is processed after all occurrences of the GET VBAK event are completed.
C: This event will only be processed after the user has selected a basic list row.
D: This event is only processed if no records are selected from table VBAK.
10. Which of the following is not a true statement in regard to a hashed internal table type?
A: Its key must always be UNIQUE.
B: May only be accessed by its key.
C: Response time for accessing a row depends on the number of entries in the table.
D: Declared using internal table type HASHED TABLE.
11. TO include database-specific SQL statements within an ABAP program, code them between:
A: NATIVE SQL_ENDNATIVE.
B: DB SQL_ENDDB.
C: SELECT_ENDSELECT.
D: EXEC SQL_ENDEXEC.
12. To measure how long a block of code runs, use the ABAP statement:
A: GET TIME.
B: SET TIME FIELD.
C: GET RUN TIME FIELD.
D: SET CURSOR FIELD.
13. When a secondary list is being processed, the data of the basic list is available by default.
DATA: BEGIN OF itab OCCURS 10,
qty type I,
END OF itab.
DO 25 TIMES. itab-qty = sy-index. APPEND itab. ENDDO.
LOOP AT itab WHERE qty > 10.
WRITE: /1 itab-qty.
ENDLOOP.
This will result in:
A: Output of only those itab rows with a qty field less than 10
B: Output of the first 10 itab rows with a qty field greater than 10
C: A syntax error
D: None of the above
15. After a DESCRIBE TABLE statement SY-TFILL will contain
A: The number of rows in the internal table.
B: The current OCCURS value.
C: Zero, if the table contains one or more rows.
D: The length of the internal table row structure.
16. You may declare your own internal table type using the TYPES keyword.
17. After adding rows to an internal table with COLLECT, you should avoid adding more rows with APPEND.
18. Which of the following is not a component of control break processing when looping at an internal table?
A: AT START OF
B: AT FIRST
C: AT LAST
D: AT NEW
19. A dictionary table is made available for use within an ABAP program via the TABLES statement.
20. Which of the following would be best for hiding further selection criteria until a function is chosen?
A: AT NEW SELECTION-SCREEN
B: SELECTION-SCREEN AT LINE-SELECTION
C: SUBMIT SELECTION-SCREEN
D: CALL SELECTION-SCREEN
21. What must you code in the flow logic to prevent a module from being called unless a field contains a non-initial value (as determined by its data type)?
A: ON INPUT
B: CHAIN
C: FIELD
D: ON REQUEST
22. The AT USER-COMMAND event is triggered by functions defined in the ____.
A: screen painter
B: ABAP report
C: menu painter status
D: ABAP Dictionary
23. In regard to a function group, which of the following is NOT a true statement?
A: Combines similar function modules.
B: Shares global data with all its function modules.
C: Exists within the ABAP workbench as an include program.
D: Shares subroutines with all its function modules.
24. In regard to SET PF-STATUS, you can deactivate unwanted function codes by using ____.
A: EXCLUDING
B: IMMEDIATELY
C: WITHOUT
D: HIDE
25. In regard to data transported in PAI when the FIELD statement is used, which of the following is NOT a true statement?
A: Fields in PBO are transported directly from PAI.
B: Fields with identical names are transported to the ABAP side.
C: Fields not defined in FIELD statements are transported first.
D: Fields that are defined in FIELD statements are transported when their corresponding module is called.
26. The order in which an event appears in the ABAP code determines when the event is processed.
27. A field declared as type T has the following internal representation:
A: SSMMHH
B: HHMMSS
C: MMHHSS
D: HHSSMM
28. Which of the following is NOT a component of the default standard ABAP report header?
A: Date and Time
B: List title
C: Page number
D: Underline
29. Assuming a pushbutton with function code ‘FUNC’ is available in the toolbar of a list report, what event is processed when the button is clicked?
A: AT USER-COMMAND.
B: AT PFn.
C: AT SELECTION-SCREEN.
D: END-OF-SELECTION.
30. In regard to field selection, what option of the SELECT statement is required?
A: FOR ALL ENTRIES
B: WHERE
C: INTO
D: MOVE-CORRESPONDING
31. The following program outputs what?
INITIALIZATION.
write: /1 ‘Set_’.
START-OF-SELECTION.
write: /1 ‘GO!!’.
A: Set_ GO. (each on its own line)
B: Set_ Ready_ GO. (all on their own lines)
C: Ready_ GO. (each on its own line)
D: Ready_ Set_ GO. (all on their own lines)
32. To declare a selection criterion that does not appear on the selection screen, use:
A: NO-DISPLAY
B: INVISIBLE
C: MODIF ID
D: OBLIGATORY
33. An internal table that is nested within another internal table should not contain a header line.
34. What is output by the following code?
DATA: BEGIN OF itab OCCURS 0, letter type c, END OF itab.
itab-letter = ‘A’. APPEND itab. itab-letter = ‘B’. APPEND itab.
itab-letter = ‘C’. APPEND itab. itab-letter = ‘D’. APPEND itab.
LOOP AT itab.
SY-TABIX = 2.
WRITE itab-letter.
EXIT.
ENDLOOP.
A: A
B: A B C D
C: B
D: B C D
35. To select all database entries for a certain WHERE clause into an internal table in one step, use
A: SELECT_INTO TABLE itab_
B: SELECT_INTO itab_
C: SELECT_APPENDING itab
D: SELECT_itab_
36. After a successful SELECT statement, what does SY-SUBRC equal?
37. This selection screen syntax forces the user to input a value:
A: REQUIRED-ENTRY
B: OBLIGATORY
C: DEFAULT
D: SELECTION-SCREEN EXCLUDE
38. If the following code results in a syntax error, the remedy is:
DATA: itab TYPE SORTED TABLE OF rec_type WITH UNIQUE KEY field1
WITH HEADER LINE.
itab-field1 = ‘Company’. itab-field2 = ‘1234’. INSERT TABLE itab.
itab-field1 = ‘Bank’. itab-field2 = ‘ABC’. INSERT TABLE itab.
LOOP AT itab.
write: /1 itab-field1, itab-field2.
ENDLOOP.
A: There is no syntax error here
B: Remove the SORT statement
C: Change INSERT to APPEND
D: Add a WHERE clause to the loop
39. If this code results in an error, the remedy is:
SELECT fld1 fld2 FROM tab1 WHERE fld3 = pfld3.
WRITE: /1 tab1-fld1, tab1-fld2.
ENDSELECT.
A: Add a SY-SUBRC check.
B: Change the WHERE clause to use fld1 or fld2.
C: Remove the /1 from the WRITE statement.
D: Add INTO (tab1-fld1, tab1-fld2).
40. When modifying an internal table within LOOP AT itab. _ ENDLOOP. you must include an index number.
41. To allow the user to enter values on the screen for a list field, use:
A: OPEN LINE.
B: SET CURSOR FIELD.
C: WRITE fld AS INPUT FIELD.
D: FORMAT INPUT ON.
42. Before a function module may be tested, it must first be:
A: Linked
B: Authorized
C: Released
D: Active
43. To include a field on your screen that is not in the ABAP Dictionary, which include program should contain the data declaration for the field?
A: PBO module include program
B: TOP include program
C: PAI module include program
D: Subroutine include program
44. If a table contains many duplicate values for a field, minimize the number of records returned by using this SELECT statement addition.
A: MIN
B: ORDER BY
C: DISTINCT
D: DELETE
45. The system internal table used for dynamic screen modification is named:
A: ITAB
B: SCREEN
C: MODTAB
D: SMOD
46. Within the source code of a function module, errors are handled via the keyword:
A: EXCEPTION
B: RAISE
C: STOP
D: ABEND
47. Which system field contains the contents of a selected line?
A: SY-CUCOL
B: SY-LILLI
C: SY-CUROW
D: SY-LISEL
48. The following statement writes what type of data object?
WRITE: /1 ‘Total Amount:’.
A: Text literal
B: Text variable
C: In-code comment
D: Text integer
49. For the code below, second_field is of what data type?
DATA: first_field type P, second_field like first_field.
50. Which of the following describes the internal representation of a type D data object?
A: DDMMYYYY
B: YYYYDDMM
C: MMDDYYYY
D: YYYYMMDD
51. A BDC program is used for all of the following except:
A: Downloading data to a local file
B: Data interfaces between SAP and external systems
C: Initial data transfer
D: Entering a large amount of data
52. In regard to PERFORM, which of the following is NOT a true statement?
A: May be used within a subroutine.
B: Requires actual parameters.
C: Recursive calls are allowed in ABAP.
D: Can call a subroutine in another program.
53. What is the transaction code for the ABAP Editor?
A: SE11
B: SE38
C: SE36
D: SE16
54. In regard to HIDE, which of the following is NOT a true statement?
A: Saves the contents of variables in relation to a list line’s row number.
B: The hidden variables must be output on a list line.
C: The HIDE area is retrieved when using the READ LINE statement.
D: The HIDE area is retrieved when an interactive event is triggered.
55. Database locks are sufficient in a multi-user environment.
56. The complete technical definition of a table field is determined by the field’s:
A: Domain
B: Field name
C: Data type
D: Data element
57. In regard to LEAVE, which of the following is NOT a true statement?
A: May be used to return immediately to a calling program.
B: May be used to stop the current loop pass and get the next.
C: May be used to start a new transaction.
D: May be used to go to the next screen.
58. The following code indicates:
SELECT fld6 fld3 fld2 fld1 FROM tab1 INTO CORRESPONDING FIELDS OF TABLE itab
WHERE fld3 = pfld3.
A: The order of the fields in itab does not matter.
B: Fill the header line of itab, but not the body.
C: Table itab can only contain fields also in table tab1.
D: None of the above.
59. The ABAP statement below indicates that the program should continue with the next line of code if the internal table itab:
CHECK NOT itab[] IS INITIAL.
A: Contains no rows
B: Contains at least one row
C: Has a header line
D: Has an empty header line
60. What will be output by the following code?
DATA: BEGIN OF itab OCCURS 0, fval type i, END OF itab.
itab-fval = 1. APPEND itab.
itab-fval = 2. APPEND itab.
FREE itab.
WRITE: /1 itab-fval.
A: 2
B: 0
C: blank
D: 1
61. To allow the user to enter a range of values on a selection screen, use the ABAP keyword:
A: DATA.
B: RANGES.
C: PARAMETERS.
D: SELECT-OPTIONS.
62. If an internal table is declared without a header line, what else must you declare to work with the table’s rows?
A: Another internal table with a header line.
B: A work area with the same structure as the internal table.
C: An internal table type using the TYPES statement.
D: A PARAMETER.
63. Assuming an internal table contains 2000 entries, how many entries will it have after the following line of code is executed?
DELETE itab FROM 1500 TO 1700.
A: This is a syntax error.
B: 1801
C: 1800
D: 1799
64. To remove lines from a database table, use ____.
A: UPDATE
B: MODIFY
C: ERASE
D: DELETE
65. All of the following may be performed using SET CURSOR except:
A: Move the cursor to a specific field on a list.
B: Move the cursor to a specific list line.
C: Move the cursor to a specific pushbutton, activating that function.
D: Move the cursor to a specific row and column on a list.
66. When is it optional to pass an actual parameter to a required formal parameter of a function module?
A: The actual parameter is type C.
B: The formal parameter contains a default value.
C: The formal parameter’s \«Reference\» attribute is turned on.
D: It is never optional.
67. Coding two INITIALIZATION events will cause a syntax error.
68. Adding a COMMIT WORK statement between SELECT_ENDSELECT is a good method for improving performance.
69. To save information on a list line for use after the line is selected, use this keyword.
A: APPEND
B: EXPORT
C: WRITE
D: HIDE
70. To bypass automatic field input checks, include this in PAI.
A: AT EXIT-COMMAND
B: ON INPUT
C: ON REQUEST
D: LEAVE TO SCREEN 0.
71. Within a function module’s source code, if the MESSAGE_RAISING statement is executed, all of the following system fields are filled automatically except:
A: SY-MSGTY
B: SY-MSGNO
C: SY-MSGV1
D: SY-MSGWA
72. The following code indicates:
REPORT ZLISTTST.
START-OF-SELECTION.
WRITE: text-001.
FORMAT HOTSPOT ON.
WRITE: text-002.
FORMAT HOTSPOT OFF.
AT LINE-SELECTION.
WRITE / text-003.
A: Text-002 may not be selected.
B: The value of text-002 is stored in a special memory area.
C: Text-002 may be clicked once to trigger the output of text-003.
D: None of the above.
73. The ____ type of ABAP Dictionary view consists of one or more transparent tables and may be accessed by an ABAP program using Open SQL.
A: Database view
B: Projection view
C: Help view
D: Entity view
74. A concrete field is associated with a field-symbol via ABAP keyword
A: MOVE
B: WRITE
C: ASSIGN
D: VALUE
75. The output for the following code will be:
report zabaprg.
DATA: char_field type C.
char_field = ‘ABAP data’.
A: ABAP data
B: A
C: Nothing, there is a syntax error
D: None of the above
76. Page footers are coded in the event:
A: TOP-OF-PAGE.
B: END-OF-SELECTION.
C: NEW-PAGE.
D: END-OF-PAGE.
77. The event AT SELECTION-SCREEN OUTPUT. occurs before the selection screen is displayed and is the best event for assigning default values to selection criteria.
78. The TABLES statement declares a data object.
79. Assuming tab1-fld7 is not a key field, how can you prevent reading all the table rows?
SELECT fld1 fld2 fld3 FROM tab1 INTO (fld4, fld5, fld6)
WHERE fld7 = pfld7.
WRITE: /1 fld4, fld5, fld6.
ENDSELECT.
A: Take fld7 out of the WHERE clause.
B: Create an index in the ABAP Dictionary for tab1-fld7.
C: Use INTO TABLE instead of just INTO.
D: Take the WRITE statement out of the SELECT_ENDSELECT.
80. Which of the following is NOT a required attribute when creating an ABAP program?
A: Application
B: Title
C: Status
D: Type
81. When creating a transparent table in the ABAP Dictionary, which step automatically creates the table in the underlying database?
A: Adding technical settings to the table
B: Checking the table syntax
C: Saving the table
D: Activating the table
82. Within the ABAP program attributes, Type = 1 represents:
A: INCLUDE program
B: Online program
C: Module pool
D: Function group
E: Subroutine pool
83. If this code results in an error, the remedy is:
SELECT fld1 SUM( fld1 ) FROM tab1 INTO_
A: Remove the spaces from SUM( fld1 ).
B: Move SUM( fld1 ) before fld1.
C: Add GROUP BY f1.
D: Change to SUM( DISTINCT f1 ).
84. Which keyword adds rows to an internal table while accumulating numeric values?
A: INSERT
B: APPEND
C: COLLECT
D: GROUP
85. Assuming itab has a header line, what will be output by the following code?
READ TABLE itab INDEX 3 TRANSPORTING field1.
WRITE: /1 itab-field1, itab-field2.
A: The contents of the third row’s itab-field1.
B: The contents of the third row’s itab-field1 and itab-field2.
C: The contents of the third row’s itab-field2.
D: Nothing.
86. The following code indicates:
SELECTION-SCREEN BEGIN OF BLOCK B1.
PARAMETERS: myparam(10) type C,
Myparam2(10) type N,
SELECTION-SCREEN END OF BLOCK.
A: Draw a box around myparam and myparam2 on the selection screen.
B: Allow myparam and myparam2 to be ready for input during an error dialog.
C: Do not display myparam and myparam2 on the selection screen.
D: Display myparam and myparam2 only if both fields have default values.
87. Which statement will sort the data of an internal table with fields FRUIT, QTY, and PRICE so that it appears as follows?
Apples 12 22.50
Apples 9 18.25
Oranges 15 17.35
Bananas 20 10.20
Bananas 15 6.89
Bananas 5 2.75
A: SORT itab DESCENDING BY QTY PRICE.
B: SORT itab BY PRICE FRUIT.
C: SORT itab.
D: SORT itab BY PRICE DESCENDING.
88. Which keyword adds a line anywhere within an internal table?
A: APPEND
B: MODIFY
C: ADD
D: INSERT
89. To read a single line of an internal table, use the following:
A: LOOP AT itab. _ ENDLOOP.
B: READ itab.
C: SELECT SINGLE * FROM itab.
D: READ TABLE itab.
90. Which Open SQL statement should not be used with cluster databases?
A: UPDATE
B: MODIFY
C: DELETE
D: INSERT
91. To include a field on your screen that is not in the ABAP Dictionary, which include program should contain the data declaration for the field?
A: PBO module include program
B: TOP include program
C: PAI module include program
D: Subroutine include program
92. This flow logic statement is used to make multiple fields open for input after an error or warning message.
A: GROUP
B: FIELD-GROUP
C: CHAIN
D: LOOP AT SCREEN
PERFORM subroutine USING var.
The var field is known as what type of parameter?
A: Formal
B: Actual
C: Static
D: Value
Ещё в САПе очень любят давать таблицам и переменным «неговорящие» названия, но зато придумали
Стандартные темы оформления IDE в SAP GUI не подразумевают тёмной темы, но я предпочитаю использовать именно её.
Здесь можно скачать настройки.
Ссылка на статью о том, как следует, а как не следует программировать (актуальна не только для АВАР). Ну и в продолжение темы вот несколько примеров реализации «шаблонов проектирования» на АВАР/4:
Пара ссылок по функциональным модулям (ФМ), для вывода всплывающих окон в АВАР:
Небольшая программка для импорта/экспорта SAP таблиц в текстовые файлы — мне пару раз пригодилось.
Пример реализации экрана выборки (selection screen) и alv-отчёта в пределах одного экрана.
В целом изложение получилось немного скомканным, но, скажу честно, я не писатель. Ещё раз замечу, практически все ссылки будут интересны исключительно новичкам(я был бы счастлив, если бы нашёл подобную статью в своё время). Те, кто хотя бы полгода уже занимается изучением сабжа, скорее всего, уже нашли весь материал самостоятельно на просторах интернета. Буду рад любым вашим исправлениям/дополнениям в комментариях. Спасибо.
Немного обновлю статью. Нашёл еще один ресурс, выглядит неплохо: sapbrainsonline.com
Ещё ссылки из комментариев:
irvil 6 ноября 2015 в 20:08:
На sapland.ru часто бывают полезные статьи по ABAP. Есть еще русскоязычный форум sapforum.biz.
amok 7 ноября 2015 в 09:38:
Официальная справка обновилась до версии 7.50