Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

insert an entry into ADRC

Former Member
0 Likes
6,894

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.

1 ACCEPTED SOLUTION
Read only

Former Member
4,204

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.




5 REPLIES 5
Read only

arindam_m
Active Contributor
0 Likes
4,204

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

Read only

Former Member
0 Likes
4,204

Hi Alexander,

Use the function module ADDR_SAVE_INTERN and pass the correct fields to respective parameters.

Regards

khaleel

Read only

Former Member
0 Likes
4,204

Hi,

try the function module BAPI_BUPA_ADDRESS_ADD or ADDR_SAVE_INTERN .

Read only

Former Member
4,205

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.




Read only

0 Likes
4,204

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