top of page

SAP ABAP - Create TOC from Transport Requests

Updated: Aug 29, 2022

TR:

EN:






*&---------------------------------------------------------------------*
*& Report Z_ABAP_CREATE_TOC
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT z_abap_create_toc.

TABLES : trheader.
DATA : gv_toc_text TYPE trheader-as4text.
DATA : gt_task_req_list TYPE TABLE OF trheader-trkorr.
DATA : gv_toc_no TYPE trheader-trkorr.

SELECTION-SCREEN BEGIN OF BLOCK b1.

SELECT-OPTIONS : s_req FOR trheader-trkorr.

SELECTION-SCREEN SKIP.
PARAMETERS : pc_tocn AS CHECKBOX DEFAULT 'X',
             pc_rel  AS CHECKBOX DEFAULT ''.
SELECTION-SCREEN SKIP.
PARAMETERS : p_toc_n  TYPE trheader-as4text,
             p_target TYPE trheader-tarsystem OBLIGATORY DEFAULT 'KRQ'.
SELECTION-SCREEN END OF BLOCK b1.

START-OF-SELECTION.

CLEAR : gv_toc_text,gt_task_req_list[],gv_toc_no.

IF pc_tocn = 'X'.

   IF s_req-high IS NOT INITIAL OR
     lines( s_req[] ) > 1 .
     MESSAGE 'Tek bir request giriniz' TYPE 'I'.
  ELSE.
     PERFORM create_toc.
  ENDIF.
ELSE.
   IF p_toc_n IS INITIAL.
      MESSAGE 'Request Metni Giriniz.' TYPE 'I'.
   ELSEIF p_toc_n(4) NE 'TOC:'.
      MESSAGE 'Request Metni "TOC:" ile başlamalı.' TYPE 'I'.
   ELSE.
       gv_toc_text = p_toc_n.
      PERFORM create_toc.
   ENDIF.
ENDIF.

IF pc_rel = 'X' AND gv_toc_no IS NOT INITIAL.
   PERFORM release_toc.
ENDIF.


*&---------------------------------------------------------------------*
*& Form create_toc
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM create_toc .

SELECT * FROM e070
INTO TABLE @DATA(lt_e070)
WHERE trkorr IN @s_req.

IF sy-subrc = 0.
   SELECT * FROM e070
   INTO TABLE @DATA(lt_e070_tasks)
   FOR ALL ENTRIES IN @lt_e070
   WHERE strkorr EQ @lt_e070-trkorr.

   SELECT * FROM e07t
   INTO TABLE @DATA(lt_e07t)
   FOR ALL ENTRIES IN @lt_e070
   WHERE trkorr EQ @lt_e070-trkorr
   AND langu EQ @sy-langu.
ENDIF.

LOOP AT lt_e070 REFERENCE INTO DATA(lr_e070).
   IF lr_e070->strkorr IS NOT INITIAL.
      APPEND lr_e070->trkorr TO gt_task_req_list.
   ELSE.
      IF pc_tocn = 'X' AND gv_toc_text IS INITIAL.
         IF line_exists( lt_e07t[ trkorr = lr_e070->trkorr ] ).
           gv_toc_text = 'TOC:' && lt_e07t[ trkorr = lr_e070->trkorr ]-as4text.
      ENDIF.
   ENDIF.
   LOOP AT lt_e070_tasks REFERENCE INTO DATA(lr_e070_task)
                         WHERE strkorr = lr_e070->trkorr.

       APPEND lr_e070_task->trkorr TO gt_task_req_list.
    ENDLOOP.
   ENDIF.
ENDLOOP.

DATA : ls_toc_req TYPE trwbo_request_header.
CALL FUNCTION 'TR_INSERT_REQUEST_WITH_TASKS'
EXPORTING
       iv_type            = 'T'
       iv_text            = gv_toc_text
       iv_owner           = sy-uname
       iv_target          = p_target
       iv_with_badi_check = 'X'
IMPORTING
       es_request_header  = ls_toc_req
EXCEPTIONS
       insert_failed      = 1
       enqueue_failed     = 2
OTHERS             = 3.
IF sy-subrc <> 0.
   MESSAGE ID sy-msgid
         TYPE sy-msgty
       NUMBER sy-msgno
         WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      EXIT.
ENDIF.
   gv_toc_no = ls_toc_req-trkorr.

LOOP AT gt_task_req_list REFERENCE INTO DATA(lr_task_req).
CALL FUNCTION 'TR_COPY_COMM'
   EXPORTING
         wi_dialog                = ''
         wi_trkorr_from           = lr_task_req->*
         wi_trkorr_to             = ls_toc_req-trkorr
         wi_without_documentation = 'X'
   EXCEPTIONS
         db_access_error          = 1
         trkorr_from_not_exist    = 2
         trkorr_to_is_repair      = 3
         trkorr_to_locked         = 4
         trkorr_to_not_exist      = 5
         trkorr_to_released       = 6
         user_not_owner           = 7
         no_authorization         = 8
         wrong_client             = 9
         wrong_category           = 10
         object_not_patchable     = 11
         OTHERS                   = 12.
   IF sy-subrc <> 0.
      MESSAGE ID sy-msgid
                    TYPE sy-msgty
             NUMBER sy-msgno
                   WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      EXIT.
   ENDIF.
ENDLOOP.

MESSAGE `TOC : ` && gv_toc_no  && ` yaratıldı.` TYPE 'I'.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form release_toc
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM release_toc .
CALL FUNCTION 'TR_RELEASE_REQUEST'
  EXPORTING
       iv_trkorr                  = gv_toc_no
       iv_dialog                  = ''
       iv_display_export_log      = 'X'
       iv_without_locking         = 'X'
  EXCEPTIONS
       cts_initialization_failure = 1
       enqueue_failed             = 2
       no_authorization           = 3
       invalid_request            = 4
       request_already_released   = 5
       repeat_too_early           = 6
       error_in_export_methods    = 7
       object_check_error         = 8
       docu_missing               = 9
       db_access_error            = 10
       action_aborted_by_user     = 11
       export_failed              = 12
       OTHERS                     = 13.
IF sy-subrc <> 0.
   MESSAGE ID sy-msgid
         TYPE sy-msgty
       NUMBER sy-msgno
         WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
   EXIT.
ENDIF.

MESSAGE `TOC : ` && gv_toc_no  && ` release edildi.` TYPE 'I'.


CALL FUNCTION 'TMS_MGR_READ_TRANSPORT_QUEUE'
  EXPORTING
       iv_system       = p_target
       iv_collect_data = space
  EXCEPTIONS
       OTHERS          = 99.

IF sy-subrc <> 0.
   MESSAGE ID  sy-msgid
         TYPE 'E'
       NUMBER sy-msgno
         WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

DATA lt_columns TYPE tmsiqcols.

   lt_columns[] = VALUE #( ( field = 'BUFPOS'
                             sortdes = 'X' )
).

CALL FUNCTION 'TMS_UIQ_INT_SORT_QUEUE'
EXPORTING
       iv_sort_field = 'BUFPOS'
       iv_sort_desc  = 'X'
       it_columns    = lt_columns.


* display import queue
CALL FUNCTION 'TMS_UIQ_IMPORT_QUEUE_DISPLAY'
EXPORTING
       iv_system = p_target
EXCEPTIONS
OTHERS    = 99.
IF sy-subrc <> 0.
        MESSAGE ID sy-msgid
              TYPE 'E'
            NUMBER sy-msgno
              WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.


ENDFORM.







Is this post helpful or not?

  • Helpful

  • Not good, useless





52 views0 comments

Recent Posts

See All
Post: Blog2_Post
bottom of page