Chinaunix首页 | 论坛 | 博客
  • 博客访问: 57048
  • 博文数量: 29
  • 博客积分: 2000
  • 博客等级: 大尉
  • 技术积分: 245
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-09 13:33
文章分类

全部博文(29)

文章存档

2014年(2)

2011年(1)

2010年(9)

2009年(17)

我的朋友

分类:

2009-07-10 17:29:59

*-----------------------------------------------------------------------
REPORT  z_interactive_report NO STANDARD PAGE HEADING.

*-----------------------------------------------------------------------
* T Y P E S
*-----------------------------------------------------------------------
*-> TYPES
TYPES:
*-> Types of SO head data
      BEGIN OF typ_h_tbl_vbak,
         vbeln        TYPE vbak-vbeln,           "Sales Document
         vkorg        TYPE vbak-vkorg,           "Sales Organization
         vtweg        TYPE vbak-vtweg,           "Distribution Channel
         vkgrp        TYPE vbak-vkgrp,           "Sales Group
         kunnr        TYPE vbak-kunnr,           "Sold-to party
       END   OF typ_h_tbl_vbak.

*-> Table Type of SO head data
TYPES: typ_tbl_vbak TYPE STANDARD TABLE OF typ_h_tbl_vbak.

*-> Range type
TYPES: typ_rng_vbeln TYPE RANGE OF vbak-vbeln.

*-----------------------------------------------------------------------
* D A T A
*-----------------------------------------------------------------------
*-> Internal Table of SO head data
DATA: tbl_vbak   TYPE typ_tbl_vbak,
      h_tbl_vbak TYPE typ_h_tbl_vbak.

*-> Global Data
DATA: wk_vbeln   TYPE vbak-vbeln,  "SO Number
      check      TYPE c.           "Check flag

*-----------------------------------------------------------------------
* C O N S T A N T S
*-----------------------------------------------------------------------
CONSTANTS:
  cns_head      TYPE sypfkey VALUE 'Y001',      "Head list menu
  cns_detl      TYPE sypfkey VALUE 'Y002',      "Detail list menu
  cns_on        TYPE c       VALUE 'X',         "Check On
  cns_msg_typ_e TYPE c       VALUE 'E',         "Message type E
  cns_selall    TYPE sy-ucomm VALUE 'SELALL',   "F-Code
  cns_relall    TYPE sy-ucomm VALUE 'RELALL',   "F-Code
  cns_run       TYPE sy-ucomm VALUE 'RUN'.      "F-Code

*-----------------------------------------------------------------------
* P A R A M E T E R S   &   S E L E C T - O P T I O N S
*-----------------------------------------------------------------------
*-> SO Number
SELECT-OPTIONS s_vbeln FOR wk_vbeln OBLIGATORY.

*-----------------------------------------------------------------------
* S T A R T - O F - S E L E C T I O N
*-----------------------------------------------------------------------
START-OF-SELECTION.
*-> Get data
  PERFORM get_data
            USING    s_vbeln[]
            CHANGING tbl_vbak.

*-----------------------------------------------------------------------
* E N D - O F - S E L E C T I O N
*-----------------------------------------------------------------------
END-OF-SELECTION.
*-> Output Report data
  PERFORM output_report_data
            USING    tbl_vbak.

*-----------------------------------------------------------------------
* A T  U S E R - C O M M A N D
*-----------------------------------------------------------------------
AT USER-COMMAND.
*-> Print detail information
  PERFORM do_detail.

*&---------------------------------------------------------------------*
*&      Form  get_data
*&---------------------------------------------------------------------*
*       Get SO data
*----------------------------------------------------------------------*
*      -->fu_rng_vbeln  SO number
*      <--fc_tbl_vbak   Data of DO
*----------------------------------------------------------------------*
FORM get_data
       USING    fu_rng_vbeln TYPE typ_rng_vbeln
       CHANGING fc_tbl_vbak  TYPE typ_tbl_vbak.

*-> Get SO head data
  SELECT vbeln
         vkorg
         vtweg
         vkgrp
         kunnr
    INTO TABLE fc_tbl_vbak
    FROM vbak
   WHERE vbeln IN fu_rng_vbeln.
  IF sy-subrc <> 0.
    MESSAGE s000(yabnan) DISPLAY LIKE cns_msg_typ_e.
    LEAVE LIST-PROCESSING.
  ENDIF.

ENDFORM.                    " get_data
*&---------------------------------------------------------------------*
*&      Form  output_report_data
*&---------------------------------------------------------------------*
*       Report
*----------------------------------------------------------------------*
*      -->FU_TBL_VBAK  SO data
*----------------------------------------------------------------------*
FORM output_report_data
       USING    fu_tbl_vbak TYPE typ_tbl_vbak.

*-> Set status
  SET PF-STATUS cns_head.

*-> Write title
  WRITE:/5(10text-r01.

  ULINE AT /1(20).
*-> Display data
  LOOP AT fu_tbl_vbak INTO h_tbl_vbak.
    WRITE:/2  check AS CHECKBOX,
           5  h_tbl_vbak-vbeln.
    HIDEcheck,
          h_tbl_vbak.
  ENDLOOP.

ENDFORM.                    " output_report_data

*&---------------------------------------------------------------------*
*&      Form  do_detail
*&---------------------------------------------------------------------*
*       DO detail process
*----------------------------------------------------------------------*
FORM do_detail.

*-> Local data
  DATA: l_h_tbl_vbak TYPE typ_h_tbl_vbak,
        l_tbl_vbak_t TYPE typ_tbl_vbak.

  CASE sy-ucomm.

*-> Select all
    WHEN cns_selall.
      DO .
        READ LINE sy-index FIELD VALUE check.
        IF sy-subrc = 0.
          check = cns_on.
          MODIFY LINE sy-index FIELD VALUE check.
        ELSE.
          EXIT.
        ENDIF.
      ENDDO.

*-> Reselect all
    WHEN cns_relall.
      DO .
        READ LINE sy-index FIELD VALUE check.
        IF sy-subrc = 0.
          CLEAR check.
          MODIFY LINE sy-index FIELD VALUE check.
        ELSE.
          EXIT.
        ENDIF.
      ENDDO.

*-> Get selected data line
    WHEN cns_run.
      DO .
        CLEAR check.
        READ LINE sy-index FIELD VALUE check h_tbl_vbak.
        IF sy-subrc <> 0.
          EXIT.
        ENDIF.
        IF check <> space.
          APPEND h_tbl_vbak TO l_tbl_vbak_t.
        ENDIF.
      ENDDO.

*-> No line selected
      IF l_tbl_vbak_t IS INITIAL.
        MESSAGE s001(yabnan).
        RETURN.
      ELSE.

*-> Set status
        SET PF-STATUS cns_detl.

*-> Write title
        WRITE:/2 sy-vline,
               3(6)   text-r02,
               10 sy-vline,
               11(10text-r03,
               22 sy-vline,
               23(20text-r04,
               44 sy-vline,
               45(11text-r05,
               57 sy-vline,
               58 text-r06,
               72 sy-vline.

        ULINE AT /1(72).

*-> Display data
        LOOP AT l_tbl_vbak_t INTO l_h_tbl_vbak.
          WRITE:/2  sy-vline,
                 3  l_h_tbl_vbak-vbeln,
                 10 sy-vline,
                 11 l_h_tbl_vbak-vkorg,
                 22 sy-vline,
                 23 l_h_tbl_vbak-vtweg,
                 44 sy-vline,
                 45 l_h_tbl_vbak-vkgrp,
                 57 sy-vline,
                 58 l_h_tbl_vbak-kunnr,
                 72 sy-vline.
        ENDLOOP.
        ULINE AT /1(72).
      ENDIF.
    WHEN OTHERS.
  ENDCASE.

ENDFORM.                    " do_detail

*PF-STATUS请根据程序提示自行设计。

 
阅读(451) | 评论(0) | 转发(0) |
0

上一篇:使用OM编写ALV

下一篇:ALV的双层列表显示

给主人留下些什么吧!~~