2012 Oct 05 6:59 PM
Hi all, I NEED TO KNOW.
WHY DOES NOT MY CODE? ... I WANT TO SAVE THE E-MAIL REGISTRATION OF CREDITOR (KX01), BECAUSE IN BATCH INPUT NOT BE ENTERED.
Help me please...
Thanks Issa
*&---------------------------------------------------------------------*
*& Form ADDRUPDATE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM addrupdate .
DATA: objtype LIKE bapi4001_1-objtype,
obj_id LIKE bapi4001_1-objkey,
obj_id_ext LIKE bapi4001_1-extension,
context LIKE bapi4001_1-context,
address_number LIKE adrc-addrnumber,
bapiadtel LIKE bapiadtel OCCURS 0 WITH HEADER LINE,
bapiadtel_x LIKE bapiadtelx OCCURS 0 WITH HEADER LINE,
return LIKE bapiret2 OCCURS 0,
bapiadsmtp LIKE bapiadsmtp OCCURS 0 WITH HEADER LINE.
SELECT SINGLE * FROM lfa1 WHERE stcd1 = zfialtap-stcd1.
objtype = 'LFA1'.
obj_id = lfa1-lifnr.
obj_id_ext = ' '.
context = '001'.
bapiadsmtp-e_mail = 'issaprueba@casilotermino.com.mx'.
APPEND bapiadsmtp.
CALL FUNCTION 'BAPI_ADDRESSORG_CHANGE'
EXPORTING
obj_type = objtype
obj_id = obj_id
obj_id_ext = ' '
context = '001'
* ACCEPT_ERROR = 'X'
* SAVE_ADDRESS = 'X'
* IV_CHECK_ADDRESS = 'X'
* IV_TIME_DEPENDENT_COMM_DATA = ' '
IMPORTING
address_number = address_number
TABLES
* BAPIAD1VL =
* BAPIADTEL =
* BAPIADFAX =
* BAPIADTTX =
* BAPIADTLX =
bapiadsmtp = bapiadsmtp
* BAPIADRML =
* BAPIADX400 =
* BAPIADRFC =
* BAPIADPRT =
* BAPIADSSF =
* BAPIADURI =
* BAPIADPAG =
* BAPIAD_REM =
* BAPICOMREM =
* BAPIADUSE =
* BAPIAD1VL_X =
* BAPIADTEL_X = bapiadtel_x
* BAPIADFAX_X =
* BAPIADTTX_X =
* BAPIADTLX_X =
* BAPIADSMT_X =
* BAPIADRML_X =
* BAPIADX40_X =
* BAPIADRFC_X =
* BAPIADPRT_X =
* BAPIADSSF_X =
* BAPIADURI_X =
* BAPIADPAG_X =
* BAPIAD_RE_X =
* BAPICOMRE_X =
* BAPIADUSE_X =
return = return .
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
*EXPORTING
* WAIT = 'X'
* IMPORTING
* RETURN =
.
ENDFORM.
2012 Oct 07 7:08 AM
Hello Isabel,
The table BAPIADSMTP will hold the email to be inserted. The bapi 'BAPI_ADDRESSORG_CHANGE' can be used to insert a new email, update/change the existing email also delete the email. So now if you just pass the email in the table BAPIADSMTP how the module will think it has to be inserted. So you need to pass the change indicator details in the table BAPIADSMT_X. If you are passing any communication details then the change indicator table has to be passed which is associated with it. Please find the below code where i have added three lines before the call to the bapi 'BAPI_ADDRESSORG_CHANGE', which will fill the table BAPIADSMT_X with the proper details.
*&---------------------------------------------------------------------*
*& Form ADDRUPDATE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM addrupdate .
DATA: objtype LIKE bapi4001_1-objtype,
obj_id LIKE bapi4001_1-objkey,
obj_id_ext LIKE bapi4001_1-extension,
context LIKE bapi4001_1-context,
address_number LIKE adrc-addrnumber,
bapiadtel LIKE bapiadtel OCCURS 0 WITH HEADER LINE,
bapiadtel_x LIKE bapiadtelx OCCURS 0 WITH HEADER LINE,
return LIKE bapiret2 OCCURS 0,
bapiadsmtp LIKE bapiadsmtp OCCURS 0 WITH HEADER LINE.
SELECT SINGLE * FROM lfa1 WHERE stcd1 = zfialtap-stcd1.
objtype = 'LFA1'.
obj_id = lfa1-lifnr.
obj_id_ext = ' '.
context = '001'.
bapiadsmtp-e_mail = 'issaprueba@casilotermino.com.mx'.
APPEND bapiadsmtp.
bapiadsmt_x-e_mail = 'X'.
bapiadsmt_x-UPDATEFLAG = 'I'.
APPEND bapiadsmt_x.
CALL FUNCTION 'BAPI_ADDRESSORG_CHANGE'
EXPORTING
obj_type = objtype
obj_id = obj_id
obj_id_ext = ' '
context = '001'
* ACCEPT_ERROR = 'X'
* SAVE_ADDRESS = 'X'
* IV_CHECK_ADDRESS = 'X'
* IV_TIME_DEPENDENT_COMM_DATA = ' '
IMPORTING
address_number = address_number
TABLES
* BAPIAD1VL =
* BAPIADTEL =
* BAPIADFAX =
* BAPIADTTX =
* BAPIADTLX =
bapiadsmtp = bapiadsmtp
* BAPIADRML =
* BAPIADX400 =
* BAPIADRFC =
* BAPIADPRT =
* BAPIADSSF =
* BAPIADURI =
* BAPIADPAG =
* BAPIAD_REM =
* BAPICOMREM =
* BAPIADUSE =
* BAPIAD1VL_X =
* BAPIADTEL_X = bapiadtel_x
* BAPIADFAX_X =
* BAPIADTTX_X =
* BAPIADTLX_X =
BAPIADSMT_X = bapiadsmt_x
* BAPIADRML_X =
* BAPIADX40_X =
* BAPIADRFC_X =
* BAPIADPRT_X =
* BAPIADSSF_X =
* BAPIADURI_X =
* BAPIADPAG_X =
* BAPIAD_RE_X =
* BAPICOMRE_X =
* BAPIADUSE_X =
return = return .
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
*EXPORTING
* WAIT = 'X'
* IMPORTING
* RETURN =
.
ENDFORM.
Thanks,
Reward if useful
Karthik
2012 Oct 06 8:02 AM
read function module documentation of BAPI_ADDRESSORG_CHANGE, even there is sample program given.
2012 Oct 10 7:27 PM
2012 Oct 07 7:08 AM
Hello Isabel,
The table BAPIADSMTP will hold the email to be inserted. The bapi 'BAPI_ADDRESSORG_CHANGE' can be used to insert a new email, update/change the existing email also delete the email. So now if you just pass the email in the table BAPIADSMTP how the module will think it has to be inserted. So you need to pass the change indicator details in the table BAPIADSMT_X. If you are passing any communication details then the change indicator table has to be passed which is associated with it. Please find the below code where i have added three lines before the call to the bapi 'BAPI_ADDRESSORG_CHANGE', which will fill the table BAPIADSMT_X with the proper details.
*&---------------------------------------------------------------------*
*& Form ADDRUPDATE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM addrupdate .
DATA: objtype LIKE bapi4001_1-objtype,
obj_id LIKE bapi4001_1-objkey,
obj_id_ext LIKE bapi4001_1-extension,
context LIKE bapi4001_1-context,
address_number LIKE adrc-addrnumber,
bapiadtel LIKE bapiadtel OCCURS 0 WITH HEADER LINE,
bapiadtel_x LIKE bapiadtelx OCCURS 0 WITH HEADER LINE,
return LIKE bapiret2 OCCURS 0,
bapiadsmtp LIKE bapiadsmtp OCCURS 0 WITH HEADER LINE.
SELECT SINGLE * FROM lfa1 WHERE stcd1 = zfialtap-stcd1.
objtype = 'LFA1'.
obj_id = lfa1-lifnr.
obj_id_ext = ' '.
context = '001'.
bapiadsmtp-e_mail = 'issaprueba@casilotermino.com.mx'.
APPEND bapiadsmtp.
bapiadsmt_x-e_mail = 'X'.
bapiadsmt_x-UPDATEFLAG = 'I'.
APPEND bapiadsmt_x.
CALL FUNCTION 'BAPI_ADDRESSORG_CHANGE'
EXPORTING
obj_type = objtype
obj_id = obj_id
obj_id_ext = ' '
context = '001'
* ACCEPT_ERROR = 'X'
* SAVE_ADDRESS = 'X'
* IV_CHECK_ADDRESS = 'X'
* IV_TIME_DEPENDENT_COMM_DATA = ' '
IMPORTING
address_number = address_number
TABLES
* BAPIAD1VL =
* BAPIADTEL =
* BAPIADFAX =
* BAPIADTTX =
* BAPIADTLX =
bapiadsmtp = bapiadsmtp
* BAPIADRML =
* BAPIADX400 =
* BAPIADRFC =
* BAPIADPRT =
* BAPIADSSF =
* BAPIADURI =
* BAPIADPAG =
* BAPIAD_REM =
* BAPICOMREM =
* BAPIADUSE =
* BAPIAD1VL_X =
* BAPIADTEL_X = bapiadtel_x
* BAPIADFAX_X =
* BAPIADTTX_X =
* BAPIADTLX_X =
BAPIADSMT_X = bapiadsmt_x
* BAPIADRML_X =
* BAPIADX40_X =
* BAPIADRFC_X =
* BAPIADPRT_X =
* BAPIADSSF_X =
* BAPIADURI_X =
* BAPIADPAG_X =
* BAPIAD_RE_X =
* BAPICOMRE_X =
* BAPIADUSE_X =
return = return .
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
*EXPORTING
* WAIT = 'X'
* IMPORTING
* RETURN =
.
ENDFORM.
Thanks,
Reward if useful
Karthik
2012 Oct 10 7:28 PM