ABAP基础三——DIALOG整体
本来想模拟VA01的,后来想想ME21N也很经典,所以就把一些常见的组建都放上面了。
效果图如下:

1.整体设计就是按 抬头(1) + 项目(N) + 伙伴(N) + 相关数据的tabstrip(N)
2.screen设计如下:

3.主界面设计:SCREEN 9000
主屏幕逻辑流:

PBO中针对是否折叠做逻辑控制,显示对应的屏幕:

PAI处理

下面贴全部代码:
主程序:
PROGRAM ZEXP_SCREEN_TEST. DATA:GT_HEAD TYPE TABLE OF CRMD_ORDERADM_H,
GW_HEAD LIKE LINE OF GT_HEAD,
GT_ITEM TYPE TABLE OF CRMD_ORDERADM_I,
GW_ITEM LIKE LINE OF GT_ITEM,
GT_PART TYPE TABLE OF CRMD_PARTNER,
GW_PART LIKE LINE OF GT_PART,
OK_CODE TYPE SY-UCOMM,
GV_FLAG1 TYPE CHAR01,
GV_DEC TYPE ZDEC,
GV_FLAG2 TYPE CHAR01,
GV_FLAG3 TYPE CHAR01. *&SPWIZARD: DECLARATION OF TABLECONTROL 'TC_9001' ITSELF
CONTROLS: TC_9001 TYPE TABLEVIEW USING SCREEN 9001.
DATA:TC_9001_SUB1 TYPE SY-DYNNR.
DATA:TC_9001_SUB2 TYPE SY-DYNNR.
DATA:TC_9001_SUB3 TYPE SY-DYNNR.
DATA:TC_9001_HSUB TYPE SY-DYNNR VALUE '9004'. *&SPWIZARD: LINES OF TABLECONTROL 'TC_9001'
DATA: G_TC_9001_LINES LIKE SY-LOOPC. *&SPWIZARD: FUNCTION CODES FOR TABSTRIP 'TS_ITEM'
CONSTANTS: BEGIN OF C_TS_ITEM,
TAB1 LIKE SY-UCOMM VALUE 'TS_ITEM_FC1',
TAB2 LIKE SY-UCOMM VALUE 'TS_ITEM_FC2',
TAB3 LIKE SY-UCOMM VALUE 'TS_ITEM_FC3',
TAB4 LIKE SY-UCOMM VALUE 'TS_ITEM_FC4',
TAB5 LIKE SY-UCOMM VALUE 'TS_ITEM_FC5',
TAB6 LIKE SY-UCOMM VALUE 'TS_ITEM_FC6',
END OF C_TS_ITEM.
*&SPWIZARD: DATA FOR TABSTRIP 'TS_ITEM'
CONTROLS: TS_ITEM TYPE TABSTRIP.
DATA: BEGIN OF G_TS_ITEM,
SUBSCREEN LIKE SY-DYNNR,
PROG LIKE SY-REPID VALUE 'ZEXP_SCREEN_TEST',
PRESSED_TAB LIKE SY-UCOMM VALUE C_TS_ITEM-TAB1,
END OF G_TS_ITEM. *&SPWIZARD: OUTPUT MODULE FOR TC 'TC_9001'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: UPDATE LINES FOR EQUIVALENT SCROLLBAR
MODULE TC_9001_CHANGE_TC_ATTR OUTPUT.
DESCRIBE TABLE GT_ITEM LINES TC_9001-LINES.
ENDMODULE. *&SPWIZARD: OUTPUT MODULE FOR TC 'TC_9001'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: GET LINES OF TABLECONTROL
MODULE TC_9001_GET_LINES OUTPUT.
G_TC_9001_LINES = SY-LOOPC.
IF GW_ITEM-NUMBER_INT IS NOT INITIAL.
LOOP AT SCREEN.
IF SCREEN-NAME = 'GW_ITEM-ITM_TYPE'.
SCREEN-REQUIRED = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
ENDMODULE. *&SPWIZARD: INPUT MODULE FOR TC 'TC_9001'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: MODIFY TABLE
MODULE TC_9001_MODIFY INPUT.
PERFORM FRM_9001_FIELD_MODIFY."PAI中更新某内表行数据 MODIFY GT_ITEM
FROM GW_ITEM
INDEX TC_9001-CURRENT_LINE.
IF SY-SUBRC <> 0.
APPEND GW_ITEM TO GT_ITEM.
ENDIF.
ENDMODULE. *&SPWIZARD: INPUT MODULE FOR TC 'TC_9001'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: PROCESS USER COMMAND
MODULE TC_9001_USER_COMMAND INPUT.
OK_CODE = SY-UCOMM.
PERFORM USER_OK_TC USING 'TC_9001'
'GT_ITEM'
' '
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 <TC> TYPE CXTAB_CONTROL.
FIELD-SYMBOLS <TABLE> TYPE STANDARD TABLE.
FIELD-SYMBOLS <LINES> TYPE I.
*&SPWIZARD: END OF LOCAL DATA------------------------------------------* ASSIGN (P_TC_NAME) TO <TC>. *&SPWIZARD: get the table, which belongs to the tc *
CONCATENATE P_TABLE_NAME '[]' INTO L_TABLE_NAME. "table body
ASSIGN (L_TABLE_NAME) TO <TABLE>. "not headerline *&SPWIZARD: get looplines of TableControl *
CONCATENATE 'G_' P_TC_NAME '_LINES' INTO L_LINES_NAME.
ASSIGN (L_LINES_NAME) TO <LINES>. *&SPWIZARD: get current line *
GET CURSOR LINE L_SELLINE.
IF SY-SUBRC <> 0. " append line to table
L_SELLINE = <TC>-LINES + 1.
*&SPWIZARD: set top line *
IF L_SELLINE > <LINES>.
<TC>-TOP_LINE = L_SELLINE - <LINES> + 1 .
ELSE.
<TC>-TOP_LINE = 1.
ENDIF.
ELSE. " insert line into table
L_SELLINE = <TC>-TOP_LINE + L_SELLINE - 1.
L_LASTLINE = <TC>-TOP_LINE + <LINES> - 1.
ENDIF.
*&SPWIZARD: set new cursor line *
L_LINE = L_SELLINE - <TC>-TOP_LINE + 1. *&SPWIZARD: insert initial line *
INSERT INITIAL LINE INTO <TABLE> INDEX L_SELLINE.
<TC>-LINES = <TC>-LINES + 1.
*&SPWIZARD: set cursor *
SET CURSOR LINE L_LINE. ENDFORM. " FCODE_INSERT_ROW *&---------------------------------------------------------------------*
*& Form FCODE_DELETE_ROW *
*&---------------------------------------------------------------------*
FORM FCODE_DELETE_ROW
USING P_TC_NAME TYPE DYNFNAM
P_TABLE_NAME
P_MARK_NAME . *&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------*
DATA L_TABLE_NAME LIKE FELD-NAME. FIELD-SYMBOLS <TC> TYPE CXTAB_CONTROL.
FIELD-SYMBOLS <TABLE> TYPE STANDARD TABLE.
FIELD-SYMBOLS <WA>.
FIELD-SYMBOLS <MARK_FIELD>.
*&SPWIZARD: END OF LOCAL DATA------------------------------------------* ASSIGN (P_TC_NAME) TO <TC>. *&SPWIZARD: get the table, which belongs to the tc *
CONCATENATE P_TABLE_NAME '[]' INTO L_TABLE_NAME. "table body
ASSIGN (L_TABLE_NAME) TO <TABLE>. "not headerline *&SPWIZARD: delete marked lines *
DESCRIBE TABLE <TABLE> LINES <TC>-LINES. LOOP AT <TABLE> ASSIGNING <WA>. *&SPWIZARD: access to the component 'FLAG' of the table header *
ASSIGN COMPONENT P_MARK_NAME OF STRUCTURE <WA> TO <MARK_FIELD>. IF <MARK_FIELD> = 'X'.
DELETE <TABLE> INDEX SYST-TABIX.
IF SY-SUBRC = 0.
<TC>-LINES = <TC>-LINES - 1.
ENDIF.
ENDIF.
ENDLOOP. ENDFORM. " FCODE_DELETE_ROW *&---------------------------------------------------------------------*
*& Form COMPUTE_SCROLLING_IN_TC
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_TC_NAME name of tablecontrol
* -->P_OK ok code
*----------------------------------------------------------------------*
FORM COMPUTE_SCROLLING_IN_TC USING P_TC_NAME
P_OK.
*&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------*
DATA L_TC_NEW_TOP_LINE TYPE I.
DATA L_TC_NAME LIKE FELD-NAME.
DATA L_TC_LINES_NAME LIKE FELD-NAME.
DATA L_TC_FIELD_NAME LIKE FELD-NAME. FIELD-SYMBOLS <TC> TYPE CXTAB_CONTROL.
FIELD-SYMBOLS <LINES> TYPE I.
*&SPWIZARD: END OF LOCAL DATA------------------------------------------* ASSIGN (P_TC_NAME) TO <TC>.
*&SPWIZARD: get looplines of TableControl *
CONCATENATE 'G_' P_TC_NAME '_LINES' INTO L_TC_LINES_NAME.
ASSIGN (L_TC_LINES_NAME) TO <LINES>. *&SPWIZARD: is no line filled? *
IF <TC>-LINES = 0.
*&SPWIZARD: yes, ... *
L_TC_NEW_TOP_LINE = 1.
ELSE.
*&SPWIZARD: no, ... *
CALL FUNCTION 'SCROLLING_IN_TABLE'
EXPORTING
ENTRY_ACT = <TC>-TOP_LINE
ENTRY_FROM = 1
ENTRY_TO = <TC>-LINES
LAST_PAGE_FULL = 'X'
LOOPS = <LINES>
OK_CODE = P_OK
OVERLAPPING = 'X'
IMPORTING
ENTRY_NEW = L_TC_NEW_TOP_LINE
EXCEPTIONS
* NO_ENTRY_OR_PAGE_ACT = 01
* NO_ENTRY_TO = 02
* NO_OK_CODE_OR_PAGE_GO = 03
OTHERS = 0.
ENDIF. *&SPWIZARD: get actual tc and column *
GET CURSOR FIELD L_TC_FIELD_NAME
AREA L_TC_NAME. IF SYST-SUBRC = 0.
IF L_TC_NAME = P_TC_NAME.
*&SPWIZARD: et actual column *
SET CURSOR FIELD L_TC_FIELD_NAME LINE 1.
ENDIF.
ENDIF. *&SPWIZARD: set the new top line *
<TC>-TOP_LINE = L_TC_NEW_TOP_LINE. ENDFORM. " COMPUTE_SCROLLING_IN_TC *&---------------------------------------------------------------------*
*& Form FCODE_TC_MARK_LINES
*&---------------------------------------------------------------------*
* marks all TableControl lines
*----------------------------------------------------------------------*
* -->P_TC_NAME name of tablecontrol
*----------------------------------------------------------------------*
FORM FCODE_TC_MARK_LINES USING P_TC_NAME
P_TABLE_NAME
P_MARK_NAME.
*&SPWIZARD: EGIN OF LOCAL DATA-----------------------------------------*
DATA L_TABLE_NAME LIKE FELD-NAME. FIELD-SYMBOLS <TC> TYPE CXTAB_CONTROL.
FIELD-SYMBOLS <TABLE> TYPE STANDARD TABLE.
FIELD-SYMBOLS <WA>.
FIELD-SYMBOLS <MARK_FIELD>.
*&SPWIZARD: END OF LOCAL DATA------------------------------------------* ASSIGN (P_TC_NAME) TO <TC>. *&SPWIZARD: get the table, which belongs to the tc *
CONCATENATE P_TABLE_NAME '[]' INTO L_TABLE_NAME. "table body
ASSIGN (L_TABLE_NAME) TO <TABLE>. "not headerline *&SPWIZARD: mark all filled lines *
LOOP AT <TABLE> ASSIGNING <WA>. *&SPWIZARD: access to the component 'FLAG' of the table header *
ASSIGN COMPONENT P_MARK_NAME OF STRUCTURE <WA> TO <MARK_FIELD>. <MARK_FIELD> = 'X'.
ENDLOOP.
ENDFORM. "fcode_tc_mark_lines *&---------------------------------------------------------------------*
*& Form FCODE_TC_DEMARK_LINES
*&---------------------------------------------------------------------*
* demarks all TableControl lines
*----------------------------------------------------------------------*
* -->P_TC_NAME name of tablecontrol
*----------------------------------------------------------------------*
FORM FCODE_TC_DEMARK_LINES USING P_TC_NAME
P_TABLE_NAME
P_MARK_NAME .
*&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------*
DATA L_TABLE_NAME LIKE FELD-NAME. FIELD-SYMBOLS <TC> TYPE CXTAB_CONTROL.
FIELD-SYMBOLS <TABLE> TYPE STANDARD TABLE.
FIELD-SYMBOLS <WA>.
FIELD-SYMBOLS <MARK_FIELD>.
*&SPWIZARD: END OF LOCAL DATA------------------------------------------* ASSIGN (P_TC_NAME) TO <TC>. *&SPWIZARD: get the table, which belongs to the tc *
CONCATENATE P_TABLE_NAME '[]' INTO L_TABLE_NAME. "table body
ASSIGN (L_TABLE_NAME) TO <TABLE>. "not headerline *&SPWIZARD: demark all filled lines *
LOOP AT <TABLE> ASSIGNING <WA>. *&SPWIZARD: access to the component 'FLAG' of the table header *
ASSIGN COMPONENT P_MARK_NAME OF STRUCTURE <WA> TO <MARK_FIELD>. <MARK_FIELD> = SPACE.
ENDLOOP.
ENDFORM. "fcode_tc_mark_lines *&SPWIZARD: DECLARATION OF TABLECONTROL 'TC_9002' ITSELF
CONTROLS: TC_9002 TYPE TABLEVIEW USING SCREEN 9002. *&SPWIZARD: LINES OF TABLECONTROL 'TC_9002'
DATA: G_TC_9002_LINES LIKE SY-LOOPC. *&SPWIZARD: OUTPUT MODULE FOR TC 'TC_9002'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: UPDATE LINES FOR EQUIVALENT SCROLLBAR
MODULE TC_9002_CHANGE_TC_ATTR OUTPUT.
DESCRIBE TABLE GT_PART LINES TC_9002-LINES.
ENDMODULE. *&SPWIZARD: OUTPUT MODULE FOR TC 'TC_9002'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: GET LINES OF TABLECONTROL
MODULE TC_9002_GET_LINES OUTPUT.
G_TC_9002_LINES = SY-LOOPC.
ENDMODULE. *&SPWIZARD: INPUT MODULE FOR TC 'TC_9002'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: MODIFY TABLE
MODULE TC_9002_MODIFY INPUT.
MODIFY GT_PART
FROM GW_PART
INDEX TC_9002-CURRENT_LINE.
IF SY-SUBRC <> 0.
APPEND GW_PART TO GT_PART.
ENDIF.
ENDMODULE. *&SPWIZARD: INPUT MODULE FOR TC 'TC_9002'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: PROCESS USER COMMAND
MODULE TC_9002_USER_COMMAND INPUT.
OK_CODE = SY-UCOMM.
PERFORM USER_OK_TC USING 'TC_9002'
'GT_PART'
' '
CHANGING OK_CODE.
SY-UCOMM = OK_CODE.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module STATUS_9000 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_9000 OUTPUT.
SET PF-STATUS 'ST9000'.
* SET TITLEBAR 'xxx'.
IF GV_FLAG1 = 'X'.
TC_9001_SUB1 = '9101'.
ELSE.
TC_9001_SUB1 = '9001'.
ENDIF.
IF GV_FLAG2 = 'X'.
TC_9001_SUB2 = '9102'.
ELSE.
TC_9001_SUB2 = '9002'.
ENDIF.
IF GV_FLAG3 = 'X'.
TC_9001_SUB3 = '9103'.
ELSE.
TC_9001_SUB3 = '9003'.
ENDIF. PERFORM FRM_HEADER_FIELD_VISIABLE.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_9000 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9000 INPUT.
CASE OK_CODE.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'CANL' OR 'EXIT'.
LEAVE PROGRAM.
WHEN 'FOLD2'.
IF GV_FLAG2 IS INITIAL.
GV_FLAG2 = 'X'.
ELSE.
CLEAR GV_FLAG2.
ENDIF.
WHEN 'FOLD1'.
IF GV_FLAG1 IS INITIAL.
GV_FLAG1 = 'X'.
ELSE.
CLEAR GV_FLAG1.
ENDIF.
WHEN 'FOLD3'.
IF GV_FLAG3 IS INITIAL.
GV_FLAG3 = 'X'.
ELSE.
CLEAR GV_FLAG3.
ENDIF.
WHEN 'SAVE'.
PERFORM FRM_SAVE_CHECK.
WHEN OTHERS.
ENDCASE.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module FRM_SET_DISABLE OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE FRM_SET_DISABLE OUTPUT. ENDMODULE.
*&---------------------------------------------------------------------*
*& Module STATUS_9001 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_9001 OUTPUT.
* SET PF-STATUS 'xxxxxxxx'.
* SET TITLEBAR 'xxx'.
ENDMODULE. *&SPWIZARD: OUTPUT MODULE FOR TS 'TS_ITEM'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: SETS ACTIVE TAB
MODULE TS_ITEM_ACTIVE_TAB_SET OUTPUT. TS_ITEM-ACTIVETAB = G_TS_ITEM-PRESSED_TAB.
CASE G_TS_ITEM-PRESSED_TAB.
WHEN C_TS_ITEM-TAB1.
G_TS_ITEM-SUBSCREEN = '9031'.
WHEN C_TS_ITEM-TAB2.
G_TS_ITEM-SUBSCREEN = '9032'.
WHEN C_TS_ITEM-TAB3.
G_TS_ITEM-SUBSCREEN = '9033'.
WHEN C_TS_ITEM-TAB4.
G_TS_ITEM-SUBSCREEN = '9034'.
WHEN C_TS_ITEM-TAB5.
G_TS_ITEM-SUBSCREEN = '9035'.
WHEN C_TS_ITEM-TAB6.
G_TS_ITEM-SUBSCREEN = '9036'.
WHEN OTHERS.
*&SPWIZARD: DO NOTHING
ENDCASE.
ENDMODULE. *&SPWIZARD: INPUT MODULE FOR TS 'TS_ITEM'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: GETS ACTIVE TAB
MODULE TS_ITEM_ACTIVE_TAB_GET INPUT.
OK_CODE = SY-UCOMM.
CASE OK_CODE.
WHEN C_TS_ITEM-TAB1.
G_TS_ITEM-PRESSED_TAB = C_TS_ITEM-TAB1.
WHEN C_TS_ITEM-TAB2.
G_TS_ITEM-PRESSED_TAB = C_TS_ITEM-TAB2.
WHEN C_TS_ITEM-TAB3.
G_TS_ITEM-PRESSED_TAB = C_TS_ITEM-TAB3.
WHEN C_TS_ITEM-TAB4.
G_TS_ITEM-PRESSED_TAB = C_TS_ITEM-TAB4.
WHEN C_TS_ITEM-TAB5.
G_TS_ITEM-PRESSED_TAB = C_TS_ITEM-TAB5.
WHEN C_TS_ITEM-TAB6.
G_TS_ITEM-PRESSED_TAB = C_TS_ITEM-TAB6.
WHEN OTHERS.
*&SPWIZARD: DO NOTHING
ENDCASE.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module MOD_SET_TAB_VISIABLE OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE MOD_SET_TAB_VISIABLE OUTPUT.
IF SY-UNAME = 'LIYUAN'."设置隐藏的TAB页签
LOOP AT SCREEN.
IF SCREEN-NAME = 'TS_ITEM_TAB5'.
SCREEN-INVISIBLE = 'X'.
SCREEN-ACTIVE = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Form FRM_HEADER_FIELD_VISIABLE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_HEADER_FIELD_VISIABLE .
LOOP AT SCREEN."设置屏幕字段的隐藏
IF SCREEN-NAME = 'GW_HEAD-OBJECT_ID' OR SCREEN-NAME = 'GW_HEAD-ZZZGROUP'.
SCREEN-ACTIVE = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_9001_FIELD_MODIFY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_9001_FIELD_MODIFY .
IF GW_ITEM-ITM_TYPE = 'ZSPA'."pai中做字段关联逻辑或,字段默认逻辑
GW_ITEM-ZZZBRAND = 'HI'.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Module FRM_EXIT INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE FRM_EXIT INPUT.
LEAVE PROGRAM.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Form FRM_SAVE_CHECK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_SAVE_CHECK . ENDFORM.
9000逻辑流:
PROCESS BEFORE OUTPUT.
MODULE STATUS_9000.
CALL SUBSCREEN HSUB INCLUDING SY-REPID TC_9001_HSUB."'9002'.
CALL SUBSCREEN SUB1 INCLUDING SY-REPID TC_9001_SUB1."'9001'.
CALL SUBSCREEN SUB2 INCLUDING SY-REPID TC_9001_SUB2."'9002'.
CALL SUBSCREEN SUB3 INCLUDING SY-REPID TC_9001_SUB3."'9002'. * MODULE FRM_SET_DISABLE.
*
PROCESS AFTER INPUT.
MODULE FRM_EXIT AT EXIT-COMMAND.
CALL SUBSCREEN HSUB.
CALL SUBSCREEN SUB1.
CALL SUBSCREEN SUB2.
CALL SUBSCREEN SUB3. MODULE USER_COMMAND_9000.
9001TC逻辑流
PROCESS BEFORE OUTPUT.
*&SPWIZARD: PBO FLOW LOGIC FOR TABLECONTROL 'TC_9001'
MODULE TC_9001_CHANGE_TC_ATTR.
*&SPWIZARD: MODULE TC_9001_CHANGE_COL_ATTR.
LOOP AT GT_ITEM
INTO GW_ITEM
WITH CONTROL TC_9001
CURSOR TC_9001-CURRENT_LINE.
MODULE TC_9001_GET_LINES.
*&SPWIZARD: MODULE TC_9001_CHANGE_FIELD_ATTR
ENDLOOP. MODULE STATUS_9001.
*
PROCESS AFTER INPUT.
*&SPWIZARD: PAI FLOW LOGIC FOR TABLECONTROL 'TC_9001'
LOOP AT GT_ITEM.
CHAIN.
FIELD GW_ITEM-NUMBER_INT.
FIELD GW_ITEM-ITM_TYPE.
FIELD GW_ITEM-ZZZBRAND.
FIELD GW_ITEM-ZZZMODENO.
FIELD GW_ITEM-ZZZSERIALNO.
FIELD GW_ITEM-ZZPLANT.
FIELD GW_ITEM-ZZLGORT.
FIELD GW_ITEM-ZZSYMP_GROU.
FIELD GW_ITEM-ZZSYMP_CODE.
MODULE TC_9001_MODIFY ON CHAIN-REQUEST.
ENDCHAIN.
ENDLOOP.
MODULE TC_9001_USER_COMMAND.
*&SPWIZARD: MODULE TC_9001_CHANGE_TC_ATTR.
*&SPWIZARD: MODULE TC_9001_CHANGE_COL_ATTR. * MODULE USER_COMMAND_9001.
9002TC逻辑流:
PROCESS BEFORE OUTPUT.
*&SPWIZARD: PBO FLOW LOGIC FOR TABLECONTROL 'TC_9002'
MODULE TC_9002_CHANGE_TC_ATTR.
*&SPWIZARD: MODULE TC_9002_CHANGE_COL_ATTR.
LOOP AT GT_PART
INTO GW_PART
WITH CONTROL TC_9002
CURSOR TC_9002-CURRENT_LINE.
MODULE TC_9002_GET_LINES.
*&SPWIZARD: MODULE TC_9002_CHANGE_FIELD_ATTR
ENDLOOP. * MODULE STATUS_9002.
*
PROCESS AFTER INPUT.
*&SPWIZARD: PAI FLOW LOGIC FOR TABLECONTROL 'TC_9002'
LOOP AT GT_PART.
CHAIN.
FIELD GW_PART-PARTNER_FCT.
FIELD GW_PART-PARTNER_NO.
FIELD GW_PART-DISPLAY_TYPE.
FIELD GW_PART-NO_TYPE.
FIELD GW_PART-ADDR_NP.
MODULE TC_9002_MODIFY ON CHAIN-REQUEST.
endchain.
ENDLOOP.
MODULE TC_9002_USER_COMMAND.
*&SPWIZARD: MODULE TC_9002_CHANGE_TC_ATTR.
*&SPWIZARD: MODULE TC_9002_CHANGE_COL_ATTR. * MODULE USER_COMMAND_9002.
TAB STRIP逻辑流:
PROCESS BEFORE OUTPUT.
*&SPWIZARD: PBO FLOW LOGIC FOR TABSTRIP 'TS_ITEM'
MODULE TS_ITEM_ACTIVE_TAB_SET.
CALL SUBSCREEN:
9031_SCA INCLUDING G_TS_ITEM-PROG '9031',
9032_SCA INCLUDING G_TS_ITEM-PROG '9032',
9033_SCA INCLUDING G_TS_ITEM-PROG '9033',
9034_SCA INCLUDING G_TS_ITEM-PROG '9034',
9035_SCA INCLUDING G_TS_ITEM-PROG '9035',
9036_SCA INCLUDING G_TS_ITEM-PROG '9036'.
MODULE MOD_SET_TAB_VISIABLE.
* MODULE STATUS_9003.
*
PROCESS AFTER INPUT.
*&SPWIZARD: PAI FLOW LOGIC FOR TABSTRIP 'TS_ITEM'
CALL SUBSCREEN:
9031_SCA,
9032_SCA,
9033_SCA,
9034_SCA,
9035_SCA,
9036_SCA.
MODULE TS_ITEM_ACTIVE_TAB_GET.
* MODULE USER_COMMAND_9003.
不管是主屏幕还是子屏幕,逻辑流处理顺序都是自上而下,从左到右。所以在一些关联控制的时候,需要做好屏幕和处理逻辑的顺序。
ABAP基础三——DIALOG整体的更多相关文章
- Bootstrap <基础三十二>模态框(Modal)插件
模态框(Modal)是覆盖在父窗体上的子窗体.通常,目的是显示来自一个单独的源的内容,可以在不离开父窗体的情况下有一些互动.子窗体可提供信息.交互等. 如果您想要单独引用该插件的功能,那么您需要引用 ...
- Python全栈开发【基础三】
Python全栈开发[基础三] 本节内容: 函数(全局与局部变量) 递归 内置函数 函数 一.定义和使用 函数最重要的是减少代码的重用性和增强代码可读性 def 函数名(参数): ... 函数体 . ...
- Bootstrap <基础三十一>插件概览
在前面布局组件中所讨论到的组件仅仅是个开始.Bootstrap 自带 12 种 jQuery 插件,扩展了功能,可以给站点添加更多的互动.即使不是一名高级的 JavaScript 开发人员,也可以着手 ...
- Bootstrap <基础三十>Well
Well 是一种会引起内容凹陷显示或插图效果的容器 <div>.为了创建 Well,只需要简单地把内容放在带有 class .well 的 <div> 中即可.下面的实例演示了 ...
- Bootstrap<基础三> 排版
Bootstrap 使用 Helvetica Neue. Helvetica. Arial 和 sans-serif 作为其默认的字体栈. 使用 Bootstrap 的排版特性,您可以创建标题.段落. ...
- jdbc基础 (三) 大文本、二进制数据处理
LOB (Large Objects) 分为:CLOB和BLOB,即大文本和大二进制数据 CLOB:用于存储大文本 BLOB:用于存储二进制数据,例如图像.声音.二进制文件 在mysql中,只有B ...
- Ruby语法基础(三)
Ruby语法基础(三) 在前面快速入之后,这次加深对基本概念的理解. 字符串 Ruby字符串可以分为单引号字符串和双引号字符串,单引号字符串效率更高,但双引号的支持转义和运行 puts '单引 ...
- C#_02.13_基础三_.NET类基础
C#_02.13_基础三_.NET类基础 一.类概述: 类是一个能存储数据和功能并执行代码的数据结构,包含数据成员和函数成员.(有什么和能够干什么) 运行中的程序是一组相互作用的对象的集合. 二.为类 ...
- 04 mysql 基础三 (进阶)
mysql 基础三 阶段一 mysql 单表查询 1.查询所有记录 select * from department; select * from student; select * from ...
- Python 基础 三 反射
Python 基础 三 反射 今天我们先介绍一下反射这个概念,啥是反射?反射就是自己检测自己.在我们Python的面向对象中的反射是啥意思呢?就是通过字符串的形式操作对象相关的属性.python中的一 ...
随机推荐
- Windows 10 的 "邮件" 设置完成QQ账户,提示您的Qq帐户设置已过期的处置方法
引起这问题的原因可能是QQ未开启 1.POP3/SMTP服务 2.IMAP/SMTP服务 开启方法: 1.登录QQ邮箱(mail.qq.com) 2.点击"设置"->&q ...
- 【Linux】shell 脚本 (.sh) 编写及执行
shell脚本 shell脚本就是一些命令的集合 #!/bin/bash echo "文件开头代表:该文件使用的是bash语法" 一.运行.sh文件 方法一:当前文件执行.sh 文 ...
- 网站支持https之一:https原理和SSL证书类型
1 https原理 https加密请求过程 Client和Server之间会进行一下几个步骤的交互: ① Client发送https请求: ② Client和Server通过tcp的三次握手建立连接, ...
- [源码系列:手写spring] AOP第一节:切点表达式
在本专栏之前的文章中已经带大家熟悉了Spirng中核心概念IOC的原理以及手写了核心代码,接下来将继续介绍Spring中另一核心概念AOP. AOP即切面编程是Spring框架中的一个 ...
- Sql Server执行情况
--- 1.查找目前SQL Server所执行的SQL语法,并展示资源情况: SELECT s2.dbid , DB_NAME(s2.dbid) AS [数据库名] , --s1.sql_handle ...
- Devops工程师需要具备的10项技能
Facebook.Amazon和Microsoft等公司正在大量使用DevOps技术来确保软件的一致交付,DevOps的的工作机会和所需要的技能集也是越来越多. 在这里,我们将讨论Devops工程师需 ...
- Linux学习笔记(三)----进程
简介 进程是系统资源分配的最小单位,它曾经也是CPU调度的最小单位,但后面被线程所取代. 进程树 Linux系统通过父子进程关系串联起来,所有进程之前构成了一个多叉树结构. 孤儿进程 孤儿进程是指父进 ...
- il热更新(一)
转载请标明出处:http://www.cnblogs.com/zblade/ 最近研究了一下如何在unity中实现c#的热更新,对于整个DLL热更新的过程和方案有一个初步的了解,这儿就写下来,便于后续 ...
- 🎀Nginx 安全设置(禁止Iframe跨域访问、隐藏server、限制ip访问)
1.安装[headers-more-nginx-module]模块,自定义nginx头信息 2.禁止Iframe跨域请求 more_set_headers 'X-Frame-Options SAMEO ...
- React AntD的Dropdown组件报错:React.Children.only expected to receive a single React element child.可能的n原因
React.Children.only expected to receive a single React element child. Error: React.Children.only exp ...