12
返回列表 发新帖
楼主: wpsl5168

ALV报表动态内表输出,双击字段如何获取当行的字段值呢

[复制链接]
论坛徽章:
21
奥运会纪念徽章:皮划艇静水
日期:2008-08-14 10:04:33马上有房
日期:2014-02-18 16:42:022014年新春福章
日期:2014-02-18 16:42:022013年新春福章
日期:2013-02-25 14:51:24茶鸡蛋
日期:2012-03-24 08:37:212012新春纪念徽章
日期:2012-01-04 11:53:29鲜花蛋
日期:2011-11-07 10:41:07ITPUB十周年纪念徽章
日期:2011-11-01 16:23:26ITPUB季度 技术新星
日期:2011-08-31 15:27:58咸鸭蛋
日期:2011-07-07 14:25:18
11#
 楼主| 发表于 2011-8-2 11:58 | 只看该作者
瞎折腾居然可以得到我需要的数据了,各位高手们帮我看看,有没有更聪明的写法。
  DATA: GH_LINE TYPE REF TO DATA.
  FIELD-SYMBOLS:<FS_LINE> TYPE ANY.
  CREATE DATA GH_LINE LIKE LINE OF <F_OUT>.
  ASSIGN GH_LINE->* TO <FS_LINE>."动态的结构

  G_SELECTED_FIELD_VALUE =  RS_SELFIELD-VALUE.
  G_TABINDEX = RS_SELFIELD-TABINDEX.

  LOOP AT <F_OUT> ASSIGNING <FS_LINE> ."INDEX G_TABINDEX.
    IF SY-TABIX = G_TABINDEX.
      MOVE-CORRESPONDING <FS_LINE> TO L_TEMP.
    ENDIF.
  ENDLOOP.

以上L_TEMP中有我需要的字段值了。

使用道具 举报

回复
论坛徽章:
34
复活蛋
日期:2012-01-20 10:41:33复活蛋
日期:2011-08-31 13:25:02迷宫蛋
日期:2011-11-28 09:00:02迷宫蛋
日期:2011-11-11 09:26:12鲜花蛋
日期:2012-04-24 08:25:43福特
日期:2013-09-12 09:56:50紫水晶
日期:2013-12-12 15:35:37凯迪拉克
日期:2013-12-13 11:37:50奥迪
日期:2014-01-03 15:46:16生肖徽章2007版:猴
日期:2008-10-28 12:25:37
12#
发表于 2011-8-2 12:09 | 只看该作者

这么纠结……这样should就OK了

FIELD-SYMBOLS: <fs_wa> TYPE ANY.

    READ TABLE <f_out> ASSIGNING <fs_wa> INDEX rs_selfield-tabindex.
    IF sy-subrc = 0.
      " move-corresponding...
    ENDIF.

使用道具 举报

回复
论坛徽章:
0
13#
发表于 2011-8-2 13:23 | 只看该作者

回复 #11 wpsl5168 的帖子

我写了个简单的,里面稍微有点不整齐,请见谅,时间有限~!

REPORT Y_BRUCE_001.
TYPE-POOLS: SLIS.

*&---------------------------------------------------------------------*
*       DATA DEFINITION
*----------------------------------------------------------------------*

DATA: GT_FIELDCAT TYPE LVC_T_FCAT.


DATA: GP_TABLE TYPE REF TO DATA,
      GS_TABLE TYPE REF TO DATA.

FIELD-SYMBOLS: <GT_TABLE> TYPE TABLE,
               <GS_TABLE> TYPE ANY.


* 宏定义
DEFINE BLD_CATE.
  LS_FIELDCAT-FIELDNAME      = &1.
  LS_FIELDCAT-CFIELDNAME     = &2.
  LS_FIELDCAT-COLTEXT        = &3.
  LS_FIELDCAT-DATATYPE       = &4.
  LS_FIELDCAT-INTTYPE        = &5.
  LS_FIELDCAT-INTLEN         = &6.
  LS_FIELDCAT-DD_OUTLEN      = &7.
  LS_FIELDCAT-KEY            = &8.
  APPEND LS_FIELDCAT TO GT_FIELDCAT.
END-OF-DEFINITION.

TABLES: BKPF.

SELECT-OPTIONS: S_BUDAT FOR BKPF-BUDAT OBLIGATORY NO-EXTENSION.

*&---------------------------------------------------------------------*
*       START-OF-SELECTION
*----------------------------------------------------------------------*
START-OF-SELECTION.

  PERFORM BUILD_ITAB.





*&---------------------------------------------------------------------*
*&      Form  BUILD_ITAB
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM BUILD_ITAB.

  DATA: LS_FIELDCAT TYPE LVC_S_FCAT,
        L_FIELDDESC  TYPE LVC_TXT,
        L_FIELDNAME  TYPE FIELDNAME,
        L_DAY_FIRST  TYPE D,
        L_DAY_LAST   TYPE D,
        L_DAY        TYPE D.
  FIELD-SYMBOLS: <FS_VALUE> TYPE ANY.

  REFRESH: GT_FIELDCAT.
  BLD_CATE 'MATNR' 'MATNR'  '物料'   'CHAR'
           'C'     '000018' '000018' 'X'.
  MOVE: S_BUDAT-LOW  TO L_DAY_FIRST,
        S_BUDAT-HIGH TO L_DAY.
  L_DAY_FIRST+6(2) = '01'.
  L_DAY+6(2) = '01'.
  DO.

    CONCATENATE L_DAY_FIRST+0(4) '年'
                L_DAY_FIRST+4(2) '月'
           INTO L_FIELDDESC.
    CONCATENATE L_DAY_FIRST+0(4) '_'
                L_DAY_FIRST+4(2)
           INTO L_FIELDNAME.

    BLD_CATE L_FIELDNAME SPACE    L_FIELDDESC 'CURR'
             'P'         '000016' '000021'    SPACE.

    IF L_DAY_FIRST EQ L_DAY.
      EXIT.
    ENDIF.
    "下一个月
    CALL FUNCTION 'LAST_DAY_OF_MONTHS'
         EXPORTING
              DAY_IN            = L_DAY_FIRST
         IMPORTING
              LAST_DAY_OF_MONTH = L_DAY_LAST
         EXCEPTIONS
              DAY_IN_NO_DATE    = 1
              OTHERS            = 2.
    L_DAY_FIRST = L_DAY_LAST + 1.

  ENDDO.
  CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
                           EXPORTING IT_FIELDCATALOG = GT_FIELDCAT
                           IMPORTING EP_TABLE = GP_TABLE.
  ASSIGN GP_TABLE->* TO <GT_TABLE>.
  CREATE DATA GS_TABLE LIKE LINE OF <GT_TABLE>.
  ASSIGN GS_TABLE->* TO <GS_TABLE>.

  "赋值
  L_FIELDNAME = 'MATNR'.
  ASSIGN COMPONENT L_FIELDNAME OF STRUCTURE
                              <GS_TABLE> TO <FS_VALUE>.
  <FS_VALUE> = '000000111111111112'.
  "根据数据把年月的数据字段拼出来在写内容....
  "...
  APPEND <GS_TABLE> TO <GT_TABLE>.

  "输出
  DATA: I_REPID LIKE SY-REPID.
  DATA: GT_FIELDCAT_OUT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.
  MOVE SY-REPID TO I_REPID.
  LOOP AT GT_FIELDCAT INTO LS_FIELDCAT.
    MOVE-CORRESPONDING LS_FIELDCAT TO GT_FIELDCAT_OUT.
    APPEND GT_FIELDCAT_OUT.
  ENDLOOP.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
            I_CALLBACK_PROGRAM      = I_REPID
            I_CALLBACK_USER_COMMAND = 'F_ALV_USER_COMMAND2'
            IT_FIELDCAT             = GT_FIELDCAT_OUT[]
            I_SAVE                  = 'A'
       TABLES
            T_OUTTAB                = <GT_TABLE>
       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.                    " BUILD_ITAB



*---------------------------------------------------------------------*
*       FORM F_ALV_USER_COMMAND2                                      *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
*  -->  R_UCOMM                                                       *
*  -->  RS_SELFIELD                                                   *
*---------------------------------------------------------------------*
FORM F_ALV_USER_COMMAND2 USING R_UCOMM LIKE SY-UCOMM
                               RS_SELFIELD TYPE SLIS_SELFIELD.
  CLEAR <GS_TABLE>.
  CASE R_UCOMM.
    WHEN '&IC1'."双击
      READ TABLE <GT_TABLE> ASSIGNING <GS_TABLE>
                                INDEX RS_SELFIELD-TABINDEX.
  ENDCASE.
ENDFORM.

使用道具 举报

回复
论坛徽章:
21
奥运会纪念徽章:皮划艇静水
日期:2008-08-14 10:04:33马上有房
日期:2014-02-18 16:42:022014年新春福章
日期:2014-02-18 16:42:022013年新春福章
日期:2013-02-25 14:51:24茶鸡蛋
日期:2012-03-24 08:37:212012新春纪念徽章
日期:2012-01-04 11:53:29鲜花蛋
日期:2011-11-07 10:41:07ITPUB十周年纪念徽章
日期:2011-11-01 16:23:26ITPUB季度 技术新星
日期:2011-08-31 15:27:58咸鸭蛋
日期:2011-07-07 14:25:18
14#
 楼主| 发表于 2011-8-2 14:02 | 只看该作者
谢谢大家~~~

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表