Текущее время: Вс, июл 13 2025, 08:32

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Написание подрограммы
СообщениеДобавлено: Вт, июл 01 2014, 14:20 
Специалист
Специалист

Зарегистрирован:
Чт, сен 29 2011, 11:03
Сообщения: 215
Всем привет,

Изучаю ABAP и возник следующий вопрос.

Необходимо написать подпрограмму, работающую с таблицей SFLIGHT.


Текст данной подпрограммы, следующий:

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.

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


Соответственно у меня нет определения типа sbc400_t_sbc400focc и пытаюсь по своему переписать эту часть подпрограммы, следующим образом:

FORM write_list USING p_it_flight TYPE it_flight.

TYPES BEGIN OF is_flight.
include STRUCTURE sflight.
TYPES percentage TYPE i.
TYPES END OF is_flight.

data it_flight TYPE STANDARD TABLE OF is_flight.

DATA wa LIKE LINE OF p_it_flight.

LOOP AT p_it_flight INTO wa.

WRITE: / wa-carrid COLOR COL_KEY,

wa-connid COLOR COL_KEY,
wa-fldate COLOR COL_KEY,
wa-seatsocc,
wa-seatsmax,
wa-percentage, '%'.
ENDLOOP.
ENDFORM.


И система ругается уже на первую строчку:

Program Z_BC_TEST_8_EX_11_FORM
REPORT/PROGRAM statement missing, or program type is INCLUDE.


Могли бы подсказать что не так.

Заранее спасибо за ответы.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Написание подрограммы
СообщениеДобавлено: Вт, июл 01 2014, 14:26 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, мар 21 2012, 22:00
Сообщения: 248
Пропущено первое ключевое слово REPORT
Первая строка должна выглядеть в самом простом случае так:
Code:
REPORT Z_BC_TEST_8_EX_11_FORM


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Написание подрограммы
СообщениеДобавлено: Вт, июл 01 2014, 15:34 
Специалист
Специалист

Зарегистрирован:
Чт, сен 29 2011, 11:03
Сообщения: 215
Ок, написал следующим образом:

Это текст программы:

REPORT Z_BC_TEST_8_EX_11.

TYPES BEGIN OF is_flight.
include STRUCTURE sflight.
TYPES percentage TYPE i.
TYPES END OF is_flight.

data: it_flight TYPE STANDARD TABLE OF is_flight,

wa_flight LIKE LINE OF it_flight.

PARAMETERS pa_car TYPE s_carr_id.

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.


Далее текст подпрограммы:

REPORT Z_BC_TEST_8_EX_11_FORM.

FORM write_list USING p_it_flight TYPE it_flight.


DATA wa LIKE LINE OF p_it_flight.

LOOP AT p_it_flight INTO wa.

WRITE: / wa-carrid COLOR COL_KEY,

wa-connid COLOR COL_KEY,
wa-fldate COLOR COL_KEY,
wa-seatsocc,
wa-seatsmax,
wa-percentage, '%'.
ENDLOOP.
ENDFORM.



Ругается в подпрограмме на строчку - FORM write_list USING p_it_flight TYPE it_flight.

Program Z_BC_TEST_8_EX_11_FORM
Type "IT_FLIGHT" is unknown


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Написание подрограммы
СообщениеДобавлено: Вт, июл 01 2014, 15:43 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, июн 19 2012, 08:33
Сообщения: 182
Пол: Мужской
Logan_0589 написал(а):
Type "IT_FLIGHT" is unknown

Черным по белому же написано, типа IT_FLIGHT не существует. Это не тип а имя таблицы. И научитесь уже оформлять код тегом [code]

_________________
crusty написал(а):
Логистика - понятие растяжимое


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Написание подрограммы
СообщениеДобавлено: Вт, июл 01 2014, 15:54 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, мар 21 2012, 22:00
Сообщения: 248
Logan_0589 как я вижу это копия одного из упражнений BC4* курса. Дело в том что у вас в той системе где вы это пытаетесь сделать нет некоторых (а может и всех) объектов словаря которые нужны. Даже в IDES это вполне реально если версии различаются сильно.
Поэтому лучше возмите какую нибудь реальную таблицу которая 100% есть (lfa1 например или ту которая вам знакома) и в ней есть данные и перепишите под нее этот пример.
Либо определите IT_FLIGHT если все объекты все-таки есть


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Написание подрограммы
СообщениеДобавлено: Ср, июл 02 2014, 03:27 
Специалист
Специалист

Зарегистрирован:
Вт, июн 10 2014, 09:41
Сообщения: 180
Logan_0589 написал(а):
Code:
data: it_flight TYPE STANDARD TABLE OF is_flight,
...
FORM write_list USING p_it_flight TYPE it_flight.
....


Ругается в подпрограмме на строчку - FORM write_list USING p_it_flight TYPE it_flight.
Program Z_BC_TEST_8_EX_11_FORM
Type "IT_FLIGHT" is unknown

У Вас it_flight описан через оператор DATA, который создаёт переменную, а не определение типа (оператор TYPE).
Чтобы использовать структуру переменной (а не типа) нужно использовать LIKE:
Code:
FORM write_list USING p_it_flight LIKE it_flight.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Написание подрограммы
СообщениеДобавлено: Чт, июл 03 2014, 10:31 
Специалист
Специалист

Зарегистрирован:
Чт, сен 29 2011, 11:03
Сообщения: 215
Поправил подпрограмму. Теперь не ругается.

Но стала выдавать ошибку в программе на строчке:

Code:
PERFORM write_list USING it_flight.


Program Z_BC_TEST_8_EX_11 35 @0A\QError@
FORM "WRITE_LIST" does not exist


Подпрограмма и программа написаны как отдельные программы.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Написание подрограммы
СообщениеДобавлено: Чт, июл 03 2014, 12:40 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, июн 19 2012, 08:33
Сообщения: 182
Пол: Мужской
Logan_0589 написал(а):

Подпрограмма и программа написаны как отдельные программы.

Подпрограмма подразумевает что она относится к "родительской" программе. Как правило она пишется либо в инклюде, который затем включается в родительскую программу, либо непосредственно в коде, после кода родительской. Оформляется вот так:
Code:
form some_prog
....
endform.

perform some_prog.


Можно написать непосредственно в коде основной проги
Code:
perform some_prog.
и два раза ткнуть на название, сап скажет что такого объекта нет и его надо создать, предложит инклюд на выбор, и сам же его и создаст и включит в основную программу.

Если честно, непонятно как вы самостоятельно изучаете abap. Возьмите курс bc400 и внимательно его прочитайте, таких вопросов не должно возникать.

_________________
crusty написал(а):
Логистика - понятие растяжимое


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB