Autor Tema: SD_CUSTOMER_MAINTAIN_ALL - Ejemplo de Uso  (Leído 26483 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Enrique.Borroni

  • Moderador_
  • Usuario Completo
  • *****
  • Mensajes: 89
    • Ver Perfil
SD_CUSTOMER_MAINTAIN_ALL - Ejemplo de Uso
« en: 05 de Diciembre de 2012, 06:36:35 am »
Ejemplo de como utilizar esta BAPI...


REPORT y_ebf_058.

*----------------------------------------------------------------------*
* DECLARACION DE VARIABLES
*----------------------------------------------------------------------*
*
DATA : ld_kunnr             TYPE kunnr.
DATA : ld_sd_cust_1321_done TYPE c.
DATA : ld_addnr             TYPE ad_addrnum.
*
*----------------------------------------------------------------------*
* DECLARACION DE TABLAS INTERNAS Y ESTRUCTURAS
*----------------------------------------------------------------------*
*
DATA : wa_kna1              TYPE kna1.                                " Maestro de clientes (parte general)
DATA : wa_knb1              TYPE knb1.                                " Maestro de clientes (sociedad)
DATA : wa_knvv              TYPE knvv.                                " Maestro de clientes datos comerciales
DATA : wa_bapiaddr1         TYPE bapiaddr1.                           " Estructura de referencia BAPI p.direcciones (org./empresa)
DATA : wa_bapiaddr2         TYPE bapiaddr2.                           " Estructura referencia BAPI p.direcciones (personas físicas)
*
DATA : it_xknvi             TYPE STANDARD TABLE OF fknvi,             " Change document structure; generated using RSSCD000
       wa_xknvi             TYPE fknvi,
       wx_xknvi             TYPE fknvi.
*
DATA : it_xknvp             TYPE STANDARD TABLE OF fknvp,             " Change document structure; generated using RSSCD000
       wa_xknvp             TYPE fknvp,
       wx_xknvp             TYPE fknvp.
*
DATA : it_yknvp             TYPE STANDARD TABLE OF fknvp,             " Change document structure; generated using RSSCD000
       wa_yknvp             TYPE fknvp,
       wx_yknvp             TYPE fknvp.
*
DATA : it_ad1vl             TYPE STANDARD TABLE OF bapiad1vl,         " Estructura BAPI p.distribución tp.dirección 1
       wa_ad1vl             TYPE bapiad1vl.
DATA : it_adsmtp            TYPE STANDARD TABLE OF bapiadsmtp,        " Estructura BAPI p.direcciones correo electr.(Bus.Addr.Serv.)
       wa_adsmtp            TYPE bapiadsmtp.
DATA : it_adtel             TYPE STANDARD TABLE OF bapiadtel,         " Estructura BAPI p.números teléfono (Business Address Serv.)
       wa_adtel             TYPE bapiadtel.
DATA : it_return            TYPE STANDARD TABLE OF bapiret2,          " Parámetro de retorno
       wa_return            TYPE bapiret2.
DATA : it_ad1vlx            TYPE STANDARD TABLE OF bapiad1vlx,        " Estructura referencia modif.BAPI p.estructura BAPIAD1VL
       wa_ad1vlx            TYPE bapiad1vlx.
DATA : it_adtelx            TYPE STANDARD TABLE OF bapiadtelx,        " Estructura referencia modif.BAPI p.estructura BAPIADTEL
       wa_adtelx            TYPE bapiadtelx.
DATA : it_adsmtx            TYPE STANDARD TABLE OF bapiadsmtx,        " Estructura referencia modif.BAPI p.estructura BAPIADSMTP
       wa_adsmtx            TYPE bapiadsmtx.
*
DATA : wx_kna1              TYPE kna1.                                "


*
*----------------------------------------------------------------------*
*  INICIO SECUENCIA DE CREACION DE PACIENTES
*----------------------------------------------------------------------*
*

*
*   -------------------------------------------------------------------*
*    LLENADO TBI : IT_KNA1 ( MAESTR DE CLIENTES DATOS GENERALES )
*   -------------------------------------------------------------------*
*
CLEAR   : wa_kna1.
*
wa_kna1-kunnr   = '0000000100'.                                     " Numero de Cliente
wa_kna1-land1   = 'CL'.                                             " Pais
wa_kna1-ktokd   = 'DPCT'.                                           " Grupo de Cuentas Deudor
wa_kna1-spras   = 'S'.                                              " Idioma
wa_kna1-name3   = 'Nombre 3'.                                       " Nombre 3
*

*
*   -------------------------------------------------------------------*
*    LLENADO TBI : IT_KNVV ( MAESTRO CLIENTE DATOS COMERCIALES )
*   -------------------------------------------------------------------*
*
CLEAR   : wa_knvv.
*
wa_knvv-kunnr   = '0000000100'.                                     " Numero de Cliente
wa_knvv-vkorg   = '1000'.                                           " Organizacion de Venta
wa_knvv-vtweg   = '10'.                                             " Canal de distribución
wa_knvv-spart   = '10'.                                             " Sector
wa_knvv-kdgrp   = '01'.                                             " Grupo de clientes
wa_knvv-waers   = 'CLP'.                                            " Moneda
wa_knvv-kalks   = '1'.                                              " Esquema calculo del paciente
wa_knvv-versg   = '1'.                                              " Grupo de estadísticas cliente
wa_knvv-zterm   = 'ZXXX'.                                           " Clave de condiciones de pago
wa_knvv-pltyp   = 'A1'.                                             " Tipo de lista de precios
wa_knvv-awahr   = '100'.                                            " Probabilidad de pedido de posición
wa_knvv-antlf   = '9'.                                              " Cantidad máxima de entregas parciales permitidas p/posición
wa_knvv-kzazu   = 'X'.                                              " Indicador de agrupamiento de pedidos
wa_knvv-vwerk   = 'CE0Q'.                                           " Centro suministrador
wa_knvv-vkbur   = '1001'.                                           " Oficina de ventas
wa_knvv-vkgrp   = 'GR1'.                                            " Grupo de Vendedores

*
*   -------------------------------------------------------------------*
*    LLENADO TBI : IT_BAPIADDR2 ( ESTR.BAPI DIREC.PERSONAS FISICAS )
*   -------------------------------------------------------------------*
*
CLEAR   : wa_bapiaddr2.
*
wa_bapiaddr2-firstname    = 'NOMBRE 1'.                             " Nombre Cliente
wa_bapiaddr2-lastname     = 'NOMBRE 2'.                             " Nombre Cliente
wa_bapiaddr2-langu_p      = 'S'.                                    " Idioma
wa_bapiaddr2-langup_iso   = 'S'.                                    " Idioma ISO
wa_bapiaddr2-fullname_x   = 'X'.

wa_bapiaddr2-house_no     = '1345'.                                 " Nº en la Direccion

wa_bapiaddr2-country      = 'CL'.                                   " Pais
wa_bapiaddr2-countryiso   = 'CL'.                                   " Pais ISO
wa_bapiaddr2-region       = '13'.                                   " Region
wa_bapiaddr2-time_zone    = 'CHILE'.                                " Zona Horaria
wa_bapiaddr2-e_mail       = 'CUALQUIER.CORREO@EMAIL.COM'.           " Direccion Correo
wa_bapiaddr2-city         = 'CITY'.
wa_bapiaddr2-district     = 'DISTRICT'.

*
*----------------------------------------------------------------------*
* DATOS DE IMPUESTOS
*----------------------------------------------------------------------*
*
REFRESH : it_xknvi.
CLEAR   : it_xknvi, wa_xknvi, wx_xknvi.

wa_xknvi-kunnr            = '0000000100'.                       " Numero de Cliente
wa_xknvi-aland            = 'CL'.                               " Pais
wa_xknvi-tatyp            = 'MWST'.                             " Tipo de Impuesto
wa_xknvi-taxkd            = '0'.                                " Tipo de Casificacion Fiscal (Exento )
wa_xknvi-kz               = 'U'.                                " Tipo de modificación (U, I, E, D)
APPEND wa_xknvi TO it_xknvi.
*
*----------------------------------------------------------------------*
*  DATOS DE INTERLOCUTOR COMERCIAL
*----------------------------------------------------------------------*
*
REFRESH : it_xknvp.
CLEAR   : it_xknvp, wa_xknvp, wx_xknvp.
*
wa_xknvp-kunnr            = '0000000100'.                           " Numero de Cliente
wa_xknvp-vkorg            = '1000'.                                 " Organizacion de Ventas
wa_xknvp-vtweg            = '10'.                                   " Canal de Disrtibucion
wa_xknvp-spart            = '10'.                                   " Funcion
wa_xknvp-parvw            = 'RG'.                                   " Tipo de Interlocutor
wa_xknvp-kunn2            = '99999999-9'.                           " Número de cliente del interlocutor
wa_xknvp-kz               = 'I'.                                    " Tipo de modificación (U, I, E, D)
*
APPEND wa_xknvp TO it_xknvp.


*   -------------------------------------------------------------------*
*    EJECUTAR BAPI MODIFICACION DE CLIENTES : SD_CUSTOMER_MAINTAIN_ALL
*   -------------------------------------------------------------------*
*
CALL FUNCTION 'SD_CUSTOMER_MAINTAIN_ALL'
  EXPORTING
    i_kna1                  = wa_kna1
    i_knb1                  = wa_knb1
    i_knvv                  = wa_knvv
    i_bapiaddr1             = wa_bapiaddr1
    i_bapiaddr2             = wa_bapiaddr2
    pi_postflag             = 'X'
    pi_cam_changed          = 'X'
  IMPORTING
    e_kunnr                 = ld_kunnr
    o_kna1                  = wx_kna1
    e_sd_cust_1321_done     = ld_sd_cust_1321_done
  TABLES
    t_xknvi                 = it_xknvi
    t_xknvp                 = it_xknvp
    t_yknvp                 = it_yknvp
  EXCEPTIONS
    client_error            = 1
    kna1_incomplete         = 2
    knb1_incomplete         = 3
    knb5_incomplete         = 4
    knvv_incomplete         = 5
    kunnr_not_unique        = 6
    sales_area_not_unique   = 7
    sales_area_not_valid    = 8
    insert_update_conflict  = 9
    number_assignment_error = 10
    number_not_in_range     = 11
    number_range_not_extern = 12
    number_range_not_intern = 13
    account_group_not_valid = 14
    parnr_invalid           = 15
    bank_address_invalid    = 16
    tax_data_not_valid      = 17
    no_authority            = 18
    company_code_not_unique = 19
    dunning_data_not_valid  = 20
    knb1_reference_invalid  = 21
    cam_error               = 22
    OTHERS                  = 23.
*
IF ( sy-subrc EQ 0 ).
  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
      wait = 'X'.
ENDIF.

Saludos.

Atte.,
Enrique Borroni

maito : enrique.borroni@abap.es

Desconectado CekarC

  • Novato
  • *
  • Mensajes: 1
    • Ver Perfil
Re:SD_CUSTOMER_MAINTAIN_ALL - Ejemplo de Uso
« Respuesta #1 en: 03 de Septiembre de 2018, 03:13:44 pm »
Estimado, buen día,

Necesito modificar los siguientes campos de clientes:

Tabla KNA1: NAME1, ORT01,  STRAS, MCOD3, NAME3 y ORT01
Tabla ADRC: NAME1, NAME3, CITY1, CITY2, STREET, HOUSE_NUM1 y MC_CITY1

Nota: Miré el ejemplo REPORT y_ebf_058 de este sitio, pero no logro dar con la solución.

Traté de modificar solo la tabla KNA1 de la siguiente forma, pero me da error 2:

CALL FUNCTION 'SD_CUSTOMER_MAINTAIN_ALL'
     EXPORTING
       I_KNA1 = gt_kna1
*      I_KNB1 =
*      I_KNVV =
*      I_BAPIADDR1 =
*      I_BAPIADDR2 =
      I_MAINTAIN_ADDRESS_BY_KNA1 = 'X'
*      I_KNB1_REFERENCE = ' '
*      I_FORCE_EXTERNAL_NUMBER_RANGE = 'X'
*      I_NO_BANK_MASTER_UPDATE = ' '
       I_CUSTOMER_IS_CONSUMER = 'X'
*      I_RAISE_NO_BTE = ' '
       PI_POSTFLAG = 'X'
*      PI_CAM_CHANGED = ' '
*    IMPORTING
*      E_KUNNR =
*      O_KNA1 =
*    TABLES
*      T_XKNAS =
*      T_XKNBK =
*      T_XKNB5 =
*      T_XKNEX =
*      T_XKNVA =
*      T_XKNVD =
*      T_XKNVI =
*      T_XKNVK =
*      T_XKNVL =
*      T_XKNVP =
*      T_XKNZA =
*      T_YKNAS =
*      T_YKNBK =
*      T_YKNB5 =
*      T_YKNEX =
*      T_YKNVA =
*      T_YKNVD =
*      T_YKNVI =
*      T_YKNVK =
*      T_YKNVL =
*      T_YKNVP =
*      T_YKNZA =
    EXCEPTIONS
       CLIENT_ERROR = 1
       KNA1_INCOMPLETE = 2
       KNB1_INCOMPLETE = 3
       KNB5_INCOMPLETE = 4
       KNVV_INCOMPLETE = 5
       KUNNR_NOT_UNIQUE = 6
       SALES_AREA_NOT_UNIQUE = 7
       SALES_AREA_NOT_VALID = 8
       INSERT_UPDATE_CONFLICT = 9
       NUMBER_ASSIGNMENT_ERROR = 10
       NUMBER_NOT_IN_RANGE = 11
       NUMBER_RANGE_NOT_EXTERN = 12
       NUMBER_RANGE_NOT_INTERN = 13
       ACCOUNT_GROUP_NOT_VALID = 14
       PARNR_INVALID = 15
       BANK_ADDRESS_INVALID = 16
       TAX_DATA_NOT_VALID = 17
       NO_AUTHORITY = 18
       COMPANY_CODE_NOT_UNIQUE = 19
       DUNNING_DATA_NOT_VALID = 20
       KNB1_REFERENCE_INVALID = 21
       CAM_ERROR = 22
    OTHERS = 23.

  IF sy-subrc EQ 0.
     CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          wait = 'X'.
  ENDIF.



Consultas:

1. ¿Se puede hacer con la función SD_CUSTOMER_MAINTAIN_ALL para ambas tablas?
2. De ser si la respuesta a la consulta 1, ¿cómo debiera definir la función?

De antemano, gracias!

Atte.
CekarC