MUNDOSAP

Regresar   MUNDOSAP > DESARROLLO > Programación ABAP IV
Nombre de Usuario
Contraseña
Home Descargas Registrar FAQ Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




 
 
 
Herramientas Buscar en Tema Desplegado
Prev Mensaje Previo   Próximo Mensaje Próx
  #1  
Viejo 19/05/11, 22:00:51
Avatar de shinharold
shinharold shinharold is offline
Junior Member
 
Fecha de Ingreso: jun 2009
Localización: colombia
Mensajes: 15
Question Creación de clientes en tx FD01 con SD_CUSTOMER_MAINTAIN_ALL

Hola foro.


estoy creando clientes masivamente en la transacción FD01 para esto cargo un archivo plano y luego actualizo la transacción usando la bapi SD_CUSTOMER_MAINTAIN_ALL, pero me esta generando errores por el area de ventas, me pide obligatorios VKORG, VTWEG, SPART, a pesar que estos no se visualizan en la transacción FD01.

alguien, ha trabajado con esta Bapi, o tiene una idea de que puede estar pasando ?.

posteo el codigo para que me ayuden.



*&---------------------------------------------------------------------*
*& Form FILL_CUSTOMER
*&---------------------------------------------------------------------*
* llena las tablas de la bapi
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FILL_CUSTOMER.
CLEAR: GST_KNA1, GST_KNB1, GST_KNVV, GST_BAPIADDR1, GST_BAPIADDR2,
GST_ADD_ON_DATA, GC_KUNNR, GST_KNA2, GC_SD_CUST_1321_DONE.

REFRESH: GTI_XKNAS, GTI_XKNBK, GTI_XKNB5, GTI_XKNEX, GTI_XKNVA, GTI_XKNVD,
GTI_XKNVK, GTI_XKNVL, GTI_XKNVP, GTI_XKNZA, GTI_YKNAS, GTI_YKNBK,
GTI_YKNEX, GTI_YKNVA, GTI_YKNVD, GTI_YKNVI, GTI_YKNVK, GTI_YKNVL,
GTI_YKNZA, GTI_UPD_TXT, GTI_YKNB5, GTI_YKNVP, GTI_XKNVI.

*GTI_XKNBK (contiene las actualizaciones a los bancos)

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = GS_EXCELTABLINE-KUNNR
IMPORTING
OUTPUT = GS_EXCELTABLINE-KUNNR.



IF GS_EXCELTABLINE-VKORG <> SPACE AND " ORGANIZACIÓN DE VENTAS
GS_EXCELTABLINE-VTWEG <> SPACE. " CANAL DE DISTRIBUCIÓN
MOVE-CORRESPONDING GS_EXCELTABLINE TO GST_KNA1."METI LA MANO AQUI.

*//comprobación, para saber si KNVV es obligatorio
* IF GS_EXCELTABLINE-KTOKD = 'C103' OR
* GS_EXCELTABLINE-KTOKD = 'C105' OR
* GS_EXCELTABLINE-KTOKD = 'C106' OR
* GS_EXCELTABLINE-KTOKD = 'C107'.
*
* CLEAR: GST_KNVV.
** REFRESH: KNVV.
* ELSE.
* MOVE-CORRESPONDING GST_KNA1 TO GST_KNVV.
* MOVE-CORRESPONDING GS_EXCELTABLINE TO GST_KNVV.
* ENDIF.
MOVE-CORRESPONDING GST_KNA1 TO GST_KNVV.
MOVE-CORRESPONDING GS_EXCELTABLINE TO GST_KNVV.
GST_KNVV-ZTERM = GS_EXCELTABLINE-ZTERM.

IF GST_KNA1-LAND1 NE 'CO'.
GST_KNVV-PVKSM = 'A'.
ENDIF.
ENDIF.

GST_BAPIADDR1-SORT1 = GS_EXCELTABLINE-SORTL.


MOVE-CORRESPONDING GST_KNA1 TO GST_KNB1.
MOVE-CORRESPONDING GS_EXCELTABLINE TO GST_KNB1.

GST_KNB1-ERDAT = SY-DATUM.
GST_KNB1-ERNAM = SY-UNAME.

GST_MAINTAIN_ADDRESS_BY_KNA1 = 'X'.
GST_FORCE_EXT_NU_RANGE = ' '.
GST_POSTFLAG = 'X'.

GST_ADD_ON_DATA-CHANGED = 'X'.
GST_ADD_ON_DATA-KUNNR = GS_EXCELTABLINE-KUNNR.


*//comprobación, para saber si KNVV es obligatorio
* IF GS_EXCELTABLINE-KTOKD = 'C103' OR
* GS_EXCELTABLINE-KTOKD = 'C105' OR
* GS_EXCELTABLINE-KTOKD = 'C106' OR
* GS_EXCELTABLINE-KTOKD = 'C107'.
*
* CLEAR: GST_KNVV.
** REFRESH: KNVV.
* ELSE.
* MOVE-CORRESPONDING GST_KNA1 TO GST_KNVV.
* MOVE-CORRESPONDING GS_EXCELTABLINE TO GST_KNVV.
* ENDIF.
MOVE-CORRESPONDING GST_KNA1 TO GST_KNVV.
MOVE-CORRESPONDING GS_EXCELTABLINE TO GST_KNVV.


MOVE-CORRESPONDING GST_KNA1 TO GTI_XKNVK.
MOVE-CORRESPONDING GS_EXCELTABLINE TO GTI_XKNVK.
APPEND GTI_XKNVK.

* MOVE-CORRESPONDING GST_KNA1 TO T_XKNBK.
* MOVE-CORRESPONDING GS_EXCELTABLINE TO T_XKNBK.
* APPEND T_XKNBK.

MOVE-CORRESPONDING GST_KNA1 TO GTI_XKNVP.
MOVE-CORRESPONDING GS_EXCELTABLINE TO GTI_XKNVP.
APPEND GTI_XKNVP.

* MOVE-CORRESPONDING GST_KNA1 TO T_YKVVP.
* MOVE-CORRESPONDING GS_EXCELTABLINE TO T_YKVVP.
* APPEND T_YKVVP.

CLEAR GTI_XKNVK.
CLEAR GTI_XKNVP.
CLEAR GTI_XKNBW.
CLEAR GTI_XKNVI.
REFRESH GTI_XKNVK.
REFRESH GTI_XKNVP.
REFRESH GTI_XKNBW.
REFRESH GTI_XKNVI.

SELECT SINGLE *
FROM KNA1
WHERE KUNNR = GST_KNA1-KUNNR.
IF SY-SUBRC = 0.
G_C_EXISTE = 'X'.
GTI_XKNBW-KZ = 'U'.
GTI_XKNVP-KZ = 'U'.
GTI_XKNVI-KZ = 'U'.
ELSE.
G_C_EXISTE = ' '.
GTI_XKNBW-KZ = 'I'.
GTI_XKNVP-KZ = 'I'.
GTI_XKNVI-KZ = 'I'.
ENDIF.




* IF NOT gs_exceltabline-witht0 IS INITIAL.
* PERFORM indicadores USING GTI_XKNBW-kz
* gs_exceltabline-bukrs
* gs_exceltabline-kunnr
* gs_exceltabline-witht0
* gs_exceltabline-wt_withcd0
* gs_exceltabline-wt_agent0
* gs_exceltabline-wt_agtdf0
* gs_exceltabline-wt_agtdt0.
* ENDIF.
IF NOT gs_exceltabline-witht_01 IS INITIAL.
PERFORM indicadores USING GTI_XKNBW-kz
gs_exceltabline-bukrs
gs_exceltabline-kunnr
gs_exceltabline-witht_01
gs_exceltabline-wt_withcd_01
gs_exceltabline-wt_agent_01
gs_exceltabline-wt_agtdf_01
gs_exceltabline-wt_agtdt_01.
ENDIF.
IF NOT gs_exceltabline-witht_02 IS INITIAL.
PERFORM indicadores USING GTI_XKNBW-kz
gs_exceltabline-bukrs
gs_exceltabline-kunnr
gs_exceltabline-witht_02
gs_exceltabline-wt_withcd_02
gs_exceltabline-wt_agent_02
gs_exceltabline-wt_agtdf_02
gs_exceltabline-wt_agtdt_02.
ENDIF.
IF NOT gs_exceltabline-witht_03 IS INITIAL.
PERFORM indicadores USING GTI_XKNBW-kz
gs_exceltabline-bukrs
gs_exceltabline-kunnr
gs_exceltabline-witht_03
gs_exceltabline-wt_withcd_03
gs_exceltabline-wt_agent_03
gs_exceltabline-wt_agtdf_03
gs_exceltabline-wt_agtdt_03.
ENDIF.
IF NOT gs_exceltabline-witht_04 IS INITIAL.
PERFORM indicadores USING GTI_XKNBW-kz
gs_exceltabline-bukrs
gs_exceltabline-kunnr
gs_exceltabline-witht_04
gs_exceltabline-wt_withcd_04
gs_exceltabline-wt_agent_04
gs_exceltabline-wt_agtdf_04
gs_exceltabline-wt_agtdt_04.
ENDIF.


IF gs_exceltabline-vkorg NE space AND " Organización de ventas
gs_exceltabline-vtweg NE space. " Canal de distribución
GTI_xknvi-kunnr = gs_exceltabline-kunnr.
GTI_xknvi-aland = 'CO'. "gs_exceltabline-land1. " 'CO'. "gs_exceltabline-aland.
GTI_xknvi-tatyp = 'MWST'."gs_exceltabline-tatyp.
GTI_xknvi-taxkd = gs_exceltabline-taxkd.
APPEND GTI_xknvi.
ENDIF.
*
GTI_UPD_TXT-kunnr = gs_exceltabline-kunnr.
* GTI_UPD_TXT-parnr = gs_exceltabline-parnr.
GTI_UPD_TXT-bukrs = gs_exceltabline-bukrs.
GTI_UPD_TXT-vkorg = gs_exceltabline-vkorg.
GTI_UPD_TXT-vtweg = gs_exceltabline-vtweg.
GTI_UPD_TXT-spart = gs_exceltabline-spart.
GTI_UPD_TXT-upd_a = GTI_XKNBW-kz.
GTI_UPD_TXT-upd_b = GTI_XKNBW-kz.
GTI_UPD_TXT-upd_v = GTI_XKNBW-kz.
GTI_UPD_TXT-upd_ap = GTI_XKNBW-kz.
APPEND GTI_UPD_TXT.
* move-corresponding gs_exceltabline to t_xknvd.
* APPEND t_xknvd.
MOVE-CORRESPONDING gs_exceltabline TO GST_BAPIADDR1.
MOVE gs_exceltabline-name TO GST_BAPIADDR1-name. "Nombre 1
* MOVE gs_exceltabline-c_o_name TO GST_BAPIADDR1-c_o_name. "Nombre 2
MOVE gs_exceltabline-NAME3 to GST_BAPIADDR1-NAME_3. "nombre 3
MOVE gs_exceltabline-NAME4 to GST_BAPIADDR1-NAME_4. "nombre 4
MOVE gs_exceltabline-stras TO GST_BAPIADDR1-street. " Calle y nº
MOVE gs_exceltabline-LAND1 TO GST_BAPIADDR1-country. " Pais
MOVE gs_exceltabline-ORT01 TO GST_BAPIADDR1-city. " Población city_1
MOVE gs_exceltabline-regio TO GST_BAPIADDR1-region. " Población city_1
MOVE gs_exceltabline-SORT2 TO GST_BAPIADDR1-SORT2. "campo de ordenamiento 2
* MOVE gs_exceltabline-land1 TO GST_BAPIADDR1-country. " Pais
MOVE gs_exceltabline-spras TO GST_BAPIADDR1-langu. " Clave de idioma
* MOVE gs_exceltabline-tel1_numbr TO GST_BAPIADDR1-tel1_numbr. " 1º número de teléfono
* MOVE gs_exceltabline-tel1_ext TO GST_BAPIADDR1-tel1_ext. " Extensión1 C10 "se cambio a 6
* MOVE gs_exceltabline-fax_extens TO GST_BAPIADDR1-fax_number. " Extension2
* MOVE gs_exceltabline-telfx TO GST_BAPIADDR1-fax_extens. " Nº telefax
MOVE gs_exceltabline-AD_SMTPADR TO GST_BAPIADDR1-e_mail. " Dirección de correo
MOVE gs_exceltabline-DEFLT_COMM TO GST_BAPIADDR1-COMM_TYPE. " tipo comunicacíon.

* CLEAR GST_BAPIADDR1-e_mail.
MOVE-CORRESPONDING gs_exceltabline TO GST_BAPIADDR2.

MOVE gs_exceltabline-anred TO GST_BAPIADDR2-title_p. "tratamiento
MOVE gs_exceltabline-name1 TO GST_BAPIADDR2-lastname. " Nombre 1
MOVE gs_exceltabline-stras TO GST_BAPIADDR2-street. " Calle y nº
MOVE gs_exceltabline-LAND1 TO GST_BAPIADDR2-NAMCOUNTRY. " Pais
MOVE gs_exceltabline-ort01 TO GST_BAPIADDR2-city. " Población city_1
MOVE gs_exceltabline-name2 TO GST_BAPIADDR2-middlename. " Nombre 2
MOVE gs_exceltabline-regio TO GST_BAPIADDR2-region. " Población city_1
MOVE gs_exceltabline-telf1 TO GST_BAPIADDR2-tel1_numbr. " 1º número de teléfono.
MOVE gs_exceltabline-BBBNR TO GST_BAPIADDR2-tel1_ext. " Extensión1 tel1.
MOVE gs_exceltabline-telfx TO GST_BAPIADDR2-fax_number. " fax.
MOVE gs_exceltabline-BBSNR TO GST_BAPIADDR2-fax_extens. " Extensión1 fax.
MOVE gs_exceltabline-AD_SMTPADR TO GST_BAPIADDR2-e_mail. " Dirección de correo
MOVE gs_exceltabline-land1 TO GST_BAPIADDR2-country. " Pais
MOVE gs_exceltabline-spras TO GST_BAPIADDR2-langu_p. " Clave de idioma
* MOVE gs_exceltabline-SORTL TO GST_BAPIADDR2-SORT1_P. " sort1.
MOVE gs_exceltabline-SORT2 TO GST_BAPIADDR2-SORT2_P. " sort2.


MOVE-CORRESPONDING GTI_UPD_TXT TO GST_BAPIADDR1.
MOVE-CORRESPONDING GTI_UPD_TXT TO GST_BAPIADDR2.


ENDFORM. " FILL_CUSTOMER




*&---------------------------------------------------------------------*
*& Form RUN_BAPI
*&---------------------------------------------------------------------*
* llamado a la bapi que actualiza la transacción
*----------------------------------------------------------------------*
* <--P_G_RC text
*----------------------------------------------------------------------*
FORM RUN_BAPI CHANGING FP_RC.

* DATA: WA_ADR6 TYPE ADR6.

CALL FUNCTION 'SD_CUSTOMER_MAINTAIN_ALL'
EXPORTING
I_KNA1 = GST_KNA1
I_KNB1 = GST_KNB1
I_KNVV = GST_KNVV
I_BAPIADDR1 = GST_BAPIADDR1
I_BAPIADDR2 = GST_BAPIADDR2
I_MAINTAIN_ADDRESS_BY_KNA1 = ' '
I_KNB1_REFERENCE = ' '
I_FORCE_EXTERNAL_NUMBER_RANGE = ' '
I_NO_BANK_MASTER_UPDATE = ' '
I_CUSTOMER_IS_CONSUMER = ' '
I_RAISE_NO_BTE = ' '
PI_POSTFLAG = ' '
PI_CAM_CHANGED = ' '
PI_ADD_ON_DATA = GST_ADD_ON_DATA
I_FROM_CUSTOMERMASTER = ' '
IMPORTING
E_KUNNR = GC_KUNNR
O_KNA1 = GST_KNA2
E_SD_CUST_1321_DONE = GC_SD_CUST_1321_DONE
TABLES
* T_XKNAS = GTI_XKNAS
* T_XKNBK = GTI_XKNBK
* T_XKNB5 = T_XKNB5
* T_XKNEX = T_XKNEX
* T_XKNVA = T_XKNVA
* T_XKNVD = T_XKNVD
T_XKNVI = GTI_XKNVI
* T_XKNVK = T_XKNVK
* T_XKNVL = T_XKNVL
* T_XKNVP = T_XKNVP
* T_XKNZA = T_XKNZA
* T_YKNAS = T_YKNAS
* T_YKNBK = T_YKNBK
* T_YKNB5 = T_YKNB5
* T_YKNEX = T_YKNEX
* T_YKNVA = T_YKNVA
* T_YKNVD = T_YKNVD
* T_YKNVI = T_YKNVI
* T_YKNVK = T_YKNVK
* T_YKNVL = T_YKNVL
* T_YKNVP = T_YKNVP
* T_YKNZA = T_YKNZA
* T_UPD_TXT = T_UPD_TXT
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 <> 0.
IF SY-SUBRC EQ 1.
SY-MSGV3 = 'client_error'.
ENDIF.
IF SY-SUBRC EQ 2.
SY-MSGV3 = 'kna1_incomplete'.
ENDIF.
IF SY-SUBRC EQ 3.
SY-MSGV3 = 'knb1_incomplete'.
ENDIF.
IF SY-SUBRC EQ 4.
SY-MSGV3 = 'knb5_incomplete'.
ENDIF.
IF SY-SUBRC EQ 5.
SY-MSGV3 = 'knvv_incomplete'.
ENDIF.
IF SY-SUBRC EQ 6.
SY-MSGV3 = 'kunnr_not_unique'.
ENDIF.
IF SY-SUBRC EQ 7.
SY-MSGV3 = 'sales_area_not_unique'.
ENDIF.
IF SY-SUBRC EQ 8.
SY-MSGV3 = 'sales_area_not_valid'.
ENDIF.
IF SY-SUBRC EQ 9.
SY-MSGV3 = 'insert_update_conflict'.
ENDIF.
IF SY-SUBRC EQ 10.
SY-MSGV3 = 'number_assignment_error'.
ENDIF.
IF SY-SUBRC EQ 11.
SY-MSGV3 = 'number_not_in_range'.
ENDIF.
IF SY-SUBRC EQ 12.
SY-MSGV3 = 'number_range_not_extern'.
ENDIF.
IF SY-SUBRC EQ 13.
SY-MSGV3 = 'number_range_not_intern'.
ENDIF.
IF SY-SUBRC EQ 14.
SY-MSGV3 = 'account_group_not_valid'.
ENDIF.
IF SY-SUBRC EQ 15.
SY-MSGV3 = 'parnr_invalid'.
ENDIF.
IF SY-SUBRC EQ 16.
SY-MSGV3 = 'bank_address_invalid'.
ENDIF.
IF SY-SUBRC EQ 17.
SY-MSGV3 = 'tax_data_not_valid'.
ENDIF.
IF SY-SUBRC EQ 18.
SY-MSGV3 = 'no_authority'.
ENDIF.
IF SY-SUBRC EQ 19.
SY-MSGV3 = 'company_code_not_unique'.
ENDIF.
IF SY-SUBRC EQ 20.
SY-MSGV3 = 'dunning_data_not_valid'.
ENDIF.
IF SY-SUBRC EQ 21.
SY-MSGV3 = 'knb1_reference_invalid'.
ENDIF.
IF SY-SUBRC EQ 22.
SY-MSGV3 = 'cam_error '.
ENDIF.
IF SY-SUBRC EQ 23.
SY-MSGV3 = 'OTHERS'.
ENDIF.

FP_RC = SY-SUBRC.

* muestra mensaje de error
WRITE: / 'Error en Cliente'(074), GO_STCD1, '. Error'(075),
SY-MSGID, SY-MSGNO, SY-MSGV1(20), SY-MSGV3(30), SY-MSGV4.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'
IMPORTING
RETURN = GT_RETURN.
SELECT SINGLE *
FROM KNBW
WHERE BUKRS = GS_EXCELTABLINE-BUKRS AND
KUNNR = GC_KUNNR.
IF SY-SUBRC <> 0.
LOOP AT GTI_XKNBW.
GTI_XKNBW-KUNNR = GC_KUNNR.
MODIFY GTI_XKNBW.
ENDLOOP.
CALL FUNCTION 'FI_WT_CUSTOMER_UPDATE'
TABLES
T_XKNBW = GTI_XKNBW
T_YKNBW = GTI_YKNBW.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'
IMPORTING
RETURN = GT_RETURN.
ENDIF.
*//consulta de cliente por nit, confirmación de existencia.
IF NOT GO_STCD1 IS INITIAL.
SELECT SINGLE KUNNR
INTO GC_KUNNR
FROM KNA1
WHERE STCD1 = GO_STCD1.

IF SY-SUBRC = 0.
* //llamado de grabación para campos especiales.
PERFORM ACTUALIZA_SUSTOMER.

* //limpiamos las variables de cliente.
CLEAR: GC_KUNNR, GO_STCD1.
ENDIF.
ENDIF.

ENDIF.

* verifica si hubo mensajes de error en la verificacion
LOOP AT GT_RETURN WHERE TYPE EQ 'E' OR TYPE EQ 'A'.
WRITE: / GT_RETURN-TYPE, GT_RETURN-MESSAGE.
ENDLOOP.

ENDFORM. " RUN_BAPI





gracias a todo aquel o aquella que me pueda ayudar.

saludos.
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Reglas de Mensajes
no puedes crear nuevos temas
no puedes responder temas
no puedes adjuntar archivos
no puedes editar tus mensajes

El código vB está On
Las caritas están On
Código [IMG] está On
Código HTML está Off
Saltar a Foro


Husos Horarios son GMT. La hora en este momento es 09:38:27.


www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web