1 *&---------------------------------------------------------------------* 2 *& Report ZUJE_MASS_USER_MGMT 3 *&---------------------------------------------------------------------* 4 *& 5 *&---------------------------------------------------------------------* 6 REPORT ZUJE_MASS_USER_MGMT. 7 *&---------------------------------------------------------------------* 8 *& Report ZUJE_MASS_USER_MGMT 9 *& 10 *& Version: 10.0 SP3 and higher 11 *& 12 *&---------------------------------------------------------------------* 13 *& Created By: zhengsq 14 *& Created On: 31/08/2016 15 *&---------------------------------------------------------------------* 16 *REPORT zuje_mass_user_mgmt. 17 18 TYPE-POOLS: ABAP, VRM. 19 20 *----------------------------------------------------------------------* 21 * CLASS lcl_application DEFINITION 22 *----------------------------------------------------------------------* 23 CLASS LCL_APPLICATION DEFINITION FINAL. 24 25 PUBLIC SECTION. 26 27 CONSTANTS: LC_COMMA TYPE CHAR01 VALUE ',', 28 LC_PIPE TYPE CHAR01 VALUE '|', 29 LC_TAB TYPE CHAR10 VALUE 'TAB'. 30 31 TYPES: BEGIN OF T_APPLDIM, 32 APPL_ID TYPE UJ_APPL_ID, 33 DIMENSION TYPE UJ_DIM_NAME, 34 END OF T_APPLDIM. 35 36 TYPES: BEGIN OF T_APPLDIMMEMBERS, 37 APPL_ID TYPE UJ_APPL_ID, 38 DIMENSION TYPE UJ_DIM_NAME, 39 MEMBER TYPE UJ_DIM_MEMBER, 40 END OF T_APPLDIMMEMBERS. 41 42 CLASS-METHODS: FILE_F4 RETURNING VALUE(R_FILE) TYPE STRING, 43 DIRECTORY_F4 RETURNING VALUE(R_PATH) TYPE STRING, 44 GET_INITIAL_DIRECTORY RETURNING VALUE(R_PATH) TYPE STRING, 45 SET_DELIMITER_LISTBOX, 46 SET_DELIMITER, 47 EXPORT_USERS_TO_FILE, 48 IMPORT_USERS_FROM_FILE, 49 EXPORT_TEAMS_TO_FILE, 50 IMPORT_TEAMS_FROM_FILE, 51 EXPORT_TEAM_ASSIGN_TO_FILE, 52 IMPORT_TEAM_ASSIGN_FROM_FILE, 53 EXPORT_TASK_PROFILES_TO_FILE, 54 IMPORT_TASK_PROFILES_FROM_FILE, 55 EXPORT_DATA_PROFILES_TO_FILE, 56 IMPORT_DATA_PROFILES_FROM_FILE, 57 EXPORT_TAP_ASSIGN_TO_FILE, 58 IMPORT_TAP_ASSIGN_FROM_FILE, 59 EXPORT_DAP_ASSIGN_TO_FILE, 60 IMPORT_DAP_ASSIGN_FROM_FILE, 61 GET_BPC_COMPONENT_VERSION, 62 CHECK_BPC_COMPONENT_IS_VALID RETURNING VALUE(R_VALID) TYPE ABAP_BOOL, 63 GET_ENVIRONMENT_DATA IMPORTING I_ENVIRONMENT_ID TYPE UJ_APPSET_ID 64 EXCEPTIONS ENVIRONMENT_NOT_FOUND 65 UJ_EXCEPTION_ERROR. 66 67 PRIVATE SECTION. 68 69 CLASS-DATA: LV_ENVIRONMENT_ID TYPE UJA_S_APPSET_INFO-APPSET_ID. 70 CLASS-DATA: LV_DELIMITER TYPE STRING. 71 CLASS-DATA: LV_RELEASE TYPE SAPRELEASE. 72 CLASS-DATA: LV_SPLEVEL TYPE SAPPATCHLV. 73 CLASS-DATA: LS_ENVIRONMENT_INFO TYPE UJA_S_APPSET_INFO. 74 75 CLASS-DATA: LT_APPL_INFO TYPE UJA_T_APPL_INFO. 76 CLASS-DATA: LT_APPL_DIM TYPE TABLE OF T_APPLDIM. 77 CLASS-DATA: LT_MEMBERS TYPE TABLE OF T_APPLDIMMEMBERS. 78 CLASS-DATA: LT_TEAMS_LIST TYPE UJE_T_TEAMDETAIL. 79 CLASS-DATA: LT_USERS_LIST TYPE UJE_T_USER. 80 CLASS-DATA: LT_USER_DETAIL TYPE UJE_T_USERINFO_DETAIL. 81 CLASS-DATA: LT_TASK_PROFILES TYPE UJE_T_TASK_PROF_DETAIL. 82 CLASS-DATA: LT_DATA_ACCESS_PROFILES TYPE UJE_T_MBR_PROF_APP. 83 CLASS-DATA: LT_SYSTASKS TYPE UJE_T_ROLE_TSKASG. 84 85 CLASS-DATA: LO_UJE_EXCEPTION TYPE REF TO CX_UJE_EXCEPTION. 86 CLASS-DATA: LO_CONTEXT TYPE REF TO IF_UJ_CONTEXT. 87 CLASS-DATA: LT_ALV_MESSAGES TYPE UJ0_T_MESSAGE. 88 89 CLASS-METHODS: SET_GLOBAL_CONTEXT, 90 RENDER_ALV, 91 ADD_EXCEPTION_TO_MESSAGE_TABLE 92 IMPORTING IO_EXCEPTION TYPE REF TO CX_UJ_STATIC_CHECK, 93 ADD_MESSAGE_TO_MESSAGE_TABLE 94 IMPORTING I_MSGID TYPE SYMSGID 95 I_MSGTY TYPE SYMSGTY 96 I_MSGNO TYPE SYMSGNO 97 I_MESSAGE TYPE BAPI_MSG, 98 UPLOAD IMPORTING I_FILEPATH TYPE ANY 99 RETURNING VALUE(RT_STRTAB) TYPE STRINGTAB, 100 DOWNLOAD IMPORTING I_FILEPATH TYPE ANY 101 IT_DATATAB TYPE STANDARD TABLE, 102 USER_IS_VALID IMPORTING I_USER_ID TYPE ANY 103 RETURNING VALUE(R_BOOLEAN) TYPE ABAP_BOOL, 104 TEAM_IS_VALID IMPORTING I_TEAM_ID TYPE ANY 105 RETURNING VALUE(R_BOOLEAN) TYPE ABAP_BOOL, 106 TPROFILE_IS_VALID IMPORTING I_PROFILE_ID TYPE ANY 107 RETURNING VALUE(R_BOOLEAN) TYPE ABAP_BOOL, 108 DPROFILE_IS_VALID IMPORTING I_PROFILE_ID TYPE ANY 109 RETURNING VALUE(R_BOOLEAN) TYPE ABAP_BOOL, 110 TASK_IS_VALID IMPORTING I_TASK_ID TYPE ANY 111 RETURNING VALUE(R_BOOLEAN) TYPE ABAP_BOOL, 112 NW_USER_EXISTS IMPORTING I_USER_ID TYPE ANY 113 RETURNING VALUE(R_BOOLEAN) TYPE ABAP_BOOL. 114 115 ENDCLASS. "lcl_application DEFINITION 116 117 SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001. 118 PARAMETERS: P_EXPORT RADIOBUTTON GROUP GRP1 DEFAULT 'X' USER-COMMAND CHK. 119 PARAMETERS: P_IMPORT RADIOBUTTON GROUP GRP1. 120 SELECTION-SCREEN END OF BLOCK B1. 121 SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-002. 122 PARAMETERS: P_ENV TYPE UJA_APPSET_INFO-APPSET_ID. 123 PARAMETERS: P_FILE TYPE STRING LOWER CASE. 124 PARAMETERS: P_DELMT TYPE CHAR10 AS LISTBOX VISIBLE LENGTH 20 125 DEFAULT LCL_APPLICATION=>LC_COMMA. "delimiter 126 SELECTION-SCREEN END OF BLOCK B2. 127 SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-003. 128 PARAMETERS: P_EUSERS RADIOBUTTON GROUP GRP2 MODIF ID EXP. 129 PARAMETERS: P_ETEAMS RADIOBUTTON GROUP GRP2 MODIF ID EXP. 130 PARAMETERS: P_ETEAMA RADIOBUTTON GROUP GRP2 MODIF ID EXP. 131 PARAMETERS: P_ETPROF RADIOBUTTON GROUP GRP2 MODIF ID EXP. 132 PARAMETERS: P_EDPROF RADIOBUTTON GROUP GRP2 MODIF ID EXP. 133 PARAMETERS: P_ETPRFA RADIOBUTTON GROUP GRP2 MODIF ID EXP. 134 PARAMETERS: P_EDPRFA RADIOBUTTON GROUP GRP2 MODIF ID EXP. 135 SELECTION-SCREEN END OF BLOCK B3. 136 SELECTION-SCREEN BEGIN OF BLOCK B4 WITH FRAME TITLE TEXT-004. 137 PARAMETERS: P_IUSERS RADIOBUTTON GROUP GRP3 MODIF ID IMP. 138 PARAMETERS: P_ITEAMS RADIOBUTTON GROUP GRP3 MODIF ID IMP. 139 PARAMETERS: P_ITEAMA RADIOBUTTON GROUP GRP3 MODIF ID IMP. 140 PARAMETERS: P_ITPROF RADIOBUTTON GROUP GRP3 MODIF ID IMP. 141 PARAMETERS: P_IDPROF RADIOBUTTON GROUP GRP3 MODIF ID IMP. 142 PARAMETERS: P_ITPRFA RADIOBUTTON GROUP GRP3 MODIF ID IMP. 143 PARAMETERS: P_IDPRFA RADIOBUTTON GROUP GRP3 MODIF ID IMP. 144 SELECTION-SCREEN END OF BLOCK B4. 145 146 INITIALIZATION. 147 148 P_FILE = LCL_APPLICATION=>GET_INITIAL_DIRECTORY( ). 149 LCL_APPLICATION=>SET_DELIMITER_LISTBOX( ). 150 LCL_APPLICATION=>GET_BPC_COMPONENT_VERSION( ). 151 152 * IF LCL_APPLICATION=>CHECK_BPC_COMPONENT_IS_VALID( ) = ABAP_FALSE. 153 * MESSAGE I001(00) WITH 'BPC Component version must be 800 or 810'. 154 * ENDIF. 155 156 AT SELECTION-SCREEN OUTPUT. 157 158 LOOP AT SCREEN. 159 IF P_EXPORT = ABAP_TRUE AND SCREEN-GROUP1 = 'IMP'. 160 SCREEN-ACTIVE = '0'. 161 ENDIF. 162 IF P_IMPORT = ABAP_TRUE AND SCREEN-GROUP1 = 'EXP'. 163 SCREEN-ACTIVE = '0'. 164 ENDIF. 165 MODIFY SCREEN. 166 ENDLOOP. 167 168 AT SELECTION-SCREEN. 169 CASE ABAP_TRUE. 170 WHEN P_EXPORT. 171 CLEAR: P_IUSERS, P_ITEAMS, P_ITEAMA, P_ITPROF, 172 P_IDPROF, P_ITPRFA, P_IDPRFA. 173 WHEN P_IMPORT. 174 CLEAR: P_EUSERS, P_ETEAMS, P_ETEAMA, P_ETPROF, 175 P_EDPROF, P_ETPRFA, P_EDPRFA. 176 ENDCASE. 177 178 IF SY-UCOMM <> 'CHK'. 179 * IF LCL_APPLICATION=>CHECK_BPC_COMPONENT_IS_VALID( ) = ABAP_FALSE. 180 * MESSAGE E001(00) WITH 'BPC Component version must be 800'. 181 * ENDIF. 182 IF P_ENV IS INITIAL. 183 MESSAGE E001(00) WITH 'Please enter an Environment Id'. 184 ENDIF. 185 IF P_FILE IS INITIAL. 186 MESSAGE E001(00) WITH 'Please enter a valid directory or file'. 187 ENDIF. 188 IF P_DELMT IS INITIAL. 189 MESSAGE E001(00) WITH 'Please specify a delimiter'. 190 ENDIF. 191 ENDIF. 192 193 AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE. 194 195 CASE ABAP_TRUE. 196 WHEN P_EXPORT. P_FILE = LCL_APPLICATION=>DIRECTORY_F4( ). 197 WHEN P_IMPORT. P_FILE = LCL_APPLICATION=>FILE_F4( ). 198 ENDCASE. 199 200 START-OF-SELECTION. 201 202 LCL_APPLICATION=>SET_DELIMITER( ). 203 204 LCL_APPLICATION=>GET_ENVIRONMENT_DATA( 205 EXPORTING I_ENVIRONMENT_ID = P_ENV 206 EXCEPTIONS ENVIRONMENT_NOT_FOUND = 1 ). 207 IF SY-SUBRC <> 0. 208 RETURN. 209 ENDIF. 210 211 CASE ABAP_TRUE. 212 WHEN P_EUSERS. LCL_APPLICATION=>EXPORT_USERS_TO_FILE( ). 213 WHEN P_IUSERS. LCL_APPLICATION=>IMPORT_USERS_FROM_FILE( ). 214 WHEN P_ETEAMS. LCL_APPLICATION=>EXPORT_TEAMS_TO_FILE( ). 215 WHEN P_ITEAMS. LCL_APPLICATION=>IMPORT_TEAMS_FROM_FILE( ). 216 WHEN P_ETEAMA. LCL_APPLICATION=>EXPORT_TEAM_ASSIGN_TO_FILE( ). 217 WHEN P_ITEAMA. LCL_APPLICATION=>IMPORT_TEAM_ASSIGN_FROM_FILE( ). 218 WHEN P_ETPROF. LCL_APPLICATION=>EXPORT_TASK_PROFILES_TO_FILE( ). 219 WHEN P_ITPROF. LCL_APPLICATION=>IMPORT_TASK_PROFILES_FROM_FILE( ). 220 WHEN P_EDPROF. LCL_APPLICATION=>EXPORT_DATA_PROFILES_TO_FILE( ). 221 WHEN P_IDPROF. LCL_APPLICATION=>IMPORT_DATA_PROFILES_FROM_FILE( ). 222 WHEN P_ETPRFA. LCL_APPLICATION=>EXPORT_TAP_ASSIGN_TO_FILE( ). 223 WHEN P_ITPRFA. LCL_APPLICATION=>IMPORT_TAP_ASSIGN_FROM_FILE( ). 224 WHEN P_EDPRFA. LCL_APPLICATION=>EXPORT_DAP_ASSIGN_TO_FILE( ). 225 WHEN P_IDPRFA. LCL_APPLICATION=>IMPORT_DAP_ASSIGN_FROM_FILE( ). 226 ENDCASE. 227 228 *----------------------------------------------------------------------* 229 * CLASS lcl_application IMPLEMENTATION 230 *----------------------------------------------------------------------* 231 CLASS LCL_APPLICATION IMPLEMENTATION. 232 233 METHOD FILE_F4. 234 235 DATA: LT_FILE_TABLE TYPE FILETABLE. 236 DATA: LS_FILE_TABLE LIKE LINE OF LT_FILE_TABLE. 237 238 DATA: LV_RC TYPE SY-SUBRC. 239 240 CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG( 241 CHANGING 242 FILE_TABLE = LT_FILE_TABLE 243 RC = LV_RC ). 244 CLEAR LS_FILE_TABLE . 245 READ TABLE LT_FILE_TABLE INTO LS_FILE_TABLE INDEX 1. 246 IF SY-SUBRC = 0. 247 R_FILE = LS_FILE_TABLE-FILENAME. 248 ENDIF. 249 250 ENDMETHOD. "file_f4 251 252 METHOD DIRECTORY_F4. 253 254 CL_GUI_FRONTEND_SERVICES=>DIRECTORY_BROWSE( 255 CHANGING 256 SELECTED_FOLDER = R_PATH 257 EXCEPTIONS 258 OTHERS = 4 ). 259 260 ENDMETHOD. "directory_f4 261 262 METHOD UPLOAD. 263 264 CL_GUI_FRONTEND_SERVICES=>GUI_UPLOAD( 265 EXPORTING 266 FILENAME = I_FILEPATH 267 CHANGING 268 DATA_TAB = RT_STRTAB 269 EXCEPTIONS 270 OTHERS = 19 ). 271 IF SY-SUBRC <> 0. 272 MESSAGE I001(00) WITH 'File not found, check file path and name'. 273 ENDIF. 274 275 DELETE RT_STRTAB WHERE TABLE_LINE IS INITIAL. 276 277 ENDMETHOD. "upload 278 279 METHOD DOWNLOAD. 280 281 DATA: LT_DATATAB TYPE STRINGTAB. 282 DATA: LS_DATATAB LIKE LINE OF LT_DATATAB. 283 284 FIELD-SYMBOLS: <LS_DATA> TYPE ANY. 285 FIELD-SYMBOLS: <LV_FIELD> TYPE ANY. 286 287 * Convert table to delimited string table 288 LOOP AT IT_DATATAB ASSIGNING <LS_DATA>. 289 CLEAR LS_DATATAB. 290 DO. 291 ASSIGN COMPONENT SY-INDEX 292 OF STRUCTURE <LS_DATA> TO <LV_FIELD>. 293 IF SY-SUBRC <> 0. 294 EXIT. 295 ENDIF. 296 IF LS_DATATAB IS INITIAL. 297 LS_DATATAB = <LV_FIELD>. 298 ELSE. 299 CONCATENATE LS_DATATAB <LV_FIELD> 300 INTO LS_DATATAB SEPARATED BY LCL_APPLICATION=>LV_DELIMITER. 301 ENDIF. 302 ENDDO. 303 APPEND LS_DATATAB TO LT_DATATAB. 304 ENDLOOP. 305 306 CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD( 307 EXPORTING 308 FILENAME = I_FILEPATH 309 CHANGING 310 DATA_TAB = LT_DATATAB 311 EXCEPTIONS 312 OTHERS = 24 ). 313 IF SY-SUBRC <> 0. 314 MESSAGE I001(00) 315 WITH 'File not downloaded, check file path and name'. 316 ENDIF. 317 318 ENDMETHOD. "download 319 320 METHOD GET_INITIAL_DIRECTORY. 321 322 CL_GUI_FRONTEND_SERVICES=>GET_DESKTOP_DIRECTORY( 323 CHANGING 324 DESKTOP_DIRECTORY = R_PATH ). 325 CL_GUI_CFW=>FLUSH( ). 326 327 CONCATENATE R_PATH '*.csv' INTO R_PATH. 328 329 ENDMETHOD. "get_initial_directory 330 331 METHOD EXPORT_USERS_TO_FILE. 332 333 TYPES: BEGIN OF T_OUTPUT, 334 USER_ID TYPE UJE_USER-USER_ID, 335 END OF T_OUTPUT. 336 337 DATA: LS_USERS TYPE UJE_S_USERINFO. 338 339 DATA: LT_OUTPUT TYPE TABLE OF T_OUTPUT. 340 DATA: LS_OUTPUT LIKE LINE OF LT_OUTPUT. 341 342 REFRESH LT_OUTPUT. 343 LOOP AT LCL_APPLICATION=>LT_USERS_LIST INTO LS_USERS. 344 LS_OUTPUT-USER_ID = LS_USERS-USER_ID. 345 APPEND LS_OUTPUT TO LT_OUTPUT. 346 ENDLOOP. 347 348 * Download table 349 LCL_APPLICATION=>DOWNLOAD( 350 EXPORTING I_FILEPATH = P_FILE 351 IT_DATATAB = LT_OUTPUT ). 352 353 ENDMETHOD. "export_users_to_file 354 355 METHOD IMPORT_USERS_FROM_FILE. 356 357 DATA: LV_USER_ID TYPE UJ_USER_ID. 358 DATA: LV_MESSAGE TYPE UJ0_S_MESSAGE-MESSAGE. 359 360 DATA: LT_USERS TYPE UJE_T_USER_ID. 361 DATA: LS_USERS LIKE LINE OF LT_USERS. 362 363 DATA: LT_STRTAB TYPE STRINGTAB. 364 DATA: LS_STRTAB LIKE LINE OF LT_STRTAB. 365 366 LT_STRTAB = LCL_APPLICATION=>UPLOAD( P_FILE ). 367 368 LOOP AT LT_STRTAB INTO LS_STRTAB. 369 370 LV_USER_ID = LS_STRTAB. "should only be the user id 371 372 IF LCL_APPLICATION=>NW_USER_EXISTS( LV_USER_ID ) = ABAP_FALSE. 373 CONCATENATE 'User ID' LV_USER_ID 374 'does not exist as a NetWeaver user in SU01' 375 INTO LV_MESSAGE SEPARATED BY SPACE. 376 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `E` I_MSGNO = `001` 377 I_MESSAGE = LV_MESSAGE ). 378 CONTINUE. "Skip, do not process 379 ENDIF. 380 381 * Check if user already exists, if so, issue warning and continue. 382 IF LCL_APPLICATION=>USER_IS_VALID( LV_USER_ID ) = ABAP_TRUE. 383 CONCATENATE 'User ID' LV_USER_ID 384 'has already been added to environment' LV_ENVIRONMENT_ID 385 INTO LV_MESSAGE SEPARATED BY SPACE. 386 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `W` I_MSGNO = `001` 387 I_MESSAGE = LV_MESSAGE ). 388 CONTINUE. "Skip, do not process 389 ENDIF. 390 391 TRY. 392 CLEAR LS_USERS. REFRESH LT_USERS. 393 LS_USERS = LV_USER_ID. 394 APPEND LS_USERS TO LT_USERS. 395 396 CL_UJE_USER=>ADD_USERS( 397 EXPORTING I_APPSET_ID = LCL_APPLICATION=>LV_ENVIRONMENT_ID 398 IT_USERS = LT_USERS ). 399 CONCATENATE 'User ID' LV_USER_ID 400 'has been added successfully' 401 INTO LV_MESSAGE SEPARATED BY SPACE. 402 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `S` I_MSGNO = `001` 403 I_MESSAGE = LV_MESSAGE ). 404 405 CATCH CX_UJE_EXCEPTION INTO LO_UJE_EXCEPTION. 406 ADD_EXCEPTION_TO_MESSAGE_TABLE( LO_UJE_EXCEPTION ). 407 CONCATENATE 'User ID' LV_USER_ID 408 'not added due to error' 409 INTO LV_MESSAGE SEPARATED BY SPACE. 410 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `E` I_MSGNO = `001` 411 I_MESSAGE = LV_MESSAGE ). 412 ENDTRY. 413 414 ENDLOOP. 415 416 LCL_APPLICATION=>RENDER_ALV( ). 417 418 ENDMETHOD. "create_users_from_file 419 420 METHOD EXPORT_TEAMS_TO_FILE. 421 422 TYPES: BEGIN OF T_OUTPUT, 423 TEAM_ID TYPE UJE_S_TEAM-TEAM_ID, 424 DESCRIPTION TYPE UJE_S_TEAM-DESCRIPTION, 425 END OF T_OUTPUT. 426 DATA: LS_TEAMS TYPE UJE_S_TEAMDETAIL. 427 428 DATA: LT_OUTPUT TYPE TABLE OF T_OUTPUT. 429 DATA: LS_OUTPUT LIKE LINE OF LT_OUTPUT. 430 431 REFRESH LT_OUTPUT. 432 LOOP AT LCL_APPLICATION=>LT_TEAMS_LIST INTO LS_TEAMS. 433 MOVE-CORRESPONDING LS_TEAMS TO LS_OUTPUT. 434 APPEND LS_OUTPUT TO LT_OUTPUT. 435 ENDLOOP. 436 437 * Download table 438 LCL_APPLICATION=>DOWNLOAD( EXPORTING I_FILEPATH = P_FILE 439 IT_DATATAB = LT_OUTPUT ). 440 441 ENDMETHOD. "export_teams_to_file 442 443 METHOD IMPORT_TEAMS_FROM_FILE. 444 445 DATA: LV_MESSAGE TYPE UJ0_S_MESSAGE-MESSAGE. 446 447 DATA: LT_TEAM TYPE UJE_T_TEAM. 448 DATA: LS_TEAM TYPE UJE_S_TEAM. 449 450 DATA: LT_STRTAB TYPE STRINGTAB. 451 DATA: LS_STRTAB LIKE LINE OF LT_STRTAB. 452 453 LT_STRTAB = LCL_APPLICATION=>UPLOAD( P_FILE ). 454 455 LOOP AT LT_STRTAB INTO LS_STRTAB. 456 457 CLEAR LS_TEAM. REFRESH LT_TEAM. 458 SPLIT LS_STRTAB AT LCL_APPLICATION=>LV_DELIMITER INTO LS_TEAM-TEAM_ID 459 LS_TEAM-DESCRIPTION. 460 APPEND LS_TEAM TO LT_TEAM. 461 462 TRY. 463 * Check if team is already a valid team, if so, update. 464 IF LCL_APPLICATION=>TEAM_IS_VALID( LS_TEAM-TEAM_ID ) = ABAP_FALSE. 465 CL_UJE_TEAM=>CREATE_TEAMS( 466 EXPORTING I_APPSET_ID = LCL_APPLICATION=>LV_ENVIRONMENT_ID 467 IT_TEAMS = LT_TEAM ). 468 ELSE. 469 CL_UJE_TEAM=>UPDATE_TEAMS( 470 EXPORTING I_APPSET_ID = LCL_APPLICATION=>LV_ENVIRONMENT_ID 471 IT_TEAMS = LT_TEAM ). 472 ENDIF. 473 474 CONCATENATE 'Team' LS_TEAM-TEAM_ID 475 'has been created/updated successfully' 476 INTO LV_MESSAGE SEPARATED BY SPACE. 477 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `S` I_MSGNO = `001` 478 I_MESSAGE = LV_MESSAGE ). 479 CATCH CX_UJE_EXCEPTION INTO LO_UJE_EXCEPTION. 480 ADD_EXCEPTION_TO_MESSAGE_TABLE( LO_UJE_EXCEPTION ). 481 CONCATENATE 'Team' LS_TEAM-TEAM_ID 482 'not created/updated due to error' 483 INTO LV_MESSAGE SEPARATED BY SPACE. 484 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `E` I_MSGNO = `001` 485 I_MESSAGE = LV_MESSAGE ). 486 ENDTRY. 487 488 ENDLOOP. 489 490 LCL_APPLICATION=>RENDER_ALV( ). 491 492 ENDMETHOD. "create_teams_from_file 493 494 METHOD EXPORT_TEAM_ASSIGN_TO_FILE. 495 496 TYPES: BEGIN OF T_USER_ASSIGN, 497 USER_ID TYPE UJE_S_USER_TEAM-USER_ID, 498 TEAM_ID TYPE UJE_S_USER_TEAM-TEAM_ID, 499 TEAMLEADER TYPE UJE_S_USER_TEAM-TEAMLEADER, 500 END OF T_USER_ASSIGN. 501 502 DATA: LT_TEAM_ASSIGN TYPE TABLE OF T_USER_ASSIGN. 503 DATA: LS_TEAM_ASSIGN LIKE LINE OF LT_TEAM_ASSIGN. 504 505 DATA: LS_USER_TEAM TYPE UJE_S_TEAM. 506 DATA: LS_USER_DETAIL LIKE LINE OF LT_USER_DETAIL. 507 508 * Loop through users, then through assigned teams, 509 * check table for team leader and set flag. 510 LOOP AT LCL_APPLICATION=>LT_USER_DETAIL INTO LS_USER_DETAIL. 511 CLEAR LS_TEAM_ASSIGN. 512 LS_TEAM_ASSIGN-USER_ID = LS_USER_DETAIL-USER_ID. 513 LOOP AT LS_USER_DETAIL-TEAMS INTO LS_USER_TEAM. 514 LS_TEAM_ASSIGN-TEAM_ID = LS_USER_TEAM-TEAM_ID. 515 READ TABLE LS_USER_DETAIL-LEADING_TEAMS 516 TRANSPORTING NO FIELDS 517 WITH KEY TEAM_ID = LS_USER_TEAM-TEAM_ID. 518 IF SY-SUBRC = 0. 519 LS_TEAM_ASSIGN-TEAMLEADER = ABAP_TRUE. 520 ENDIF. 521 APPEND LS_TEAM_ASSIGN TO LT_TEAM_ASSIGN. 522 ENDLOOP. 523 ENDLOOP. 524 525 * Download table 526 LCL_APPLICATION=>DOWNLOAD( EXPORTING I_FILEPATH = P_FILE 527 IT_DATATAB = LT_TEAM_ASSIGN ). 528 529 ENDMETHOD. "export_team_assign_to_file 530 531 METHOD IMPORT_TEAM_ASSIGN_FROM_FILE. 532 533 TYPES: BEGIN OF T_USER_ASSIGN, 534 USER_ID TYPE UJE_S_USER_TEAM-USER_ID, 535 TEAM_ID TYPE UJE_S_USER_TEAM-TEAM_ID, 536 TEAMLEADER TYPE UJE_S_USER_TEAM-TEAMLEADER, 537 END OF T_USER_ASSIGN. 538 539 DATA: LV_MESSAGE TYPE UJ0_S_MESSAGE-MESSAGE. 540 541 DATA: LT_USER_TEAM TYPE UJE_T_USER_TEAM. 542 DATA: LS_USER_TEAM TYPE UJE_S_USER_TEAM. 543 544 DATA: LS_TEAM_ASSIGN TYPE UJE_S_USER_TEAM. 545 546 DATA: LT_MESSAGES TYPE UJ0_T_MESSAGE. 547 DATA: LS_ALV_MESSAGES LIKE LINE OF LT_ALV_MESSAGES. 548 549 DATA: LT_STRTAB TYPE STRINGTAB. 550 DATA: LS_STRTAB LIKE LINE OF LT_STRTAB. 551 552 DATA: LS_USER_LIST TYPE UJE_S_USERINFO. 553 DATA: LS_TEAMS_LIST LIKE LINE OF LT_TEAMS_LIST. 554 555 DATA: LT_USERS TYPE UJE_T_USER_ACTION. 556 DATA: LS_USERS LIKE LINE OF LT_USERS. 557 558 DATA: LT_TEAMS TYPE UJE_T_TEAM. 559 DATA: LS_TEAMS TYPE UJE_S_TEAM. 560 561 LT_STRTAB = LCL_APPLICATION=>UPLOAD( P_FILE ). 562 563 LOOP AT LT_STRTAB INTO LS_STRTAB. 564 565 SPLIT LS_STRTAB AT LCL_APPLICATION=>LV_DELIMITER INTO LS_TEAM_ASSIGN-USER_ID 566 LS_TEAM_ASSIGN-TEAM_ID 567 LS_TEAM_ASSIGN-TEAMLEADER. 568 569 CLEAR LS_USER_TEAM. 570 LS_USER_TEAM-USER_ID = LS_TEAM_ASSIGN-USER_ID. 571 LS_USER_TEAM-TEAM_ID = LS_TEAM_ASSIGN-TEAM_ID. 572 LS_USER_TEAM-TEAMLEADER = LS_TEAM_ASSIGN-TEAMLEADER. 573 TRANSLATE LS_USER_TEAM-TEAMLEADER USING 'YXyX1XxXN n 0 '. "Translate to X or space 574 APPEND LS_USER_TEAM TO LT_USER_TEAM. 575 576 IF LCL_APPLICATION=>TEAM_IS_VALID( LS_TEAM_ASSIGN-TEAM_ID ) = ABAP_FALSE. 577 CONCATENATE 'Team' LS_TEAM_ASSIGN-TEAM_ID 'does not yet exist.' 578 'No user assigments done.' 579 INTO LV_MESSAGE SEPARATED BY SPACE. 580 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `E` I_MSGNO = `001` 581 I_MESSAGE = LV_MESSAGE ). 582 LCL_APPLICATION=>RENDER_ALV( ). 583 RETURN. 584 ENDIF. 585 586 IF LCL_APPLICATION=>USER_IS_VALID( LS_TEAM_ASSIGN-USER_ID ) = ABAP_FALSE. 587 CONCATENATE 'User' LS_TEAM_ASSIGN-USER_ID 'does not yet exist.' 588 'No user assigments done.' 589 INTO LV_MESSAGE SEPARATED BY SPACE. 590 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `E` I_MSGNO = `001` 591 I_MESSAGE = LV_MESSAGE ). 592 LCL_APPLICATION=>RENDER_ALV( ). 593 RETURN. 594 ENDIF. 595 596 ENDLOOP. 597 598 * Loop through existing teams, all updates for each team 599 * will be done at one time. 600 LOOP AT LCL_APPLICATION=>LT_TEAMS_LIST INTO LS_TEAMS_LIST. 601 602 * Check that there is data for team assignment from file, otherwise skip 603 READ TABLE LT_USER_TEAM TRANSPORTING NO FIELDS 604 WITH KEY TEAM_ID = LS_TEAMS_LIST-TEAM_ID. 605 IF SY-SUBRC <> 0. 606 CONTINUE. 607 ENDIF. 608 609 * Add existing team details to table. 610 CLEAR LS_TEAMS. REFRESH LT_TEAMS. 611 MOVE-CORRESPONDING LS_TEAMS_LIST TO LS_TEAMS. 612 APPEND LS_TEAMS TO LT_TEAMS. 613 614 * Add existing users to table 615 REFRESH LT_USERS. 616 LOOP AT LS_TEAMS_LIST-USERS INTO LS_USER_LIST. 617 LS_USERS-USER_ID = LS_USER_LIST-USER_ID. 618 READ TABLE LS_TEAMS_LIST-TEAM_LEADERS 619 TRANSPORTING NO FIELDS 620 WITH KEY USER_ID = LS_USER_LIST-USER_ID. 621 IF SY-SUBRC = 0. 622 LS_USERS-IS_LEADER = ABAP_TRUE. 623 ENDIF. 624 APPEND LS_USERS TO LT_USERS. 625 ENDLOOP. 626 627 * add new user to table, if already exists, update leader flag 628 LOOP AT LT_USER_TEAM INTO LS_USER_TEAM 629 WHERE TEAM_ID = LS_TEAMS_LIST-TEAM_ID. 630 READ TABLE LT_USERS INTO LS_USERS 631 WITH KEY USER_ID = LS_USER_TEAM-USER_ID. 632 IF SY-SUBRC = 0. 633 LS_USERS-IS_LEADER = LS_USER_TEAM-TEAMLEADER. 634 LS_USERS-ACTION = 'M'. 635 MODIFY LT_USERS FROM LS_USERS INDEX SY-TABIX. 636 ELSE. 637 CLEAR LS_USERS. 638 LS_USERS-USER_ID = LS_USER_TEAM-USER_ID. 639 LS_USERS-IS_LEADER = LS_USER_TEAM-TEAMLEADER. 640 LS_USERS-ACTION = 'I'. 641 APPEND LS_USERS TO LT_USERS. 642 ENDIF. 643 ENDLOOP. 644 645 * now update the user/team assignments 646 TRY. 647 CL_UJE_TEAM=>UPDATE_TEAMS( 648 EXPORTING I_APPSET_ID = LCL_APPLICATION=>LV_ENVIRONMENT_ID 649 IT_TEAMS = LT_TEAMS 650 IT_USERS = LT_USERS ). 651 CONCATENATE 'Team' LS_TEAMS_LIST-TEAM_ID 'user assignments' 652 'have been updated successfully' 653 INTO LV_MESSAGE SEPARATED BY SPACE. 654 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `S` I_MSGNO = `001` 655 I_MESSAGE = LV_MESSAGE ). 656 CATCH CX_UJE_EXCEPTION INTO LO_UJE_EXCEPTION. 657 ADD_EXCEPTION_TO_MESSAGE_TABLE( LO_UJE_EXCEPTION ). 658 CONCATENATE 'Team' LS_TEAMS_LIST-TEAM_ID 'user assignments' 659 'not updated due to error' 660 INTO LV_MESSAGE SEPARATED BY SPACE. 661 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `E` I_MSGNO = `001` 662 I_MESSAGE = LV_MESSAGE ). 663 ENDTRY. 664 665 ENDLOOP. 666 667 LCL_APPLICATION=>RENDER_ALV( ). 668 669 ENDMETHOD. "import_team_assign_from_file 670 671 METHOD EXPORT_TASK_PROFILES_TO_FILE. 672 673 TYPES: BEGIN OF T_OUTPUT, 674 IDENTIFIER TYPE CHAR01, " Row Identifer 675 PROFILE TYPE UJ_PROFILE_ID, 676 VALUES TYPE STRING, 677 END OF T_OUTPUT. 678 679 DATA: LT_OUTPUT TYPE TABLE OF T_OUTPUT. 680 DATA: LS_OUTPUT LIKE LINE OF LT_OUTPUT. 681 682 DATA: LS_TASK_PROFILES LIKE LINE OF LCL_APPLICATION=>LT_TASK_PROFILES. 683 684 DATA: LS_TASKS TYPE UJE_S_TASK_INFO. 685 DATA: LS_USERS TYPE UJE_S_USERINFO. 686 DATA: LS_TEAMS TYPE UJE_S_TEAM. 687 688 LOOP AT LCL_APPLICATION=>LT_TASK_PROFILES INTO LS_TASK_PROFILES. 689 690 * Write Header row 691 CLEAR LS_OUTPUT. 692 LS_OUTPUT-IDENTIFIER = 'H'. 693 LS_OUTPUT-PROFILE = LS_TASK_PROFILES-PROFILE_ID. 694 LS_OUTPUT-VALUES = LS_TASK_PROFILES-DESCRIPTION. 695 APPEND LS_OUTPUT TO LT_OUTPUT. 696 697 * Write task assigments 698 CLEAR LS_OUTPUT. 699 LS_OUTPUT-IDENTIFIER = 'K'. 700 LS_OUTPUT-PROFILE = LS_TASK_PROFILES-PROFILE_ID. 701 LOOP AT LS_TASK_PROFILES-TASKS INTO LS_TASKS. 702 LS_OUTPUT-VALUES = LS_TASKS-TASK_ID. 703 APPEND LS_OUTPUT TO LT_OUTPUT. 704 ENDLOOP. 705 706 * Write User Assignment 707 CLEAR LS_OUTPUT. 708 LS_OUTPUT-IDENTIFIER = 'U'. 709 LS_OUTPUT-PROFILE = LS_TASK_PROFILES-PROFILE_ID. 710 LOOP AT LS_TASK_PROFILES-USERS INTO LS_USERS. 711 LS_OUTPUT-VALUES = LS_USERS-USER_ID. 712 APPEND LS_OUTPUT TO LT_OUTPUT. 713 ENDLOOP. 714 715 * Write Team Assignement 716 CLEAR LS_OUTPUT. 717 LS_OUTPUT-IDENTIFIER = 'T'. 718 LS_OUTPUT-PROFILE = LS_TASK_PROFILES-PROFILE_ID. 719 LOOP AT LS_TASK_PROFILES-TEAMS INTO LS_TEAMS. 720 LS_OUTPUT-VALUES = LS_TEAMS-TEAM_ID. 721 APPEND LS_OUTPUT TO LT_OUTPUT. 722 ENDLOOP. 723 724 ENDLOOP. 725 726 * Download table 727 LCL_APPLICATION=>DOWNLOAD( EXPORTING I_FILEPATH = P_FILE 728 IT_DATATAB = LT_OUTPUT ). 729 730 ENDMETHOD. "export_task_profiles_to_file 731 732 METHOD IMPORT_TASK_PROFILES_FROM_FILE. 733 734 TYPES: BEGIN OF T_INPUT, 735 IDENTIFIER TYPE CHAR01, " Row Identifer 736 PROFILE TYPE UJ_PROFILE_ID, 737 VALUES TYPE STRING, 738 END OF T_INPUT. 739 740 TYPES: BEGIN OF T_TASK_PROFILE, 741 PROFILE TYPE UJE_S_PROFILE, 742 TASK_INFO TYPE UJE_T_TASK_INFO, 743 USERS_ASIN TYPE UJE_T_API_USER_ID, 744 TEAMS_ASIN TYPE UJE_T_API_TEAM_ID, 745 END OF T_TASK_PROFILE. 746 747 DATA: LT_TASK_PROFILE TYPE TABLE OF T_TASK_PROFILE. 748 DATA: LS_TASK_PROFILE LIKE LINE OF LT_TASK_PROFILE. 749 750 DATA: LV_LAST_PROFILE TYPE UJ_PROFILE_ID. 751 752 DATA: LS_USERS_ASIN TYPE UJE_S_API_USER_ID. 753 DATA: LS_TEAMS_ASIN TYPE UJE_S_API_TEAM_ID. 754 DATA: LS_TEAMS_LIST LIKE LINE OF LT_TEAMS_LIST. 755 756 DATA: LT_TASK_INFO TYPE UJE_T_TASK_INFO. 757 DATA: LS_TASK_INFO LIKE LINE OF LT_TASK_INFO. 758 759 DATA: LT_STRTAB TYPE STRINGTAB. 760 DATA: LS_STRTAB LIKE LINE OF LT_STRTAB. 761 762 DATA: LT_INPUT TYPE TABLE OF T_INPUT. 763 DATA: LS_INPUT LIKE LINE OF LT_INPUT. 764 765 DATA: LT_TASKS TYPE UJE_T_TASK_ID. 766 DATA: LS_TASKS LIKE LINE OF LT_TASKS. 767 768 DATA: LT_PROFS TYPE UJE_T_PROFILE_ACTION. 769 DATA: LS_PROFS LIKE LINE OF LT_PROFS. 770 771 DATA: LT_TEAMS TYPE UJE_T_TEAM. 772 DATA: LS_TEAMS LIKE LINE OF LT_TEAMS. 773 774 DATA: LT_USERS TYPE UJE_T_USER_ID. 775 DATA: LS_USERS LIKE LINE OF LT_USERS. 776 777 DATA: LV_MESSAGE TYPE UJ0_S_MESSAGE-MESSAGE. 778 DATA: LV_OBJECT_ID TYPE STRING. 779 780 DATA: LO_TASK_PROFILE_MGR TYPE REF TO CL_UJE_PROFILE_TASK. 781 782 * Upload file 783 LT_STRTAB = LCL_APPLICATION=>UPLOAD( P_FILE ). 784 785 * Rip import file into internal table 786 LOOP AT LT_STRTAB INTO LS_STRTAB. 787 CLEAR LS_INPUT. 788 SPLIT LS_STRTAB AT LCL_APPLICATION=>LV_DELIMITER INTO LS_INPUT-IDENTIFIER 789 LS_INPUT-PROFILE 790 LS_INPUT-VALUES. 791 APPEND LS_INPUT TO LT_INPUT. 792 ENDLOOP. 793 794 * Build profile table containing all associated data 795 SORT LT_INPUT STABLE ASCENDING BY PROFILE IDENTIFIER VALUES. 796 797 LOOP AT LT_INPUT INTO LS_INPUT. 798 799 IF LS_INPUT-PROFILE <> LV_LAST_PROFILE 800 AND LV_LAST_PROFILE IS NOT INITIAL. 801 APPEND LS_TASK_PROFILE TO LT_TASK_PROFILE. 802 CLEAR LS_TASK_PROFILE. 803 ENDIF. 804 805 * Based on record identifier 806 CASE LS_INPUT-IDENTIFIER. 807 WHEN 'H'. " Header 808 LS_TASK_PROFILE-PROFILE-PROFILE_ID = LS_INPUT-PROFILE. 809 LS_TASK_PROFILE-PROFILE-DESCRIPTION = LS_INPUT-VALUES. 810 WHEN 'K'. " Task info 811 LS_TASK_INFO-TASK_ID = LS_INPUT-VALUES. 812 IF LCL_APPLICATION=>TASK_IS_VALID( LS_TASK_INFO-TASK_ID ) = ABAP_FALSE. 813 CONCATENATE 'Task ID' LS_TASK_INFO-TASK_ID 'is not valid.' 814 'No task profile updates done.' 815 INTO LV_MESSAGE SEPARATED BY SPACE. 816 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `E` I_MSGNO = `001` 817 I_MESSAGE = LV_MESSAGE ). 818 LCL_APPLICATION=>RENDER_ALV( ). 819 RETURN. 820 ENDIF. 821 APPEND LS_TASK_INFO TO LS_TASK_PROFILE-TASK_INFO. 822 WHEN 'U'. " Users Assignments 823 LS_USERS_ASIN = LS_INPUT-VALUES. 824 IF LCL_APPLICATION=>USER_IS_VALID( LS_USERS_ASIN ) = ABAP_FALSE. 825 CONCATENATE 'User' LS_USERS_ASIN 'does not exist.' 826 'No task profile updates done.' 827 INTO LV_MESSAGE SEPARATED BY SPACE. 828 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `E` I_MSGNO = `001` 829 I_MESSAGE = LV_MESSAGE ). 830 LCL_APPLICATION=>RENDER_ALV( ). 831 RETURN. 832 ENDIF. 833 APPEND LS_USERS_ASIN TO LS_TASK_PROFILE-USERS_ASIN. 834 WHEN 'T'. " Team Assignments 835 LS_TEAMS_ASIN = LS_INPUT-VALUES. 836 IF LCL_APPLICATION=>TEAM_IS_VALID( LS_TEAMS_ASIN ) = ABAP_FALSE. 837 CONCATENATE 'Team' LS_TEAMS_ASIN 'does not exist.' 838 'No task profile updates done.' 839 INTO LV_MESSAGE SEPARATED BY SPACE. 840 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `E` I_MSGNO = `001` 841 I_MESSAGE = LV_MESSAGE ). 842 LCL_APPLICATION=>RENDER_ALV( ). 843 RETURN. 844 ENDIF. 845 APPEND LS_TEAMS_ASIN TO LS_TASK_PROFILE-TEAMS_ASIN. 846 ENDCASE. 847 848 LV_LAST_PROFILE = LS_INPUT-PROFILE. 849 850 AT LAST. 851 APPEND LS_TASK_PROFILE TO LT_TASK_PROFILE. 852 ENDAT. 853 854 ENDLOOP. 855 856 * Now for each profile, call API to create/update 857 LOOP AT LT_TASK_PROFILE INTO LS_TASK_PROFILE. 858 859 REFRESH LT_TASKS. 860 LOOP AT LS_TASK_PROFILE-TASK_INFO INTO LS_TASK_INFO. 861 CLEAR LS_TASKS. 862 LS_TASKS = LS_TASK_INFO-TASK_ID. 863 APPEND LS_TASKS TO LT_TASKS. 864 ENDLOOP. 865 866 TRY. 867 * Create the task profile. 868 LV_OBJECT_ID = LS_TASK_PROFILE-PROFILE-PROFILE_ID. 869 LO_TASK_PROFILE_MGR ?= CL_UJE_USER_MGR=>CREATE_OBJ( 870 I_APPSET_ID = LCL_APPLICATION=>LV_ENVIRONMENT_ID 871 I_OBJECT_ID = LV_OBJECT_ID 872 I_OBJECT_TYPE = 'CL_UJE_PROFILE_TASK' ). 873 IF LCL_APPLICATION=>TPROFILE_IS_VALID( LS_TASK_PROFILE-PROFILE-PROFILE_ID ) = ABAP_FALSE. 874 LO_TASK_PROFILE_MGR->CREATE( 875 EXPORTING I_TASK_PROF_DESC = LS_TASK_PROFILE-PROFILE-DESCRIPTION 876 IT_TASKS = LT_TASKS ). 877 ELSE. 878 LO_TASK_PROFILE_MGR->UPDATE( 879 EXPORTING I_TASK_PROF_DESC = LS_TASK_PROFILE-PROFILE-DESCRIPTION 880 IT_TASKS = LT_TASKS ). 881 ENDIF. 882 883 * Assign users 884 LOOP AT LS_TASK_PROFILE-USERS_ASIN INTO LS_USERS_ASIN. 885 886 CLEAR LS_USERS. REFRESH LT_USERS. 887 LS_USERS = LS_USERS_ASIN-USER_ID. 888 APPEND LS_USERS TO LT_USERS. 889 890 CLEAR LS_PROFS. REFRESH LT_PROFS. 891 LS_PROFS-PROFILE_ID = LS_TASK_PROFILE-PROFILE-PROFILE_ID. 892 LS_PROFS-ACTION = 'I'. 893 APPEND LS_PROFS TO LT_PROFS. 894 895 TRY. 896 CL_UJE_USER=>UPDATE_USERS( 897 EXPORTING I_APPSET_ID = LCL_APPLICATION=>LV_ENVIRONMENT_ID 898 IT_USERS = LT_USERS 899 IT_TASK_PROFS = LT_PROFS ). 900 CATCH CX_UJE_EXCEPTION INTO LO_UJE_EXCEPTION. 901 ADD_EXCEPTION_TO_MESSAGE_TABLE( LO_UJE_EXCEPTION ). 902 CONCATENATE 'Task Profile' LS_TASK_PROFILE-PROFILE-PROFILE_ID 903 'not created/updated due to error' 904 INTO LV_MESSAGE SEPARATED BY SPACE. 905 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `E` I_MSGNO = `001` 906 I_MESSAGE = LV_MESSAGE ). 907 ENDTRY. 908 909 ENDLOOP. 910 911 * Assign teams 912 LOOP AT LS_TASK_PROFILE-TEAMS_ASIN INTO LS_TEAMS_ASIN. 913 914 REFRESH LT_TEAMS. 915 READ TABLE LT_TEAMS_LIST INTO LS_TEAMS_LIST 916 WITH KEY TEAM_ID = LS_TEAMS_ASIN-TEAM_ID. 917 IF SY-SUBRC = 0. 918 MOVE-CORRESPONDING LS_TEAMS_LIST TO LS_TEAMS. 919 APPEND LS_TEAMS TO LT_TEAMS. 920 ENDIF. 921 922 CLEAR LS_PROFS. REFRESH LT_PROFS. 923 LS_PROFS-PROFILE_ID = LS_TASK_PROFILE-PROFILE-PROFILE_ID. 924 LS_PROFS-ACTION = 'I'. 925 APPEND LS_PROFS TO LT_PROFS. 926 927 TRY. 928 CL_UJE_TEAM=>UPDATE_TEAMS( 929 EXPORTING I_APPSET_ID = LCL_APPLICATION=>LV_ENVIRONMENT_ID 930 IT_TEAMS = LT_TEAMS 931 IT_TASK_PROFS = LT_PROFS ). 932 CATCH CX_UJE_EXCEPTION INTO LO_UJE_EXCEPTION. 933 ADD_EXCEPTION_TO_MESSAGE_TABLE( LO_UJE_EXCEPTION ). 934 CONCATENATE 'Task Profile' LS_TASK_PROFILE-PROFILE-PROFILE_ID 935 'not created/updated due to error' 936 INTO LV_MESSAGE SEPARATED BY SPACE. 937 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `E` I_MSGNO = `001` 938 I_MESSAGE = LV_MESSAGE ). 939 ENDTRY. 940 ENDLOOP. 941 942 CONCATENATE 'Task Profile' LS_TASK_PROFILE-PROFILE-PROFILE_ID 943 'has been created/updated successfully' 944 INTO LV_MESSAGE SEPARATED BY SPACE. 945 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `S` I_MSGNO = `001` 946 I_MESSAGE = LV_MESSAGE ). 947 948 CATCH CX_UJE_EXCEPTION INTO LO_UJE_EXCEPTION. 949 ADD_EXCEPTION_TO_MESSAGE_TABLE( LO_UJE_EXCEPTION ). 950 CONCATENATE 'Task Profile' LS_TASK_PROFILE-PROFILE-PROFILE_ID 951 'not created/updated due to error' 952 INTO LV_MESSAGE SEPARATED BY SPACE. 953 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `E` I_MSGNO = `001` 954 I_MESSAGE = LV_MESSAGE ). 955 ENDTRY. 956 957 ENDLOOP. 958 959 * Display ALV 960 LCL_APPLICATION=>RENDER_ALV( ). 961 962 ENDMETHOD. "import_task_profiles_from_file 963 964 METHOD EXPORT_DATA_PROFILES_TO_FILE. 965 966 TYPES: BEGIN OF T_OUTPUT, 967 IDENTIFIER TYPE CHAR01, " Row Identifer 968 PROFILE TYPE UJ_PROFILE_ID, 969 VALUES TYPE STRING, 970 END OF T_OUTPUT. 971 972 DATA: LT_OUTPUT TYPE TABLE OF T_OUTPUT. 973 DATA: LS_OUTPUT LIKE LINE OF LT_OUTPUT. 974 975 DATA: LT_DATA_PROF_DET TYPE UJE_T_MBR_PROF_DET. 976 DATA: LS_DATA_PROF_DET LIKE LINE OF LT_DATA_PROF_DET. 977 978 DATA: LT_USERS TYPE UJE_T_USER. 979 DATA: LS_USERS LIKE LINE OF LT_USERS. 980 981 DATA: LT_TEAMS TYPE UJE_T_TEAM. 982 DATA: LS_TEAMS LIKE LINE OF LT_TEAMS. 983 984 DATA: LS_DATA_ACCESS_PROFILES TYPE UJE_S_MBR_PROF_APP. 985 DATA: LS_CUBE_ACC TYPE UJE_S_CUBEACC_DET. 986 DATA: LS_DIMACC_DET TYPE UJE_S_DIMACC_DET. 987 DATA: LS_MBRACC_DET TYPE UJE_S_MBRACC_DET. 988 DATA: LS_MEMBER TYPE UJE_S_MBR. 989 990 DATA: LS_CUBE_MATRIX_ACC TYPE UJE_S_CUBEACC_MATRIX_DET. 991 DATA: LS_DIMENSIONS TYPE UJ_DIM_NAME. 992 DATA: LS_RIGHTS TYPE UJE_S_DIMACC_MATRIX_DET. 993 DATA: LS_MEMBERS TYPE UJ_DIM_MEMBER. 994 995 DATA: LO_PROFILE_DAO TYPE REF TO CL_UJE_PROFILE_DAO. 996 DATA: LO_DATA_ACCESS_PROFILE_MGR TYPE REF TO CL_UJE_PROFILE_MEMACCESS. 997 998 CREATE OBJECT LO_PROFILE_DAO 999 EXPORTING 1000 I_APPSET_ID = LCL_APPLICATION=>LV_ENVIRONMENT_ID. 1001 1002 CREATE OBJECT LO_DATA_ACCESS_PROFILE_MGR 1003 EXPORTING 1004 I_APPSET_ID = LCL_APPLICATION=>LV_ENVIRONMENT_ID. 1005 1006 LOOP AT LCL_APPLICATION=>LT_DATA_ACCESS_PROFILES INTO LS_DATA_ACCESS_PROFILES. 1007 1008 REFRESH: LT_DATA_PROF_DET. 1009 LO_DATA_ACCESS_PROFILE_MGR->GET_DETAILS( 1010 EXPORTING 1011 I_PROFILE_ID = LS_DATA_ACCESS_PROFILES-PROFILE_ID 1012 IMPORTING 1013 ET_MBR_PROF_DETAIL = LT_DATA_PROF_DET ). 1014 1015 REFRESH: LT_USERS, LT_TEAMS. 1016 LO_PROFILE_DAO->GET_DETAILS( EXPORTING I_PROFILE_ID = LS_DATA_ACCESS_PROFILES-PROFILE_ID 1017 I_PROFILE_CLASS = `MBR` 1018 IMPORTING ET_USERS = LT_USERS 1019 ET_TEAMS = LT_TEAMS ). 1020 1021 CLEAR LS_DATA_PROF_DET. 1022 READ TABLE LT_DATA_PROF_DET INTO LS_DATA_PROF_DET 1023 WITH KEY PROFILE_AGR_NAME = LS_DATA_ACCESS_PROFILES-PROFILE_ID. "Should only be 1 row 1024 IF SY-SUBRC <> 0. 1025 ENDIF. 1026 1027 * Write Header row 1028 CLEAR LS_OUTPUT. 1029 LS_OUTPUT-IDENTIFIER = 'H'. 1030 LS_OUTPUT-PROFILE = LS_DATA_PROF_DET-PROFILE_AGR_NAME. 1031 LS_OUTPUT-VALUES = LS_DATA_PROF_DET-DESCRIPTION. 1032 APPEND LS_OUTPUT TO LT_OUTPUT. 1033 1034 * Write Member detail data. 1035 LOOP AT LT_DATA_PROF_DET INTO LS_DATA_PROF_DET. 1036 1037 CLEAR LS_OUTPUT. 1038 LS_OUTPUT-IDENTIFIER = 'M'. 1039 LS_OUTPUT-PROFILE = LS_DATA_ACCESS_PROFILES-PROFILE_ID. 1040 1041 IF LS_DATA_PROF_DET-CUBE_ACC IS NOT INITIAL. 1042 LOOP AT LS_DATA_PROF_DET-CUBE_ACC INTO LS_CUBE_ACC. 1043 LOOP AT LS_CUBE_ACC-DIMACC_DET INTO LS_DIMACC_DET. 1044 LOOP AT LS_DIMACC_DET-MBRACC_DET INTO LS_MBRACC_DET. 1045 LOOP AT LS_MBRACC_DET-MEMBER INTO LS_MEMBER. 1046 CONCATENATE LS_DIMACC_DET-DIMENSION 1047 LS_CUBE_ACC-APPLICATION_ID 1048 "ls_cube_acc-matrix " Not needed 1049 LS_MEMBER-MBR_ID 1050 LS_MBRACC_DET-RWD 1051 INTO LS_OUTPUT-VALUES SEPARATED BY LCL_APPLICATION=>LV_DELIMITER. 1052 APPEND LS_OUTPUT TO LT_OUTPUT. 1053 ENDLOOP. 1054 ENDLOOP. 1055 ENDLOOP. 1056 ENDLOOP. 1057 ENDIF. 1058 1059 ENDLOOP. 1060 1061 * Write User and Team assignments. 1062 LOOP AT LT_USERS INTO LS_USERS. 1063 CLEAR LS_OUTPUT. 1064 LS_OUTPUT-IDENTIFIER = 'U'. 1065 LS_OUTPUT-PROFILE = LS_DATA_ACCESS_PROFILES-PROFILE_ID. 1066 LS_OUTPUT-VALUES = LS_USERS-USER_ID. 1067 APPEND LS_OUTPUT TO LT_OUTPUT. 1068 ENDLOOP. 1069 1070 LOOP AT LT_TEAMS INTO LS_TEAMS. 1071 CLEAR LS_OUTPUT. 1072 LS_OUTPUT-IDENTIFIER = 'T'. 1073 LS_OUTPUT-PROFILE = LS_DATA_ACCESS_PROFILES-PROFILE_ID. 1074 LS_OUTPUT-VALUES = LS_TEAMS-TEAM_ID. 1075 APPEND LS_OUTPUT TO LT_OUTPUT. 1076 ENDLOOP. 1077 1078 ENDLOOP. 1079 1080 * Download table 1081 LCL_APPLICATION=>DOWNLOAD( EXPORTING I_FILEPATH = P_FILE 1082 IT_DATATAB = LT_OUTPUT ). 1083 1084 ENDMETHOD. "export_mem_profiles_to_file 1085 1086 METHOD IMPORT_DATA_PROFILES_FROM_FILE. 1087 1088 TYPES: BEGIN OF T_INPUT, 1089 IDENTIFIER TYPE CHAR01, " Row Identifer 1090 PROFILE TYPE UJ_PROFILE_ID, 1091 VALUES TYPE STRING, 1092 END OF T_INPUT. 1093 1094 TYPES: BEGIN OF T_DATAACC_PROFILE, 1095 PROFILE TYPE UJE_S_PROFILE, 1096 DATAACC TYPE UJE_T_MEMACCESS, 1097 USERS_ASIN TYPE UJE_T_API_USER_ID, 1098 TEAMS_ASIN TYPE UJE_T_API_TEAM_ID, 1099 END OF T_DATAACC_PROFILE. 1100 1101 DATA: LT_DATAACC_PROFILE TYPE TABLE OF T_DATAACC_PROFILE. 1102 DATA: LS_DATAACC_PROFILE LIKE LINE OF LT_DATAACC_PROFILE. 1103 1104 DATA: LV_LAST_PROFILE TYPE UJ_PROFILE_ID. 1105 1106 DATA: LT_DATAACCESS TYPE UJE_T_MEMACCESS. 1107 DATA: LS_DATAACCESS LIKE LINE OF LT_DATAACCESS. 1108 1109 DATA: LT_STRTAB TYPE STRINGTAB. 1110 DATA: LS_STRTAB LIKE LINE OF LT_STRTAB. 1111 1112 DATA: LT_INPUT TYPE TABLE OF T_INPUT. 1113 DATA: LS_INPUT LIKE LINE OF LT_INPUT. 1114 1115 DATA: LT_DATA_PROF TYPE UJE_T_MBR_PROF_DET. 1116 DATA: LS_DATA_PROF TYPE UJE_S_MBR_PROF_DET. 1117 1118 DATA: LT_PROFS TYPE UJE_T_PROFILE_ACTION. 1119 DATA: LS_PROFS LIKE LINE OF LT_PROFS. 1120 1121 DATA: LT_TEAMS TYPE UJE_T_TEAM. 1122 DATA: LS_TEAMS LIKE LINE OF LT_TEAMS. 1123 1124 DATA: LT_USERS TYPE UJE_T_USER_ID. 1125 DATA: LS_USERS LIKE LINE OF LT_USERS. 1126 1127 DATA: LS_USERS_ASIN TYPE UJE_S_API_USER_ID. 1128 DATA: LS_TEAMS_ASIN TYPE UJE_S_API_TEAM_ID. 1129 DATA: LS_CUBEACC TYPE UJE_S_CUBEACC_DET. 1130 DATA: LS_DIMACC_DET TYPE UJE_S_DIMACC_DET. 1131 DATA: LS_DATAACC_DET TYPE UJE_S_MBRACC_DET. 1132 DATA: LS_MEMBER_LIST TYPE UJE_S_MBR. 1133 DATA: LS_TEAMS_LIST LIKE LINE OF LT_TEAMS_LIST. 1134 1135 DATA: LV_MESSAGE TYPE UJ0_S_MESSAGE-MESSAGE. 1136 1137 * Upload file 1138 LT_STRTAB = LCL_APPLICATION=>UPLOAD( P_FILE ). 1139 1140 * Rip import file into internal table 1141 LOOP AT LT_STRTAB INTO LS_STRTAB. 1142 CLEAR LS_INPUT. 1143 SPLIT LS_STRTAB AT LCL_APPLICATION=>LV_DELIMITER INTO LS_INPUT-IDENTIFIER 1144 LS_INPUT-PROFILE 1145 LS_INPUT-VALUES. 1146 APPEND LS_INPUT TO LT_INPUT. 1147 ENDLOOP. 1148 1149 * Build profile table containing all associated data 1150 SORT LT_INPUT STABLE ASCENDING BY PROFILE IDENTIFIER VALUES. 1151 1152 LOOP AT LT_INPUT INTO LS_INPUT. 1153 1154 IF LS_INPUT-PROFILE <> LV_LAST_PROFILE 1155 AND LV_LAST_PROFILE IS NOT INITIAL. 1156 APPEND LS_DATAACC_PROFILE TO LT_DATAACC_PROFILE. 1157 CLEAR LS_DATAACC_PROFILE. 1158 ENDIF. 1159 1160 * Based on record identifier 1161 CASE LS_INPUT-IDENTIFIER. 1162 WHEN 'H'. " Header 1163 LS_DATAACC_PROFILE-PROFILE-PROFILE_ID = LS_INPUT-PROFILE. 1164 LS_DATAACC_PROFILE-PROFILE-DESCRIPTION = LS_INPUT-VALUES. 1165 WHEN 'M'. " Data Access info 1166 LS_DATAACCESS-PROFILE_ID = LS_INPUT-PROFILE. 1167 SPLIT LS_INPUT-VALUES AT LCL_APPLICATION=>LV_DELIMITER INTO LS_DATAACCESS-DIMENSION 1168 LS_DATAACCESS-APPLICATION_ID 1169 LS_DATAACCESS-MEMBER 1170 LS_DATAACCESS-RWD. 1171 * Check APPLICATION_ID 1172 READ TABLE LCL_APPLICATION=>LT_APPL_INFO 1173 TRANSPORTING NO FIELDS 1174 WITH KEY APPLICATION_ID = LS_DATAACCESS-APPLICATION_ID. 1175 IF SY-SUBRC <> 0. 1176 CONCATENATE 'Application ID' LS_DATAACCESS-APPLICATION_ID 1177 'not valid for this Application Set' 1178 INTO LV_MESSAGE SEPARATED BY SPACE. 1179 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `E` I_MSGNO = `001` 1180 I_MESSAGE = LV_MESSAGE ). 1181 CONCATENATE 'Data Access Profile' LS_DATAACC_PROFILE-PROFILE-PROFILE_ID 1182 'not created/updated due to error' 1183 INTO LV_MESSAGE SEPARATED BY SPACE. 1184 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `E` I_MSGNO = `001` 1185 I_MESSAGE = LV_MESSAGE ). 1186 ENDIF. 1187 1188 * Check DIMENSION 1189 READ TABLE LCL_APPLICATION=>LT_APPL_DIM 1190 TRANSPORTING NO FIELDS 1191 WITH KEY APPL_ID = LS_DATAACCESS-APPLICATION_ID 1192 DIMENSION = LS_DATAACCESS-DIMENSION. 1193 IF SY-SUBRC <> 0. 1194 CONCATENATE 'Dimension' LS_DATAACCESS-DIMENSION 1195 'not valid for Application' 1196 LS_DATAACCESS-APPLICATION_ID 1197 INTO LV_MESSAGE SEPARATED BY SPACE. 1198 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `E` I_MSGNO = `001` 1199 I_MESSAGE = LV_MESSAGE ). 1200 CONCATENATE 'Data Access Profile' 1201 LS_DATAACC_PROFILE-PROFILE-PROFILE_ID 1202 'not created/updated due to error' 1203 INTO LV_MESSAGE SEPARATED BY SPACE. 1204 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `E` I_MSGNO = `001` 1205 I_MESSAGE = LV_MESSAGE ). 1206 ENDIF. 1207 1208 * Check MEMBER 1209 READ TABLE LCL_APPLICATION=>LT_MEMBERS 1210 TRANSPORTING NO FIELDS 1211 WITH KEY APPL_ID = LS_DATAACCESS-APPLICATION_ID 1212 DIMENSION = LS_DATAACCESS-DIMENSION 1213 MEMBER = LS_DATAACCESS-MEMBER. 1214 IF SY-SUBRC <> 0 AND LS_DATAACCESS-MEMBER <> '[ALL]'. 1215 CONCATENATE 'Member' LS_DATAACCESS-MEMBER 1216 'not valid for Dimension' LS_DATAACCESS-DIMENSION 1217 INTO LV_MESSAGE SEPARATED BY SPACE. 1218 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `E` I_MSGNO = `001` 1219 I_MESSAGE = LV_MESSAGE ). 1220 CONCATENATE 'Data Access Profile' LS_DATAACC_PROFILE-PROFILE-PROFILE_ID 1221 'not created/updated due to error' 1222 INTO LV_MESSAGE SEPARATED BY SPACE. 1223 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `E` I_MSGNO = `001` 1224 I_MESSAGE = LV_MESSAGE ). 1225 ENDIF. 1226 APPEND LS_DATAACCESS TO LS_DATAACC_PROFILE-DATAACC. 1227 WHEN 'U'. " Users Assignments 1228 LS_USERS_ASIN = LS_INPUT-VALUES. 1229 IF LCL_APPLICATION=>USER_IS_VALID( LS_USERS_ASIN ) = ABAP_FALSE. 1230 CONCATENATE 'User' LS_USERS_ASIN 'does not exist.' 1231 'No data access profile updates done.' 1232 INTO LV_MESSAGE SEPARATED BY SPACE. 1233 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `E` I_MSGNO = `001` 1234 I_MESSAGE = LV_MESSAGE ). 1235 ENDIF. 1236 APPEND LS_USERS_ASIN TO LS_DATAACC_PROFILE-USERS_ASIN. 1237 WHEN 'T'. " Team Assignments 1238 LS_TEAMS_ASIN = LS_INPUT-VALUES. 1239 IF LCL_APPLICATION=>TEAM_IS_VALID( LS_TEAMS_ASIN ) = ABAP_FALSE. 1240 CONCATENATE 'Team' LS_TEAMS_ASIN 'does not exist.' 1241 'No data access profile updates done.' 1242 INTO LV_MESSAGE SEPARATED BY SPACE. 1243 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `E` I_MSGNO = `001` 1244 I_MESSAGE = LV_MESSAGE ). 1245 ENDIF. 1246 APPEND LS_TEAMS_ASIN TO LS_DATAACC_PROFILE-TEAMS_ASIN. 1247 ENDCASE. 1248 1249 LV_LAST_PROFILE = LS_INPUT-PROFILE. 1250 1251 AT LAST. 1252 APPEND LS_DATAACC_PROFILE TO LT_DATAACC_PROFILE. 1253 ENDAT. 1254 1255 ENDLOOP. 1256 1257 * If any message during check, then render now, and do not process anything. 1258 IF LT_ALV_MESSAGES IS NOT INITIAL. 1259 LCL_APPLICATION=>RENDER_ALV( ). 1260 RETURN. 1261 ENDIF. 1262 1263 * Now for each profile, call API to create/update 1264 LOOP AT LT_DATAACC_PROFILE INTO LS_DATAACC_PROFILE. 1265 1266 CLEAR LS_DATA_PROF. REFRESH LT_DATA_PROF. 1267 LS_DATA_PROF-PROFILE_AGR_NAME = LS_DATAACC_PROFILE-PROFILE-PROFILE_ID. 1268 LS_DATA_PROF-DESCRIPTION = LS_DATAACC_PROFILE-PROFILE-DESCRIPTION. 1269 1270 LOOP AT LS_DATAACC_PROFILE-DATAACC INTO LS_DATAACCESS. 1271 1272 CLEAR LS_MEMBER_LIST. 1273 CLEAR LS_DATAACC_DET. 1274 CLEAR LS_DIMACC_DET. 1275 CLEAR LS_CUBEACC. 1276 1277 LS_MEMBER_LIST-MBR_ID = LS_DATAACCESS-MEMBER. 1278 APPEND LS_MEMBER_LIST TO LS_DATAACC_DET-MEMBER. 1279 LS_DATAACC_DET-RWD = LS_DATAACCESS-RWD. 1280 APPEND LS_DATAACC_DET TO LS_DIMACC_DET-MBRACC_DET. 1281 LS_DIMACC_DET-DIMENSION = LS_DATAACCESS-DIMENSION. 1282 1283 LS_CUBEACC-APPLICATION_ID = LS_DATAACCESS-APPLICATION_ID. 1284 APPEND LS_DIMACC_DET TO LS_CUBEACC-DIMACC_DET. 1285 1286 APPEND LS_CUBEACC TO LS_DATA_PROF-CUBE_ACC. 1287 1288 ENDLOOP. 1289 1290 APPEND LS_DATA_PROF TO LT_DATA_PROF. 1291 1292 * Determine if the data access profile is new, call correct API. 1293 TRY. 1294 IF LCL_APPLICATION=>DPROFILE_IS_VALID( LS_DATAACC_PROFILE-PROFILE-PROFILE_ID ) = ABAP_FALSE. 1295 CL_UJE_PROFILE_MEMACCESS=>CREATE_MBR_PROFILES( 1296 EXPORTING I_APPSET_ID = LCL_APPLICATION=>LV_ENVIRONMENT_ID 1297 IT_MBR_PROF_DET = LT_DATA_PROF ). 1298 ELSE. 1299 CL_UJE_PROFILE_MEMACCESS=>UPDATE_MBR_PROFILES( 1300 EXPORTING I_APPSET_ID = LCL_APPLICATION=>LV_ENVIRONMENT_ID 1301 IT_MBR_PROF_DET = LT_DATA_PROF ). 1302 ENDIF. 1303 1304 * Assign users 1305 LOOP AT LS_DATAACC_PROFILE-USERS_ASIN INTO LS_USERS_ASIN. 1306 1307 CLEAR LS_USERS. REFRESH LT_USERS. 1308 LS_USERS = LS_USERS_ASIN-USER_ID. 1309 APPEND LS_USERS TO LT_USERS. 1310 1311 CLEAR LS_PROFS. REFRESH LT_PROFS. 1312 LS_PROFS-PROFILE_ID = LS_DATAACC_PROFILE-PROFILE-PROFILE_ID. 1313 LS_PROFS-ACTION = 'I'. 1314 APPEND LS_PROFS TO LT_PROFS. 1315 1316 TRY. 1317 CL_UJE_USER=>UPDATE_USERS( 1318 EXPORTING I_APPSET_ID = LCL_APPLICATION=>LV_ENVIRONMENT_ID 1319 IT_USERS = LT_USERS 1320 IT_MBR_PROFS = LT_PROFS ). 1321 CATCH CX_UJE_EXCEPTION INTO LO_UJE_EXCEPTION. 1322 ADD_EXCEPTION_TO_MESSAGE_TABLE( LO_UJE_EXCEPTION ). 1323 CONCATENATE 'Data Access Profile' LS_DATAACC_PROFILE-PROFILE-PROFILE_ID 1324 'not created/updated due to error' 1325 INTO LV_MESSAGE SEPARATED BY SPACE. 1326 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `E` I_MSGNO = `001` 1327 I_MESSAGE = LV_MESSAGE ). 1328 ENDTRY. 1329 1330 ENDLOOP. 1331 1332 * Assign teams 1333 LOOP AT LS_DATAACC_PROFILE-TEAMS_ASIN INTO LS_TEAMS_ASIN. 1334 1335 REFRESH LT_TEAMS. 1336 READ TABLE LT_TEAMS_LIST INTO LS_TEAMS_LIST 1337 WITH KEY TEAM_ID = LS_TEAMS_ASIN-TEAM_ID. 1338 IF SY-SUBRC = 0. 1339 MOVE-CORRESPONDING LS_TEAMS_LIST TO LS_TEAMS. 1340 APPEND LS_TEAMS TO LT_TEAMS. 1341 ENDIF. 1342 1343 CLEAR LS_PROFS. REFRESH LT_PROFS. 1344 LS_PROFS-PROFILE_ID = LS_DATAACC_PROFILE-PROFILE-PROFILE_ID. 1345 LS_PROFS-ACTION = 'I'. 1346 APPEND LS_PROFS TO LT_PROFS. 1347 1348 TRY. 1349 CL_UJE_TEAM=>UPDATE_TEAMS( 1350 EXPORTING I_APPSET_ID = LCL_APPLICATION=>LV_ENVIRONMENT_ID 1351 IT_TEAMS = LT_TEAMS 1352 IT_MBR_PROFS = LT_PROFS ). 1353 CATCH CX_UJE_EXCEPTION INTO LO_UJE_EXCEPTION. 1354 ADD_EXCEPTION_TO_MESSAGE_TABLE( LO_UJE_EXCEPTION ). 1355 CONCATENATE 'Data Access Profile' LS_DATAACC_PROFILE-PROFILE-PROFILE_ID 1356 'not created/updated due to error' 1357 INTO LV_MESSAGE SEPARATED BY SPACE. 1358 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `E` I_MSGNO = `001` 1359 I_MESSAGE = LV_MESSAGE ). 1360 ENDTRY. 1361 ENDLOOP. 1362 1363 CONCATENATE 'Data Access Profile' LS_DATAACC_PROFILE-PROFILE-PROFILE_ID 1364 'has been created/updated successfully' 1365 INTO LV_MESSAGE SEPARATED BY SPACE. 1366 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `S` I_MSGNO = `001` 1367 I_MESSAGE = LV_MESSAGE ). 1368 CATCH CX_UJE_EXCEPTION INTO LO_UJE_EXCEPTION. 1369 ADD_EXCEPTION_TO_MESSAGE_TABLE( LO_UJE_EXCEPTION ). 1370 CONCATENATE 'Data Access Profile' LS_DATAACC_PROFILE-PROFILE-PROFILE_ID 1371 'not created/updated due to error' 1372 INTO LV_MESSAGE SEPARATED BY SPACE. 1373 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `E` I_MSGNO = `001` 1374 I_MESSAGE = LV_MESSAGE ). 1375 ENDTRY. 1376 1377 ENDLOOP. 1378 1379 * Display ALV 1380 LCL_APPLICATION=>RENDER_ALV( ). 1381 1382 ENDMETHOD. "import_mem_profiles_from_file 1383 1384 METHOD EXPORT_TAP_ASSIGN_TO_FILE. 1385 1386 TYPES: BEGIN OF T_OUTPUT, 1387 IDENTIFIER TYPE CHAR01, " Row Identifer 1388 PROFILE TYPE UJ_PROFILE_ID, 1389 ID TYPE UJ_USER_ID, "User ID or Team ID 1390 END OF T_OUTPUT. 1391 1392 DATA: LT_OUTPUT TYPE TABLE OF T_OUTPUT. 1393 DATA: LS_OUTPUT LIKE LINE OF LT_OUTPUT. 1394 1395 DATA: LS_TASK_PROFILES LIKE LINE OF LCL_APPLICATION=>LT_TASK_PROFILES. 1396 1397 DATA: LS_TASKS TYPE UJE_S_TASK_INFO. 1398 DATA: LS_USERS TYPE UJE_S_USERINFO. 1399 DATA: LS_TEAMS TYPE UJE_S_TEAM. 1400 1401 LOOP AT LCL_APPLICATION=>LT_TASK_PROFILES INTO LS_TASK_PROFILES. 1402 1403 * Write User Assignment 1404 CLEAR LS_OUTPUT. 1405 LS_OUTPUT-IDENTIFIER = 'U'. 1406 LS_OUTPUT-PROFILE = LS_TASK_PROFILES-PROFILE_ID. 1407 LOOP AT LS_TASK_PROFILES-USERS INTO LS_USERS. 1408 LS_OUTPUT-ID = LS_USERS-USER_ID. 1409 APPEND LS_OUTPUT TO LT_OUTPUT. 1410 ENDLOOP. 1411 1412 * Write Team Assignement 1413 CLEAR LS_OUTPUT. 1414 LS_OUTPUT-IDENTIFIER = 'T'. 1415 LS_OUTPUT-PROFILE = LS_TASK_PROFILES-PROFILE_ID. 1416 LOOP AT LS_TASK_PROFILES-TEAMS INTO LS_TEAMS. 1417 LS_OUTPUT-ID = LS_TEAMS-TEAM_ID. 1418 APPEND LS_OUTPUT TO LT_OUTPUT. 1419 ENDLOOP. 1420 1421 ENDLOOP. 1422 1423 * Download table 1424 LCL_APPLICATION=>DOWNLOAD( EXPORTING I_FILEPATH = P_FILE 1425 IT_DATATAB = LT_OUTPUT ). 1426 1427 ENDMETHOD. "export_tap_assign_to_file 1428 1429 METHOD IMPORT_TAP_ASSIGN_FROM_FILE. 1430 1431 TYPES: BEGIN OF T_INPUT, 1432 IDENTIFIER TYPE CHAR01, "Identifer, U or T 1433 PROFILE TYPE UJ_PROFILE_ID, 1434 ID TYPE UJ_USER_ID, "User ID or Team ID 1435 END OF T_INPUT. 1436 1437 TYPES: BEGIN OF T_TASK_PROFILE, 1438 PROFILE TYPE UJE_S_PROFILE, 1439 USERS_ASIN TYPE UJE_T_API_USER_ID, 1440 TEAMS_ASIN TYPE UJE_T_API_TEAM_ID, 1441 END OF T_TASK_PROFILE. 1442 1443 DATA: LT_TASK_PROFILE TYPE TABLE OF T_TASK_PROFILE. 1444 DATA: LS_TASK_PROFILE LIKE LINE OF LT_TASK_PROFILE. 1445 1446 DATA: LT_STRTAB TYPE STRINGTAB. 1447 DATA: LS_STRTAB LIKE LINE OF LT_STRTAB. 1448 1449 DATA: LT_INPUT TYPE TABLE OF T_INPUT. 1450 DATA: LS_INPUT LIKE LINE OF LT_INPUT. 1451 1452 DATA: LT_PROFS TYPE UJE_T_PROFILE_ACTION. 1453 DATA: LS_PROFS LIKE LINE OF LT_PROFS. 1454 1455 DATA: LT_TEAMS TYPE UJE_T_TEAM. 1456 DATA: LS_TEAMS LIKE LINE OF LT_TEAMS. 1457 1458 DATA: LT_USERS TYPE UJE_T_USER_ID. 1459 DATA: LS_USERS LIKE LINE OF LT_USERS. 1460 1461 DATA: LS_USERS_ASIN TYPE UJE_S_API_USER_ID. 1462 DATA: LS_TEAMS_ASIN TYPE UJE_S_API_TEAM_ID. 1463 DATA: LS_TEAMS_LIST LIKE LINE OF LT_TEAMS_LIST. 1464 1465 DATA: LV_LAST_PROFILE TYPE UJ_PROFILE_ID. 1466 DATA: LV_MESSAGE TYPE UJ0_S_MESSAGE-MESSAGE. 1467 1468 * Upload file 1469 LT_STRTAB = LCL_APPLICATION=>UPLOAD( P_FILE ). 1470 1471 * Rip import file into internal table 1472 LOOP AT LT_STRTAB INTO LS_STRTAB. 1473 CLEAR LS_INPUT. 1474 SPLIT LS_STRTAB AT LCL_APPLICATION=>LV_DELIMITER INTO LS_INPUT-IDENTIFIER 1475 LS_INPUT-PROFILE 1476 LS_INPUT-ID. 1477 APPEND LS_INPUT TO LT_INPUT. 1478 ENDLOOP. 1479 1480 * Build profile table containing all associated data 1481 SORT LT_INPUT STABLE ASCENDING BY PROFILE IDENTIFIER ID. 1482 1483 LOOP AT LT_INPUT INTO LS_INPUT. 1484 1485 IF LS_INPUT-PROFILE <> LV_LAST_PROFILE 1486 AND LV_LAST_PROFILE IS NOT INITIAL. 1487 APPEND LS_TASK_PROFILE TO LT_TASK_PROFILE. 1488 CLEAR LS_TASK_PROFILE. 1489 ENDIF. 1490 1491 IF LCL_APPLICATION=>TPROFILE_IS_VALID( LS_INPUT-PROFILE ) = ABAP_FALSE. 1492 CONCATENATE 'Profile' LS_INPUT-PROFILE 'does not yet exist.' 1493 'No task profile assigments done.' 1494 INTO LV_MESSAGE SEPARATED BY SPACE. 1495 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `E` I_MSGNO = `001` 1496 I_MESSAGE = LV_MESSAGE ). 1497 ENDIF. 1498 1499 CASE LS_INPUT-IDENTIFIER. 1500 1501 WHEN 'T'. 1502 IF LCL_APPLICATION=>TEAM_IS_VALID( LS_INPUT-ID ) = ABAP_FALSE. 1503 CONCATENATE 'Team' LS_INPUT-ID 'does not yet exist.' 1504 'No task profile assigments done.' 1505 INTO LV_MESSAGE SEPARATED BY SPACE. 1506 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `E` I_MSGNO = `001` 1507 I_MESSAGE = LV_MESSAGE ). 1508 ENDIF. 1509 LS_TASK_PROFILE-PROFILE-PROFILE_ID = LS_INPUT-PROFILE. 1510 APPEND LS_INPUT-ID TO LS_TASK_PROFILE-TEAMS_ASIN. 1511 1512 1513 WHEN 'U'. 1514 IF LCL_APPLICATION=>USER_IS_VALID( LS_INPUT-ID ) = ABAP_FALSE. 1515 CONCATENATE 'User' LS_INPUT-ID 'does not yet exist.' 1516 'No task profile assigments done.' 1517 INTO LV_MESSAGE SEPARATED BY SPACE. 1518 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `E` I_MSGNO = `001` 1519 I_MESSAGE = LV_MESSAGE ). 1520 ENDIF. 1521 LS_TASK_PROFILE-PROFILE-PROFILE_ID = LS_INPUT-PROFILE. 1522 APPEND LS_INPUT-ID TO LS_TASK_PROFILE-USERS_ASIN. 1523 ENDCASE. 1524 1525 LV_LAST_PROFILE = LS_INPUT-PROFILE. 1526 1527 AT LAST. 1528 APPEND LS_TASK_PROFILE TO LT_TASK_PROFILE. 1529 ENDAT. 1530 1531 ENDLOOP. 1532 1533 * If there are errors, render, and do not process anything 1534 IF LT_ALV_MESSAGES IS NOT INITIAL. 1535 LCL_APPLICATION=>RENDER_ALV( ). 1536 RETURN. 1537 ENDIF. 1538 1539 * UPdate teams and uses with the assignments. 1540 LOOP AT LT_TASK_PROFILE INTO LS_TASK_PROFILE. 1541 1542 * Assign users 1543 LOOP AT LS_TASK_PROFILE-USERS_ASIN INTO LS_USERS_ASIN. 1544 1545 CLEAR LS_USERS. REFRESH LT_USERS. 1546 LS_USERS = LS_USERS_ASIN-USER_ID. 1547 APPEND LS_USERS TO LT_USERS. 1548 1549 CLEAR LS_PROFS. REFRESH LT_PROFS. 1550 LS_PROFS-PROFILE_ID = LS_TASK_PROFILE-PROFILE-PROFILE_ID. 1551 LS_PROFS-ACTION = 'I'. 1552 APPEND LS_PROFS TO LT_PROFS. 1553 1554 TRY. 1555 CL_UJE_USER=>UPDATE_USERS( 1556 EXPORTING I_APPSET_ID = LCL_APPLICATION=>LV_ENVIRONMENT_ID 1557 IT_USERS = LT_USERS 1558 IT_TASK_PROFS = LT_PROFS ). 1559 CONCATENATE 'User' LS_USERS_ASIN-USER_ID 'task profile assignments' 1560 'have been updated successfully' 1561 INTO LV_MESSAGE SEPARATED BY SPACE. 1562 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `S` I_MSGNO = `001` 1563 I_MESSAGE = LV_MESSAGE ). 1564 CATCH CX_UJE_EXCEPTION INTO LO_UJE_EXCEPTION. 1565 ADD_EXCEPTION_TO_MESSAGE_TABLE( LO_UJE_EXCEPTION ). 1566 CONCATENATE 'User' LS_USERS_ASIN-USER_ID 'task profile assignments' 1567 'not updated due to error' 1568 INTO LV_MESSAGE SEPARATED BY SPACE. 1569 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `E` I_MSGNO = `001` 1570 I_MESSAGE = LV_MESSAGE ). 1571 ENDTRY. 1572 1573 ENDLOOP. 1574 1575 * Assign teams 1576 LOOP AT LS_TASK_PROFILE-TEAMS_ASIN INTO LS_TEAMS_ASIN. 1577 1578 REFRESH LT_TEAMS. 1579 READ TABLE LT_TEAMS_LIST INTO LS_TEAMS_LIST 1580 WITH KEY TEAM_ID = LS_TEAMS_ASIN-TEAM_ID. 1581 IF SY-SUBRC = 0. 1582 MOVE-CORRESPONDING LS_TEAMS_LIST TO LS_TEAMS. 1583 APPEND LS_TEAMS TO LT_TEAMS. 1584 ENDIF. 1585 1586 CLEAR LS_PROFS. REFRESH LT_PROFS. 1587 LS_PROFS-PROFILE_ID = LS_TASK_PROFILE-PROFILE-PROFILE_ID. 1588 LS_PROFS-ACTION = 'I'. 1589 APPEND LS_PROFS TO LT_PROFS. 1590 1591 TRY. 1592 CL_UJE_TEAM=>UPDATE_TEAMS( 1593 EXPORTING I_APPSET_ID = LCL_APPLICATION=>LV_ENVIRONMENT_ID 1594 IT_TEAMS = LT_TEAMS 1595 IT_TASK_PROFS = LT_PROFS ). 1596 CONCATENATE 'Team' LS_TEAMS_ASIN-TEAM_ID 'task profile assignments' 1597 'have been updated successfully' 1598 INTO LV_MESSAGE SEPARATED BY SPACE. 1599 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `S` I_MSGNO = `001` 1600 I_MESSAGE = LV_MESSAGE ). 1601 CATCH CX_UJE_EXCEPTION INTO LO_UJE_EXCEPTION. 1602 ADD_EXCEPTION_TO_MESSAGE_TABLE( LO_UJE_EXCEPTION ). 1603 CONCATENATE 'Team' LS_TEAMS_ASIN-TEAM_ID 'task profile assignments' 1604 'not updated due to error' 1605 INTO LV_MESSAGE SEPARATED BY SPACE. 1606 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `E` I_MSGNO = `001` 1607 I_MESSAGE = LV_MESSAGE ). 1608 ENDTRY. 1609 ENDLOOP. 1610 1611 CONCATENATE 'Task Profile' LS_TASK_PROFILE-PROFILE-PROFILE_ID 1612 'assignments have been updated successfully' 1613 INTO LV_MESSAGE SEPARATED BY SPACE. 1614 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `S` I_MSGNO = `001` 1615 I_MESSAGE = LV_MESSAGE ). 1616 1617 ENDLOOP. 1618 1619 LCL_APPLICATION=>RENDER_ALV( ). 1620 1621 ENDMETHOD. "import_tap_assign_from_file 1622 1623 METHOD EXPORT_DAP_ASSIGN_TO_FILE. 1624 1625 TYPES: BEGIN OF T_OUTPUT, 1626 IDENTIFIER TYPE CHAR01, "Identifer, U or T 1627 PROFILE TYPE UJ_PROFILE_ID, 1628 ID TYPE UJ_USER_ID, "User ID or Team ID 1629 END OF T_OUTPUT. 1630 1631 DATA: LT_OUTPUT TYPE TABLE OF T_OUTPUT. 1632 DATA: LS_OUTPUT LIKE LINE OF LT_OUTPUT. 1633 1634 DATA: LT_USERS TYPE UJE_T_USER. 1635 DATA: LS_USERS LIKE LINE OF LT_USERS. 1636 1637 DATA: LT_TEAMS TYPE UJE_T_TEAM. 1638 DATA: LS_TEAMS LIKE LINE OF LT_TEAMS. 1639 1640 DATA: LS_DATA_ACCESS_PROFILES TYPE UJE_S_MBR_PROF_APP. 1641 1642 DATA: LO_PROFILE_DAO TYPE REF TO CL_UJE_PROFILE_DAO. 1643 1644 CREATE OBJECT LO_PROFILE_DAO 1645 EXPORTING 1646 I_APPSET_ID = LCL_APPLICATION=>LV_ENVIRONMENT_ID. 1647 1648 LOOP AT LCL_APPLICATION=>LT_DATA_ACCESS_PROFILES INTO LS_DATA_ACCESS_PROFILES. 1649 1650 REFRESH: LT_USERS, LT_TEAMS. 1651 LO_PROFILE_DAO->GET_DETAILS( EXPORTING I_PROFILE_ID = LS_DATA_ACCESS_PROFILES-PROFILE_ID 1652 I_PROFILE_CLASS = `MBR` 1653 IMPORTING ET_USERS = LT_USERS 1654 ET_TEAMS = LT_TEAMS ). 1655 1656 * Write User and Team assignments. 1657 LOOP AT LT_USERS INTO LS_USERS. 1658 CLEAR LS_OUTPUT. 1659 LS_OUTPUT-IDENTIFIER = 'U'. 1660 LS_OUTPUT-PROFILE = LS_DATA_ACCESS_PROFILES-PROFILE_ID. 1661 LS_OUTPUT-ID = LS_USERS-USER_ID. 1662 APPEND LS_OUTPUT TO LT_OUTPUT. 1663 ENDLOOP. 1664 1665 LOOP AT LT_TEAMS INTO LS_TEAMS. 1666 CLEAR LS_OUTPUT. 1667 LS_OUTPUT-IDENTIFIER = 'T'. 1668 LS_OUTPUT-PROFILE = LS_DATA_ACCESS_PROFILES-PROFILE_ID. 1669 LS_OUTPUT-ID = LS_TEAMS-TEAM_ID. 1670 APPEND LS_OUTPUT TO LT_OUTPUT. 1671 ENDLOOP. 1672 1673 ENDLOOP. 1674 1675 * Download table 1676 LCL_APPLICATION=>DOWNLOAD( EXPORTING I_FILEPATH = P_FILE 1677 IT_DATATAB = LT_OUTPUT ). 1678 1679 ENDMETHOD. "export_map_assign_to_file 1680 1681 METHOD IMPORT_DAP_ASSIGN_FROM_FILE. 1682 1683 TYPES: BEGIN OF T_INPUT, 1684 IDENTIFIER TYPE CHAR01, " Row Identifer 1685 PROFILE TYPE UJ_PROFILE_ID, 1686 VALUES TYPE STRING, 1687 END OF T_INPUT. 1688 1689 TYPES: BEGIN OF T_DATAACC_PROFILE, 1690 PROFILE TYPE UJE_S_PROFILE, 1691 USERS_ASIN TYPE UJE_T_API_USER_ID, 1692 TEAMS_ASIN TYPE UJE_T_API_TEAM_ID, 1693 END OF T_DATAACC_PROFILE. 1694 1695 DATA: LT_DATAACC_PROFILE TYPE TABLE OF T_DATAACC_PROFILE. 1696 DATA: LS_DATAACC_PROFILE LIKE LINE OF LT_DATAACC_PROFILE. 1697 1698 DATA: LV_LAST_PROFILE TYPE UJ_PROFILE_ID. 1699 1700 DATA: LT_DATAACCESS TYPE UJE_T_MEMACCESS. 1701 DATA: LS_DATAACCESS LIKE LINE OF LT_DATAACCESS. 1702 1703 DATA: LT_STRTAB TYPE STRINGTAB. 1704 DATA: LS_STRTAB LIKE LINE OF LT_STRTAB. 1705 1706 DATA: LT_INPUT TYPE TABLE OF T_INPUT. 1707 DATA: LS_INPUT LIKE LINE OF LT_INPUT. 1708 1709 DATA: LT_PROFS TYPE UJE_T_PROFILE_ACTION. 1710 DATA: LS_PROFS LIKE LINE OF LT_PROFS. 1711 1712 DATA: LT_TEAMS TYPE UJE_T_TEAM. 1713 DATA: LS_TEAMS LIKE LINE OF LT_TEAMS. 1714 1715 DATA: LT_USERS TYPE UJE_T_USER_ID. 1716 DATA: LS_USERS LIKE LINE OF LT_USERS. 1717 1718 DATA: LS_USERS_ASIN TYPE UJE_S_API_USER_ID. 1719 DATA: LS_TEAMS_ASIN TYPE UJE_S_API_TEAM_ID. 1720 DATA: LS_TEAMS_LIST LIKE LINE OF LT_TEAMS_LIST. 1721 1722 DATA: LV_MESSAGE TYPE UJ0_S_MESSAGE-MESSAGE. 1723 1724 * Upload file 1725 LT_STRTAB = LCL_APPLICATION=>UPLOAD( P_FILE ). 1726 1727 * Rip import file into internal table 1728 LOOP AT LT_STRTAB INTO LS_STRTAB. 1729 CLEAR LS_INPUT. 1730 SPLIT LS_STRTAB AT LCL_APPLICATION=>LV_DELIMITER INTO LS_INPUT-IDENTIFIER 1731 LS_INPUT-PROFILE 1732 LS_INPUT-VALUES. 1733 APPEND LS_INPUT TO LT_INPUT. 1734 ENDLOOP. 1735 1736 * Build profile table containing all associated data 1737 SORT LT_INPUT STABLE ASCENDING BY PROFILE IDENTIFIER VALUES. 1738 1739 LOOP AT LT_INPUT INTO LS_INPUT. 1740 1741 IF LS_INPUT-PROFILE <> LV_LAST_PROFILE 1742 AND LV_LAST_PROFILE IS NOT INITIAL. 1743 APPEND LS_DATAACC_PROFILE TO LT_DATAACC_PROFILE. 1744 CLEAR LS_DATAACC_PROFILE. 1745 ENDIF. 1746 1747 * Based on record identifier 1748 CASE LS_INPUT-IDENTIFIER. 1749 WHEN 'U'. " Users Assignments 1750 LS_USERS_ASIN = LS_INPUT-VALUES. 1751 IF LCL_APPLICATION=>USER_IS_VALID( LS_USERS_ASIN-USER_ID ) = ABAP_FALSE. 1752 CONCATENATE 'User' LS_USERS_ASIN 'does not exist.' 1753 'No data access profile updates done.' 1754 INTO LV_MESSAGE SEPARATED BY SPACE. 1755 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `E` I_MSGNO = `001` 1756 I_MESSAGE = LV_MESSAGE ). 1757 ENDIF. 1758 LS_DATAACC_PROFILE-PROFILE-PROFILE_ID = LS_INPUT-PROFILE. 1759 APPEND LS_USERS_ASIN TO LS_DATAACC_PROFILE-USERS_ASIN. 1760 WHEN 'T'. " Team Assignments 1761 LS_TEAMS_ASIN = LS_INPUT-VALUES. 1762 IF LCL_APPLICATION=>TEAM_IS_VALID( LS_TEAMS_ASIN-TEAM_ID ) = ABAP_FALSE. 1763 CONCATENATE 'Team' LS_TEAMS_ASIN 'does not exist.' 1764 'No data access profile updates done.' 1765 INTO LV_MESSAGE SEPARATED BY SPACE. 1766 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `E` I_MSGNO = `001` 1767 I_MESSAGE = LV_MESSAGE ). 1768 ENDIF. 1769 LS_DATAACC_PROFILE-PROFILE-PROFILE_ID = LS_INPUT-PROFILE. 1770 APPEND LS_TEAMS_ASIN TO LS_DATAACC_PROFILE-TEAMS_ASIN. 1771 ENDCASE. 1772 1773 LV_LAST_PROFILE = LS_INPUT-PROFILE. 1774 1775 AT LAST. 1776 APPEND LS_DATAACC_PROFILE TO LT_DATAACC_PROFILE. 1777 ENDAT. 1778 1779 ENDLOOP. 1780 1781 * If any message during check, then render now, and do not process anything. 1782 IF LT_ALV_MESSAGES IS NOT INITIAL. 1783 LCL_APPLICATION=>RENDER_ALV( ). 1784 RETURN. 1785 ENDIF. 1786 1787 * Now for each profile, call API to create/update 1788 LOOP AT LT_DATAACC_PROFILE INTO LS_DATAACC_PROFILE. 1789 1790 * Assign users 1791 LOOP AT LS_DATAACC_PROFILE-USERS_ASIN INTO LS_USERS_ASIN. 1792 1793 CLEAR LS_USERS. REFRESH LT_USERS. 1794 LS_USERS = LS_USERS_ASIN-USER_ID. 1795 APPEND LS_USERS TO LT_USERS. 1796 1797 CLEAR LS_PROFS. REFRESH LT_PROFS. 1798 LS_PROFS-PROFILE_ID = LS_DATAACC_PROFILE-PROFILE-PROFILE_ID. 1799 LS_PROFS-ACTION = 'I'. 1800 APPEND LS_PROFS TO LT_PROFS. 1801 1802 TRY. 1803 CL_UJE_USER=>UPDATE_USERS( 1804 EXPORTING I_APPSET_ID = LCL_APPLICATION=>LV_ENVIRONMENT_ID 1805 IT_USERS = LT_USERS 1806 IT_MBR_PROFS = LT_PROFS ). 1807 CONCATENATE 'User' LS_USERS_ASIN-USER_ID 'data access profile assignments' 1808 'have been updated successfully' 1809 INTO LV_MESSAGE SEPARATED BY SPACE. 1810 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `S` I_MSGNO = `001` 1811 I_MESSAGE = LV_MESSAGE ). 1812 CATCH CX_UJE_EXCEPTION INTO LO_UJE_EXCEPTION. 1813 ADD_EXCEPTION_TO_MESSAGE_TABLE( LO_UJE_EXCEPTION ). 1814 CONCATENATE 'User' LS_USERS_ASIN-USER_ID 'data access profile assignments' 1815 'not updated due to error' 1816 INTO LV_MESSAGE SEPARATED BY SPACE. 1817 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `E` I_MSGNO = `001` 1818 I_MESSAGE = LV_MESSAGE ). 1819 ENDTRY. 1820 1821 ENDLOOP. 1822 1823 * Assign teams 1824 LOOP AT LS_DATAACC_PROFILE-TEAMS_ASIN INTO LS_TEAMS_ASIN. 1825 1826 REFRESH LT_TEAMS. 1827 READ TABLE LT_TEAMS_LIST INTO LS_TEAMS_LIST 1828 WITH KEY TEAM_ID = LS_TEAMS_ASIN-TEAM_ID. 1829 IF SY-SUBRC = 0. 1830 MOVE-CORRESPONDING LS_TEAMS_LIST TO LS_TEAMS. 1831 APPEND LS_TEAMS TO LT_TEAMS. 1832 ENDIF. 1833 1834 CLEAR LS_PROFS. REFRESH LT_PROFS. 1835 LS_PROFS-PROFILE_ID = LS_DATAACC_PROFILE-PROFILE-PROFILE_ID. 1836 LS_PROFS-ACTION = 'I'. 1837 APPEND LS_PROFS TO LT_PROFS. 1838 1839 TRY. 1840 CL_UJE_TEAM=>UPDATE_TEAMS( 1841 EXPORTING I_APPSET_ID = LCL_APPLICATION=>LV_ENVIRONMENT_ID 1842 IT_TEAMS = LT_TEAMS 1843 IT_MBR_PROFS = LT_PROFS ). 1844 CONCATENATE 'Team' LS_TEAMS_ASIN-TEAM_ID 'data access profile assignments' 1845 'have been updated successfully' 1846 INTO LV_MESSAGE SEPARATED BY SPACE. 1847 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `S` I_MSGNO = `001` 1848 I_MESSAGE = LV_MESSAGE ). 1849 CATCH CX_UJE_EXCEPTION INTO LO_UJE_EXCEPTION. 1850 ADD_EXCEPTION_TO_MESSAGE_TABLE( LO_UJE_EXCEPTION ). 1851 CONCATENATE 'Team' LS_TEAMS_ASIN-TEAM_ID 'data access profile assignments' 1852 'not updated due to error' 1853 INTO LV_MESSAGE SEPARATED BY SPACE. 1854 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `E` I_MSGNO = `001` 1855 I_MESSAGE = LV_MESSAGE ). 1856 ENDTRY. 1857 1858 ENDLOOP. 1859 1860 CONCATENATE 'Data Access Profile' LS_DATAACC_PROFILE-PROFILE-PROFILE_ID 1861 'has been updated successfully' 1862 INTO LV_MESSAGE SEPARATED BY SPACE. 1863 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `S` I_MSGNO = `001` 1864 I_MESSAGE = LV_MESSAGE ). 1865 1866 ENDLOOP. 1867 1868 * Display ALV 1869 LCL_APPLICATION=>RENDER_ALV( ). 1870 1871 ENDMETHOD. "import_map_assign_from_file 1872 1873 METHOD SET_GLOBAL_CONTEXT. 1874 1875 DATA: LS_USER TYPE UJ0_S_USER. 1876 "DATA: lv_value TYPE uj_value. 1877 "DATA: lv_value TYPE string. by shangrj 1878 DATA: LV_VALUE TYPE UJ_STRING. 1879 1880 1881 DATA: LO_SRV_MGR_DAO TYPE REF TO CL_UJA3_SVRMGR_DAO. 1882 1883 * GEt the system admin user id 1884 CREATE OBJECT LO_SRV_MGR_DAO. 1885 LO_SRV_MGR_DAO->READ_SYSADMIN_ID( IMPORTING E_SYSADMIN_ID = LV_VALUE ). 1886 LS_USER-USER_ID = LV_VALUE. 1887 1888 * Set the context 1889 TRY. 1890 CL_UJ_CONTEXT=>SET_CUR_CONTEXT( 1891 EXPORTING I_APPSET_ID = LCL_APPLICATION=>LV_ENVIRONMENT_ID 1892 IS_USER = LS_USER ). 1893 CATCH CX_UJ_OBJ_NOT_FOUND . 1894 ENDTRY. 1895 1896 * Get it 1897 LO_CONTEXT = CL_UJ_CONTEXT=>GET_CUR_CONTEXT( ). 1898 * Set user to system admin 1899 LO_CONTEXT->SWITCH_TO_SRVADMIN( ). 1900 1901 ENDMETHOD. "set_global_context 1902 1903 METHOD SET_DELIMITER_LISTBOX. 1904 1905 * set delimiter listbox. 1906 DATA: LT_VRM_VALUES TYPE VRM_VALUES. 1907 DATA: LS_VRM_VALUES LIKE LINE OF LT_VRM_VALUES. 1908 DATA: LV_NAME TYPE VRM_ID VALUE 'P_DELMT'. 1909 1910 REFRESH LT_VRM_VALUES. 1911 1912 LS_VRM_VALUES-KEY = LCL_APPLICATION=>LC_COMMA. 1913 LS_VRM_VALUES-TEXT = 'Comma'. 1914 APPEND LS_VRM_VALUES TO LT_VRM_VALUES. 1915 1916 LS_VRM_VALUES-KEY = LCL_APPLICATION=>LC_TAB. 1917 LS_VRM_VALUES-TEXT = 'Tab'. 1918 APPEND LS_VRM_VALUES TO LT_VRM_VALUES. 1919 1920 LS_VRM_VALUES-KEY = LCL_APPLICATION=>LC_PIPE. 1921 LS_VRM_VALUES-TEXT = 'Pipe'. 1922 APPEND LS_VRM_VALUES TO LT_VRM_VALUES. 1923 1924 CALL FUNCTION 'VRM_SET_VALUES' 1925 EXPORTING 1926 ID = LV_NAME 1927 VALUES = LT_VRM_VALUES. 1928 1929 ENDMETHOD. "set_delimiter_listbox 1930 1931 METHOD SET_DELIMITER. 1932 1933 IF P_DELMT = LCL_APPLICATION=>LC_TAB. 1934 LCL_APPLICATION=>LV_DELIMITER = CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB. 1935 ELSE. 1936 LCL_APPLICATION=>LV_DELIMITER = P_DELMT. 1937 ENDIF. 1938 1939 ENDMETHOD. "set_delimiter 1940 1941 METHOD RENDER_ALV. 1942 1943 TYPE-POOLS: ICON. 1944 1945 TYPES: BEGIN OF T_ALV, 1946 ICON TYPE ICON-ID, 1947 MSGID TYPE UJ0_S_MESSAGE-MSGID, 1948 MSGTY TYPE UJ0_S_MESSAGE-MSGTY, 1949 MSGNO TYPE UJ0_S_MESSAGE-MSGNO, 1950 MESSAGE TYPE UJ0_S_MESSAGE-MESSAGE, 1951 END OF T_ALV. 1952 1953 DATA: LT_ALV TYPE TABLE OF T_ALV. 1954 DATA: LO_TABLE TYPE REF TO CL_SALV_TABLE. 1955 DATA: LO_COLUMNS TYPE REF TO CL_SALV_COLUMNS_TABLE. 1956 DATA: LO_COLUMN TYPE REF TO CL_SALV_COLUMN_TABLE. 1957 DATA: LO_FUNCTIONS TYPE REF TO CL_SALV_FUNCTIONS. 1958 1959 FIELD-SYMBOLS: <LS_ALV> LIKE LINE OF LT_ALV, 1960 <LS_ALV_MESSAGES> LIKE LINE OF LT_ALV_MESSAGES. 1961 1962 IF LT_ALV_MESSAGES IS INITIAL. 1963 RETURN. 1964 ENDIF. 1965 1966 * Convert messages from API to ALV output 1967 LOOP AT LT_ALV_MESSAGES ASSIGNING <LS_ALV_MESSAGES>. 1968 APPEND INITIAL LINE TO LT_ALV ASSIGNING <LS_ALV>. 1969 MOVE-CORRESPONDING <LS_ALV_MESSAGES> TO <LS_ALV>. 1970 CASE <LS_ALV>-MSGTY. 1971 WHEN 'E'. WRITE ICON_MESSAGE_ERROR_SMALL AS ICON TO <LS_ALV>-ICON. 1972 WHEN 'W'. WRITE ICON_MESSAGE_WARNING_SMALL AS ICON TO <LS_ALV>-ICON. 1973 WHEN 'I'. WRITE ICON_MESSAGE_INFORMATION_SMALL AS ICON TO <LS_ALV>-ICON. 1974 WHEN 'S'. WRITE ICON_CHECKED AS ICON TO <LS_ALV>-ICON. 1975 ENDCASE. 1976 ENDLOOP. 1977 1978 * Show messages 1979 TRY. 1980 CL_SALV_TABLE=>FACTORY( IMPORTING R_SALV_TABLE = LO_TABLE 1981 CHANGING T_TABLE = LT_ALV ). 1982 CATCH CX_SALV_MSG. 1983 ENDTRY. 1984 1985 LO_FUNCTIONS = LO_TABLE->GET_FUNCTIONS( ). 1986 LO_FUNCTIONS->SET_ALL( ABAP_TRUE ). 1987 1988 TRY. 1989 LO_COLUMNS = LO_TABLE->GET_COLUMNS( ). 1990 LO_COLUMN ?= LO_COLUMNS->GET_COLUMN( 'ICON' ). 1991 LO_COLUMN->SET_ICON( ABAP_TRUE ). 1992 LO_COLUMN ?= LO_COLUMNS->GET_COLUMN( 'MSGNO' ). 1993 LO_COLUMN->SET_LEADING_ZERO( ABAP_TRUE ). 1994 CATCH CX_SALV_NOT_FOUND. 1995 ENDTRY. 1996 1997 LO_TABLE->DISPLAY( ). 1998 1999 ENDMETHOD. "render_alv 2000 2001 METHOD GET_ENVIRONMENT_DATA. 2002 2003 DATA: LS_UJA_APPL_INFO TYPE UJA_S_APPL_INFO. 2004 DATA: LT_UJA_APPL_DIM TYPE UJA_T_APPL_DIM. 2005 DATA: LS_UJA_APPL_DIM LIKE LINE OF LT_UJA_APPL_DIM. 2006 2007 DATA: LS_MEMBERS LIKE LINE OF LT_MEMBERS. 2008 DATA: LS_APPL_DIM LIKE LINE OF LT_APPL_DIM. 2009 2010 DATA: LT_APPL_LIST TYPE UJA_T_APPL_ID. 2011 DATA: LS_APPL_LIST LIKE LINE OF LT_APPL_LIST. 2012 2013 DATA: LO_APPSET_DAO TYPE REF TO CL_UJA_APPSET_DAO. 2014 DATA: LO_APPLICATION_DAO TYPE REF TO CL_UJA_APPLICATION_DAO. 2015 DATA: LO_DIM TYPE REF TO CL_UJA_DIM. 2016 DATA: LO_DATA_ACCESS_PROFILE_MGR TYPE REF TO CL_UJE_PROFILE_MEMACCESS. 2017 2018 DATA: LT_MEMBER_LIST TYPE UJA_T_DIM_MEMBER. 2019 DATA: LS_MEMBER_LIST LIKE LINE OF LT_MEMBER_LIST. 2020 2021 DATA: LV_MESSAGE TYPE UJ0_S_MESSAGE-MESSAGE. 2022 2023 LCL_APPLICATION=>LV_ENVIRONMENT_ID = I_ENVIRONMENT_ID. 2024 2025 TRY. 2026 2027 * Get the appset info, need the prefix 2028 CREATE OBJECT LO_APPSET_DAO 2029 EXPORTING 2030 I_APPSET_ID = LCL_APPLICATION=>LV_ENVIRONMENT_ID. 2031 2032 LO_APPSET_DAO->GET_APPSET_INFO( 2033 EXPORTING 2034 I_APPSET_ID = LCL_APPLICATION=>LV_ENVIRONMENT_ID 2035 IMPORTING 2036 ES_APPSET_INFO = LCL_APPLICATION=>LS_ENVIRONMENT_INFO ). 2037 2038 * Get the list of applications for this appset, need the application prefixes 2039 LO_APPSET_DAO->GET_APPL_LIST( 2040 IMPORTING 2041 ET_APPL_LIST = LT_APPL_LIST ). 2042 2043 CATCH CX_UJ_DB_ERROR. 2044 * Do not raise exception here 2045 ENDTRY. 2046 2047 * Check environment to make sure it is valid 2048 IF LCL_APPLICATION=>LS_ENVIRONMENT_INFO IS INITIAL. 2049 CONCATENATE 'Environment' LCL_APPLICATION=>LV_ENVIRONMENT_ID 'does not exist.' 2050 INTO LV_MESSAGE SEPARATED BY SPACE. 2051 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `E` I_MSGNO = `001` 2052 I_MESSAGE = LV_MESSAGE ). 2053 LCL_APPLICATION=>RENDER_ALV( ). 2054 RAISE ENVIRONMENT_NOT_FOUND . 2055 ENDIF. 2056 2057 LCL_APPLICATION=>SET_GLOBAL_CONTEXT( ). 2058 2059 * Loop applications, get application info, add to internal table 2060 LOOP AT LT_APPL_LIST INTO LS_APPL_LIST. 2061 2062 TRY. 2063 2064 CREATE OBJECT LO_APPLICATION_DAO 2065 EXPORTING 2066 I_APPSET_ID = LCL_APPLICATION=>LV_ENVIRONMENT_ID. 2067 2068 LO_APPLICATION_DAO->GET_APPLICATION_INFO( 2069 EXPORTING 2070 I_APPLICATION_ID = LS_APPL_LIST 2071 IMPORTING 2072 ES_APPL_INFO = LS_UJA_APPL_INFO ). 2073 2074 APPEND LS_UJA_APPL_INFO TO LCL_APPLICATION=>LT_APPL_INFO. 2075 2076 * Get dimension list for each application 2077 LO_APPLICATION_DAO->GET_DIM_LIST( 2078 EXPORTING 2079 I_APPLICATION_ID = LS_APPL_LIST 2080 IMPORTING 2081 ET_APPL_DIM = LT_UJA_APPL_DIM ). 2082 LOOP AT LT_UJA_APPL_DIM INTO LS_UJA_APPL_DIM. 2083 LS_APPL_DIM-APPL_ID = LS_APPL_LIST. 2084 LS_APPL_DIM-DIMENSION = LS_UJA_APPL_DIM-DIMENSION. 2085 COLLECT LS_APPL_DIM INTO LCL_APPLICATION=>LT_APPL_DIM. 2086 ENDLOOP. 2087 2088 * Get members for each dimension 2089 LOOP AT LT_UJA_APPL_DIM INTO LS_UJA_APPL_DIM. 2090 CREATE OBJECT LO_DIM 2091 EXPORTING 2092 I_APPSET_ID = LCL_APPLICATION=>LV_ENVIRONMENT_ID 2093 I_DIMENSION = LS_UJA_APPL_DIM-DIMENSION. 2094 2095 REFRESH LT_MEMBER_LIST. 2096 LO_DIM->GET_MEMBER_LIST( 2097 IMPORTING 2098 ET_MEMBER = LT_MEMBER_LIST ). 2099 2100 LOOP AT LT_MEMBER_LIST INTO LS_MEMBER_LIST. 2101 LS_MEMBERS-APPL_ID = LS_APPL_LIST. 2102 LS_MEMBERS-DIMENSION = LS_UJA_APPL_DIM-DIMENSION. 2103 LS_MEMBERS-MEMBER = LS_MEMBER_LIST. 2104 COLLECT LS_MEMBERS INTO LCL_APPLICATION=>LT_MEMBERS. 2105 ENDLOOP. 2106 2107 ENDLOOP. 2108 2109 CATCH: CX_UJ_DB_ERROR, CX_UJA_ADMIN_ERROR, CX_UJ_STATIC_CHECK. 2110 LV_MESSAGE = 'CX_UJ* Exception occured when reading environment metadata'. 2111 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `E` I_MSGNO = `001` 2112 I_MESSAGE = LV_MESSAGE ). 2113 LCL_APPLICATION=>RENDER_ALV( ). 2114 RAISE UJ_EXCEPTION_ERROR . 2115 ENDTRY. 2116 2117 ENDLOOP. 2118 2119 TRY. 2120 2121 CL_UJE_USER=>GET_ALL_USER_DETAILS( 2122 EXPORTING I_APPSET_ID = LCL_APPLICATION=>LV_ENVIRONMENT_ID 2123 IMPORTING ET_USER_DETAILS = LCL_APPLICATION=>LT_USERS_LIST ). 2124 2125 CL_UJE_TEAM=>GET_ALL_TEAM_DETAILS( 2126 EXPORTING I_APPSET_ID = LCL_APPLICATION=>LV_ENVIRONMENT_ID 2127 IMPORTING ET_TEAMS = LCL_APPLICATION=>LT_TEAMS_LIST ). 2128 2129 CL_UJE_USER=>GET_ALL_USER_DETAILS2( 2130 EXPORTING I_APPSET_ID = LCL_APPLICATION=>LV_ENVIRONMENT_ID 2131 IMPORTING ET_USERS = LCL_APPLICATION=>LT_USER_DETAIL ). 2132 2133 CL_UJE_PROFILE_TASK=>GET_ALL_TASK_PROFILES( 2134 EXPORTING I_APPSET_ID = LCL_APPLICATION=>LV_ENVIRONMENT_ID 2135 IMPORTING ET_TASK_PROFILES = LT_TASK_PROFILES ). 2136 2137 CATCH CX_UJE_EXCEPTION INTO LO_UJE_EXCEPTION. 2138 ADD_EXCEPTION_TO_MESSAGE_TABLE( LO_UJE_EXCEPTION ). 2139 LV_MESSAGE = 'CX_UJE Exception occured when reading environment metadata'. 2140 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `E` I_MSGNO = `001` 2141 I_MESSAGE = LV_MESSAGE ). 2142 LCL_APPLICATION=>RENDER_ALV( ). 2143 RAISE UJ_EXCEPTION_ERROR . 2144 ENDTRY. 2145 2146 TRY. 2147 2148 CREATE OBJECT LO_DATA_ACCESS_PROFILE_MGR 2149 EXPORTING 2150 I_APPSET_ID = LCL_APPLICATION=>LV_ENVIRONMENT_ID. 2151 2152 LO_DATA_ACCESS_PROFILE_MGR->GET_ALL_MBR_PROFILES( 2153 EXPORTING 2154 I_APPSET_ID = LCL_APPLICATION=>LV_ENVIRONMENT_ID 2155 IMPORTING 2156 ET_MBR_PROFILES = LCL_APPLICATION=>LT_DATA_ACCESS_PROFILES ). 2157 2158 CATCH CX_UJ_STATIC_CHECK. 2159 LV_MESSAGE = 'CX_UJ* Exception occured when reading environment metadata'. 2160 ADD_MESSAGE_TO_MESSAGE_TABLE( I_MSGID = `00` I_MSGTY = `E` I_MSGNO = `001` 2161 I_MESSAGE = LV_MESSAGE ). 2162 LCL_APPLICATION=>RENDER_ALV( ). 2163 RAISE UJ_EXCEPTION_ERROR . 2164 ENDTRY. 2165 2166 * CALL FUNCTION 'UJE_API_GET_ROLE_TSKASG' 2167 * IMPORTING 2168 * ET_TASKASGN = LCL_APPLICATION=>LT_SYSTASKS. 2169 2170 ENDMETHOD. "get_supporting_Data 2171 2172 METHOD USER_IS_VALID. 2173 2174 READ TABLE LCL_APPLICATION=>LT_USERS_LIST 2175 TRANSPORTING NO FIELDS 2176 WITH KEY USER_ID = I_USER_ID. 2177 IF SY-SUBRC = 0. 2178 R_BOOLEAN = ABAP_TRUE. 2179 ELSE. 2180 R_BOOLEAN = ABAP_FALSE. 2181 ENDIF. 2182 2183 ENDMETHOD. "user_id_valid 2184 2185 METHOD TEAM_IS_VALID. 2186 2187 READ TABLE LCL_APPLICATION=>LT_TEAMS_LIST 2188 TRANSPORTING NO FIELDS 2189 WITH KEY TEAM_ID = I_TEAM_ID. 2190 IF SY-SUBRC = 0. 2191 R_BOOLEAN = ABAP_TRUE. 2192 ELSE. 2193 R_BOOLEAN = ABAP_FALSE. 2194 ENDIF. 2195 2196 ENDMETHOD. "team_id_valid 2197 2198 METHOD TPROFILE_IS_VALID. 2199 2200 READ TABLE LCL_APPLICATION=>LT_TASK_PROFILES 2201 TRANSPORTING NO FIELDS 2202 WITH KEY PROFILE_ID = I_PROFILE_ID. 2203 IF SY-SUBRC = 0. 2204 R_BOOLEAN = ABAP_TRUE. 2205 ELSE. 2206 R_BOOLEAN = ABAP_FALSE. 2207 ENDIF. 2208 2209 ENDMETHOD. "tprofile_is_valid 2210 2211 METHOD DPROFILE_IS_VALID. 2212 2213 READ TABLE LCL_APPLICATION=>LT_DATA_ACCESS_PROFILES 2214 TRANSPORTING NO FIELDS 2215 WITH KEY PROFILE_ID = I_PROFILE_ID. 2216 IF SY-SUBRC = 0. 2217 R_BOOLEAN = ABAP_TRUE. 2218 ELSE. 2219 R_BOOLEAN = ABAP_FALSE. 2220 ENDIF. 2221 2222 ENDMETHOD. "dprofile_is_valid 2223 2224 METHOD TASK_IS_VALID. 2225 2226 READ TABLE LCL_APPLICATION=>LT_SYSTASKS 2227 TRANSPORTING NO FIELDS 2228 WITH KEY TASK_ID = I_TASK_ID. 2229 IF SY-SUBRC = 0. 2230 R_BOOLEAN = ABAP_TRUE. 2231 ELSE. 2232 R_BOOLEAN = ABAP_FALSE. 2233 ENDIF. 2234 2235 ENDMETHOD. "task_is_valid 2236 2237 METHOD NW_USER_EXISTS. 2238 2239 DATA: LV_BNAME TYPE BAPIBNAME-BAPIBNAME. 2240 DATA: LS_RETURN TYPE BAPIRET2. 2241 2242 LV_BNAME = I_USER_ID. 2243 CALL FUNCTION 'BAPI_USER_EXISTENCE_CHECK' 2244 EXPORTING 2245 USERNAME = LV_BNAME 2246 IMPORTING 2247 RETURN = LS_RETURN. 2248 IF LS_RETURN-NUMBER = '088'. " Success message 2249 R_BOOLEAN = ABAP_TRUE. 2250 ELSEIF LS_RETURN-NUMBER = '124'. " Error message 2251 R_BOOLEAN = ABAP_FALSE. 2252 ENDIF. 2253 2254 ENDMETHOD. "nw_user_exists 2255 2256 METHOD GET_BPC_COMPONENT_VERSION. 2257 2258 DATA: LS_CVERS TYPE CVERS. 2259 2260 CALL FUNCTION 'UPG_GET_SINGLE_COMPREL' 2261 EXPORTING 2262 IV_COMPONENT = `CPMBPC` 2263 IMPORTING 2264 EV_VERSION = LS_CVERS 2265 EXCEPTIONS 2266 OTHERS = 4. 2267 IF SY-SUBRC = 0. 2268 LV_RELEASE = LS_CVERS-RELEASE. 2269 LV_SPLEVEL = LS_CVERS-EXTRELEASE. 2270 ENDIF. 2271 2272 ENDMETHOD. "get_bpc_component_version 2273 2274 METHOD CHECK_BPC_COMPONENT_IS_VALID. 2275 2276 * IF LCL_APPLICATION=>LV_RELEASE <> '800' AND LCL_APPLICATION=>LV_RELEASE <> '810'. " BPC NW 10.0 2277 * R_VALID = ABAP_FALSE. 2278 * ELSE. 2279 * R_VALID = ABAP_TRUE. 2280 * ENDIF. 2281 2282 ENDMETHOD. "check_BPC_component_version 2283 2284 METHOD ADD_EXCEPTION_TO_MESSAGE_TABLE. 2285 2286 FIELD-SYMBOLS: <LS_MESSAGE> TYPE UJ0_S_MESSAGE. 2287 2288 APPEND INITIAL LINE TO LT_ALV_MESSAGES ASSIGNING <LS_MESSAGE>. 2289 <LS_MESSAGE>-MSGID = IO_EXCEPTION->IF_T100_MESSAGE~T100KEY-MSGID. 2290 <LS_MESSAGE>-MSGTY = 'E'. 2291 <LS_MESSAGE>-MSGNO = IO_EXCEPTION->IF_T100_MESSAGE~T100KEY-MSGNO. 2292 <LS_MESSAGE>-MSGV1 = IO_EXCEPTION->IF_T100_MESSAGE~T100KEY-ATTR1. 2293 <LS_MESSAGE>-MSGV2 = IO_EXCEPTION->IF_T100_MESSAGE~T100KEY-ATTR2. 2294 <LS_MESSAGE>-MSGV3 = IO_EXCEPTION->IF_T100_MESSAGE~T100KEY-ATTR3. 2295 <LS_MESSAGE>-MSGV4 = IO_EXCEPTION->IF_T100_MESSAGE~T100KEY-ATTR4. 2296 <LS_MESSAGE>-MESSAGE = IO_EXCEPTION->GET_TEXT( ). 2297 2298 ENDMETHOD. "add_exception_to_message_table 2299 2300 METHOD ADD_MESSAGE_TO_MESSAGE_TABLE. 2301 2302 FIELD-SYMBOLS: <LS_MESSAGE> TYPE UJ0_S_MESSAGE. 2303 2304 APPEND INITIAL LINE TO LT_ALV_MESSAGES ASSIGNING <LS_MESSAGE>. 2305 <LS_MESSAGE>-MSGID = I_MSGID. 2306 <LS_MESSAGE>-MSGTY = I_MSGTY. 2307 <LS_MESSAGE>-MSGNO = I_MSGNO. 2308 <LS_MESSAGE>-MESSAGE = I_MESSAGE. 2309 2310 ENDMETHOD. "add_message_to_message_table 2311 2312 ENDCLASS. "lcl_application IMPLEMENTATION