Текущее время: Вт, июл 08 2025, 04:52

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: Google [Bot]


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

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