2008 Oct 14 12:12 PM
Hai ,
I got a requirement to develop a module pool report for calcuation , save & print. I created a table control wizard I did all these things but when i was testing after i entered first 10 colmns visible in the table control and above to scroll and enter the materials in material column it got greyed out. I really dont know what to do. I set screen-input = '1'.
modify screen in PBO but still its not working. Please help me out. First time i was doing module pool pgm.
Regards
Nisha
2008 Oct 15 10:07 AM
Hai Amit,
Thanks for ur helpful answer. It works only for those items i entered in the first 10 visible rows and once i scroll down to enter remaining BOM items it got greyed out. Hope u got my problem. Actually ur codes reads the items i entered and made those datas to be changeable but i want to enter more item in the table which is not allowed. let me know amit if there is solution for this.
Regards
M.Nisha
Hai ,
I got a requirement to develop a module pool report for calcuation , save & print. I created a table control wizard I did all these things but when i was testing after i entered first 10 colmns visible in the table control and above to scroll and enter the materials in material column it got greyed out. I really dont know what to do. I set screen-input = '1'.
modify screen in PBO but still its not working. Please help me out. First time i was doing module pool pgm.
Regards
Nisha
2008 Oct 14 12:15 PM
Hi,
Its always hard to modify the auto generated code for table control, than doing it manually. Pls search for sample code on table control. This will do.
2008 Oct 14 12:20 PM
Hi nisha,
if u need to keep the table control in change mode keep
CONTROLS: tabctrl TYPE TABLEVIEW USING SCREEN 9002.
DATA: cols LIKE LINE OF tabctrl-cols,
lines TYPE i.
LOOP AT tabctrl-cols INTO cols.
cols-screen-input = '0'.
MODIFY tabctrl-cols FROM cols INDEX sy-tabix.
endloop.
in screen painter attributes double click on tabctrl and check all under resizing & seperators.
also check std programs
DEMO_DYNPRO_TABCONT_LOOP
DEMO_DYNPRO_TABCONT_LOOP_AT
for more info
Regards,
Amit
Edited by: Amit Iyer on Oct 14, 2008 4:51 PM
2008 Oct 15 10:07 AM
Hai Amit,
Thanks for ur helpful answer. It works only for those items i entered in the first 10 visible rows and once i scroll down to enter remaining BOM items it got greyed out. Hope u got my problem. Actually ur codes reads the items i entered and made those datas to be changeable but i want to enter more item in the table which is not allowed. let me know amit if there is solution for this.
Regards
M.Nisha
2008 Oct 15 1:23 PM
The number of updateable lines on a screen is controlled by the table control LINES parameter which is set in a module at the start of the table contral wizard generated PBO code. The larger the number, the more updateable lines are available. I usually try to set it to at least the number of lines in my itab plus the number of lines displayed on the screen; this should have the effect of giving you always, when you've scrolled to the bottom of your filled fields, a complete screen of blank, enterable lines.
CLEAR gv_lines.
DESCRIBE TABLE gt_splits LINES gv_lines.
g_TC_SPLITS_lines = sy-loopc + gv_lines + 20.
TC_SPLITS-lines = g_TC_SPLITS_lines.
2008 Oct 15 10:13 AM
Hi Nisha,
Paste ur code here. so that we can solve ur problem easily...
Rgds.,
subash
2008 Oct 15 11:14 AM
Hai,
I have pasted my codes.This s my first pgm so please excuse me if there is any basic mistakes.
Regards
M.Nisha
&----
*& Module pool ZAGLP_CALC_COMP
*&
&----
*&
*&
&----
PROGRAM zaglp_calc_comp.
TABLES : mara , zaglp_mara , zaglp_rd,zaglp_rd_item, mbew .
DATA: my_ok TYPE sy-ucomm, ok_code TYPE sy-ucomm,
t_vol LIKE zaglp_rd_item-volume, t_wt LIKE zaglp_rd_item-volume,
t_cost LIKE zaglp_rd_item-cost,soild_vol LIKE zaglp_rd-density,
solid_wt LIKE zaglp_rd-tot_wt, t_voc LIKE zaglp_rd-voc, t_index LIKE sy-tabix,
t_cnt TYPE i VALUE 0 , t_ind(1).
DATA: lines TYPE i, limit TYPE i, fill TYPE i.
DATA: selcol(1).
DATA: BEGIN OF t_tab1 OCCURS 0,
mandt LIKE zaglp_rd-mandt,
fgcode LIKE zaglp_rd-fgcode,
version LIKE zaglp_rd-version,
seq_no LIKE zaglp_rd_item-seq_no,
rmcode LIKE zaglp_rd_item-rmcode,
rmdesc LIKE zaglp_rd_item-rmdesc,
weight LIKE zaglp_rd_item-weight,
volume LIKE zaglp_rd_item-volume,
cost LIKE zaglp_rd_item-cost,
END OF t_tab1.
***&SPWIZARD: DATA DECLARATION FOR TABLECONTROL 'C_CONTROL'
*&SPWIZARD: DEFINITION OF DDIC-TABLE
*&SPWIZARD: TYPE FOR THE DATA OF TABLECONTROL 'C_CONTROL'
TYPES: BEGIN OF t_c_control,
mandt LIKE zaglp_rd-mandt,
fgcode LIKE zaglp_rd-fgcode,
version LIKE zaglp_rd-version,
seq_no LIKE zaglp_rd_item-seq_no,
rmcode LIKE zaglp_rd_item-rmcode,
rmdesc LIKE zaglp_rd_item-rmdesc,
weight LIKE zaglp_rd_item-weight,
volume LIKE zaglp_rd_item-volume,
cost LIKE zaglp_rd_item-cost,
END OF t_c_control.
*&SPWIZARD: INTERNAL TABLE FOR TABLECONTROL 'C_CONTROL'
DATA: g_c_control_itab TYPE t_c_control OCCURS 0,
g_c_control_wa TYPE t_c_control. "work area
DATA: g_c_control_copied. "copy flag
*&SPWIZARD: DECLARATION OF TABLECONTROL 'C_CONTROL' ITSELF
CONTROLS: c_control TYPE TABLEVIEW USING SCREEN 0100.
*&SPWIZARD: LINES OF TABLECONTROL 'C_CONTROL'
DATA: g_c_control_lines LIKE sy-loopc.
*&SPWIZARD: OUTPUT MODULE FOR TC 'C_CONTROL'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: COPY DDIC-TABLE TO ITAB
MODULE c_control_init OUTPUT.
DESCRIBE TABLE t_tab1 LINES c_control-lines.
DATA: cols LIKE LINE OF c_control-cols,
lines1 TYPE i.
LOOP AT c_control-cols INTO cols.
cols-screen-input = '1'.
MODIFY c_control-cols FROM cols INDEX sy-tabix.
ENDLOOP.
ENDMODULE. "C_CONTROL_INIT OUTPUT
*&SPWIZARD: OUTPUT MODULE FOR TC 'C_CONTROL'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: MOVE ITAB TO DYNPRO
MODULE c_control_move OUTPUT.
MOVE-CORRESPONDING g_c_control_wa TO zaglp_rd_item.
ENDMODULE. "C_CONTROL_MOVE OUTPUT
*&SPWIZARD: OUTPUT MODULE FOR TC 'C_CONTROL'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: GET LINES OF TABLECONTROL
MODULE c_control_get_lines OUTPUT.
g_c_control_lines = sy-loopc.
ENDMODULE. "C_CONTROL_GET_LINES OUTPUT
*&SPWIZARD: INPUT MODULE FOR TC 'C_CONTROL'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: MODIFY TABLE
MODULE c_control_modify INPUT.
MOVE-CORRESPONDING ZAGLP_RD_ITEM TO G_C_CONTROL_WA.
MODIFY G_C_CONTROL_ITAB
FROM G_C_CONTROL_WA
INDEX C_CONTROL-CURRENT_LINE.
CLEAR : lines , fill , limit , selcol.
*----
Page Up & Page Down
my_ok = sy-ucomm.
lines = sy-loopc.
CASE my_ok.
WHEN 'P+'.
c_control-top_line = c_control-top_line + lines.
limit = fill - lines + 1.
IF c_control-top_line > limit.
c_control-top_line = limit.
ENDIF.
sy-ucomm = space.
WHEN 'P-'.
c_control-top_line = c_control-top_line - lines.
IF c_control-top_line < 0.
c_control-top_line = 0.
ENDIF.
ENDCASE.
*----
Changes begin by Nisha
MOVE-CORRESPONDING zaglp_rd_item TO t_tab1.
t_tab1-fgcode = zaglp_rd-fgcode.
t_tab1-version = zaglp_rd-version.
t_cnt = t_cnt + 1.
t_tab1-seq_no = t_cnt .
IF t_tab1-weight IS INITIAL.
MESSAGE i000(vz) WITH 'enter the weight'.
ELSE.
APPEND t_tab1.
CLEAR t_tab1.
ENDIF.
ENDMODULE. "C_CONTROL_MODIFY INPUT
*&SPWIZARD: INPUT MODULE FOR TC 'C_CONTROL'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: PROCESS USER COMMAND
MODULE c_control_user_command INPUT.
ok_code = sy-ucomm.
PERFORM user_ok_tc USING 'C_CONTROL'
'G_C_CONTROL_ITAB'
'FLAG'
CHANGING ok_code.
sy-ucomm = ok_code.
ENDMODULE. "C_CONTROL_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 USER_COMMAND_0100 INPUT
&----
text
----
MODULE user_command_0100 INPUT.
my_ok = ok_code.
CLEAR ok_code.
CLEAR: t_vol , t_wt, t_cost , solid_wt, soild_vol, t_voc, t_index.
IF t_ind = ' '.
LOOP AT t_tab1.
t_index = sy-tabix.
SELECT SINGLE * FROM mara WHERE matnr EQ t_tab1-rmcode.
IF sy-subrc EQ 0.
t_tab1-rmdesc = mara-matkl.
ENDIF.
SELECT SINGLE * FROM zaglp_mara WHERE matnr EQ t_tab1-rmcode.
IF sy-subrc EQ 0.
*Density
IF zaglp_mara-density NE 0.
t_tab1-volume = t_tab1-weight / zaglp_mara-density.
ELSE.
t_tab1-volume = 0.
ENDIF.
*Solid by weight.
solid_wt = solid_wt + ( ( ( 100 - zaglp_mara-volatile_wt ) * t_tab1-weight ) / 100 ).
*Solid by volume.
soild_vol = soild_vol + ( ( ( 100 - zaglp_mara-volatile_vol ) * t_tab1-volume ) / 100 ).
*VOC
IF t_tab1-rmcode NE 'RS85'.
t_voc = t_voc + ( zaglp_mara-volatile_wt * t_tab1-weight ) .
ENDIF.
ENDIF.
SELECT SINGLE * FROM mbew WHERE matnr EQ t_tab1-rmcode.
IF sy-subrc EQ 0.
IF mbew-vprsv EQ 'S'.
t_tab1-cost = mbew-stprs.
ELSEIF mbew-vprsv EQ 'V'.
t_tab1-cost = mbew-verpr.
ENDIF.
ENDIF.
t_wt = t_wt + t_tab1-weight.
t_vol = t_vol + t_tab1-volume.
t_cost = t_cost + t_tab1-cost.
MODIFY t_tab1 TRANSPORTING rmdesc volume cost seq_no.
ENDLOOP.
zaglp_rd-tot_cost = t_cost.
zaglp_rd-tot_vol = t_vol.
zaglp_rd-tot_wt = t_wt.
*DISPLAY OF HEADER DETAILS
SELECT SINGLE * FROM zaglp_rd WHERE fgcode EQ zaglp_rd-fgcode AND
version EQ zaglp_rd-version.
IF sy-subrc EQ 0.
zaglp_rd-descr = zaglp_rd-descr.
zaglp_rd-enterby = zaglp_rd-enterby.
zaglp_rd-dft = zaglp_rd-dft.
zaglp_rd-density = zaglp_rd-density.
zaglp_rd-pvc = zaglp_rd-pvc.
zaglp_rd-solid_vol = zaglp_rd-solid_vol.
zaglp_rd-soild_wt = zaglp_rd-soild_wt.
zaglp_rd-voc = zaglp_rd-voc.
zaglp_rd-spread = zaglp_rd-spread.
zaglp_rd-cost = zaglp_rd-cost.
ENDIF.
*DISPLAY OF ITEM DETAILS
SELECT * FROM zaglp_rd_item WHERE fgcode EQ zaglp_rd-fgcode AND
version EQ zaglp_rd-version.
IF sy-subrc EQ 0.
t_ind = 'X'.
t_tab1-rmcode = zaglp_rd_item-rmcode.
t_tab1-rmdesc = zaglp_rd_item-rmdesc.
t_tab1-weight = zaglp_rd_item-weight.
t_tab1-volume = zaglp_rd_item-volume.
t_tab1-cost = zaglp_rd_item-cost.
APPEND t_tab1.
CLEAR t_tab1.
ENDIF.
ENDSELECT.
When Calculation button is pressed
IF my_ok = 'CALC'.
selcol = 'X'.
PERFORM data_calc.
ENDIF.
IF my_ok = 'SAVE'.
t_ind = 'X'.
PERFORM data_save.
ENDIF.
ENDIF.
IF my_ok = 'CANC' OR my_ok = 'EXIT' OR my_ok = 'BACK'.
LEAVE PROGRAM.
ENDIF.
IF my_ok = 'PRINT'.
PERFORM data_print.
ENDIF.
IF my_ok = 'P+'.
screen-input = '1'.
MODIFY SCREEN.
ENDIF.
IF my_ok = 'P-'.
screen-input = '1'.
MODIFY SCREEN.
ENDIF.
ENDMODULE. " USER_COMMAND_0100 INPUT
&----
*& Form DATA_CALC
&----
DATA CALCULATION
----
--> p1 text
<-- p2 text
----
FORM data_calc .
*DENSITY
IF zaglp_rd-tot_vol IS INITIAL.
zaglp_rd-density = 0.
ELSE.
zaglp_rd-density = zaglp_rd-tot_wt / zaglp_rd-tot_vol.
ENDIF.
*SOLID BY WEIGHT
IF zaglp_rd-tot_wt IS INITIAL.
zaglp_rd-soild_wt = 0.
ELSE.
zaglp_rd-soild_wt = solid_wt / zaglp_rd-tot_wt.
ENDIF.
*SOLID BY VOLUME
IF zaglp_rd-solid_vol IS INITIAL.
zaglp_rd-solid_vol = 0.
ELSE.
zaglp_rd-solid_vol = soild_vol / zaglp_rd-tot_vol.
ENDIF.
*VOC
IF zaglp_rd-tot_wt IS INITIAL.
zaglp_rd-voc = 0.
ELSE.
zaglp_rd-voc = ( t_voc * 1000 ) / zaglp_rd-tot_wt.
ENDIF.
*SPREAD
IF zaglp_rd-dft IS INITIAL.
zaglp_rd-spread = 0.
ELSE.
zaglp_rd-spread = ( zaglp_rd-solid_vol * 10 ) / zaglp_rd-dft.
ENDIF.
*Cost
IF zaglp_rd-tot_vol IS INITIAL.
zaglp_rd-cost = 0.
ELSE.
zaglp_rd-cost = zaglp_rd-tot_cost / zaglp_rd-tot_vol.
ENDIF.
*Entry Date
zaglp_rd-date_crd = sy-datum.
ENDFORM. " DATA_CALC
&----
*& Form DATA_SAVE
&----
text
----
--> p1 text
<-- p2 text
----
FORM data_save .
INSERT zaglp_rd FROM zaglp_rd .
INSERT zaglp_rd_item FROM TABLE t_tab1 ACCEPTING DUPLICATE KEYS .
MESSAGE i000(vz) WITH 'VERSION -' zaglp_rd-version 'IS SAVED FOR THE MATERIAL' zaglp_rd-fgcode .
ENDFORM. " DATA_SAVE
&----
*& Module STATUS_0100 OUTPUT
&----
text
----
MODULE status_0100 OUTPUT.
SET PF-STATUS 'STATUS_0100'.
SET TITLEBAR 'TITLE_0100'.
for Pageup Pagedown
DESCRIBE TABLE t_tab1 LINES fill.
c_control-lines = fill.
screen-input = '1'.
MODIFY SCREEN.
ENDMODULE. " STATUS_0100 OUTPUT
&----
*& Form DATA_PRINT
&----
text
----
--> p1 text
<-- p2 text
----
FORM data_print .
data: t_head like zaglp_rd occurs 0 with header line,
t_item like zaglp_rd_item occurs 0 with header line.
*
select single * from zaglp_rd into t_head where fgcode eq zaglp_rd-fgcode and
version eq zaglp_rd-version.
DATA: opts LIKE itcpo.
opts-tdimmed = 'X'.
CALL FUNCTION 'OPEN_FORM'
EXPORTING
APPLICATION = 'TX'
ARCHIVE_INDEX =
ARCHIVE_PARAMS = ARC_PARAMS
DEVICE = 'PRINTER'
OPTIONS = OPTS
DIALOG = ' '
form = 'ZAGLP_RD_PRINT'
language = sy-langu.
IF sy-subrc NE 0.
MESSAGE e000(vz) WITH 'please check'.
ENDIF.
LOOP AT t_tab1.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
element = 'ITEM'.
FUNCTION = 'SET'
*
TYPE = 'BODY'
WINDOW = 'MAIN'.
ENDLOOP.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
element = 'FOOTER'.
CALL FUNCTION 'CLOSE_FORM'.
ENDFORM. " DATA_PRINT
2008 Oct 15 2:50 PM
Thanks christine.........Its working. Thank to all who helped me to sort out this
Regards
M.Nisha
| User | Count |
|---|---|
| 6 | |
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |