根据需求打印

来源:互联网 发布:华为ec6108v9安装软件 编辑:程序博客网 时间:2024/06/11 16:25

TYPE-POOLs:slis,icon.
TABLES:kna1,knvv,knb5,zyyzb011,t171,t151,t151t,knb1.

TYPES:BEGIN OF ty_itab,
  kunnr TYPE kna1-kunnr,"编码
  name1 TYPE kna1-name1,"客户名称
  bzirk TYPE t171-bzirk,"销售地区
  bztxt TYPE t171t-bztxt,"销售地区文本
  kdgrp TYPE t151-kdgrp,"客户组
  ktext TYPE t151t-ktext,"客户组文本
  konda TYPE t188-konda,"定价组
  vtext TYPE t188t-vtext,"定价组文本
  vrsnr TYPE knb1-vrsnr,"客户有效期
  zyxqz TYPE i,
END OF ty_itab.

TYPES:BEGIN OF ty_data,
  vrsnr TYPE knb1-vrsnr,
  END OF ty_data.

TYPES:BEGIN OF ty_data1,
zsj TYPE zyyzb011-zsj,
END OF ty_data1.
*
DATA:lt_knb1 TYPE TABLE OF ty_data WITH HEADER LINE.
DATA:gs_knb1 TYPE ty_data.
*DATA:gt_itab TYPE TABLE OF ty_data WITH HEADER LINE.
data:lt_data TYPE TABLE OF ty_itab WITH HEADER LINE.
DATA:ls_data TYPE ty_itab.
*DATA:gs_itab TYPE ty_itab.
*DATA:gs_data TYPE ty_itab.
DATA l_index TYPE i.

DATA lt_item TYPE TABLE OF zwj001 WITH HEADER LINE.
DATA ls_item TYPE zwj001.

DATA:gt_fieldcat TYPE lvc_t_fcat,
      gs_layout TYPE lvc_s_layo.

DATAok_code TYPE sy-ucomm.
DATAsave_ok LIKE ok_code.


*************************************************************
*
*选择屏幕
*************************************************************

SELECTION-SCREEN:BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS:
           p_vkorg LIKE knvv-vkorg DEFAULT '1000',"工厂
*           p_kdgrp LIKE t151-kdgrp ,               "客户组
           p_vtweg LIKE knvv-vtweg NO-DISPLAY DEFAULT '00',"分销渠道
           p_spart LIKE knvv-spart NO-DISPLAY DEFAULT '00',"部门
           p_vrsnr LIKE knb1-vrsnr NO-DISPLAY."


SELECT-OPTIONS:s_vrsnr FOR knb1-vrsnr NO-DISPLAY,
               s_kdgrp FOR t151-kdgrp NO INTERVALS NO-EXTENSION,"客户组
               s_bzirk FOR t171-bzirk NO-EXTENSION,"销售地区
               s_kunnr FOR kna1-kunnr NO-EXTENSION."客户编码
SELECTION-SCREEN:END OF BLOCK b1.

********************************************************
*
*取数
********************************************************
INITIALIZATION.

START-OF-SELECTION.

  PERFORM frm_get_data.

**********************************************************
FORM FRM_GET_DATA .
  CLEAR:lt_data[],lt_data.

  DATA:
       lt_knb5 TYPE TABLE OF knb5 WITH HEADER LINE,
       lt_data1 TYPE TABLE OF KNB1 WITH HEADER LINE,
       lt_zyyzb011 TYPE TABLE OF ty_data1 WITH HEADER LINE,
       gs_zyyzb011 TYPE ty_data1.



  SELECT zsj FROM zyyzb011 INTO TABLE lt_zyyzb011.

  LOOP AT lt_zyyzb011.
    IF sy-subrc 0.
      gs_zyyzb011-zsj lt_zyyzb011-zsj.
    ENDIF.
  ENDLOOP.

  SELECT vrsnr FROM knb1 INTO CORRESPONDING FIELDS OF TABLE lt_knb1 WHERE knb1~vrsnr <> ''.
*
  SELECT
  t05~kunnr
  t05~name1
  t01~bztxt
  t03~ktext
  t04~vtext
  t06~vrsnr
  FROM knvv AS t02
  INNER JOIN kna1 AS t05 ON t02~kunnr t05~kunnr
  INNER JOIN t171t AS t01 ON t02~bzirk t01~bzirk
  INNER JOIN t151t AS t03 ON t02~kdgrp t03~kdgrp
  INNER JOIN t188t AS t04 ON t02~konda t04~konda
  INNER JOIN knb1 AS T06 ON T02~kunnr t06~kunnr
  INTO CORRESPONDING FIELDS OF TABLE
  lt_data
  WHERE t02~kunnr IN s_kunnr "客户编码
  AND   t02~kdgrp IN s_kdgrp "定价组
  AND   t02~vkorg p_vkorg  "工厂
  AND   t02~bzirk IN s_bzirk "销售地区
  AND   t02~vtweg '00'
  AND   t02~spart '00'
  AND   t03~spras sy-langu
  AND   t01~spras sy-langu
  AND   t04~spras sy-langu
 AND   t06~vrsnr <> ''.

  DATA:a(10TYPE c,
       b(8TYPE d,
       c(8TYPE d,
       d(8TYPE i,
       e(8TYPE d,
       f(8TYPE c,
       h(8TYPE i.

  f gs_zyyzb011-zsj.
  h f.

  LOOP AT lt_data.

*    LOOP AT lt_knb1.
*      IF sy-subrc = 0.
*        gs_knb1-vrsnr = lt_knb1-vrsnr.
*      ENDIF.
      a lt_data-vrsnr.
      CONCATENATE a+0(4a+5(2a+8(2INTO c.
      b sy-datum.
      e b.
      d e.
*    ENDLOOP.

    lt_data-zyxqz d.
    MODIFY lt_data." INDEX sy-tabix.

  ENDLOOP.

  PERFORM frm_show_data.
*  PERFORM display_data.
ENDFORM.                    " FRM_GET_DATA
*&---------------------------------------------------------------------*
*&      Form  FRM_SHOW_DATA
*&---------------------------------------------------------------------*
*       展示数据
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_SHOW_DATA .

  DATA:   ws_fieldcat        TYPE slis_t_fieldcat_alv WITH HEADER LINE,
           ws_fieldgroups_tab TYPE slis_t_sp_group_alv,
           ws_layout          TYPE slis_layout_alv,
           ws_sortfields_tab  TYPE slis_t_sortinfo_alv WITH HEADER LINE,
           ws_events          TYPE slis_t_event.


  DATAnn TYPE VALUE 0.
  DATAtitle TYPE lvc_title.
  DATAcolor TYPE slis_t_specialcol_alv WITH HEADER LINE.
  DATA:gs_settings TYPE lvc_s_glay.

  DEFINE hout.
    nn nn + 1.
    ws_fieldcat-col_pos       =  nn.
    ws_fieldcat-tabname       'GT_ITAB'.
    ws_fieldcat-hotspot       &1.
    ws_fieldcat-fieldname     &2.
    ws_fieldcat-seltext_m     &3.
    ws_fieldcat-edit          &4.
    ws_fieldcat-quantity      &5.
    ws_fieldcat-ref_tabname   &6.
    ws_fieldcat-ref_fieldname &7.
    ws_fieldcat-no_zero       &8.
    ws_fieldcat-do_sum        &9.

    append ws_fieldcat.
    clear ws_fieldcat.
  END-OF-DEFINITION.

  ws_layout-zebra             'X'.
  ws_layout-get_selinfos      'X'.
  ws_layout-colwidth_optimize 'X'.
  ws_layout-detail_popup      'X'.
*  ws_layout-box_fieldname = 'X'.
*  ws_layout-box_tabname = 'GT_ITAB'.
  gs_settings-edt_cll_cb 'X'.

  hout:
  ''   'KUNNR'  '客户编码' '' ''  ''  ''  ''  '',
  ''   'NAME1'  '客户名称' '' ''  ''  ''  ''  '',
  ''   'BZTXT'  '销售地区' '' ''  ''  ''  ''  '',
  ''   'KTEXT'  '客户组' '' ''  ''  ''  ''  '',
  ''   'VTEXT'  '定价组' '' ''  ''  ''  ''  '',
  ''   'VRSNR'  '客户有效期' '' ''  ''  ''  ''  '',
  ''   'ZYXQZ'  '有效期值' '' '' '' '' '' ''.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program          sy-repid
*     I_CALLBACK_HTML_TOP_OF_PAGE = 'HTML_TOP_OF_PAGE1'
      i_html_height_top           15                   "HTML框的高度
      is_layout                   ws_layout
      it_fieldcat                 ws_fieldcat[]
      it_special_groups           ws_fieldgroups_tab[]
      it_sort                     ws_sortfields_tab[]
*     i_callback_html_top_of_page = 'ALV_TOP_OF_PAGE'
      i_callback_user_command     'USER_COMMAND'
      i_callback_pf_status_set    'STATUS9000'
      i_grid_settings             gs_settings
*     I_GRID_TITLE                = TITLE
      i_default                   'X'
      i_save                      'A'
    TABLES
      t_outtab                    lt_data[]
    EXCEPTIONS
      program_error               1
      OTHERS                      2.


  IF SY-SUBRC <> 0.
* Implement suitable error handling here
  ENDIF.





ENDFORM.                    " FRM_SHOW_DATA


FORM user_command  USING i_ucomm LIKE sy-ucomm
is_selfield TYPE slis_selfield."USING r_ucomm LIKE sy-ucomm " rs_selfield TYPE slis_selfield.
  CASE i_ucomm.
    WHEN '&F15' OR '&F03'.
      LEAVE TO SCREEN 0.
    WHEN 'PRINT'.
      PERFORM PING_SMART.
  ENDCASE.
ENDFORM.

FORM STATUS9000 USING rt_extab TYPE slis_t_extab."rt_extab TYPE slis_t_extab.
  SET PF-STATUS 'STATUS9000'.
ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  PING_SMART
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM PING_SMART .
*  DATA:lt_output LIKE lt_data.
*  DATA:ls_output LIKE ls_data.

*  DATA:lt_output TYPE TABLE OF ty_itab WITH HEADER LINE.
*  DATA:ls_output TYPE ty_itab.
*
*  DATA:lt_output1 TYPE TABLE OF ty_itab WITH HEADER LINE.
*  DATA:ls_output1 LIKE ls_data.

  CLEAR:lt_item.
*编写行项目
  LOOP AT lt_data INTO ls_data.
    IF sy-subrc 0.
      lt_data-zyxqz ls_data-zyxqz.
    ENDIF.
    MOVE-CORRESPONDING ls_data TO ls_item.
    APPEND ls_item TO lt_item.
    CLEAR ls_item.
  ENDLOOP.


  DATAp_formname TYPE tdsfname.
  DATAl_fm_name  TYPE rs38l_fnam.


  p_formname '&&&&&'.

  IF p_formname IS INITIAL.
    EXIT.
  ENDIF.
* determine smartform function module for delivery note
  CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
    EXPORTING
      formname           p_formname
    IMPORTING
      fm_name            l_fm_name
    EXCEPTIONS
      no_form            1
      no_function_module 2
      OTHERS             3.
  IF sy-subrc <> 0.
    EXIT.
  ENDIF.

  CALL FUNCTION l_fm_name
    EXPORTING
      ls_data          lt_data
    TABLES
      lt_item          lt_item
    EXCEPTIONS
      formatting_error 1
      internal_error   2
      send_error       3
      user_canceled    4
      OTHERS           5.
  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.                    " PING_SMART

FORM FRM_FIELDCAT  USING  p_field p_text p_edit .
  DATA lw_fcat TYPE lvc_s_fcat.
  lw_fcat-fieldname p_field.
  lw_fcat-coltext p_text.
  lw_fcat-edit p_edit.
  APPEND lw_fcat TO gt_fieldcat.

ENDFORM.

 

0 0
原创粉丝点击