
FUNCTIONext_bpvk.*"----------------------------------------------------------------------*"*......
FUNCTIONext_bpvk.
*"----------------------------------------------------------------------
*"*"本地接口:
*"IMPORTING
*"VALUE(IV_KUNNR)TYPEKUNNROPTIONAL
*"----------------------------------------------------------------------
DATA:gt_partnerguid_listTYPEbu_partner_guid_t,
gs_partnerguid_listLIKELINEOFgt_partnerguid_list.
DATA:gt_customer_listTYPEcvis_cust_link_t,
gs_customer_listTYPEcvi_cust_link.
DATA:gs_dataTYPEcvis_ei_extern,
gt_dataTYPEcvis_ei_extern_t,
gt_returnTYPEbapiretm,
gs_returnTYPEbapireti,
gs_msgTYPEbapiretc.
DATA:gs_partnerTYPEbus_ei_extern,
gs_customerTYPEcmds_ei_extern.
DATA:gs_headerTYPEcmds_ei_header,
gs_central_dataTYPEcmds_ei_central_data,
gs_company_dataTYPEcmds_ei_cmd_company,
gs_sales_dataTYPEcmds_ei_cmd_sales.
DATA:gt_rolesTYPEbus_ei_bupa_roles_t,
gs_rolesTYPEbus_ei_bupa_roles,
gt_ident_numbersTYPEbus_ei_bupa_identification_t,
gs_ident_numbersTYPEbus_ei_bupa_identification,
gt_addressesTYPEbus_ei_bupa_address_t,
gs_addressesTYPEbus_ei_bupa_address,
gt_phoneTYPEbus_ei_bupa_telephone_t,
gs_phoneTYPEbus_ei_bupa_telephone,
gt_faxTYPEbus_ei_bupa_fax_t,
gs_faxTYPEbus_ei_bupa_fax,
gt_smtpTYPEbus_ei_bupa_smtp_t,
gs_smtpTYPEbus_ei_bupa_smtp,
gs_remarksTYPEbus_ei_bupa_comrem,
gt_remarksTYPEbus_ei_bupa_comrem_t,
gt_companyTYPEcmds_ei_company_t,
gs_companyTYPEcmds_ei_company,
gt_salesTYPEcmds_ei_sales_t,
gs_salesTYPEcmds_ei_sales,
gt_functionsTYPEcmds_ei_functions_t,
gs_functionsTYPEcmds_ei_functions,
gs_centralTYPEcmds_ei_cmd_central,
gt_tax_indTYPEcmds_ei_tax_ind_t,
gs_tax_indTYPEcmds_ei_tax_ind.
CONSTANTS:abap_trueTYPEchar1VALUE'X'.
DATA:gv_bpartnerguidTYPEbu_partner_guid_bapi.
*DATA:GT_BUKRSLIKETABLEOFZSDT005_BUKRS,
*GS_BUKRSTYPEZSDT005_BUKRS,
*GT_VKORGLIKETABLEOFZSDT005_VKORG,
*GS_VKORGTYPEZSDT005_VKORG,
*GT_PATRNERLIKETABLEOFZSDT005_PATRNER,
*GS_PATRNERTYPEZSDT005_PATRNER.
DATA:io_facadeTYPEREFTOcl_ukm_facade,
io_partnerTYPEREFTOcl_ukm_business_partner,
io_bupa_factoryTYPEREFTOcl_ukm_bupa_factory,
io_accountTYPEREFTOcl_ukm_account,
lw_bp_credit_sgmTYPEukm_s_bp_cms_sgm.
DATA:lwa_ukm_s_bp_cmsTYPEukm_s_bp_cms.
DATA:lv_partnerTYPEbu_partner,
lv_credit_sgmntTYPEukm_credit_sgmnt.
DATA:c_returnTYPEukm_t_monitor_return.
DATA:lt_return_taxTYPETABLEOFbapiret2,
ls_return_taxTYPEbapiret2,
lv_taxnumxlTYPEbptaxnum.
DATA:ls_phoneTYPEbus_ei_bupa_telephone,
lt_phoneTYPETABLEOFbus_ei_bupa_telephone,
ls_smtpTYPEbus_ei_bupa_smtp,
lt_smtpTYPETABLEOFbus_ei_bupa_smtp.
DATA:gv_typeTYPEbapi_mtype,
gv_msgTYPEbapi_msg.
DATA:BEGINOFgt_mesgOCCURS0,
kunnrTYPEkunnr,
ztypeTYPEc,
mesgTYPEstring,
ENDOFgt_mesg.
SELECTk~kunnr,k~vkorg,b~partner_guid
FROMknvvASkLEFTJOINbut000ASbONk~kunnr=b~partner
whereb~bu_groupeq'ZC10'
INTOTABLE@DATA(lt_knvv).
IFiv_kunnrISNOTINITIAL.
CALLFUNCTION'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input=iv_kunnr
IMPORTING
output=iv_kunnr.
DELETElt_knvvWHEREkunnriv_kunnr.
ENDIF.
"需要删除的客户,已经有2601销售组织数据不需要添加,纸业的即02结尾的不需要添加
SELECTkunnr
FROMknvv
INTOTABLE@DATA(lt_kunnr_dele)
WHEREvkorg='2601'
ORvkorg='1202'
ORvkorg='2002'
ORvkorg='2202'.
LOOPATlt_kunnr_deleINTODATA(ls_kunnr_dele).
DELETElt_knvvWHEREkunnr=ls_kunnr_dele-kunnr.
ENDLOOP.
"去重,防止重复添加2601数据
DELETEADJACENTDUPLICATESFROMlt_knvvCOMPARINGkunnr.
****销售数据****************************************************
LOOPATlt_knvvINTODATA(ls_knvv).
CLEAR:gv_bpartnerguid,
gt_partnerguid_list,
gs_partnerguid_list,
gt_customer_list,
gs_customer_list,
gs_data,
gt_data,
gt_return,
gs_return,
gs_msg,
gs_partner,
gs_customer,
gs_header,
gs_central_data,
gs_company_data,
gs_sales_data,
gt_roles,
gs_roles,
gt_ident_numbers,
gs_ident_numbers,
gt_addresses,
gs_addresses,
gt_phone,
gs_phone,
gt_fax,
gs_fax,
gt_smtp,
gs_smtp,
gs_remarks,
gt_remarks,
gt_company,
gs_company,
gt_sales,
gs_sales,
gt_functions,
gs_functions,
gs_central,
gt_tax_ind,
gs_tax_ind,
ls_phone,
lt_phone,
ls_smtp,
lt_smtp,
gv_msg,
gv_type.
gs_partner-header-object_task='M'."I插入U更新M修改D删除C当前状态
gs_partner-header-object_instance-bpartnerguid=ls_knvv-partner_guid."唯一标识
"销项税,没有中国就创建
SELECTCOUNT(*)FROMknviWHEREkunnr=ls_knvv-kunnrANDaland='CN'.
IFsy-subrc0.
gs_tax_ind-task='I'.
gs_tax_ind-data_key-aland='CN'.
gs_tax_ind-data_key-tatyp='MWST'.
gs_tax_ind-data-taxkd='1'."客户税分类:必须上税
gs_tax_ind-datax-taxkd=abap_true.
APPENDgs_tax_indTOgt_tax_ind.
gs_customer-central_data-tax_ind-tax_ind=gt_tax_ind.
ENDIF.
gs_sales-task='I'.
"订单部分
gs_sales-data_key-vkorg='2601'."销售组织
gs_sales-data_key-vtweg='00'."分销渠道
gs_sales-data_key-spart='00'."产品组
gs_sales-data-vkbur='2601'."销售部门
gs_sales-data-bzirk='CN-S'."销售地区
"GS_SALES-DATA-KONDA=''."销客户价格组
gs_sales-data-kdgrp='EA'."客户组
gs_sales-data-vkgrp='S01'."销售组
gs_sales-data-waers='CNY'."货币
gs_sales-data-kalks='3'."用于定价过程确定的客户分类
"装运部分
gs_sales-data-lprio='1'."交货优先权
gs_sales-data-kzazu='X'."订单组合
gs_sales-data-vwerk='2601'."交货工厂
gs_sales-data-vsbed='01'."装运条件
"开票部分
gs_sales-data-inco1='LD'."国际贸易条款(第1部分)
gs_sales-data-inco2_l='CN'."国际贸易条款位置1
gs_sales-data-zterm='AM60'."付款条款
gs_sales-data-ktgrd='01'."客户科目分配组
"附加数据
gs_sales-data-kvgr1='EP0'."客户贸易类型
gs_sales-data-kvgr2='OEM'."生产型企业分类
gs_sales-data-kvgr3='FPA'."客户组3
gs_sales-data-kvgr4='N'."外箱条形码打印
gs_sales-data-kvgr5='N'."内箱条形码打印
gs_sales-datax-vkbur=abap_true.
gs_sales-datax-bzirk=abap_true.
gs_sales-datax-kdgrp=abap_true.
gs_sales-datax-vkgrp=abap_true.
gs_sales-datax-waers=abap_true.
gs_sales-datax-kalks=abap_true.
gs_sales-datax-lprio=abap_true.
gs_sales-datax-kzazu=abap_true.
gs_sales-datax-vwerk=abap_true.
gs_sales-datax-vsbed=abap_true.
gs_sales-datax-inco1=abap_true.
gs_sales-datax-inco2_l=abap_true.
gs_sales-datax-zterm=abap_true.
gs_sales-datax-ktgrd=abap_true.
gs_sales-datax-kvgr1=abap_true.
gs_sales-datax-kvgr2=abap_true.
gs_sales-datax-kvgr3=abap_true.
gs_sales-datax-kvgr4=abap_true.
gs_sales-datax-kvgr5=abap_true.
*FUNCTION伙伴功能(如果不添加,会导致销售视图无法维护成功,从而使公司代码视图也无法成功维护)
"销售四方
gs_functions-task='I'."售达方
gs_functions-data_key-parvw='AG'.
gs_functions-data_key-parza='000'.
APPENDgs_functionsTOgt_functions.
CLEARgs_functions.
gs_functions-task='I'."收票方
gs_functions-data_key-parvw='RE'.
gs_functions-data_key-parza='000'.
APPENDgs_functionsTOgt_functions.
CLEARgs_functions.
gs_functions-task='I'."付款方
gs_functions-data_key-parvw='RG'.
gs_functions-data_key-parza='000'.
APPENDgs_functionsTOgt_functions.
CLEARgs_functions.
gs_functions-task='I'."送达方
gs_functions-data_key-parvw='WE'.
gs_functions-data_key-parza='000'.
APPENDgs_functionsTOgt_functions.
CLEARgs_functions.
gs_functions-task='I'."销售员
gs_functions-data_key-parvw='Z1'.
gs_functions-data_key-parza='000'.
SELECTSINGLElifnrFROMknvp
INTOgs_functions-data-partner
WHEREkunnr=ls_knvv-kunnr
ANDparvw='Z1'.
IFsy-subrc=0.
gs_functions-datax-partner='X'.
APPENDgs_functionsTOgt_functions.
CLEARgs_functions.
ENDIF.
gs_functions-task='I'."CS
gs_functions-data_key-parvw='Z3'.
gs_functions-data_key-parza='000'.
SELECTSINGLElifnrFROMknvp
INTOgs_functions-data-partner
WHEREkunnr=ls_knvv-kunnr
ANDparvw='Z3'.
IFsy-subrc=0.
gs_functions-datax-partner='X'.
APPENDgs_functionsTOgt_functions.
CLEARgs_functions.
ENDIF.
gs_sales-functions-functions=gt_functions.
APPENDgs_salesTOgt_sales.
gs_sales_data-sales=gt_sales.
gs_header-object_task='U'.
gs_customer-header=gs_header.
gs_customer-sales_data=gs_sales_data.
gs_data-partner=gs_partner.
gs_data-customer=gs_customer.
APPENDgs_dataTOgt_data.
"调用bapi创建
CALLFUNCTION'CVI_EI_INBOUND_MAIN'
EXPORTING
i_data=gt_data
IMPORTING
e_return=gt_return.
LOOPATgt_returnINTOgs_return.
LOOPATgs_return-object_msgINTODATA(gs_object_msg)WHEREtypeCA'EA'.
IFgv_msgISINITIAL.
gv_msg=gs_object_msg-message.
ELSE.
CONCATENATEgv_msg'/'gs_object_msg-messageINTOgv_msg.
ENDIF.
ENDLOOP.
IFsy-subrc=0.
"回滚BAPI
CALLFUNCTION'BAPI_TRANSACTION_ROLLBACK'."回滚BAPI
gv_type='E'.
ENDIF.
ENDLOOP.
gt_mesg-ztype=gv_type.
gt_mesg-mesg=gv_msg.
IFgv_type'E'.
"提交BAPI
CALLFUNCTION'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait='X'.
gt_mesg-mesg='修改成功'.
ENDIF.
gt_mesg-kunnr=ls_knvv-kunnr.
APPENDgt_mesg.
ENDLOOP.
*LOOPATGT_MESGWHEREZTYPE='E'.
*WRITE:GT_MESG-KUNNR,GT_MESG-MESG,/.
*ENDLOOP.
ENDFUNCTION.