Про SmartForm ничего не скажу, а по поводу SAPScript-формуляра - можно сделать программно:
Code:
DATA: form_header TYPE itcta,
form_lines TYPE TABLE OF tline,
form_pages TYPE TABLE OF itctg,
form_page_windows TYPE TABLE OF itcth,
form_paragraphs TYPE TABLE OF itcdp,
form_strings TYPE TABLE OF itcds,
form_tabs TYPE TABLE OF itcdq,
form_windows TYPE TABLE OF itctw.
DATA: it_custom TYPE zscr_t_win.
DATA: wa LIKE LINE OF form_page_windows,
wcust LIKE LINE OF it_custom.
DATA: x_delta_main TYPE zscr_delta_x,
y_delta_main TYPE zscr_delta_y.
* считывание данных формуляра -----------------------------------------&
CALL FUNCTION 'READ_FORM'
EXPORTING
form = form_name
IMPORTING
form_header = form_header
TABLES
form_lines = form_lines
pages = form_pages
page_windows = form_page_windows
paragraphs = form_paragraphs
strings = form_strings
tabs = form_tabs
windows = form_windows.
IF form_header IS INITIAL.
* MSG: формуляр отсутствует в текущем манданте системы
MESSAGE e001(zscript) WITH form_name RAISING no_form.
ENDIF.
* считывание данных настроек ------------------------------------------&
CALL METHOD read_custom_data
EXPORTING form_name = form_name
fvar_name = fvar_name
IMPORTING x_delta = x_delta_main
y_delta = y_delta_main
et_custom = it_custom
EXCEPTIONS OTHERS = 1.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid
TYPE sy-msgty
NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
RAISING no_custom_data.
ENDIF.
* изменение координат окон (TOP-LEFT) ---------------------------------&
LOOP AT form_page_windows INTO wa.
READ TABLE it_custom INTO wcust WITH KEY tdwind = wa-tdwindow.
IF sy-subrc IS INITIAL.
IF in_repair NE space.
wa-tdwleft = wa-tdwleft + wcust-x_delta.
wa-tdwtop = wa-tdwtop + wcust-y_delta.
ELSE.
wa-tdwleft = wa-tdwleft - wcust-x_delta.
wa-tdwtop = wa-tdwtop - wcust-y_delta.
ENDIF.
ELSE.
IF in_repair NE space.
wa-tdwleft = wa-tdwleft + x_delta_main.
wa-tdwtop = wa-tdwtop + y_delta_main.
ELSE.
wa-tdwleft = wa-tdwleft - x_delta_main.
wa-tdwtop = wa-tdwtop - y_delta_main.
ENDIF.
ENDIF.
MODIFY form_page_windows FROM wa TRANSPORTING tdwleft tdwtop.
ENDLOOP.
* сохранение формуляра ------------------------------------------------&
CALL FUNCTION 'SAVE_FORM'
EXPORTING
form_header = form_header
TABLES
form_lines = form_lines
pages = form_pages
page_windows = form_page_windows
paragraphs = form_paragraphs
strings = form_strings
tabs = form_tabs
windows = form_windows.
COMMIT WORK AND WAIT.
Данный код я использовал для динамического сдвига окон SAP Script'а по данным настройки.
Думаю, для SmartForm можно сделать что-нибудь подобное.