ALV标准报表开发(一)

*&---------------------------------------------------------------------*
*& Report  Z_ALV_TEMPLATE
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  Z_ALV_TEMPLATE.
*第一步,定义需要使用的表
TABLES:VBAK,VBAP.
*第二步,定义需要使用的类型池
TYPE-POOLS:SLIS.
*第三步,定义要使用的变量和内表
*alv需要使用的变量(开始).
DATA:STR_LAYOUT TYPE SLIS_LAYOUT_ALV,            "定义ALV布局
      STR_FIELDCAT TYPE SLIS_FIELDCAT_ALV,        "定义ALV抬头结构
      TAB_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.      "定义ALV抬头表

*alv需要使用的变量(结束)         固定部分,可以直接拷贝
DATA:BEGIN OF ALV_OUTPUT OCCURS 0,
  SEL(1) TYPE C,
  VBELN LIKE VBAK-VBELN,"销售订单编号
  ERDAT LIKE VBAK-ERDAT,"销售订单创建日期
  AUART LIKE VBAK-AUART,"销售订单类型
  POSNR LIKE VBAP-POSNR,"订单项目行
  MATNR LIKE VBAP-MATNR,"物料编号
  ARKTX LIKE VBAP-ARKTX,"物料名称
  KWMENG LIKE VBAP-KWMENG,"数量
  VRKME LIKE VBAP-VRKME,"销售单位
  END OF ALV_OUTPUT.
*  第四步,定义选择屏幕
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETERS: VKORG LIKE VBAK-VKORG,
AUART LIKE VBAK-AUART.
SELECT-OPTIONS:VBELN FOR VBAK-VBELN.
SELECTION-SCREEN END OF BLOCK B1 .
*开始按条件查询
START-OF-SELECTION.
*获取需要显示的数据
  PERFORM GET_DATA.
*设置alv抬头
  PERFORM SET_ALV_HEAD.
*设置alv布局
  PERFORM SET_ALV_LAYOUT.
*显示数据
  PERFORM SHOW_ALV_DATA.
*&---------------------------------------------------------------------*
*&      Form  GET_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM GET_DATA .
  SELECT
    VBAK~VBELN "销售订单编号
    VBAK~ERDAT "销售订单创建日期
    VBAK~AUART "销售订单类型
    VBAP~POSNR "订单项目行
    VBAP~MATNR "物料编号
    VBAP~ARKTX "物料名称
    VBAP~KWMENG "数量
    VBAP~VRKME "销售单位
    INTO CORRESPONDING FIELDS OF TABLE ALV_OUTPUT
    FROM VBAK
    INNER JOIN VBAP ON VBAK~VBELN = VBAP~VBELN
    WHERE VBAK~AUART = AUART AND VBAK~VKORG = VKORG AND VBAK~VBELN IN VBELN.
ENDFORM.                    " GET_DATA
*&---------------------------------------------------------------------*
*&      Form  SET_ALV_HEAD
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM SET_ALV_HEAD .
  CLEAR TAB_FIELDCAT.
  DEFINE ADD_FIELDCAT.
    STR_FIELDCAT-FIELDNAME = &1.
    STR_FIELDCAT-SELTEXT_L = &2.
    STR_FIELDCAT-NO_ZERO = &3.
    STR_FIELDCAT-COL_POS = &4.
    APPEND STR_FIELDCAT TO TAB_FIELDCAT.
  END-OF-DEFINITION.
  ADD_FIELDCAT 'VBELN' '销售订单号' 'X' '1'.
  ADD_FIELDCAT 'ERDAT' '创建日期' '' '4'.
  ADD_FIELDCAT 'AUART' '销售订单类型' '' '3'.
  ADD_FIELDCAT 'POSNR' '行项目' '' '2'.
  ADD_FIELDCAT 'MATNR' '物料编号' 'X' '5'.
  ADD_FIELDCAT 'ARKTX' '物料名称' '' '6'.
  ADD_FIELDCAT 'KWMENG' '数量' '' '7'.
  ADD_FIELDCAT 'VRKME' '销售单位' '' '8'.
ENDFORM.                    " SET_ALV_HEAD
*&---------------------------------------------------------------------*
*&      Form  SHOW_ALV_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM SHOW_ALV_DATA .
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
      EXPORTING
        I_CALLBACK_PROGRAM       = SY-REPID
        I_GRID_TITLE             = ''
        IS_LAYOUT                = STR_LAYOUT
        IT_FIELDCAT              = TAB_FIELDCAT[]
*      I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'"自定义ALV工具栏
*      I_CALLBACK_USER_COMMAND  = 'USER_COMMAND'"定义ALV工具栏自定义按钮事件
      TABLES
        T_OUTTAB                 = ALV_OUTPUT
      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.                    " SHOW_ALV_DATA
*&---------------------------------------------------------------------*
*&      Form  SET_ALV_LAYOUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM SET_ALV_LAYOUT .
  CLEAR STR_LAYOUT.
  STR_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
ENDFORM.                    " SET_ALV_LAYOUT

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值