SAP S4 BP创建、修改客户信息

&---------------------------------------------------------------------
*& Report Y_TEST
&---------------------------------------------------------------------
*&
&---------------------------------------------------------------------
&---------------------------------------------------------------------
*& Report Y_TEST
&---------------------------------------------------------------------
*&
&---------------------------------------------------------------------
REPORT y_test02.

TABLES:sscrfields.

*–>ALV Define
DATA: gt_fieldcat TYPE lvc_t_fcat ."字段属性得定义
DATA: gs_fieldcat TYPE lvc_s_fcat ."字段属性定义
DATA: gs_layout TYPE lvc_s_layo ."layout 格式定义

CONSTANTS:c_green LIKE dv70a-statusicon VALUE ‘@08@’,
c_yellow LIKE dv70a-statusicon VALUE ‘@09@’,
c_red LIKE dv70a-statusicon VALUE ‘@0A@’.

*工具栏上排除的按钮
DATA:gt_exclude TYPE ui_functions.

*–>Other Define.
DATA:ok_code LIKE sy-ucomm.
DATA:functxt TYPE smp_dyntxt.
DATA:g_file TYPE sapb-sappfad.
DATA:gv_error TYPE c.

*–>内表定义
DATA : BEGIN OF gs_upload,
kunnr TYPE kunnr, "客户编号
name1 TYPE name1, "名称1(必输)
name2 TYPE name2, "名称2
sort1 TYPE ad_sort1, "搜索条件1(必输)
sort2 TYPE ad_sort2, "搜索条件2(必输)
street TYPE ad_street, “街道(送货地址)(必输)”
land1 TYPE land1, "国家(必输)
region TYPE regio, "地区
pstlz TYPE pstlz, "邮政编码
langu TYPE spras, "语言(必输)
telf1 TYPE telf1, "电话号码(必输)
telf2 TYPE telf2, "移动电话
fax_number TYPE ad_fxnmbr1, "传真
taxnumxl TYPE bptaxnumxl, "增值税登记号
banks TYPE banks, "银行国家
bankl TYPE bankl, "银行描述
bankn TYPE bankk, "银行账户
bkref TYPE bkref, "参考明细
vkorg TYPE vkorg, "销售组织(必输)
vtweg TYPE vtweg, "分销渠道(必输)
spart TYPE spart, "产品组(必输)
rltyp TYPE char12, "BP Role(必输)
bu_group TYPE bu_group, "分组(必输)
bzirk TYPE bzirk, "销售区域(必输)
vkbur TYPE vkbur, "销售办公室(必输)
vkgrp TYPE vkgrp, "销售小组(必输)
user1 TYPE char12, "员工编号1(必输)
user2 TYPE char12, "员工编号2
waers TYPE waers, "币别(必输)
kurst TYPE knvv-kurst, "汇率类型(必输)
inco1 TYPE inco1, "国际贸易条款(必输)
inco2_l TYPE inco2_l, "国际贸易条款位置 1(必输)
zterm TYPE dzterm, "付款条件(必输)
ktgrd TYPE knvv-ktgrd, "科目指派群(必输)
taxkd1 TYPE takld, "客户税分类-CN(必输)
pltyp TYPE pltyp, "价格清单(必输)
bukrs TYPE bukrs, "公司代码(必输)
akont TYPE akont, "统驭科目(必输)
zterm2 TYPE dzterm, "付款条件(必输)
konda TYPE konda, "价格组
ktokd TYPE ktokd, "账户组
vsbed TYPE vsbed, "装运条件
vwerk TYPE vwerk, "工厂
city1 TYPE ad_city1, "城市
partner TYPE ad_city1, "城市

  •     str_suppl1 TYPE ad_strspp1,   "街道2
    
  •     str_suppl2 TYPE ad_strspp2,   "街道3
    
  •     str_suppl3 TYPE ad_strspp3,   "街道4
    
  •     location   TYPE ad_lctn,      "街道5
    
       "辅助字段
       sel,
       deng       TYPE char4,
       message    TYPE char40,
    
     END OF gs_upload.
    

DATA : gt_upload LIKE TABLE OF gs_upload.

  •    gs_upload LIKE gs_upload.
    

*–>SELECTION-SCREEN
SELECTION-SCREEN BEGIN OF BLOCK blc_001 WITH FRAME TITLE TEXT-001.
PARAMETERS : p_file LIKE rlgrap-filename MODIF ID r1.
SELECTION-SCREEN END OF BLOCK blc_001.
SELECTION-SCREEN: FUNCTION KEY 1.

INITIALIZATION.

PERFORM frm_sub_button. "模板按钮

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file. "data declaration must be front of this statement

PERFORM select_file.

AT SELECTION-SCREEN.

PERFORM frm_download_mod."选择屏幕按钮

START-OF-SELECTION.

PERFORM frm_upload_data. "导入数据

PERFORM frm_check_data. "检查必输数据

PERFORM frm_alv_output. "ALV输出
&---------------------------------------------------------------------
*& Form frm_sub_button
&---------------------------------------------------------------------
*& text
&---------------------------------------------------------------------
*& --> p1 text
*& <-- p2 text
&---------------------------------------------------------------------
FORM frm_sub_button .

CLEAR functxt.
functxt-icon_id = icon_export."icon_view_form
functxt-icon_text = ‘下载批导模板’.
sscrfields-functxt_01 = functxt.

ENDFORM.
&---------------------------------------------------------------------
*& Form select_file
&---------------------------------------------------------------------
*& text
&---------------------------------------------------------------------
*& --> p1 text
*& <-- p2 text
&---------------------------------------------------------------------
FORM select_file .

CALL FUNCTION ‘WS_FILENAME_GET’
EXPORTING
def_path = ‘’
mask = ‘,.,..’(101)
title = ‘Select File’(100)
IMPORTING
filename = p_file
EXCEPTIONS
inv_winsys = 1
no_batch = 2
selection_cancel = 3
selection_error = 4
OTHERS = 5.

ENDFORM.
&---------------------------------------------------------------------
*& Form frm_upload_data
&---------------------------------------------------------------------
*& text
&---------------------------------------------------------------------
*& --> p1 text
*& <-- p2 text
&---------------------------------------------------------------------
FORM frm_upload_data .

DATA: lt_excel TYPE TABLE OF alsmex_tabline WITH HEADER LINE.
FIELD-SYMBOLS: <fs_val>.

CALL FUNCTION ‘ALSM_EXCEL_TO_INTERNAL_TABLE’
EXPORTING
filename = p_file
i_begin_col = ‘1’ "从第一列开始
i_begin_row = ‘4’ "从第四行开始
i_end_col = ‘50’
i_end_row = ‘50000’
TABLES
intern = lt_excel
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.

LOOP AT lt_excel.
CONDENSE lt_excel-value.
ASSIGN COMPONENT lt_excel-col OF STRUCTURE gs_upload TO <fs_val>.
<fs_val> = lt_excel-value.
AT END OF row.
APPEND gs_upload TO gt_upload.
CLEAR gs_upload.
ENDAT.
ENDLOOP.

ENDFORM.
&---------------------------------------------------------------------
*& Form frm_check_data
&---------------------------------------------------------------------
*& text
&---------------------------------------------------------------------
*& --> p1 text
*& <-- p2 text
&---------------------------------------------------------------------
FORM frm_check_data .

  • LOOP AT gt_upload ASSIGNING FIELD-SYMBOL(<fs_upload>).
  • "必输检查
  • IF <fs_upload>-name1 IS INITIAL
  • OR <fs_upload>-sort1 IS INITIAL
    
  • OR <fs_upload>-street IS INITIAL
    
  • OR <fs_upload>-land1 IS INITIAL
    
  • OR <fs_upload>-langu IS INITIAL
    
  • OR <fs_upload>-pstlz IS INITIAL
    
  • OR <fs_upload>-telf1 IS INITIAL
    
  • OR <fs_upload>-vkorg IS INITIAL
    
  • OR <fs_upload>-vtweg IS INITIAL
    
  • OR <fs_upload>-spart IS INITIAL
    

** OR <fs_upload>-bu_group IS INITIAL
** OR <fs_upload>-bzirk IS INITIAL

  • OR <fs_upload>-vkbur IS INITIAL
    
  • OR <fs_upload>-vkgrp IS INITIAL
    
  • OR <fs_upload>-waers IS INITIAL
    
  • OR <fs_upload>-kurst IS INITIAL      "汇率类型
    

** OR <fs_upload>-inco1 IS INITIAL
** OR <fs_upload>-inco2_l IS INITIAL

  • OR <fs_upload>-zterm IS INITIAL
    
  • OR <fs_upload>-ktgrd IS INITIAL     "科目指派群
    
  • OR <fs_upload>-taxkd1 IS INITIAL
    
  • OR <fs_upload>-pltyp IS INITIAL
    
  • OR <fs_upload>-bukrs IS INITIAL
    
  • OR <fs_upload>-akont IS INITIAL
    
  • OR <fs_upload>-user1 IS INITIAL
    
  • OR <fs_upload>-user2 IS INITIAL
    
  • OR <fs_upload>-zterm IS INITIAL.
    
  •  <fs_upload>-deng = c_red.
    
  •  <fs_upload>-message = '存在必输字段未给值,请检查导入模板!'.
    
  •  gv_error = 'X'.
    
  • ELSE.
  •  <fs_upload>-sel  = 'X'.
    
  •  <fs_upload>-deng = c_yellow.
    
  •  IF <fs_upload>-bankl IS NOT INITIAL OR <fs_upload>-banks IS NOT INITIAL.
    
  •    SELECT COUNT(*) FROM bnka  WHERE bankl = <fs_upload>-bankl
    
  •                                 AND banks = <fs_upload>-banks.
    
  •    IF sy-subrc <> 0.
    
  •      <fs_upload>-deng = c_red.
    
  •      <fs_upload>-message = '银行信息在SAP不存在,请检查模板!'.
    
  •    ENDIF.
    
  •  ENDIF.
    
  • ENDIF.
  • ENDLOOP.

ENDFORM.
&---------------------------------------------------------------------
*& Form frm_alv_output
&---------------------------------------------------------------------
*& text
&---------------------------------------------------------------------
*& --> p1 text
*& <-- p2 text
&---------------------------------------------------------------------
FORM frm_alv_output .

PERFORM fill_fieldcat. "字段属性定义

PERFORM fill_layout. "格式定义

PERFORM alv_display.

ENDFORM.
&---------------------------------------------------------------------
*& Form fill_fieldcat
&---------------------------------------------------------------------
*& text
&---------------------------------------------------------------------
*& --> p1 text
*& <-- p2 text
&---------------------------------------------------------------------
FORM fill_fieldcat .

DEFINE add_fieldcat.

CLEAR gs_fieldcat.
gs_fieldcat-fieldname    =  &1.
gs_fieldcat-reptext      =  &2.
gs_fieldcat-edit         =  &3.
gs_fieldcat-col_pos      =  &4.
gs_fieldcat-just         =  &5.
gs_fieldcat-outputlen    =  &6.
gs_fieldcat-fix_column   =  &7.

CASE &1 .
    WHEN 'SEL'.
      gs_fieldcat-checkbox = 'X'.
ENDCASE.

APPEND gs_fieldcat TO gt_fieldcat.

END-OF-DEFINITION.

CLEAR gt_fieldcat.
REFRESH gt_fieldcat.

add_fieldcat ‘SEL’ ‘选择’ ‘X’ ‘’ ‘’ ‘’ ‘’.
add_fieldcat ‘DENG’ ‘状态’ ‘’ ‘’ ‘’ ‘’ ‘’.
add_fieldcat ‘MESSAGE’ ‘消息’ ‘’ ‘’ ‘’ ‘’ ‘’.
add_fieldcat ‘KUNNR’ ‘客户编号’ ‘’ ‘’ ‘’ ‘’ ‘’.
add_fieldcat ‘NAME1’ ‘名称1’ ‘’ ‘’ ‘’ ‘’ ‘’.
add_fieldcat ‘NAME2’ ‘名称2’ ‘’ ‘’ ‘’ ‘’ ‘’.
add_fieldcat ‘SORT1’ ‘搜索条件1’ ‘’ ‘’ ‘’ ‘’ ‘’.
add_fieldcat ‘SORT2’ ‘搜索条件2’ ‘’ ‘’ ‘’ ‘’ ‘’.
add_fieldcat ‘STREET’ ‘街道(送货地址)’ ‘’ ‘’ ‘’ ‘’ ‘’.
add_fieldcat ‘LAND1’ ‘国家’ ‘’ ‘’ ‘’ ‘’ ‘’.
add_fieldcat ‘REGION’ ‘地区’ ‘’ ‘’ ‘’ ‘’ ‘’.
add_fieldcat ‘PSTLZ’ ‘邮政编码’ ‘’ ‘’ ‘’ ‘’ ‘’.
add_fieldcat ‘LANGU’ ‘语言’ ‘’ ‘’ ‘’ ‘’ ‘’.
add_fieldcat ‘TELF1’ ‘电话号码’ ‘’ ‘’ ‘’ ‘’ ‘’.
add_fieldcat ‘TELF2’ ‘移动电话’ ‘’ ‘’ ‘’ ‘’ ‘’.
add_fieldcat ‘FAX_NUMBER’ ‘传真’ ‘’ ‘’ ‘’ ‘’ ‘’.
add_fieldcat ‘TAXNUMXL’ ‘增值税登记号’ ‘’ ‘’ ‘’ ‘’ ‘’.
add_fieldcat ‘BANKS’ ‘银行国家’ ‘’ ‘’ ‘’ ‘’ ‘’.
add_fieldcat ‘BANKL’ ‘银行描述’ ‘’ ‘’ ‘’ ‘’ ‘’.
add_fieldcat ‘BANKN’ ‘银行账户’ ‘’ ‘’ ‘’ ‘’ ‘’.
add_fieldcat ‘BKREF’ ‘参考明细’ ‘’ ‘’ ‘’ ‘’ ‘’.
add_fieldcat ‘VKORG’ ‘销售组织’ ‘’ ‘’ ‘’ ‘’ ‘’.
add_fieldcat ‘VTWEG’ ‘分销渠道’ ‘’ ‘’ ‘’ ‘’ ‘’.
add_fieldcat ‘SPART’ ‘产品组’ ‘’ ‘’ ‘’ ‘’ ‘’.
add_fieldcat ‘RLTYP’ ‘BP角色’ ‘’ ‘’ ‘’ ‘’ ‘’.
add_fieldcat ‘BU_GROUP’ ‘分组’ ‘’ ‘’ ‘’ ‘’ ‘’.
add_fieldcat ‘BZIRK’ ‘销售区域’ ‘’ ‘’ ‘’ ‘’ ‘’.
add_fieldcat ‘VKBUR’ ‘销售办公室’ ‘’ ‘’ ‘’ ‘’ ‘’.
add_fieldcat ‘VKGRP’ ‘销售小组’ ‘’ ‘’ ‘’ ‘’ ‘’.
add_fieldcat ‘USER1’ ‘员工编号1’ ‘’ ‘’ ‘’ ‘’ ‘’.
add_fieldcat ‘USER2’ ‘员工编号2’ ‘’ ‘’ ‘’ ‘’ ‘’.
add_fieldcat ‘WAERS’ ‘币别’ ‘’ ‘’ ‘’ ‘’ ‘’.
add_fieldcat ‘KURST’ ‘汇率类型’ ‘’ ‘’ ‘’ ‘’ ‘’.
add_fieldcat ‘INCO1’ ‘国际贸易条款’ ‘’ ‘’ ‘’ ‘’ ‘’.
add_fieldcat ‘INCO2_L’ '国际贸易条款位置 ’ ‘’ ‘’ ‘’ ‘’ ‘’.
add_fieldcat ‘ZTERM’ ‘付款条件’ ‘’ ‘’ ‘’ ‘’ ‘’.
add_fieldcat ‘KTGRD’ ‘科目指派群’ ‘’ ‘’ ‘’ ‘’ ‘’.
add_fieldcat ‘TAXKD1’ ‘客户税分类-CN’ ‘’ ‘’ ‘’ ‘’ ‘’.
add_fieldcat ‘PLTYP’ ‘价格清单’ ‘’ ‘’ ‘’ ‘’ ‘’.
add_fieldcat ‘BUKRS’ ‘公司代码’ ‘’ ‘’ ‘’ ‘’ ‘’.
add_fieldcat ‘AKONT’ ‘统驭科目’ ‘’ ‘’ ‘’ ‘’ ‘’.
add_fieldcat ‘ZTERM2’ ‘付款条件’ ‘’ ‘’ ‘’ ‘’ ‘’.
add_fieldcat ‘KONDA’ ‘价格组’ ‘’ ‘’ ‘’ ‘’ ‘’.

add_fieldcat ‘STR_SUPPL1’ ‘街道2’ ‘’ ‘’ ‘’ ‘’ ‘’.
add_fieldcat ‘STR_SUPPL2’ ‘街道3’ ‘’ ‘’ ‘’ ‘’ ‘’.
add_fieldcat ‘STR_SUPPL3’ ‘街道4’ ‘’ ‘’ ‘’ ‘’ ‘’.
add_fieldcat ‘LOCATION’ ‘街道5’ ‘’ ‘’ ‘’ ‘’ ‘’.

ENDFORM.
&---------------------------------------------------------------------
*& Form fill_layout
&---------------------------------------------------------------------
*& text
&---------------------------------------------------------------------
*& --> p1 text
*& <-- p2 text
&---------------------------------------------------------------------
FORM fill_layout .

  • 定义列自动宽度优化
    gs_layout-cwidth_opt = ‘X’.
    gs_layout-sel_mode = ‘A’.
  • gs_layout-no_rowmark = ‘X’.
  • 定义条纹显示
    gs_layout-zebra = ‘X’.

ENDFORM.
&---------------------------------------------------------------------
*& Form alv_display
&---------------------------------------------------------------------
*& text
&---------------------------------------------------------------------
*& --> p1 text
*& <-- p2 text
&---------------------------------------------------------------------
FORM alv_display .

CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY_LVC’
EXPORTING
i_callback_program = sy-repid
i_callback_pf_status_set = ‘STATUS’ "GUI状态
i_callback_user_command = ‘USER_COMMAND’ "按钮事件
is_layout_lvc = gs_layout
it_fieldcat_lvc = gt_fieldcat
TABLES
t_outtab = gt_upload
EXCEPTIONS
program_error = 1
OTHERS = 2.

IF sy-subrc <> 0.

  • Implement suitable error handling here
    MESSAGE ID sy-msgid TYPE ‘S’ NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 DISPLAY LIKE ‘E’.
    ENDIF.

ENDFORM.
FORM status USING rt_extab TYPE slis_t_extab.
SET PF-STATUS ‘STATUS’.
ENDFORM.
FORM user_command USING u_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.

DATA: lo_grid TYPE REF TO cl_gui_alv_grid,
lv_code LIKE sy-ucomm.
DATA: ls_stable TYPE lvc_s_stbl.

" 刷新alv屏幕数据
CALL FUNCTION ‘GET_GLOBALS_FROM_SLVC_FULLSCR’
IMPORTING
e_grid = lo_grid.

CALL METHOD lo_grid->check_changed_data.
CASE u_ucomm.
WHEN ‘&F03’ OR ‘&F12’ OR ‘&F15’.
LEAVE TO SCREEN 0.
WHEN ‘UPLOAD’.
PERFORM frm_process.
ENDCASE.
rs_selfield-refresh = ‘X’.
ENDFORM.
&---------------------------------------------------------------------
*& Form frm_process
&---------------------------------------------------------------------
*& text
&---------------------------------------------------------------------
*& --> p1 text
*& <-- p2 text
&---------------------------------------------------------------------
FORM frm_process .

CONSTANTS : c_parvw1 TYPE parvw VALUE ‘SP’, "售达方
c_parvw2 TYPE parvw VALUE ‘BP’, "收票方
c_parvw3 TYPE parvw VALUE ‘PY’, "付款方
c_parvw4 TYPE parvw VALUE ‘SH’, "送达方
c_parvw5 TYPE parvw VALUE ‘VM’, "业务员
c_parvw6 TYPE parvw VALUE ‘VN’. "业务助理

DATA: lt_return_map TYPE mdg_bs_bp_msgmap_t.
DATA: ls_return_map TYPE mdg_bs_bp_msgmap.
DATA: ls_message_map TYPE mdg_bs_bp_msgmap_key.
DATA: lt_data TYPE cvis_ei_extern_t,
lt_return TYPE bapiretm,
ls_return TYPE bapireti,
ls_retmsg TYPE LINE OF bapiretct,
lv_text TYPE string.
DATA: ls_data LIKE LINE OF lt_data,
ls_role TYPE bus_ei_bupa_roles,
ls_paadr TYPE bus_ei_bupa_address,
ls_company TYPE cmds_ei_company.
DATA: lv_guid TYPE guid_32,
lv_partner LIKE ls_data-partner-header-object_instance-bpartner.
DATA: ls_functions_st TYPE cmds_ei_functions,
ls_functions_t TYPE cmds_ei_functions_t,
ls_functions TYPE cmds_ei_cmd_functions,
ls_sales_data_st TYPE cmds_ei_sales,
ls_sales_data TYPE cmds_ei_cmd_sales.
DATA: ls_phone TYPE bus_ei_bupa_telephone.
DATA: lt_phone TYPE bus_ei_bupa_telephone_t.
DATA: ls_fax TYPE bus_ei_bupa_fax.
DATA: lt_fax TYPE bus_ei_bupa_fax_t.
DATA: ls_mail TYPE bus_ei_bupa_smtp.
DATA: lt_mail TYPE bus_ei_bupa_smtp_t.
DATA: ls_tax TYPE cmds_ei_tax_ind.
DATA: lt_tax TYPE cmds_ei_tax_ind_t.
DATA: ls_segments TYPE cvis_ei_extern.
DATA: ls_profile TYPE cvis_ei_extern.

DATA: lt_bu_fax TYPE bus_ei_bupa_taxnumber_t,
ls_bu_fax TYPE LINE OF bus_ei_bupa_taxnumber_t.

DATA: l_bu_id TYPE bu_partner_guid.

LOOP AT gt_upload INTO gs_upload WHERE kunnr IS INITIAL .
CLEAR: lt_return_map,
ls_return_map,
ls_message_map,
lt_data,
lt_return,
ls_return,
ls_retmsg,
lv_text,
ls_data,
ls_role,
ls_paadr,
ls_company,
lv_guid,
lv_partner,
ls_functions_st,
ls_functions_t,
ls_functions,
ls_sales_data_st,
ls_sales_data,
ls_phone,
lt_phone,
ls_fax,
lt_fax,
ls_mail,
lt_mail,
ls_tax,
lt_tax,
ls_segments,
ls_profile.
*

  • CALL METHOD cl_system_uuid=>if_system_uuid_static~create_uuid_c32

  •  RECEIVING
    
  •    uuid = lv_guid.
    

    SELECT SINGLE partner_guid
    INTO l_bu_id FROM but000
    WHERE partner = gs_upload-partner.

  • Create customer
    ls_data-partner-header-object_task = ‘U’.
    ls_data-partner-header-object_instance-bpartner = gs_upload-partner."业务伙伴编码
    ls_data-partner-header-object_instance-bpartnerguid = l_bu_id.

— Partner / Central data / common ------------------------------

  • ls_data-partner-central_data-common-data-bp_control-category = ‘2’. "3group "2 Organization
  • ls_data-partner-central_data-common-data-bp_control-grouping = gs_upload-bu_group. "Grouping
    ls_data-partner-central_data-common-data-bp_centraldata-title_key = ‘0003’. "tittle
ls_data-partner-central_data-common-data-bp_organization-name1      = gs_upload-name1.       "名称1
ls_data-partner-central_data-common-data-bp_organization-name2      = gs_upload-name2.       "名称2
ls_data-partner-central_data-common-data-bp_centraldata-searchterm1 = gs_upload-sort1.       "搜索项1. "Search term 1 for business partner
ls_data-partner-central_data-common-data-bp_centraldata-searchterm2 = gs_upload-sort2. "Search term 2 for business partner

ls_data-partner-central_data-common-datax-bp_centraldata-title_key   = abap_true.
ls_data-partner-central_data-common-datax-bp_centraldata-searchterm1 = abap_true.
ls_data-partner-central_data-common-datax-bp_centraldata-searchterm2 = abap_true.

ls_data-partner-central_data-common-datax-bp_organization-name1 = abap_true.
ls_data-partner-central_data-common-datax-bp_organization-name2 = abap_true.

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""地址信息报错、暂时去掉

*— Partner / Central data / Address -----------------------------
ls_paadr-task = ‘2’.

  • ls_paadr-data_key-guid = l_bu_id.

  • ls_paadr-data_key-operation = ‘XXDFLT’.

  • ls_paadr-data-postal-data-str_suppl3 = gs_customer-unit.
    ls_paadr-data-postal-data-city = gs_upload-city1.

  • ls_paadr-data-postal-data-house_no = gs_customer-house_num1.
    ls_paadr-data-postal-data-postl_cod1 = gs_upload-pstlz. "邮政编码
    ls_paadr-data-postal-data-street = gs_upload-street. "开票街道
    ls_paadr-data-postal-data-country = gs_upload-land1. "国家代码
    ls_paadr-data-postal-data-region = gs_upload-region. "地区代码

  • ls_paadr-data-postal-data-time_zone = gs_customer-time_zone.
    ls_paadr-data-postal-data-langu = gs_upload-langu. "语言

  • ls_paadr-data-postal-datax-str_suppl3 = abap_true.
    ls_paadr-data-postal-datax-city = abap_true.

  • ls_paadr-data-postal-datax-house_no = abap_true.
    ls_paadr-data-postal-datax-postl_cod1 = abap_true.
    ls_paadr-data-postal-datax-street = abap_true.
    ls_paadr-data-postal-datax-country = abap_true.
    ls_paadr-data-postal-datax-region = abap_true.

  • ls_paadr-data-postal-datax-time_zone = abap_true.
    ls_paadr-data-postal-datax-langu = abap_true.

    ls_paadr-currently_valid = abap_true.

    " Communication

    IF gs_upload-telf1 IS NOT INITIAL .
    *第一个电话
    ls_phone-contact-task = ‘2’.
    ls_phone-contact-data-country = ‘CN’.
    ls_phone-contact-data-telephone = gs_upload-telf1. "电话
    ls_phone-contact-datax-country = ‘X’.
    ls_phone-contact-datax-telephone = ‘X’.
    APPEND ls_phone TO lt_phone.
    ls_paadr-data-communication-phone-phone = lt_phone.
    ENDIF.
    APPEND ls_paadr TO ls_data-partner-central_data-address-addresses.

    “”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”"地址信息报错、暂时去掉

** IF gs_upload-fax_number IS NOT INITIAL .
***传真
** ls_fax-contact-task = ‘I’.
** ls_fax-contact-data-country = gs_customer-land1.
** ls_fax-contact-data-fax = gs_customer-fax_number.
** ls_fax-contact-datax-country = ‘X’.
** ls_fax-contact-datax-fax = ‘X’.
** APPEND ls_fax TO lt_fax.
** ls_paadr-data-communication-fax-fax = lt_fax.
** ENDIF.
** IF gs_customer-smtp_addr IS NOT INITIAL .
****电子邮件
** ls_mail-contact-task = ‘I’.
** ls_mail-contact-data-e_mail = gs_customer-smtp_addr.
** ls_mail-contact-datax-e_mail = ‘X’.
** APPEND ls_mail TO lt_mail.
** ls_paadr-data-communication-smtp-smtp = lt_mail.
** ENDIF.

***暂时去掉电话信息88

----------------- PARTNER / CENTRAL DATA / ROLE -----------------
-------------- Adding multiple roles for the BP------------------
-------------- Partner / Central data / role --------------------

  • ls_role-task = ‘I’.
  • ls_role-data_key = ‘ZFLCU1’.
    ** ls_role-data-rolecategory = ‘ZFLCU1’.
  • ls_role-data-valid_from = sy-datum.
  • ls_role-data-valid_to = ‘99991231’.
  • ls_role-currently_valid = abap_true.
  • ls_role-datax-valid_from = abap_true.
  • ls_role-datax-valid_to = abap_true.
  • APPEND ls_role TO ls_data-partner-central_data-role-roles.
  • ls_data-partner-central_data-role-current_state = abap_true.
    *------------- Partner / Central data / role ---------------------
  • ls_role-task = ‘I’.
  • ls_role-data_key = ‘ZFLCU0’.
    ** ls_role-data-rolecategory = ‘ZFLCU0’.
  • ls_role-data-valid_from = sy-datum.
  • ls_role-data-valid_to = ‘99991231’.
  • ls_role-currently_valid = abap_true.
  • ls_role-datax-valid_from = abap_true.
  • ls_role-datax-valid_to = abap_true.
  • APPEND ls_role TO ls_data-partner-central_data-role-roles.
  • ls_data-partner-central_data-role-current_state = abap_true.
    *Credit limit
    ----------------- Partner / UKMBP_DATA -----------------
    ** ls_role-task = ‘I’.
    ** ls_role-data_key = ‘UKM000’.
    ** ls_role-data-rolecategory = ‘UKM000’.
    ** ls_role-data-valid_from = sy-datum.
    ** ls_role-data-valid_to = ‘99991231’.
    ** ls_role-datax-valid_from = abap_true.
    ** ls_role-datax-valid_to = abap_true.
    ** APPEND ls_role TO ls_data-partner-central_data-role-roles.
    ** ls_profile-data-limit_rule = ‘B2B-NEW’.
    ** ls_profile-datax-limit_rule = abap_true.
    ** ls_data-partner-ukmbp_data-profile = ls_profile.
    ** ls_segments-task = ‘I’.
    *** ls_segments-data_key-partner = lv_partner.
    ** ls_segments-data_key-credit_sgmnt = gs_customer-ukm_credit_sgmnt.
    ** ls_segments-data-credit_limit = gs_customer-limit.
    ** ls_segments-data-limit_valid_date = gs_customer-datet.
    ** ls_segments-data-lim_val_date_req = gs_customer-datet.
    ** ls_segments-data-x_limit_zero = abap_true.
    ** ls_segments-datax-credit_limit = abap_true.
    ** ls_segments-datax-limit_valid_date = abap_true.
    ** ls_segments-datax-lim_val_date_req = abap_true.
    ** ls_segments-datax-x_limit_zero = abap_true.
    ** APPEND ls_segments TO ls_data-partner-ukmbp_data-segments-segments.

-------------- Customer / Header ---------------------------------
ls_data-customer-header-object_task = ‘U’.
ls_data-customer-header-object_instance = gs_upload-partner."业务伙伴编码.
** ls_data-ensure_create-create_customer = abap_true.

*--------------- Customer / Company data -------------------------
ls_company-task = ‘M’.
ls_company-data_key-bukrs = gs_upload-bukrs. " 公司代码. " company code
ls_company-data-zterm = gs_upload-zterm2. " 付款条件
CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_INPUT’
EXPORTING
input = gs_upload-akont
IMPORTING
output = ls_company-data-akont.
ls_company-datax-zterm = ‘X’.
ls_company-datax-akont = ‘X’.
APPEND ls_company TO ls_data-customer-company_data-company.
"TAX
IF gs_upload-taxkd1 IS NOT INITIAL .
ls_tax-task = ‘M’.
ls_tax-data_key-aland = ‘CN’.
ls_tax-data_key-tatyp = ‘MWST’ .
ls_tax-data-taxkd = gs_upload-taxkd1.
ls_tax-datax-taxkd = ‘X’.
APPEND ls_tax TO lt_tax.
ENDIF.

ls_data-customer-central_data-tax_ind-tax_ind = lt_tax.

**bu税号

  • ls_bu_fax-task = ‘I’.
  • ls_bu_fax-data_key-taxtype = ‘CN0’.
  • ls_bu_fax-data_key-taxnumber = gs_upload-taxnumxl.
  • ls_bu_fax-data_key-taxnumxl = gs_upload-taxnumxl.
  • APPEND ls_bu_fax TO lt_bu_fax.
  • ls_data-partner-central_data-taxnumber-taxnumbers = lt_bu_fax.
    ** IF gs_customer-taxkd1 IS NOT INITIAL .
    ** ls_tax-task = ‘I’.
    ** ls_tax-data_key-aland = ‘CA’.
    ** ls_tax-data_key-tatyp = ‘CTX2’.
    ** ls_tax-data-taxkd = ‘1’.
    ** ls_tax-datax-taxkd = gs_customer-taxkd1.
    ** APPEND ls_tax TO lt_tax.
    ** ENDIF.

** IF gs_customer-taxkd2 IS NOT INITIAL .
** ls_tax-task = ‘I’.
** ls_tax-data_key-aland = ‘CA’.
** ls_tax-data_key-tatyp = ‘CTX3’.
** ls_tax-data-taxkd = ‘1’.
** ls_tax-datax-taxkd = gs_customer-taxkd2.
** APPEND ls_tax TO lt_tax.
** ENDIF.
***暂时去掉电话信息88

*---------------SALES ORG AND DIST & DIVISION MANDATORY FIELDS-----

ls_sales_data_st-task = 'M'.
ls_sales_data_st-data_key-vkorg = gs_upload-vkorg. "销售组织
ls_sales_data_st-data_key-vtweg = gs_upload-vtweg. "分销渠道
ls_sales_data_st-data_key-spart = gs_upload-spart. "产品组

ls_sales_data_st-data-kalks   = '1'. "客户定价过程.
ls_sales_data_st-data-inco1   = gs_upload-inco1. "国际贸易条款

** ls_sales_data_st-data-incov = gs_customer-incov.
ls_sales_data_st-data-inco2_l = gs_upload-inco2_l. "国际贸易条款位置 1
ls_sales_data_st-data-vkbur = gs_upload-vkbur. "销售办公室
ls_sales_data_st-data-waers = gs_upload-waers. "货币
ls_sales_data_st-data-zterm = gs_upload-zterm. "付款条件
** ls_sales_data_st-data-lprio = gs_customer-lprio.

ls_sales_data_st-data-ktgrd   = gs_upload-ktgrd.  "科目群
ls_sales_data_st-data-vsbed   = gs_upload-vsbed. "装运
ls_sales_data_st-data-vwerk   = gs_upload-vwerk.   "发货工厂
ls_sales_data_st-data-bzirk   = gs_upload-bzirk.   "销售区域
ls_sales_data_st-data-konda   = gs_upload-konda.   "价格组taxkd


ls_sales_data_st-data-kzazu   = abap_true.
ls_sales_data_st-data-awahr   = '100'.



ls_sales_data_st-datax-kalks   = abap_true.
ls_sales_data_st-datax-inco1   = abap_true.

** ls_sales_data_st-datax-incov = abap_true.
ls_sales_data_st-datax-inco2_l = abap_true.
ls_sales_data_st-datax-vkbur = abap_true.
ls_sales_data_st-datax-waers = abap_true.
ls_sales_data_st-datax-zterm = abap_true.
** ls_sales_data_st-datax-lprio = abap_true.
ls_sales_data_st-datax-kzazu = abap_true.
ls_sales_data_st-datax-awahr = abap_true.

ls_sales_data_st-datax-ktgrd   = abap_true.
ls_sales_data_st-datax-vsbed   = abap_true.
ls_sales_data_st-datax-vwerk   = abap_true.
ls_sales_data_st-datax-bzirk   = abap_true.
ls_sales_data_st-datax-konda   = abap_true.

*------------------- Business Partner Details -------------------

ls_functions_st-data_key-parvw = 'AG'.
ls_functions_st-data-defpa = 'X'.
APPEND ls_functions_st TO ls_functions_t.

ls_functions_st-data_key-parvw = 'RE'.
ls_functions_st-data-defpa = 'X'.
APPEND ls_functions_st TO ls_functions_t.

ls_functions_st-data_key-parvw = 'RG'.
ls_functions_st-data-defpa = 'X'.
APPEND ls_functions_st TO ls_functions_t.

ls_functions_st-data_key-parvw = 'WE'.
ls_functions_st-data-defpa = 'X'.
APPEND ls_functions_st TO ls_functions_t.

ls_functions-functions = ls_functions_t.
ls_sales_data_st-functions = ls_functions.
ls_sales_data_st-functions-current_state = 'X'.

**
APPEND ls_sales_data_st TO ls_sales_data-sales.
**
APPEND ls_functions_st TO ls_functions-functions.
ls_data-customer-sales_data = ls_sales_data.

*--------------End of sales data---------------------------

*-----------Finally fill the main data structure-----------

APPEND ls_data TO lt_data.

*----------------validating BP data------------------------

CALL METHOD cl_md_bp_maintain=>validate_single
  EXPORTING
    i_data        = ls_data "lt_data
  •   i_data_db     =
    
  •   iv_suppress_taxjur_check = 'X'
    IMPORTING
      et_return_map = lt_return_map. "lt_return.
    

*------------------Creating BP ----------------------------
IF lt_return_map IS INITIAL.

  CALL METHOD cl_md_bp_maintain=>maintain
    EXPORTING
      i_data   = lt_data
  •     i_test_run =
      IMPORTING
        e_return = lt_return.
    

*------------------Commit BAPI ----------------------------
IF lt_return IS INITIAL.
CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT’.

  •    WHILE lv_partner IS INITIAL .
    
  •      SELECT SINGLE partner
    
  •        INTO lv_partner FROM but000
    
  •        WHERE partner_guid = '0050569029D91EEE8599CE0C57FE82B8'.
    
  •    ENDWHILE.
    
  •    IF lv_partner IS NOT INITIAL .
      gs_upload-message = '修改完成'.
      gs_upload-kunnr = lv_partner.
      gs_upload-deng = icon_green_light.
    
  •    ELSE.
    
  •      gs_upload-kunnr = lv_partner.
    
  •      gs_upload-deng = icon_red_light.
    
  •    ENDIF.
    
    
    ELSE.
      LOOP AT lt_return INTO ls_return.
        LOOP AT ls_return-object_msg INTO ls_retmsg.
          CLEAR: lv_text.
          CALL FUNCTION 'MESSAGE_TEXT_BUILD'
            EXPORTING
              msgid               = ls_retmsg-id
              msgnr               = ls_retmsg-number
              msgv1               = ls_retmsg-message_v1
              msgv2               = ls_retmsg-message_v2
              msgv3               = ls_retmsg-message_v3
              msgv4               = ls_retmsg-message_v4
            IMPORTING
              message_text_output = lv_text.
          CONCATENATE gs_upload-message lv_text INTO gs_upload-message.
        ENDLOOP.
      ENDLOOP.
      gs_upload-deng = icon_red_light.
    
    ENDIF.
    

    ELSE.

    LOOP AT lt_return_map INTO ls_return_map.
      CLEAR: lv_text.
      CALL FUNCTION 'MESSAGE_TEXT_BUILD'
        EXPORTING
          msgid               = ls_return_map-id
          msgnr               = ls_return_map-number
          msgv1               = ls_return_map-message_v1
          msgv2               = ls_return_map-message_v2
          msgv3               = ls_return_map-message_v3
          msgv4               = ls_return_map-message_v4
        IMPORTING
          message_text_output = lv_text.
      CONCATENATE gs_upload-message lv_text INTO gs_upload-message.
    ENDLOOP.
    gs_upload-deng = icon_red_light.
    

    ENDIF.

    MODIFY gt_upload FROM gs_upload.

    CLEAR: gs_upload,l_bu_id.
    ENDLOOP.

ENDFORM.
&---------------------------------------------------------------------
*& Form frm_download_mod
&---------------------------------------------------------------------
*& text
&---------------------------------------------------------------------
*& --> p1 text
*& <-- p2 text
&---------------------------------------------------------------------
FORM frm_download_mod .

DATA:l_temp TYPE c,
l_str TYPE string.

CASE sscrfields-ucomm.

WHEN 'FC01'.
  CLEAR:g_file,l_temp,l_str.
  "获取文件路径
  CONCATENATE '客户主数据导入模板-' sy-datum INTO l_str.
  l_temp = '1'.
  PERFORM frm_get_filepath USING l_str CHANGING g_file.
  "下载模板
  CHECK sy-subrc = 0 AND NOT g_file IS INITIAL.
  PERFORM frm_download_excel_fromserver USING g_file l_temp.

ENDCASE.

ENDFORM.
&---------------------------------------------------------------------
*& Form FRM_GET_FILEPATH
&---------------------------------------------------------------------

  •   text
    

----------------------------------------------------------------------

  •  <--P_G_FILE  text
    

----------------------------------------------------------------------
FORM frm_get_filepath USING p_l_str CHANGING p_file.

CALL FUNCTION ‘WS_FILENAME_GET’
EXPORTING
def_filename = p_l_str "
def_path = p_file
mask = ‘,.xls,.xls,.xlsx,.xlsx.’
mode = ‘S’
title = ‘保存路径’
IMPORTING
filename = p_file
EXCEPTIONS
inv_winsys = 1
no_batch = 2
selection_cancel = 3
selection_error = 4
OTHERS = 5.

ENDFORM. "FRM_GET_FILEPATH
&---------------------------------------------------------------------
*& Form FRM_DOWNLOAD_EXCEL_FROMSERVER
&---------------------------------------------------------------------

  •   text
    

----------------------------------------------------------------------

  •  -->P_L_TEMP  text
    
  •  -->P_P_FILE  text
    
  •  <--P_L_ERROR  text
    

----------------------------------------------------------------------
FORM frm_download_excel_fromserver USING p_file LIKE sapb-sappfad
p_temp.

DATA:l_temp TYPE wwwdatatab-objid,
lo_objdata LIKE wwwdatatab,
lo_mime LIKE w3mime,
ls_destination LIKE rlgrap-filename,
ls_objnam TYPE string,
li_rc LIKE sy-subrc,
ls_errtxt TYPE string,
l_error TYPE char255.

CLEAR:l_temp,l_error,lo_objdata,ls_objnam.

IF p_temp = ‘1’.
l_temp = ‘ZSDR041’.
ENDIF.

CONCATENATE l_temp ‘.XLS’ INTO ls_objnam.

SELECT SINGLE relid objid FROM wwwdata
INTO CORRESPONDING FIELDS OF lo_objdata
WHERE srtf2 = 0
AND relid = ‘MI’
AND objid = l_temp.

IF sy-subrc NE 0 OR lo_objdata-objid EQ space.
CONCATENATE ‘模板文件:’ ls_objnam ‘不存在,请用TCODE:SMW0进行加载’ INTO l_error.
MESSAGE e000(zre) WITH l_error.
ENDIF.

ls_destination = p_file.
CALL FUNCTION ‘DOWNLOAD_WEB_OBJECT’
EXPORTING
key = lo_objdata
destination = ls_destination
IMPORTING
rc = li_rc.

IF li_rc NE 0.
CONCATENATE ‘模板文件:’ ls_objnam ‘下载失败’ INTO l_error.
MESSAGE e000(zre) WITH l_error.
ENDIF.

ENDFORM. " FRM_DOWNLOAD_EXCEL_FROMSERVER

修改注意地址bapi用逻辑修改!!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值