REPORT ZUSRLOAD LINE-SIZE 128. ******************************************* * This is a refined version of program #22. * It loads SAP users using a text file * with changing field lengths. The * fields are separated by @. * It creates the non existing users. * When processing a record for a user * that already exists, the program * just adds the profile. * The record structure of the file: * * FIRST_NAME * MIDDLE_NAME * LAST_NAME * USER_ID * STREET * LOCATION * TELEPHONE * GROUP * PROFILE. * * The program also sets the following * constants: * * INI_PWD * DIALOG * PRINT_IMMED * DELETE_AFTER_OUTPUT * DATE_FORMAT * PERIOD * PARAMETER1 PAR_VAL1 * PARAMETER2 PAR_VAL2 * PARAMETER3 PAR_VAL3 * PARAMETER4 PAR_VAL4 * ****************************************** *Tables TABLES: USR02. DATA: BEGIN OF BDC_TAB1 OCCURS 5. INCLUDE STRUCTURE BDCDATA. DATA: END OF BDC_TAB1. DATA: BEGIN OF DATA_TAB OCCURS 5, LINE(128), END OF DATA_TAB. *Constant values DATA: INI_PWD(8) VALUE 'INITPASS', DIALOG VALUE 'X', PRINT_IMMED VALUE 'X', DELETE_AFTER_OUTPUT VALUE 'X', DATE_FORMAT VALUE 'X', PERIOD VALUE 'X', PARAMETER1(3) VALUE 'GR0', PAR_VAL1(18) VALUE 'NOGR', PARAMETER2(3) VALUE 'GR1', PAR_VAL2(18) VALUE 'NOGR', PARAMETER3(3) VALUE 'MOL', PAR_VAL3(18) VALUE '10', PARAMETER4(3) VALUE 'UGR', PAR_VAL4(18) VALUE '10'. *Other data DATA: FILE LIKE RLGRAP-FILENAME. DATA: PROCESSING(24) VALUE 'Processing:'. DATA: NEWLY_CREATED TYPE I. *Variable values DATA: FIRST_NAME(30), MIDDLE_NAME(30), LAST_NAME(30), WHOLE_NAME(30), LONG_WHOLE_NAME(90), USER(12), OLD_USER(12), STREET(30), LOCATION(25), TELEPHONE(16), GROUP(12), PROFILE(12). *Parameters PARAMETERS: MODIFY AS CHECKBOX. START-OF-SELECTION. *Get the filename CALL FUNCTION 'WS_FILENAME_GET' EXPORTING DEF_FILENAME = '' DEF_PATH = 'c:\' MASK = ',*.txt,*.txt.' "',*.*,*.*.' MODE = 'O' TITLE = 'Please specify the locaton of the file' IMPORTING FILENAME = FILE EXCEPTIONS INV_WINSYS = 1 NO_BATCH = 2 SELECTION_CANCEL = 3 SELECTION_ERROR = 4 OTHERS = 5. *Read the file to an internal table CALL FUNCTION 'WS_UPLOAD' EXPORTING FILENAME = FILE TABLES DATA_TAB = DATA_TAB. *Get the user LOOP AT DATA_TAB. SPLIT DATA_TAB AT '@' INTO FIRST_NAME MIDDLE_NAME LAST_NAME USER STREET LOCATION TELEPHONE GROUP PROFILE. *Status information PROCESSING+12(12) = USER. CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' EXPORTING PERCENTAGE = '' TEXT = PROCESSING. *Transform the input data LONG_WHOLE_NAME = FIRST_NAME. LONG_WHOLE_NAME+30(30) = MIDDLE_NAME. LONG_WHOLE_NAME+60(30) = LAST_NAME. CONDENSE LONG_WHOLE_NAME. WHOLE_NAME = LONG_WHOLE_NAME. TRANSLATE USER TO UPPER CASE. ******************************Check if the user already exist IF USER = OLD_USER. "Not first such record IF NEWLY_CREATED = '1'. "A newly created user: add profile PERFORM ADD_PROFILE. ELSE. "A user that existed before IF MODIFY = 'X'. "Adding profiles permitted PERFORM ADD_PROFILE. ENDIF. ENDIF. ELSE. "First such a record OLD_USER = USER. NEWLY_CREATED = '0'. SELECT SINGLE * FROM USR02 WHERE BNAME = USER. IF SY-SUBRC = 0. "Exist in db IF MODIFY = 'X'. "Adding profiles permitted PERFORM ADD_PROFILE. ENDIF. ELSE. "Not in db PERFORM ADD_USER. NEWLY_CREATED = '1'. ENDIF. ENDIF. ENDLOOP. *---------------------------------------------------------------------* * FORM ADD_USER * *---------------------------------------------------------------------* * ........ * *---------------------------------------------------------------------* FORM ADD_USER. PERFORM CREATE_USER. CALL TRANSACTION 'SU01' USING BDC_TAB1 MODE 'N' UPDATE 'S'. IF SY-SUBRC = 0. WRITE: / USER, 'created'. ELSE. WRITE: / 'ERROR:', USER, 'creation'. ENDIF. PERFORM ADD_ADDRESS_DATA. CALL TRANSACTION 'SU01' USING BDC_TAB1 MODE 'N' UPDATE 'S'. IF SY-SUBRC = 0. WRITE: / USER, 'address data created'. WRITE: / USER, 'defaults created'. WRITE: / USER, 'parameters created'. ELSE. WRITE: / 'ERROR:', USER, 'address data creation'. WRITE: / 'ERROR:', USER, 'defaults creation'. WRITE: / 'ERROR:', USER, 'parameter creation'. ENDIF. PERFORM ADD_DEFAULTS. CALL TRANSACTION 'SU01' USING BDC_TAB1 MODE 'N' UPDATE 'S'. PERFORM ADD_PARAMS. CALL TRANSACTION 'SU01' USING BDC_TAB1 MODE 'N' UPDATE 'S'. ENDFORM. *---------------------------------------------------------------------* * FORM CREATE_USER * *---------------------------------------------------------------------* * ........ * *---------------------------------------------------------------------* FORM CREATE_USER. REFRESH BDC_TAB1. CLEAR BDC_TAB1. **************************************************1 MOVE: 'SAPMS01J' TO BDC_TAB1-PROGRAM, '200' TO BDC_TAB1-DYNPRO, 'X' TO BDC_TAB1-DYNBEGIN. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'XU200-XUSER' TO BDC_TAB1-FNAM, USER TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'BDC_OKCODE' TO BDC_TAB1-FNAM, '/6' TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. **************************************************2 MOVE: 'SAPLSUSB' TO BDC_TAB1-PROGRAM, '0705' TO BDC_TAB1-DYNPRO, 'X' TO BDC_TAB1-DYNBEGIN. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'XU213-DIA' TO BDC_TAB1-FNAM, DIALOG TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'XU213-PROFILE(1)' TO BDC_TAB1-FNAM, PROFILE TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'XU213-BCODE' TO BDC_TAB1-FNAM, INI_PWD TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'XU213-BCODE2' TO BDC_TAB1-FNAM, INI_PWD TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'USR02-CLASS' TO BDC_TAB1-FNAM, GROUP TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'BDC_OKCODE' TO BDC_TAB1-FNAM, '/5' TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. **************************************************3 MOVE: 'SAPLSUSB' TO BDC_TAB1-PROGRAM, '701' TO BDC_TAB1-DYNPRO, 'X' TO BDC_TAB1-DYNBEGIN. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'BDC_OKCODE' TO BDC_TAB1-FNAM, 'CONT' TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. **************************************************4 MOVE: 'SAPLSUSB' TO BDC_TAB1-PROGRAM, '702' TO BDC_TAB1-DYNPRO, 'X' TO BDC_TAB1-DYNBEGIN. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'BDC_OKCODE' TO BDC_TAB1-FNAM, 'CONT' TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. **************************************************5 MOVE: 'SAPLSUSB' TO BDC_TAB1-PROGRAM, '703' TO BDC_TAB1-DYNPRO, 'X' TO BDC_TAB1-DYNBEGIN. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'BDC_OKCODE' TO BDC_TAB1-FNAM, '/12' TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. **************************************************6 MOVE: 'SAPMS01J' TO BDC_TAB1-PROGRAM, '200' TO BDC_TAB1-DYNPRO, 'X' TO BDC_TAB1-DYNBEGIN. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'BDC_OKCODE' TO BDC_TAB1-FNAM, '/3' TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. ENDFORM. *---------------------------------------------------------------------* * FORM ADD_ADDRESS_DATA * *---------------------------------------------------------------------* * ........ * *---------------------------------------------------------------------* FORM ADD_ADDRESS_DATA. REFRESH BDC_TAB1. CLEAR BDC_TAB1. **************************************************1 MOVE: 'SAPMS01J' TO BDC_TAB1-PROGRAM, '200' TO BDC_TAB1-DYNPRO, 'X' TO BDC_TAB1-DYNBEGIN. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'XU200-XUSER' TO BDC_TAB1-FNAM, USER TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'BDC_OKCODE' TO BDC_TAB1-FNAM, '/18' TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. **************************************************2 MOVE: 'SAPMS01J' TO BDC_TAB1-PROGRAM, '320' TO BDC_TAB1-DYNPRO, 'X' TO BDC_TAB1-DYNBEGIN. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'USR03-NAME1' TO BDC_TAB1-FNAM, WHOLE_NAME TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'USR03-STRAS' TO BDC_TAB1-FNAM, STREET TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'USR03-ORT02' TO BDC_TAB1-FNAM, LOCATION TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'USR03-TELNR' TO BDC_TAB1-FNAM, TELEPHONE TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'BDC_OKCODE' TO BDC_TAB1-FNAM, '/11' TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'SAPMS01J' TO BDC_TAB1-PROGRAM, '320' TO BDC_TAB1-DYNPRO, 'X' TO BDC_TAB1-DYNBEGIN. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'BDC_OKCODE' TO BDC_TAB1-FNAM, '/3' TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. **************************************************3 MOVE: 'SAPMS01J' TO BDC_TAB1-PROGRAM, '200' TO BDC_TAB1-DYNPRO, 'X' TO BDC_TAB1-DYNBEGIN. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'BDC_OKCODE' TO BDC_TAB1-FNAM, '/3' TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. ENDFORM. *---------------------------------------------------------------------* * FORM ADD_DEFAULTS * *---------------------------------------------------------------------* * ........ * *---------------------------------------------------------------------* FORM ADD_DEFAULTS. REFRESH BDC_TAB1. CLEAR BDC_TAB1. **************************************************1 MOVE: 'SAPMS01J' TO BDC_TAB1-PROGRAM, '200' TO BDC_TAB1-DYNPRO, 'X' TO BDC_TAB1-DYNBEGIN. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'XU200-XUSER' TO BDC_TAB1-FNAM, USER TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'BDC_OKCODE' TO BDC_TAB1-FNAM, '/17' TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. **************************************************2 MOVE: 'SAPMS01J' TO BDC_TAB1-PROGRAM, '310' TO BDC_TAB1-DYNPRO, 'X' TO BDC_TAB1-DYNBEGIN. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'XU310-SPDB1' TO BDC_TAB1-FNAM, PRINT_IMMED TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'XU310-SPDA1' TO BDC_TAB1-FNAM, DELETE_AFTER_OUTPUT TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'XU310-DATFM2' TO BDC_TAB1-FNAM, DATE_FORMAT TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'XU310-DCPFM2' TO BDC_TAB1-FNAM, PERIOD TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'BDC_OKCODE' TO BDC_TAB1-FNAM, '/11' TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'SAPMS01J' TO BDC_TAB1-PROGRAM, '320' TO BDC_TAB1-DYNPRO, 'X' TO BDC_TAB1-DYNBEGIN. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'BDC_OKCODE' TO BDC_TAB1-FNAM, '/3' TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. **************************************************3 MOVE: 'SAPMS01J' TO BDC_TAB1-PROGRAM, '200' TO BDC_TAB1-DYNPRO, 'X' TO BDC_TAB1-DYNBEGIN. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'BDC_OKCODE' TO BDC_TAB1-FNAM, '/3' TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. ENDFORM. *---------------------------------------------------------------------* * FORM ADD_PARAMS * *---------------------------------------------------------------------* * ........ * *---------------------------------------------------------------------* FORM ADD_PARAMS. REFRESH BDC_TAB1. CLEAR BDC_TAB1. **************************************************1 MOVE: 'SAPMS01J' TO BDC_TAB1-PROGRAM, '200' TO BDC_TAB1-DYNPRO, 'X' TO BDC_TAB1-DYNBEGIN. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'XU200-XUSER' TO BDC_TAB1-FNAM, USER TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'BDC_OKCODE' TO BDC_TAB1-FNAM, '/19' TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. **************************************************2 MOVE: 'SAPMS01J' TO BDC_TAB1-PROGRAM, '350' TO BDC_TAB1-DYNPRO, 'X' TO BDC_TAB1-DYNBEGIN. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'XU350-PARID(1)' TO BDC_TAB1-FNAM, PARAMETER1 TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'XU350-PARVA(1)' TO BDC_TAB1-FNAM, PAR_VAL1 TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'XU350-PARID(2)' TO BDC_TAB1-FNAM, PARAMETER2 TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'XU350-PARVA(2)' TO BDC_TAB1-FNAM, PAR_VAL2 TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'XU350-PARID(3)' TO BDC_TAB1-FNAM, PARAMETER3 TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'XU350-PARVA(3)' TO BDC_TAB1-FNAM, PAR_VAL3 TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'XU350-PARID(4)' TO BDC_TAB1-FNAM, PARAMETER4 TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'XU350-PARVA(4)' TO BDC_TAB1-FNAM, PAR_VAL4 TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'BDC_OKCODE' TO BDC_TAB1-FNAM, '/11' TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'SAPMS01J' TO BDC_TAB1-PROGRAM, '320' TO BDC_TAB1-DYNPRO, 'X' TO BDC_TAB1-DYNBEGIN. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'BDC_OKCODE' TO BDC_TAB1-FNAM, '/3' TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. **************************************************3 MOVE: 'SAPMS01J' TO BDC_TAB1-PROGRAM, '200' TO BDC_TAB1-DYNPRO, 'X' TO BDC_TAB1-DYNBEGIN. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'BDC_OKCODE' TO BDC_TAB1-FNAM, '/3' TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. ENDFORM. *---------------------------------------------------------------------* * FORM ADD_PROFILE * *---------------------------------------------------------------------* * ........ * *---------------------------------------------------------------------* FORM ADD_PROFILE. REFRESH BDC_TAB1. CLEAR BDC_TAB1. **************************************************1 MOVE: 'SAPMS01J' TO BDC_TAB1-PROGRAM, '200' TO BDC_TAB1-DYNPRO, 'X' TO BDC_TAB1-DYNBEGIN. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'XU200-XUSER' TO BDC_TAB1-FNAM, USER TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'BDC_OKCODE' TO BDC_TAB1-FNAM, '/7' TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. **************************************************2 MOVE: 'SAPMS01J' TO BDC_TAB1-PROGRAM, '0213' TO BDC_TAB1-DYNPRO, 'X' TO BDC_TAB1-DYNBEGIN. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'XU213-PROFILE(1)' TO BDC_TAB1-FNAM, PROFILE TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'BDC_OKCODE' TO BDC_TAB1-FNAM, '/11' TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'SAPMS01J' TO BDC_TAB1-PROGRAM, '0213' TO BDC_TAB1-DYNPRO, 'X' TO BDC_TAB1-DYNBEGIN. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'BDC_OKCODE' TO BDC_TAB1-FNAM, '/3' TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. **************************************************3 MOVE: 'SAPMS01J' TO BDC_TAB1-PROGRAM, '200' TO BDC_TAB1-DYNPRO, 'X' TO BDC_TAB1-DYNBEGIN. APPEND BDC_TAB1.CLEAR BDC_TAB1. MOVE: 'BDC_OKCODE' TO BDC_TAB1-FNAM, '/3' TO BDC_TAB1-FVAL. APPEND BDC_TAB1.CLEAR BDC_TAB1. CALL TRANSACTION 'SU01' USING BDC_TAB1 MODE 'N' UPDATE 'S'. IF SY-SUBRC = 0. WRITE: / USER, 'got profile', PROFILE. ELSE. WRITE: / 'ERROR:', USER, 'did not get profile', PROFILE. ENDIF. ENDFORM.