下面展示一个例子 报表开发案例
。
使用FALV的方法
// coding by wangchun
*&---------------------------------------------------------------------*
*& Report ZPROMGRAM_WC02
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zpromgram_wc02.
TABLES: vbak,vbap,tvgrt.
TYPES:BEGIN OF ty_vbak,
auart LIKE vbak-auart,"销售凭证类型
vkorg LIKE vbak-vkorg,"销售组织
vtweg LIKE vbak-vtweg,"分销渠道
spart LIKE vbak-spart,"产品组
vkbur LIKE vbak-vkbur,"销售办事处
vkgrp LIKE vbak-vkgrp,"销售组
bezei LIKE tvgrt-bezei,"销售员
kunnr LIKE vbak-kunnr," 售达方
name1 LIKE kna1-name1,"售达方描述
vbeln LIKE vbak-vbeln,"销售订单
posnr LIKE vbap-posnr, "行项目
erdat LIKE vbap-erdat, "创建时间
bstnk LIKE vbak-bstnk, "客户参考
matnr LIKE vbap-matnr, "物料
maktx LIKE makt-maktx, "物料
kwmeng LIKE vbap-kwmeng, "数量
ernam LIKE vbak-ernam, " 创建人
END OF ty_vbak.
DATA:gt_alv TYPE TABLE OF ty_vbak.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS:s_auart FOR vbak-auart , "订单类型
s_vkorg FOR vbak-vkorg, "销售组织
s_kunnr FOR vbak-kunnr, "售达方
s_vbeln FOR vbak-vbeln, "订单编号
s_erdat FOR vbap-erdat ."创建日期
.
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION .
PERFORM:get_data. "取数
PERFORM:alv_show. "展shi
END-OF-SELECTION .
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM get_data .
SELECT DISTINCT
a~vkorg "销售组织
a~vtweg "分销渠道
a~vkgrp "销售组
a~spart "产品组
a~vkbur "销售办事处
a~auart "订单类型
a~erdat "订单日期
a~vbeln "订单号
a~bstnk "客户参考
a~kunnr "客户编码
a~waerk "币种
a~ernam "制单人
b~posnr "行号
b~matnr "物料
b~kwmeng "订单数量
c~name1 "客户全称
d~bezei "销售人员
e~maktx "物料描述
INTO CORRESPONDING FIELDS OF TABLE gt_alv
FROM vbak AS a
INNER JOIN vbap AS b ON a~vbeln = b~vbeln
INNER JOIN kna1 AS c ON a~kunnr = c~kunnr
INNER JOIN tvgrt AS d ON a~vkgrp = d~vkgrp AND d~spras = '1'
INNER JOIN makt AS e ON b~matnr = e~matnr AND e~spras = '1'
WHERE a~auart IN s_auart
AND a~vkorg IN s_vkorg
AND a~kunnr IN s_kunnr
AND a~vbeln IN s_vbeln
AND b~erdat IN s_erdat.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form ALV_SHOW
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM alv_show .
DATA(falv) = zcl_falv=>create( CHANGING ct_table = gt_alv ).
falv->display( ).
ENDFORM.