销售客户主数据查询(带参数跳转到事物代码)

来源:互联网 发布:上海电信网络套餐介绍 编辑:程序博客网 时间:2024/05/17 14:19

 

*&---------------------------------------------------------------------**& Report  zsdr010*& 客户主数据查询*&---------------------------------------------------------------------*report  zsdr010.tables: kna1,             "客户主文件的一般数据.        knvv,             "客户主记录销售数据.        adrc,             "地址 (业务地址服务).        adrct,            "地址文本 (业务地址服务).        adr3,             "传真号 (业务地址服务).        t005u,            "税款 :地区关键字:文本.        t016t,            "行业名.        tbrct,            "工业代码正文(客户主文件).        t171t,            "客户: 销售地区: 文本.        vbak,             "销售凭证 :抬头.        zsd_ktokd,        "账户组类型表.        zbrand_authority. "权限组查询表.type-pools slis.*用于填充LV内表types: begin of ty_tablebylfa1,    kunnr       type    kna1-kunnr,             "客户编码    name1       type    kna1-name1,             "客户名称    name2       type    kna1-name2,             "客户名称    name3       type    kna1-name3,             "原道讯编码    name4       type    kna1-name4,             "名称 4    sortl       type    kna1-sortl,             "检索项    stras       type    kna1-stras,             "地址    city2       type    adrc-city2,             "区域(区域科室)    homecity    type    adrc-home_city,         "属主(不同的城市)    homecitys   type    kna1-name2,             "属主名称    bzirk       type    knvv-bzirk,             "销售地区    ort01       type    kna1-ort01,             "店铺城市    regio       type    string,                 "代理商省份和店铺省份    bezei       type    t005u-bezei,            "省份描述    telf1       type    kna1-telf1,             "电话    telf2       type    kna1-telf2,             "移动电话    faxnr_long  type    adr3-faxnr_long,        "传真错    fax_number  type    adr3-fax_number,        "传真对    brsch       type    kna1-brsch,             "行业(类型    brtxt       type    t016t-brtxt,            "行业描述(类型)    bahns       type    kna1-bahns,             "列车站(店铺面积)    bran1       type    kna1-bran1,             "行业代码1(店铺性质)    remark      type    adrct-remark,           "联系人    adrnr       type    kna1-adrnr,             "地址    vtext       type    tbrct-vtext,            "行业代码1描述(店铺性质)    bztxt       type    t171t-bztxt,            "区名    vkorg       type    knvv-vkorg,             "销售组织    ktokd       type    kna1-ktokd,             "客户帐户组    aufsd       type    kna1-aufsd,             "状态    aufsd1      type    kna1-name1,             "客户名称    begru       type    kna1-begru,             "权限组    zdesp       type    zbrand_authority-zdesp, "所属AD, end of ty_tablebylfa1."定义内表types: begin of t_zbrand_authoritys,    zautgrp          type    zbrand_authority-zautgrp,    zdesp            type    zbrand_authority-zdesp,end of t_zbrand_authoritys.data :  t_tab type standard table of ty_tablebylfa1.data :  w_tab type ty_tablebylfa1 .data:   t_zbrand_authority   type   standard table of t_zbrand_authoritys with header line,        w_zbrand_authority   type   t_zbrand_authoritys.data:   it_adrt type table of adr2 with header line."定义内表存储电话data:   it_adrp type table of adr2 with header line."定义内表存储移动电话data: begin of it_kunnr occurs 0,        kunnr type kunnr,      end of it_kunnr.*定义ALV显示参数data: t_fieldcat_alv type slis_t_fieldcat_alv,      d_fieldcat     type slis_fieldcat_alv,      d_layout       type slis_layout_alv.data: g_ucomm   type sy-ucomm.data: g_ucomm1  type sy-ucomm.data: g_ucomm2  type sy-ucomm.data: g_ucomm3  type sy-ucomm."过滤条件输入表单selection-screen begin of block blk with frame title text-t01.select-options:  s_vkorg     for    knvv-vkorg obligatory, "销售组织                 s_kunnr     for    kna1-kunnr,            "客户编码                 s_name2     for    kna1-name2,            "原编码                 s_sortl     for    kna1-sortl,            "检索项                 s_ort01     for    kna1-ort01,            "店铺城市                 s_regio     for    kna1-regio,            "代理商省份和店铺省份                 s_brsch     for    kna1-brsch,            "行业(类型)                 s_bzirk     for    knvv-bzirk,            "OBLIGATORY, "销售地区                 s_bran1     for    kna1-bran1.            "行业代码1(店铺性质)parameters: r_rad1 radiobutton group xxx,            r_rad2 radiobutton group xxx,            r_rad3 radiobutton group xxx default 'X'.selection-screen end of block blk.*初始化initialization.start-of-selection.  perform frm_get_databylfa1.  "根据过滤条件获取业务报表数据填充LV  perform getadr2.             "更改it_tab·from adr2  perform frm_field.           "设置LV的显示列  perform frm_displaylv_data.  "LV显示查询结果集*&---------------------------------------------------------------------**&      Form  get_dataAD.*&---------------------------------------------------------------------**       text*----------------------------------------------------------------------*form get_dataad.  if t_tab[] is not initial.    select distinct         zbrand_authority~zautgrp         zbrand_authority~zdesp      into corresponding fields of table t_zbrand_authority      from zbrand_authority      for all entries in t_tab      where zautgrp = t_tab-begru.  endif.  sort t_zbrand_authority by zautgrp.endform.                    "get_dataAD*&---------------------------------------------------------------------**&      Form  frm_get_dataByLfa1*&---------------------------------------------------------------------**       text*----------------------------------------------------------------------*form frm_get_databylfa1.  if r_rad1 = 'X'."选择查询活动的    select distinct       kna1~kunnr          "客户编码       kna1~name1          "客户名称       kna1~name2          "原编码       kna1~name3          "原编码       kna1~name4          "名称4       kna1~aufsd          "状态       kna1~sortl          "检索项       kna1~stras          "地址       kna1~ort01          "店铺城市       kna1~regio          "代理商省份和店铺省份       kna1~telf1          "电话       kna1~telf2          "移动电话       kna1~brsch          "行业(类型)       kna1~bahns          "列车站(店铺面积)       kna1~bran1          "行业代码1       kna1~adrnr          "地址       kna1~ktokd          "客户帐户组       kna1~begru          "权限组  into corresponding fields of table t_tab  from kna1    where     kna1~kunnr    in    s_kunnr      and     kna1~name2    in    s_name2      and     kna1~sortl    in    s_sortl      and     kna1~ort01    in    s_ort01      and     kna1~regio    in    s_regio      and     kna1~brsch    in    s_brsch      and     kna1~bran1    in    s_bran1      and     kna1~aufsd    =     ''      and     ktokd         in    ( select distinct zsd_ktokd~ktokd from zsd_ktokd where zsd_ktokd~programs = 'ZSDR010' and zsd_ktokd~flag = '1' ).  elseif r_rad2 = 'X'."选择查询非活动的    select distinct     kna1~kunnr     kna1~name1     kna1~name2     kna1~name3     kna1~name4     kna1~aufsd     kna1~sortl     kna1~stras     kna1~ort01     kna1~regio     kna1~telf1     kna1~telf2     kna1~brsch     kna1~bahns     kna1~bran1     kna1~adrnr     kna1~ktokd     kna1~begruinto corresponding fields of table t_tabfrom kna1  where     kna1~kunnr    in    s_kunnr    and     kna1~name2    in    s_name2    and     kna1~sortl    in    s_sortl    and     kna1~ort01    in    s_ort01    and     kna1~regio    in    s_regio    and     kna1~brsch    in    s_brsch    and     kna1~bran1    in    s_bran1    and     kna1~aufsd    =     '01'    and     ktokd         in    ( select distinct zsd_ktokd~ktokd from zsd_ktokd where zsd_ktokd~programs = 'ZSDR010' and zsd_ktokd~flag = '1' ).  elseif r_rad3 = 'X'."选择查询全部的    select distinct      kna1~kunnr      kna1~name1      kna1~name2      kna1~name3      kna1~name4      kna1~aufsd      kna1~sortl      kna1~stras      kna1~ort01      kna1~regio      kna1~telf1      kna1~telf2      kna1~brsch      kna1~bahns      kna1~bran1      kna1~adrnr      kna1~ktokd      kna1~begru into corresponding fields of table t_tab from kna1   where     kna1~kunnr    in    s_kunnr     and     kna1~name2    in    s_name2     and     kna1~sortl    in    s_sortl     and     kna1~ort01    in    s_ort01     and     kna1~regio    in    s_regio     and     kna1~brsch    in    s_brsch     and     kna1~bran1    in    s_bran1     and     ktokd         in    ( select distinct zsd_ktokd~ktokd from zsd_ktokd where zsd_ktokd~programs = 'ZSDR010' and zsd_ktokd~flag = '1' ).  endif.  perform get_dataad. "抓取zbrand_authority 权限组表数据.  loop at t_tab into w_tab.    select single      vkorg      bzirk  into  (w_tab-vkorg,w_tab-bzirk)      from knvv where kunnr = w_tab-kunnr      and vkorg    in    s_vkorg      and bzirk    in    s_bzirk.    read table t_zbrand_authority with key zautgrp = w_tab-begru  binary search .    if sy-subrc = 0.      w_tab-zdesp = t_zbrand_authority-zdesp.    endif.    modify t_tab from w_tab.  endloop.  loop at t_tab into w_tab.    select single      bezei into  (w_tab-bezei)      from t005u where bland = w_tab-regio      and  spras = '1'      and  land1 = 'CN'.    modify t_tab from w_tab.  endloop.  loop at t_tab into w_tab.    data:    str5 type string,    str6 type string,    itab1  type table of string,    text3 type string.    text3 = w_tab-homecity.    split text3 at '#' into: str5 str6,    table itab1.*    if str5 = ''.*      w_tab-HOMECITY = str6.*    else.    w_tab-homecity = str5.*    endif.    modify t_tab from w_tab.  endloop.    modify t_tab from w_tab.    append w_tab-adrnr to  it_kunnr.  endloop.  delete adjacent duplicates  from it_kunnr.  "删除重复行2012-07-18 chenmeiendform.                    "frm_get_dataByLfa1*&---------------------------------------------------------------------**&      Form  getAdr2*&---------------------------------------------------------------------**       text*----------------------------------------------------------------------*form getadr2.  if it_kunnr[] is initial.    message '没有数据' type 'S' display like 'E'.    return.  endif.  select * from adr2 into table it_adrt for all entries in it_kunnr    where addrnumber = it_kunnr-kunnr "kunnr是it_kunnr内表里面存放客户主数据的字段      and persnumber = ''      and flgdefault = 'X' "x 表示这个值在界面显示的那条记录      and r3_user = '1'. "1是固定电话,3是移动电话,2是第二条或者第三条电话  sort it_adrt by addrnumber.  select * from adr2 into table it_adrp for all entries in it_kunnr      where addrnumber = it_kunnr-kunnr "kunnr是it_kunnr内表里面存放客户主数据的字段       and persnumber = ''       and r3_user = '3'. "1是固定电话,3是移动电话,2是第二条或者第三条电话  sort it_adrp by  addrnumber .  clear: w_tab.  loop at   t_tab into w_tab.    read table it_adrt with key addrnumber = w_tab-adrnr binary search.    if   sy-subrc = 0.      w_tab-telf1 = it_adrt-tel_number.    endif.    read table it_adrp with key addrnumber = w_tab-adrnr binary search.    if   sy-subrc = 0.      w_tab-telf2 = it_adrp-tel_number.    endif.    modify  t_tab from w_tab.  endloop.endform.                                                    "getAdr2*&---------------------------------------------------------------------**&      Form  frm_field  LV输出列名*&---------------------------------------------------------------------**       text*----------------------------------------------------------------------*form frm_field.  data tmp_pos type i.  refresh t_fieldcat_alv.  clear d_fieldcat.  d_fieldcat-fieldname = 'VKORG'.  d_fieldcat-seltext_l = '销售组织'.  append d_fieldcat to t_fieldcat_alv.  clear d_fieldcat.  d_fieldcat-fieldname = 'KUNNR'.  d_fieldcat-seltext_l = '客户编码'.  append d_fieldcat to t_fieldcat_alv.  clear d_fieldcat.  d_fieldcat-fieldname = 'NAME1'.  d_fieldcat-seltext_l = '客户名称'.  append d_fieldcat to t_fieldcat_alv.  clear d_fieldcat.  d_fieldcat-fieldname = 'BRSCH'.  d_fieldcat-seltext_l = '类型'.  append d_fieldcat to t_fieldcat_alv.  clear d_fieldcat.  d_fieldcat-fieldname = 'BRTXT'.  d_fieldcat-seltext_l = '类型名称'.  append d_fieldcat to t_fieldcat_alv.  clear d_fieldcat.  d_fieldcat-fieldname = 'BRAN1'.  d_fieldcat-seltext_l = '店铺性质'.  append d_fieldcat to t_fieldcat_alv.  clear d_fieldcat.  d_fieldcat-fieldname = 'VTEXT'.  d_fieldcat-seltext_l = '性质名称'.  append d_fieldcat to t_fieldcat_alv.  clear d_fieldcat.  d_fieldcat-fieldname = 'REGIO'.  d_fieldcat-seltext_l = '店铺省份'.  append d_fieldcat to t_fieldcat_alv.  clear d_fieldcat.  d_fieldcat-fieldname = 'BEZEI'.  d_fieldcat-seltext_l = '省份名称'.  append d_fieldcat to t_fieldcat_alv.  clear d_fieldcat.  d_fieldcat-fieldname = 'ORT01'.  d_fieldcat-seltext_l = '店铺城市'.  append d_fieldcat to t_fieldcat_alv.  clear d_fieldcat.  d_fieldcat-fieldname = 'NAME2'.  d_fieldcat-seltext_l = '原编码'.  append d_fieldcat to t_fieldcat_alv.  clear d_fieldcat.  d_fieldcat-fieldname = 'CITY2'.  d_fieldcat-seltext_l = '区域'.  append d_fieldcat to t_fieldcat_alv.  clear d_fieldcat.  d_fieldcat-fieldname = 'HOMECITY'.  d_fieldcat-seltext_l = '属主'.  append d_fieldcat to t_fieldcat_alv.  clear d_fieldcat.  d_fieldcat-fieldname = 'HOMECITYS'.  d_fieldcat-seltext_l = '属主名称'.  append d_fieldcat to t_fieldcat_alv.  clear d_fieldcat.  d_fieldcat-fieldname = 'BZIRK'.  d_fieldcat-seltext_l = '销售地区'.  append d_fieldcat to t_fieldcat_alv.  clear d_fieldcat.  d_fieldcat-fieldname = 'BZTXT'.  d_fieldcat-seltext_l = '地区名称'.  append d_fieldcat to t_fieldcat_alv.  clear d_fieldcat.  d_fieldcat-fieldname = 'REMARK'.  d_fieldcat-seltext_l = '联系人'.  append d_fieldcat to t_fieldcat_alv.  clear d_fieldcat.  d_fieldcat-fieldname = 'BAHNS'.  d_fieldcat-seltext_l = '店铺面积'.  append d_fieldcat to t_fieldcat_alv.  clear d_fieldcat.  d_fieldcat-fieldname = 'SORTL'.  d_fieldcat-seltext_l = '检索项'.  append d_fieldcat to t_fieldcat_alv.  clear d_fieldcat.  d_fieldcat-fieldname = 'TELF1'.  d_fieldcat-seltext_l = '电话'.  append d_fieldcat to t_fieldcat_alv.  clear d_fieldcat.  d_fieldcat-fieldname = 'TELF2'.  d_fieldcat-seltext_l = '移动电话'.  append d_fieldcat to t_fieldcat_alv.  clear d_fieldcat.  d_fieldcat-fieldname = 'FAX_NUMBER'.  d_fieldcat-seltext_l = '传真'.  append d_fieldcat to t_fieldcat_alv.  clear d_fieldcat.  d_fieldcat-fieldname = 'STRAS'.  d_fieldcat-seltext_l = '地址'.  append d_fieldcat to t_fieldcat_alv.  clear d_fieldcat.  d_fieldcat-fieldname = 'BEGRU'.  d_fieldcat-seltext_l = '权限组'.  append d_fieldcat to t_fieldcat_alv.  clear d_fieldcat.  d_fieldcat-fieldname = 'ZDESP'.  d_fieldcat-seltext_l = '所属AD'.  append d_fieldcat to t_fieldcat_alv.  clear d_fieldcat.  d_fieldcat-fieldname = 'AUFSD1'.  d_fieldcat-seltext_l = '状态'.  append d_fieldcat to t_fieldcat_alv.  clear d_fieldcat.endform.                    "frm_field*&---------------------------------------------------------------------**&      Form  frm_displaylv_data 生成LV列表窗口*&---------------------------------------------------------------------**       text*----------------------------------------------------------------------*form frm_displaylv_data.  loop at t_tab into w_tab.    authority-check object 'Z_ZSDBBQX'          id 'BRGRU' field w_tab-begru.    if sy-subrc <> 0.      delete table t_tab from w_tab.    endif.  endloop.  d_layout-colwidth_optimize = 'X'. "设置alv中的字段内容全部显示  call function 'REUSE_ALV_GRID_DISPLAY'    exporting      i_callback_program       = sy-repid "tmp_repid      it_fieldcat              = t_fieldcat_alv      is_layout                = d_layout      i_save                   = 'U'      i_callback_pf_status_set = 'SET_PF_STATUS'      i_callback_user_command  = 'FRM_UCOMM'    tables      t_outtab                 = t_tab    exceptions      program_error            = 1      others                   = 2.  if sy-subrc <> 0.    message id sy-msgid type sy-msgty number sy-msgno            with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.  endif.endform.                    "frm_displaylv_data*&---------------------------------------------------------------------**&      Form  FRM_UCOMM*&---------------------------------------------------------------------**       自定义ALV的双击事件*----------------------------------------------------------------------**  -->  p1        text*  <--  p2        text*----------------------------------------------------------------------*form frm_ucomm using r_ucomm     like sy-ucomm                      rs_selfield type slis_selfield.  case r_ucomm.    when '&IC1'.      check rs_selfield-tabindex > 0.      read table t_tab into w_tab index rs_selfield-tabindex.      set parameter id 'KUN' field  w_tab-kunnr.   "客户代码      set parameter id 'BUK' field ''.             "公司代码      set parameter id 'VKO' field  w_tab-vkorg.   "销售组织      set parameter id 'VTW' field '00'.           "分銷渠道      set parameter id 'SPA' field '00'.           "产品组      call transaction 'VD03' and skip first screen.  endcase.endform.                    "FRM_UCOMM*&---------------------------------------------------------------------**&      Form  SET_PF_STATUS*&---------------------------------------------------------------------**       text*----------------------------------------------------------------------**      -->TAB        text*----------------------------------------------------------------------*form set_pf_status using tab type slis_t_extab.  set pf-status 'PF01'.                                     "123dfdfendform.                    "SET_PF_STATUS*权限分配*AT SELECTION-SCREEN .**AUTHORITY-CHECK OBJECT 'ZSDBBQX' FOR USER SY-UNAME*         ID 'BZIRK' FIELD S_BZIRK*         ID 'VKORG' FIELD S_VKORG.*IF SY-SUBRC NE 0.**    MESSAGE E002(ZSDMSG) WITH  S_BZIRK  S_VKORG  .**ENDIF.

原创粉丝点击