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中的一 ...
随机推荐
- ASP.NET Core 模型验证消息的本地化新姿势
最近在研究系统本地化的问题,不可避免要实现模型类的验证消息本地化.毕竟这些错误消息是要返回给用户的. 疑问产生 在MVC模型下,我们会使用模型类对请求参数进行绑定和验证.举个例子: public cl ...
- 面试题-Storm框架
前言 Storm框架在实际项目中已经平稳运行快一年了,也很好的支撑了海量读写器的数据处理需求,不过和RabbitMQ一样,为了项目进度,实际工作中只能尽快的调研,关注一些关键点,其他的细节就只能放一放 ...
- 把postgreSQL的表导入SQLite
万能的互联网,一查一大堆废话,几乎搞不定.现将查到的资料结合实践概况如下,对不对也不清楚,反正可以跑了. 1.把PostgreSQL的表SQL语句复制出来 CREATE TABLE "mai ...
- nodejs环境准备
这是为了针对nodejs使用来进行的环境准备,分出windows和ubuntu两种情况: Windows 环境 安装 Node.js 下载安装包:访问下面nodejs官网: 选择适合 Windows ...
- python之导入(import)\引用自己写的py文件的方法
有时候出现这种情况,通过A脚本取数据,然后B数据去处理数据,如果A.B两个脚本的能力用同一个脚本去书写会显示的过于臃肿不易优化 这就需要根据不同的功能拆分然后到互相调用 可以用import的方式实现 ...
- 1、 为什么软件开发周期总是预估的2~3倍? 2、什么是分而治之? 3、了解 WBS
1.为什么软件开发周期总是预估的2~3倍? 首先,软件开发中经常会有需求变更的情况,客户或者利益相关者可能会提出新的需求或者改变现有的需求,这就得调整计划,增加了开发时间.其次,开发人员的技术和经验也 ...
- EFCore先DBFirst,再CodeFirst(针对老项目迁移)
参照文章: CodeFirst命令介绍:Scaffold-DbContext 命令使用 - 跟着阿笨一起玩.NET - 博客园 (cnblogs.com) 整体流程介绍:NetCore 中 EFcor ...
- AD 侦查-MSRPC
本文通过 Google 翻译 AD Recon – MSRPC (135/539) 这篇文章所产生,本人仅是对机器翻译中部分表达别扭的字词进行了校正及个别注释补充. 导航 0 前言 1 MSRPC(远 ...
- Springboot 的一些默认配置规则
说明 本文样例说明仅适用 maven 环境和语法,但所述内容也适用 gradle 原文地址:https://www.cnblogs.com/qnlcy/p/15905544.html 一.日志 1. ...
- C#之CultureInfo.InvariantCulture
number.ToString(CultureInfo.InvariantCulture) 是 C# 中一个重要的文化设置(Culture)相关的字符串格式化方法,它的作用是 确保数字在不同系统/语言 ...