天天看点

ALV模版

&---------------------------------------------------------------------

*& Report Y003

*&

REPORT y003.

  • 标 准 T Y P E S P O O L S 引 入 块 *

*引入标准type pool

TYPE-POOLS:slis.

  • TABLES *

TABLES: mara,sscrfields.

  • T Y P E S - 输 出 结 构 定 义 *

TYPES:BEGIN OF ty_data,

box   TYPE char1,
    matnr TYPE matnr,
  END OF ty_data,
  BEGIN OF ty_mara,
    matnr TYPE matnr,
    END OF ty_mara.
           
  • DATA *

DATA:it_data TYPE TABLE OF ty_data,

wa_data TYPE ty_data,
 lt_mara TYPE TABLE OF ty_mara,
 functxt TYPE smp_dyntxt.
           
  • ALV定义 *

DATA:it_fieldcat TYPE lvc_t_fcat,

wa_fieldcat LIKE LINE OF it_fieldcat,
 it_layout   TYPE TABLE OF lvc_s_layo,
 wa_layout   TYPE lvc_s_layo,
 it_events   TYPE slis_t_event,
 wa_events   LIKE LINE OF it_events.           

DATA: i_grid_settings TYPE lvc_s_glay.

i_grid_settings-edt_cll_cb = 'X'.

  • 定义宏 *

DEFINE init_fieldcat.

CLEAR wa_fieldcat.

wa_fieldcat-fieldname = &1.

wa_fieldcat-coltext = &2.

wa_fieldcat-ref_table = &3.

wa_fieldcat-ref_field = &4.

  • wa_fieldcat-no_zero = &5.
  • wa_fieldcat-emphasize = &6.
  • wa_fieldcat-edit = &7.

    APPEND wa_fieldcat TO it_fieldcat.

END-OF-DEFINITION.

  • 选 择 屏 幕 定 义 块

"工具条按钮 最多为5个.

SELECTION-SCREEN FUNCTION KEY 1.

SELECTION-SCREEN BEGIN OF BLOCK text WITH FRAME TITLE text-001.

PARAMETERS: p_x1 RADIOBUTTON GROUP gp1 DEFAULT 'X',

p_x2 RADIOBUTTON GROUP gp1.           

SELECTION-SCREEN SKIP 1.

SELECTION-SCREEN ULINE.

PARAMETERS:p_bukrs TYPE bukrs OBLIGATORY DEFAULT '2000' MODIF ID m1.

SELECT-OPTIONS:s_matnr FOR mara-matnr MODIF ID m1.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT (50) text-002 .

SELECTION-SCREEN END OF LINE.

PARAMETERS: p_path LIKE rlgrap-filename MODIF ID m2. " 导入文件

SELECTION-SCREEN END OF BLOCK text.

SELECTION-SCREEN BEGIN OF BLOCK text2 WITH FRAME TITLE text-003.

SELECTION-SCREEN: COMMENT /1(75) text-004 MODIF ID m3.

SELECTION-SCREEN END OF BLOCK text2 .

  • 初 始 化 块 *

INITIALIZATION.

PERFORM frm_init_data.

  • PAI *

AT SELECTION-SCREEN.

*权限检查

AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'

ID 'ACTVT'  DUMMY
       ID 'BUKRS' FIELD p_bukrs.           

IF sy-subrc NE 0.

MESSAGE e004(zfi01) WITH p_bukrs.           

ENDIF.

  • CASE sscrfields-ucomm.
  • WHEN 'FC01'.
  • "下载模板文件

    ** PERFORM download_excel.

  • WHEN 'ONLI'."""F8
  • IF p_path IS INITIAL.
  • MESSAGE i000(00) WITH '文件路径为空,请您输入文件路径!' DISPLAY LIKE 'E'.
  • STOP.
  • WHEN OTHERS.
  • ENDCASE.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path.

  • PERFORM frm_browser_file USING p_path.
  • PBO *

AT SELECTION-SCREEN OUTPUT.

LOOP AT SCREEN .

IF  screen-group1 = 'M1'.           
  • IF p_x1 = 'X' .
  • screen-invisible = '0'.
  • screen-active = '1'.
  • ELSE.
  • screen-invisible = '1'.
  • screen-active = '0'.
  • MODIFY SCREEN.
    ENDIF.           
    ENDLOOP.
  • 逻 辑 处 理 块 *

START-OF-SELECTION.

PERFORM frm_getdata.

PERFORM frm_dealdata.

END-OF-SELECTION.

PERFORM frm_layout.

PERFORM frm_fieldcat.

PERFORM frm_output.

*& Form FRM_GETDATA

  • text
  • --> p1 text
  • <-- p2 text

FORM frm_getdata .

SELECT matnr INTO TABLE lt_mara

UP TO 20 ROWS           

FROM mara WHERE matnr IN s_matnr.

IF sy-subrc <> 0.

MESSAGE e001(00) WITH '没有可以查询到的记录!'.           

MOVE-CORRESPONDING lt_mara TO it_data.

ENDFORM.

*& Form FRM_DEALDATA

FORM frm_dealdata .

SORT it_data BY matnr ASCENDING.

*& Form FRM_LAYOUT

FORM frm_layout .

wa_layout-cwidth_opt = 'X'."""自动列宽

wa_layout-zebra = 'X'."""斑马线

wa_layout-sel_mode = 'X'.""""选择行模式

wa_layout-box_fname = 'BOX'.""""选择

*& Form FRM_FIELDCAT

FORM frm_fieldcat .

init_fieldcat 'MATNR' '物料编码' 'MARA' 'MATNR'.

*& Form FRM_OUTPUT

FORM frm_output .

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'

EXPORTING           
  • I_INTERFACE_CHECK = ' '
  • I_BYPASSING_BUFFER =
  • I_BUFFER_ACTIVE =
    i_callback_program       = sy-repid
      i_callback_pf_status_set = 'ALV_PF_STATUS'
      i_callback_user_command  = 'ALV_USER_COMMAND'           
  • I_CALLBACK_TOP_OF_PAGE = ' '
  • I_CALLBACK_HTML_TOP_OF_PAGE = ' '
  • I_CALLBACK_HTML_END_OF_LIST = ' '
  • I_STRUCTURE_NAME =
  • I_BACKGROUND_ID = ' '
  • I_GRID_TITLE =
    i_grid_settings          = i_grid_settings
      is_layout_lvc            = wa_layout
      it_fieldcat_lvc          = it_fieldcat           
  • IT_EXCLUDING =
  • IT_SPECIAL_GROUPS_LVC =
  • IT_SORT_LVC =
  • IT_FILTER_LVC =
  • IT_HYPERLINK =
  • IS_SEL_HIDE =
  • I_DEFAULT = 'X'
    i_save                   = 'A'           
  • IS_VARIANT =
  • IT_EVENTS =
  • IT_EVENT_EXIT =
  • IS_PRINT_LVC =
  • IS_REPREP_ID_LVC =
  • I_SCREEN_START_COLUMN = 0
  • I_SCREEN_START_LINE = 0
  • I_SCREEN_END_COLUMN = 0
  • I_SCREEN_END_LINE = 0
  • I_HTML_HEIGHT_TOP =
  • I_HTML_HEIGHT_END =
  • IT_ALV_GRAPHICS =
  • IT_EXCEPT_QINFO_LVC =
  • IR_SALV_FULLSCREEN_ADAPTER =
  • IMPORTING
  • E_EXIT_CAUSED_BY_CALLER =
  • ES_EXIT_CAUSED_BY_USER =
    TABLES
      t_outtab                 = it_data[]
    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.           

*& Form ALV_PF_STATUS

FORM alv_pf_status USING rt_extab TYPE slis_t_extab .

  • DATA: l_code TYPE slis_extab.
  • l_code-fcode = '&SC'.
  • APPEND l_code TO rt_extab.

    SET PF-STATUS 'STANDARD_FULLSCREEN' EXCLUDING rt_extab.

SET TITLEBAR 'T001' WITH '物料信息'.

ENDFORM. " ALV_PF_STATUS

*& Form FRM_USER_COMMAND

FORM alv_user_command USING p_ucomm TYPE sy-ucomm rs_selfield TYPE slis_selfield .

CASE p_ucomm.

WHEN '&F03'.
  LEAVE TO SCREEN 0.
WHEN '&F15'.
  LEAVE PROGRAM.
WHEN OTHERS.           

ENDFORM. " FRM_USER_COMMAND

*& Form FRM_INIT_DATA

FORM frm_init_data .

functxt-icon_id = icon_export.

functxt-quickinfo = '模板下载'.

functxt-icon_text = '模板下载'.

sscrfields-functxt_01 = functxt.

继续阅读