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.