Chinaunix首页 | 论坛 | 博客
  • 博客访问: 721397
  • 博文数量: 158
  • 博客积分: 6010
  • 博客等级: 准将
  • 技术积分: 1643
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-11 14:37
个人简介

人法地,地法天,天法道,道法自然

文章分类

全部博文(158)

文章存档

2022年(1)

2020年(3)

2016年(1)

2014年(7)

2013年(4)

2010年(5)

2009年(86)

2008年(25)

2007年(26)

我的朋友

分类:

2009-06-03 22:13:38

Program:

*&---------------------------------------------------------------------*
*& Report  ZMYP_TC
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZMYP_TCS.


tables:mara,t001l.

data:begin of itab occurs 0.
      include structure mara.
      data:mark type char1.
data:end of itab.

data:begin of item occurs 0.
      include structure t001l.
      data:mark type char1.
data:end of item.

DATA:     OK_CODE LIKE SY-UCOMM,
          S_OK_CODE LIKE SY-UCOMM.

select * from mara into corresponding fields of table itab .
select * from t001l into corresponding fields of table item .

*&SPWIZARD: DECLARATION OF TABLECONTROL 'MYTC' ITSELF
CONTROLS: MYTC TYPE TABLEVIEW USING SCREEN 0120.

*&SPWIZARD: LINES OF TABLECONTROL 'MYTC'
DATA:     G_MYTC_LINES  LIKE SY-LOOPC.

set SCREEN 120.   "调用屏幕    ,需要自己增加

*&SPWIZARD: OUTPUT MODULE FOR TC 'MYTC'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: UPDATE LINES FOR EQUIVALENT SCROLLBAR
MODULE MYTC_CHANGE_TC_ATTR OUTPUT.
  DESCRIBE TABLE ITAB LINES MYTC-lines.
ENDMODULE.

*&SPWIZARD: OUTPUT MODULE FOR TC 'MYTC'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: GET LINES OF TABLECONTROL
MODULE MYTC_GET_LINES OUTPUT.
  G_MYTC_LINES = SY-LOOPC.
ENDMODULE.

*&SPWIZARD: INPUT MODULE FOR TC 'MYTC'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: MODIFY TABLE
MODULE MYTC_MODIFY INPUT.
  MODIFY ITAB
    INDEX MYTC-CURRENT_LINE.
ENDMODULE.

*&SPWIZARD: INPUT MODUL FOR TC 'MYTC'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: MARK TABLE
MODULE MYTC_MARK INPUT.
  DATA: g_MYTC_wa2 like line of ITAB.
    if MYTC-line_sel_mode = 1
    and ITAB-MARK = 'X'.
     loop at ITAB into g_MYTC_wa2
       where MARK = 'X'.
       g_MYTC_wa2-MARK = ''.
       modify ITAB
         from g_MYTC_wa2
         transporting MARK.
     endloop.
  endif.
  MODIFY ITAB
    INDEX MYTC-CURRENT_LINE
    TRANSPORTING MARK.
ENDMODULE.

*&SPWIZARD: INPUT MODULE FOR TC 'MYTC'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: PROCESS USER COMMAND
MODULE MYTC_USER_COMMAND INPUT.
  OK_CODE = SY-UCOMM.

  message ok_code type 'S' .

  if ok_code = 'EXIT' .
    leave program.
  endif.

  PERFORM USER_OK_TC USING    'MYTC'
                              'ITAB'
                              'MARK'
                     CHANGING OK_CODE.
  SY-UCOMM = OK_CODE.
ENDMODULE.

*----------------------------------------------------------------------*
*   INCLUDE TABLECONTROL_FORMS                                         *
*----------------------------------------------------------------------*

*&---------------------------------------------------------------------*
*&      Form  USER_OK_TC                                               *
*&---------------------------------------------------------------------*
 FORM USER_OK_TC USING    P_TC_NAME TYPE DYNFNAM
                          P_TABLE_NAME
                          P_MARK_NAME
                 CHANGING P_OK      LIKE SY-UCOMM.

*&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------*
   DATA: L_OK              TYPE SY-UCOMM,
         L_OFFSET          TYPE I.
*&SPWIZARD: END OF LOCAL DATA------------------------------------------*

*&SPWIZARD: Table control specific operations                          *
*&SPWIZARD: evaluate TC name and operations                            *
   SEARCH P_OK FOR P_TC_NAME.
   IF SY-SUBRC <> 0.
     EXIT.
   ENDIF.
   L_OFFSET = STRLEN( P_TC_NAME ) + 1.
   L_OK = P_OK+L_OFFSET.
*&SPWIZARD: execute general and TC specific operations                 *
   CASE L_OK.
     WHEN 'INSR'.                      "insert row
       PERFORM FCODE_INSERT_ROW USING    P_TC_NAME
                                         P_TABLE_NAME.
       CLEAR P_OK.

     WHEN 'DELE'.                      "delete row
       PERFORM FCODE_DELETE_ROW USING    P_TC_NAME
                                         P_TABLE_NAME
                                         P_MARK_NAME.
       CLEAR P_OK.

     WHEN 'P--' OR                     "top of list
          'P-'  OR                     "previous page
          'P+'  OR                     "next page
          'P++'.                       "bottom of list
       PERFORM COMPUTE_SCROLLING_IN_TC USING P_TC_NAME
                                             L_OK.
       CLEAR P_OK.
*     WHEN 'L--'.                       "total left
*       PERFORM FCODE_TOTAL_LEFT USING P_TC_NAME.
*
*     WHEN 'L-'.                        "column left
*       PERFORM FCODE_COLUMN_LEFT USING P_TC_NAME.
*
*     WHEN 'R+'.                        "column right
*       PERFORM FCODE_COLUMN_RIGHT USING P_TC_NAME.
*
*     WHEN 'R++'.                       "total right
*       PERFORM FCODE_TOTAL_RIGHT USING P_TC_NAME.
*
     WHEN 'MARK'.                      "mark all filled lines
       PERFORM FCODE_TC_MARK_LINES USING P_TC_NAME
                                         P_TABLE_NAME
                                         P_MARK_NAME   .
       CLEAR P_OK.

     WHEN 'DMRK'.                      "demark all filled lines
       PERFORM FCODE_TC_DEMARK_LINES USING P_TC_NAME
                                           P_TABLE_NAME
                                           P_MARK_NAME .
       CLEAR P_OK.

*     WHEN 'SASCEND'   OR
*          'SDESCEND'.                  "sort column
*       PERFORM FCODE_SORT_TC USING P_TC_NAME
*                                   l_ok.

   ENDCASE.

 ENDFORM.                              " USER_OK_TC

*&---------------------------------------------------------------------*
*&      Form  FCODE_INSERT_ROW                                         *
*&---------------------------------------------------------------------*
 FORM fcode_insert_row
               USING    P_TC_NAME           TYPE DYNFNAM
                        P_TABLE_NAME             .

*&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------*
   DATA L_LINES_NAME       LIKE FELD-NAME.
   DATA L_SELLINE          LIKE SY-STEPL.
   DATA L_LASTLINE         TYPE I.
   DATA L_LINE             TYPE I.
   DATA L_TABLE_NAME       LIKE FELD-NAME.
   FIELD-SYMBOLS                  TYPE CXTAB_CONTROL.
   FIELD-SYMBOLS

              TYPE STANDARD TABLE.
   FIELD-SYMBOLS               TYPE I.
*&SPWIZARD: END OF LOCAL DATA------------------------------------------*

   ASSIGN (P_TC_NAME) TO .

*&SPWIZARD: get the table, which belongs to the tc                     *
   CONCATENATE P_TABLE_NAME '[]' INTO L_TABLE_NAME. "table body
   ASSIGN (L_TABLE_NAME) TO
.                "not headerline

*&SPWIZARD: get looplines of TableControl                              *
   CONCATENATE 'G_' P_TC_NAME '_LINES' INTO L_LINES_NAME.
   ASSIGN (L_LINES_NAME) TO .

*&SPWIZARD: get current line                                           *
   GET CURSOR LINE L_SELLINE.
   IF SY-SUBRC <> 0.                   " append line to table
     L_SELLINE = -LINES + 1.
*&SPWIZARD: set top line                                               *
     IF L_SELLINE > .
       -TOP_LINE = L_SELLINE - + 1 .
     ELSE.
       -TOP_LINE = 1.
     ENDIF.
   ELSE.                               " insert line into table
     L_SELLINE = -TOP_LINE + L_SELLINE - 1.
     L_LASTLINE = -TOP_LINE + - 1.
   ENDIF.
*&SPWIZARD: set new cursor line                                        *
   L_LINE = L_SELLINE - -TOP_LINE + 1.

*&SPWIZARD: insert initial line                                        *
   INSERT INITIAL LINE INTO
INDEX L_SELLINE.
   -LINES = -LINES + 1.
*&SPWIZARD: set cursor                                                 *
   SET CURSOR LINE L_LINE.

 ENDFORM.                              " FCODE_INSERT_ROW

 

阅读(1066) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~