======================================================================*
* Initial idea and first release by Igor Yaskevitch (IBS), 2003 *
* Enhancements by Sergei Korolev, 2005 (added import queue *
* manipulations, authority checking, minor interface improvements) *
*----------------------------------------------------------------------*
* Function : This is a utility tool for uploading binary *
* files of a transport request from a Client PC, *
* adding to an import queue and importing into the *
* system. *
*======================================================================*
REPORT yrs_upload_transport_request.
TYPE-POOLS: abap, sabc, stms.
CONSTANTS: gc_tp_fillclient LIKE stpa-command VALUE 'FILLCLIENT'.
DATA:
lt_request TYPE stms_tr_requests,
lt_tp_maintain TYPE stms_tp_maintains.
DATA:
sl TYPE i,
l_datafile(255) TYPE c,
datafiles TYPE i,
ret TYPE i,
ans TYPE c.
DATA:
et_request_infos TYPE stms_wbo_requests,
request_info TYPE stms_wbo_request,
system TYPE tmscsys-sysnam,
request LIKE e070-trkorr.
DATA:
folder TYPE string,
retval LIKE TABLE OF ddshretval WITH HEADER LINE,
fldvalue LIKE help_info-fldvalue,
transdir TYPE text255,
filename LIKE authb-filename,
trfile(20) TYPE c.
DATA:
BEGIN OF datatab OCCURS 0,
buf(8192) TYPE c,
END OF datatab.
DATA: len TYPE i,
flen TYPE i.
SELECTION-SCREEN COMMENT /1(79) comm_sel.
PARAMETERS:
p_cofile(255) TYPE c LOWER CASE OBLIGATORY.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN BEGIN OF BLOCK b01 WITH FRAME TITLE bl_title.
PARAMETERS:
p_addque AS CHECKBOX DEFAULT 'X',
p_tarcli LIKE tmsbuffer-tarcli
DEFAULT sy-mandt
MATCHCODE OBJECT h_t000,
p_sepr OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b01.
INITIALIZATION.
bl_title = 'Import queue parameters'(b01).
comm_sel = 'Select co-file. Filename must start with ''K''.'(001).
IF sy-opsys = 'Windows NT'.
p_sepr = '\'.
ELSE.
p_sepr = '/'.
ENDIF.
** CALL FUNCTION 'WSAF_BUILD_SEPARATOR'
** IMPORTING
** separator = p_sepr
** EXCEPTIONS
** separator_not_maintained = 1
** wrong_call = 2
** wsaf_config_not_maintained = 3
** OTHERS = 4.
* IF sy-subrc NE 0.
* MESSAGE s001(00) WITH 'Unable to find out the separator symbol for the system.'(008).
* ENDIF.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_cofile.
DATA:
file TYPE file_table,
rc TYPE i,
title TYPE string,
file_table TYPE filetable,
file_filter TYPE string VALUE 'CO-files (K*.*)K*.*'.
title = 'Select CO-file'(006).
CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
window_title = title
file_filter = file_filter
CHANGING
file_table = file_table
rc = rc
EXCEPTIONS
file_open_dialog_failed = 1
cntl_error = 2
error_no_gui = 3
not_supported_by_gui = 4
OTHERS = 5.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
READ TABLE file_table INTO file INDEX 1.
p_cofile = file.
AT SELECTION-SCREEN.
DATA:
file TYPE string.
sl = STRLEN( p_cofile ).
IF sl < 11.
MESSAGE e001(00) WITH 'Invalid co-file name format. File name format must be KNNNNNNN.SSS'(009).
ENDIF.
sl = sl - 11.
IF p_cofile+sl(1) NE 'K'.
MESSAGE e001(00) WITH 'Invalid co-file name format. File name format must be KNNNNNNN.SSS'(009).
ENDIF. sl = sl + 1.
IF NOT p_cofile+sl(6) CO '0123456789'.
MESSAGE e001(00) WITH 'Invalid co-file name format. File name format must be KNNNNNNN.SSS'(009).
ENDIF.
sl = sl + 6.
IF p_cofile+sl(1) NE '.'.
MESSAGE e001(00) WITH 'Invalid co-file name format. File name format must be KNNNNNNN.SSS'(009).
ENDIF.
sl = sl - 7.
CLEAR datafiles.
l_datafile = p_cofile.
l_datafile+sl(1) = 'R'.
file = l_datafile.
IF cl_gui_frontend_services=>file_exist( file = file ) = 'X'.
ADD 1 TO datafiles.
ENDIF.
l_datafile+sl(1) = 'D'.
file = l_datafile.
IF cl_gui_frontend_services=>file_exist( file = file ) = 'X'.
ADD 1 TO datafiles.
ENDIF.
sl = sl + 8.
request = p_cofile+sl(3).
sl = sl - 8.
CONCATENATE request p_cofile+sl(7) INTO request.
TRANSLATE request TO UPPER CASE.
IF datafiles = 0.
MESSAGE e398(00)
WITH 'Corresponding data-files of transport request'(010)
request
'not found.'(011).
ELSE.
MESSAGE s398(00)
WITH datafiles
'data-files have been found for transport request'(012)
request.
ENDIF.
START-OF-SELECTION.
DATA:
parameter TYPE spar,
parameters TYPE TABLE OF spar.
CALL FUNCTION 'RSPO_R_SAPGPARAM'
EXPORTING
name = 'DIR_TRANS'
IMPORTING
value = transdir
EXCEPTIONS
error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE 'E' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
filename = p_cofile+sl(11).
TRANSLATE filename TO UPPER CASE.
CONCATENATE transdir 'cofiles' filename
INTO filename
SEPARATED BY p_sepr.
OPEN DATASET filename FOR INPUT IN BINARY MODE.
ret = sy-subrc.
CLOSE DATASET filename.
IF NOT ret = 0.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
text_question = 'Copy all files?'(a03)
IMPORTING
answer = ans
EXCEPTIONS
text_not_found = 1
OTHERS = 2.
ELSE.
parameter-param = 'FILE'.
parameter-value = filename.
APPEND parameter TO parameters.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
text_question = 'File ''&FILE&'' already exists. Rewrite?'(a04)
IMPORTING
answer = ans
TABLES
parameter = parameters
EXCEPTIONS
text_not_found = 1
OTHERS = 2.
ENDIF.
CHECK ans = '1'.
trfile = p_cofile+sl(11).
TRANSLATE trfile TO UPPER CASE.
PERFORM copy_file USING 'cofiles' trfile p_cofile.
trfile(1) = 'R'.
l_datafile+sl(1) = 'R'.
PERFORM copy_file USING 'data' trfile l_datafile.
IF datafiles > 1.
trfile(1) = 'D'.
l_datafile+sl(1) = 'D'.
PERFORM copy_file USING 'data' trfile l_datafile.
ENDIF.
IF p_addque = 'X'.
system = sy-sysid.
DO 1 TIMES.
* Check authority to add request to the import queue
CALL FUNCTION 'TR_AUTHORITY_CHECK_ADMIN'
EXPORTING
iv_adminfunction = 'TADD'
EXCEPTIONS
e_no_authority = 1
e_invalid_user = 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.
CALL FUNCTION 'TMS_UI_APPEND_TR_REQUEST'
EXPORTING
iv_system = system
iv_request = request
iv_expert_mode = 'X'
iv_ctc_active = 'X'
EXCEPTIONS
cancelled_by_user = 1
append_request_failed = 2
OTHERS = 3.
CHECK sy-subrc = 0.
CALL FUNCTION 'TMS_MGR_READ_TRANSPORT_REQUEST'
EXPORTING
iv_request = request
iv_target_system = system
IMPORTING
et_request_infos = et_request_infos
EXCEPTIONS
read_config_failed = 1
table_of_requests_is_empty = 2
system_not_available = 3
OTHERS = 4.
CLEAR request_info.
READ TABLE et_request_infos INTO request_info INDEX 1.
IF request_info-e070-korrdev = 'CUST'
AND NOT p_tarcli IS INITIAL.
CALL FUNCTION 'TMS_MGR_MAINTAIN_TR_QUEUE'
EXPORTING
iv_command = gc_tp_fillclient
iv_system = system
iv_request = request
iv_tarcli = p_tarcli
iv_monitor = 'X'
iv_verbose = 'X'
IMPORTING
et_tp_maintains = lt_tp_maintain
EXCEPTIONS
read_config_failed = 1
table_of_requests_is_empty = 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.
ENDIF.
* Check authority to start request import
CALL FUNCTION 'TR_AUTHORITY_CHECK_ADMIN'
EXPORTING
iv_adminfunction = 'IMPS'
EXCEPTIONS
e_no_authority = 1
e_invalid_user = 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.
CALL FUNCTION 'TMS_UI_IMPORT_TR_REQUEST'
EXPORTING
iv_system = system
iv_request = request
iv_tarcli = p_tarcli
iv_some_active = space
EXCEPTIONS
cancelled_by_user = 1
import_request_denied = 2
import_request_failed = 3
OTHERS = 4.
ENDDO.
ENDIF.
*&--------------------------------------------------------------------*
*& Form copy_file
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->SUBDIR text
* -->FNAME text
* -->SOURCE_FILEtext
*---------------------------------------------------------------------*
FORM copy_file USING subdir fname source_file.
DATA: l_filename TYPE string.
l_filename = source_file.
CONCATENATE transdir subdir fname
INTO filename
SEPARATED BY p_sepr.
REFRESH datatab.
CLEAR flen.
CALL METHOD cl_gui_frontend_services=>gui_upload
EXPORTING
filename = l_filename
filetype = 'BIN'
IMPORTING
filelength = flen
CHANGING
data_tab = datatab[]
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
not_supported_by_gui = 17
error_no_gui = 18
OTHERS = 19.
IF sy-subrc NE 0.
WRITE: / 'Error uploading file'(003), l_filename.
EXIT.
ENDIF.
CALL FUNCTION 'AUTHORITY_CHECK_DATASET'
EXPORTING
activity = sabc_act_write
filename = filename
EXCEPTIONS
no_authority = 1
activity_unknown = 2
OTHERS = 3.
IF sy-subrc <> 0.
FORMAT COLOR COL_NEGATIVE.
WRITE: / 'Write access denied. File'(013), filename.
FORMAT COLOR OFF.
EXIT.
ENDIF.
OPEN DATASET filename FOR OUTPUT IN BINARY MODE.
IF sy-subrc NE 0.
WRITE: / 'File open error'(004), trfile.
EXIT.
ENDIF.
LOOP AT datatab.
IF flen < 8192.
len = flen.
ELSE.
len = 8192.
ENDIF.
TRANSFER datatab-buf TO filename LENGTH len.
flen = flen - len.
ENDLOOP.
CLOSE DATASET filename.
WRITE: / 'File'(005), trfile, 'uploaded'(007).
ENDFORM. "copy_file
Friday, December 28, 2007
Report YRS_UPLOAD_TRANSPORT_REQUEST
Labels:
ABAP Reports
Subscribe to:
Post Comments (Atom)
Blog Archive
-
▼
2007
(952)
-
▼
December
(236)
- Working with events in a Global Class
- Events in Table Maintenance
- Archiving IDocs
- Using Sorted table and Index while processing Inte...
- Highlighting only a particular cell instead of ent...
- Raising exceptions in a method and handling the sa...
- Maintaining Translations for Work item texts and O...
- Understanding "Local Workflow"
- Implementing Enhancements in a view
- Sending recursive mails upon reaching the deadline...
- ABAP Proxy communication
- Creation of a web service in SAP
- Step by Step approach to ceate simple BDC session ...
- General Application Transaction Codes
- Inroduction TO LSMW
- 24 Column Account Managers Report
- sap ABAP report on Column Account Managers Report
- sap ABAP report on Detail Transaction Report (DTR)...
- sap ABAP report on Summary Statement Quick Reference
- free download book on abap reporting on all modules
- ABAP REPORTS
- Report YRS_DOWNLOAD_TRANSPORT_REQUEST
- Report YRS_UPLOAD_TRANSPORT_REQUEST
- Displaying Available Report Variants in sap
- Creating Report Variants in sap
- SAP helpful reports, transactions and tables
- Useful SAP Tables
- ABAP REPORTING
- SAP Solution Manager’s centralized solution
- SAP Solution Manager
- Report Tree Using SARP and SERP
- User Profile Parameters
- XML sample file
- XSLT options
- Create XSLT program
- XML XSLT with ABAP
- Transport Guide
- ABAP Acronyms
- ABAP Code Sample
- ALV Pdf books
- ALV Articles
- Class ALV
- How to do the EXCISE ANNEXURE10 report?
- How to calculate last date of the month?
- How to change the deadline of the workitem program...
- How to convert from one currency value to other?
- How do I display / add the Terms and Conditions to...
- How do I create a long text for a document?*
- Where are the long texts of a document stored and ...
- I am using a SELECT query on a database table. Sin...
- How can I convert numerals into the corresponding ...
- How can I read an Excel file from presentation ser...
- How can I download my internal table into an Excel...
- How can I get the IP address of the system program...
- How do I download data in my internal table in a C...
- How to convert a date to internal or external format?
- How are RANGES different from SELECT-OPTIONS?
- What does R/3 stands for ?
- What does ABAP stand for?
- What is this new transaction 'n' all about?
- Casino Game in SAP ABAP
- Moving Characters in SAP ABAP Report Output
- Database Table Operations- A Performance Considera...
- SAP ABAP Performnace consideration while using ‘fo...
- Applying the having clause
- Avoid nested SELECT-ENDSELECT loops
- Use high-speed array operations with UPDATE, INSER...
- Coding Style
- Building A Binary Table
- how can we change the font for weite statement
- Import graphics to SAP
- Uploading Graphics TTF files into SAp Script Text
- Schedule Background Job
- How to change Package name/Development class for a...
- Useful User Paramters
- Finding a transaction code via SE93
- Standard Conversion Exits
- How to transport Standard Texts
- Search SAP Menu
- A FM which can create internal session
- Procedure for uploading Font
- Save content of internal tables in Excel format du...
- Where all SAP ABAP programs get stored!!
- Debugging a popup window
- Spool Conversion tp PDF
- A tips on error message while writting a BDC program
- Get the next available number in Number Range Object
- SAP ABAP Macro to validate Date
- Adding pushbuttons on the application toolbar of r...
- Display your report output lines inside a Title Box
- Using Subscreens on Report Selection Screens
- Save your ABAP report list output in your desktop ...
- Listbox on Selection Screen
- Get the Report selection Criteria
- What is sequence of event triggered in report?
- What is the difference between Primary key and Uni...
- What are the various types of selection screen event?
- What are standard layouts sets in the SAP Script?
- What are the data types of Internal Tables?
- What is the difference between 'Select single * ' ...
-
▼
December
(236)
No comments:
Post a Comment