ABAP_ALV_例子(采购申请单查询)

将代码直接拷贝就可以运行.

 

*&---------------------------------------------------------------------*
*& Report  ZCMH9
*&
*&---------------------------------------------------------------------*
*&  ALV  例子 采购申请单查询
*&
*&---------------------------------------------------------------------*

REPORT  ZCMH9.

TABLES: eban,sscrfields.

DATA:  dyn TYPE smp_dyntxt.

DATA: lt_alv_fieldcat TYPE slis_t_fieldcat_alv,
      ls_alv_fieldcat TYPE slis_fieldcat_alv,
      lv_layout TYPE slis_layout_alv,     " layout
      lv_layout_lvc TYPE lvc_s_layo,      " layout
      gt_fieldcat TYPE lvc_t_fcat,
      gt_out_fcat TYPE lvc_t_fcat,

      gs_data TYPE lvc_s_fcat.

TYPESBEGIN OF typ_eban.
        INCLUDE STRUCTURE eban.
        TYPES: box TYPE char1,
        celltab TYPE lvc_t_styl.
TYPESEND OF typ_eban.

DATA: gt_eban TYPE STANDARD TABLE OF typ_eban,
      gs_eban LIKE LINE OF gt_eban,
      gt_fcat_eban TYPE lvc_t_fcat.

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

  SELECT-OPTIONS: p_BANFN FOR eban-BANFN .

SELECTION-SCREEN END OF BLOCK blk01.


SELECTION-SCREEN FUNCTION KEY 1.

INITIALIZATION.
  dyn-text = 'PR明细清单'.
  sscrfields-functxt_01 = dyn.


AT SELECTION-SCREEN OUTPUT.


at SELECTION-SCREEN.

START-OF-SELECTION.
  perform sub_alv_diaplay_purchase.



FORM sub_init_layout.
  CLEAR: lv_layout.
  lv_layout-zebra = 'X'.
  lv_layout-colwidth_optimize = 'X'.
  lv_layout-box_fieldname = 'BOX'.
  CLEAR: lv_layout_lvc.
  lv_layout_lvc-zebra = 'X'.
  lv_layout_lvc-cwidth_opt = 'X'.
  lv_layout_lvc-box_fname = 'BOX'.
  lv_layout_lvc-stylefname = 'CELLTAB'.
ENDFORM.                    "sub_init_layout

*&---------------------------------------------------------------------*
*&      Form  sub_alv_diaplay_purchase
*&---------------------------------------------------------------------*
*       显示采购申请
*----------------------------------------------------------------------*
FORM sub_alv_diaplay_purchase.
  PERFORM sub_init_layout.
  PERFORM sub_get_purchase_data.
  PERFORM init_purchase_field.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
      i_callback_program       = sy-repid
      is_layout_lvc            = lv_layout_lvc
      it_fieldcat_lvc          = gt_fcat_eban
*     i_callback_pf_status_set = 'PF_STATUS_SET'
      i_callback_user_command  = 'USER_COMMAND'
      i_default                = 'X'
      i_save                   = 'X'
    TABLES
      t_outtab                 = gt_eban
    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.                    "sub_alv_diaplay_material

*&---------------------------------------------------------------------*
*&      Form  sub_get_purchase_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM sub_get_purchase_data.

  DATA: lt_styletab TYPE lvc_t_styl,
        ls_stylerow TYPE lvc_s_styl,
        lv_idx LIKE sy-tabix.

  SELECT *
    FROM eban INTO CORRESPONDING FIELDS OF TABLE gt_eban
    WHERE BANFN IN p_BANFN .

  LOOP AT gt_eban INTO gs_eban.
    CLEAR: ls_stylerow, lt_styletab, lt_styletab[].
    lv_idx = sy-tabix.
    ls_stylerow-fieldname = 'MENGE'.
    ls_stylerow-style = cl_gui_alv_grid=>mc_style_disabled.
    INSERT ls_stylerow INTO TABLE lt_styletab.

    ls_stylerow-fieldname = 'LFDAT'.
    ls_stylerow-style = cl_gui_alv_grid=>mc_style_disabled.
    INSERT ls_stylerow INTO TABLE lt_styletab.

    gs_eban-celltab = lt_styletab.

    MODIFY gt_eban INDEX lv_idx FROM gs_eban TRANSPORTING celltab.
  ENDLOOP.

ENDFORM.                    "sub_get_purchase_data

*&---------------------------------------------------------------------*
*&      Form  user_command
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->RF_UCOMM     text
*      -->RS_SELFIELD  text
*----------------------------------------------------------------------*
FORM user_command USING rf_ucomm LIKE sy-ucomm rs_selfield TYPE slis_selfield.
  DATA: lt_styletab TYPE lvc_t_styl,
        ls_stylerow TYPE lvc_s_styl,
        lv_idx LIKE sy-tabix.
  CASE rf_ucomm.
    WHEN '&IC1'.
      IF rs_selfield-fieldname EQ 'BANFN' AND rs_selfield-value IS NOT INITIAL.
        SET PARAMETER ID 'BAN' FIELD rs_selfield-value.
        CALL TRANSACTION 'ME52N' AND SKIP FIRST SCREEN.

      ENDIF.

  ENDCASE.
ENDFORM.                    "user_command


*&---------------------------------------------------------------------*
*&      Form  init_purchase_field
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM init_purchase_field.
  CLEAR: gt_fcat_eban, gt_fcat_eban[].
  DATA: ls_fcat_eban LIKE LINE OF gt_fcat_eban.

  DEFINE  init_fcat_eban.
    clear ls_fcat_eban.
    ls_fcat_eban-fieldname = &1.
    ls_fcat_eban-scrtext_m = &2.
    ls_fcat_eban-no_zero = 'X'.
    ls_fcat_eban-edit = &3.
    ls_fcat_eban-hotspot = &4.
    append ls_fcat_eban to gt_fcat_eban.
  END-OF-DEFINITION.

  init_fcat_eban 'MATNR' '物料' space space.
  init_fcat_eban 'TXZ01' '物料描述' space space.
  init_fcat_eban 'WERKS' '工厂' space space.
  init_fcat_eban 'LGORT' '库位' space space.
  init_fcat_eban 'BANFN' '采购申请' space 'X'.
  init_fcat_eban 'BNFPO' '采购编号' space space.
  init_fcat_eban 'FLIEF' '固定供应商' space space.
  init_fcat_eban 'BSART' '采购申请凭证类型' space space.
  init_fcat_eban 'BSTYP' '采购凭证类型' space space.

  init_fcat_eban 'STATU' '采购申请处理状态' space space.

  init_fcat_eban 'EKGRP' '采购组' space space.
  init_fcat_eban 'MENGE' '申请数量' 'X' space.
  init_fcat_eban 'MEINS' '单位' space space.
  init_fcat_eban 'BADAT' '需求日期' space space.
  init_fcat_eban 'LFDAT' '交货日期' 'X'  space.
ENDFORM.                    "init_purchase_field

 

阅读更多
个人分类: SAP-ALL ABAP
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭