zoukankan      html  css  js  c++  java
  • ABAP 客户报表

    *&---------------------------------------------------------------------*
    *& Report  ZSDR014
    *&
    *&---------------------------------------------------------------------*
    *&程序名称:
    *&事物代码:
    *&导入模板:无
    *&作者:
    *&时间:
    *&更新时间:
    *&-------
    REPORT zsdr014.
    TABLES:kna1,knvv,knkk ,t001l.

    DATA: gs_fcat TYPE lvc_s_fcat,
          gt_fcat TYPE lvc_t_fcat,
          gs_layo TYPE lvc_s_layo,
          gs_grid TYPE lvc_s_glay.
    DATA: gt_event      TYPE slis_t_event WITH HEADER LINE,
          gt_event_exit TYPE slis_t_event_exit WITH HEADER LINE.

    DATA:  ref_grid TYPE REF TO cl_gui_alv_grid .
    DATA stbl TYPE lvc_s_stbl."ALV稳定刷新

    TYPESBEGIN OF ty_all,
             kunnr      LIKE  kna1-kunnr"客户代码
             kunnr_name LIKE  kna1-name1"客户名称
             bukrs      LIKE  knb1-bukrs"公司
             bukrs_name LIKE  t001-butxt"公司描述
             knkli      LIKE  knkk-knkli"信贷账户

             ktokd      LIKE  kna1-ktokd"客户账目组
             ktokd_txt  LIKE  t077x-txt30"客户账目组描述
             akont      LIKE  knb1-akont"统驭科目
             akont_txt  LIKE  skat-txt50"统驭科目描述
             stras      LIKE  kna1-stras"地址
             tel_number LIKE  adr2-tel_number"电话

             ort01      LIKE  kna1-ort01"城市
             stceg      LIKE  kna1-stceg"增值税号
             vkorg      LIKE  knvv-vkorg"销售组织
             vkorg_txt  LIKE  tvkot-vtext"销售组织描述
             vtweg      LIKE  knvv-vtweg"分销渠道
             vtweg_txt  LIKE  tvtwt-vtext"分销渠道描述
             spart      LIKE  knvv-spart"产品组
             spart_txt  LIKE  tspat-vtext"产品组描述
             kukla      LIKE  kna1-kukla"客户分类
             kukla_txt  LIKE  tkukt-vtext"客户分类描述
             vkbur      LIKE  knvv-vkbur"销售部门

             vkbur_txt  LIKE  tvkbt-bezei"销售部门描述
             vkgrp      LIKE  knvv-vkgrp"销售组
             vkgrp_txt  LIKE  tvgrt-bezei"销售组描述
             konda      LIKE  knvv-konda"价格组
             konda_txt  LIKE  t188t-vtext"价格组描述

             kalks      LIKE  knvv-kalks"定价过程
             kalks_txt  LIKE  tvkdt-vtext"定价过程描述
             lprio      LIKE  knvv-lprio"交货优先权
             lprio_txt  LIKE  tprit-bezei"交货优先权描述

             lzone      LIKE  kna1-lzone"运输区域
             lzone_txt  LIKE  tzont-vtext"运输区域描述
             kdgrp      LIKE  knvv-kdgrp"客户组
             bzirk      LIKE  knvv-bzirk"销售地区
             bzirk_txt  LIKE  t171t-bztxt"销售地区描述

             vwerk      LIKE  knvv-vwerk"交货工厂
             vwerk_txt  LIKE  t001w-name1"交货工厂描述
             lgort      LIKE  kna1-lgort"交货仓库
             lgort_txt  LIKE  t001l-lgobe"交换仓库描述
             zbatch     LIKE  kna1-zbatch"客户批次

             erdat_knvv LIKE  knvv-erdat"客户系统创建日期
             erdat_vbak LIKE vbak-erdat"最后下单日期
             vbeln      LIKE  vbak-vbeln"最后下单号
             oeikw      LIKE  s066-oeikw"未清销售订单

             olikw      LIKE  s067-olikw"未清交货单
             ofakw      LIKE  s067-ofakw"未清开票

             skfor      LIKE  knkk-skfor"客户往来余额
             klimk      LIKE  knkk-klimk"客户信用额度
             keyong     LIKE  s066-oeikw"目前可用金额
             beizhu(30TYPE c,
           END OF ty_all.

    *TYPES:BEGIN OF ty_header,
    *
    *      END OF ty_header.
    **单据抬头结束
    *
    **单据明细开始
    *TYPES:BEGIN OF ty_items,
    *
    *      END OF ty_items.
    **单据明细结束

    DATA:wa_all TYPE ty_all,
         gt_all TYPE ty_all OCCURS 0.


    *定义传入到smartforms的变量开始
    DATA:fm_name TYPE rs38l_fnam.
    DATA:itemsname(32TYPE c.
    DATA:headername(32TYPE c.
    *定义传入到smartforms的变量结束


    "控制smartforms参数声明开始
    DATA :control_parameters TYPE ssfctrlop.
    "控制smartforms参数声明结束
    SELECT-OPTIONS:
            p_kunnr FOR kna1-kunnr,
            p_ktokd FOR kna1-ktokd,
            p_vkorg FOR knvv-vkorg,
            p_vtweg FOR knvv-vtweg,
            p_bzirk FOR knvv-bzirk,
            p_vkbur FOR knvv-vkbur,
            p_vkgrp FOR knvv-vkgrp,
            p_konda FOR knvv-konda,
            p_lgort FOR t001l-lgort,
            p_zbatch FOR kna1-zbatch.

    INITIALIZATION.




    START-OF-SELECTION.

      PERFORM getdata.
      PERFORM outdata.
    FORM getdata.

      TYPESBEGIN OF ty_col ,"
               knkli LIKE  s066-knkli "客户代码
               oeikw LIKE  s066-oeikw"未清订单
             END OF ty_col.
      TYPESBEGIN OF ty_col2 ,"
               knkli LIKE  s066-knkli "客户代码

             END OF ty_col2.

      DATA : hs_col TYPE HASHED TABLE OF ty_col WITH UNIQUE KEY knkli WITH HEADER LINE .
      DATA:  hs_item TYPE STANDARD TABLE OF ty_col WITH HEADER LINE.
      DATA : hs_col2 TYPE HASHED TABLE OF ty_col2 WITH UNIQUE KEY knkli WITH HEADER LINE .
      DATA:BEGIN OF vbeln_erdat OCCURS ,
             vbeln TYPE vbak-vbeln,
             erdat LIKE vbak-erdat,
           END OF vbeln_erdat.
      DATA: wa_vbeln_erdat LIKE LINE OF vbeln_erdat.
      SELECT *
        INTO CORRESPONDING FIELDS OF TABLE gt_all
        FROM kna1 AS ka1
        INNER JOIN knb1 AS kb
        ON  kb~kunnr = ka1~kunnr
        INNER JOIN knkk AS kk
        ON  ka1~kunnr = kk~kunnr
        INNER JOIN knvv AS kv
        ON  ka1~kunnr = kv~kunnr
        INNER JOIN s066 AS s6
        ON  s6~knkli = ka1~kunnr
        INNER JOIN s067 AS s7
        ON ka1~kunnr = s7~knkli
        INNER JOIN adr2 AS ad
        ON ad~addrnumber = ka1~adrnr AND ad~r3_user '3'
        WHERE ka1~kunnr IN p_kunnr AND
              ka1~ktokd IN p_ktokd AND
              kv~vkorg IN p_vkorg AND
              kv~vtweg IN p_vtweg AND
              kv~bzirk IN p_bzirk AND
              kv~vkbur IN p_vkbur AND
              kv~vkgrp IN p_vkgrp AND
              kv~konda IN p_konda AND           ka1
    ~lgort IN p_lgort AND   ka1
    ~zbatch IN p_zbatch.   

    .   
    CLEAR wa_all.   
    LOOP AT gt_all INTO wa_all.     hs_col2

    -knkli = wa_all-knkli.     

    COLLECT hs_col2.   

    ENDLOOP.   

    SELECT * INTO CORRESPONDING FIELDS OF TABLE hs_item   
    FROM s066.   
    LOOP AT hs_item.     hs_col
    -knkli = hs_item-knkli.     hs_col
    -oeikw = hs_item-oeikw.     
    COLLECT hs_col.   
    ENDLOOP.   

    CLEAR wa_all.   
    LOOP AT gt_all INTO wa_all.

    "检查用户销售区域与分销渠道的权限     
    AUTHORITY-CHECK OBJECT 'V_VBAK_VKO'     
    ID 'VKORG' FIELD wa_all-vkorg     
    ID 'VTWEG' FIELD wa_all-vtweg     
    ID 'SPART' DUMMY     
    ID 'ACTVT' DUMMY."FIELD '03'.     
    IF sy-subrc NE 0.       
    "MESSAGE i001(00) WITH '没有销售组织' && wa_all-vkorg && '和分销渠道' && wa_all-vtweg && '的权限'.       
    DELETE TABLE gt_all FROM wa_all.       
    CONTINUE.     
    ENDIF.     

    SELECT SINGLE erdat INTO wa_all-erdat_knvv       
    FROM knvv       
    WHERE kunnr EQ wa_all-kunnr AND vkorg EQ wa_all-vkorg     
    AND  vtweg EQ wa_all-vtweg AND spart EQ wa_all-spart.     
    SELECT SINGLE name1 INTO wa_all-kunnr_name       
    FROM kna1     
    WHERE kunnr EQ wa_all-kunnr.     

    SELECT SINGLE butxt INTO wa_all-bukrs_name       
    FROM t001     
    WHERE bukrs EQ wa_all-bukrs.     
    SELECT SINGLE txt50 INTO wa_all-akont_txt       
    FROM skat     
    WHERE saknr EQ wa_all-akont.     

    SELECT SINGLE txt30 INTO wa_all-ktokd_txt       
    FROM t077x     
    WHERE ktokd EQ wa_all-ktokd.     

    SELECT SINGLE bztxt INTO wa_all-bzirk_txt       
    FROM t171t     
    WHERE bzirk EQ wa_all-bzirk.     
    SELECT SINGLE bezei INTO wa_all-vkbur_txt       
    FROM tvkbt     
    WHERE vkbur EQ wa_all-vkbur.     

    SELECT SINGLE bezei INTO wa_all-vkgrp_txt       
    FROM tvgrt     
    WHERE vkgrp EQ wa_all-vkgrp.     

    SELECT SINGLE vtext INTO wa_all-vkorg_txt       
    FROM tvkot     
    WHERE vkorg EQ wa_all-vkorg.     

    SELECT SINGLE vtext INTO wa_all-vtweg_txt      
    FROM tvtwt     
    WHERE vtweg EQ wa_all-vtweg.     

    SELECT SINGLE vtext INTO wa_all-spart_txt      
    FROM tspat     
    WHERE spart EQ wa_all-spart.     

    SELECT SINGLE vtext INTO wa_all-kukla_txt      
    FROM tkukt     
    WHERE kukla EQ wa_all-kukla.     

    SELECT SINGLE vtext INTO wa_all-konda_txt       
    FROM t188t     
    WHERE konda EQ wa_all-konda.     

    SELECT SINGLE vtext INTO wa_all-kalks_txt       
    FROM tvkdt     
    WHERE kalks EQ wa_all-kalks.     

    SELECT SINGLE bezei INTO wa_all-lprio_txt       
    FROM tprit     
    WHERE lprio EQ wa_all-lprio.     

    SELECT SINGLE vtext INTO wa_all-lzone_txt       
    FROM tzont     
    WHERE zone1 EQ wa_all-lzone.     
    SELECT SINGLE name1 INTO wa_all-vwerk_txt       
    FROM t001w     
    WHERE werks EQ wa_all-vwerk.     

    SELECT SINGLE lgobe INTO wa_all-lgort_txt       
    FROM t001l     
    WHERE werks EQ wa_all-vwerk AND lgort EQ wa_all-lgort.     

    SELECT vbeln   erdat INTO CORRESPONDING FIELDS OF TABLE vbeln_erdat       
    FROM vbak     
    WHERE kunnr EQ wa_all-kunnr   .     
    SORT vbeln_erdat DESCENDING BY erdat.     
    READ TABLE vbeln_erdat INTO wa_vbeln_erdat INDEX 1.     wa_all

    -vbeln = wa_vbeln_erdat-vbeln.     wa_all
    -erdat_vbak = wa_vbeln_erdat-erdat.     
    CLEAR wa_vbeln_erdat.     
    CLEAR vbeln_erdat[].     

    READ TABLE hs_col  WITH KEY knkli = wa_all-kunnr.     wa_all
    -oeikw = hs_col-oeikw.     wa_all
    -keyong = wa_all-klimk - wa_all-skfor - wa_all-oeikw                    
    - wa_all-ofakw - wa_all-olikw.     
    MODIFY gt_all FROM wa_all.   

    ENDLOOP.


    ENDFORM" GETDATA
    *&---------------------------------------------------------------------*
    *& Form FIXDATA
    *&---------------------------------------------------------------------*


    FORM frm_catlg_set USING p_field p_text  p_key p_edit p_no_out                       p_f4availabl   p_ref_table   p_ref_field  p_no_zero 
    .   gs_fcat
    -fieldname   = p_field.   gs_fcat
    -reptext     = p_text.   gs_fcat
    -key         = p_key.   gs_fcat
    -edit        = p_edit.   gs_fcat
    -no_out      = p_no_out.   gs_fcat
    -ref_field   = p_ref_field.   gs_fcat
    -ref_table   = p_ref_table.   gs_fcat
    -f4availabl  = p_f4availabl.   gs_fcat
    -no_zero       = p_no_zero.   

    APPEND gs_fcat TO gt_fcat .   
    CLEAR gs_fcat .
    ENDFORM"frm_catlg_set

    FORM fieldcat_init .   
    DATAc(2)    TYPE n,txt(20TYPE .   
    PERFORM frm_catlg_set USING:    
    'kunnr' '客户代码' 'X' '' '' '' '' '' 'X',     
    'kunnr_name' '客户名称' 'X' '' '' '' '' '' '',     
    'bukrs' '公司' 'X' '' '' '' '' '' '',     
    'bukrs_name' '公司描述' 'X' '' '' '' '' '' '',     
    'knkli' '信贷账户' '' '' '' '' '' '' 'X',     
    'ktokd' '客户账目组' '' '' '' '' '' '' '',     
    'ktokd_txt' '客户账目组描述' '' '' '' '' '' '' '',     
    'akont' '统驭科目' '' '' '' '' '' '' '',     
    'akont_txt' '统驭科目描述' '' '' '' '' '' '' '',     
    'stras' '地址' '' '' '' '' '' '' '',     
    'tel_number' '电话' '' '' '' '' '' '' '',     
    'ort01' '城市' '' '' '' '' '' '' '',     
    'stceg' '增值税号' '' '' '' '' '' '' '',     
    'vkorg' '销售组织' '' '' '' '' '' '' '',     
    'vkorg_txt' '销售组织描述' '' '' '' '' '' '' '',     
    'vtweg' '分销渠道' '' '' '' '' '' '' '',     
    'vtweg_txt' '分销渠道描述' '' '' '' '' '' '' '',     
    'spart' '产品组' '' '' '' '' '' '' '',     
    'spart_txt' '产品组描述' '' '' '' '' '' '' '',     
    'kukla' '客户分类' '' '' '' '' '' '' '',     
    'kukla_txt' '客户分类描述' '' '' '' '' '' '' '',     

    'vkbur' '销售部门' '' '' '' '' '' '' '',     
    'vkbur_txt' '销售部门描述' '' '' '' '' '' '' '',     
    'vkgrp' '销售组' '' '' '' '' '' '' '',     
    'vkgrp_txt' '销售组描述' '' '' '' '' '' '' '',     
    'konda' '价格组' '' '' '' '' '' '' '',     
    'konda_txt' '价格组描述' '' '' '' '' '' '' '',     
    'kalks' '定价过程' '' '' '' '' '' '' '',   
    'kalks_txt' '定价过程描述' '' '' '' '' '' '' '',   
    'lprio' '交货优先权' '' '' '' '' '' '' '',   
    'lprio_txt' '交货优先权描述' '' '' '' '' '' '' '',   
    'lzone' '运输区域' '' '' '' '' '' '' '',   
    'lzone_txt' '运输区域描述' '' '' '' '' '' '' '',   
    'kdgrp' '客户组' '' '' '' '' '' '' '',   
    'bzirk' '销售地区' '' '' '' '' '' '' '',   
    'bzirk_txt' '销售地区描述' '' '' '' '' '' '' '',   
    'vwerk' '交货工厂' '' '' '' '' '' '' '',   
    'vwerk_txt' '交货工厂描述' '' '' '' '' '' '' '',   
    'lgort' '交货仓库' '' '' '' '' '' '' '',   
    'lgort_txt' '交换仓库描述' '' '' '' '' '' '' '',   
    'zbatch' '客户批次' '' '' '' '' '' '' '',   
    'erdat_knvv' '客户系统创建日期' '' '' '' '' '' '' '',   
    'erdat_vbak' '最后下单日期' '' '' '' '' '' '' '',   
    'vbeln' '最后下单号' '' '' '' '' '' '' 'X',   
    'oeikw' '未清销售订单' '' '' '' '' '' '' '',   
    'olikw' '未清交货单' '' '' '' '' '' '' '',   
    'ofakw' '未清开票' '' '' '' '' '' '' '',   
    'skfor' '客户往来余额' '' '' '' '' '' '' '',   
    'klimk' '客户信用额度' '' '' '' '' '' '' '',   
    'keyong' '客户信用额度' '' '' '' '' '' '' ''.   gs_layo


    -zebra             'X'.   gs_layo
    -cwidth_opt        'X'.
    *  gs_layo-grid_title        = 'dongdong'.
    *  gs_layo-smalltitle        = 'X'.
    ENDFORM"fieldcat_init

    FORM outdata .   
    PERFORM fieldcat_init .   
    PERFORM show_alv  TABLES gt_fcat  gt_all[]   
    USING  gs_layo.

    ENDFORM" outdata

    FORM show_alv TABLES  pt_fcat pt_tab USING   ps_layout.   gs_grid

    -edt_cll_cb 'X'."当屏幕失去焦点时,自动刷新   gt_event
    -name 'CALLER_EXIT'.   "slis_ev_caller_exit_at_start事件   gt_event
    -form 'FM_BUTTON'.   
    APPEND gt_event .   

    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'     
    EXPORTING       i_callback_program       
    = sy-repid       i_callback_user_command  
    'USER_COMMAND'       i_grid_settings          
    = gs_grid       i_callback_pf_status_set 
    'SET_PF_STATUS'       is_layout_lvc            
    = ps_layout       it_fieldcat_lvc          
    = pt_fcat[]       it_events                
    = gt_event[]       i_save                   
    'X'
    *     it_event_exit            = gt_event_exit[]     
    TABLES       t_outtab                 
    = pt_tab     
    EXCEPTIONS       program_error            
    1       
    OTHERS                   2.   
    "PERFORM frm_fresh_alv.

    ENDFORM.                    "csalv_set_fcat

    FORM user_command USING r_ucomm LIKE sy-ucomm  rs_selfield TYPE slis_selfield.   


    CASE r_ucomm.     
    WHEN '&DATA_SAVE'.     
    WHEN '&XSL' OR '&EXPORT' .     

    WHEN '&BACK' OR '&UP' OR '&EXIT'.       
    LEAVE TO SCREEN 0.   
    ENDCASE.

    ENDFORM.                    "user_command
    *&---------------------------------------------------------------------*
    *&      Form  SET_PF_STATUS
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *      -->RT_EXTAB   text
    *----------------------------------------------------------------------*
    FORM set_pf_status USING rt_extab TYPE slis_t_extab..   
    SET PF-STATUS 'STANDARD'.
    ENDFORM.                    "SET_PF_STATUS
    *&---------------------------------------------------------------------*
    *&      Form  fm_button
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *      -->E_GRID     text
    *----------------------------------------------------------------------*
    FORM fm_button USING e_grid TYPE slis_data_caller_exit.   

    CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    *   EXPORTING
    *     IR_SALV_FULLSCREEN_ADAPTER       =     
    IMPORTING
    *     ET_EXCLUDING                     =
    *     E_REPID   =
    *     E_CALLBACK_PROGRAM               =
    *     E_CALLBACK_ROUTINE               =       e_grid 
    = ref_grid
    *     ET_FIELDCAT_LVC                  =
    *     ER_TRACE  =
    *     E_FLG_NO_HTML                    =
    *     ES_LAYOUT_KKBLO                  =
    *     ES_SEL_HIDE                      =
    *     ET_EVENT_EXIT                    =
    *     ER_FORM_TOL                      =
    *     ER_FORM_EOL                      =     
    .

    *   CALL METHOD ref_grid->check_changed_data.
    * 设置enter事件   
    CALL METHOD ref_grid->register_edit_event     
    EXPORTING       i_event_id 
    = cl_gui_alv_grid=>mc_evt_enter     
    EXCEPTIONS       error      
    1       
    OTHERS     2.   


    "CREATE OBJECT gt_event_receiver.   
    "SET HANDLER   gt_event_receiver->handle_modify FOR ref_grid.
    ENDFORM.                    "FM_BUTTON

    FORM frm_fresh_alv.   stbl
    -row 'X'." 基于行的稳定刷新   stbl
    -col 'X'." 基于列稳定刷新   
    CALL METHOD ref_grid->refresh_table_display     
    EXPORTING       is_stable 
    = stbl.

    ENDFORM.

  • 相关阅读:
    新年新气象~
    北京不下雪,自己来点雪花看看吧~(附效果图)
    没事写个游戏自己玩~
    原生js实现简单的焦点图效果
    php xdebug扩展无法进入断点问题
    (转)没有IE就没有伤害!浏览器兼容性问题解决方案汇总
    利用mvc filterconfig属性实现权限验证
    c# 替换所有中文、标点符号,全角转半角
    go web 第三天 学习笔记 --mysql
    go web 第二天 学习笔记之文件上传
  • 原文地址:https://www.cnblogs.com/eagle-dtq/p/5314670.html
Copyright © 2011-2022 走看看