#1
|
||||
|
||||
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. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|