快速ALV输出(cl_salv_table=>factory())

实现如下功能
在这里插入图片描述
用do varying 实现
源代码:

*&---------------------------------------------------------------------*
*& Report ZCYCLE017
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZCYCLE017.
TYPES: BEGIN OF ty_data,
         matnr TYPE matnr,
         charg TYPE charg_d,
         amatr TYPE matnr,             " A
         achrg TYPE charg_d,
         bmatr TYPE matnr,             " B
         bchrg TYPE charg_d,
         cmatr TYPE matnr,             " C
         cchrg TYPE charg_d,
       END OF ty_data.


TYPES: BEGIN OF ty_tran,
         matnr TYPE matnr,
         charg TYPE charg_d,
         matn2 TYPE matnr,
         chrg2 TYPE charg_d,
       END OF ty_tran.


DATA: lt_data TYPE TABLE OF ty_data,
      ls_data TYPE ty_data.


DATA: lt_tran TYPE TABLE OF ty_tran,
      ls_tran TYPE ty_tran.


DATA: lv_matnr TYPE matnr,
      lv_charg TYPE charg_d.


* 初始化数据
ls_data-matnr = '物料'.
ls_data-charg = '批次'.
ls_data-amatr = '物料-A'.
ls_data-achrg = '批次-A'.
ls_data-bmatr = '物料-B'.
ls_data-bchrg = '批次-B'.
ls_data-cmatr = '物料-C'.
ls_data-cchrg = '批次-C'.
APPEND ls_data TO lt_data.


ls_data-matnr = '物料1'.
ls_data-charg = '批次1'.
ls_data-amatr = '物料1-A'.
ls_data-achrg = '批次1-A'.
ls_data-bmatr = '物料1-B'.
ls_data-bchrg = '批次1-B'.
ls_data-cmatr = '物料1-C'.
ls_data-cchrg = '批次1-C'.
APPEND ls_data TO lt_data.


* 转换
LOOP AT lt_data INTO ls_data.
  DO 3 TIMES VARYING lv_matnr FROM ls_data-amatr
                              NEXT ls_data-bmatr
             VARYING lv_charg FROM ls_data-achrg
                              NEXT ls_data-bchrg.
    ls_tran-matnr = ls_data-matnr.
    ls_tran-charg = ls_data-charg.
    ls_tran-matn2 = lv_matnr.
    ls_tran-chrg2 = lv_charg.
    APPEND ls_tran TO lt_tran.
  ENDDO.
ENDLOOP.


* 输出
DATA: i_table      TYPE REF TO cl_salv_table.
DATA: lr_columns   TYPE REF TO cl_salv_columns_table.
DATA: lr_functions TYPE REF TO cl_salv_functions.


TRY.
    cl_salv_table=>factory(
      IMPORTING
        r_salv_table = i_table
      CHANGING
        t_table      = lt_tran ).
  CATCH cx_salv_msg.
ENDTRY.


" 功能按钮
lr_functions = i_table->get_functions( ).
lr_functions->set_all( abap_true ).


" 列自适应
lr_columns = i_table->get_columns( ).
lr_columns->set_optimize( 'X').

"设置列名称
lr_columns->get_column( 'CHRG2' )->set_long_text( '批次22' )."

" alv输出
i_table->display( ).

输出
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值