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

 

*&---------------------------------------------------------------------*
*& 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~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    =     '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 chenmei

endform.                    "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'.                                     "123dfdf
endform.                    "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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值