‎2006 Dec 08 11:12 AM
Hi Friends,
I have created a screen with different tabs and in each tab, I have used table control. The problem I am facing is that, I have entered the data in tab-1 and moved on to tab-2. On coming back to tab-1, the data entered in tab-1 is cleared, but when the save button is clicked, the data of tab-1 is getting saved.
I want to know, as to why the data is getting cleared on moving the next screen and how to correct the same.
TIA.
Regards,
Mark K
‎2006 Dec 08 11:14 AM
Hi Mark ,
In code could you check if refresh table is used .
Regards
Arun
‎2006 Dec 08 11:18 AM
Hi Arun,
There is no refresh command in the program.
But, how it is getting refreshed, I don't know.
Regards,
‎2006 Dec 08 11:21 AM
Hi Mark ,
You will have to debugg the code and see , if possible please padte your PBO ans PAI code here.
Regards
Arun
‎2006 Dec 08 11:30 AM
The entire code is given below. Kindly look into the same and let me know the solution.
PROCESS BEFORE OUTPUT.
*&SPWIZARD: PBO FLOW LOGIC FOR TABSTRIP 'TDR'
MODULE TDR_ACTIVE_TAB_SET.
CALL SUBSCREEN TDR_SCA
INCLUDING G_TDR-PROG G_TDR-SUBSCREEN.
MODULE STATUS_0100.
*
PROCESS AFTER INPUT.
*&SPWIZARD: PAI FLOW LOGIC FOR TABSTRIP 'TDR'
CALL SUBSCREEN TDR_SCA.
MODULE TDR_ACTIVE_TAB_GET.
MODULE USER_COMMAND_0100.
-
PROGRAM ZTRANDAM MESSAGE-ID ZAUT.
*&SPWIZARD: FUNCTION CODES FOR TABSTRIP 'TDR'
TABLES : VBRP, ZTDRHDR, ZTDRDTL, ZTDRSLN, ZTDRDMG.
DATA : BEGIN OF IT_PRIMDAM OCCURS 0,
DIVSN LIKE ZTDRDTL-DIVSN,
MATRL LIKE ZTDRDTL-MATRL,
SLQTY LIKE ZTDRDTL-SLQTY,
DMQTY LIKE ZTDRDTL-DMQTY,
SSQTY LIKE ZTDRDTL-SSQTY,
END OF IT_PRIMDAM.
DATA : BEGIN OF IT_SECDAM OCCURS 0,
DIVSN LIKE ZTDRDTL-DIVSN,
MATRL LIKE ZTDRDTL-MATRL,
SLQTY LIKE ZTDRDTL-SLQTY,
DMQTY LIKE ZTDRDTL-DMQTY,
SSQTY LIKE ZTDRDTL-SSQTY,
END OF IT_SECDAM.
DATA : BEGIN OF IT_RATE OCCURS 0,
DIVSN LIKE ZTDRDMG-DIVSN,
MATRL LIKE ZTDRDMG-MATRL,
DMQTY LIKE ZTDRDMG-DMQTY,
RSNCD LIKE ZTDRDMG-RSNCD,
CLRAT LIKE ZTDRDMG-CLRAT,
CLAMT LIKE ZTDRDMG-CLAMT,
END OF IT_RATE.
DATA : WA_HONUM(10) TYPE C,
WA_HONUM1(10) TYPE C,
WA_DCNUM(10) TYPE C,
WA_DCNUM1(10) TYPE C,
WA_HONUM_X(10) TYPE C.
CONSTANTS: BEGIN OF C_TDR,
TAB1 LIKE SY-UCOMM VALUE 'TDR_FC1',
TAB2 LIKE SY-UCOMM VALUE 'TDR_FC2',
TAB3 LIKE SY-UCOMM VALUE 'TDR_FC3',
TAB4 LIKE SY-UCOMM VALUE 'TDR_FC4',
TAB5 LIKE SY-UCOMM VALUE 'TDR_FC5',
TAB6 LIKE SY-UCOMM VALUE 'TDR_FC6',
END OF C_TDR.
*&SPWIZARD: DATA FOR TABSTRIP 'TDR'
CONTROLS: TDR TYPE TABSTRIP.
DATA: BEGIN OF G_TDR,
SUBSCREEN LIKE SY-DYNNR,
PROG LIKE SY-REPID VALUE 'ZTRANDAM',
PRESSED_TAB LIKE SY-UCOMM VALUE C_TDR-TAB1,
END OF G_TDR.
DATA: OK_CODE LIKE SY-UCOMM.
*&SPWIZARD: OUTPUT MODULE FOR TS 'TDR'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: SETS ACTIVE TAB
MODULE TDR_ACTIVE_TAB_SET OUTPUT.
TDR-ACTIVETAB = G_TDR-PRESSED_TAB.
CASE G_TDR-PRESSED_TAB.
WHEN C_TDR-TAB1.
G_TDR-SUBSCREEN = '0107'.
WHEN C_TDR-TAB2.
G_TDR-SUBSCREEN = '0108'.
WHEN C_TDR-TAB3.
G_TDR-SUBSCREEN = '0109'.
WHEN C_TDR-TAB4.
G_TDR-SUBSCREEN = '0110'.
WHEN C_TDR-TAB5.
G_TDR-SUBSCREEN = '0112'.
WHEN C_TDR-TAB6.
G_TDR-SUBSCREEN = '0111'.
WHEN OTHERS.
*&SPWIZARD: DO NOTHING
ENDCASE.
ENDMODULE. "TDR_ACTIVE_TAB_SET OUTPUT
*&SPWIZARD: INPUT MODULE FOR TS 'TDR'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: GETS ACTIVE TAB
MODULE TDR_ACTIVE_TAB_GET INPUT.
OK_CODE = SY-UCOMM.
CASE OK_CODE.
WHEN C_TDR-TAB1.
G_TDR-PRESSED_TAB = C_TDR-TAB1.
WHEN C_TDR-TAB2.
G_TDR-PRESSED_TAB = C_TDR-TAB2.
WHEN C_TDR-TAB3.
G_TDR-PRESSED_TAB = C_TDR-TAB3.
WHEN C_TDR-TAB4.
G_TDR-PRESSED_TAB = C_TDR-TAB4.
WHEN C_TDR-TAB5.
G_TDR-PRESSED_TAB = C_TDR-TAB5.
WHEN C_TDR-TAB6.
G_TDR-PRESSED_TAB = C_TDR-TAB6.
WHEN OTHERS.
*&SPWIZARD: DO NOTHING
ENDCASE.
ENDMODULE. "TDR_ACTIVE_TAB_GET INPUT
&----
*& Module STATUS_0100 OUTPUT
&----
text
----
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'GUI'.
SET TITLEBAR 'TDR'.
TYPE-POOLS :VRM.
DATA:I_DDLIST TYPE VRM_VALUES,
W_DDLIST LIKE LINE OF I_DDLIST.
DATA: BEGIN OF I_PSTYP OCCURS 0,
PKEY(1) TYPE C ,
PVAL(10) TYPE C ,
END OF I_PSTYP.
CLEAR : W_DDLIST, I_DDLIST.
IF I_PSTYP[] IS INITIAL.
I_PSTYP-PKEY = 'P'.
I_PSTYP-PVAL = 'Primary'.
APPEND I_PSTYP.
I_PSTYP-PKEY = 'S'.
I_PSTYP-PVAL = 'Secondary'.
APPEND I_PSTYP.
ENDIF.
DELETE ADJACENT DUPLICATES FROM I_PSTYP.
LOOP AT I_PSTYP .
W_DDLIST-KEY = I_PSTYP-PKEY.
W_DDLIST-TEXT = I_PSTYP-PVAL.
APPEND W_DDLIST TO I_DDLIST.
CLEAR W_DDLIST.
ENDLOOP.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
ID = 'ZTDRHDR-PSTYP'
VALUES = I_DDLIST
EXCEPTIONS
ID_ILLEGAL_NAME = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
----
DATA:I_DDLIST1 TYPE VRM_VALUES,
W_DDLIST1 LIKE LINE OF I_DDLIST1.
DATA: BEGIN OF I_CLAIM OCCURS 0,
PKEY1(1) TYPE C ,
PVAL1(10) TYPE C ,
END OF I_CLAIM.
CLEAR : W_DDLIST1, I_DDLIST1.
IF I_CLAIM[] IS INITIAL.
I_CLAIM-PKEY1 = 'Y'.
I_CLAIM-PVAL1 = ' Yes'.
APPEND I_CLAIM.
I_CLAIM-PKEY1 = 'N'.
I_CLAIM-PVAL1 = ' No'.
APPEND I_CLAIM.
ENDIF.
DELETE ADJACENT DUPLICATES FROM I_CLAIM.
LOOP AT I_CLAIM .
W_DDLIST1-KEY = I_CLAIM-PKEY1.
W_DDLIST1-TEXT = I_CLAIM-PVAL1.
APPEND W_DDLIST1 TO I_DDLIST1.
CLEAR W_DDLIST1.
ENDLOOP.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
ID = 'ZTDRHDR-CLAIM'
VALUES = I_DDLIST1
EXCEPTIONS
ID_ILLEGAL_NAME = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDMODULE. " STATUS_0100 OUTPUT
**&SPWIZARD: DATA DECLARATION FOR TABLECONTROL 'PRIMDAM'
*&SPWIZARD: DEFINITION OF DDIC-TABLE
*&SPWIZARD: TYPE FOR THE DATA OF TABLECONTROL 'PRIMDAM'
*TYPES: BEGIN OF T_PRIMDAM,
FKIMG LIKE VBRP-FKIMG,
MATNR LIKE VBRP-MATNR,
SPART LIKE VBRP-SPART,
END OF T_PRIMDAM.
*--- Added for testing -
TYPES: BEGIN OF T_PRIMDAM,
DIVSN LIKE ZTDRDTL-DIVSN,
MATRL LIKE ZTDRDTL-MATRL,
SLQTY LIKE ZTDRDTL-SLQTY,
DMQTY LIKE ZTDRDTL-DMQTY,
SSQTY LIKE ZTDRDTL-SSQTY,
SELCT LIKE ZTDRDTL-SELCT,
END OF T_PRIMDAM.
DATA : G_IT_PRIMDAM TYPE T_PRIMDAM OCCURS 0 WITH HEADER LINE,
G_IT_PRIMDAM_WA TYPE T_PRIMDAM.
TYPES: BEGIN OF T_SECDAM,
DIVSN LIKE ZTDRDTL-DIVSN,
MATRL LIKE ZTDRDTL-MATRL,
SLQTY LIKE ZTDRDTL-SLQTY,
DMQTY LIKE ZTDRDTL-DMQTY,
SSQTY LIKE ZTDRDTL-SSQTY,
SELCT LIKE ZTDRDTL-SELCT,
END OF T_SECDAM.
DATA : G_IT_SECDAM TYPE T_SECDAM OCCURS 0 WITH HEADER LINE,
G_IT_SECDAM_WA TYPE T_SECDAM.
DATA : G_IT_SECDAM_COPIED.
TYPES: BEGIN OF T_RATE,
DIVSN LIKE ZTDRDMG-DIVSN,
MATRL LIKE ZTDRDMG-MATRL,
DMQTY LIKE ZTDRDMG-DMQTY,
RSNCD LIKE ZTDRDMG-RSNCD,
CLRAT LIKE ZTDRDMG-CLRAT,
CLAMT LIKE ZTDRDMG-CLAMT,
END OF T_RATE.
DATA : G_IT_RATE TYPE T_RATE OCCURS 0 WITH HEADER LINE,
G_IT_RATE_WA TYPE T_RATE.
*--- End of Added for testing -
*&SPWIZARD: DECLARATION OF TABLECONTROL 'PRIMDAM' ITSELF
CONTROLS: PRIMDAM TYPE TABLEVIEW USING SCREEN 0108.
*&SPWIZARD: LINES OF TABLECONTROL 'PRIMDAM'
DATA: G_PRIMDAM_LINES LIKE SY-LOOPC.
*&SPWIZARD: OUTPUT MODULE FOR TC 'PRIMDAM'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: UPDATE LINES FOR EQUIVALENT SCROLLBAR
MODULE PRIMDAM_CHANGE_TC_ATTR OUTPUT.
DESCRIBE TABLE IT_PRIMDAM LINES PRIMDAM-LINES.
ENDMODULE. "PRIMDAM_CHANGE_TC_ATTR OUTPUT
*&SPWIZARD: OUTPUT MODULE FOR TC 'PRIMDAM'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: GET LINES OF TABLECONTROL
MODULE PRIMDAM_GET_LINES OUTPUT.
G_PRIMDAM_LINES = SY-LOOPC.
ENDMODULE. "PRIMDAM_GET_LINES OUTPUT
-------Added for testing -
MODULE PRIMDAM_MODIFY INPUT.
MOVE-CORRESPONDING ZTDRDTL TO G_IT_PRIMDAM_WA.
MODIFY IT_PRIMDAM
FROM G_IT_PRIMDAM_WA
INDEX PRIMDAM-CURRENT_LINE.
APPEND G_IT_PRIMDAM_WA TO IT_PRIMDAM.
ENDMODULE.
-------End of Added for testing -
*&SPWIZARD: INPUT MODULE FOR TC 'PRIMDAM'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: PROCESS USER COMMAND
MODULE PRIMDAM_USER_COMMAND INPUT.
OK_CODE = SY-UCOMM.
PERFORM USER_OK_TC USING 'PRIMDAM'
'IT_PRIMDAM'
'MATNR'
CHANGING OK_CODE.
SY-UCOMM = OK_CODE.
ENDMODULE. "PRIMDAM_USER_COMMAND INPUT
----
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 'SAVE'. "insert row
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
----
Secondary Damage Table Control **************************
*&SPWIZARD: DECLARATION OF TABLECONTROL 'SECDAM' ITSELF
CONTROLS: SECDAM TYPE TABLEVIEW USING SCREEN 0109.
*&SPWIZARD: LINES OF TABLECONTROL 'SECDAM'
DATA: G_SECDAM_LINES LIKE SY-LOOPC.
*&SPWIZARD: OUTPUT MODULE FOR TC 'SECDAM'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: UPDATE LINES FOR EQUIVALENT SCROLLBAR
MODULE SECDAM_CHANGE_TC_ATTR OUTPUT.
DESCRIBE TABLE IT_SECDAM LINES SECDAM-LINES.
ENDMODULE. "SECDAM_CHANGE_TC_ATTR OUTPUT
*&SPWIZARD: OUTPUT MODULE FOR TC 'SECDAM'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: GET LINES OF TABLECONTROL
MODULE SECDAM_GET_LINES OUTPUT.
G_SECDAM_LINES = SY-LOOPC.
ENDMODULE. "SECDAM_GET_LINES OUTPUT
*&SPWIZARD: INPUT MODULE FOR TC 'SECDAM'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: MODIFY TABLE
MODULE SECDAM_MODIFY INPUT.
move-corresponding ztdrdtl to g_it_secdam_wa.
MODIFY IT_SECDAM
FROM g_it_secdam_wa "IT_SECDAM
INDEX SECDAM-CURRENT_LINE.
append g_it_secdam_wa to it_secdam.
ENDMODULE. "SECDAM_MODIFY INPUT
*&SPWIZARD: INPUT MODULE FOR TC 'SECDAM'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: PROCESS USER COMMAND
MODULE SECDAM_USER_COMMAND INPUT.
OK_CODE = SY-UCOMM.
PERFORM USER_OK_TC USING 'SECDAM'
'IT_SECDAM'
' '
CHANGING OK_CODE.
SY-UCOMM = OK_CODE.
ENDMODULE. "SECDAM_USER_COMMAND INPUT
End of Secondary Damage Table Control *************
Rate Table Control **************************
*&SPWIZARD: DECLARATION OF TABLECONTROL 'RATE' ITSELF
CONTROLS: RATE TYPE TABLEVIEW USING SCREEN 0110.
*&SPWIZARD: LINES OF TABLECONTROL 'RATE'
DATA: G_RATE_LINES LIKE SY-LOOPC.
*&SPWIZARD: OUTPUT MODULE FOR TC 'RATE'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: UPDATE LINES FOR EQUIVALENT SCROLLBAR
MODULE RATE_CHANGE_TC_ATTR OUTPUT.
DESCRIBE TABLE IT_RATE LINES RATE-LINES.
ENDMODULE. "RATE_CHANGE_TC_ATTR OUTPUT
*&SPWIZARD: OUTPUT MODULE FOR TC 'RATE'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: GET LINES OF TABLECONTROL
MODULE RATE_GET_LINES OUTPUT.
G_RATE_LINES = SY-LOOPC.
ENDMODULE. "RATE_GET_LINES OUTPUT
*&SPWIZARD: INPUT MODULE FOR TC 'RATE'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: MODIFY TABLE
MODULE RATE_MODIFY INPUT.
MOVE-CORRESPONDING ZTDRDMG TO G_IT_RATE_WA.
MODIFY IT_RATE
FROM G_IT_RATE_WA "IT_RATE
INDEX RATE-CURRENT_LINE.
APPEND G_IT_RATE_WA TO IT_RATE.
ENDMODULE. "RATE_MODIFY INPUT
*&SPWIZARD: INPUT MODULE FOR TC 'RATE'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: PROCESS USER COMMAND
MODULE RATE_USER_COMMAND INPUT.
OK_CODE = SY-UCOMM.
PERFORM USER_OK_TC USING 'RATE'
'IT_RATE'
' '
CHANGING OK_CODE.
SY-UCOMM = OK_CODE.
ENDMODULE. "RATE_USER_COMMAND INPUT
***************End of Rate Table Control ***********************
&----
*& Module USER_COMMAND_0100 INPUT
&----
text
----
MODULE USER_COMMAND_0100 INPUT.
DATA: SAVE_OK LIKE OK_CODE,
OUTPUT LIKE OK_CODE.
SAVE_OK = OK_CODE.
CLEAR OK_CODE.
CASE SAVE_OK.
WHEN 'BACK' OR 'EXIT' OR 'CANCEL'.
LEAVE PROGRAM.
WHEN 'SAVE'.
AUTHORITY-CHECK OBJECT 'Z_REPORT_N'
ID 'WERKS' FIELD ZTDRHDR-BRNCH.
IF SY-SUBRC <> 0.
MESSAGE E001 WITH ZTDRHDR-BRNCH.
ELSE.
SELECT SINGLE MAX( HONUM )
INTO WA_HONUM
FROM ZTDRHDR.
WA_HONUM1 = WA_HONUM + 1.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = WA_HONUM1
IMPORTING
OUTPUT = WA_HONUM1.
ZTDRHDR-HONUM = WA_HONUM1.
ZTDRDTL-HONUM = WA_HONUM1.
SELECT SINGLE MAX( TDNUM )
INTO WA_DCNUM
FROM ZTDRHDR
WHERE BRNCH EQ ZTDRHDR-BRNCH.
WA_DCNUM1 = WA_DCNUM + 1.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = WA_DCNUM1
IMPORTING
OUTPUT = WA_DCNUM1.
ZTDRHDR-TDNUM = WA_DCNUM1.
ZTDRDMG-TDNUM = WA_DCNUM1.
SELECT SINGLE HONUM FROM ZTDRHDR INTO WA_HONUM_X WHERE HONUM = ZTDRHDR-HONUM.
IF WA_HONUM_X IS INITIAL.
INSERT ZTDRHDR.
ENDIF.
IF ZTDRHDR-PSTYP EQ 'P'.
LOOP AT IT_PRIMDAM.
ZTDRDTL-DIVSN = IT_PRIMDAM-DIVSN.
ZTDRDTL-MATRL = IT_PRIMDAM-MATRL.
ZTDRDTL-SLQTY = IT_PRIMDAM-SLQTY.
ZTDRDTL-DMQTY = IT_PRIMDAM-DMQTY.
ZTDRDTL-SSQTY = IT_PRIMDAM-SSQTY.
INSERT ZTDRDTL.
ENDLOOP.
ELSE.
LOOP AT IT_SECDAM.
ZTDRDTL-DIVSN = IT_SECDAM-DIVSN.
ZTDRDTL-MATRL = IT_SECDAM-MATRL.
ZTDRDTL-SLQTY = IT_SECDAM-SLQTY.
ZTDRDTL-DMQTY = IT_SECDAM-DMQTY.
ZTDRDTL-SSQTY = IT_SECDAM-SSQTY.
INSERT ZTDRDTL.
ENDLOOP.
LOOP AT IT_RATE.
ZTDRDMG-DIVSN = IT_RATE-DIVSN.
ZTDRDMG-MATRL = IT_RATE-MATRL.
ZTDRDMG-DMQTY = IT_RATE-DMQTY.
ZTDRDMG-RSNCD = IT_RATE-RSNCD.
ZTDRDMG-CLRAT = IT_RATE-CLRAT.
ZTDRDMG-CLAMT = IT_RATE-DMQTY * IT_RATE-CLRAT .
INSERT ZTDRDMG.
ENDLOOP.
COMMIT WORK.
ENDIF.
ENDIF.
REFRESH : IT_SECDAM, IT_PRIMDAM, IT_RATE.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT.
-
Regards,
‎2006 Dec 08 11:47 AM
Hi Mark ,
Unfortunately i am not able to figure out where is the error ,
Did u debugg the program and see where is the table being refreshed , you seem to have made the tabs using the wizard so the code must not have any error .
Please debug and tell me where do u find the table being refreshed.
Reagrds
Arun
‎2006 Dec 08 12:15 PM
Hi,
In debug mode just see what is the function code which gets triggered when you switch from one tab to anoter tab.
Now for tht particular function code write a piece of code.whatever data you have in first table control, pass it into some other internal table when you are switching tab, then pass the same value in the main(table control internal table) while coming back. I think you will have to trace the data and display it everytime you are switching the tab.
‎2006 Dec 08 11:19 AM
hi mark,
as to what u hav told, i think u wud hav declared "refresh or clear" commands in ur code..
if possible,send in ur code snippet here,wil try to figure out wat could b the reason.
all the best
‎2006 Dec 08 11:54 AM
Hi Mark
Just Debug the program and see where the table is getting refreshed. I have done the same thing, but for me data is not getting cleared. If you want i will paste my code.
Regards
Haritha.
‎2006 Dec 08 1:08 PM
Hi Mark ,
Any development on this issue. Found the reason for the error
Regards
Arun