Nikolay написал(а):
совсем не понятно, как сделать чтобы отображалось несколько записей в блоке. т.е чтобы выводить на экран сразу 10 строк из таблицы.
Почитайте лучше класс BC410 и попытайтесь абстрагироваться от понятий Oracle Forms. В SAP зачастую используется совсем другая терминология, а также в программировании экранов отовсюду торчат уши mainframe, так что пытаться проводить какие-то параллели не имеет большого смысла.
Как вам уже правильно объяснили, данные для вывода на экран должны находиться в т.н. внутренней таблице (internal table). Затем они передаются в элемент экрана - Table Control. В последних версиях есть даже Table Control Wizard, который замечательно все разрисует и даже сам распихает код в нужные места. (Кое-что, естественно, нужно будет дописать.)
Вот фрагменты кода для примера. Определение таблицы, структуры (используются нестандартные типы, не обессудьте) и table control в начале программы:
Code:
* Definitions for the screen and table control
DATA: i_purchase_orders TYPE zspo_line OCCURS 0,
s_purchase_orders TYPE zspo_line.
CONTROLS: purchase_orders TYPE TABLEVIEW USING SCREEN 0100.
Пользователь ввел значение zpotracking-tknum ("мастер" по вашей терминологии). Теперь мы можем заполнить таблицу данными:
Code:
SELECT * FROM zpotracking_po
INTO TABLE i_purchase_orders
WHERE tknum = zpotracking-tknum.
В PBO (т.е. событие, вызываемое перед выводом на экран) данные из таблицы передаются в элемент экрана :
Code:
*&SPWIZARD: PBO FLOW LOGIC FOR TABLECONTROL 'PURCHASE_ORDERS'
MODULE purchase_orders_change_tc_attr.
*&SPWIZARD: MODULE PURCHASE_ORDERS_CHANGE_COL_ATTR.
LOOP AT i_purchase_orders
INTO s_purchase_orders
WITH CONTROL purchase_orders
CURSOR purchase_orders-current_line.
MODULE purchase_orders_get_lines.
ENDLOOP.