0
点赞
收藏
分享

微信扫一扫

根据CR获取CR下的开发对象_SAP刘梦_新浪博客


有时候管控或者其他需要,需要得到开发对象





代码写的比较粗糙,注视之类的也没按要求写 ,本来应该用alv展示,图省事儿用的table control。

界面如图 


​​

根据CR获取CR下的开发对象_SAP刘梦_新浪博客_cookie

​​​

​​​

根据CR获取CR下的开发对象_SAP刘梦_新浪博客_json_02

​​​





代码如下:



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进行了展现

举报

相关推荐

0 条评论