Foro de programacion ABAP
Código abierto => Bapis => Mensaje iniciado por: Enrique.Borroni 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.
-
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