`
zjut_xiongfeng
  • 浏览: 287273 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

行转化为列

阅读更多

转换为:
REPORT z_barry_test_fieldsymols .
TYPE-POOLS: slis.
TABLES: mseg,mkpf.
DATA: gd_fieldcat TYPE slis_t_fieldcat_alv.
DATA: sla TYPE slis_layout_alv ,
ivariant LIKE disvariant,
i_repid LIKE sy-repid ,
i_excluding TYPE slis_t_extab.
TYPES: BEGIN OF ty_sum ,
werks LIKE mseg-werks ,
matnr LIKE mseg-matnr ,
lgort LIKE mseg-lgort ,
bwart LIKE mseg-bwart ,
menge LIKE mseg-menge ,
END OF ty_sum.
DATA : itab TYPE STANDARD TABLE OF ty_sum WITH HEADER LINE .
DATA : hs_sum TYPE HASHED TABLE OF ty_sum
WITH UNIQUE KEY werks matnr lgort bwart WITH HEADER LINE .
DATA : itab_sum TYPE STANDARD TABLE OF ty_sum WITH HEADER LINE .
DATA: BEGIN OF itab_out OCCURS 0,
werks LIKE mseg-werks ,
matnr LIKE mseg-matnr ,
lgort LIKE mseg-lgort ,
menge01 TYPE i ,
menge02 TYPE i ,
menge03 TYPE i ,
menge04 TYPE i ,
menge05 TYPE i ,
menge06 TYPE i ,
menge07 TYPE i ,
menge08 TYPE i ,
menge09 TYPE i ,
menge10 TYPE i ,
menge11 TYPE i ,
menge12 TYPE i ,
menge13 TYPE i ,
menge14 TYPE i ,
menge15 TYPE i ,
menge16 TYPE i ,
menge17 TYPE i ,
menge18 TYPE i ,
menge19 TYPE i ,
menge20 TYPE i ,
menge21 TYPE i ,
menge22 TYPE i ,
menge23 TYPE i ,
menge24 TYPE i ,
menge25 TYPE i ,
menge26 TYPE i ,
line_sum TYPE i ,
END OF itab_out.
TYPES: BEGIN OF ty_bwart ,
bwart LIKE mseg-bwart ,
END OF ty_bwart.
DATA : hs_bwart TYPE HASHED TABLE OF ty_bwart
WITH UNIQUE KEY bwart WITH HEADER LINE .
DATA : itab_bwart TYPE STANDARD TABLE OF ty_bwart WITH HEADER LINE .
FIELD-SYMBOLS: <f_fs1> ,
<f_fs2>.
DATA: max_count TYPE i .
SELECT-OPTIONS: s_mblnr FOR mseg-mblnr ,
s_budat FOR mkpf-budat .
PARAMETERS: p_sum AS CHECKBOX .
START-OF-SELECTION.
PERFORM getdata.
PERFORM fixdata.
IF p_sum = 'X'.
PERFORM outdata.
ELSE.
PERFORM outdata2.
ENDIF.
*&---------------------------------------------------------------------*
*& Form GETDATA
*&---------------------------------------------------------------------*
FORM getdata.
SELECT werks matnr lgort bwart menge INTO TABLE itab
FROM mkpf INNER JOIN mseg ON mkpf~mblnr = mseg~mblnr AND
mkpf~mjahr = mseg~mjahr
WHERE mkpf~mblnr IN s_mblnr AND
mkpf~budat IN s_budat .
ENDFORM. " GETDATA
*&---------------------------------------------------------------------*
*& Form FIXDATA
*&---------------------------------------------------------------------*
FORM fixdata.
DATA: index LIKE sy-tabix .
LOOP AT itab.
hs_sum = itab.
COLLECT hs_sum.
hs_bwart = itab-bwart .
COLLECT hs_bwart.
ENDLOOP.
SORT hs_bwart.
itab_bwart[] = hs_bwart[].
itab_sum[] = hs_sum[].
LOOP AT itab_sum.
itab_out-werks = itab_sum-werks .
itab_out-matnr = itab_sum-matnr .
itab_out-lgort = itab_sum-lgort .
READ TABLE itab_bwart WITH KEY bwart = itab_sum-bwart .
index = sy-tabix + 3.
ASSIGN COMPONENT index OF STRUCTURE itab_out TO <f_fs1>.
<f_fs1> = itab_sum-menge.
itab_out-line_sum = itab_sum-menge.
COLLECT itab_out.
CLEAR itab_out.
ENDLOOP.
ENDFORM. " FIXDATA
*&---------------------------------------------------------------------*
*& Form outdata
*&---------------------------------------------------------------------*
FORM outdata.
PERFORM fieldcat_init .
sla-colwidth_optimize = 'X'.
sla-zebra = 'X'.
i_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = i_repid
it_fieldcat = gd_fieldcat[]
i_save = 'A'
is_variant = ivariant
is_layout = sla
it_excluding = i_excluding
i_callback_user_command = 'USER_COMMAND'
TABLES
t_outtab = itab_sum
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM. " outdata
*---------------------------------------------------------------------*
* FORM fieldcat_init *
*---------------------------------------------------------------------*
FORM fieldcat_init .
PERFORM frm_catlg_set USING: 'WERKS' 'WERKS' 'X' ,
'MATNR' 'MATNR' 'X' ,
'LGORT' 'LGORT' 'X' ,
'BWART' 'BWART' 'X' ,
'MENGE' 'MENGE' '' .
ENDFORM. "fieldcat_init
*---------------------------------------------------------------------*
* FORM frm_catlg_set *
*---------------------------------------------------------------------*
FORM frm_catlg_set USING p_field
p_text
p_key.
DATA: ls_fieldcat TYPE slis_fieldcat_alv.
ls_fieldcat-fieldname = p_field.
ls_fieldcat-seltext_l = p_text.
ls_fieldcat-key = p_key.
IF p_field = 'LINE_SUM'.
ls_fieldcat-emphasize = 'C700'.
ENDIF.
APPEND ls_fieldcat TO gd_fieldcat .
CLEAR ls_fieldcat .
ENDFORM. "frm_catlg_set
*&--------------------------------------------------------------------*
*& Form user_command
*&--------------------------------------------------------------------*
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
READ TABLE itab INDEX rs_selfield-tabindex.
CASE r_ucomm.
WHEN '&IC1'. "双击
WHEN 'EXIT'.
LEAVE PROGRAM.
ENDCASE.
rs_selfield-refresh = 'X'. "自动刷新
ENDFORM. "user_com
*---------------------------------------------------------------------*
* FORM outdata2 *
*---------------------------------------------------------------------*
FORM outdata2.
PERFORM fieldcat_init2 .
sla-colwidth_optimize = 'X'.
sla-zebra = 'X'.
i_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = i_repid
it_fieldcat = gd_fieldcat[]
i_save = 'A'
is_variant = ivariant
is_layout = sla
it_excluding = i_excluding
i_callback_user_command = 'USER_COMMAND'
TABLES
t_outtab = itab_out
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM. " outdata
*---------------------------------------------------------------------*
* FORM fieldcat_init2 *
*---------------------------------------------------------------------*
FORM fieldcat_init2 .
DATA: c(2) TYPE n ,
txt(20) TYPE c .
PERFORM frm_catlg_set USING: 'WERKS' 'WERKS' 'X' ,
'MATNR' 'MATNR' 'X' ,
'LGORT' 'LGORT' 'X' .
LOOP AT hs_bwart .
c = c + 1.
CONCATENATE 'MENGE' c INTO txt.
PERFORM frm_catlg_set USING: txt hs_bwart-bwart '' .
ENDLOOP.
PERFORM frm_catlg_set USING: 'LINE_SUM' 'SUM' '' .
ENDFORM. "fieldcat_init
分享到:
评论

相关推荐

    将STM32采集来的数据进行简单16进制到10进制数据转化,并输出为n行3列的矩阵,matlab可以直接使用.zip

    将STM32采集来的数据进行简单16进制到10进制数据转化,并输出为n行3列的矩阵,matlab可以直接使用 将STM32采集来的数据进行简单16进制到10进制数据转化,并输出为n行3列的矩阵,matlab可以直接使用 将STM32采集来的...

    access行转列示例

    “行转列”是将数据表中的一行数据转换为多列显示,反之,“列转行”则是将一列数据转化为多行展示。这两种操作在处理宽表和长表之间的转换时特别有用,例如,当需要将多个具有相同属性的数据项合并到同一列或者将...

    DB2 SQL 实现行转列,列转行

    DB2 SQL 通过函数(CONCAT/POSSTR/LOCATE)实现行转列,列转行 可以按照标点把多列转换为一行,多行转换为一列

    sql列转行以及行转列的通用存储过程

    该标题表明文章主要介绍在SQL中如何通过一个通用的存储过程实现列数据转化为行数据(列转行),或者反过来将行数据转化为列数据(行转列)。这两种转换方式在处理多维度数据分析时十分常见。 ### 描述解析:SQL列...

    mysql行转列(将同一列下的不同内容的几行数据,转换成几列显示)、列转行、行列汇总、合并显示

    MySQL 列转行是将一列数据转换为多行数据的操作。例如,我们可以使用 UNION ALL 语句来将每个 userid 对应的多个科目的成绩查出来。 SELECT userid, '语文' AS course, cn_score AS score FROM tb_score1 ...

    sql利用union all行转列

    2. **行转列(Pivot)**:通常情况下,原始数据是以行形式存储的,但在某些分析场景下,需要将这些行数据转化为列数据,这就是所谓的“行转列”。 #### 实现原理 为了实现“行转列”,我们可以利用`UNION ALL`结合...

    行列转换工具

    批量将行转化为列或将列转化为行,采用VB语言编写,能很快的完成功能。

    pandas系列120道题目进阶练习提升

    - Pivot操作:将行转化为列,如`df.pivot(index='行标签', columns='列标签', values='值标签')`。 - 数据透视表:`pivot_table()`实现复杂的数据汇总。 8. **数据可视化** - Pandas内置的绘图功能:`df.plot...

    SQLQueryKing_OK Pivot文档

    例如,假设有一个销售数据表,记录了产品、月份和销售额等信息,通过Pivot操作,我们可以将每个月的销售额从行转化为列,使得每个产品对应一列,每列显示的是该产品在各个月的销售额,这样就方便了对比分析。...

    Python库 | sqlite_transform-1.0-py3-none-any.whl

    5. **数据透视**:支持数据透视表功能,将行转化为列,或者将列转化为行,方便数据分析和报告生成。 在实际应用中,`sqlite_transform`可以极大地简化数据库操作,尤其在处理大量数据时,可以减少内存占用和提高...

    SQL中如何实现行转列,列转行的操作

    列转行则相反,它将列中的数据转化为多行。在SQL Server 2005及更高版本中,`UNPIVOT`运算符可以实现这一操作。假设我们有`Inpours`表,记录了玩家充值信息,包括用户名、充值时间、充值类型和金额等。如果我们要...

    表中数据多行转1行多列

    表中数据多行转1行多列

    sql查询凡人入门(英文第二版)

    透视表(PIVOT)和交叉表查询也是数据汇总的高级技巧,它们可以将行转化为列或反之,使数据呈现更直观。 至于标签"jsp",虽然它没有直接出现在标题或描述中,但可以理解为与Web开发相关。JSP(JavaServer Pages)是...

    sqlserver 把行转成列

    行转列的操作对于数据展现和分析非常重要,它可以将大量行数据转化为易于理解和比较的列格式。在实际应用中,可能需要结合动态SQL来处理未知数量或变化的列,这需要对SQL有深入的理解。 在提供的"行转列.sql"文件中...

    oracle 行转列

    其中,“行转列”是一种常见的数据处理方式,它指的是将原本存储在多行中的数据转化为单行中的多个字段。这种数据转换方式在报表生成、数据分析等领域非常有用。 #### 二、固定列数的行转列方法 当待转换的列是...

    灰度图像转化为彩色图像

    ` 这行代码使用`imread`函数读取位于F盘根目录下的名为'A.bmp'的位图文件。该函数会将图像数据加载到变量`I`中,MATLAB默认将图像数据存储为单通道灰度图像或三通道彩色图像(取决于原始图像类型)。 2. `I=double...

    行转列工具

    行转列工具,可以单行,多行,单列,多列,可以快速将行转为列

    oracle某个字段多行记录转化为一行

    ### 标题理解:“oracle某个字段多行记录转化为一行” 此标题明确指出了解决的问题:在Oracle数据库中,如何将特定字段的多行记录合并成一行记录。这种需求通常出现在报告或数据分析的过程中,当需要将多个相关的值...

    sql多行转列

    主要是关于sqlserver的多行转列的问题,这是我经过个人测试的语句。

    sql行转列动态与静态

    在SQL中,将数据从行转换为列的操作称为“行转列”。这一操作在实际业务场景中非常常见,比如在报表生成、数据分析等场景下,往往需要将原本纵向排列的数据转化为横向显示,以便于分析或者展示。根据题目提供的信息...

Global site tag (gtag.js) - Google Analytics