Я обычно в генераторе ведения таблиц выбираю меню Среда->Модификация->События, добавляю туда один и тот же FORM zz_fill_posnum с моментами времени 01 (Перед сохранением данных в базе данных) и 05 (При добавлении новой записи) и вставляю туда такой код:
Code:
FORM zz_fill_posnum.
DATA:
lv_tabix TYPE sy-tabix.
FIELD-SYMBOLS:
<ls_test> TYPE ANY,
<lv_posnum> TYPE zvm_test-posnum.
LOOP AT total ASSIGNING <ls_test>.
ASSIGN COMPONENT 'POSNUM' OF STRUCTURE <ls_test> TO <lv_posnum>.
CHECK <lv_posnum> IS INITIAL.
CLEAR lv_tabix.
READ TABLE extract FROM <ls_test>.
lv_tabix = sy-tabix.
CALL FUNCTION 'NUMBER_GET_NEXT'
EXPORTING
nr_range_nr = '01'
object = 'ZNROBJ'
IMPORTING
number = <lv_posnum>
EXCEPTIONS
interval_not_found = 1
number_range_not_intern = 2
object_not_found = 3
quantity_is_0 = 4
quantity_is_not_1 = 5
interval_overflow = 6
buffer_overflow = 7
OTHERS = 8.
IF NOT lv_tabix IS INITIAL.
MODIFY extract FROM <ls_test> INDEX lv_tabix.
ENDIF.
ENDLOOP.
ENDFORM. "zz_fill_posnum
Но, как уже и сказали, нужно быть аккуратным при изменении в генераторе ведения таблиц, т.к. этот код может потеряться.