sapdev logo background
sapdev logo sapdev logo
Comments

ADDR_PERS_COMP_COMM_MAINTAIN to Update sap users email address plus other details (own data)




The below SAP ABAP code shows how update a sap users emails address within their user profile data(see menu option System->User Profile->Own Data). This is performed via the use of function module ADDR_PERS_COMP_COMM_MAINTAIN.

First the ABAP code uses FM's SUSR_USER_ADDRESS_READ and ADDR_PERS_COMP_COMM_GET to get the users current own data. It then changes the email address to [email protected] using ADDR_PERS_COMP_COMM_MAINTAIN. Make sure you also execute the FM ADDR_MEMORY_SAVE at the end otherwise changes will not be written back to the SAP database.


  DATA: ld_address LIKE  addr3_val,
        ld_usr03   LIKE  usr03,
        ld_userid  type sy-uname,
        ld_smtp LIKE adsmtp OCCURS 0 WITH HEADER LINE.

  DATA: RETURNCODE type c,
        it_error type standard table of ADDR_ERROR.

  ld_userid = sy-uname.

  CALL FUNCTION 'SUSR_USER_ADDRESS_READ'
    EXPORTING
      user_name                    = ld_userid
*   READ_DB_DIRECTLY             = ' '
    IMPORTING
      user_address                 = ld_address
      user_usr03                   = ld_usr03
    EXCEPTIONS
      user_address_not_found       = 1
      OTHERS                       = 2.

* Get additional user address details (i.e. email) 
  CALL FUNCTION 'ADDR_PERS_COMP_COMM_GET'
    EXPORTING
     ADDRESS_NUMBER          = ld_address-addrnumber
     PERSON_NUMBER           = ld_address-persnumber
      table_type              = 'ADSMTP'   "email details
*                   Other valid entries for table_type include:
*                       ADFAX for fax details
*                       ADTEL for telephone details  
*   IMPORTING
*     RETURNCODE              =
    tables
      comm_table              =  ld_smtp
*     ERROR_TABLE             =
   EXCEPTIONS
     PARAMETER_ERROR         = 1
     ADDRESS_NOT_EXIST       = 2
     PERSON_NOT_EXIST        = 3
     INTERNAL_ERROR          = 4
     OTHERS                  = 5.

if sy-subrc eq 0.
  loop at ld_smtp.
    ld_smtp-UPDATEFLAG = 'U'.
    ld_smtp-SMTP_ADDR = '[email protected]'.
    modify ld_smtp.
  endloop.

  CALL FUNCTION 'ADDR_PERS_COMP_COMM_MAINTAIN'
    EXPORTING
      ADDRESS_NUMBER    = ld_address-addrnumber
      PERSON_NUMBER     = ld_address-persnumber
      TABLE_TYPE        = 'ADSMTP'
    IMPORTING
      RETURNCODE        = RETURNCODE
    TABLES
      COMM_TABLE        = ld_smtp
      ERROR_TABLE       = it_error
    EXCEPTIONS
      PARAMETER_ERROR   = 1
      ADDRESS_NOT_EXIST = 2
      PERSON_NOT_EXIST  = 3
      INTERNAL_ERROR    = 4
      OTHERS            = 5.

  CALL FUNCTION 'ADDR_MEMORY_SAVE'
    EXCEPTIONS
      address_number_missing = 1
      person_number_missing  = 2
      internal_error         = 3
      database_error         = 4
      reference_missing      = 5
      OTHERS                 = 6.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    EXIT.
  ENDIF.
endif.




comments powered by Disqus