-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathCDS_Archiver.abap
185 lines (143 loc) · 4.93 KB
/
CDS_Archiver.abap
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
*&---------------------------------------------------------------------*
*& Report ZDTP_CDS_DOWNLOAD
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zdtp_cds_download NO STANDARD PAGE HEADING.
"structure for DDDDLSCR
TYPES: BEGIN OF ty_ddddlsrc,
ddlname TYPE ddddlsrc-ddlname,
as4user TYPE ddddlsrc-as4user,
source TYPE ddddlsrc-source,
devclass TYPE tadir-devclass,
END OF ty_ddddlsrc,
BEGIN OF ty_dd,
source TYPE ddddlsrc-source,
END OF ty_dd.
DATA: it_ddddlsrc TYPE STANDARD TABLE OF ty_ddddlsrc,
it_dd TYPE STANDARD TABLE OF ty_dd,
wa TYPE ty_ddddlsrc,
wa_dd TYPE ty_dd.
DATA: gv_filename TYPE string,
gv_filetype TYPE char10,
gd_path TYPE string.
*&---------------------------------------------------------------------*
""""Selection Screen
*&---------------------------------------------------------------------*
DATA : gv_dir TYPE tadir-devclass,
gv_ddln TYPE ddddlsrc-ddlname.
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE header1.
** Category 1 - With package name
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS : rad1 RADIOBUTTON GROUP r1 DEFAULT 'X' USER-COMMAND aa.
SELECTION-SCREEN COMMENT 5(63) name1.
SELECTION-SCREEN END OF LINE.
** Category 2 - With CDS name
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS : rad2 RADIOBUTTON GROUP r1.
SELECTION-SCREEN COMMENT 5(63) name2.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN BEGIN OF BLOCK bl2 WITH FRAME TITLE header2.
SELECT-OPTIONS : s_dev FOR gv_dir NO INTERVALS MODIF ID aa,
s_ddln FOR gv_ddln NO INTERVALS MODIF ID bb.
SELECTION-SCREEN END OF BLOCK bl2.
PARAMETERS : p_path TYPE rlgrap-filename OBLIGATORY.
AT SELECTION-SCREEN OUTPUT.
header1 = 'Select the nput type'.
header2 = 'Fill the necessary input'.
name1 = 'Package Name'.
name2 = 'CDS Name'.
* name3 = 'Deleting file from Application server'.
IF rad1 = 'X'.
LOOP AT SCREEN.
IF screen-group1 = 'AA'.
screen-active = '1'.
* screen-input = '1'.
MODIFY SCREEN.
ENDIF.
IF screen-group1 = 'BB'.
screen-active = '0'.
* screen-input = '0'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ELSEIF rad2 = 'X'.
LOOP AT SCREEN.
IF screen-group1 = 'AA'.
screen-active = '0'.
* screen-input = '1'.
MODIFY SCREEN.
ENDIF.
IF screen-group1 = 'BB'.
screen-active = '1'.
* screen-input = '0'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path.
CALL METHOD cl_gui_frontend_services=>directory_browse
EXPORTING
window_title = 'File Directory'
initial_folder = 'C:'
CHANGING
selected_folder = gd_path.
CALL METHOD cl_gui_cfw=>flush.
CONCATENATE gd_path '' INTO p_path.
DATA : src TYPE ddddlsrc,
dir TYPE tadir.
*&---------------------------------------------------------------------*
""""Start of selection
*&---------------------------------------------------------------------*
START-OF-SELECTION.
IF s_dev IS NOT INITIAL
AND rad1 EQ abap_true.
SELECT d~ddlname
d~as4user
d~source
t~devclass
FROM tadir AS t JOIN ddddlsrc AS d
ON t~obj_name = d~ddlname
INTO TABLE it_ddddlsrc
WHERE t~pgmid = 'R3TR'
AND t~object = 'DDLS'
AND t~devclass IN s_dev.
ELSEIF s_ddln IS NOT INITIAL
AND rad2 EQ abap_true..
SELECT d~ddlname
d~as4user
d~source
t~devclass
FROM tadir AS t JOIN ddddlsrc AS d
ON t~obj_name = d~ddlname
INTO TABLE it_ddddlsrc
WHERE t~pgmid = 'R3TR'
AND t~object = 'DDLS'
AND d~ddlname IN s_ddln.
ENDIF.
IF sy-subrc = 0.
WRITE ' File downloaded successfully'.
ENDIF.
*&---------------------------------------------------------------------*
""""End of selection
*&---------------------------------------------------------------------*
END-OF-SELECTION.
LOOP AT it_ddddlsrc INTO wa.
REPLACE ALL OCCURRENCES OF '/' IN wa-devclass WITH '-'.
REPLACE ALL OCCURRENCES OF '/' IN wa-ddlname WITH '_'.
* Package directories automatically created - enter only master directory name in screen
CONCATENATE p_path '\' wa-devclass '\' wa-ddlname '.txt' INTO gv_filename.
wa_dd-source = wa-source.
APPEND wa_dd TO it_dd.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = gv_filename
filetype = 'ASC'
write_field_separator = 'X'
TABLES
data_tab = it_dd.
CLEAR : gv_filename, it_dd, wa.
ENDLOOP.
MESSAGE 'ALL THE FILES DOWNLOADED' TYPE 'I'.