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: 

HELP CALL FUNCTION 'BAPI_ADDRESSORG_CHANGE'

0 Kudos
2,490

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.    

1 ACCEPTED SOLUTION

0 Kudos
1,524

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

4 REPLIES 4

Former Member
0 Kudos
1,524

read function module documentation of BAPI_ADDRESSORG_CHANGE, even there is sample program given.

0 Kudos
1,524

Thanks

0 Kudos
1,525

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

0 Kudos
1,524

Thanks alot   Karthik...