Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

BC400_RU_ECC_2005

.pdf
Скачиваний:
1456
Добавлен:
21.05.2015
Размер:
40.8 Mб
Скачать

BC400

Урок: Подпрограммы

– на глобальный объект данных. Это называется правилом скрытия. В рамках подпрограммы локальные объекты данных “ скрывают ” глобальные объекты, имеющие те же самые имена.

Для четкого выделения внутренних программных объектов можно использовать, например, следующие префиксы:

f_... для “формальных параметров” и

l_... для “локальных объектов данных”.

Рисунок 122: Пример синтаксиса: перенос внутренней таблицы

В приведенном выше примере внутренняя таблица it_flightinfo и глобальная переменная carrid переносятся путем вызова по ссылке, несмотря на то, что они не изменяются в подпрограмме. Преимуществом этого способа является отсутствие необходимости в создании копий.

Для обработки внутренней таблицы должна существовать рабочая область с совместимым типом строк. Она определяется локально в подпрограмме со ссылкой на табличный параметр f_itab. Такая ссылка возможна из-за того, что переменная f_itab типизирована в интерфейсе подпрограммы.

 

© 2006 г. SAP AG All rights reserved. Авторские

211

06-04-2006

права защищены.

Глава 7: Подпрограммы в ABAP

BC400

Рисунок 123: Внедрение вызова подпрограммы

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

(Кроме того, для генерации вызова также можно использовать кнопку “

Модель ” в ABAP-редакторе.)

Преимущество генерации вызова заключается в устранении вероятности случайного опущения или неправильной расстановки параметров.

212

© 2006 г. SAP AG All rights reserved. Авторские

 

права защищены.

06-04-2006

BC400

Урок: Подпрограммы

Рисунок 124: Подпрограммы в режиме отладки

Если текущий оператор предполагает вызов подпрограммы, можно выполнить всю подпрограмму без остановок путем выбора Выполнить . Обработка останавливается только после завершения подпрограммы.

Для остановки на первом операторе подпрограммы и более подробного отслеживания операций можно использовать опцию Отдельный шаг .

Если текущий оператор располагается в подпрограмме, можно выполнить

оставшуюся часть подпрограммы без остановки при помощи опции

Возврат . Обработка останавливается только после завершения подпрограммы.

 

© 2006 г. SAP AG All rights reserved. Авторские

213

06-04-2006

права защищены.

Глава 7: Подпрограммы в ABAP

BC400

214

© 2006 г. SAP AG All rights reserved. Авторские

 

права защищены.

06-04-2006

BC400

Урок: Подпрограммы

Упражнение 11: Подпрограммы

Цели упражнения

Выполнив это упражнение, вы сможете

создавать подпрограммы

использовать интерфейс подпрограммы для переноса данных

Практический пример

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

Задание 1:

Создание подпрограммы с табличными параметрами

1.Скопируйте программу ZBC400_##_SELECT_SFLIGHT_ITAB

или соответствующий пример решения

SAPBC400DDS_AUTHORITY_CHECK_2 в новую программу ZBC400_##_SUBROUTINE.

2.Перенесите текст вывода данных в подпрограмму.

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

3.Выведите данные из подпрограммы с использованием LOOP. Для этого в качестве локального объекта данных подпрограммы следует создать необходимую табличную рабочую область (рекомендуемое имя: wa).

Задание 2:

Вызов подпрограммы

1.После сортировки внутренней таблицы вызовите подпрограмму для вывода таблицы.

2.Выполните программу для проверки результатов.

 

© 2006 г. SAP AG All rights reserved. Авторские

215

06-04-2006

права защищены.

Глава 7: Подпрограммы в ABAP

BC400

Решение 11: Подпрограммы

Задание 1:

Создание подпрограммы с табличными параметрами

1.Скопируйте программу ZBC400_##_SELECT_SFLIGHT_ITAB

или соответствующий пример решения

SAPBC400DDS_AUTHORITY_CHECK_2 в новую программу ZBC400_##_SUBROUTINE.

a)Этот шаг выполняется в соответствии с обычной процедурой.

2.Перенесите текст вывода данных в подпрограмму.

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

a)См. выдержку из исходного текста в примере решения.

3.Выведите данные из подпрограммы с использованием LOOP. Для этого в качестве локального объекта данных подпрограммы следует создать необходимую табличную рабочую область (рекомендуемое имя: wa).

a)См. выдержку из исходного текста в примере решения.

Задание 2:

Вызов подпрограммы

1.После сортировки внутренней таблицы вызовите подпрограмму для вывода таблицы.

a)См. выдержку из исходного текста в примере решения.

2.Выполните программу для проверки результатов.

a)Этот шаг выполняется в соответствии с обычной процедурой.

Результат

Выдержка из исходного текста: SAPBC400PBS_SUBROUTINE

REPORT sapbc400pbs_subroutine.

CONTSTANTS actvt_display TYPE activ_auth VALUE ’03’.

DATA: it_flight TYPE sbc400_t_sbc400focc, wa_flight LIKE LINE OF it_flight.

Продолжение на следующей странице

216

© 2006 г. SAP AG All rights reserved. Авторские

 

права защищены.

06-04-2006

BC400

Урок: Подпрограммы

PARAMETERS pa_car TYPE s_carr_id.

* Authority Check:

AUTHORITY-CHECK OBJECT ’S_CARRID’

ID ’CARRID’ FIELD pa_car

ID ’ACTVT’ FIELD actvt_display.

CASE sy-subrc.

 

WHEN 0.

" User is authorized

 

SELECT carrid connid fldate seatsmax seatsocc FROM sflight

 

 

INTO CORRESPONDING FIELDS OF wa_flight

 

 

WHERE carrid = pa_car.

 

wa_flight-percentage =

 

 

100 * wa_flight-seatsocc / wa_flight-seatsmax.

 

APPEND wa_flight TO it_flight.

 

ENDSELECT.

 

 

IF sy-subrc = 0.

 

SORT it_flight BY percentage.

 

PERFORM write_list USING it_flight.

 

ELSE.

 

 

 

WRITE: ’No ’, pa_car, ’flights found !’.

 

ENDIF.

 

 

WHEN OTHERS.

" User is not authorized

 

WRITE: / ’Authority-Check Error’(001).

ENDCASE.

 

 

*&

--------------------------------------------------------------

 

*

*&

Form

WRITE_LIST

*&

--------------------------------------------------------------

 

*

*--> P_IT_FLIGHT

*---------------------------------------------------------------

*

FORM write_list USING p_it_flight TYPE sbc400_t_sbc400focc.

DATA wa LIKE LINE OF p_it_flight.

LOOP AT p_it_flight INTO wa.

Продолжение на следующей странице

 

© 2006 г. SAP AG All rights reserved. Авторские

217

06-04-2006

права защищены.

Глава 7: Подпрограммы в ABAP

BC400

WRITE: / wa-carrid COLOR COL_KEY,

 

wa-connid COLOR COL_KEY,

 

wa-fldate COLOR COL_KEY,

 

wa-seatsocc,

 

wa-seatsmax,

 

wa-percentage, ’%’.

 

ENDLOOP.

 

ENDFORM.

" WRITE_LIST

218

© 2006 г. SAP AG All rights reserved. Авторские

 

права защищены.

06-04-2006

BC400

Урок: Подпрограммы

Резюме по уроку

Теперь вы сможете:

определять подпрограммы

вызывать подпрограммы

анализировать процесс выполнения подпрограмм в режиме отладки

 

© 2006 г. SAP AG All rights reserved. Авторские

219

06-04-2006

права защищены.

Резюме по главе

BC400

Резюме по главе

Теперь вы сможете:

определять подпрограммы

вызывать подпрограммы

анализировать процесс выполнения подпрограмм в режиме отладки

Дополнительная информация

... См. онлайн-документацию к соответствующим ABAP-операторам.

220

© 2006 г. SAP AG All rights reserved. Авторские

 

права защищены.

06-04-2006

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]