Table control scrollbar
How to make scrollbar(Vertical) IN tablecontrol.
hi,
in the screen , when we create the table control
there is a option for 'resizing'.
there tick both vertical and horzontal.
just right this code in the PBO.
*when we write the blow code in PBO, the scroll bar will come dynamically.
'int_factor' is the internal table.
*number of lines of table control
DESCRIBE TABLE int_factor LINES wf_lines.
tab_control-lines = wf_lines + 1.
hope this will help u.
for any clarifiaction pls mail me.
pls reward points, if this helped u.
regards,
anversha.
[email protected]
Similar Messages
-
How to create vertical Scrollbar in table control?
Dear All,
How to create vertical scrollbar in table controll.?
regards,
DharmeshHi
It should be created automatically, if you can't see it, try to set the field lines of table control
PROCESS PBO
MODULE SET_ATTR_TC.
LOOP AT ITAB WITH .....
ENDLOOP.
MODULE SET_ATTR_TC.
DESCRIBE TABLE ITAB LINES SY-TABIX.
<TABLE CONTROL>-LINES = SY-TABIX.
ENDMODULE.
Max -
Why Can I not Resize the Scrollbar on my Table Control?
As below KB
http://digital.ni.com/public.nsf/allkb/82C0B021A14F118D86257141004BA97E
why this property node doesn't support mobile module and touch panel module, if so, how can I do? Thank you!This is suprising... I don't have a perfect solution fro you, but I suggest you take a look at the example here, the problem was slightly different to yours but I think you could use a similar solution.
You can hide the vertical scrollbar of your table control and place next to it a vertical slider and use the slider's value to set the index row that's visible at the top of the table.
Quick example attached.
Hope it helps
When my feet touch the ground each morning the devil thinks "bloody hell... He's up again!"
Attachments:
tbale.vi 14 KB -
I am Using table control wizard.once user click on button data will be populated in Table control from datatabase table
once after getting data the lines which doesnot have data are disabled but
user should be allowed to enter and Update and delete data once after clicking
ENTER Key that data should be updated in the data base table.
i am sending my program.
SCREEN DESIGN .
PROCESS BEFORE OUTPUT.
*&SPWIZARD: PBO FLOW LOGIC FOR TABLECONTROL 'TAB1'
MODULE TAB1_CHANGE_TC_ATTR.
*&SPWIZARD: MODULE TAB1_CHANGE_COL_ATTR.
LOOP AT IT_TAB3
INTO WA_TAB3
WITH CONTROL TAB1
CURSOR TAB1-CURRENT_LINE.
MODULE TAB1_GET_LINES.
*&SPWIZARD: MODULE TAB1_CHANGE_FIELD_ATTR
ENDLOOP.
* MODULE STATUS_1002.
PROCESS AFTER INPUT.
*&SPWIZARD: PAI FLOW LOGIC FOR TABLECONTROL 'TAB1'
LOOP AT IT_TAB3.
CHAIN.
FIELD WA_TAB3-VBELN.
FIELD WA_TAB3-POSNR.
MODULE TAB1_MODIFY ON CHAIN-REQUEST.
endchain.
FIELD WA_TAB3-SP1
MODULE TAB1_MARK ON REQUEST.
ENDLOOP.
* MODULE TAB1_BUTTON.
MODULE TAB1_BUTTONIP.
MODULE TAB1_USER_COMMAND.
*&SPWIZARD: MODULE TAB1_CHANGE_TC_ATTR.
*&SPWIZARD: MODULE TAB1_CHANGE_COL_ATTR.
* MODULE USER_COMMAND_1002.
PROGRAM Z_VI_TABL2.
TYPES: BEGIN OF TY_TAB3,
SP1(2) TYPE C,
VBELN TYPE VBELN_VL,
POSNR TYPE POSNR_VL,
END OF TY_TAB3.
TYPES: BEGIN OF TY_FILL,
OBJKY TYPE OBJKY,
END OF TY_FILL.
DATA : IT_TAB3 TYPE STANDARD TABLE OF TY_TAB3,
WA_TAB3 TYPE TY_TAB3,
IT_FILL TYPE STANDARD TABLE OF TY_FILL,
WA_FILL TYPE TY_FILL,
G_VBELN TYPE VBELN_VL,
G_POSNR TYPE POSNR_VL.
*&SPWIZARD: DECLARATION OF TABLECONTROL 'TAB1' ITSELF
CONTROLS: TAB1 TYPE TABLEVIEW USING SCREEN 1002.
*&SPWIZARD: LINES OF TABLECONTROL 'TAB1'
DATA: G_TAB1_LINES LIKE SY-LOOPC.
DATA: OK_CODE LIKE SY-UCOMM.
*&SPWIZARD: OUTPUT MODULE FOR TC 'TAB1'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: UPDATE LINES FOR EQUIVALENT SCROLLBAR
MODULE TAB1_CHANGE_TC_ATTR OUTPUT.
DESCRIBE TABLE IT_TAB3 LINES TAB1-lines.
ENDMODULE. "TAB1_CHANGE_TC_ATTR OUTPUT
*&SPWIZARD: OUTPUT MODULE FOR TC 'TAB1'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: GET LINES OF TABLECONTROL
MODULE TAB1_GET_LINES OUTPUT.
G_TAB1_LINES = SY-LOOPC.
ENDMODULE. "TAB1_GET_LINES OUTPUT
*&SPWIZARD: INPUT MODULE FOR TC 'TAB1'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: MODIFY TABLE
MODULE TAB1_MODIFY INPUT.
* MODIFY IT_TAB3
* FROM WA_TAB3
* INDEX TAB1-CURRENT_LINE.
WA_TAB3-POSNR = 10.
APPEND WA_TAB3 TO IT_TAB3.
ENDMODULE. "TAB1_MODIFY INPUT
*&SPWIZARD: INPUT MODUL FOR TC 'TAB1'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: MARK TABLE
MODULE TAB1_MARK INPUT.
DATA: g_TAB1_wa2 like line of IT_TAB3.
if TAB1-line_sel_mode = 1
and WA_TAB3-SP1 = 'X'.
loop at IT_TAB3 into g_TAB1_wa2
where SP1 = 'X'.
g_TAB1_wa2-SP1 = ''.
modify IT_TAB3
from g_TAB1_wa2
transporting SP1.
endloop.
endif.
MODIFY IT_TAB3
FROM WA_TAB3
INDEX TAB1-CURRENT_LINE.
* TRANSPORTING SP1.
ENDMODULE. "TAB1_MARK INPUT
*&SPWIZARD: INPUT MODULE FOR TC 'TAB1'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: PROCESS USER COMMAND
MODULE TAB1_USER_COMMAND INPUT.
OK_CODE = SY-UCOMM.
PERFORM USER_OK_TC USING 'TAB1'
'IT_TAB3'
'SP1'
CHANGING OK_CODE.
SY-UCOMM = OK_CODE.
ENDMODULE. "TAB1_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 '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
*& Module TAB1_BUTTON INPUT
* text
MODULE TAB1_BUTTONIP.
CASE SY-UCOMM.
WHEN 'DELI'.
REFRESH IT_TAB3.
SELECT OBJKY
INTO TABLE IT_FILL
FROM DRAD
WHERE DOKNR = 'T-F122' AND
DOKOB = 'LIPS'.
IF SY-SUBRC = 0.
LOOP AT IT_FILL INTO WA_FILL.
wa_tab3-vbeln = WA_FILL-OBJKY+0(10).
wa_tab3-posnr = WA_FILL-OBJKY+10(4).
APPEND wa_tab3 TO IT_TAB3.
ENDLOOP.
DELETE ADJACENT DUPLICATES FROM IT_TAB3.
ENDIF.
ENDCASE.hi Sonarali,
this FM is of no use to you.
in your PAI you have to loop at the table control table and put a method here you read the lines and save it.
if you use wizard to create a table control it will automatically give the code to you... -
Getting values from the table control to the program
Hi Gurus,
i created a program for sales order creation to transfer order creation and to insert multiple values i defined my own selection screen by inserting table control before that the code executed succesfully but after inserting the table control it is not creating any documents
code before inserting table control:-
REPORT zcl120_sales_n_delivery.
SALES DOCUMENT CREATION
PARAMETERS: p_auart TYPE auart OBLIGATORY.
PARAMETERS: p_vkorg TYPE vkorg OBLIGATORY.
PARAMETERS: p_vtweg TYPE vtweg OBLIGATORY.
PARAMETERS: p_spart TYPE vtweg OBLIGATORY.
PARAMETERS: p_sold TYPE kunnr OBLIGATORY.
PARAMETERS: p_ship TYPE kunnr OBLIGATORY.
*ITEM
PARAMETERS: p_matnr TYPE matnr OBLIGATORY.
PARAMETERS: p_menge TYPE kwmeng OBLIGATORY.
PARAMETERS: p_plant TYPE werks_d OBLIGATORY.
PARAMETERS: p_itcat TYPE pstyv OBLIGATORY.
DATA DECLARATIONS.
DATA: v_vbeln LIKE vbak-vbeln.
DATA: header LIKE bapisdhead1.
DATA: headerx LIKE bapisdhead1x.
DATA: item LIKE bapisditem OCCURS 0 WITH HEADER LINE.
DATA: itemx LIKE bapisditemx OCCURS 0 WITH HEADER LINE.
DATA: partner LIKE bapipartnr OCCURS 0 WITH HEADER LINE.
DATA: return LIKE bapiret2 OCCURS 0 WITH HEADER LINE.
DATA: lt_schedules_inx TYPE STANDARD TABLE OF bapischdlx
WITH HEADER LINE.
DATA: lt_schedules_in TYPE STANDARD TABLE OF bapischdl
WITH HEADER LINE.
HEADER DATA
header-doc_type = p_auart.
headerx-doc_type = 'X'.
header-sales_org = p_vkorg.
headerx-sales_org = 'X'.
header-distr_chan = p_vtweg.
headerx-distr_chan = 'X'.
header-division = p_spart.
headerx-division = 'X'.
headerx-updateflag = 'I'.
partner-partn_role = 'AG'.
partner-partn_numb = p_sold.
APPEND partner.
partner-partn_role = 'WE'.
partner-partn_numb = p_ship.
APPEND partner.
item-material = p_matnr.
item-plant = p_plant.
item-target_qty = p_menge.
item-target_qu = 'ST'.
item-item_categ = p_itcat.
APPEND item.
itemx-updateflag = 'I'.
itemx-material = 'X'.
itemx-plant = 'X'.
itemx-target_qty = 'X'.
itemx-target_qu = 'X'.
itemx-item_categ = 'X'.
APPEND itemx.
Fill schedule lines
lt_schedules_in-itm_number = '000010'.
lt_schedules_in-sched_line = '0001'.
lt_schedules_in-req_qty = p_menge.
APPEND lt_schedules_in.
Fill schedule line flags
lt_schedules_inx-itm_number = '000010'.
lt_schedules_inx-sched_line = '0001'.
lt_schedules_inx-updateflag = 'X'.
lt_schedules_inx-req_qty = 'X'.
APPEND lt_schedules_inx.
Call the BAPI
CALL FUNCTION 'BAPI_SALESDOCU_CREATEFROMDATA1'
EXPORTING
sales_header_in = header
sales_header_inx = headerx
IMPORTING
salesdocument_ex = v_vbeln
TABLES
return = return
sales_items_in = item
sales_items_inx = itemx
sales_schedules_in = lt_schedules_in
sales_schedules_inx = lt_schedules_inx
sales_partners = partner.
LOOP AT return WHERE type = 'E' OR type = 'A'.
EXIT.
ENDLOOP.
IF sy-subrc = 0.
WRITE / return-message.
WRITE: / 'Error in creating document'.
ELSE.
COMMIT WORK AND WAIT.
WRITE: / 'Document ', v_vbeln, ' created'.
ENDIF.
DELIVERY ORDER CREATION
*PARAMETERS: p_vbeln LIKE vbak-vbeln.
DATA: BEGIN OF t_vbap OCCURS 0,
vbeln LIKE vbap-vbeln,
posnr LIKE vbap-posnr,
kwmeng LIKE vbap-kwmeng,
matnr LIKE vbap-matnr,
werks LIKE vbap-werks,
END OF t_vbap.
DATA: t_request TYPE STANDARD TABLE OF bapideliciousrequest
WITH HEADER LINE.
DATA: t_created TYPE STANDARD TABLE OF bapideliciouscreateditems
WITH HEADER LINE.
DATA: t_return TYPE STANDARD TABLE OF bapiret2 WITH HEADER LINE.
SELECT vbeln posnr kwmeng matnr werks
INTO TABLE t_vbap
FROM vbap
WHERE vbeln = v_vbeln
LOOP AT t_vbap.
t_request-document_numb = t_vbap-vbeln.
t_request-document_item = t_vbap-posnr.
t_request-quantity_sales_uom = t_vbap-kwmeng.
t_request-id = 1.
t_request-document_type = 'A'.
t_request-delivery_date = sy-datum.
t_request-material = t_vbap-matnr.
t_request-plant = t_vbap-werks.
t_request-date = sy-datum.
t_request-goods_issue_date = sy-datum.
t_request-goods_issue_time = sy-uzeit.
APPEND t_request.
ENDLOOP.
CALL FUNCTION 'BAPI_DELIVERYPROCESSING_EXEC'
TABLES
request = t_request
createditems = t_created
return = t_return.
READ TABLE t_return WITH KEY type = 'E'.
IF sy-subrc = 0.
MESSAGE e208(00) WITH 'Delivery creation error'.
ENDIF.
COMMIT WORK.
READ TABLE t_created INDEX 1.
WRITE: / 'Delivery Number : ',
t_created-document_numb.
CREATE TRANSFER ORDER
DATA: w_tanum TYPE ltak-tanum.
CALL FUNCTION 'L_TO_CREATE_DN'
EXPORTING
i_lgnum = '010'
i_vbeln = t_created-document_numb
IMPORTING
e_tanum = w_tanum
EXCEPTIONS
foreign_lock = 1
dn_completed = 2
partial_delivery_forbidden = 3
xfeld_wrong = 4
ldest_wrong = 5
drukz_wrong = 6
dn_wrong = 7
squit_forbidden = 8
no_to_created = 9
teilk_wrong = 10
update_without_commit = 11
no_authority = 12
no_picking_allowed = 13
dn_hu_not_choosable = 14
input_error = 15
OTHERS = 16
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
COMMIT WORK AND WAIT.
WRITE: / 'Transfer order number',
w_tanum.
Code after inserting table control:-
REPORT zcl120_sales_n_delivery.
SALES DOCUMENT CREATION
DATA: p_auart TYPE auart .
DATA: p_vkorg TYPE vkorg .
DATA: p_vtweg TYPE vtweg .
DATA: p_spart TYPE vtweg .
DATA: p_sold TYPE kunnr .
DATA: p_ship TYPE kunnr .
*ITEM
data:
begin of it_item occurs 0,
p_matnr TYPE matnr,
p_menge TYPE kwmeng,
p_plant TYPE werks_d,
p_itcat TYPE pstyv,
end of it_item.
DATA DECLARATIONS.
DATA: v_vbeln LIKE vbak-vbeln.
DATA: header LIKE bapisdhead1.
DATA: headerx LIKE bapisdhead1x.
DATA: item LIKE bapisditem OCCURS 0 WITH HEADER LINE.
DATA: itemx LIKE bapisditemx OCCURS 0 WITH HEADER LINE.
DATA: partner LIKE bapipartnr OCCURS 0 WITH HEADER LINE.
DATA: return LIKE bapiret2 OCCURS 0 WITH HEADER LINE.
DATA: lt_schedules_inx TYPE STANDARD TABLE OF bapischdlx
WITH HEADER LINE.
DATA: lt_schedules_in TYPE STANDARD TABLE OF bapischdl
WITH HEADER LINE.
DATA:
W_COUNTER TYPE I,
IT_NUM(6) TYPE C value '000010',
IT_LINE(4) TYPE C value '0001'.
CALL SCREEN 100.
HEADER DATA
header-doc_type = p_auart.
headerx-doc_type = 'X'.
header-sales_org = p_vkorg.
headerx-sales_org = 'X'.
header-distr_chan = p_vtweg.
headerx-distr_chan = 'X'.
header-division = p_spart.
headerx-division = 'X'.
headerx-updateflag = 'I'.
partner-partn_role = 'AG'.
partner-partn_numb = p_sold.
APPEND partner.
partner-partn_role = 'WE'.
partner-partn_numb = p_ship.
APPEND partner.
loop at it_item.
CLEAR ITEM.
item-material = it_item-p_matnr.
item-plant = it_item-p_plant.
item-target_qty = it_item-p_menge.
item-target_qu = 'ST'.
item-item_categ = it_item-p_itcat.
APPEND item.
W_COUNTER = W_COUNTER + 1.
endloop.
DO W_COUNTER TIMES.
itemx-updateflag = 'I'.
itemx-material = 'X'.
itemx-plant = 'X'.
itemx-target_qty = 'X'.
itemx-target_qu = 'X'.
itemx-item_categ = 'X'.
APPEND itemx.
ENDDO.
Fill schedule lines
LOOP AT IT_ITEM.
CLEAR lt_schedules_in.
lt_schedules_in-itm_number = IT_NUM.
lt_schedules_in-sched_line = IT_LINE.
lt_schedules_in-req_qty = IT_ITEM-p_menge.
APPEND lt_schedules_in.
IT_NUM = IT_NUM + 10.
IT_LINE = IT_LINE + 1.
ENDLOOP.
IT_NUM = '000010'.
IT_LINE = '0001'.
Fill schedule line flags
LOOP AT IT_ITEM.
CLEAR lt_schedules_inx.
lt_schedules_inx-itm_number = IT_NUM.
lt_schedules_inx-sched_line = IT_LINE.
lt_schedules_inx-updateflag = 'X'.
lt_schedules_inx-req_qty = 'X'.
APPEND lt_schedules_inx.
IT_NUM = IT_NUM + 10.
IT_LINE = IT_LINE + 1.
ENDLOOP.
Call the BAPI
CALL FUNCTION 'BAPI_SALESDOCU_CREATEFROMDATA1'
EXPORTING
sales_header_in = header
sales_header_inx = headerx
IMPORTING
salesdocument_ex = v_vbeln
TABLES
return = return
sales_items_in = item
sales_items_inx = itemx
sales_schedules_in = lt_schedules_in
sales_schedules_inx = lt_schedules_inx
sales_partners = partner.
LOOP AT return WHERE type = 'E' OR type = 'A'.
EXIT.
ENDLOOP.
IF sy-subrc = 0.
WRITE / return-message.
WRITE: / 'Error in creating document'.
ELSE.
COMMIT WORK AND WAIT.
WRITE: / 'Document ', v_vbeln, ' created'.
ENDIF.
DELIVERY ORDER CREATION
*PARAMETERS: p_vbeln LIKE vbak-vbeln.
DATA: BEGIN OF t_vbap OCCURS 0,
vbeln LIKE vbap-vbeln,
posnr LIKE vbap-posnr,
kwmeng LIKE vbap-kwmeng,
matnr LIKE vbap-matnr,
werks LIKE vbap-werks,
END OF t_vbap.
DATA: t_request TYPE STANDARD TABLE OF bapideliciousrequest
WITH HEADER LINE.
DATA: t_created TYPE STANDARD TABLE OF bapideliciouscreateditems
WITH HEADER LINE.
DATA: t_return TYPE STANDARD TABLE OF bapiret2 WITH HEADER LINE.
SELECT vbeln posnr kwmeng matnr werks
INTO TABLE t_vbap
FROM vbap
WHERE vbeln = v_vbeln
LOOP AT t_vbap.
t_request-document_numb = t_vbap-vbeln.
t_request-document_item = t_vbap-posnr.
t_request-quantity_sales_uom = t_vbap-kwmeng.
t_request-id = 1.
t_request-document_type = 'A'.
t_request-delivery_date = sy-datum.
t_request-material = t_vbap-matnr.
t_request-plant = t_vbap-werks.
t_request-date = sy-datum.
t_request-goods_issue_date = sy-datum.
t_request-goods_issue_time = sy-uzeit.
APPEND t_request.
ENDLOOP.
CALL FUNCTION 'BAPI_DELIVERYPROCESSING_EXEC'
TABLES
request = t_request
createditems = t_created
return = t_return.
READ TABLE t_return WITH KEY type = 'E'.
IF sy-subrc = 0.
MESSAGE e208(00) WITH 'Delivery creation error'.
ENDIF.
COMMIT WORK.
READ TABLE t_created INDEX 1.
WRITE: / 'Delivery Number : ',
t_created-document_numb.
CREATE TRANSFER ORDER
DATA: w_tanum TYPE ltak-tanum.
CALL FUNCTION 'L_TO_CREATE_DN'
EXPORTING
i_lgnum = '010'
i_vbeln = t_created-document_numb
IMPORTING
e_tanum = w_tanum
EXCEPTIONS
foreign_lock = 1
dn_completed = 2
partial_delivery_forbidden = 3
xfeld_wrong = 4
ldest_wrong = 5
drukz_wrong = 6
dn_wrong = 7
squit_forbidden = 8
no_to_created = 9
teilk_wrong = 10
update_without_commit = 11
no_authority = 12
no_picking_allowed = 13
dn_hu_not_choosable = 14
input_error = 15
OTHERS = 16
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
COMMIT WORK AND WAIT.
WRITE: / 'Transfer order number',
w_tanum.
*&SPWIZARD: DECLARATION OF TABLECONTROL 'TAB_CON1' ITSELF
CONTROLS: TAB_CON1 TYPE TABLEVIEW USING SCREEN 0100.
*&SPWIZARD: OUTPUT MODULE FOR TC 'TAB_CON1'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: UPDATE LINES FOR EQUIVALENT SCROLLBAR
MODULE TAB_CON1_CHANGE_TC_ATTR OUTPUT.
DESCRIBE TABLE IT_ITEM LINES TAB_CON1-lines.
ENDMODULE.
*& Module STATUS_0100 OUTPUT
text
module STATUS_0100 output.
SET PF-STATUS 'MENU'.
SET TITLEBAR 'xxx'.
endmodule. " STATUS_0100 OUTPUT
*& Module USER_COMMAND_0100 INPUT
text
module USER_COMMAND_0100 input.
IF SY-UCOMM EQ 'START'.
LEAVE to screen 0 .
ENDIF.
endmodule. " USER_COMMAND_0100 INPUT
*& Module APPEND_IT_ITEM INPUT
text
module APPEND_IT_ITEM input.
APPEND IT_ITEM.
CLEAR IT_ITEM.
endmodule. " APPEND_IT_ITEM INPUT
plz help me where the error isHi,
Do same as suggested by Ramesh. Add one user command button after clicking that do the looping and call new screen.
Ashven. -
How to perform 'block selection' in table control?
Hi,
I'm looking for an easy way to implement block selection in a table control (i.e. select one line, hit 'block select' button, select a second line, hit 'block select' button again, and all lines between first and last are selected).
I'm currently with a customer who is on 4.0b, so I can't use the wizard, it didn't exist back then.
I hope someone knows
regards,
rsRob,
I generated a quick screen with wizard doing the multiple select. This is the code chucks it generated
in _TOP first part is my definition of the table to be displayed and the one column on it.
TABLES: zsd_act_salespr.
DATA:
BEGIN OF wk_rec.
INCLUDE STRUCTURE zsd_act_salespr.
DATA:
sel TYPE c,
END OF wk_rec,
it_wk LIKE STANDARD TABLE OF wk_rec.
controls: TBLCLT_MAIN type tableview using screen 0100. " Table Control on screen
in I01
*&spwizard: input modul for tc 'TBLCLT_MAIN'. do not change this line!
*&spwizard: mark table
module TBLCLT_MAIN_mark input.
data: g_TBLCLT_MAIN_wa2 like line of IT_WK.
if TBLCLT_MAIN-line_sel_mode = 1.
loop at IT_WK into g_TBLCLT_MAIN_wa2
where SEL = 'X'.
g_TBLCLT_MAIN_wa2-SEL = ''.
modify IT_WK
from g_TBLCLT_MAIN_wa2
transporting SEL.
endloop.
endif.
modify IT_WK
from WK_REC
index TBLCLT_MAIN-current_line
transporting SEL.
endmodule.
in the screen workflow
PROCESS BEFORE OUTPUT.
*&spwizard: pbo flow logic for tablecontrol 'TBLCLT_MAIN'
module TBLCLT_MAIN_change_tc_attr.
*&spwizard: module TBLCLT_MAIN_change_col_attr.
loop at IT_WK
into WK_REC
with control TBLCLT_MAIN
cursor TBLCLT_MAIN-current_line.
*&spwizard: module TBLCLT_MAIN_change_field_attr
endloop.
PROCESS AFTER INPUT.
*&spwizard: pai flow logic for tablecontrol 'TBLCLT_MAIN'
loop at IT_WK.
chain.
field WK_REC-SPNUM.
endchain.
field WK_REC-SEL
module TBLCLT_MAIN_mark on request.
endloop.
*&spwizard: module TBLCLT_MAIN_change_tc_attr.
*&spwizard: module TBLCLT_MAIN_change_col_attr.
in the O01
*&spwizard: output module for tc 'TBLCLT_MAIN'. do not change this line!
*&spwizard: update lines for equivalent scrollbar
module TBLCLT_MAIN_change_tc_attr output.
describe table IT_WK lines TBLCLT_MAIN-lines.
endmodule.
in the F01 nothing
Edited by: Paul Chapman on Apr 24, 2008 4:56 PM -
'how to code for table control wizard in module pool program
Hi Gurus,
Please provide me a sample code of table control wizard...
Thanks in advance!!!!
Regards,
KranthiHi Kranti,
check this code... it should be helpful
*& Module pool Z_TABLE_CONTROL_WIZARD_DEMO *
PROGRAM z_table_control_wizard_demo .
DATA: BEGIN OF lt_vbak OCCURS 0,
flag TYPE c,
vbeln TYPE vbeln_va,
netwr TYPE netwr,
kunnr TYPE kunnr,
END OF lt_vbak.
DATA: sfkunnr TYPE kunnr.
*&spwizard: declaration of tablecontrol 'TCONTROL' itself
CONTROLS: tcontrol TYPE TABLEVIEW USING SCREEN 9000.
*&spwizard: lines of tablecontrol 'TCONTROL'
DATA: g_tcontrol_lines LIKE sy-loopc.
DATA: ok_code LIKE sy-ucomm.
*&spwizard: output module for tc 'TCONTROL'. do not change this line!
*&spwizard: update lines for equivalent scrollbar
MODULE tcontrol_change_tc_attr OUTPUT.
DESCRIBE TABLE lt_vbak LINES tcontrol-lines.
ENDMODULE. "TCONTROL_change_tc_attr OUTPUT
*&spwizard: output module for tc 'TCONTROL'. do not change this line!
*&spwizard: get lines of tablecontrol
MODULE tcontrol_get_lines OUTPUT.
g_tcontrol_lines = sy-loopc.
ENDMODULE. "TCONTROL_get_lines OUTPUT
*&spwizard: input module for tc 'TCONTROL'. do not change this line!
*&spwizard: modify table
MODULE tcontrol_modify INPUT.
MODIFY lt_vbak
INDEX tcontrol-current_line.
ENDMODULE. "TCONTROL_modify INPUT
*&spwizard: input modul for tc 'TCONTROL'. do not change this line!
*&spwizard: mark table
MODULE tcontrol_mark INPUT.
DATA: g_tcontrol_wa2 LIKE LINE OF lt_vbak.
IF tcontrol-line_sel_mode = 1.
LOOP AT lt_vbak INTO g_tcontrol_wa2
WHERE flag = 'X'.
g_tcontrol_wa2-flag = ''.
MODIFY lt_vbak
FROM g_tcontrol_wa2
TRANSPORTING flag.
ENDLOOP.
ENDIF.
MODIFY lt_vbak
INDEX tcontrol-current_line
TRANSPORTING flag.
ENDMODULE. "TCONTROL_mark INPUT
*&spwizard: input module for tc 'TCONTROL'. do not change this line!
*&spwizard: process user command
MODULE tcontrol_user_command INPUT.
ok_code = sy-ucomm.
PERFORM user_ok_tc USING 'TCONTROL'
'LT_VBAK'
'FLAG'
CHANGING ok_code.
sy-ucomm = ok_code.
ENDMODULE. "TCONTROL_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 '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
*& Module STATUS_9000 OUTPUT
* text
MODULE status_9000 OUTPUT.
SET PF-STATUS 'S9000'.
SET TITLEBAR 'T9000'.
ENDMODULE. " STATUS_9000 OUTPUT
*& Module USER_COMMAND_9000 INPUT
* text
MODULE user_command_9000 INPUT.
CASE sy-ucomm.
WHEN 'BACK' OR 'EXIT' OR 'CANCEL'.
LEAVE TO SCREEN 0.
WHEN 'DISP'.
SELECT vbeln netwr kunnr INTO CORRESPONDING FIELDS OF TABLE lt_vbak
FROM vbak
WHERE kunnr = sfkunnr.
* LEAVE TO LIST-PROCESSING [AND RETURN TO SCREEN <nnnn>].
* By default, the dialog processor returns to the PBO processing of
* the screen from which the list processor was called. The optional
* addition AND RETURN TO SCREEN allows you to specify a different
* screen in the current screen sequence at whose PBO event you want
* to resume processing.
when 'LIST'.
LEAVE TO LIST-PROCESSING.
WRITE:/ 'Time :', SY-UZEIT.
LOOP AT LT_VBAK.
WRITE:/ LT_VBAK-VBELN,
LT_VBAK-NETWR,
LT_VBAK-KUNNR.
ENDLOOP.
WHEN 'SUBM'.
*& You can call executable programs from other ABAP programs using the
*& following statement:
*& SUBMIT <rep>|(<field>) [AND RETURN] [<options>].
SUBMIT z_submit_report VIA SELECTION-SCREEN AND RETURN.
ENDCASE.
ENDMODULE. " USER_COMMAND_9000 INPUT
TABLE CONTROL WIZARD SE51 CODE
PROCESS BEFORE OUTPUT.
*&spwizard: pbo flow logic for tablecontrol 'TCONTROL'
module TCONTROL_change_tc_attr.
*&spwizard: module TCONTROL_change_col_attr.
loop at LT_VBAK
with control TCONTROL
cursor TCONTROL-current_line.
module TCONTROL_get_lines.
*&spwizard: module TCONTROL_change_field_attr
endloop.
MODULE STATUS_9000.
PROCESS AFTER INPUT.
*&spwizard: pai flow logic for tablecontrol 'TCONTROL'
loop at LT_VBAK.
chain.
field LT_VBAK-VBELN.
field LT_VBAK-NETWR.
field LT_VBAK-KUNNR.
module TCONTROL_modify on chain-request.
endchain.
field LT_VBAK-FLAG
module TCONTROL_mark on request.
endloop.
module TCONTROL_user_command.
*&spwizard: module TCONTROL_change_tc_attr.
*&spwizard: module TCONTROL_change_col_attr.
MODULE USER_COMMAND_9000.
regards
padma -
Table Control Dropdown List Problem
Hi,
I have this problem with my table control.
I now have an input field (with input help) called: Reference Table, as well as a table control.
What i need is to select the table names (select from the Reference table input help) and the field names will be populated inside the table control (according to the field names inside the respective tables) as a dropdown list.
Refer to this diagram if unclear: http://img166.imageshack.us/img166/1066/tablecontrolwt4.png
Please give me sample codes as i really need help.
Will reward marks if useful.
thanks a lot.
Below is my codes:
*& Report ZHERA_TABLE3
REPORT ZHERA_TABLE3_EVONNE.
DATA: P_HERA TYPE DNTAB-TABNAME VALUE 'Z07P4_REF',
ITAB_HERA TYPE TABLE OF Z07P4_REF,
FIELD_COUNT TYPE I,
WA_HERA LIKE LINE OF ITAB_HERA.
SELECT * INTO TABLE ITAB_HERA FROM Z07P4_REF.
START-OF-SELECTION.
CALL SCREEN 3000.
MODULE STATUS_3000 OUTPUT.
SET PF-STATUS 'UI'.
SET TITLEBAR 'TITLE'.
ENDMODULE. "STATUS_8000 OUTPUT
MODULE USER_COMMAND_8000 INPUT
MODULE USER_COMMAND_3000 INPUT.
CASE SY-UCOMM.
WHEN 'BACK' OR 'EXIT'.
LEAVE PROGRAM.
WHEN 'SAVE'.
PERFORM UPDATE_TABLE.
ENDCASE.
ENDMODULE. "USER_COMMAND_8000 INPUT
*&SPWIZARD: DECLARATION OF TABLECONTROL 'ZTABLE' ITSELF
CONTROLS: ZTABLE TYPE TABLEVIEW USING SCREEN 3000.
*&SPWIZARD: LINES OF TABLECONTROL 'ZTABLE'
DATA: G_ZTABLE_LINES LIKE SY-LOOPC.
DATA: OK_CODE LIKE SY-UCOMM.
*&SPWIZARD: OUTPUT MODULE FOR TC 'ZTABLE'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: UPDATE LINES FOR EQUIVALENT SCROLLBAR
MODULE ZTABLE_CHANGE_TC_ATTR OUTPUT.
DESCRIBE TABLE ITAB_HERA LINES ZTABLE-lines.
ENDMODULE.
*&SPWIZARD: OUTPUT MODULE FOR TC 'ZTABLE'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: GET LINES OF TABLECONTROL
MODULE ZTABLE_GET_LINES OUTPUT.
G_ZTABLE_LINES = SY-LOOPC.
ENDMODULE.
*&SPWIZARD: INPUT MODULE FOR TC 'ZTABLE'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: MODIFY TABLE
MODULE ZTABLE_MODIFY INPUT.
MODIFY ITAB_HERA
FROM WA_HERA
INDEX ZTABLE-CURRENT_LINE.
ENDMODULE.
*&SPWIZARD: INPUT MODULE FOR TC 'ZTABLE'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: PROCESS USER COMMAND
MODULE ZTABLE_USER_COMMAND INPUT.
OK_CODE = SY-UCOMM.
PERFORM USER_OK_TC USING 'ZTABLE'
'ITAB_HERA'
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
FORM UPDATE_TABLE.
"Update physical database table
UPDATE Z07P4_REF FROM TABLE ITAB_HERA.
ENDFORM. "UPDATE_TABLE
Edited by: Evonne Gow on Jan 4, 2008 2:52 AMhey gary help me lei...
Edited by: Evonne Gow on Jan 4, 2008 2:55 AM -
Issue in vertical scroolbar on the table control
Hi All,
I am not able to get the vertical scrollbar on the table control iuf line items increase in number. Please help me in solving the issue.
Thanks
K SharmaHi,
In se38
CONTROLS: TCTRL_PHONELIST TYPE TABLEVIEW USING SCREEN 100.
MODULE STATUS_0100 OUTPUT.
DESCRIBE TABLE itab_PHONELIST LINES LIN.
TCTRL_PHONELIST-lines = LIN.
ENDMODULE. " STATUS_0100 OUTPUT
MODULE EXTRACT_USERDATA INPUT.
lines = sy-loopc.
ENDMODULE. " EXTRACT_USERDATA INPUT
In se51
PROCESS BEFORE OUTPUT.
MODULE STATUS_0100.
PROCESS AFTER INPUT.
LOOP AT ITAB_PHONELIST .
MODULE EXTRACT_USERDATA.
ENDLOOP. -
Footer in the table control?
hi,
How do i display the footer in the table control (which allows me to browse the table page by page)?
rgds,
ramHi,
see the <a href="http://help.sap.com/saphelp_nw2004s/helpdata/en/b5/ac884118aa1709e10000000a155106/frameset.htm">documentation</a> and note that you can decide on paginators or scrollbars.
Regards, Heidi -
Remove vertical scroll bar from table control
hi,
i had used table control in my application. i want remove vertical scroll bar from table control.
At initial time in table control there is no vertical scroll bar. In my table control lines are dependent on internal table which i was used to fill it.
i was used these code for to set table control lines.
DESCRIBE TABLE IT_RISK_ZINRISEXC LINES EXC_LINE.
TC_RISK_EX-LINES = EXC_LINE .
Initially there is no data in internal table so there is no vertical scroll bar. After getting value i am filling internal table. and there is scroll bar in my table control. but i does not want that.
i was not selected RESIZING-VERTICAL OR -HORIZONTAL.Hi,
From Scroll Bars in Table Control
You can remove the scroll bar in the table control by switching off horizontal and vertical scrolling in the properties of the table control. The properties can be accessed from the screen painter by double clicking on the table control. Regarding the page up and page down functions, I believe you add those buttons in the screen layout and code for them. You can use the standard function code for the page up and page down functions.
or
You can get rid of the vertical scroll bars by not setting table control lines. This way the user can only see the visible lines of the table control. As for the horizontal scrollbar, just make sure that your table control doesn't contain too many fields.
Regards,
Raj. -
Regarding clearing of data in table control
In the module pool program using table control i need to enter data and save it to a customized table. But when i input data and press enter, all data gets cleared from the screen. Also i tried the same by appending into internal table. At that time data is displayed on the screen but all other rows gets inactive. Please provide a solution for this issue.
Still my problem is not solved. I am posting my PBO And PAI Modules. In the below example it_mat is the table control table and it_ormat is the internal table.
PBO Modules.
*&spwizard: pbo flow logic for tablecontrol 'TCMAT'
module TCMAT_change_tc_attr.
*&spwizard: module TCMAT_change_col_attr.
loop at IT_MAT
with control TCMAT
cursor TCMAT-current_line.
module TCMAT_get_lines.
*&spwizard: module TCMAT_change_field_attr
endloop.
*&spwizard: output module for tc 'TCMAT'. do not change this line!
*&spwizard: update lines for equivalent scrollbar
module TCMAT_change_tc_attr output.
describe table IT_MAT lines TCMAT-lines.
endmodule.
*&spwizard: output module for tc 'TCMAT'. do not change this line!
*&spwizard: get lines of tablecontrol
module TCMAT_get_lines output.
g_TCMAT_lines = sy-loopc.
READ TABLE IT_ORMAT INDEX SY-STEPL.
MODIFY IT_MAT FROM IT_ORMAT INDEX SY-STEPL.
endmodule.
PAI modules.----
*&spwizard: pai flow logic for tablecontrol 'TCMAT'
loop at IT_MAT.
chain.
field IT_MAT-MATNR.
field IT_MAT-MAKTX.
field IT_MAT-GROES.
field IT_MAT-ZEINR.
field IT_MAT-TCQTY.
field IT_MAT-IBRFLG.
module TCMAT_modify on chain-request.
endchain.
field IT_MAT-CFLG
module TCMAT_mark on request.
endloop.
module TCMAT_user_command.
*&spwizard: module TCMAT_change_tc_attr.
*&spwizard: module TCMAT_change_col_attr.
module TCMAT_modify input.
MODIFY IT_ORMAT FROM IT_MAT INDEX SY-STEPL.
endmodule.
*&spwizard: input modul for tc 'TCMAT'. do not change this line!
*&spwizard: mark table
module TCMAT_mark input.
data: g_TCMAT_wa2 like line of IT_MAT.
if TCMAT-line_sel_mode = 1
and IT_MAT-CFLG = 'X'.
loop at IT_MAT into g_TCMAT_wa2
where CFLG = 'X'.
g_TCMAT_wa2-CFLG = ''.
modify IT_MAT
from g_TCMAT_wa2
transporting CFLG.
endloop.
endif.
modify IT_MAT
index TCMAT-current_line
transporting CFLG.
endmodule.
*&spwizard: input module for tc 'TCMAT'. do not change this line!
*&spwizard: process user command
module TCMAT_user_command input.
OKCODE = sy-ucomm.
perform user_ok_tc using 'TCMAT'
'IT_MAT'
'CFLG'
changing OKCODE.
sy-ucomm = OKCODE.
endmodule. -
Developing table control...
hi,
i have read posts on creating the table control by program rather than using the wizard. i want to try that.. can anyone point me to some good material or let me know the steps or sampl code ??
all i need is
1. a table control to display data from my internal table.
2. user must be able to select/deselect multiple rows
3. there can be a button to sort in ascending and descending order, but then which column ?? can he choose the column ?
4. i need scrollbars in that table control.
5. provision to validate those selected lines. if they dont match the criteria then they must be allowed to select to deselect the rows again !!
pretty much a simple expectation...any help ? thkshey,
one question..how are the table control's columns built ??
i have dragged a table control on my screen. how do i speciy the columns it has to display ??
i am not able to follow the logic to populate the table. any help ?
in table control wizard we will have a link between the ITAB and the table control automatically. here how do i do that manually ?
thks -
How to set total number of rows of table control
Hi All,
I want to set the total number of rows of table control. I don't want to display the blank rows in table.
Regards,
ShrinivasNeed some fine tuning regarding the scrollbar height but it's a start
Unless this isn't what you asked for
Small number of rows
Large number of rows
Attachments:
PlayingWithTable.vi 17 KB -
Reg:How to delete the column in table control also from database table.
Hi Experts,
Once again thank u all for giving the responses.
one more doubt is how to delete the columns of table control and also the record shold delete from ztable.
With Regards,
Saroja.P.Hi,
If you want to delete the rows in the table control and simultaneously delete it from the database table, then you can implement a 'DELETE' functionality specific to your table control. Have a MARK field (you will find that in the screen attributes of the table control -> give a name for the MARK field, you will find an additional MARK column at the beginning of your table control). You can check whatever rows you want to delete from the table control, call the delete module.
"This portion of code inside the LOOP...ENDLOOP.
IF sy-ucomm eq 'F_DELETE'.
gt_itab2-check = mark. " Store the MARK field status into your internal table's correspoding field 'check'
MODIFY gt_itab INDEX tabcontrol-current_line.
ENDIF.
iF sy-ucomm eq 'DELETE1'.
DELETE gt_itab WHERE check eq 'X'. "Your internal table does not have rows that you want to delete
ENDIF.
Now you can modify your database table using the MODIFY statement.
MODIFY ZDB FROM TABLE gt_itab.
Maybe you are looking for
-
My phone line went dead between 8:30 AM and 2:00 PM on Saturday Sep 21, 2013. Next step is to talk to ignorant machines and no way to discuss with a live person....To manipulate between the website is outrageous and moronic at best. The service cal
-
Looking for freelancers for InDesign ExtendScript development
My firm could use some experienced assistance with an InDesign Server development project. In particular we need to generate output dynamically from text and graphical content provided by non-designer end users, and let that content flow into well de
-
To learn OBIEE do you have to belong to any particular ethinic background ?
Dear All, I am new BI learner/aspirant and explore the capabilities of BI using OBIEE and many other such tools. Found this articale --> How do we develop entry level OBIEE resources? [ |http://hcminsight.blogspot.com/2013/01/how-do-we-develop-entry-
-
How do I duplicate the entry to a set of fields when a box is checked?
I already know how to duplicate specific fields. I don't want the field duplicated if a certain box is unchecked (this would apply for a set of seven different boxes, that when the check box is selected, all seven fields would copy their respective m
-
I Need Help for 2 questions please!
Earlier I asked a question about how I can get notifications in the "Notification Center" on my MAC. Someone suggested that I reset the "App Store" by doing the following steps: PLEASE SEE THE PICTURE BELOW I did this. Now I cannot get the "Debug" of