1 |
2 |
3 |
4 |
5 |
6 | FORM prepare_corr. |
7 | DATA: x030l_sadr type x030l, |
8 | pc_objtype LIKE objs-objecttype, |
9 | pc_maint_mode(1) TYPE c. |
10 | |
11 | CHECK x_header-flag NE vim_transport_denied. |
12 | CHECK maint_mode EQ transportieren OR"transport mode or change mode |
13 | vim_client_state EQ vim_log. "and logging required |
14 | IF <status>-tr_alrchkd EQ 'x'. |
15 |
16 | IF x_header-generictrp NE space and vim_import_profile NE 'X'. |
17 | MESSAGE i141(sv) WITH vim_max_trsp_keylength |
18 | vim_max_trsp_identical_key |
19 | x_header-maxtrkeyln. |
20 | ELSEIF x_header-genertxtrp NE space and vim_import_profile NE 'X'. |
21 | MESSAGE i141(sv) WITH vim_max_trsp_keylength |
22 | vim_max_trsp_identical_key |
23 | x_header-maxtrtxkln. |
24 | ENDIF. |
25 | DESCRIBE TABLE vim_corr_objtab. |
26 | IF sy-tfill GT 0. "save objects in corr_keytab |
27 | CLEAR corr_keytab. |
28 | MOVE x_header-viewname TO corr_keytab-mastername. |
29 | LOOP AT vim_corr_objtab. |
30 | IF vim_corr_objtab-lockable EQ space. |
31 | corr_keytab-mastertype = vim_unlockable_object. |
32 | ELSE. |
33 | corr_keytab-mastertype = vim_lockable_object. |
34 | ENDIF. |
35 | MOVE: vim_corr_objtab-pgmid TO corr_keytab-pgmid, |
36 | vim_corr_objtab-object TO corr_keytab-object, |
37 |
38 | vim_corr_objtab-objfunc TO corr_keytab-objfunc, |
39 | vim_corr_objtab-activity TO corr_keytab-activity. "UF738595/2001 |
40 | sy-fdpos = strlen( vim_corr_objtab-obj_name ). |
41 | IF sy-fdpos GT vim_71k_name_length. |
42 | corr_keytab-objname = vim_long_objname. |
43 | corr_keytab-tabkey = vim_corr_objtab-obj_name. |
44 | ELSE. |
45 | corr_keytab-objname = vim_corr_objtab-obj_name. |
46 | ENDIF. |
47 | READ TABLE corr_keytab |
48 | WITH KEY pgmid = corr_keytab-pgmid |
49 | object = corr_keytab-object |
50 | objname = corr_keytab-objname |
51 | objfunc = corr_keytab-objfunc |
52 | mastertype = corr_keytab-mastertype |
53 | mastername = corr_keytab-mastername |
54 | TRANSPORTING NO FIELDS. |
55 | CHECK sy-subrc NE 0. |
56 | IF vim_corr_objtab-trkorr EQ space. |
57 | MOVE: <status>-corr_nbr TO corr_keytab-trkorr, |
58 | <status>-corr_nbr TO vim_corr_objtab-trkorr. |
59 | MODIFY vim_corr_objtab. |
60 | ELSE. |
61 | corr_keytab-trkorr = vim_corr_objtab-trkorr. |
62 | ENDIF. |
63 | corr_keytab-flag = 'V'. |
64 | APPEND corr_keytab. |
65 | ENDLOOP. |
66 | ENDIF. "sy-tfill |
67 | ENDIF. "<status>-tr_alrchkd eq 'x'. |
68 | IF maint_mode EQ transportieren. |
69 | MOVE 'X' TO get_corr_keytab. |
70 | IF <status>-keytbinvld EQ space. |
71 | LOOP AT vim_corr_objtab WHERE lockable EQ space. |
72 | LOOP AT corr_keytab WHERE mastertype EQ vim_corr_objtab-object |
73 | AND mastername EQ vim_corr_objtab-obj_name. |
74 | EXIT. |
75 | ENDLOOP. |
76 | IF sy-subrc EQ 0. |
77 | CLEAR get_corr_keytab. |
78 | ENDIF. |
79 | ENDLOOP. |
80 | ELSE. |
81 | LOOP AT vim_corr_objtab WHERE lockable EQ space. |
82 | LOOP AT corr_keytab WHERE mastertype EQ vim_corr_objtab-object |
83 | AND mastername EQ vim_corr_objtab-obj_name. |
84 | DELETE corr_keytab. |
85 | ENDLOOP. |
86 | ENDLOOP. |
87 | ENDIF. |
88 | ENDIF. |
89 | MOVE <status>-corr_nbr TO <status>-l_corr_nbr. |
90 | <status>-tr_alrchkd = 'X'. |
91 | IF ( status-action EQ transportieren OR |
92 | vim_client_state EQ vim_log ) AND |
93 | x_header-adrnbrflag EQ 'O' AND sadr_namtab_read EQ space. |
94 | CALL FUNCTION 'DDIF_NAMETAB_GET' |
95 | EXPORTING |
96 | tabname = 'SADR' |
97 | IMPORTING |
98 | X030L_WA = x030l_sadr |
99 | EXCEPTIONS |
100 | OTHERS = 2. |
101 | IF sy-subrc EQ 0. |
102 | MOVE 'X' TO sadr_namtab_read. |
103 | sadr_keylen = x030l_sadr-keylen |
104 | / cl_abap_char_utilities=>charsize. |
105 |
106 | IF x_header-bastab EQ space. |
107 | pc_objtype = 'V'. |
108 | ELSE. |
109 | pc_objtype = 'S'. |
110 | ENDIF. |
111 | CALL FUNCTION 'VIEW_CHECK_OBJ_LIST_FOR_ADDR' |
112 | EXPORTING |
113 | objectname = x_header-viewname |
114 | objecttype = pc_objtype |
115 | EXCEPTIONS |
116 | not_all_address_tables_in_list = 01. |
117 | IF sy-subrc NE 0. "regenerating of object list required |
118 | pc_maint_mode = x_header-bastab. |
119 | TRANSLATE pc_maint_mode USING ' VXS'. |
120 | CALL FUNCTION 'OBJ_GENERATE' |
121 | EXPORTING |
122 | iv_objectname = x_header-viewname |
123 | iv_objecttype = pc_maint_mode |
124 | iv_maint_mode = aendern |
125 | iv_no_correction = 'X' |
126 | EXCEPTIONS |
127 | OTHERS = 5. |
128 | ENDIF. |
129 |
130 | ELSE. |
131 | RAISE nametab_get_failed. |
132 | ENDIF. |
133 | ENDIF. |
134 | ENDFORM. "PREPARE_CORR |