通过表格维护变更内表数据后提交数据库
TABLES : ZMAN.       "自定义表ZMAN,有ID,NAME,ADDR三个字段
*功能码
DATA: ok_code type sy-ucomm,
      save_ok like ok_code.
*定义内表
DATA WA_ZMAN LIKE TABLE OF ZMAN WITH HEADER LINE.
*删除记录的内表
DATA DELR_ZMAN LIKE TABLE OF ZMAN WITH HEADER LINE.
*当前行变量
DATA LINEA TYPE I.
controls: TBLB type tableview using screen 0100.
*当前工作区
DATA WA1 LIKE ZMAN.
*从内表读数据到内表
SELECT * FROM ZMAN INTO CORRESPONDING FIELDS OF TABLE WA_ZMAN.
*调用窗口100,上面有3个pushbutton和3个zman的字段。
CALL SCREEN 100.
*&---------------------------------------------------------------------*
*&      Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'STA100'.
SET TITLEBAR 'TITLE'.
ENDMODULE.                 " STATUS_0100 OUTPUT
*&spwizard: type for the data of tablecontrol 'TBLB'
types: begin of t_TBLB,
         ID like ZMAN-ID,
         NAME like ZMAN-NAME,
         ADDR like ZMAN-ADDR,
       end of t_TBLB.
*&spwizard: internal table for tablecontrol 'TBLB'
data:     g_TBLB_itab   type t_TBLB occurs 0,
          g_TBLB_wa     type t_TBLB. "work area
data:     g_TBLB_copied.           "copy flag
*&spwizard: output module for tc 'TBLB'. do not change this line!
*&spwizard: copy ddic-table to itab
module TBLB_init output.
if g_TBLB_copied is initial.
*&spwizard: copy ddic-table 'ZMAN'
*&spwizard: into internal table 'g_TBLB_itab'
    select * from ZMAN
       into corresponding fields
       of table g_TBLB_itab.
    g_TBLB_copied = 'X'.
    refresh control 'TBLB' from screen '0100'.
endif.
endmodule.
*&spwizard: output module for tc 'TBLB'. do not change this line!
*&spwizard: move itab to dynpro
module TBLB_move output.
move-corresponding g_TBLB_wa to ZMAN.
endmodule.
*&spwizard: input module for tc 'TBLB'. do not change this line!
*&spwizard: modify table
module TBLB_modify input.
move-corresponding ZMAN to g_TBLB_wa.
modify g_TBLB_itab
    from g_TBLB_wa
    index TBLB-current_line.
endmodule.
*&---------------------------------------------------------------------*
*&      Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0100 INPUT.
save_ok = ok_code.
Clear ok_code.
Case save_ok.
    When 'EXIT'.
      Leave TO SCREEN 0.
    WHEN 'SAVE'.
      MODIFY ZMAN FROM TABLE WA_ZMAN.
      IF SY-SUBRC <> 0.
      MESSAGE I005(ZMESS) WITH '数据更新错误!'.
      EXIT.
      ELSE.
      MESSAGE I005(ZMESS) WITH '数据更新OK!'.
      ENDIF.
    WHEN 'DELR'.     "删除按钮时
GET CURSOR LINE LINEA. "获取光标所在的行
CHECK SY-SUBRC = 0.
* 当前行号=当前屏幕行号+当前屏行号
LINEA = TBLB-TOP_LINE + LINEA - 1.
READ TABLE WA_ZMAN INDEX LINEA.
APPEND WA_ZMAN TO DELR_ZMAN.
DELETE WA_ZMAN INDEX : LINEA.
*从数据表中删除
DELETE ZMAN FROM TABLE DELR_ZMAN.
      IF SY-SUBRC <> 0.
      MESSAGE I005(ZMESS) WITH '数据删除错误'.
      ELSE.
      MESSAGE I005(ZMESS) WITH '数据删除OK!'.
      ENDIF.
*获取行的数据
WHEN 'GETR'.
GET CURSOR LINE LINEA.
CHECK SY-SUBRC = 0.
LINEA = TBLB-TOP_LINE + LINEA - 1.
READ TABLE WA_ZMAN INDEX LINEA.
MESSAGE I006(ZMESS) WITH WA_ZMAN-ID WA_ZMAN-NAME.
Endcase.
ENDMODULE.
         " USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
*&      Module CANCEL INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE CANCEL INPUT.
LEAVE PROGRAM.
ENDMODULE.                 " CANCEL INPUT
 
                    
                     
                    
                 
                    
                
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号