MEREP_CONTACT_CREATE.abap
FUNCTION merep_contact_create.
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" VALUE(PERSON) LIKE MEREP_PERSON STRUCTURE MEREP_PERSON
*" EXPORTING
*" VALUE(PERSNUMBER) LIKE MEREP_PERSON-PERSNUMBER
*" VALUE(RETURN) LIKE BAPIRET2 STRUCTURE BAPIRET2
*" TABLES
*" ADDRESS STRUCTURE MEREP_ADDRESS
*" E_MAIL STRUCTURE MEREP_E_MAIL
*"----------------------------------------------------------------------
DATA:
ldf_persnumber LIKE merep_person-persnumber,
lds_address LIKE merep_address,
lds_e_mail LIKE merep_e_mail,
lds_return LIKE bapireturn1.
CLEAR return.
IF person-last_name IS INITIAL.
* - Last name is mandatory
lds_return-type = 'E'.
lds_return-id = 'MEREP_SAMPLE_APPL1'.
lds_return-number = '004'.
CALL FUNCTION 'MEREP_RETURN_GET'
EXPORTING
type = lds_return-type
id = lds_return-id
number = lds_return-number
IMPORTING
return = lds_return.
MOVE-CORRESPONDING lds_return TO return.
EXIT.
ENDIF.
CALL FUNCTION 'NUMBER_GET_NEXT'
EXPORTING
nr_range_nr = '00'
object = 'MEREP_PERS'
IMPORTING
number = ldf_persnumber
EXCEPTIONS
interval_not_found = 1
number_range_not_intern = 2
object_not_found = 3
quantity_is_0 = 4
quantity_is_not_1 = 5
interval_overflow = 6
OTHERS = 7.
IF sy-subrc = 0.
ELSE.
* - Could not get next number (RC=&)
lds_return-type = 'E'.
lds_return-id = 'MEREP_SAMPLE_APPL1'.
lds_return-number = '001'.
lds_return-message_v1 = sy-subrc.
CALL FUNCTION 'MEREP_RETURN_GET'
EXPORTING
type = lds_return-type
id = lds_return-id
number = lds_return-number
par1 = lds_return-message_v1
IMPORTING
return = lds_return.
MOVE-CORRESPONDING lds_return TO return.
EXIT.
ENDIF.
persnumber = ldf_persnumber.
person-persnumber = persnumber.
person-credat = sy-datum.
person-crenam = sy-uname.
person-cretim = sy-uzeit.
person-chgdat = sy-datum.
person-chgnam = sy-uname.
person-chgtim = sy-uzeit.
LOOP AT address INTO lds_address.
lds_address-persnumber = persnumber.
MODIFY address FROM lds_address.
ENDLOOP.
LOOP AT e_mail INTO lds_e_mail.
lds_e_mail-persnumber = persnumber.
MODIFY e_mail FROM lds_e_mail.
ENDLOOP.
INSERT merep_person FROM person.
IF sy-subrc <> 0.
* - DB update failed (Table name=&, Persnumber=&)
lds_return-type = 'E'.
lds_return-id = 'MEREP_SAMPLE_APPL1'.
lds_return-number = '002'.
lds_return-message_v1 = 'MEREP_PERSON'.
lds_return-message_v2 = ldf_persnumber.
CALL FUNCTION 'MEREP_RETURN_GET'
EXPORTING
type = lds_return-type
id = lds_return-id
number = lds_return-number
par1 = lds_return-message_v1
par2 = lds_return-message_v2
IMPORTING
return = lds_return.
MOVE-CORRESPONDING lds_return TO return.
EXIT.
ENDIF.
IF NOT address[] IS INITIAL.
INSERT merep_address FROM TABLE address.
IF sy-subrc <> 0.
* - DB update failed (Table name=&, Persnumber=&)
lds_return-type = 'E'.
lds_return-id = 'MEREP_SAMPLE_APPL1'.
lds_return-number = '002'.
lds_return-message_v1 = 'MEREP_ADDRESS'.
lds_return-message_v2 = ldf_persnumber.
CALL FUNCTION 'MEREP_RETURN_GET'
EXPORTING
type = lds_return-type
id = lds_return-id
number = lds_return-number
par1 = lds_return-message_v1
par2 = lds_return-message_v2
IMPORTING
return = lds_return.
MOVE-CORRESPONDING lds_return TO return.
ROLLBACK WORK.
EXIT.
ENDIF.
ENDIF.
IF NOT e_mail[] IS INITIAL.
INSERT merep_e_mail FROM TABLE e_mail.
IF sy-subrc <> 0.
* - DB update failed (Table name=&, Persnumber=&)
lds_return-type = 'E'.
lds_return-id = 'MEREP_SAMPLE_APPL1'.
lds_return-number = '002'.
lds_return-message_v1 = 'MEREP_E_MAIL'.
lds_return-message_v2 = ldf_persnumber.
CALL FUNCTION 'MEREP_RETURN_GET'
EXPORTING
type = lds_return-type
id = lds_return-id
number = lds_return-number
par1 = lds_return-message_v1
par2 = lds_return-message_v2
IMPORTING
return = lds_return.
MOVE-CORRESPONDING lds_return TO return.
ROLLBACK WORK.
EXIT.
ENDIF.
ENDIF.
COMMIT WORK.
* - Person created successfully (Persnumber=&)
lds_return-type = 'S'.
lds_return-id = 'MEREP_SAMPLE_APPL1'.
lds_return-number = '003'.
lds_return-message_v1 = ldf_persnumber.
CALL FUNCTION 'MEREP_RETURN_GET'
EXPORTING
type = lds_return-type
id = lds_return-id
number = lds_return-number
par1 = lds_return-message_v1
IMPORTING
return = lds_return.
MOVE-CORRESPONDING lds_return TO return.
ENDFUNCTION.