ALV报表 创建之前声明,
本文章只是记录个人第一个ALV报表的练习,所描述的是实现报表的每一个步骤,并对部分知识做描述,欢迎指导。
一 最终界面
输入字段定义:
字段名 | 字段描述 | 参考字段 | 备注 |
| 工厂 | EKKO-WERKS | 必输项 |
| 供应商 | EKKO-LIFNR |
|
| 物料号 | EKPO-MATNR |
|
二 用到的表和字段
Table:
TABLE NAME |
EKKO |
EKPO |
Field:
输出字段名 | 参考DB名 | 参考字段 | 类型 | 长度 | 备注 |
公司代码 | EKKO | BUKRS |
|
|
|
工厂 | EKPO | WERKS |
|
|
|
供应商 | EKKO | LIFNR |
|
|
|
采购订单类型 | EKKO | BSART |
|
|
|
采购组织 | EKKO | EKORG |
|
|
|
采购组 | EKKO | EKGRP |
|
|
|
币别 | EKKO | WAERS |
|
|
|
采购订单号 | EKPO | EBELN |
|
|
|
采购项次 | EKPO | EBELP |
|
|
|
物料号 | EKPO | MATNR |
|
|
|
库存地点 | EKPO | LGORT |
|
|
|
采购数量 | EKPO | MENGE |
|
|
|
采购单价 | EKPO | NETPR |
|
|
|
三 步骤
(一)写代码的前期工作
1.通过T-CODE SE38 进入ABAP编辑器,创建程序。如图1 所示 ,
- “程序”的后边填写要创建的程序名称(注意名字的命名要有意义,遵守命名规则);
- “子对象”中选择“源程序”,之后选择“创建”;
- 进入 ABAP:程序属性 ,设置刚刚新增程序的属性。在"Title"的位置填写程序的介绍,或者说是一个程序的说明;
- “Attributes”中的 "Type "选择 “可执行程序”,“Status” 类型选择“测试程序”(type、Status 的其他类型另行介绍);
- 最后点击“ 保存 ”
![](https://i-blog.csdnimg.cn/blog_migrate/1e6aa0a8b193516799f4515a07dc01c2.png)
2. 创建程序的时候会让选择一个开发类,这里因为我要传到测试系统,所以选了一个事先已经存在的开发类(自己事先创建的Package)而非本地对象,如图 2 所示。
![](https://i-blog.csdnimg.cn/blog_migrate/5bee1cb73f605215130b3fedaf21f539.png)
3.要传输到测试系统还需要一个CTS (传输号),如图 3 所示,创建一个CTS,
4.注意,创建请求的“短描述”一定要有意义,最好 写上功能 版本 和 日期 时间。如图4所示。维护好短描述,点击保存按钮,返回到传输号请求,如图 5,这样 CTS(传输号)就建好了,之后我们的操作保存时都要保存到这个传输号中(主传输号)。
![](https://i-blog.csdnimg.cn/blog_migrate/b0b3d014cac85932a8f6d8ce13d92f57.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3ebcf96e6b5d4c9e6c25f5c61f10db41.png)
5.经过以上操作后,会直接跳到编写程序代码界面,如图 6 所示。在这里我们可以打开左边的导航,如图7所示,此时,只有一个名为ZMMZRPOLIST_B1的空程序,我们还可以切换到 package,查看我们创建的程序是否包含在之前指定的开发类,如图 8 所示。
![](https://i-blog.csdnimg.cn/blog_migrate/7d59bda42fc7b3b28199c3c5caa0dd2f.png)
现在要真正的编写程序了!!
(二)代码实现
这里我将程序分成了3个包含(块)来实现:ZMMZRPOLIST_B1_top(存放全局)、ZMMZRPOLIST_B1_e01(存放事件)、ZMMZRPOLIST_B1_f01(存放子程序),如图9,所示。
注意,
- top 一般放全局数据,eo1定义事件、f01定义我们编写的子程序(如,处理数据的程序、显示数据的程序等)
- 书写顺序(最好)top → e01→f01
![](https://i-blog.csdnimg.cn/blog_migrate/ec5105ecad2277c3d63cea68666f444d.png)
1.双击 TOP,因为现在系统中不存在对应TOP对象,所以会有个提示框询问是否创建,此时选择 “是” ,如图10 所示;
选择是之后,会先让我们设置TOP属性,只需要维护Title和Status就好(有没有注意到type自动选择了INCLUDE程序),如图11所示。
![](https://i-blog.csdnimg.cn/blog_migrate/67d61b613b8f58ba724333b468b0c366.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c31cffc0398037fe28cee7756d419ca9.png)
看,当我们保存时,这里又要我们选择开发类了,选择的还是和之前一样就行。具体如图12所示。
![](https://i-blog.csdnimg.cn/blog_migrate/615dc7b6f85aafa6eb5402b17964478b.png)
同样的还要选择传输号,如图12所示,因为之前就创建了个主传输号并且没有被释放发布,所以选择默认的就行,我们这里点击就好。
![](https://i-blog.csdnimg.cn/blog_migrate/161b93fd8e20aca020c042a51e6c42ed.png)
好吧,现在才是开始叙写第一个包含
1.1首先写上主程序名
REPORT zmmzrpolist_bln .
1.2 引入表并从表中获取我们要的字段存放到我们新建的临时表中。这里类型为标准表中的数据,最好用“LIKE”声明,如果用type得到的数据可能不全,从而导致之后的数据显示有误。
************************************************************************
* Trables 标准表
************************************************************************
TABLES: ekko,ekpo.
************************************************************************
* Business Data Define
************************************************************************
DATA:BEGIN OF gs_list ,
bukrs LIKE ekko-bukrs, "公司代码
werks LIKE ekpo-werks, "工厂
lifnr LIKE ekko-lifnr, "供应商
bsart LIKE ekko-bsart, "采购订单类型
ekorg LIKE ekko-ekorg, "采购组织
ekgrp LIKE ekko-ekgrp, "采购组
waers LIKE ekko-waers, "币别
ebeln LIKE ekpo-ebeln, "采购订单号
ebelp LIKE ekpo-ebelp, "采购项次
matnr LIKE ekpo-matnr, "物料号
lgort LIKE ekpo-lgort, "库存地点
menge LIKE ekpo-menge, "采购数量
netpr LIKE ekpo-netpr, "采购单价
END OF gs_list.
DATA gt_list LIKE STANDARD TABLE OF gs_list.
1.3定义ALV变量
************************************************************************
* ALV Define 定义ALV变量
************************************************************************
TYPE-POOLS:slis."制定alv类型组
DATA:
gt_fieldcat TYPE slis_t_fieldcat_alv, "用于定义ALV列字段相关类型数据,是表字段的整体
gs_layout TYPE slis_layout_alv. "用于定义布局类型数据对象
1.4定义选择屏幕输入条件
- OBLIGATORY:表示必选。如果某个屏幕输入元素处于隐藏状态,即使它是必输入的,则在提交时也不会提示你必输入(但如果是必须的,在隐藏前一要输入,否则会出错并要求重新输入),只有在显示状态时且不输入时才会提示。(COPY https://www.cnblogs.com/jiangzhengjun/p/4265184.html)
- MODIF ID key:设置修改组代码,方便屏幕的元素的批量修改,key中设定的代码将被赋给系统内表SCREEN-GROUP1字段(COPY https://www.cnblogs.com/jiangzhengjun/p/4265184.html)
- SELECTION-SCREEN:BEGIN OF BLOCK b1……SELECTION-SCREEN:END OF BLOCK b1.用来定义屏幕框架,即格式化选择屏幕
- WITH FRAME TITLE text-s01:屏幕块名或者是说明(这里定义的是“选择条件”如图14所示)
- PARAMETERS:设置单一的选择框,即为变量定义输入字段
- SELECT-OPTIONS:设置一定范围,为选择标准定义 输入字段
************************************************************************
* SELECTION-SELECTION 定义选择屏幕输入条件
************************************************************************
SELECTION-SCREEN:BEGIN OF BLOCK b1 WITH FRAME TITLE text-s01.
PARAMETERS: pa_werks LIKE ekpo-werks OBLIGATORY MEMORY ID wer . "工厂
SELECT-OPTIONS: so_lifnr FOR ekko-lifnr , "供应商
so_matnr FOR ekpo-matnr. "物料
SELECTION-SCREEN:END OF BLOCK b1.
![](https://i-blog.csdnimg.cn/blog_migrate/1b6513dfb82b5e1c0544510fc45acd6e.png)
- “选择条件”即text-s01的设置 :
菜单栏中选择 “转到” -“文本元素”-“文本符号”如图15所示;输入文本定义的编码和要输出的文字如图16所示;当我们选择保存时,会弹出如图17所示的提示框,选择√即可;这时注意后边字段长度的变化如图18,现在是中文状态下,默认的最小、最大长度为当前状态的长度,但当我们想要在其他语言状态下显示为其他语言可能长度不够,所以,我们将最大长度设置的稍微长点
![](https://i-blog.csdnimg.cn/blog_migrate/c6d58dc6a0dfcc9cc3ebf6f2255971d3.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f9ca95460a3e7cf074590c4d9dafe539.png)
![](https://i-blog.csdnimg.cn/blog_migrate/cbcb9f74c766f9b28cf64ebc2a494940.png)
![](https://i-blog.csdnimg.cn/blog_migrate/07757a9f211ebe7c3d8dfde2ebe27097.png)
- 不同语言显示的设置(这里我们设置的相关文本所在的程序要处于激活状态,我们之后还会涉及到其他文本,这一步骤可以留在最后设置)
菜单工具栏中选择“转到”→“翻译”,在目标语言中选择要实现的语言;这样就可以设置目标语言下显示的对应语言,具体效果如图19所示。
现在先让我们来展示下我们设置的选择屏幕,如图20所示,这时发现标有1和4的地方和我们最终要呈现的屏幕不一致,2和3的部分已实现,这就说明我们的程序在设置过程中还缺少了一些操作,接下来就是完善程序。
- 菜单栏中选择“转到”→“文本元素”→“选择文本”,设置Selection texts,即将最后一列“dictionary”打上对勾,点击保存,将自动匹配数据库中对应的名字(当然Text可以自己设置,但是最好不要),具体效果如图21所示
![](https://i-blog.csdnimg.cn/blog_migrate/2e5ee33567d7836ede69dad8f0959035.png)
再次展示屏幕,效果如果22所示
标题设置,如图23所示,
再次展示屏幕
![](https://i-blog.csdnimg.cn/blog_migrate/df5890318bc607f0421aadc0028cd814.png)
2.新增子例程序
- 'REUSE_ALV_FIELDCATALOG_MERGE' "根据内表结构返回FIELDCAT字段结构信息
- 'REUSE_ALV_GRID_DISPLAY' " 输出ALV报表,定义其为GRID模式
- i_grid_title = '采购订单查询' "ALV 显示标题
- gs_layout-colwidth_optimize = 'X'. "设置LAYOUT输出格式最优化
- i_program_name = sy-repid "程序名
- i_internal_tabname = 'gs_list' "内表名称,必须为输出内表所自定义的STRUCTURE名
- i_inclname = 'ZMMZRPOLIST_BLN_TOP'
- ct_fieldcat = gt_fieldcat . "导出FIELDCAT内表数据
-
ALV调用的几个标准函数 (前辈总结)
-
ALV详解:Function ALV(一)(非常推荐)(除此之外此前辈的博客都可以看下)
- 注意,多表链接字段引用格式ekko~bukrs
- 数据查询语句SELECT(前辈总结)
FORM frm_build_fieldcat . "处理数据
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = sy-repid
i_internal_tabname = 'GS_LIST'
i_inclname = 'ZMMZRPOLIST_B1_TOP'
CHANGING
ct_fieldcat = gt_fieldcat
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM. "frm_build_fieldcat
*&---------------------------------------------------------------------*
*& Form frm_build_layout
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM frm_build_layout. " 布局
gs_layout-colwidth_optimize = 'X'.
ENDFORM. "frm_build_layout
*&---------------------------------------------------------------------*
*& Form frm_get_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM frm_get_data. "获得要显示的ALV报表数据
SELECT
ekko~bukrs ekpo~werks ekko~lifnr ekko~bsart ekko~ekorg
ekko~ekgrp ekko~waers ekpo~ebeln ekpo~ebelp ekpo~matnr
ekpo~lgort ekpo~menge ekpo~netpr
INTO CORRESPONDING FIELDS OF TABLE gt_list
FROM ekko JOIN ekpo
ON ekko~ebeln = ekpo~ebeln
WHERE werks = pa_werks AND
lifnr IN so_lifnr AND
matnr IN so_matnr.
IF sy-subrc NE 0.
"无数据
g_data_found = ''.
MESSAGE S001 DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
RETURN.
ELSE.
g_data_found = 'X'.
ENDIF.
ENDFORM. "frm_get_datas
*&---------------------------------------------------------------------*
*& Form frm_dispaly_alv
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM frm_dispaly_alv . "设置显示ALV报表格式
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_grid_title = text-s02
it_fieldcat = gt_fieldcat
is_layout = gs_layout
i_save = 'A'
TABLES
t_outtab = gt_list
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " FRM_ALV_DISP
3.新增事件
同理双击ZMMZRPOLIST_B1_E01,书写事件。
- AT SELECTION-SCREEN:用户在选择屏幕中执行某些功能后被触发。
- START-OF-SELECTION:选择开始事件,如果报表中含有选择屏幕,则在选择屏幕的处理结束后触发,是报表程序的默认事件块;如果程序中部分代码不隶属于任何其它相关事件块关键字,则自动被插入该事件块的初始部分。
- END-OF-SELECTION:选择结束事件,如果程序中使用逻辑数据库,则在所有逻辑数据库处理结束后触发;一般在该事件之中输出列表 (选择屏幕事件)
AT SELECTION-SCREEN.
START-OF-SELECTION.
PERFORM frm_build_fieldcat. "处理数据
PERFORM frm_build_layout. "布局
PERFORM frm_get_data.
END-OF-SELECTION.
PERFORM frm_dispaly_alv. "alv显示
(三)执行
1.完成以上操作之后(当然每一步都已经进行了保存),点击
进行激活程序(程序只有激活后才可以生效),将和刚刚创建的程序相关的所有对象全选
,点击
,即可激活成功,集体效果如图25所示。
![](https://i-blog.csdnimg.cn/blog_migrate/6895031daca0054fe753cdc74dcacb91.png)
2.执行程序
2.1 点击 或者按F8键执行程序,输入相应的工厂可以看到如图26所示效果。
因为在开发系统没有数据,所以只显示了列标题。
![](https://i-blog.csdnimg.cn/blog_migrate/8d6b97f0047efada4b74cfacc7ba1f6a.png)
2.2可以进一步完善程序,加些判断,当没有数据时,显示无数据。可以自己加“消息”,也可以调用系统的。
message的建立(如图27所示):
- T-CODE SE91
- 键入MESSAGE CLASS ,即输入message的名称,方便以后调用,最好是,程序名_mess。
- Create ML
![](https://i-blog.csdnimg.cn/blog_migrate/6dfdaa8f9766bc058dbfbd1aa2d3abc1.png)
- 键入message class 短文(short text)描述,如图28
- 这里任然要选择开发类和CTS号
- 设置好CTS号,就可以设置MESSAGE ,具体效果如果29
MSSAGE简单介绍(具体的以后会补充):
“& & & &” :说明可以自己在引用MESSAGE 时,可以任意输入的文本,但是只能输入四个选项(可以少输,但message中最多只能输入4项)
“无相关数据”:就是我们需要message提示的信息了。
引用方法,(E代表警告)
MESSAGE S001 DISPLAY LIKE 'E'.
我们要把设置的message引入到程序中,这里要放到全局模块TOP中,如图30
另,在TOP 中再添加一个变量 DATA: g_data_found TYPE c.
子例程中判断:
FORM frm_get_data.
SELECT
ekko~bukrs ekpo~werks ekko~lifnr ekko~bsart ekko~ekorg
ekko~ekgrp ekko~waers ekpo~ebeln ekpo~ebelp ekpo~matnr
ekpo~lgort ekpo~menge ekpo~netpr
INTO CORRESPONDING FIELDS OF TABLE gt_list
FROM ekko JOIN ekpo
ON ekko~ebeln = ekpo~ebeln
WHERE werks = pa_werks AND
lifnr IN so_lifnr AND
matnr IN so_matnr.
IF sy-subrc NE 0. " 判断ALV 是否有数据 NE 是 等于
"无数据
g_data_found = ''.
MESSAGE S001 DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
RETURN.
ELSE.
g_data_found = 'X'.
ENDIF.
ENDFORM.
(四)创建T-CODE
为了方便调用程序,设置一个T-CODE,最好同程序名相同。
注意,
- 标有 3 的 位置即在“创建 报告事务处理”中,“程序” 指的是我最开始利用T-CODE SE38 创建的 program。
- 这里同样在创建时需要选择开发类和CTS。
![](https://i-blog.csdnimg.cn/blog_migrate/537e38397a419229c9d201f6ebeaf612.png)
详细代码:
*&---------------------------------------------------------------------*
*& Report ZMMZRPOLIST_B1
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
INCLUDE ZMMZRPOLIST_B1_top. "全局数据
INCLUDE ZMMZRPOLIST_B1_e01. "事件
INCLUDE ZMMZRPOLIST_B1_f01. "子例程
*&---------------------------------------------------------------------*
*& 包括 ZMMZRPOLIST_B1_TOP
*&---------------------------------------------------------------------*
REPORT zmmzrpolist_b1
MESSAGE-ID ZMMZRPOLIST_B1_MES.
************************************************************************
* Trables
************************************************************************
TABLES: ekko,ekpo.
************************************************************************
* Business Data Define
************************************************************************
DATA:BEGIN OF gs_list ,
bukrs LIKE ekko-bukrs, "公司代码
werks LIKE ekpo-werks, "工厂
lifnr LIKE ekko-lifnr, "供应商
bsart LIKE ekko-bsart, "采购订单类型
ekorg LIKE ekko-ekorg, "采购组织
ekgrp LIKE ekko-ekgrp, "采购组
waers LIKE ekko-waers, "币别
ebeln LIKE ekpo-ebeln, "采购订单号
ebelp LIKE ekpo-ebelp, "采购项次
matnr LIKE ekpo-matnr, "物料号
lgort LIKE ekpo-lgort, "库存地点
menge LIKE ekpo-menge, "采购数量
netpr LIKE ekpo-netpr, "采购单价
END OF gs_list.
DATA gt_list LIKE STANDARD TABLE OF gs_list.
DATA: g_data_found TYPE c. "用来判断是否ALV中有数据的变量,可以不设置此变量直接判断
************************************************************************
* ALV Define 定义ALV变量
************************************************************************
TYPE-POOLS:slis."制定alv类型组
DATA:
gt_fieldcat TYPE slis_t_fieldcat_alv, "用于定义ALV列字段相关类型数据,是表字段的整体
gs_layout TYPE slis_layout_alv. "用于定义布局类型数据对象
************************************************************************
* SELECTION-SELECTION 定义选择屏幕输入条件
************************************************************************
SELECTION-SCREEN:BEGIN OF BLOCK b1 WITH FRAME TITLE text-s01.
PARAMETERS: pa_werks LIKE ekpo-werks OBLIGATORY MEMORY ID wer . "工厂
SELECT-OPTIONS: so_lifnr FOR ekko-lifnr , "供应商
so_matnr FOR ekpo-matnr. "物料
SELECTION-SCREEN:END OF BLOCK b1.
*&---------------------------------------------------------------------*
*& 包括 ZMMZRPOLIST_B1_E01
*&---------------------------------------------------------------------*
AT SELECTION-SCREEN.
START-OF-SELECTION.
PERFORM frm_build_fieldcat. "处理数据
PERFORM frm_build_layout. "布局
PERFORM frm_get_data.
END-OF-SELECTION.
PERFORM frm_dispaly_alv. "alv显示
*&---------------------------------------------------------------------*
*& 包括 ZMMZRPOLIST_B1_F01
*&---------------------------------------------------------------------*
FORM frm_build_fieldcat .
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = sy-repid
i_internal_tabname = 'GS_LIST'
i_inclname = 'ZMMZRPOLIST_B1_TOP'
CHANGING
ct_fieldcat = gt_fieldcat
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. "frm_build_fieldcat
*&---------------------------------------------------------------------*
*& Form frm_build_layout
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM frm_build_layout.
gs_layout-colwidth_optimize = 'X'.
ENDFORM. "frm_build_layout
*&---------------------------------------------------------------------*
*& Form frm_get_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM frm_get_data.
SELECT
ekko~bukrs ekpo~werks ekko~lifnr ekko~bsart ekko~ekorg
ekko~ekgrp ekko~waers ekpo~ebeln ekpo~ebelp ekpo~matnr
ekpo~lgort ekpo~menge ekpo~netpr
INTO CORRESPONDING FIELDS OF TABLE gt_list
FROM ekko JOIN ekpo
ON ekko~ebeln = ekpo~ebeln
WHERE werks = pa_werks AND
lifnr IN so_lifnr AND
matnr IN so_matnr.
IF sy-subrc NE 0. " 判断ALV 是否有数据 NE 是 等于
"无数据
g_data_found = ''.
MESSAGE S001 DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
RETURN.
ELSE.
g_data_found = 'X'.
ENDIF.
ENDFORM. "frm_get_datas
*&---------------------------------------------------------------------*
*& Form frm_dispaly_alv
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM frm_dispaly_alv .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_grid_title = text-s02
it_fieldcat = gt_fieldcat
is_layout = gs_layout
i_save = 'A'
TABLES
t_outtab = gt_list
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " FRM_ALV_DISP
(五)传输到测试系统
1.释放传输请求号(CTS)
(在释放之前,确保暂时不会有其他修改或者完善的地方了,比如是否还要完善各语言系统间的翻译等)
1.1 T-CODE SE09 ,进入到TRANSPORT ORGANIZER,显示可修改的CTS,如图32所示
![](https://i-blog.csdnimg.cn/blog_migrate/cebc4cf68bd6ac6291a158b301d9e57b.png)
1.2 在建立程序中会有两个传输请求号,我们首先释放里层传输号(子传输号),然后是主传输号
具体操作,光标定位到传输号, 点击 。具体如图 33所示。
![](https://i-blog.csdnimg.cn/blog_migrate/577964a7a44382163c8445ff2bf851a1.png)
在释放主传输号会跳转到如图34界面,这时候,要不断点击 ,进行刷新,直到所有红色区域消失如图 35 所示,然后点击
,返回上一层级如图36所示,可以看到多了些东西,并且传输号后出现√,那么说明CTS释放完成。到此,开发系统的操作已经完成。
![](https://i-blog.csdnimg.cn/blog_migrate/9db41924080f91d44f1641d3fc638ff9.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b1d022f57947f936a820e510e71b7c05.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3adc171f4da14d8412d53449b6ff3ca1.png)
2.接下来进入到测试系统
2.1 T-CODE 输入STMS进入传输管理系统,点击图标,如图37所示
![](https://i-blog.csdnimg.cn/blog_migrate/8b3f82ffe2a7b67f340c5e02a1ed8c94.png)
2.2 选择要传输到的系统,双击,如图38
![](https://i-blog.csdnimg.cn/blog_migrate/850d7e8fb2fc182a40e3daa60ebabc5c.png)
2.3 点击 输入传输号(主传输号),如图 39 所示;此时可以看到如图40 所示,状态(St的位置)为
,说明还没有将程序传输到测试系统。
![](https://i-blog.csdnimg.cn/blog_migrate/6079aa75141cb78d084bec8b26444d98.png)
![](https://i-blog.csdnimg.cn/blog_migrate/508349b72975758f3f6be3408e5e5919.png)
2.4 光标定位到Request(CTS号)上,点击 ,如图41 所示。
![](https://i-blog.csdnimg.cn/blog_migrate/934c1f22d72eda26491f40ade741e79e.png)
2.5输入传输到的系统(测试系统)的集团号即可,如图42所示。
![](https://i-blog.csdnimg.cn/blog_migrate/0f95481e896c87809b7452ffe77c4ba7.png)
接下来选择“是”就好了!如图43所示。
![](https://i-blog.csdnimg.cn/blog_migrate/5c3c3d6ea449a6595608a53b7e7bd345.png)
2.6 最后,可以看到 状态位置 已变成,说明传输完成,接下来就可以测试程序是否能够有效执行了,具体效果如图44所示。
![](https://i-blog.csdnimg.cn/blog_migrate/bd83d814925dbb573f052e212dfaad2c.png)
*-----------------更新 20200514
其他传输CTS 方法——直接在开发机传输
开发机 stms
点击 小车
因为先传输到测试机,所以定位测试机,进行双击
找到找传输的内容,按F9 选中,点击进行单个传输
输入目标客户系统端号(测试机)
登陆目标系统
回车后,可以看到传输界面中 小车的标识,标识正在传输
传输完成会显示
刷新之后,状态就变成
至此 CTS 传输到 测试机功能结束
传到生产机,方法同(均在开发机传输)
*----------------------------更新 20200514 end
以上操作只是简单的显示了数据,至于其他的功能后续会有完善(比如汇总、某行双击出现详细信息等)
注意,每一次重新更改都会创建一个新的传输号,这样就都需要释放-传输,删除程序也是一样哦!