您的位置:首页 > 其它

根据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进行了展现
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: