SAP的ALV输出列表
来源:互联网 发布:怎么添加网络连接 编辑:程序博客网 时间:2024/05/18 02:45
REPORT z_test01 NO STANDARD PAGE HEADING.
*--------------------------定义数据------------------------------------*
*WERKS=工厂,NAME1=工厂名称,BUDAT=凭证日期,MBLNR=物料凭证编号,
*MJAHR=物料凭证年度,VGART=凭证类型----------*
DATA: BEGIN OF it_result OCCURS 0,
werks LIKE t001w-werks,
name1 LIKE t001w-name1,
budat LIKE mkpf-budat,
dmbtr LIKE mseg-dmbtr,
zwzxh TYPE p DECIMALS 3,
END OF it_result.
DATA: BEGIN OF it_t001w OCCURS 0,
werks LIKE t001w-werks,
name1 LIKE t001w-name1,
END OF it_t001w.
DATA: BEGIN OF it_mkpf OCCURS 0,
mblnr LIKE mkpf-mblnr,
mjahr LIKE mkpf-mjahr,
budat LIKE mkpf-budat,
END OF it_mkpf.
DATA: BEGIN OF it_mseg OCCURS 0,
mblnr LIKE mseg-mblnr,
mjahr LIKE mseg-mjahr,
zeile LIKE mseg-zeile,
werks LIKE mseg-werks,
dmbtr LIKE mseg-dmbtr,
shkzg LIKE mseg-shkzg,
END OF it_mseg.
*定义ALV使用到的内存池
TYPE-POOLS: slis.
*定义一列的描述对象,通过此对象可以对列的属性进行设置
*DATA: is_layout TYPE slis_layout_alv.
*定义列的内表对象,把列放入此内表中,通过此内表把标题输出到屏幕
data: gt_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE.
DATA: tmp_title(70),
tmp_repid LIKE sy-repid.
*----------------初始选择屏幕--------------------*
SELECT-OPTIONS: s_werks FOR it_result-werks,
s_budat FOR it_result-budat.
*这里定义一个单选按钮的选择屏幕,如果R1则传统列表输出,如果R2则用ALV输出
PARAMETERS: r1 RADIOBUTTON GROUP rad1,
r2 RADIOBUTTON GROUP rad1 DEFAULT 'X'.
*-------------------TOP-OF-PAGE------------------*
TOP-OF-PAGE.
* PERFORM frm_head_output .
*------------------START-OF-SELECTION-------------*
START-OF-SELECTION.
PERFORM frm_getdata.
PERFORM frm_process.
*------------------END-OF-SELECTION---------------*
END-OF-SELECTION.
PERFORM frm_output.
*&---------------------------------------------------------------------*
*& Form FRM_GETDATA
*&---------------------------------------------------------------------*
* 获取数据
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_getdata .
SELECT * FROM t001w "工厂表
INTO CORRESPONDING FIELDS OF TABLE it_t001w
WHERE werks IN s_werks.
SELECT * FROM mkpf "物料表
INTO CORRESPONDING FIELDS OF TABLE it_mkpf
WHERE vgart EQ 'WA' AND budat IN s_budat.
SELECT * FROM mseg "分段物料
INTO CORRESPONDING FIELDS OF TABLE it_mseg
WHERE werks IN s_werks
AND bwart IN ('201','202','261','262').
ENDFORM. " FRM_GETDATA
*&---------------------------------------------------------------------*
*& Form FRM_PROCESS
*&---------------------------------------------------------------------*
* 对数据进行处理
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_process .
LOOP AT it_mseg.
CLEAR it_result.
READ TABLE it_mkpf WITH KEY mblnr = it_mseg-mblnr "根据条件取出某行数据后改变它的值
mjahr = it_mseg-mjahr.
CHECK sy-subrc EQ 0.
READ TABLE it_t001w WITH KEY werks = it_mseg-werks. "根据条件取出某行数据后改变它的值
it_result-werks = it_t001w-werks.
it_result-name1 = it_t001w-name1.
it_result-budat = it_mkpf-budat.
CASE it_mseg-shkzg. "判断是借还是贷
WHEN 'H'.
it_result-dmbtr = it_mseg-dmbtr.
WHEN 'S'.
it_result-dmbtr = 0 - it_mseg-dmbtr.
ENDCASE.
COLLECT it_result.
ENDLOOP.
ENDFORM. " FRM_PROCESS
*&---------------------------------------------------------------------*
*& Form FRM_OUTPUT
*&---------------------------------------------------------------------*
* 输出数据
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_output .
IF r2 = 'X' .
gt_fieldcat-fieldname = 'WERKS'.
gt_fieldcat-seltext_m = '物料号'.
APPEND gt_fieldcat.
CLEAR gt_fieldcat.
gt_fieldcat-fieldname = 'NAME1'.
gt_fieldcat-seltext_m = '物料名称'.
gt_fieldcat-outputlen = 30.
APPEND gt_fieldcat.
CLEAR gt_fieldcat.
gt_fieldcat-fieldname = 'BUDAT'.
gt_fieldcat-seltext_m = '记帐日期'.
gt_fieldcat-outputlen = 10.
APPEND gt_fieldcat.
CLEAR gt_fieldcat.
gt_fieldcat-fieldname = 'DMBTR'.
gt_fieldcat-seltext_m = '本位币金额'.
gt_fieldcat-outputlen = 20.
APPEND gt_fieldcat.
CLEAR gt_fieldcat.
gt_fieldcat-fieldname = 'ZWZXH'.
gt_fieldcat-seltext_m = '物资消耗(万元/kwh)'.
gt_fieldcat-outputlen = 30.
APPEND gt_fieldcat.
CLEAR gt_fieldcat.
tmp_title = '库存资金占用额'.
tmp_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = tmp_repid "主程序名
it_fieldcat = gt_fieldcat[] "标题字段内表
i_grid_title = tmp_title "表格标题
TABLES
t_outtab = it_result. "需要输出内容的内表
ENDIF.
IF r1 = 'X'.
LOOP AT it_result.
WRITE: '|',(10) it_result-werks CENTERED,
'|',(40) it_result-name1,
'|',(15) it_result-budat CENTERED,
'|',(21) it_result-dmbtr,
'|',(22) it_result-zwzxh ,
'|'.
ULINE /.
ENDLOOP.
ENDIF.
ENDFORM. " FRM_OUTPUT
*&---------------------------------------------------------------------*
*& Form FRM_HEAD_OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
*FORM frm_head_output .
*
* ULINE .
* WRITE: '|',(10) '物料号' CENTERED,
* '|',(40) '物料名称' CENTERED,
* '|',(15) '记账期间' CENTERED,
* '|',(21) '本位币金额' CENTERED ,
* '|',(22) '物资消耗(万元/kwh)' CENTERED ,
* '|'.
* ULINE /.
*
*ENDFORM. " FRM_HEAD_OUTPUT
*转载别人的
- SAP的ALV输出列表
- SAP的ALV列表输出示题2
- SAP 中如何输出 ALV 格式报表?
- SAP: ALV的布局管理
- SAP: ALV的布局管理
- ALV 的输出
- ALV 下拉列表的实现
- ALV 输出
- 同个屏幕,输出多个alv列表
- 函数生成的ALV的按钮列表
- 函数生成的ALV的按钮列表 .
- ALV中下拉列表列的实现
- ALV中下拉列表列的实现
- SAP ALV usage
- SAP ALV Report
- SAP ALV 详细说明
- SAP ALV 详细说明 .
- sap icon alv 图标
- MFC Windows 程序设计(6)
- DB2 存储过程 调试
- 像许三多那样去生活
- 第一次写博客
- .Net技术架构
- SAP的ALV输出列表
- 非线性科学与周易应用
- 华为员工的非正常事件简表-----华为员工乔向英猝死,第36位!
- SAP的ALV列表输出示题2
- 建立博客第一篇技术文章——奋斗
- Asp.net Ajax:我可以用javascript做些什么?
- 2进制转换为字符串
- 设置程序的背景图片
- 一篇动态规则学习的文章