根据CR获取CR下的开发对象
2014-01-22 09:22
260 查看
有时候管控或者其他需要,需要得到开发对象
代码写的比较粗糙,注视之类的也没按要求写 ,本来应该用alv展示,图省事儿用的table control。
界面如图
代码如下:
DATA:
BEGIN OF str_cr,
requestid TYPE trkorr,
END OF str_cr.
DATA:
l_cr TYPE trkorr.
DATA:
i_requestlist LIKE TABLE OF str_cr WITH HEADER LINE.
DATA:
BEGIN OF str_object,
requestid TYPE trkorr ,
" 请求/任务
taskid TYPE trkorr , " 请求/任务
as4pos TYPE ddposition ,
" 字典:行项
pgmid TYPE pgmid ,
" 请求和任务中的程序标识
object TYPE trobjtype ,
" 对象类型
obj_name TYPE trobj_name ,
" 对象清单中的对象名
objfunc TYPE objfunc ,
" 对象功能
lockflag TYPE lockflag , " 对象条目的锁定状态或输入状态
gennum TYPE trgennum ,
" 传输组织器中对象条目的语种信息
lang TYPE spras ,
" 语言代码
activity TYPE tractivity ,
"
as4text TYPE as4text ,
" 描述 R/3 资源库对象的短文本
text TYPE ddtext
,
" 说明简要文字
END OF str_object.
DATA:
o_devobjlist LIKE TABLE OF str_object WITH HEADER LINE.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS:
s_cr FOR l_cr NO INTERVALS.
"CR号
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
LOOP AT s_cr.
i_requestlist-requestid = s_cr-low.
APPEND i_requestlist.
ENDLOOP.
DATA: li_e070 TYPE STANDARD TABLE OF e070 WITH KEY trkorr WITH HEADER LINE,
li_e071
TYPE STANDARD TABLE OF e071 WITH KEY trkorr as4pos WITH HEADER LINE,
li_e07t
TYPE STANDARD TABLE OF e07t WITH KEY trkorr WITH HEADER LINE,
lt_object_table TYPE STANDARD TABLE OF ko100 WITH KEY pgmid object WITH HEADER LINE.
DATA: li_requestlist_rec TYPE STANDARD TABLE OF zbs00s_requestlist WITH HEADER LINE,
li_devobjlist TYPE STANDARD TABLE OF zbs00s_devobjlist WITH KEY requestid taskid as4pos WITH HEADER LINE,
li_devobjlist_rec TYPE STANDARD TABLE OF zbs00s_devobjlist WITH KEY requestid taskid as4pos.
DATA: l_trkorr_rec TYPE trkorr,
l_tempstr TYPE string.
CHECK i_requestlist[] IS NOT INITIAL.
SORT i_requestlist BY requestid ASCENDING.
DELETE ADJACENT DUPLICATES FROM i_requestlist COMPARING ALL FIELDS.
CALL FUNCTION 'TR_OBJECT_TABLE'
TABLES
wt_object_text = lt_object_table.
SELECT *
FROM e070
INTO TABLE li_e070
WHERE trkorr IN s_cr OR strkorr IN s_cr.
SELECT *
FROM e07t
INTO TABLE li_e07t
WHERE trkorr IN s_cr AND langu = '1'.
IF li_e070[] IS NOT INITIAL.
SELECT *
FROM e071
INTO TABLE li_e071
FOR ALL ENTRIES IN li_e070
WHERE trkorr = li_e070-trkorr.
ENDIF.
DELETE li_e071 WHERE objfunc = 'D'.
**
LOOP AT li_e071.
CLEAR li_devobjlist.
MOVE-CORRESPONDING li_e071 TO li_devobjlist.
READ TABLE i_requestlist WITH KEY requestid = li_e071-trkorr TRANSPORTING NO FIELDS.
IF sy-subrc = 0.
li_devobjlist-requestid = li_e071-trkorr.
ELSE.
li_devobjlist-taskid = li_e071-trkorr.
READ TABLE li_e070 WITH KEY trkorr = li_e071-trkorr.
IF sy-subrc = 0.
li_devobjlist-requestid = li_e070-strkorr.
ENDIF.
ENDIF.
READ TABLE li_e07t WITH KEY trkorr = li_devobjlist-requestid.
IF sy-subrc = 0.
li_devobjlist-as4text = li_e07t-as4text.
ENDIF.
READ TABLE lt_object_table WITH KEY pgmid = li_e071-pgmid object = li_e071-object.
IF sy-subrc = 0.
li_devobjlist-text = lt_object_table-text.
ENDIF.
APPEND li_devobjlist.
ENDLOOP.
**
LOOP AT li_e071 WHERE pgmid = 'CORR' AND object = 'MERG'.
CLEAR l_trkorr_rec.
SPLIT li_e071-obj_name AT space INTO l_trkorr_rec l_tempstr.
li_requestlist_rec-requestid = l_trkorr_rec.
APPEND li_requestlist_rec.
ENDLOOP.
IF li_requestlist_rec[] IS NOT INITIAL.
SORT li_requestlist_rec BY requestid ASCENDING.
DELETE ADJACENT DUPLICATES FROM li_requestlist_rec COMPARING ALL FIELDS.
CALL FUNCTION 'ZBS00_FM_GETDEVOBJ'
TABLES
i_requestlist = li_requestlist_rec[]
o_devobjlist = li_devobjlist_rec[].
APPEND LINES OF li_devobjlist_rec[] TO li_devobjlist[].
ENDIF.
SORT li_devobjlist[] BY requestid ASCENDING taskid ASCENDING as4pos ASCENDING.
DELETE ADJACENT DUPLICATES FROM li_devobjlist[] COMPARING requestid taskid as4pos.
o_devobjlist[] = li_devobjlist[].
"展现
CALL SCREEN 8001.
最后对象信息保存在 内表o_devobjlist[],用table
control进行了展现
代码写的比较粗糙,注视之类的也没按要求写 ,本来应该用alv展示,图省事儿用的table control。
界面如图
代码如下:
DATA:
BEGIN OF str_cr,
requestid TYPE trkorr,
END OF str_cr.
DATA:
l_cr TYPE trkorr.
DATA:
i_requestlist LIKE TABLE OF str_cr WITH HEADER LINE.
DATA:
BEGIN OF str_object,
requestid TYPE trkorr ,
" 请求/任务
taskid TYPE trkorr , " 请求/任务
as4pos TYPE ddposition ,
" 字典:行项
pgmid TYPE pgmid ,
" 请求和任务中的程序标识
object TYPE trobjtype ,
" 对象类型
obj_name TYPE trobj_name ,
" 对象清单中的对象名
objfunc TYPE objfunc ,
" 对象功能
lockflag TYPE lockflag , " 对象条目的锁定状态或输入状态
gennum TYPE trgennum ,
" 传输组织器中对象条目的语种信息
lang TYPE spras ,
" 语言代码
activity TYPE tractivity ,
"
as4text TYPE as4text ,
" 描述 R/3 资源库对象的短文本
text TYPE ddtext
,
" 说明简要文字
END OF str_object.
DATA:
o_devobjlist LIKE TABLE OF str_object WITH HEADER LINE.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS:
s_cr FOR l_cr NO INTERVALS.
"CR号
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
LOOP AT s_cr.
i_requestlist-requestid = s_cr-low.
APPEND i_requestlist.
ENDLOOP.
DATA: li_e070 TYPE STANDARD TABLE OF e070 WITH KEY trkorr WITH HEADER LINE,
li_e071
TYPE STANDARD TABLE OF e071 WITH KEY trkorr as4pos WITH HEADER LINE,
li_e07t
TYPE STANDARD TABLE OF e07t WITH KEY trkorr WITH HEADER LINE,
lt_object_table TYPE STANDARD TABLE OF ko100 WITH KEY pgmid object WITH HEADER LINE.
DATA: li_requestlist_rec TYPE STANDARD TABLE OF zbs00s_requestlist WITH HEADER LINE,
li_devobjlist TYPE STANDARD TABLE OF zbs00s_devobjlist WITH KEY requestid taskid as4pos WITH HEADER LINE,
li_devobjlist_rec TYPE STANDARD TABLE OF zbs00s_devobjlist WITH KEY requestid taskid as4pos.
DATA: l_trkorr_rec TYPE trkorr,
l_tempstr TYPE string.
CHECK i_requestlist[] IS NOT INITIAL.
SORT i_requestlist BY requestid ASCENDING.
DELETE ADJACENT DUPLICATES FROM i_requestlist COMPARING ALL FIELDS.
CALL FUNCTION 'TR_OBJECT_TABLE'
TABLES
wt_object_text = lt_object_table.
SELECT *
FROM e070
INTO TABLE li_e070
WHERE trkorr IN s_cr OR strkorr IN s_cr.
SELECT *
FROM e07t
INTO TABLE li_e07t
WHERE trkorr IN s_cr AND langu = '1'.
IF li_e070[] IS NOT INITIAL.
SELECT *
FROM e071
INTO TABLE li_e071
FOR ALL ENTRIES IN li_e070
WHERE trkorr = li_e070-trkorr.
ENDIF.
DELETE li_e071 WHERE objfunc = 'D'.
**
LOOP AT li_e071.
CLEAR li_devobjlist.
MOVE-CORRESPONDING li_e071 TO li_devobjlist.
READ TABLE i_requestlist WITH KEY requestid = li_e071-trkorr TRANSPORTING NO FIELDS.
IF sy-subrc = 0.
li_devobjlist-requestid = li_e071-trkorr.
ELSE.
li_devobjlist-taskid = li_e071-trkorr.
READ TABLE li_e070 WITH KEY trkorr = li_e071-trkorr.
IF sy-subrc = 0.
li_devobjlist-requestid = li_e070-strkorr.
ENDIF.
ENDIF.
READ TABLE li_e07t WITH KEY trkorr = li_devobjlist-requestid.
IF sy-subrc = 0.
li_devobjlist-as4text = li_e07t-as4text.
ENDIF.
READ TABLE lt_object_table WITH KEY pgmid = li_e071-pgmid object = li_e071-object.
IF sy-subrc = 0.
li_devobjlist-text = lt_object_table-text.
ENDIF.
APPEND li_devobjlist.
ENDLOOP.
**
LOOP AT li_e071 WHERE pgmid = 'CORR' AND object = 'MERG'.
CLEAR l_trkorr_rec.
SPLIT li_e071-obj_name AT space INTO l_trkorr_rec l_tempstr.
li_requestlist_rec-requestid = l_trkorr_rec.
APPEND li_requestlist_rec.
ENDLOOP.
IF li_requestlist_rec[] IS NOT INITIAL.
SORT li_requestlist_rec BY requestid ASCENDING.
DELETE ADJACENT DUPLICATES FROM li_requestlist_rec COMPARING ALL FIELDS.
CALL FUNCTION 'ZBS00_FM_GETDEVOBJ'
TABLES
i_requestlist = li_requestlist_rec[]
o_devobjlist = li_devobjlist_rec[].
APPEND LINES OF li_devobjlist_rec[] TO li_devobjlist[].
ENDIF.
SORT li_devobjlist[] BY requestid ASCENDING taskid ASCENDING as4pos ASCENDING.
DELETE ADJACENT DUPLICATES FROM li_devobjlist[] COMPARING requestid taskid as4pos.
o_devobjlist[] = li_devobjlist[].
"展现
CALL SCREEN 8001.
最后对象信息保存在 内表o_devobjlist[],用table
control进行了展现
相关文章推荐
- 根据CR获取CR下的开发对象
- 根据包名获取Class对象
- 使用VMware VSphere WebService SDK进行开发 (五)——根据虚拟机的名称获取对应主机的IP地址
- 根据类名,获取接口对象
- 利用Java反射根据属性名获取对象值和类型代码
- rcp(插件开发)如何获取IWorkbenchPage对象?
- 根据xid获取 X5 组件对象 和HTML标签dom对象
- 【Android开发技巧】Fragment中获取Context对象的两种方法
- jQuery 获取对象 根据属性、内容匹配, 还有表单元素匹配
- 总结!根据URI的不同来实现本地和远程的连接对象的获取 3ff8
- jQuery根据ID、CLASS、等获取对象
- Android开发中根据图片名称获取在drawable中的ID
- android 开发如何将数据封装成对象以及从对象中获取出来
- 获取集合、数组后要判断为空的必要性以及根据构造器创建对象后不是null的证实
- 自己试验在spring的环绕通知里获取目标对象的类名和目标方法的参数类名,用于根据自定义注解判断访问权限,有没有更好的办法,高手指点一下
- ArcEngine开发中关于获取IFeature对象Pfeature坐标的说明
- thinkphp开发根据企业号开发者文档获取企业微信用户信息
- 根据条件获取json(无限级)中指定的对象
- jquery 根据name属性获取对象(=document.getElementByName("") )