Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7189261
  • 博文数量: 655
  • 博客积分: 10264
  • 博客等级: 上将
  • 技术积分: 8278
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-04 17:47
个人简介

ABAP顾问

文章分类

全部博文(655)

文章存档

2017年(2)

2014年(8)

2013年(3)

2012年(2)

2011年(18)

2010年(102)

2009年(137)

2008年(274)

2007年(134)

分类:

2007-12-12 21:06:33

 
 
*&---------------------------------------------------------------------*
*& Report  Z_BARRY_HIERSEQ_LIST                                        *
*&                                                                     *
*&---------------------------------------------------------------------*
*&                                                                     *
*&                                                                     *
*&---------------------------------------------------------------------*
REPORT  z_barry_hierseq_list                    .
TABLES: sscrfields,mara.
TYPE-POOLS: slis, kkblo.
DATA: BEGIN OF w_head ,
          matnr LIKE mara-matnr,
          ersda LIKE mara-ersda,
          ernam LIKE mara-ernam,
          chk TYPE c,
          expand TYPE c,
        END OF w_head,
        BEGIN OF w_item ,
          matnr LIKE marc-matnr,
          werks LIKE marc-werks,
          pstat LIKE marc-pstat,
          lights TYPE slis_fieldname,
        END OF w_item,
        i_head LIKE TABLE OF w_head,
        i_item LIKE TABLE OF w_item.
DATA: w_vari            TYPE disvariant,
      w_layo            TYPE slis_layout_alv,
      i_fcat            TYPE slis_t_fieldcat_alv,
      w_fcat            TYPE slis_fieldcat_alv,
      i_evts            TYPE slis_t_event,
      i_evts_exit       TYPE slis_t_event_exit,
      w_keyinfo         TYPE slis_keyinfo_alv.
DATA g_program_name TYPE sy-cprog VALUE sy-repid.
CONSTANTS: cns_x TYPE c VALUE 'X'.
SELECT-OPTIONS s_matnr FOR mara-matnr.
START-OF-SELECTION.
  SELECT matnr ersda ernam
      FROM mara
      INTO TABLE i_head
     WHERE matnr IN s_matnr.
  SELECT matnr werks pstat
    FROM marc
    INTO TABLE i_item
    FOR ALL ENTRIES IN i_head
   WHERE matnr EQ i_head-matnr.
  LOOP AT i_item INTO w_item.
    IF sy-tabix EQ 1.
      w_item-lights = '1'.
    ENDIF.
    IF sy-tabix EQ 2.
      w_item-lights = '2'.
    ENDIF.
    IF sy-tabix EQ 3.
      w_item-lights = '3'.
    ENDIF.
    MODIFY i_item FROM w_item INDEX sy-tabix.
  ENDLOOP.
  w_vari-report = g_program_name.
  PERFORM f_set_fcat: USING 'W_HEAD',
                      USING 'W_ITEM'.
  PERFORM f_set_layo.
  PERFORM f_set_keyinfo.
  PERFORM f_call_alv.
*&---------------------------------------------------------------------*
*&      Form  f_set_fcat
*&---------------------------------------------------------------------*
FORM f_set_fcat  USING l_tabname TYPE lvc_fname.
  DATA: w_fcat TYPE slis_fieldcat_alv,
        i_fcat_tmp TYPE slis_t_fieldcat_alv WITH HEADER LINE.
  FIELD-SYMBOLS: TYPE slis_fieldcat_alv.
  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
     i_program_name               = g_program_name
     i_internal_tabname           = l_tabname
     i_inclname                   = g_program_name
    CHANGING
      ct_fieldcat                  = i_fcat_tmp[]
    EXCEPTIONS
      inconsistent_interface       = 1
      program_error                = 2
      OTHERS                       = 3.
  APPEND LINES OF  i_fcat_tmp TO i_fcat.
  CHECK l_tabname EQ 'W_HEAD'.
  READ TABLE i_fcat ASSIGNING
                    WITH KEY fieldname = 'EXPAND'.
  -no_out = cns_x.
ENDFORM.                    " f_set_fcat
*&---------------------------------------------------------------------*
*&      Form  F_SET_LAYO
*&---------------------------------------------------------------------*
FORM f_set_layo .
  w_layo-zebra                  = cns_x.
  w_layo-lights_fieldname       = 'LIGHTS'.
  w_layo-lights_tabname         = 'W_ITEM'.
  w_layo-box_fieldname          = 'CHK'.
  w_layo-box_tabname            = 'W_HEAD'.
  w_layo-get_selinfos           = cns_x.
*  W_LAYO-GROUP_CHANGE_EDIT      = CNS_X.
  w_layo-expand_fieldname       = 'EXPAND'.
*  W_LAYO-DETAIL_INITIAL_LINES   = CNS_X.
  w_layo-expand_all             = cns_x.
ENDFORM.                    " F_SET_LAYO
*&---------------------------------------------------------------------*
*&      Form  F_SET_KEYINFO
*&---------------------------------------------------------------------*
FORM f_set_keyinfo .
  w_keyinfo-header01 = 'MATNR'.
  w_keyinfo-item01 = 'MATNR'.
ENDFORM.                    " F_SET_KEYINFO
*&---------------------------------------------------------------------*
*&      Form  F_CALL_ALV
*&---------------------------------------------------------------------*
FORM f_call_alv .
  CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
    EXPORTING
      i_callback_program             = g_program_name
*      I_CALLBACK_PF_STATUS_SET       = 'F_SET_STATUS'
*      I_CALLBACK_USER_COMMAND        =
      is_layout                      = w_layo
      it_fieldcat                    = i_fcat[]
      i_default                      = cns_x
      i_save                         = 'A'
      is_variant                     = w_vari
      i_tabname_header               = 'W_HEAD'
      i_tabname_item                 = 'W_ITEM'
      is_keyinfo                     = w_keyinfo
    TABLES
      t_outtab_header                = i_head[]
      t_outtab_item                  = i_item[]
    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.                    " F_CALL_ALV
*---------------------------------------------------------------------*
*  FORM F_SET_STATUS
*---------------------------------------------------------------------*
FORM f_set_status USING rt_extab TYPE slis_t_extab.
  SET PF-STATUS 'GUI'.
  SET TITLEBAR 'STANDARD'.
ENDFORM.                               " F_SET_STATUS
阅读(3778) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~