Sapass

 Simplify SAP R/3 development with Excel VBA/VB RFC  
Home> Bapi>AddressPers



Index

AddressPers

AddressPers


No description is available


11-Dec-2005


Methods

Available Methods


  • Change : BAPI to change person addresses [ BAPI_ADDRESSPERS_CHANGE ]
  • GetDetail : BAPI to read person addresses [ BAPI_ADDRESSPERS_GETDETAIL ]
  • SaveReplica : BAPI for inbound distribution of private addresses [ BAPI_ADDRESSPERS_SAVEREPLICA ]

11-Dec-2005


Change

Change


The person address for the specified object type and key is found, andupdated with the specified address and communication data, if required.
This module differs from a standard change BAPI in that not only canexisting entries be changed, address attribute telephone numbers, fax numbers, etc. can also be deleted or inserted.

Reference structures (checkboxes) are used to select entries to be changed.

Example

* Change a person address:
* Change, delete and add a telephone number

DATA: objtype LIKE bapi4002_1-objtype,
obj_id LIKE bapi4002_1-objkey,
obj_id_ext LIKE bapi4002_1-extension,
context LIKE bapi4002_1-context,

address_number LIKE adrc-addrnumber,
person_number LIKE adrp-persnumber,
bapiadtel LIKE bapiadtel OCCURS 0 WITH HEADER LINE,
bapiadtel_x LIKE bapiadtelx OCCURS 0 WITH HEADER LINE,
return LIKE bapiret2 OCCURS 0.

* Assign the following object type and object key to the

* private address of a customer contact person
objtype = 'BUS1006001'
obj_id = <person number (KNVK)>
obj_id_ext = ' '
context = '0004'

* Get the existing data by calling e.g. FM 'BAPI_ADDRESSPERS_GETDETAIL'
...


* Enter the reference structure data
* The telephone number with serial number '002', is to be deleted
* the with serial number '003' updated
* soll aktualisiert werden.
CLEAR: bapiadtel[], bapiadtel_x[].

CLEAR: bapiadtel, bapiadtel_x.
bapiadtel_x-updateflag = 'D'.
APPEND: bapiadtel, bapiadtel_x. "Delete entry


CLEAR: bapiadtel, bapiadtel_x.
bapiadtel-extension = '77733'.
bapiadtel_x-extension = 'X'.
bapiadtel_x-updateflag = 'U'.
APPEND: bapiadtel, bapiadtel_x. "Update entry

CLEAR: bapiadtel, bapiadtel_x.
bapiadtel-telephone = '06227'.
bapiadtel-extension = '11111'.
bapiadtel_x-updateflag = 'I'.

APPEND: bapiadtel, bapiadtel_x. "Insert new entry

* call the change module
CALL FUNCTION 'BAPI_ADDRESSPERS_CHANGE'
EXPORTING
obj_type = objtype
obj_id = obj_id
obj_id_ext = obj_id_ext

context = context
IMPORTING
address_number = address_number
person_number = person_number
TABLES
bapiadtel = bapiadtel
bapiadtel_x = bapiadtel_x
return = return.


* Errors and warnings are in the table RETURN. If successful, the
* person address and its communication data are updated.
* The address number is in the field ADDRESS_NUMBER, the person number
* in the field PERSON_NUMBER.

Notes


To delete e.g. a telephone number in the table of existing Telephonenumbers of an address, the field 'UPDATEFLAG' in the corresponding reference structure line must contain 'D'.
To insert an entry it must be 'I', and be accompanied by the data to be inserted.

All lines to be inserted (I), and their reference structures, must be after all entries to be changed (U) and deleted (D).
Change data key fields must always be filled and are used as far aspossible. It is not significant whether e.g. all telephone number
comments are followed by fax number comments, or vice versa; only thesequence among entries with the same key is important, unless youspecify communication address or comment serial numbers partially or not at all, when the sequence is significant.
The key fields are:


Structure | Fields

---------------------------------

BAPIAD2VL | ADDR_VERS, FROM_DATE

BAPIAD_REM | ADDR_VERS, LANGU

BAPIADTEL | CONSNUMBER

... | ...

BAPIADPAG | CONSNUMBER

BAPICOMREM | COMM_TYPE, CONSNUMBER, LANGU


You can pass communication address and comment serial numbers empty.The data sequence is then significant. For example to delete thetelephone number in the second position in the in ascending order ofserial number sorted existing telephone numbers, in the database, you
must pass a dummy telephone number with an update flag (U) in the firstposition, without selecting fields to update, und a telephone number with delete flag (D) in the second position.
The communication addresses in the database are not usually sorted by serial number, so you must first determine the sequence of
communication addresses sorted by serial number.
This is not advisable because you can easily make date sequence errors.Specifying serial numbers as keys is safer.

You should assign your own serial numbers for communication addressesand their comments to be inserted (I), so that the communication
address - comment assignment is clear. Ensure that the serial numbersare not already used in the database, unless you want to assign acomment explicitly to an existing communication address. If you assignno numbers, it is assumed that all comments to be inserted belong to
the communication addresses to be inserted, and they are assigned bythe sequence of the data passed. (This would be appropriate if a comment is to be inserted for another language than the creationlanguage of a communication address). Then the first telephone number
comment in German flagged for insertion (I) is assigned to the firsttelephone number to be inserted. The third fax number comment inEnglish to be inserted (I) is assigned to the third fax number to be inserted specified.
In this case you cannot assign a comment to an existing communication address. You need a serial number to do this.


If one type of communication address and its comments has serial numbers and another does not, this does not affect the overallfunctionality. All communication types are processed separately, i.e.if all addresses of a communication type have serial numbers, they are
used, even if there are no serial numbers for all or some addresses ofanother communication type. The addresses of such communication types are processed in the order of their data.

You can specify serial numbers for communication addresses to beinserted (I) and omit them for communication addresses to be updated
(U) and deleted (D), and vice versa. They are processed separatelyusing serial numbers or the data sequence as appropriate. Communicationaddresses to be updated (U) or delete (D) must both be passed either completely with or completely without serial numbers.

You are on the safe side if you always pass a serial number.

You must first read the data to be changed (e.g. using FMBAPI_ADDRESSPERS_GETDETAIL), if communication data is also to be changed to get the communication data serial numbers.

The address number of the person address for the object type and key,
is returned in the export parameter ADDRESS_NUMBER, the person number in the field PERSON_NUMBER.
Processing warnings and errors are in the table RETURN.

To be able to use this function module, the System needs to associate the BOR object types to be used to their addresses.

The table TSADOBJ must contain the BOR object type application tablesand address reference fields. The address reference read callback function module must be in table TSADRV.
If TSADOBJ and TSADRV do not contain these entries, the function moduleputs a message in the error table RETURN, and the BOR object address cannot be processed.


This function contains no COMMIT command as required by the BAPI programming guidelines from Release 4.0.
See OSS note 131838.

The result is returned in the communication data transfer structuresBAPIADTEL, BAPIADFAX, ... , BAPIADPAG and their comment transfer
structure BAPICOMREM, if no exception error ('E') occurred in the BAPI processing.
So if a communication address has been processed, BAPIAD* contains thedata as they are in the database, or would be after the next COMMIT.
For example the field 'TEL_NO' is filled with a complete telephone
number. More importantly, the communication address serial numbers usedare also returned. This is particularly useful for new communication addresses.
If a communication address or comment could not be processed, the errorflag 'ERRORFLAG' is set to 'X' and the serial number 'CONSNUMBER' to '000' in its row in the BAPIAD* structure.


To maintain address communication data with this BAPI:

after you have created, changed or deleted communication data one number must be flagged as the standard number (STD_NO = 'X').

Assign a serial number (CONSNUMBER) to each communication address. This
preserves the assignment between communication addresses and any comments which you may maintain, possibly in several languages.
You can choose these numbers when creating, but they may be changed when saving, if for example they already exist.
Use the serial numbers which are saved in the database to change or delete communication addresses.


11-Dec-2005


GetDetail

GetDetail


The address data of the person address for the specified object type and key is found.
The address number and person number in the current system are also returned.

Example

* Read a person address:
DATA: objtype LIKE bapi4002_1-objtype,
obj_id LIKE bapi4002_1-objkey,

obj_id_ext LIKE bapi4002_1-extension,
context LIKE bapi4002_1-context,
address_number LIKE adrc-addrnumber,
person_number LIKE adrp-persnumber,
bapiad2vl LIKE bapiad2vl OCCURS 0,
bapiadtel LIKE bapiadtel OCCURS 0,

bapiadfax LIKE bapiadfax OCCURS 0,
...
bapicomrem LIKE bapicomrem OCCURS 0,
return LIKE bapiret2 OCCURS 0.

* Assign the following object type and key to the private address of a
* customer contact person
objtype = 'BUS1006001'
obj_id = <partner number (KNVK)>
obj_id_ext = ' '

context = '0004'

* call GetDetail module
CALL FUNCTION 'BAPI_ADDRESSPERS_GETDETAIL'
EXPORTING
obj_type = objtype
obj_id = obj_id
obj_id_ext = obj_id_ext
context = context
IMPORTING
address_number = address_number

person_number = person_number
TABLES
bapiad2vl = bapiad2vl
bapiadtel = bapiadtel
...
bapicomrem = bapicomrem
return = return.

* The address data are in the tables BAPIAD2VL, ..., BAPICOMREM.
* The table RETURN contains all processing errors and warnings.

* The address number and the person number are in the fields
* ADDRESS_NUMBER and PERSON_NUMBER respectively.

Notes

The communication data and comment sequence in the tables is the serial number of the data in the specified system.

The address number of the person address for the object type and key isreturned in the export parameter ADDRESS_NUMBER, the person number in the field PERSON_NUMBER.
Processing warnings and errors are in the table RETURN.

To be able to use this function module, the System needs to associate the BOR object types to be used to their addresses.

The table TSADOBJ must contain the BOR object type application tablesand address reference fields. The address reference read callback function module must be in table TSADRV.
If TSADOBJ and TSADRV do not contain these entries, the function moduleputs a message in the error table RETURN, and the BOR object address cannot be processed.


11-Dec-2005


SaveReplica

SaveReplica


The person address is determined from the specified object type andkey, and overwritten by the specified current address and communicationdata. This module is usually called by the ALE function module IDOC_INPUT_ADR2MAS.

Example

* Replicate a person address: copy the current status in the
* AB1 system to AB2

An ALE IDOC is created and distributed in AB1 by the module ALE_ADDRESSPERS_SAVEREPLICA after the function moduleMASTERIDOC_CREATE_REQ_ADR2MAS has been called.
When the IDOC arrives in AB2, it is read by the moduleIDOC_INPUT_ADR2MAS, and its data are passed to the module BAPI_ADDRESSPERS_SAVEREPLICA. The object type OBJ_TYPE, the object key
OBJ_ID, the object key extension OBJ_ID_EXT, and the context CONTEXT are the same as in the source system.
For example, values are assigned as follows in the private customer contact person address:
Object type: 'BUS1006001'
Object key: <partner number>

(extension empty): ' '
context: '0004'

The module call is as follows:

DATA: bapiad2vl  like bapiad2vl occurs 0,
bapiadtel like bapiadtel occurs0,
...
bapicomrem like bapicomrem occurs 0,
return like bapiret2,
addrnumber like adrc-addrnumber,

persnumber like adrp-persnumber.

CALL FUNCTION 'BAPI_ADDRESSPERS_SAVEREPLICA'
EXPORTING
obj_type = 'BUS1006001'
obj_id = '4712'
OBJ_ID_EXT = ' '
CONTEXT = '0004'
IMPORTING
RETURN = return

ADDRESS_NUMBER = addrnumber
PERSON_NUMBER = persnumber
tables
bapiad2vl = bapiad2vl
BAPIADTEL = bapiadtel
BAPIADFAX = bapiadfax
BAPIADTTX = bapiadttx
BAPIADTLX = bapiadtlx
BAPIADSMTP = bapiadsmtp

BAPIADRML = bapiadrml
BAPIADX400 = bapiadx400
BAPIADRFC = bapiadrfc
BAPIADPRT = bapiadprt
BAPIADSSF = bapiadssf
BAPIADURI = bapiaduri
BAPIADPAG = bapiadpag
BAPIAD_REM = bapiadrem

BAPICOMREM = bapicomrem.
IF NOT RETURN IS INITIAL.
...
ENDIF.

The person data for address number ADDRNUMBER and person number PERSNUMBER has now been updated in AB2.

Note

Error messages are in the return structure RETURN.
The valid address and person number for the target system are returned
in the ADDRESS_NUMBER and PERSON_NUMBER parameters.

The result is returned in the communication data transfer structuresBAPIADTEL, BAPIADFAX, ... , BAPIADPAG and their comment transferstructure BAPICOMREM, if no exception error ('E') occurred in the BAPI processing.

So if a communication address has been processed, BAPIAD* contains thedata as they are in the database, or would be after the next COMMIT.
For example the field 'TEL_NO' is filled with a complete telephonenumber. More importantly, the communication address serial numbers used
are also returned. This is particularly useful for new communication addresses.
If a communication address or comment could not be processed, the errorflag 'ERRORFLAG' is set to 'X' and the serial number 'CONSNUMBER' to '000' in its row in the BAPIAD* structure.


11-Dec-2005