原文地址haixuan-2004的博客
1、
使用向导创建table control时,提示“specify the work area of the table or a table with a header line”。检查系统定义,所绑定的内表已很明确地定义了内表的具有表头。后来摸索到,一个屏幕只允许使用向导创建一个table control,如果手工创建则不受限制。
2、
系统提示:Cannot currently edit include Repeat step?想了好久,在SAP论坛上发现老外也存在同样的问题待解决,
http://forums.sdn.sap.com/thread.jspa?threadID=1195809
重复了几次,后来仔细想想,include是一个包,screen与程序绑定的,会不会是因为正在打开绑定的程序呢,于时在SE38中退出正在编辑的程序,重新操作则成功。
3、关于这个控件很好的学习资料。见
http://blog.chinaunix.net/space.php?uid=150062&do=blog&id=2780070
4、table control配套按钮的设计。今年6月在使用时,为了设计配套按钮(如翻页、全选、全不选、新增、删除等)费了好多时间,还背了一段代码,而如果采用向导创建table Control,系统会自动帮我们设置,具体操作如下
-
一般情况下配置选择列。定义内表时,增加一列用于标记当前行是否被选中,该列的数据类型为 c,长度为 1, 在“line selectability"中勾选“line selection col”,并指定列名,同时可以指定是否允许选中 多行。如:
*
-
配置实现可编辑的table control。
1、在input/output attributes选项面板中,勾选“input control”。
2、在维护函数选项中,勾选“SCROLL”,“Insert/delete line”,“select/deselect all”选项,系统自动配套设计好相关操作按钮。
3、在屏幕被调用前,指定table control的长度。
如:
* 如果表格不允许空行的存在,则取消此处的注析,系统在显示前都会告知系统要显示的行数.
*&SPWIZARD: OUTPUT MODULE FOR TC 'TBL2'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: UPDATE LINES FOR EQUIVALENT SCROLLBAR
MODULE TBL2_CHANGE_TC_ATTR
OUTPUT
.
* DESCRIBE TABLE SP1 LINES TBL2-lines.
ENDMODULE .
*&SPWIZARD:
*&SPWIZARD:
MODULE
*
ENDMODULE .
-
自动录入功能增强。为了提高用户的友好性,提高用户的录入效率,有时候会根据用户录入的某些内容,自动带出其它相关的内容,只要监控相关列的值是否改变,如果有改变,即对其它相关列进行赋值。(table control中改变了界面的值后,只有按了enter键才会触发更改)。代码如:
流逻辑中监控字段的值是否改变
PROCESS
AFTER
INPUT
.
*&SPWIZARD: PAI FLOW LOGIC FOR TABLECONTROL 'TBL2'
LOOP
AT SP1
.
CHAIN
.
FIELD SP1
-ISSEL
.
FIELD SP1
-CARRID
.
FIELD SP1
-CONNID
.
FIELD SP1
-COUNTRYFR
.
FIELD SP1
-CITYFROM
.
FIELD SP1
-AIRPFROM
.
FIELD SP1
-COUNTRYTO
.
FIELD SP1
-CITYTO
.
FIELD SP1
-AIRPTO
.
MODULE TBL2_MODIFY
ON CHAIN
-REQUEST
.
ENDCHAIN
.
ENDLOOP
.
*&SPWIZARD:
在程序中自动赋值:
* 当用户更改表格中的数据后,触发该事件
* 第一个SP1是内表,第二个SP1是表工作区,这个工作区和SP1表格控制绑定,在流逻辑中指定
* 在这里可以实现信息提示,根据之前输入的字段内容,确定后面的字段内容,
MODULE TBL2_MODIFY INPUT.
IF SP1-COUNTRYFR = 'US'.
SP1-COUNTRYTO = 'CHI'.
ENDIF.
IF SP1-COUNTRYFR = 'CHI'.
SP1-COUNTRYTO = 'US'.
ENDIF.
MODIFY SP1 FROM SP1 INDEX TBL2-CURRENT_LINE.
ENDMODULE.
*
*
MODULE
ENDMODULE.
这两天自已做的一个案例的全部内容如下:
*&---------------------------------------------------------------------*
*& Report ZTABCON_HX_01_04
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZTABCON_HX_01_04
.
TABLES
:SPFLI
.
* 创建带有选择列的内表
TYPES
:
BEGIN
OF SP1_TYPE
,
ISSEL
TYPE
C
,
CARRID
LIKE SPFLI
-CARRID
,
CONNID
LIKE SPFLI
-CONNID
,
COUNTRYFR
LIKE SPFLI
-COUNTRYFR
,
CITYFROM
LIKE SPFLI
-CITYFROM
,
AIRPFROM
LIKE SPFLI
-AIRPFROM
,
COUNTRYTO
LIKE SPFLI
-COUNTRYTO
,
CITYTO
LIKE SPFLI
-CITYTO
,
AIRPTO
LIKE SPFLI
-AIRPTO
,
END
OF SP1_TYPE
.
DATA
:OK_CODE
TYPE SY
-UCOMM
,
SP1
TYPE
STANDARD
TABLE
OF SP1_TYPE
WITH
HEADER
LINE
,
SP2
TYPE
STANDARD
TABLE
OF SP1_TYPE
WITH
HEADER
LINE
.
* SP1 TYPE STANDARD TABLE OF SPFLI WITH HEADER LINE."采用这种方式创建的表格控件是没有选择列的,因为选择列还需要有额外的一个标记
SELECT *
INTO CORRESPONDING
FIELDS
OF
TABLE SP1
FROM SPFLI
.
* 表格控件控件
* &SPWIZARD: DECLARATION OF TABLECONTROL 'TBL2' ITSELF
CONTROLS
: TBL2
TYPE TABLEVIEW
USING
SCREEN
0100
.
* &SPWIZARD: LINES OF TABLECONTROL 'TBL2'
DATA
: G_TBL2_LINES
LIKE SY
-LOOPC
.
* 表格控制的行数固定为1000行,如果内表不足一千行,用空行代替,当从屏幕更新数据到内表时,系统会跳过为空的行,所以不用担心这样做会造成内表有很多空行.
* 一般情况下,当要求可编辑时,要求预留空行,否则,用TBL2_CHANGE_TC_ATTR控制.
TBL2
-
LINES
=
1000
.
CALL
SCREEN
100
.
* 监控用户触发的事件
MODULE USER_COMMAND_0100
INPUT
.
CASE OK_CODE
.
WHEN
'EXIT'
.
LEAVE
PROGRAM
.
WHEN
OTHERS
.
ENDCASE
.
ENDMODULE .
* 当用户更改表格中的数据后,触发该事件
* 第一个SP1是内表,第二个SP1是表工作区,这个工作区和SP1表格控制绑定,在流逻辑中指定
* 在这里可以实现信息提示,根据之前输入的字段内容,确定后面的字段内容,
MODULE TBL2_MODIFY
INPUT
.
IF SP1
-COUNTRYFR
=
'US'
.
SP1
-COUNTRYTO
=
'CHI'
.
ENDIF
.
IF SP1
-COUNTRYFR
=
'CHI'
.
SP1
-COUNTRYTO
=
'US'
.
ENDIF
.
MODIFY SP1
FROM SP1
INDEX TBL2
-CURRENT_LINE
.
ENDMODULE .
* 如果表格不允许空行的存在,则取消此处的注析,系统在显示前都会告知系统要显示的行数.
*&SPWIZARD: OUTPUT MODULE FOR TC 'TBL2'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: UPDATE LINES FOR EQUIVALENT SCROLLBAR
MODULE TBL2_CHANGE_TC_ATTR
OUTPUT
.
* DESCRIBE TABLE SP1 LINES TBL2-lines.
ENDMODULE .
*&SPWIZARD: OUTPUT MODULE FOR TC 'TBL2'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: GET LINES OF TABLECONTROL
MODULE TBL2_GET_LINES
OUTPUT
.
G_TBL2_LINES
= SY
-LOOPC
.
ENDMODULE .
*&SPWIZARD: INPUT MODULE FOR TC 'TBL2'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: PROCESS USER COMMAND
MODULE TBL2_USER_COMMAND
INPUT
.
OK_CODE
= SY
-UCOMM
.
PERFORM USER_OK_TC
USING
'TBL2'
'SP1'
'ISSEL'
CHANGING OK_CODE
.
SY
-UCOMM
= OK_CODE
.
ENDMODULE .
*----------------------------------------------------------------------*
* INCLUDE TABLECONTROL_FORMS *
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form USER_OK_TC 这是系统标准的表格控制代码,相关控件按钮是按以下规定命名的:表格的名称_操作名,如本程序的名称为SP1_INSR,表示插入一行,
*& DEL:删除
*& P--:第一页
*& P-:前一页
*& P+:下一页
*& P++:最后一页
*& L-:左移一页
*& L--:左边第一页
*& ......
*& 所以当想实现左移时,只需要在界面中按规定添加按钮,并按相应的规则命名,就可以了.
*&
*&---------------------------------------------------------------------*
FORM USER_OK_TC
USING P_TC_NAME
TYPE DYNFNAM
P_TABLE_NAME
P_MARK_NAME
CHANGING P_OK
LIKE SY
-UCOMM
.
*&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------*
DATA
: L_OK
TYPE SY
-UCOMM
,
L_OFFSET
TYPE
I
.
*&SPWIZARD: END OF LOCAL DATA------------------------------------------*
*&SPWIZARD: Table control specific operations *
*&SPWIZARD: evaluate TC name and operations *
SEARCH P_OK
FOR P_TC_NAME
.
IF SY
-SUBRC
<>
0
.
EXIT
.
ENDIF
.
L_OFFSET
=
STRLEN
( P_TC_NAME
) +
1
.
L_OK
= P_OK+L_OFFSET
.
*&SPWIZARD: execute general and TC specific operations *
CASE L_OK
.
WHEN
'INSR'
.
"insert row
PERFORM FCODE_INSERT_ROW
USING P_TC_NAME
P_TABLE_NAME
.
CLEAR P_OK
.
WHEN
'DEL'
.
"delete row
PERFORM FCODE_DELETE_ROW
USING P_TC_NAME
P_TABLE_NAME
P_MARK_NAME
.
CLEAR P_OK
.
WHEN
'P--'
OR
"top of list
'P-'
OR
"previous page
'P+'
OR
"next page
'P++'
.
"bottom of list
PERFORM COMPUTE_SCROLLING_IN_TC
USING P_TC_NAME
L_OK
.
CLEAR P_OK
.
* WHEN 'L--'. "total left
* PERFORM FCODE_TOTAL_LEFT USING P_TC_NAME.
*
* WHEN 'L-'. "column left
* PERFORM FCODE_COLUMN_LEFT USING P_TC_NAME.
*
* WHEN 'R+'. "column right
* PERFORM FCODE_COLUMN_RIGHT USING P_TC_NAME.
*
* WHEN 'R++'. "total right
* PERFORM FCODE_TOTAL_RIGHT USING P_TC_NAME.
*
WHEN
'MARK'
.
"mark all filled lines
PERFORM FCODE_TC_MARK_LINES
USING P_TC_NAME
P_TABLE_NAME
P_MARK_NAME
.
CLEAR P_OK
.
WHEN
'DMRK'
.
"demark all filled lines
PERFORM FCODE_TC_DEMARK_LINES
USING P_TC_NAME
P_TABLE_NAME
P_MARK_NAME
.
CLEAR P_OK
.
* WHEN 'SASCEND' OR
* 'SDESCEND'. "sort column
* PERFORM FCODE_SORT_TC USING P_TC_NAME
* l_ok.
ENDCASE
.
ENDFORM
.
" USER_OK_TC
*&---------------------------------------------------------------------*
*& Form FCODE_INSERT_ROW *
*&---------------------------------------------------------------------*
FORM fcode_insert_row
USING P_TC_NAME
TYPE DYNFNAM
P_TABLE_NAME
.
*&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------*
DATA L_LINES_NAME
LIKE FELD
-NAME
.
DATA L_SELLINE
LIKE SY
-STEPL
.
DATA L_LASTLINE
TYPE
I
.
DATA L_LINE
TYPE
I
.
DATA L_TABLE_NAME
LIKE FELD
-NAME
.
FIELD-SYMBOLS <TC>
TYPE CXTAB_CONTROL
.
FIELD-SYMBOLS <TABLE>
TYPE
STANDARD
TABLE
.
FIELD-SYMBOLS <LINES>
TYPE
I
.
*&SPWIZARD: END OF LOCAL DATA------------------------------------------*
ASSIGN
(P_TC_NAME
)
TO <TC>
.
*&SPWIZARD: get the table, which belongs to the tc *
CONCATENATE P_TABLE_NAME
'[]'
INTO L_TABLE_NAME
.
"table body
ASSIGN
(L_TABLE_NAME
)
TO <TABLE>
.
"not headerline
*&SPWIZARD: get looplines of TableControl *
CONCATENATE
'G_' P_TC_NAME
'_LINES'
INTO L_LINES_NAME
.
ASSIGN
(L_LINES_NAME
)
TO <LINES>
.
*&SPWIZARD: get current line *
GET
CURSOR
LINE L_SELLINE
.
IF SY
-SUBRC
<>
0
.
" append line to table
L_SELLINE
= <TC>
-
LINES +
1
.
*&SPWIZARD: set top line *
IF L_SELLINE
>
<LINES>
.
<TC>
-TOP_LINE
= L_SELLINE
- <LINES>
+
1
.
ELSE
.
<TC>
-TOP_LINE
=
1
.
ENDIF
.
ELSE
.
" insert line into table
L_SELLINE
= <TC>
-TOP_LINE
+
L_SELLINE
-
1
.
L_LASTLINE
= <TC>
-TOP_LINE
+
<LINES>
-
1
.
ENDIF
.
*&SPWIZARD: set new cursor line *
L_LINE
= L_SELLINE
- <TC>
-TOP_LINE
+
1
.
*&SPWIZARD: insert initial line *
INSERT
INITIAL
LINE
INTO <TABLE>
INDEX L_SELLINE
.
<TC>
-
LINES
= <TC>
-
LINES +
1
.
*&SPWIZARD: set cursor *
SET
CURSOR
LINE L_LINE
.
ENDFORM
.
" FCODE_INSERT_ROW
*&---------------------------------------------------------------------*
*& Form FCODE_DELETE_ROW *
*&---------------------------------------------------------------------*
FORM fcode_delete_row
USING P_TC_NAME
TYPE DYNFNAM
P_TABLE_NAME
P_MARK_NAME
.
*&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------*
DATA L_TABLE_NAME
LIKE FELD
-NAME
.
FIELD-SYMBOLS <TC>
TYPE cxtab_control
.
FIELD-SYMBOLS <TABLE>
TYPE
STANDARD
TABLE
.
FIELD-SYMBOLS <WA>
.
FIELD-SYMBOLS <MARK_FIELD>
.
*&SPWIZARD: END OF LOCAL DATA------------------------------------------*
ASSIGN
(P_TC_NAME
)
TO <TC>
.
*&SPWIZARD: get the table, which belongs to the tc *
CONCATENATE P_TABLE_NAME
'[]'
INTO L_TABLE_NAME
.
"table body
ASSIGN
(L_TABLE_NAME
)
TO <TABLE>
.
"not headerline
*&SPWIZARD: delete marked lines *
DESCRIBE
TABLE <TABLE>
LINES <TC>
-
LINES
.
LOOP
AT <TABLE>
ASSIGNING <WA>
.
*&SPWIZARD: access to the component 'FLAG' of the table header *
ASSIGN
COMPONENT P_MARK_NAME
OF
STRUCTURE <WA>
TO <MARK_FIELD>
.
IF <MARK_FIELD>
=
'X'
.
DELETE <TABLE>
INDEX SYST
-TABIX
.
IF SY
-SUBRC
=
0
.
<TC>
-
LINES
= <TC>
-
LINES
-
1
.
ENDIF
.
ENDIF
.
ENDLOOP
.
ENDFORM
.
" FCODE_DELETE_ROW
*&---------------------------------------------------------------------*
*& Form COMPUTE_SCROLLING_IN_TC
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_TC_NAME name of tablecontrol
* -->P_OK ok code
*----------------------------------------------------------------------*
FORM COMPUTE_SCROLLING_IN_TC
USING P_TC_NAME
P_OK
.
*&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------*
DATA L_TC_NEW_TOP_LINE
TYPE
I
.
DATA L_TC_NAME
LIKE FELD
-NAME
.
DATA L_TC_LINES_NAME
LIKE FELD
-NAME
.
DATA L_TC_FIELD_NAME
LIKE FELD
-NAME
.
FIELD-SYMBOLS <TC>
TYPE cxtab_control
.
FIELD-SYMBOLS <LINES>
TYPE
I
.
*&SPWIZARD: END OF LOCAL DATA------------------------------------------*
ASSIGN
(P_TC_NAME
)
TO <TC>
.
*&SPWIZARD: get looplines of TableControl *
CONCATENATE
'G_' P_TC_NAME
'_LINES'
INTO L_TC_LINES_NAME
.
ASSIGN
(L_TC_LINES_NAME
)
TO <LINES>
.
*&SPWIZARD: is no line filled? *
IF <TC>
-
LINES
=
0
.
*&SPWIZARD: yes, ... *
L_TC_NEW_TOP_LINE
=
1
.
ELSE
.
*&SPWIZARD: no, ... *
CALL
FUNCTION
'SCROLLING_IN_TABLE'
EXPORTING
ENTRY_ACT
= <TC>
-TOP_LINE
ENTRY_FROM
=
1
ENTRY_TO
= <TC>
-
LINES
LAST_PAGE_FULL
=
'X'
LOOPS
= <LINES>
OK_CODE
= P_OK
OVERLAPPING
=
'X'
IMPORTING
ENTRY_NEW
= L_TC_NEW_TOP_LINE
EXCEPTIONS
* NO_ENTRY_OR_PAGE_ACT = 01
* NO_ENTRY_TO = 02
* NO_OK_CODE_OR_PAGE_GO = 03
OTHERS
=
0
.
ENDIF
.
*&SPWIZARD: get actual tc and column *
GET
CURSOR
FIELD L_TC_FIELD_NAME
AREA
L_TC_NAME
.
IF SYST
-SUBRC
=
0
.
IF L_TC_NAME
= P_TC_NAME
.
*&SPWIZARD: et actual column *
SET
CURSOR
FIELD L_TC_FIELD_NAME
LINE
1
.
ENDIF
.
ENDIF
.
*&SPWIZARD: set the new top line *
<TC>
-TOP_LINE
= L_TC_NEW_TOP_LINE
.
ENDFORM
.
" COMPUTE_SCROLLING_IN_TC
*&---------------------------------------------------------------------*
*& Form FCODE_TC_MARK_LINES
*&---------------------------------------------------------------------*
* marks all TableControl lines
*----------------------------------------------------------------------*
* -->P_TC_NAME name of tablecontrol
*----------------------------------------------------------------------*
FORM FCODE_TC_MARK_LINES
USING P_TC_NAME
P_TABLE_NAME
P_MARK_NAME
.
*&SPWIZARD: EGIN OF LOCAL DATA-----------------------------------------*
DATA L_TABLE_NAME
LIKE FELD
-NAME
.
FIELD-SYMBOLS <TC>
TYPE cxtab_control
.
FIELD-SYMBOLS <TABLE>
TYPE
STANDARD
TABLE
.
FIELD-SYMBOLS <WA>
.
FIELD-SYMBOLS <MARK_FIELD>
.
*&SPWIZARD: END OF LOCAL DATA------------------------------------------*
ASSIGN
(P_TC_NAME
)
TO <TC>
.
*&SPWIZARD: get the table, which belongs to the tc *
CONCATENATE P_TABLE_NAME
'[]'
INTO L_TABLE_NAME
.
"table body
ASSIGN
(L_TABLE_NAME
)
TO <TABLE>
.
"not headerline
*&SPWIZARD: mark all filled lines *
LOOP
AT <TABLE>
ASSIGNING <WA>
.
*&SPWIZARD: access to the component 'FLAG' of the table header *
ASSIGN
COMPONENT P_MARK_NAME
OF
STRUCTURE <WA>
TO <MARK_FIELD>
.
<MARK_FIELD>
=
'X'
.
ENDLOOP
.
ENDFORM .
"fcode_tc_mark_lines
*&---------------------------------------------------------------------*
*& Form FCODE_TC_DEMARK_LINES
*&---------------------------------------------------------------------*
* demarks all TableControl lines
*----------------------------------------------------------------------*
* -->P_TC_NAME name of tablecontrol
*----------------------------------------------------------------------*
FORM FCODE_TC_DEMARK_LINES
USING P_TC_NAME
P_TABLE_NAME
P_MARK_NAME
.
*&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------*
DATA L_TABLE_NAME
LIKE FELD
-NAME
.
FIELD-SYMBOLS <TC>
TYPE cxtab_control
.
FIELD-SYMBOLS <TABLE>
TYPE
STANDARD
TABLE
.
FIELD-SYMBOLS <WA>
.
FIELD-SYMBOLS <MARK_FIELD>
.
*&SPWIZARD: END OF LOCAL DATA------------------------------------------*
ASSIGN
(P_TC_NAME
)
TO <TC>
.
*&SPWIZARD: get the table, which belongs to the tc *
CONCATENATE P_TABLE_NAME
'[]'
INTO L_TABLE_NAME
.
"table body
ASSIGN
(L_TABLE_NAME
)
TO <TABLE>
.
"not headerline
*&SPWIZARD: demark all filled lines *
LOOP
AT <TABLE>
ASSIGNING <WA>
.
*&SPWIZARD: access to the component 'FLAG' of the table header *
ASSIGN
COMPONENT P_MARK_NAME
OF
STRUCTURE <WA>
TO <MARK_FIELD>
.
<MARK_FIELD>
= SPACE
.
ENDLOOP
.
ENDFORM .
"fcode_tc_mark_lines
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_0100
OUTPUT
.
SET
PF-STATUS
'STATUS'
.
* SET TITLEBAR 'xxx'.
ENDMODULE .
" STATUS_0100 OUTPUT
*&
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT
*
*
*
*
*
*
*
*
MODULE
ENDMODULE .
*
*
*
MODULE
ENDMODULE .
*
*&SPWIZARD:
*&SPWIZARD:
MODULE
*
ENDMODULE .
*&SPWIZARD:
*&SPWIZARD:
MODULE
ENDMODULE .
*&SPWIZARD:
*&SPWIZARD:
MODULE
ENDMODULE .
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&
*&
*&
*&
*&
*&
*&
*&
*&
*&
*&
*&---------------------------------------------------------------------*
*&SPWIZARD:
*&SPWIZARD:
*&SPWIZARD:
*&SPWIZARD:
*&SPWIZARD:
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
*&SPWIZARD:
*&SPWIZARD:
*&SPWIZARD:
*&SPWIZARD:
*&SPWIZARD:
*&SPWIZARD:
*&SPWIZARD:
*&SPWIZARD:
*&SPWIZARD:
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
*&SPWIZARD:
*&SPWIZARD:
*&SPWIZARD:
*&SPWIZARD:
*&SPWIZARD:
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
*
*
*----------------------------------------------------------------------*
*&SPWIZARD:
*&SPWIZARD:
*&SPWIZARD:
*&SPWIZARD:
*&SPWIZARD:
*&SPWIZARD:
*
*
*
*&SPWIZARD:
*&SPWIZARD:
*&SPWIZARD:
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
FORM
*&SPWIZARD:
*&SPWIZARD:
*&SPWIZARD:
*&SPWIZARD:
*&SPWIZARD:
ENDFORM .
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
FORM
*&SPWIZARD:
*&SPWIZARD:
*&SPWIZARD:
*&SPWIZARD:
*&SPWIZARD:
ENDFORM .
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
MODULE
*
ENDMODULE .