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.
|