top of page

SAP ABAP - Merge Many Transport Request to a single Transport Request








*&---------------------------------------------------------------------*
*& Report ZABAP_MERGE_REQUEST
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zabap_merge_request.
TABLES : trheader.
SELECTION-SCREEN BEGIN OF BLOCK b1.
PARAMETERS : p_treq TYPE trheader-trkorr.
SELECT-OPTIONS : s_sreq FOR trheader-trkorr.

SELECTION-SCREEN END OF BLOCK b1.

START-OF-SELECTION.

DATA :
     we_e070               LIKE  e070,
     we_e070_src           LIKE  e070,
     we_e07t               LIKE  e07t,
     we_e070c              LIKE  e070c,
     es_e070m              LIKE  e070m,
     we_e07t_doesnt_exist  LIKE  trpari-w_e07t,
     we_e070c_doesnt_exist LIKE  trpari-w_e070c,
     ev_e070m_doesnt_exist LIKE  trpari-w_e070m,
     wt_e071k_str          TYPE  e071k_strtyp,
     we_e070create         TYPE  e070create,

     lv_msg                TYPE char255,
     lv_Ans                TYPE char5.


CALL FUNCTION 'TR_READ_COMM'
EXPORTING
       wi_trkorr             = p_treq
       wi_dialog             = ''
       wi_langu              = sy-langu
       wi_sel_e070           = 'X'
       wi_sel_e071           = 'X'
       wi_sel_e071k          = 'X'
       iv_sel_e071kf         = 'X'
       wi_sel_e07t           = 'X'
       wi_sel_e070c          = 'X'
       iv_sel_e070m          = 'X'
       iv_sel_e070a          = 'X'
       iv_sel_e070create     = 'X'
IMPORTING
       we_e070               = we_e070
       we_e07t               = we_e07t
       we_e070c              = we_e070c
       es_e070m              = es_e070m
       we_e07t_doesnt_exist  = we_e07t_doesnt_exist
       we_e070c_doesnt_exist = we_e070c_doesnt_exist
       ev_e070m_doesnt_exist = ev_e070m_doesnt_exist
       wt_e071k_str          = wt_e071k_str
       we_e070create         = we_e070create
EXCEPTIONS
       not_exist_e070        = 1
       no_authorization      = 2
OTHERS                = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

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

WRITE : lines( lt_e070 ) , ` adet request merge edilecek`.

CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
titlebar       = 'Uyarı'
         text_question  = |{ lines( lt_e070 ) } adet request merge edilecek ve silinecek|
         text_button_1  = 'Evet'(001)
         text_button_2  = 'Hayır'(002)
IMPORTING
         answer         = lv_ans
EXCEPTIONS
         text_not_found = 1
OTHERS         = 2.
IF sy-subrc EQ 0.
IF lv_ans NE '1'.
LEAVE TO SCREEN 0.
ENDIF.
ENDIF.

LOOP AT lt_e070 REFERENCE INTO DATA(lr_e070).
       cl_progress_indicator=>progress_indicate(
       i_text = |Processing: { sy-tabix }/{ lines( lt_e070 ) }|
       i_output_immediately = abap_true ).

CALL FUNCTION 'TR_READ_COMM'
EXPORTING
           wi_trkorr        = lr_e070->trkorr
           wi_dialog        = ''
           wi_langu         = sy-langu
           wi_sel_e070      = 'X'
IMPORTING
           we_e070          = we_e070_src
EXCEPTIONS
           not_exist_e070   = 1
           no_authorization = 2
OTHERS           = 3.

IF we_e070_src-as4user NE we_e070-as4user.
CALL FUNCTION 'TR_CHANGE_USERNAME'
EXPORTING
             wi_dialog           = ''
             wi_trkorr           = lr_e070->trkorr
             wi_user             = we_e070-as4user
EXCEPTIONS
             already_released    = 1
             e070_update_error   = 2
             file_access_error   = 3
             not_exist_e070      = 4
             user_does_not_exist = 5
             tr_enqueue_failed   = 6
             no_authorization    = 7
             wrong_client        = 8
             unallowed_user      = 9
OTHERS              = 10.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid
TYPE sy-msgty
NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
INTO lv_msg.
WRITE / : |{ sy-msgty } { sy-msgid } { sy-msgno } { lv_msg }|.
ELSE.
PERFORM merge_transports USING p_treq lr_e070->trkorr.
ENDIF.
ELSE.
PERFORM merge_transports USING p_treq lr_e070->trkorr.

ENDIF.


WAIT UP TO 1 SECONDS.
ENDLOOP.
ENDIF.
*&---------------------------------------------------------------------*
*& Form merge_transports
*&------------------------------