2013 Sep 02 1:09 PM
Dear Experts,
can you pls. guide on how to insert an entry in table ADRC via programm coding.
I have tried some FM like ADDRESS_INSERT, ADDRESS_MAINTAIN_SAVE, ADDR_INSERT etc
without success. I also have tried this code. I can't save any address. Do you have an example code for me. It seems to be quite diffucult
to insert an address into ADRC through a programm.
*** data definition
DATA gt_handle TYPE STANDARD TABLE OF addr1_dia
WITH NON-UNIQUE DEFAULT KEY.
DATA gs_handle LIKE LINE OF gt_handle.
DATA gv_maint_mode LIKE gs_handle-maint_mode.
DATA gv_okcode TYPE syucomm.
DATA gt_values TYPE STANDARD TABLE OF addr1_data.
DATA gv_offset TYPE i.
DATA gs_address_reference LIKE addr_ref.
DATA gs_addr1_val TYPE addr1_val.
DATA gs_addr1_sel TYPE addr1_sel.
DATA gs_fisel TYPE addr1_fsel-fisel.
*** makro for field settings
DEFINE cf.
gv_offset = &1 - 1.
gs_fisel+gv_offset(1) = &2.
END-OF-DEFINITION.
PARAMETERS p_adrnr TYPE adrnr.
PARAMETERS p_edit AS CHECKBOX.
START-OF-SELECTION.
*** set parameters
gs_addr1_sel-addrhandle = space.
gs_addr1_sel-addrnumber = p_adrnr.
*** read address
CALL FUNCTION 'ADDR_GET'
EXPORTING
address_selection = gs_addr1_sel
IMPORTING
address_value = gs_addr1_val
EXCEPTIONS
parameter_error = 1
address_not_exist = 2
version_not_exist = 3
internal_error = 4
OTHERS = 5.
IF sy-subrc = 0.
IF p_edit <> space.
gv_maint_mode = 'CHANGE'.
ELSE.
gv_maint_mode = 'DISPLAY'.
ENDIF.
gs_handle-handle = space.
ELSEIF p_edit <> space.
gv_maint_mode = 'CREATE'.
gs_handle-handle = 'TRICKTRESOR'.
ELSE.
MESSAGE i000(oo) WITH 'Address does not exist.'.
ENDIF.
*** prepare address handle
gs_handle-owner = 'X'.
gs_handle-addrnumber = gs_addr1_sel-addrnumber.
gs_handle-maint_mode = gv_maint_mode.
gs_handle-addr_group = 'SD01'.
gs_handle-country = 'DE'.
APPEND gs_handle TO gt_handle.
*** prepare field selection
CLEAR gs_fisel WITH '-'.
cf: 002 ' ', " Name
004 ' ', " Name2
010 ' ', " Street
016 ' ', " Country
022 ' ', " House number
029 '#', " Building
030 '#', " Floor
031 '#', " Room number
012 ' ', " Postal code
013 ' ', " Postal code
014 ' ', " City
019 ' ', " Telefon
020 ' '. " Fax
*** set field selection
CALL FUNCTION 'ADDR_DIALOG_PREPARE'
EXPORTING
field_selection = gs_fisel
EXCEPTIONS
internal_error = 1
OTHERS = 2.
*** maintain address
CALL FUNCTION 'ADDR_DIALOG'
IMPORTING
ok_code = gv_okcode
TABLES
number_handle_tab = gt_handle
values = gt_values
EXCEPTIONS
address_not_exist = 1
group_not_valid = 2
parameter_error = 3
internal_error = 4
OTHERS = 5.
IF sy-subrc = 0.
IF gv_okcode = 'CONT'.
CASE gv_maint_mode.
*** Create address
WHEN 'CREATE'.
*** set references for address type
gs_address_reference-appl_table = 'VBUK'.
gs_address_reference-appl_field = 'VBELN'.
gs_address_reference-appl_key = '$000000001'.
gs_address_reference-addr_group = gs_handle-addr_group.
gs_address_reference-owner = 'X'.
*** get new address number
CALL FUNCTION 'ADDR_NUMBER_GET'
EXPORTING
address_handle = gs_handle-handle
address_reference = gs_address_reference
IMPORTING
address_number = p_adrnr
EXCEPTIONS
OTHERS = 4.
IF sy-subrc > 0.
WRITE: / 'Error ADDR_NUMBER_GET'.
STOP.
ENDIF.
ENDCASE.
*** save address
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.
WRITE: / 'Address saved:', p_adrnr.
ELSE.
WRITE: / 'Error ADDR_MEMORY_SAVE, SUBRC=', sy-subrc.
ENDIF.
ELSE.
*** Dialog cancelled
WRITE: / 'Dialog cancelled'.
ENDIF.
ELSE.
*** Error in dialog
WRITE: / 'Error ADDR_DIALOG'.
ENDIF.
2013 Sep 02 4:32 PM
Hi,
the 'ADDR_SAVE_INTERN' function will insert adrc table .
data : ADRC_D TYPE TABLE OF ADRC,
ADRC_U TYPE TABLE OF ADRC,
I_ADRC TYPE STANDARD TABLE OF ADRC,
ADRCT_D TYPE TABLE OF ADRCT,
ADRCT_U TYPE TABLE OF ADRCT,
ADRCT_I TYPE TABLE OF ADRCT,
ADRP_D TYPE TABLE OF ADRP,
ADRP_U TYPE TABLE OF ADRP,
ADRP_I TYPE TABLE OF ADRP,
ADCP_D TYPE TABLE OF ADCP,
ADCP_U TYPE TABLE OF ADCP,
ADCP_I TYPE TABLE OF ADCP,
ADRT_D TYPE TABLE OF ADRT,
ADRT_U TYPE TABLE OF ADRT,
ADRT_I TYPE TABLE OF ADRT,
ADR2_D TYPE TABLE OF ADR2,
ADR2_U TYPE TABLE OF ADR2,
ADR2_I TYPE TABLE OF ADR2,
ADR3_D TYPE TABLE OF ADR3,
ADR3_U TYPE TABLE OF ADR3,
ADR3_I TYPE TABLE OF ADR3,
ADR4_D TYPE TABLE OF ADR4,
ADR4_U TYPE TABLE OF ADR4,
ADR4_I TYPE TABLE OF ADR4,
ADR5_D TYPE TABLE OF ADR5,
ADR5_U TYPE TABLE OF ADR5,
ADR5_I TYPE TABLE OF ADR5,
ADR6_D TYPE TABLE OF ADR6,
ADR6_U TYPE TABLE OF ADR6,
ADR6_I TYPE TABLE OF ADR6,
ADR7_D TYPE TABLE OF ADR7,
ADR7_U TYPE TABLE OF ADR7,
ADR7_I TYPE TABLE OF ADR7,
ADR8_D TYPE TABLE OF ADR8,
ADR8_U TYPE TABLE OF ADR8,
ADR8_I TYPE TABLE OF ADR8,
ADR9_D TYPE TABLE OF ADR9,
ADR9_U TYPE TABLE OF ADR9,
ADR9_I TYPE TABLE OF ADR9,
ADR10_D TYPE TABLE OF ADR10,
ADR10_U TYPE TABLE OF ADR10,
ADR10_I TYPE TABLE OF ADR10,
ADR11_D TYPE TABLE OF ADR11,
ADR11_U TYPE TABLE OF ADR11,
ADR11_I TYPE TABLE OF ADR11,
ADR12_D TYPE TABLE OF ADR12,
ADR12_U TYPE TABLE OF ADR12,
ADR12_I TYPE TABLE OF ADR12,
ADR13_D TYPE TABLE OF ADR13,
ADR13_U TYPE TABLE OF ADR13,
ADR13_I TYPE TABLE OF ADR13,
ADRCOMC_D TYPE TABLE OF ADRCOMC,
ADRCOMC_U TYPE TABLE OF ADRCOMC,
ADRCOMC_I TYPE TABLE OF ADRCOMC,
ADRV_D TYPE TABLE OF ADRV,
ADRV_U TYPE TABLE OF ADRV,
ADRV_I TYPE TABLE OF ADRV,
ADRVP_D TYPE TABLE OF ADRVP,
ADRVP_U TYPE TABLE OF ADRVP,
ADRVP_I TYPE TABLE OF ADRVP.
""" Only i_adrc table should contain records because those records are inserted in ADRC database table.
"" Pass all other internal tables empty..
""" your i_adrc table data should be validated before passing that internal table to ADDR_SAVE_INTERN function module as this function module inserts what ever is there in your internal table so take care."""""
CALL FUNCTION 'ADDR_SAVE_INTERN'
TABLES
adrc_d = adrc_d
adrc_u = adrc_u
adrc_i = i_adrc
adrct_d = adrct_d
adrct_u = adrct_u
adrct_i = adrct_i
adrp_d = adrp_d
adrp_u = adrp_u
adrp_i = adrp_i
adcp_d = adcp_d
adcp_u = adcp_u
adcp_i = adcp_i
adrt_d = adrt_d
adrt_u = adrt_u
adrt_i = adrt_i
adr2_d = adr2_d
adr2_u = adr2_u
adr2_i = adr2_i
adr3_d = adr3_d
adr3_u = adr3_u
adr3_i = adr3_i
adr4_d = adr4_d
adr4_u = adr4_u
adr4_i = adr4_i
adr5_d = adr5_d
adr5_u = adr5_u
adr5_i = adr5_i
adr6_d = adr6_d
adr6_u = adr6_u
adr6_i = adr6_i
adr7_d = adr7_d
adr7_u = adr7_u
adr7_i = adr7_i
adr8_d = adr8_d
adr8_u = adr8_u
adr8_i = adr8_i
adr9_d = adr9_d
adr9_u = adr9_u
adr9_i = adr9_i
adr10_d = adr10_d
adr10_u = adr10_u
adr10_i = adr10_i
adr11_d = adr11_d
adr11_u = adr11_u
adr11_i = adr11_i
adr12_d = adr12_d
adr12_u = adr12_u
adr12_i = adr12_i
adr13_d = adr13_d
adr13_u = adr13_u
adr13_i = adr13_i
adrcomc_d = adrcomc_d
adrcomc_u = adrcomc_u
adrcomc_i = adrcomc_i
adrv_d = adrv_d
adrv_u = adrv_u
adrv_i = adrv_i
adrvp_d = adrvp_d
adrvp_u = adrvp_u
adrvp_i = adrvp_i
** ADRU_D =
** ADRU_U =
** ADRU_I =
EXCEPTIONS
DATABASE_ERROR = 1
INTERNAL_ERROR = 2
OTHERS = 3
.
IF sy-subrc <> 0.
ELSEIF sy-subrc = 1.
WRITE : / 'DATABASE ERROR ADRC TABLE'.
ELSEIF SY-SUBRC = 2.
WRITE : 'INTERNAL ERROR'.
ELSEIF SY-SUBRC = 3.
WRITE : 'ERROR FOUND EXCEPTION NO 3'.
ENDIF.
IF SY-SUBRC = 0.
DESCRIBE TABLE I_ADRC.
WRITE : / 'NO OF RECORDS SUCESSFULLY UPDATED IN ADRC DATABASE TABLE', SY-TFILL.
ENDIF.
2013 Sep 02 1:23 PM
Hi,
May be you should try the ADDR* function modules to suit your purpose.
ADDR_INSERT
ADDR_COMM_MAINTAIN
ADDR_COMM_MAINTAIN
ADDR_NUMBER_GET
ADDR_SINGLE_SAVE
ADDR_MEMORY_CLEAR
Cheers,
Arindam
2013 Sep 02 1:23 PM
Hi Alexander,
Use the function module ADDR_SAVE_INTERN and pass the correct fields to respective parameters.
Regards
khaleel
2013 Sep 02 3:00 PM
Hi,
try the function module BAPI_BUPA_ADDRESS_ADD or ADDR_SAVE_INTERN .
2013 Sep 02 4:32 PM
Hi,
the 'ADDR_SAVE_INTERN' function will insert adrc table .
data : ADRC_D TYPE TABLE OF ADRC,
ADRC_U TYPE TABLE OF ADRC,
I_ADRC TYPE STANDARD TABLE OF ADRC,
ADRCT_D TYPE TABLE OF ADRCT,
ADRCT_U TYPE TABLE OF ADRCT,
ADRCT_I TYPE TABLE OF ADRCT,
ADRP_D TYPE TABLE OF ADRP,
ADRP_U TYPE TABLE OF ADRP,
ADRP_I TYPE TABLE OF ADRP,
ADCP_D TYPE TABLE OF ADCP,
ADCP_U TYPE TABLE OF ADCP,
ADCP_I TYPE TABLE OF ADCP,
ADRT_D TYPE TABLE OF ADRT,
ADRT_U TYPE TABLE OF ADRT,
ADRT_I TYPE TABLE OF ADRT,
ADR2_D TYPE TABLE OF ADR2,
ADR2_U TYPE TABLE OF ADR2,
ADR2_I TYPE TABLE OF ADR2,
ADR3_D TYPE TABLE OF ADR3,
ADR3_U TYPE TABLE OF ADR3,
ADR3_I TYPE TABLE OF ADR3,
ADR4_D TYPE TABLE OF ADR4,
ADR4_U TYPE TABLE OF ADR4,
ADR4_I TYPE TABLE OF ADR4,
ADR5_D TYPE TABLE OF ADR5,
ADR5_U TYPE TABLE OF ADR5,
ADR5_I TYPE TABLE OF ADR5,
ADR6_D TYPE TABLE OF ADR6,
ADR6_U TYPE TABLE OF ADR6,
ADR6_I TYPE TABLE OF ADR6,
ADR7_D TYPE TABLE OF ADR7,
ADR7_U TYPE TABLE OF ADR7,
ADR7_I TYPE TABLE OF ADR7,
ADR8_D TYPE TABLE OF ADR8,
ADR8_U TYPE TABLE OF ADR8,
ADR8_I TYPE TABLE OF ADR8,
ADR9_D TYPE TABLE OF ADR9,
ADR9_U TYPE TABLE OF ADR9,
ADR9_I TYPE TABLE OF ADR9,
ADR10_D TYPE TABLE OF ADR10,
ADR10_U TYPE TABLE OF ADR10,
ADR10_I TYPE TABLE OF ADR10,
ADR11_D TYPE TABLE OF ADR11,
ADR11_U TYPE TABLE OF ADR11,
ADR11_I TYPE TABLE OF ADR11,
ADR12_D TYPE TABLE OF ADR12,
ADR12_U TYPE TABLE OF ADR12,
ADR12_I TYPE TABLE OF ADR12,
ADR13_D TYPE TABLE OF ADR13,
ADR13_U TYPE TABLE OF ADR13,
ADR13_I TYPE TABLE OF ADR13,
ADRCOMC_D TYPE TABLE OF ADRCOMC,
ADRCOMC_U TYPE TABLE OF ADRCOMC,
ADRCOMC_I TYPE TABLE OF ADRCOMC,
ADRV_D TYPE TABLE OF ADRV,
ADRV_U TYPE TABLE OF ADRV,
ADRV_I TYPE TABLE OF ADRV,
ADRVP_D TYPE TABLE OF ADRVP,
ADRVP_U TYPE TABLE OF ADRVP,
ADRVP_I TYPE TABLE OF ADRVP.
""" Only i_adrc table should contain records because those records are inserted in ADRC database table.
"" Pass all other internal tables empty..
""" your i_adrc table data should be validated before passing that internal table to ADDR_SAVE_INTERN function module as this function module inserts what ever is there in your internal table so take care."""""
CALL FUNCTION 'ADDR_SAVE_INTERN'
TABLES
adrc_d = adrc_d
adrc_u = adrc_u
adrc_i = i_adrc
adrct_d = adrct_d
adrct_u = adrct_u
adrct_i = adrct_i
adrp_d = adrp_d
adrp_u = adrp_u
adrp_i = adrp_i
adcp_d = adcp_d
adcp_u = adcp_u
adcp_i = adcp_i
adrt_d = adrt_d
adrt_u = adrt_u
adrt_i = adrt_i
adr2_d = adr2_d
adr2_u = adr2_u
adr2_i = adr2_i
adr3_d = adr3_d
adr3_u = adr3_u
adr3_i = adr3_i
adr4_d = adr4_d
adr4_u = adr4_u
adr4_i = adr4_i
adr5_d = adr5_d
adr5_u = adr5_u
adr5_i = adr5_i
adr6_d = adr6_d
adr6_u = adr6_u
adr6_i = adr6_i
adr7_d = adr7_d
adr7_u = adr7_u
adr7_i = adr7_i
adr8_d = adr8_d
adr8_u = adr8_u
adr8_i = adr8_i
adr9_d = adr9_d
adr9_u = adr9_u
adr9_i = adr9_i
adr10_d = adr10_d
adr10_u = adr10_u
adr10_i = adr10_i
adr11_d = adr11_d
adr11_u = adr11_u
adr11_i = adr11_i
adr12_d = adr12_d
adr12_u = adr12_u
adr12_i = adr12_i
adr13_d = adr13_d
adr13_u = adr13_u
adr13_i = adr13_i
adrcomc_d = adrcomc_d
adrcomc_u = adrcomc_u
adrcomc_i = adrcomc_i
adrv_d = adrv_d
adrv_u = adrv_u
adrv_i = adrv_i
adrvp_d = adrvp_d
adrvp_u = adrvp_u
adrvp_i = adrvp_i
** ADRU_D =
** ADRU_U =
** ADRU_I =
EXCEPTIONS
DATABASE_ERROR = 1
INTERNAL_ERROR = 2
OTHERS = 3
.
IF sy-subrc <> 0.
ELSEIF sy-subrc = 1.
WRITE : / 'DATABASE ERROR ADRC TABLE'.
ELSEIF SY-SUBRC = 2.
WRITE : 'INTERNAL ERROR'.
ELSEIF SY-SUBRC = 3.
WRITE : 'ERROR FOUND EXCEPTION NO 3'.
ENDIF.
IF SY-SUBRC = 0.
DESCRIBE TABLE I_ADRC.
WRITE : / 'NO OF RECORDS SUCESSFULLY UPDATED IN ADRC DATABASE TABLE', SY-TFILL.
ENDIF.
2013 Sep 02 5:42 PM
Hi ,
ADDR_SAVE_INTERN is not "Not released" I would not recommend using
such a function .
Update: look at BAPI_BUPA_ADDRESS_ADD
found it based on this thread: http://scn.sap.com/thread/1862972
Regards.
See BAPI_BUPA_ADDRESS_ADD