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

module pool program

Former Member
0 Likes
429

Hi! ABAP gurus,

can anyone help me out with a sample code where a customised table is updated through text box and table control in the module pool program.

points reward assured.

thanks

Amit

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
400

Hi,

please find below.

&----


*& Report ZPE_STR_LE *

*& *

&----


*& *

*& *

&----


REPORT zpe_str_le .

TABLES : zpe_str , zprd_mis1 , mseg , t001l.

*DATA : STR TYPE C VALUE '50'.

data : text(100) VALUE 'DELETED STORAGE LOCATION NO '.

SELECTION-SCREEN : BEGIN OF SCREEN 123 AS WINDOW TITLE TEXT-005.

SELECT-OPTIONS : S_ZSLOC FOR ZPE_STR-ZSLOC,

S_ZMACD FOR ZPE_STR-ZMACD,

S_ZPGRP FOR ZPE_STR-ZPGRP.

SELECTION-SCREEN : END OF SCREEN 123.

DATA : flag(1) TYPE c,

flag1 TYPE c ,

flag3 TYPE c VALUE '1'.

DATA : etab LIKE t001l OCCURS 0 WITH HEADER LINE.

SELECT * FROM T001L INTO TABLE ETAB.

DATA : ihead LIKE thead.

DATA : prevtab LIKE tline OCCURS 0 WITH HEADER LINE.

  • data : Jtab like TLINE occurs 0 with header line.

DATA : jtab LIKE tline OCCURS 0 WITH HEADER LINE.

DATA : itab LIKE zprd_mis1 OCCURS 0 WITH HEADER LINE.

*SELECT * FROM zprd_mis1 INTO TABLE itab.

DATA : BEGIN OF itab_sloc OCCURS 0,

werks LIKE t001l-werks,

lgort LIKE t001l-lgort,

lgobe LIKE t001l-lgobe,

END OF itab_sloc.

*FLAG = 0.

*

CALL SCREEN 100.

*

MODULE user_command_0100 INPUT.

CASE sy-ucomm.

*

WHEN 'RET'.

LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 100.

*PERFORM PREVIEW.

LOOP AT prevtab.

WRITE : / prevtab.

ENDLOOP.

                  • LOOP AT JTAB[] INTO ZPRD_MIS1.

                  • WRITE : Jtab-TDFORMAT.

                  • WRITE : Jtab-TDLINE .

*********ZPRD_MIS1-MANDT = Jtab-TDLINE .

*********ZPRD_MIS1-SLOC = Jtab-TDLINE .

*********ZPRD_MIS1-MCODE = Jtab-TDLINE .

*********ZPRD_MIS1-GCODE = Jtab-TDLINE .

*********ZPRD_MIS1-DESCR = Jtab-TDLINE .

*********INSERT ZPRD_MIS1.

                  • ENDLOOP.

*********

                  • WRITE : JTAB-ZSLOC.

*********CALL TRANSACTION 'SO10'.

                  • SET CURSOR 2 2.

WHEN 'DET'.

SELECT * FROM ZPRD_MIS1 INTO CORRESPONDING FIELDS OF TABLE ITAB.

  • CALL SCREEN 123 STARTING AT 10 5.

  • LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 0.

  • SKIP 2 .

  • WRITE :/1(8) 'STR.LOC' ,10(15) 'MRP. CTLR',27(10) 'P.GRP' ,39(40) 'DESCRIPTION OF PRODUCT'.

*

  • SELECT SLOC MCODE GCODE DESCR FROM zprd_mis1 INTO ZPRD_MIS1 WHERE SLOC IN S_ZSLOC AND

  • MCODE IN S_ZMACD AND

  • GCODE IN S_ZPGRP.

*

  • WRITE :/1(8) zprd_mis1-SLOC ,10(15) zprd_mis1-MCODE ,27(10) zprd_mis1-GCODE ,39(40) zprd_mis1-DESCR .

  • ENDSELECT.

WHEN 'CLEAR'.

flag = 4.

IF zpe_str-zsloc NE ' '.

CLEAR zpe_str.

ELSE.

MESSAGE 'ALREADY CLEARED' TYPE 'S'.

ENDIF.

WHEN 'EXIT'.

LEAVE TO SCREEN 0.

WHEN 'SAVE'.

IF zpe_str-zdesc NE ' '.

IF zpe_str-zsloc NE ' '.

LOOP AT itab.

READ TABLE itab WITH KEY sloc = zpe_str-zsloc .

IF sy-subrc = 0 AND flag = 5.

zprd_mis1-mandt = sy-mandt.

zprd_mis1-sloc = zpe_str-zsloc .

zprd_mis1-mcode = zpe_str-zmacd .

zprd_mis1-gcode = zpe_str-zpgrp.

zprd_mis1-descr = zpe_str-zdesc .

MODIFY zprd_mis1.

flag1 = 7.

MESSAGE 'STORAGE LOCATION MODIFIED' TYPE 'S'.

EXIT.

ELSE.

zprd_mis1-mandt = sy-mandt.

zprd_mis1-sloc = zpe_str-zsloc .

zprd_mis1-mcode = zpe_str-zmacd .

zprd_mis1-gcode = zpe_str-zpgrp.

zprd_mis1-descr = zpe_str-zdesc .

INSERT zprd_mis1.

APPEND itab.

flag = 5.

flag1 = 7.

MESSAGE 'STORAGE LOCATION CREATED' TYPE 'S'.

*MESSAGE 'DATA ALREADY SAVED' TYPE 'S'.

EXIT.

*ENDIF.

ENDIF.

ENDLOOP.

ELSE.

flag = 3.

MESSAGE 'PLEASE ENTER THE STORAGE LOCATION' TYPE 'S'.

ENDIF.

ELSE.

LOOP AT itab.

READ TABLE itab WITH KEY sloc = zpe_str-zsloc .

IF sy-subrc = 0.

MESSAGE 'ALREADY SAVED' TYPE 'S'.

ELSE.

MESSAGE 'ENTRIES FOR OTHER FIELDS REQUIRED' TYPE 'S'.

ENDIF.

ENDLOOP.

ENDIF.

WHEN 'CHECK'.

SELECT * FROM zprd_mis1 INTO TABLE itab.

IF zpe_str-zsloc NE ' '.

LOOP AT itab.

READ TABLE itab WITH KEY sloc = zpe_str-zsloc .

IF sy-subrc = 0.

zpe_str-zmandt = itab-mandt.

zpe_str-zsloc = itab-sloc.

zpe_str-zmacd = itab-mcode.

zpe_str-zpgrp = itab-gcode.

zpe_str-zdesc = itab-descr.

flag = 7.

flag1 = 7.

ELSE.

MESSAGE 'NO SUCH STORAGE LOCATION AVAILABLE' TYPE 'S'.

  • EXIT.

ENDIF.

ENDLOOP.

ELSE.

flag = 3.

MESSAGE 'PLEASE ENTER THE STORAGE LOCATION' TYPE 'S'.

  • EXIT.

ENDIF.

*

WHEN 'DELETE'.

IF zpe_str-zsloc EQ ' '.

flag = 3.

MESSAGE 'NOSUCH LOCATION AVAILABLE' TYPE 'S'.

ELSE.

READ TABLE itab WITH KEY sloc = zpe_str-zsloc .

IF sy-subrc = 0.

zpe_str-zmandt = itab-mandt.

zpe_str-zsloc = itab-sloc.

zpe_str-zmacd = itab-mcode.

zpe_str-zpgrp = itab-gcode.

zpe_str-zdesc = itab-descr.

IF zpe_str-zsloc NE ' '.

CALL FUNCTION 'G_CHECK_PASSWORD'

EXPORTING

password = 'PLANT1'

EXCEPTIONS

not_authorized = 1

canceled = 2

OTHERS = 3.

IF sy-subrc = 0.

PERFORM PREVIEW.

DELETE FROM zprd_mis1 WHERE SLOC = zpe_str-zSLOC.

UPDATE zprd_mis1.

APPEND itab.

MESSAGE 'STORAGE LOCATION DELETED' TYPE 'S'.

ELSEIF SY-SUBRC = 2.

MESSAGE 'OPRATION CANCELLED' TYPE 'E'.

ELSEIF SY-SUBRC = 3.

MESSAGE 'UNAUTHORIZED' TYPE 'E'.

ENDIF.

ELSE.

MESSAGE 'STORAGE LOCATION CONTAINS NO DATA' TYPE 'S'.

ENDIF.

ELSE.

MESSAGE 'STORAGE LOCATION CONTAINS NO DATA' TYPE 'S'.

ENDIF.

ENDIF.

WHEN 'CREATE'.

  • FLAG3 = 12.

IF zpe_str-zsloc EQ ' '.

MESSAGE 'ENTER THE STORAGE LOCATION' TYPE 'S'.

EXIT.

ELSE.

LOOP AT etab.

READ TABLE etab WITH KEY lgort = zpe_str-zsloc .

IF sy-subrc = 0.

read table itab with key sloc = zpe_str-zsloc .

if sy-subrc = 0.

zpe_str-zmandt = itab-mandt.

zpe_str-zsloc = itab-sloc.

zpe_str-zmacd = itab-mcode.

zpe_str-zpgrp = itab-gcode.

zpe_str-zdesc = itab-descr.

flag = 7.

flag1 = 7.

clear flag .

clear flag1.

message 'storage location alredy exist' type 'S'.

ELSE.

FLAG = 2.

MESSAGE 'STORAGE LOCATION ENTIRES DOESNOT EXIST' TYPE 'S'.

ENDIF.

else.

message 'no such storage location exist' type 'S'.

endif.

endloop.

FLAG = 2.

exit.

endif.

WHEN 'CHANGE'.

SELECT * FROM zprd_mis1 INTO TABLE itab.

IF zpe_str-zsloc NE ' '.

LOOP AT itab.

READ TABLE itab WITH KEY sloc = zpe_str-zsloc .

IF sy-subrc = 0.

flag = 5.

flag1 = 6.

zpe_str-zmandt = itab-mandt.

zpe_str-zsloc = itab-sloc.

zpe_str-zmacd = itab-mcode.

zpe_str-zpgrp = itab-gcode.

zpe_str-zdesc = itab-descr.

ELSE.

MESSAGE 'NO STORAGE LOCATION AVAILABLE' TYPE 'S'.

ENDIF.

ENDLOOP.

ELSE.

flag = 3.

MESSAGE 'PLEASE ENTER THE STORAGE LOCATION' TYPE 'S'.

ENDIF.

ENDCASE.

*

ENDMODULE. " USER_COMMAND_0100 INPUT

&----


*& Module STATUS_0100 OUTPUT

&----


  • text

----


MODULE status_0100 OUTPUT.

SET PF-STATUS 'AAA'.

SET TITLEBAR 'aaa'.

IF flag3 = '1'.

CALL FUNCTION 'G_CHECK_PASSWORD'

EXPORTING

password = 'PLANT1'

EXCEPTIONS

not_authorized = 1

canceled = 2

OTHERS = 3.

IF sy-subrc <> 0.

  • MESSAGE 'un authorized' TYPE 'S'(001).

LEAVE TO SCREEN 0.

ELSEIF SY-SUBRC = 2.

  • MESSAGE ' OPERATION CANCELLED' TYPE 'S'(001).

LEAVE TO SCREEN 0.

ELSEIF SY-SUBRC = 3.

LEAVE TO SCREEN 0.

  • MESSAGE 'RESTRICTED' TYPE 'S'(001).

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

CLEAR flag3.

ENDIF.

SELECT * FROM zprd_mis1 INTO TABLE itab.

LOOP AT SCREEN.

IF screen-name = 'ZPE_STR-ZDESC' OR screen-name = 'ZPE_STR-ZPGRP' OR screen-name = 'ZPE_STR-ZMACD'.

screen-input = 0.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

IF flag = 5 AND flag1 EQ 6.

LOOP AT SCREEN.

IF screen-name = 'ZPE_STR-ZDESC' OR screen-name = 'ZPE_STR-ZPGRP' OR screen-name = 'ZPE_STR-ZMACD'.

screen-input = 1.

MODIFY SCREEN.

ENDIF.

IF screen-name = 'CREATE' OR screen-name = 'DELETE' OR screen-name = 'CHANGE' OR screen-name = 'CHECK'.

screen-input = 0.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

EXIT.

ENDIF.

IF flag = 2.

LOOP AT SCREEN.

IF screen-name = 'ZPE_STR-ZDESC' OR screen-name = 'ZPE_STR-ZPGRP' OR screen-name = 'ZPE_STR-ZMACD'.

screen-input = 1.

MODIFY SCREEN.

ENDIF.

IF screen-name = 'CREATE' OR screen-name = 'DELETE' OR screen-name = 'CHANGE' OR screen-name = 'CHECK'.

screen-input = 0.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

EXIT.

ENDIF.

IF flag3 = 12.

  • LOOP AT SCREEN.

  • IF screen-name = 'ZPE_STR-ZDESC' OR screen-name = 'ZPE_STR-ZPGRP' OR screen-name = 'ZPE_STR-ZMACD'.

  • screen-input = 1.

  • MODIFY SCREEN.

  • ENDIF.

IF screen-name = 'CREATE' OR screen-name = 'DELETE' OR screen-name = 'CHANGE' OR screen-name = 'RET' OR screen-name = 'CHECK'.

screen-input = 0.

MODIFY SCREEN.

ENDIF.

  • ENDLOOP.

EXIT.

CLEAR FLAG3.

ENDIF.

IF flag = 4.

IF screen-name CP 'ZPE_*'.

screen-input = 1.

ENDIF.

ENDIF.

IF flag1 = 7 AND flag = 5.

LOOP AT SCREEN.

IF screen-name = 'ZPE_STR-ZDESC' OR screen-name = 'ZPE_STR-ZSLOC' OR screen-name = 'ZPE_STR-ZPGRP' OR screen-name = 'ZPE_STR-ZMACD'.

screen-input = 0.

MODIFY SCREEN.

ENDIF.

IF screen-name = 'CREATE' OR screen-name = 'DELETE' OR screen-name = 'CHECK' OR screen-name = 'SAVE'.

screen-input = 0.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

ENDIF.

IF flag1 = 7 AND flag = 7.

LOOP AT SCREEN.

IF screen-name = 'ZPE_STR-ZDESC' OR screen-name = 'ZPE_STR-ZSLOC' OR screen-name = 'ZPE_STR-ZPGRP' OR screen-name = 'ZPE_STR-ZMACD'.

screen-input = 0.

MODIFY SCREEN.

ENDIF.

IF screen-name = 'CREATE' OR screen-name = 'CHECK' OR screen-name = 'SAVE'." OR screen-name = 'DELETE'.

screen-input = 0.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

ENDIF.

IF flag1 = 4 AND flag = 3.

LOOP AT SCREEN.

IF screen-name = 'ZPE_STR-ZDESC' OR screen-name = 'ZPE_STR-ZSLOC' OR screen-name = 'ZPE_STR-ZPGRP' OR screen-name = 'ZPE_STR-ZMACD'.

screen-input = 0.

MODIFY SCREEN.

ENDIF.

IF screen-name = 'CREATE' OR screen-name = 'SAVE' OR screen-name = 'DELETE' OR screen-name = 'CHANGE' OR screen-name = 'CHECK'.

screen-input = 0.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

ENDIF.

ENDMODULE. " STATUS_0100 OUTPUT

DATA: BEGIN OF r1 OCCURS 1.

INCLUDE STRUCTURE ddshretval.

DATA: END OF r1.

&----


*& Module VALUE_SLOC INPUT

&----


  • text

----


MODULE value_sloc INPUT.

SELECT lgort werks lgobe FROM t001l INTO CORRESPONDING FIELDS OF TABLE itab_sloc.

DELETE ADJACENT DUPLICATES FROM itab_sloc COMPARING lgort.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

EXPORTING

retfield = 'LGORT'

value_org = 'S'

TABLES

value_tab = itab_sloc

return_tab = r1

EXCEPTIONS

parameter_error = 1

no_values_found = 2

OTHERS = 3.

IF sy-subrc EQ 0.

IF r1-fieldval IS NOT INITIAL.

zpe_str-zsloc = r1-fieldval.

ENDIF.

ENDIF.

  • EXIT.

*ENDSELECT.

ENDMODULE. " VALUE_SLOC INPUT

FORM PREVIEW.

*TABLES : ZPE_STR , ZPRD_MIS1 , MSEG.

data : ihead like thead.

DATA : prevtab like TLINE occurs 0 with header line.

data : Jtab like TLINE occurs 0 with header line.

*data : Jtab like thead occurs 0 with header line.

*data : text(100).

CALL FUNCTION 'READ_TEXT'

EXPORTING

CLIENT = SY-MANDT

ID = 'ST'

LANGUAGE = sy-langu

NAME = 'ZSLDEL'

OBJECT = 'TEXT'

  • ARCHIVE_HANDLE = 0

  • LOCAL_CAT = ' '

  • IMPORTING

  • HEADER =

TABLES

LINES = prevtab[]

EXCEPTIONS

ID = 1

LANGUAGE = 2

NAME = 3

NOT_FOUND = 4

OBJECT = 5

REFERENCE_CHECK = 6

WRONG_ACCESS_TO_ARCHIVE = 7

OTHERS = 8

.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

if not prevtab[] is initial.

append lines of prevtab to jtab.

endif.

*IHEAD-TDFDATE = SY-DATUM.

*IHEAD-TDFTIME = SY-UZEIT.

ihead-TDOBJECT = 'TEXT'.

ihead-TDNAME = 'ZSLDEL'.

ihead-TDID = 'ST'.

ihead-TDSPRAS = sy-langu.

type-pools : slis.

Jtab-TDFORMAT = ''.

*Jtab-TDLINE = 'SLOCATION'.

*append Jtab.

*Jtab-TDFORMAT = ''.

Jtab-TDFORMAT = '*'.

Jtab-TDLINE = ZPE_STR-ZSLOC.

append Jtab.

Jtab-TDFORMAT = ''.

*Jtab-TDLINE = 'DATE'.

*append Jtab.

Jtab-TDFORMAT = ''.

*Jtab-TDLINE = SY-DATUM.

*append Jtab.

Jtab-TDFORMAT = ''.

*Jtab-TDLINE = 'TIME'.

*append Jtab.

Jtab-TDFORMAT = ''.

*Jtab-TDLINE = SY-UZEIT.

*Jtab-TDFORMAT = ''.

*append Jtab.

CALL FUNCTION 'SAVE_TEXT'

EXPORTING

CLIENT = SY-MANDT

HEADER = ihead

INSERT = 'X'

  • SAVEMODE_DIRECT = ' '

  • OWNER_SPECIFIED = ' '

  • LOCAL_CAT = ' '

  • IMPORTING

  • FUNCTION =

  • NEWHEADER =

TABLES

LINES = Jtab

EXCEPTIONS

ID = 1

LANGUAGE = 2

NAME = 3

OBJECT = 4

OTHERS = 5

.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

**

CALL FUNCTION 'COMMIT_TEXT'

  • EXPORTING

  • OBJECT = '*'

  • NAME = '*'

  • ID = '*'

  • LANGUAGE = '*'

  • SAVEMODE_DIRECT = ' '

  • KEEP = ' '

  • LOCAL_CAT = ' '

  • IMPORTING

  • COMMIT_COUNT =

  • TABLES

  • T_OBJECT =

  • T_NAME =

  • T_ID =

  • T_LANGUAGE =

.

ENDFORM.

*&spwizard: declaration of tablecontrol 'TBLECTL' itself

controls: TBLECTL type tableview using screen 0100.

*&spwizard: lines of tablecontrol 'TBLECTL'

data: g_TBLECTL_lines like sy-loopc.

data: OK_CODE like sy-ucomm.

*&spwizard: output module for tc 'TBLECTL'. do not change this line!

*&spwizard: update lines for equivalent scrollbar

module TBLECTL_change_tc_attr output.

describe table ITAB lines TBLECTL-lines.

endmodule.

*&spwizard: output module for tc 'TBLECTL'. do not change this line!

*&spwizard: get lines of tablecontrol

module TBLECTL_get_lines output.

g_TBLECTL_lines = sy-loopc.

endmodule.

*&spwizard: input module for tc 'TBLECTL'. do not change this line!

*&spwizard: process user command

module TBLECTL_user_command input.

OK_CODE = sy-ucomm.

perform user_ok_tc using 'TBLECTL'

'ITAB'

' '

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

Regards

R.Rajendran

2 REPLIES 2
Read only

Former Member
0 Likes
401

Hi,

please find below.

&----


*& Report ZPE_STR_LE *

*& *

&----


*& *

*& *

&----


REPORT zpe_str_le .

TABLES : zpe_str , zprd_mis1 , mseg , t001l.

*DATA : STR TYPE C VALUE '50'.

data : text(100) VALUE 'DELETED STORAGE LOCATION NO '.

SELECTION-SCREEN : BEGIN OF SCREEN 123 AS WINDOW TITLE TEXT-005.

SELECT-OPTIONS : S_ZSLOC FOR ZPE_STR-ZSLOC,

S_ZMACD FOR ZPE_STR-ZMACD,

S_ZPGRP FOR ZPE_STR-ZPGRP.

SELECTION-SCREEN : END OF SCREEN 123.

DATA : flag(1) TYPE c,

flag1 TYPE c ,

flag3 TYPE c VALUE '1'.

DATA : etab LIKE t001l OCCURS 0 WITH HEADER LINE.

SELECT * FROM T001L INTO TABLE ETAB.

DATA : ihead LIKE thead.

DATA : prevtab LIKE tline OCCURS 0 WITH HEADER LINE.

  • data : Jtab like TLINE occurs 0 with header line.

DATA : jtab LIKE tline OCCURS 0 WITH HEADER LINE.

DATA : itab LIKE zprd_mis1 OCCURS 0 WITH HEADER LINE.

*SELECT * FROM zprd_mis1 INTO TABLE itab.

DATA : BEGIN OF itab_sloc OCCURS 0,

werks LIKE t001l-werks,

lgort LIKE t001l-lgort,

lgobe LIKE t001l-lgobe,

END OF itab_sloc.

*FLAG = 0.

*

CALL SCREEN 100.

*

MODULE user_command_0100 INPUT.

CASE sy-ucomm.

*

WHEN 'RET'.

LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 100.

*PERFORM PREVIEW.

LOOP AT prevtab.

WRITE : / prevtab.

ENDLOOP.

                  • LOOP AT JTAB[] INTO ZPRD_MIS1.

                  • WRITE : Jtab-TDFORMAT.

                  • WRITE : Jtab-TDLINE .

*********ZPRD_MIS1-MANDT = Jtab-TDLINE .

*********ZPRD_MIS1-SLOC = Jtab-TDLINE .

*********ZPRD_MIS1-MCODE = Jtab-TDLINE .

*********ZPRD_MIS1-GCODE = Jtab-TDLINE .

*********ZPRD_MIS1-DESCR = Jtab-TDLINE .

*********INSERT ZPRD_MIS1.

                  • ENDLOOP.

*********

                  • WRITE : JTAB-ZSLOC.

*********CALL TRANSACTION 'SO10'.

                  • SET CURSOR 2 2.

WHEN 'DET'.

SELECT * FROM ZPRD_MIS1 INTO CORRESPONDING FIELDS OF TABLE ITAB.

  • CALL SCREEN 123 STARTING AT 10 5.

  • LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 0.

  • SKIP 2 .

  • WRITE :/1(8) 'STR.LOC' ,10(15) 'MRP. CTLR',27(10) 'P.GRP' ,39(40) 'DESCRIPTION OF PRODUCT'.

*

  • SELECT SLOC MCODE GCODE DESCR FROM zprd_mis1 INTO ZPRD_MIS1 WHERE SLOC IN S_ZSLOC AND

  • MCODE IN S_ZMACD AND

  • GCODE IN S_ZPGRP.

*

  • WRITE :/1(8) zprd_mis1-SLOC ,10(15) zprd_mis1-MCODE ,27(10) zprd_mis1-GCODE ,39(40) zprd_mis1-DESCR .

  • ENDSELECT.

WHEN 'CLEAR'.

flag = 4.

IF zpe_str-zsloc NE ' '.

CLEAR zpe_str.

ELSE.

MESSAGE 'ALREADY CLEARED' TYPE 'S'.

ENDIF.

WHEN 'EXIT'.

LEAVE TO SCREEN 0.

WHEN 'SAVE'.

IF zpe_str-zdesc NE ' '.

IF zpe_str-zsloc NE ' '.

LOOP AT itab.

READ TABLE itab WITH KEY sloc = zpe_str-zsloc .

IF sy-subrc = 0 AND flag = 5.

zprd_mis1-mandt = sy-mandt.

zprd_mis1-sloc = zpe_str-zsloc .

zprd_mis1-mcode = zpe_str-zmacd .

zprd_mis1-gcode = zpe_str-zpgrp.

zprd_mis1-descr = zpe_str-zdesc .

MODIFY zprd_mis1.

flag1 = 7.

MESSAGE 'STORAGE LOCATION MODIFIED' TYPE 'S'.

EXIT.

ELSE.

zprd_mis1-mandt = sy-mandt.

zprd_mis1-sloc = zpe_str-zsloc .

zprd_mis1-mcode = zpe_str-zmacd .

zprd_mis1-gcode = zpe_str-zpgrp.

zprd_mis1-descr = zpe_str-zdesc .

INSERT zprd_mis1.

APPEND itab.

flag = 5.

flag1 = 7.

MESSAGE 'STORAGE LOCATION CREATED' TYPE 'S'.

*MESSAGE 'DATA ALREADY SAVED' TYPE 'S'.

EXIT.

*ENDIF.

ENDIF.

ENDLOOP.

ELSE.

flag = 3.

MESSAGE 'PLEASE ENTER THE STORAGE LOCATION' TYPE 'S'.

ENDIF.

ELSE.

LOOP AT itab.

READ TABLE itab WITH KEY sloc = zpe_str-zsloc .

IF sy-subrc = 0.

MESSAGE 'ALREADY SAVED' TYPE 'S'.

ELSE.

MESSAGE 'ENTRIES FOR OTHER FIELDS REQUIRED' TYPE 'S'.

ENDIF.

ENDLOOP.

ENDIF.

WHEN 'CHECK'.

SELECT * FROM zprd_mis1 INTO TABLE itab.

IF zpe_str-zsloc NE ' '.

LOOP AT itab.

READ TABLE itab WITH KEY sloc = zpe_str-zsloc .

IF sy-subrc = 0.

zpe_str-zmandt = itab-mandt.

zpe_str-zsloc = itab-sloc.

zpe_str-zmacd = itab-mcode.

zpe_str-zpgrp = itab-gcode.

zpe_str-zdesc = itab-descr.

flag = 7.

flag1 = 7.

ELSE.

MESSAGE 'NO SUCH STORAGE LOCATION AVAILABLE' TYPE 'S'.

  • EXIT.

ENDIF.

ENDLOOP.

ELSE.

flag = 3.

MESSAGE 'PLEASE ENTER THE STORAGE LOCATION' TYPE 'S'.

  • EXIT.

ENDIF.

*

WHEN 'DELETE'.

IF zpe_str-zsloc EQ ' '.

flag = 3.

MESSAGE 'NOSUCH LOCATION AVAILABLE' TYPE 'S'.

ELSE.

READ TABLE itab WITH KEY sloc = zpe_str-zsloc .

IF sy-subrc = 0.

zpe_str-zmandt = itab-mandt.

zpe_str-zsloc = itab-sloc.

zpe_str-zmacd = itab-mcode.

zpe_str-zpgrp = itab-gcode.

zpe_str-zdesc = itab-descr.

IF zpe_str-zsloc NE ' '.

CALL FUNCTION 'G_CHECK_PASSWORD'

EXPORTING

password = 'PLANT1'

EXCEPTIONS

not_authorized = 1

canceled = 2

OTHERS = 3.

IF sy-subrc = 0.

PERFORM PREVIEW.

DELETE FROM zprd_mis1 WHERE SLOC = zpe_str-zSLOC.

UPDATE zprd_mis1.

APPEND itab.

MESSAGE 'STORAGE LOCATION DELETED' TYPE 'S'.

ELSEIF SY-SUBRC = 2.

MESSAGE 'OPRATION CANCELLED' TYPE 'E'.

ELSEIF SY-SUBRC = 3.

MESSAGE 'UNAUTHORIZED' TYPE 'E'.

ENDIF.

ELSE.

MESSAGE 'STORAGE LOCATION CONTAINS NO DATA' TYPE 'S'.

ENDIF.

ELSE.

MESSAGE 'STORAGE LOCATION CONTAINS NO DATA' TYPE 'S'.

ENDIF.

ENDIF.

WHEN 'CREATE'.

  • FLAG3 = 12.

IF zpe_str-zsloc EQ ' '.

MESSAGE 'ENTER THE STORAGE LOCATION' TYPE 'S'.

EXIT.

ELSE.

LOOP AT etab.

READ TABLE etab WITH KEY lgort = zpe_str-zsloc .

IF sy-subrc = 0.

read table itab with key sloc = zpe_str-zsloc .

if sy-subrc = 0.

zpe_str-zmandt = itab-mandt.

zpe_str-zsloc = itab-sloc.

zpe_str-zmacd = itab-mcode.

zpe_str-zpgrp = itab-gcode.

zpe_str-zdesc = itab-descr.

flag = 7.

flag1 = 7.

clear flag .

clear flag1.

message 'storage location alredy exist' type 'S'.

ELSE.

FLAG = 2.

MESSAGE 'STORAGE LOCATION ENTIRES DOESNOT EXIST' TYPE 'S'.

ENDIF.

else.

message 'no such storage location exist' type 'S'.

endif.

endloop.

FLAG = 2.

exit.

endif.

WHEN 'CHANGE'.

SELECT * FROM zprd_mis1 INTO TABLE itab.

IF zpe_str-zsloc NE ' '.

LOOP AT itab.

READ TABLE itab WITH KEY sloc = zpe_str-zsloc .

IF sy-subrc = 0.

flag = 5.

flag1 = 6.

zpe_str-zmandt = itab-mandt.

zpe_str-zsloc = itab-sloc.

zpe_str-zmacd = itab-mcode.

zpe_str-zpgrp = itab-gcode.

zpe_str-zdesc = itab-descr.

ELSE.

MESSAGE 'NO STORAGE LOCATION AVAILABLE' TYPE 'S'.

ENDIF.

ENDLOOP.

ELSE.

flag = 3.

MESSAGE 'PLEASE ENTER THE STORAGE LOCATION' TYPE 'S'.

ENDIF.

ENDCASE.

*

ENDMODULE. " USER_COMMAND_0100 INPUT

&----


*& Module STATUS_0100 OUTPUT

&----


  • text

----


MODULE status_0100 OUTPUT.

SET PF-STATUS 'AAA'.

SET TITLEBAR 'aaa'.

IF flag3 = '1'.

CALL FUNCTION 'G_CHECK_PASSWORD'

EXPORTING

password = 'PLANT1'

EXCEPTIONS

not_authorized = 1

canceled = 2

OTHERS = 3.

IF sy-subrc <> 0.

  • MESSAGE 'un authorized' TYPE 'S'(001).

LEAVE TO SCREEN 0.

ELSEIF SY-SUBRC = 2.

  • MESSAGE ' OPERATION CANCELLED' TYPE 'S'(001).

LEAVE TO SCREEN 0.

ELSEIF SY-SUBRC = 3.

LEAVE TO SCREEN 0.

  • MESSAGE 'RESTRICTED' TYPE 'S'(001).

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

CLEAR flag3.

ENDIF.

SELECT * FROM zprd_mis1 INTO TABLE itab.

LOOP AT SCREEN.

IF screen-name = 'ZPE_STR-ZDESC' OR screen-name = 'ZPE_STR-ZPGRP' OR screen-name = 'ZPE_STR-ZMACD'.

screen-input = 0.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

IF flag = 5 AND flag1 EQ 6.

LOOP AT SCREEN.

IF screen-name = 'ZPE_STR-ZDESC' OR screen-name = 'ZPE_STR-ZPGRP' OR screen-name = 'ZPE_STR-ZMACD'.

screen-input = 1.

MODIFY SCREEN.

ENDIF.

IF screen-name = 'CREATE' OR screen-name = 'DELETE' OR screen-name = 'CHANGE' OR screen-name = 'CHECK'.

screen-input = 0.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

EXIT.

ENDIF.

IF flag = 2.

LOOP AT SCREEN.

IF screen-name = 'ZPE_STR-ZDESC' OR screen-name = 'ZPE_STR-ZPGRP' OR screen-name = 'ZPE_STR-ZMACD'.

screen-input = 1.

MODIFY SCREEN.

ENDIF.

IF screen-name = 'CREATE' OR screen-name = 'DELETE' OR screen-name = 'CHANGE' OR screen-name = 'CHECK'.

screen-input = 0.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

EXIT.

ENDIF.

IF flag3 = 12.

  • LOOP AT SCREEN.

  • IF screen-name = 'ZPE_STR-ZDESC' OR screen-name = 'ZPE_STR-ZPGRP' OR screen-name = 'ZPE_STR-ZMACD'.

  • screen-input = 1.

  • MODIFY SCREEN.

  • ENDIF.

IF screen-name = 'CREATE' OR screen-name = 'DELETE' OR screen-name = 'CHANGE' OR screen-name = 'RET' OR screen-name = 'CHECK'.

screen-input = 0.

MODIFY SCREEN.

ENDIF.

  • ENDLOOP.

EXIT.

CLEAR FLAG3.

ENDIF.

IF flag = 4.

IF screen-name CP 'ZPE_*'.

screen-input = 1.

ENDIF.

ENDIF.

IF flag1 = 7 AND flag = 5.

LOOP AT SCREEN.

IF screen-name = 'ZPE_STR-ZDESC' OR screen-name = 'ZPE_STR-ZSLOC' OR screen-name = 'ZPE_STR-ZPGRP' OR screen-name = 'ZPE_STR-ZMACD'.

screen-input = 0.

MODIFY SCREEN.

ENDIF.

IF screen-name = 'CREATE' OR screen-name = 'DELETE' OR screen-name = 'CHECK' OR screen-name = 'SAVE'.

screen-input = 0.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

ENDIF.

IF flag1 = 7 AND flag = 7.

LOOP AT SCREEN.

IF screen-name = 'ZPE_STR-ZDESC' OR screen-name = 'ZPE_STR-ZSLOC' OR screen-name = 'ZPE_STR-ZPGRP' OR screen-name = 'ZPE_STR-ZMACD'.

screen-input = 0.

MODIFY SCREEN.

ENDIF.

IF screen-name = 'CREATE' OR screen-name = 'CHECK' OR screen-name = 'SAVE'." OR screen-name = 'DELETE'.

screen-input = 0.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

ENDIF.

IF flag1 = 4 AND flag = 3.

LOOP AT SCREEN.

IF screen-name = 'ZPE_STR-ZDESC' OR screen-name = 'ZPE_STR-ZSLOC' OR screen-name = 'ZPE_STR-ZPGRP' OR screen-name = 'ZPE_STR-ZMACD'.

screen-input = 0.

MODIFY SCREEN.

ENDIF.

IF screen-name = 'CREATE' OR screen-name = 'SAVE' OR screen-name = 'DELETE' OR screen-name = 'CHANGE' OR screen-name = 'CHECK'.

screen-input = 0.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

ENDIF.

ENDMODULE. " STATUS_0100 OUTPUT

DATA: BEGIN OF r1 OCCURS 1.

INCLUDE STRUCTURE ddshretval.

DATA: END OF r1.

&----


*& Module VALUE_SLOC INPUT

&----


  • text

----


MODULE value_sloc INPUT.

SELECT lgort werks lgobe FROM t001l INTO CORRESPONDING FIELDS OF TABLE itab_sloc.

DELETE ADJACENT DUPLICATES FROM itab_sloc COMPARING lgort.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

EXPORTING

retfield = 'LGORT'

value_org = 'S'

TABLES

value_tab = itab_sloc

return_tab = r1

EXCEPTIONS

parameter_error = 1

no_values_found = 2

OTHERS = 3.

IF sy-subrc EQ 0.

IF r1-fieldval IS NOT INITIAL.

zpe_str-zsloc = r1-fieldval.

ENDIF.

ENDIF.

  • EXIT.

*ENDSELECT.

ENDMODULE. " VALUE_SLOC INPUT

FORM PREVIEW.

*TABLES : ZPE_STR , ZPRD_MIS1 , MSEG.

data : ihead like thead.

DATA : prevtab like TLINE occurs 0 with header line.

data : Jtab like TLINE occurs 0 with header line.

*data : Jtab like thead occurs 0 with header line.

*data : text(100).

CALL FUNCTION 'READ_TEXT'

EXPORTING

CLIENT = SY-MANDT

ID = 'ST'

LANGUAGE = sy-langu

NAME = 'ZSLDEL'

OBJECT = 'TEXT'

  • ARCHIVE_HANDLE = 0

  • LOCAL_CAT = ' '

  • IMPORTING

  • HEADER =

TABLES

LINES = prevtab[]

EXCEPTIONS

ID = 1

LANGUAGE = 2

NAME = 3

NOT_FOUND = 4

OBJECT = 5

REFERENCE_CHECK = 6

WRONG_ACCESS_TO_ARCHIVE = 7

OTHERS = 8

.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

if not prevtab[] is initial.

append lines of prevtab to jtab.

endif.

*IHEAD-TDFDATE = SY-DATUM.

*IHEAD-TDFTIME = SY-UZEIT.

ihead-TDOBJECT = 'TEXT'.

ihead-TDNAME = 'ZSLDEL'.

ihead-TDID = 'ST'.

ihead-TDSPRAS = sy-langu.

type-pools : slis.

Jtab-TDFORMAT = ''.

*Jtab-TDLINE = 'SLOCATION'.

*append Jtab.

*Jtab-TDFORMAT = ''.

Jtab-TDFORMAT = '*'.

Jtab-TDLINE = ZPE_STR-ZSLOC.

append Jtab.

Jtab-TDFORMAT = ''.

*Jtab-TDLINE = 'DATE'.

*append Jtab.

Jtab-TDFORMAT = ''.

*Jtab-TDLINE = SY-DATUM.

*append Jtab.

Jtab-TDFORMAT = ''.

*Jtab-TDLINE = 'TIME'.

*append Jtab.

Jtab-TDFORMAT = ''.

*Jtab-TDLINE = SY-UZEIT.

*Jtab-TDFORMAT = ''.

*append Jtab.

CALL FUNCTION 'SAVE_TEXT'

EXPORTING

CLIENT = SY-MANDT

HEADER = ihead

INSERT = 'X'

  • SAVEMODE_DIRECT = ' '

  • OWNER_SPECIFIED = ' '

  • LOCAL_CAT = ' '

  • IMPORTING

  • FUNCTION =

  • NEWHEADER =

TABLES

LINES = Jtab

EXCEPTIONS

ID = 1

LANGUAGE = 2

NAME = 3

OBJECT = 4

OTHERS = 5

.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

**

CALL FUNCTION 'COMMIT_TEXT'

  • EXPORTING

  • OBJECT = '*'

  • NAME = '*'

  • ID = '*'

  • LANGUAGE = '*'

  • SAVEMODE_DIRECT = ' '

  • KEEP = ' '

  • LOCAL_CAT = ' '

  • IMPORTING

  • COMMIT_COUNT =

  • TABLES

  • T_OBJECT =

  • T_NAME =

  • T_ID =

  • T_LANGUAGE =

.

ENDFORM.

*&spwizard: declaration of tablecontrol 'TBLECTL' itself

controls: TBLECTL type tableview using screen 0100.

*&spwizard: lines of tablecontrol 'TBLECTL'

data: g_TBLECTL_lines like sy-loopc.

data: OK_CODE like sy-ucomm.

*&spwizard: output module for tc 'TBLECTL'. do not change this line!

*&spwizard: update lines for equivalent scrollbar

module TBLECTL_change_tc_attr output.

describe table ITAB lines TBLECTL-lines.

endmodule.

*&spwizard: output module for tc 'TBLECTL'. do not change this line!

*&spwizard: get lines of tablecontrol

module TBLECTL_get_lines output.

g_TBLECTL_lines = sy-loopc.

endmodule.

*&spwizard: input module for tc 'TBLECTL'. do not change this line!

*&spwizard: process user command

module TBLECTL_user_command input.

OK_CODE = sy-ucomm.

perform user_ok_tc using 'TBLECTL'

'ITAB'

' '

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

Regards

R.Rajendran

Read only

0 Likes
400

HI!

thanks for the fast response.

it would be great if you send me simple code to update a customised table with text box on screen and table control on the same screen.

thanks

Amit