Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

logic needed

Former Member
0 Likes
326

i have a screen i.e having table control.

Now i hav used three mode create change & display for the table control.

I want that as soon as user open the table control in change mode only the lines which have data should open in change mode.rest others should be in disable mode.

How to do this.

Plz guide

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
306

Hi,

Check this code

PROCESS BEFORE OUTPUT.

MODULE STATUS_0102.

MODULE GET_DATA .

loop at T_BANK with control table_control

cursor table_control-current_line.

MODULE SET_LINE_ATTRIBUTES.

endloop.

PROCESS AFTER INPUT.

LOOP AT T_BANK.

MODULE POP_I_TAB.

ENDLOOP.

MODULE USER_COMMAND_0102.

PROGRAM Z11GAURAV_ASSIGN_6 Message-id Z11GAURAV6 .

*******************

*CONTROL STRUCTURE

*******************

CONTROLS : tabstrp TYPE TABSTRIP.

CONTROLS : table_control TYPE TABLEVIEW USING SCREEN 0104.

******************

*TABLES

******************

tables: Z11_CUSTOMER1, Z11_CUST_SALES.

DATA: t_BANK TYPE STANDARD TABLE OF Z11_CUST_BANK WITH HEADER LINE.

******************

*CONSTANTS

******************

CONSTANTS: CCR(3) value 'CRT'.

CONSTANTS: CCH(3) value 'CHG'.

CONSTANTS: CDS(3) value 'DSP'.

CONSTANTS: CSA(3) value 'SAV'.

CONSTANTS: CBC(3) value 'BCK'.

CONSTANTS: CT1(4) value 'TAB1'.

CONSTANTS: CT2(4) value 'TAB2'.

CONSTANTS: CT3(4) value 'TAB3'.

CONSTANTS: CSL(3) value 'SAL'.

**************************************************

*STRUCTURE TO GET PRESSED TAB & TO SET DEFAULT TAB

  • & Screen no. & program name

**************************************************

DATA: BEGIN OF g_tabstrp,

subscreen LIKE sy-dynnr,

prog LIKE sy-repid VALUE 'Z11GAURAV_ASSIGN_6',

pressed_tab LIKE sy-ucomm VALUE 'TAB1',

END OF g_tabstrp.

****************

*OK CODES

****************

data: ok_code_100(4) , SAVE_OK_100(4),ok_code_105(4),

ok_code_101(4).

data: ok_code type sy-ucomm.

****************

*VARIABLES

****************

DATA: V_KUNNR TYPE KUNNR.

DATA: V_REPLY(1).

DATA: V_FLAG type C value '1'.

DATA: V_FLAG1 TYPE C VALUE '0',

V_FLAG2 TYPE C VALUE '0',

V_FLAG3 TYPE C VALUE '0'.

DATA: V_CUSTOMER TYPE KUNNR.

*USER COMMAND FOR SUB SCREEN & UPDATING FLAG

&----


*& Module USER_COMMAND_0102 INPUT

&----


  • text

----


MODULE USER_COMMAND_0102 INPUT.

CASE sy-ucomm.

when 'LSF'.

if v_flag ge 1 and v_flag lt 3.

v_flag = v_flag + 1.

endif.

when 'RSF'.

if v_flag gt 1 and v_flag le 3.

v_flag = v_flag - 1.

endif.

endcase.

ENDMODULE. " USER_COMMAND_0102 INPUT

*SET ATTRIBUTES OF SUB SCREEN.

&----


*& Module SUB_SCREEN_SET OUTPUT

&----


  • text

----


MODULE SUB_SCREEN_SET OUTPUT.

CASE save_ok_100.

WHEN CDS.

LOOP AT SCREEN.

IF screen-group1 = 'G4'.

screen-active = 1.

screen-input = 0.

screen-output = 1.

screen-invisible = 0.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

ENDCASE.

ENDMODULE. " SUB_SCREEN_SET OUTPUT

*TO GET PRESSED TAb WHICH CAN BE ASSIGN TO ACTIVE TAB.

&----


*& Module TABSTRP_ACTIVE_TAB_GET INPUT

&----


  • text

----


MODULE TABSTRP_ACTIVE_TAB_GET INPUT.

ok_code = sy-ucomm.

CASE ok_code.

WHEN CT1.

V_FLAg = '1'.

g_tabstrp-pressed_tab = CT1.

WHEN CT2.

V_FLAg = '2'.

g_tabstrp-pressed_tab = CT2.

WHEN CT3.

V_FLAg = '3'.

g_tabstrp-pressed_tab = CT3.

WHEN 'LSF'.

IF V_FLAG = '1'.

g_tabstrp-pressed_tab = CT1.

ELSEIF V_FLAG = '2'.

g_tabstrp-pressed_tab = CT2.

ELSEIF V_FLAG = '3'.

g_tabstrp-pressed_tab = CT3.

ENDIF.

WHEN 'RSF'.

IF V_FLAG = '1'.

g_tabstrp-pressed_tab = CT1.

ELSEIF V_FLAG = '2'.

g_tabstrp-pressed_tab = CT2.

ELSEIF V_FLAG = '3'.

g_tabstrp-pressed_tab = CT3.

ENDIF.

ENDCASE.

ENDMODULE. " TABSTRP_ACTIVE_TAB_GET INPUT

*GET DATA FOR SUB SCREEN AND MAIN SCREEN

&----


*& Module DATA_1 OUTPUT

&----


  • text

----


MODULE DATA_1 OUTPUT.

IF V_flag1 Lt 1.

IF save_ok_100 = CCH or save_ok_100 = CDS.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

EXPORTING

INPUT = Z11_CUSTOMER1-KUNNR

IMPORTING

OUTPUT = V_CUSTOMER.

.

select single * FROM Z11_CUSTOMER1 WHERE KUNNR = Z11_CUSTOMER1-KUNNR.

Z11_CUSTOMER1-KUNNR = V_CUSTOMER.

V_FLAG1 = V_FLAG1 + 1.

endif.

endif.

ENDMODULE. " DATA_1 OUTPUT

*GET DATA FOR TABLE CONTROl<TABULAR DATA>

&----


*& Module GET_DATA OUTPUT

&----


  • text

----


MODULE GET_DATA OUTPUT.

if V_flag2 lt 1.

IF save_ok_100 = CDS OR save_ok_100 = CCH.

SELECT KUNNR

BANKS

BANKL

BANKN

KOINH

BKONT

BVTYP

BKREF

FROM Z11_CUST_BANK

INTO Corresponding fields of table t_bank

WHERE KUNNR = Z11_CUSTOMER1-KUNNR.

  • IF sy-subrc <> 0.

  • MESSAGE E007 with TEXT-007.

  • ENDIF.

V_flag2 = v_FLAG2 + 1.

ENDIF.

ENDIF.

ENDMODULE. " GET_DATA OUTPUT

*SETTING ATTRIBUTES FOR TABLE ON SCREEN 0104

&----


*& Module SET_LINE_ATTRIBUTES OUTPUT

&----


  • text

----


MODULE SET_LINE_ATTRIBUTES OUTPUT.

CASE save_ok_100.

WHEN CDS. "DISPLAY

LOOP AT SCREEN.

IF screen-group1 = 'A1'.

screen-active = 1.

screen-input = 0.

screen-output = 1.

screen-invisible = 0.

MODIFY SCREEN.

ENDIF.

endloop.

endcase.

ENDMODULE. " SET_LINE_ATTRIBUTES OUTPUT

*MODULE TO POPULATE INTERNAl TABLE FROM SCREEN

&----


*& Module POP_I_TAB INPUT

&----


  • text

----


MODULE POP_I_TAB INPUT.

T_BANK-MANDT = SY-MANDT. "CLIENT

IF save_ok_100 = CCR AND sy-ucomm = CSA ."CREATE+SAVE

IF T_BANK-KUNNR = Z11_CUSTOMER1-KUNNR.

APPEND T_BANK.

ENDIF.

ELSEIF save_ok_100 = CCH AND sy-ucomm = CSA or sy-ucomm = CT3.

"CHANGE+SAVE

IF T_BANK-KUNNR = Z11_CUSTOMER1-KUNNR.

IF TABLE_CONTROL-CURRENT_LINE > SY-DBCNT."IF NEW LINE

APPEND T_BANK.

ELSE.

MODIFY T_BANK INDEX table_control-current_line.

ENDIF.

ENDIF.

ENDIF.

ENDMODULE. " POP_I_TAB INPUT

&----


*& Module DATA_2 OUTPUT

&----


  • text

----


module DATA_2 output.

IF V_flag3 Lt 1.

IF save_ok_100 = CCH or save_ok_100 = CDS.

select single * FROM Z11_CUST_SALES WHERE KUNNR = Z11_CUSTOMER1-KUNNR.

V_FLAG3 = V_FLAG3 + 1.

endif.

endif.

endmodule. " DATA_2 OUTPUT

Reward if Helpful..

Gaurav J.

Edited by: Gaurav Juneja on Feb 5, 2008 6:13 AM

1 REPLY 1
Read only

Former Member
0 Likes
307

Hi,

Check this code

PROCESS BEFORE OUTPUT.

MODULE STATUS_0102.

MODULE GET_DATA .

loop at T_BANK with control table_control

cursor table_control-current_line.

MODULE SET_LINE_ATTRIBUTES.

endloop.

PROCESS AFTER INPUT.

LOOP AT T_BANK.

MODULE POP_I_TAB.

ENDLOOP.

MODULE USER_COMMAND_0102.

PROGRAM Z11GAURAV_ASSIGN_6 Message-id Z11GAURAV6 .

*******************

*CONTROL STRUCTURE

*******************

CONTROLS : tabstrp TYPE TABSTRIP.

CONTROLS : table_control TYPE TABLEVIEW USING SCREEN 0104.

******************

*TABLES

******************

tables: Z11_CUSTOMER1, Z11_CUST_SALES.

DATA: t_BANK TYPE STANDARD TABLE OF Z11_CUST_BANK WITH HEADER LINE.

******************

*CONSTANTS

******************

CONSTANTS: CCR(3) value 'CRT'.

CONSTANTS: CCH(3) value 'CHG'.

CONSTANTS: CDS(3) value 'DSP'.

CONSTANTS: CSA(3) value 'SAV'.

CONSTANTS: CBC(3) value 'BCK'.

CONSTANTS: CT1(4) value 'TAB1'.

CONSTANTS: CT2(4) value 'TAB2'.

CONSTANTS: CT3(4) value 'TAB3'.

CONSTANTS: CSL(3) value 'SAL'.

**************************************************

*STRUCTURE TO GET PRESSED TAB & TO SET DEFAULT TAB

  • & Screen no. & program name

**************************************************

DATA: BEGIN OF g_tabstrp,

subscreen LIKE sy-dynnr,

prog LIKE sy-repid VALUE 'Z11GAURAV_ASSIGN_6',

pressed_tab LIKE sy-ucomm VALUE 'TAB1',

END OF g_tabstrp.

****************

*OK CODES

****************

data: ok_code_100(4) , SAVE_OK_100(4),ok_code_105(4),

ok_code_101(4).

data: ok_code type sy-ucomm.

****************

*VARIABLES

****************

DATA: V_KUNNR TYPE KUNNR.

DATA: V_REPLY(1).

DATA: V_FLAG type C value '1'.

DATA: V_FLAG1 TYPE C VALUE '0',

V_FLAG2 TYPE C VALUE '0',

V_FLAG3 TYPE C VALUE '0'.

DATA: V_CUSTOMER TYPE KUNNR.

*USER COMMAND FOR SUB SCREEN & UPDATING FLAG

&----


*& Module USER_COMMAND_0102 INPUT

&----


  • text

----


MODULE USER_COMMAND_0102 INPUT.

CASE sy-ucomm.

when 'LSF'.

if v_flag ge 1 and v_flag lt 3.

v_flag = v_flag + 1.

endif.

when 'RSF'.

if v_flag gt 1 and v_flag le 3.

v_flag = v_flag - 1.

endif.

endcase.

ENDMODULE. " USER_COMMAND_0102 INPUT

*SET ATTRIBUTES OF SUB SCREEN.

&----


*& Module SUB_SCREEN_SET OUTPUT

&----


  • text

----


MODULE SUB_SCREEN_SET OUTPUT.

CASE save_ok_100.

WHEN CDS.

LOOP AT SCREEN.

IF screen-group1 = 'G4'.

screen-active = 1.

screen-input = 0.

screen-output = 1.

screen-invisible = 0.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

ENDCASE.

ENDMODULE. " SUB_SCREEN_SET OUTPUT

*TO GET PRESSED TAb WHICH CAN BE ASSIGN TO ACTIVE TAB.

&----


*& Module TABSTRP_ACTIVE_TAB_GET INPUT

&----


  • text

----


MODULE TABSTRP_ACTIVE_TAB_GET INPUT.

ok_code = sy-ucomm.

CASE ok_code.

WHEN CT1.

V_FLAg = '1'.

g_tabstrp-pressed_tab = CT1.

WHEN CT2.

V_FLAg = '2'.

g_tabstrp-pressed_tab = CT2.

WHEN CT3.

V_FLAg = '3'.

g_tabstrp-pressed_tab = CT3.

WHEN 'LSF'.

IF V_FLAG = '1'.

g_tabstrp-pressed_tab = CT1.

ELSEIF V_FLAG = '2'.

g_tabstrp-pressed_tab = CT2.

ELSEIF V_FLAG = '3'.

g_tabstrp-pressed_tab = CT3.

ENDIF.

WHEN 'RSF'.

IF V_FLAG = '1'.

g_tabstrp-pressed_tab = CT1.

ELSEIF V_FLAG = '2'.

g_tabstrp-pressed_tab = CT2.

ELSEIF V_FLAG = '3'.

g_tabstrp-pressed_tab = CT3.

ENDIF.

ENDCASE.

ENDMODULE. " TABSTRP_ACTIVE_TAB_GET INPUT

*GET DATA FOR SUB SCREEN AND MAIN SCREEN

&----


*& Module DATA_1 OUTPUT

&----


  • text

----


MODULE DATA_1 OUTPUT.

IF V_flag1 Lt 1.

IF save_ok_100 = CCH or save_ok_100 = CDS.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

EXPORTING

INPUT = Z11_CUSTOMER1-KUNNR

IMPORTING

OUTPUT = V_CUSTOMER.

.

select single * FROM Z11_CUSTOMER1 WHERE KUNNR = Z11_CUSTOMER1-KUNNR.

Z11_CUSTOMER1-KUNNR = V_CUSTOMER.

V_FLAG1 = V_FLAG1 + 1.

endif.

endif.

ENDMODULE. " DATA_1 OUTPUT

*GET DATA FOR TABLE CONTROl<TABULAR DATA>

&----


*& Module GET_DATA OUTPUT

&----


  • text

----


MODULE GET_DATA OUTPUT.

if V_flag2 lt 1.

IF save_ok_100 = CDS OR save_ok_100 = CCH.

SELECT KUNNR

BANKS

BANKL

BANKN

KOINH

BKONT

BVTYP

BKREF

FROM Z11_CUST_BANK

INTO Corresponding fields of table t_bank

WHERE KUNNR = Z11_CUSTOMER1-KUNNR.

  • IF sy-subrc <> 0.

  • MESSAGE E007 with TEXT-007.

  • ENDIF.

V_flag2 = v_FLAG2 + 1.

ENDIF.

ENDIF.

ENDMODULE. " GET_DATA OUTPUT

*SETTING ATTRIBUTES FOR TABLE ON SCREEN 0104

&----


*& Module SET_LINE_ATTRIBUTES OUTPUT

&----


  • text

----


MODULE SET_LINE_ATTRIBUTES OUTPUT.

CASE save_ok_100.

WHEN CDS. "DISPLAY

LOOP AT SCREEN.

IF screen-group1 = 'A1'.

screen-active = 1.

screen-input = 0.

screen-output = 1.

screen-invisible = 0.

MODIFY SCREEN.

ENDIF.

endloop.

endcase.

ENDMODULE. " SET_LINE_ATTRIBUTES OUTPUT

*MODULE TO POPULATE INTERNAl TABLE FROM SCREEN

&----


*& Module POP_I_TAB INPUT

&----


  • text

----


MODULE POP_I_TAB INPUT.

T_BANK-MANDT = SY-MANDT. "CLIENT

IF save_ok_100 = CCR AND sy-ucomm = CSA ."CREATE+SAVE

IF T_BANK-KUNNR = Z11_CUSTOMER1-KUNNR.

APPEND T_BANK.

ENDIF.

ELSEIF save_ok_100 = CCH AND sy-ucomm = CSA or sy-ucomm = CT3.

"CHANGE+SAVE

IF T_BANK-KUNNR = Z11_CUSTOMER1-KUNNR.

IF TABLE_CONTROL-CURRENT_LINE > SY-DBCNT."IF NEW LINE

APPEND T_BANK.

ELSE.

MODIFY T_BANK INDEX table_control-current_line.

ENDIF.

ENDIF.

ENDIF.

ENDMODULE. " POP_I_TAB INPUT

&----


*& Module DATA_2 OUTPUT

&----


  • text

----


module DATA_2 output.

IF V_flag3 Lt 1.

IF save_ok_100 = CCH or save_ok_100 = CDS.

select single * FROM Z11_CUST_SALES WHERE KUNNR = Z11_CUSTOMER1-KUNNR.

V_FLAG3 = V_FLAG3 + 1.

endif.

endif.

endmodule. " DATA_2 OUTPUT

Reward if Helpful..

Gaurav J.

Edited by: Gaurav Juneja on Feb 5, 2008 6:13 AM