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

原创 2011年08月16日 17:36:28

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

 

*&---------------------------------------------------------------------*
*& 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

 

相关文章推荐

付款申请单,如何追查跨级源头采购订单

案例背景: 采购订单 -> 收料通知单 -> 采购入库单 -> 应付单 -> 付款申请单,采购订单经过多步下推,才生成付款申请单。 现在需要根据付款申请单的单据内码,寻找其源头的采购订单; ...

abap 自定义alv的一个小例子

  • 2013年03月28日 13:40
  • 26KB
  • 下载

drools的简单demo-廉价房申请单

很久没写程序了,初学了下drools,简单的试了下手感,感觉还是比较好用的,基于rete算法,可以很容易的匹配数据,帮助程序员梳理逻辑,挺好的service层的框架,比较适合逻辑比较复杂多变的情况,d...

客户停电工作申请单11

  • 2009年10月31日 17:11
  • 16KB
  • 下载

vb付款申请单

  • 2013年06月08日 14:03
  • 267KB
  • 下载

智遥工作流开发ECR(工程变更申请单)流程

 一、ECR简单介绍 ECR的全称Engineering Change Request 中文名“工程并更申请单”,是企业研发部门经常使用的一种重要单据;在产品研发过程中设计到工程变更,就要...

申请单管理系统

  • 2014年09月01日 10:45
  • 1.4MB
  • 下载

【干货分享】流程DEMO-付款申请单

流程名:  付款申请单    业务描述:  包括每月固定开支、固定资产付款、办公用品付款、工资发放、个人所得税缴纳、营业税缴纳、公积金、社保缴纳和已签订合同的按期付款,最后是出纳付款,出纳核对...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ABAP_ALV_例子(采购申请单查询)
举报原因:
原因补充:

(最多只允许输入30个字)