Looping selection screen table
Hi All,
The selection screen has a select-option input field for Profit Center (S_PRCTR).
Hence user can enter the value like 1000 to 1200 in the selection screen.
Now in the Program, one internal table has list of Profit centers.
ex: ITAB will have following profit centers.
1000, 1001, 1002, 1200
Now, i would like to know which are the Profit centers that are missing in the ITAB from S_PRCTR.
How to write the logic?
Regards
Pavan
Hi
you need to have the exact values of the select-options. So put in an internal table the value of profit center
select prctr into table t_tab from cepc where prctr in s_prctr
after you can loop on your second tab and read the table t_tab to find the values out.
like something like this:
loop at itab.
read table t_tab with key prctr = itab-prctr.
if not sy-subrc is initial.
--> you find it
endif.
endloop.
i hope it's helpful
Similar Messages
-
How we can loop the screen table.
Hi All,
We are used loop the screen table but it is a structure how we are able to do this what sap doing behind this can any body please tell me.
Thanks,
Saleem.Hi
SCREEN is a structure only.
But when you create a screen or selection-screen; the program which controls your screen or selection-screen creates an internal table with header line of type SCREEN.
So in your program SCREEN is an internal table, you can always loop it.
To understand it better, write some parameters and select-options in a report program; in debugging mode see the details of SCREEN table.
Regards
Surya. -
Attach a selection screen to a Tcode before accessing the table Contents
Hi All,
I have a requirement where when we access table from se16 we get a default selection screen...So the same selection screen should b displayed when that table is accessed directly with a transaction code attached to it..i mean the path is Tcode -->selection screen --> table/view contents.Hi srinivas,
first let us discuss about your requirement.when you go to transaction se16 and enter a table name and then when you press enter you will get a selection screen to cretae or view contents of that table.you want to get that selection screen by entering any tcode in command bar.
if this is your requirement please follow these steps.
1)go to se16
2)enter the table name and then press enter.you will get a selection screen for that table as we discussed
3)in the selection screen go to menu item
System->Status...
you will get another screen
4)in that screen you will see
in SAP data->in Repository data->Program(Screen)
note that program name
5)go to se93(to create a transaction)
6)enter a tcode which you like and press create
7) you will get another screen and in that screen select the radio button
Program and selectio screen(Report Transaction)
8)you will get create report transaction screen
9)in that screen in program text box enter the program name that you noted earlier
10)check all the checkboxes in GUI support
11)save,check and execute the transaction.you will get the selection screen that you get when you use se16 for that table.
please check the screen by entering the tcode that you created in teh command bar.
please reward points if useful. -
Hi All ,
I have created one selection screen with TABS.
But, I want to give the names for that TABS.
My code is :
SELECTION-SCREEN BEGIN OF TABBED BLOCK TABB1 FOR 20 LINES.
SELECTION-SCREEN tab (40) tab1 USER-COMMAND tab1
DEFAULT SCREEN 1010 .
SELECTION-SCREEN TAB (20) TAB2 USER-COMMAND TAB2
DEFAULT SCREEN 1020.
SELECTION-SCREEN END OF BLOCK TABB1.
*I have a radiobutton group in each of my tabs in the selection screen.
SELECTION-SCREEN BEGIN OF SCREEN 1010 AS SUBSCREEN .
SELECTION-SCREEN BEGIN OF BLOCK GUI WITH FRAME TITLE TEXT-001.
PARAMETERS: P_GUI1 RADIOBUTTON GROUP GUI,
P_GUI2 RADIOBUTTON GROUP GUI,
P_GUI3 RADIOBUTTON GROUP GUI,
P_GUI4 RADIOBUTTON GROUP GUI,
P_GUI5 RADIOBUTTON GROUP GUI.
SELECTION-SCREEN END OF BLOCK GUI.
SELECTION-SCREEN END OF SCREEN 1010.
SELECTION-SCREEN BEGIN OF SCREEN 1020 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK REP WITH FRAME." TITLE TEXT-REP.
PARAMETERS: P_REP1 RADIOBUTTON GROUP REP,
P_REP2 RADIOBUTTON GROUP REP,
P_REP3 RADIOBUTTON GROUP REP.
SELECTION-SCREEN END OF BLOCK REP.
SELECTION-SCREEN END OF SCREEN 1020.
Please any one help me how to solve this problem.
Regards,
Vandu.Pl. see this sample code.
REPORT zravie_tabs_in_sel_screen .
*Creating tabs in selection screen
TABLES : zemp3,zdept,sscrfields.
DATA : gt_itab LIKE zemp3 OCCURS 0 WITH HEADER LINE.
*Subscreen 1
SELECTION-SCREEN BEGIN OF SCREEN 100 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-000.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN ULINE.
SELECT-OPTIONS : so_dno FOR zdept-deptno.
SELECTION-SCREEN ULINE.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN END OF SCREEN 100.
*Subscreen 2
SELECTION-SCREEN BEGIN OF SCREEN 200 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-001.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN ULINE.
SELECT-OPTIONS : so_eno FOR zemp3-empno.
SELECTION-SCREEN ULINE.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN END OF SCREEN 200.
SELECTION-SCREEN : FUNCTION KEY 1,
FUNCTION KEY 2.
SELECTION-SCREEN : BEGIN OF TABBED BLOCK sub FOR 20 LINES,
END OF BLOCK sub.
INITIALIZATION .
sscrfields-functxt_01 = 'Department information'.
sscrfields-functxt_02 = 'Employee information'.
sub-prog = sy-repid.
sub-dynnr = 100.
AT SELECTION-SCREEN.
CASE sy-dynnr.
WHEN '0100'.
IF sscrfields-ucomm = 'FC02'.
sub-dynnr = 200.
ELSE.
sub-dynnr = 100.
ENDIF.
WHEN '0200'.
IF sscrfields-ucomm = 'FC01'.
sub-dynnr = 100.
ELSE.
sub-dynnr = 200.
ENDIF.
ENDCASE.
TOP-OF-PAGE.
PERFORM header_display.
START-OF-SELECTION.
CASE sub-dynnr.
WHEN '100'.
SELECT empno ename job salary FROM zemp3 INTO CORRESPONDING FIELDS
OF TABLE gt_itab WHERE deptno IN so_dno.
PERFORM records_display TABLES gt_itab.
WHEN '200'.
SELECT empno ename job salary FROM zemp3 INTO CORRESPONDING FIELDS
OF TABLE gt_itab WHERE empno IN so_eno.
PERFORM records_display TABLES gt_itab.
ENDCASE.
*& Form records_display
text
-->P_GT_ITAB text
FORM records_display TABLES l_gt_itab STRUCTURE gt_itab.
LOOP AT l_gt_itab.
WRITE : / l_gt_itab-empno UNDER text-003,
l_gt_itab-ename UNDER text-004,
l_gt_itab-job UNDER text-005,
l_gt_itab-salary UNDER text-006.
ENDLOOP.
ENDFORM. " records_display
*& Form header_display
text
--> p1 text
<-- p2 text
FORM header_display.
FORMAT COLOR COL_HEADING INVERSE ON INTENSIFIED ON.
WRITE AT 5 text-003.
WRITE AT 20 text-004.
WRITE AT 40 text-005.
WRITE AT 70 text-006.
SKIP 1.
FORMAT COLOR OFF INVERSE OFF INTENSIFIED OFF.
ENDFORM. " header_display
Also check these standard demo programs
DEMO_SEL_SCREEN_WITH_TABSTRIP
DEMO_SEL_SCREEN_IN_TABSTRIP
Regards,
Joy.
Edited by: Joyjit Ghosh on Jun 30, 2008 4:58 PM -
I need some help on a selection screen. I have the following:
SELECTION-SCREEN: BEGIN OF BLOCK a1 WITH FRAME TITLE text-001.
PARAMETERS: p_bldat TYPE bkpf-bldat OBLIGATORY DEFAULT sy-datum,
p_budat TYPE bkpf-budat OBLIGATORY DEFAULT sy-datum,
p_xref1 TYPE proj-pspid OBLIGATORY,
p_bktxt TYPE bkpf-bktxt,
p_bukrs TYPE bkpf-bukrs OBLIGATORY DEFAULT '1100',
p_waers TYPE bkpf-waers OBLIGATORY DEFAULT 'USD'.
SELECTION-SCREEN: END OF BLOCK a1.
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-002.
PARAMETERS: p_lifnr TYPE ekko-lifnr OBLIGATORY,
p_ebeln TYPE ekko-ebeln OBLIGATORY.
SELECTION-SCREEN: END OF BLOCK b1.
SELECTION-SCREEN: BEGIN OF BLOCK c1 WITH FRAME TITLE text-003.
PARAMETERS: p_amt TYPE wrbtr,
p_ret TYPE wrbtr.
SELECTION-SCREEN: END OF BLOCK c1.
SELECTION-SCREEN: BEGIN OF BLOCK d1 WITH FRAME TITLE text-004.
PARAMETERS: p_cmode TYPE callmode DEFAULT 'N' OBLIGATORY.
SELECTION-SCREEN: END OF BLOCK d1.
AT SELECTION-SCREEN ON p_ebeln.
SELECT SINGLE kwert INTO p_ret FROM zretention WHERE ebeln = p_ebeln AND ebelp = '00000' AND TYPE = 'C'.
IF NOT sy-subrc = 0 OR p_ret IS INITIAL.
CONCATENATE 'Purchase Order' p_ebeln 'does not have any retention available for release!' INTO d_string.
MESSAGE d_string TYPE 'E'.
ENDIF.
AT SELECTION-SCREEN.
check p_ret is not INITIAL.
IF p_amt > p_ret.
MESSAGE 'Amt. To Be Released is more than the remaining retention. Please check your input.' TYPE 'E'.
ELSEIF p_amt IS INITIAL.
MESSAGE 'Amt. To Be Released is required. Please check your input.' TYPE 'E'.
ENDIF.
What I want is for the parameter p_ret to be populated when the user inputs a PO (p_ebeln). This seems to work except I want this to be brought in without running through the other checks (AT SELECTION-SCREEN). In order to bring in p_ret I am having to hit ENTER which will trigger the event AT SELECTION-SCREEN.
How can I bring in p_ret without triggering the event AT SELECTION-SCREEN?
Regards,
DavisIn this case.
If you don't want at selection-screen to be triggered on hitting enter, you can give an if condition in at selection-screen.
tables : sscrfields.
AT SELECTION-SCREEN ON p_ebeln.
SELECT SINGLE kwert INTO p_ret FROM zretention WHERE ebeln = p_ebeln AND ebelp = '00000' AND TYPE = 'C'.
IF NOT sy-subrc = 0 OR p_ret IS INITIAL.
CONCATENATE 'Purchase Order' p_ebeln 'does not have any retention available for release!' INTO d_string.
clear sscrfield-ucomm.
MESSAGE d_string TYPE 'E'.
ENDIF.
AT SELECTION-SCREEN.
if sscrfields-ucomm = 'ONLI'.
check p_ret is not INITIAL.
IF p_amt > p_ret.
MESSAGE 'Amt. To Be Released is more than the remaining retention. Please check your input.' TYPE 'E'.
ELSEIF p_amt IS INITIAL.
MESSAGE 'Amt. To Be Released is required. Please check your input.' TYPE 'E'.
ENDIF.
endif.
The code in at selection-screen is executed only when user presses F8. on pressing 'Enter' it will not be executed.
Hope this helps you.
Regards,
Siddarth -
How to configure selection screen in report
Hi all,
could anyone help me in configuring the selection screen in the report.
Advance Thanks
Regards
GuhapriyanHere is some basic code to generate a selection screen.
tables: afko.
selection-screen begin of block b1 with frame title text-001 .
select-options: s_gltrp for afko-gltrp.
parameters: p_gltrp type afko-gltrp.
selection-screen begin of line.
selection-screen comment (25) text-005.
selection-screen position 33.
parameters: p_pln as checkbox default ' '.
selection-screen end of line.
selection-screen end of block b1.
selection-screen begin of block b2 with frame title text-004 .
selection-screen begin of line.
selection-screen comment (20) text-002.
selection-screen position 33.
parameters: p_det as checkbox default 'X'.
selection-screen end of line.
selection-screen begin of line.
selection-screen comment (20) text-003.
selection-screen position 33.
parameters: p_sum as checkbox.
selection-screen end of line.
selection-screen end of block b2.
Regards,
Rich Heilman -
What is a Selection Screen and how to make it ?
What is a Selection Screen and how to make it ? Please explain the process.
Best regards,
RyanSelection Screen are used for the program reports. These allows you to input some values that are required to show the desired output.
for example : you want to show the list of sales orders between 1000 to 1999, you would write a select query as this (to make u understand better)
select vbeln from vbak into it_vbeln
where vbeln GE 1000 " greater than or equal to
and vbeln LE 1999. " less than or equal to
now if you wnat to do it dynamically, you need a selection screen
tables : vbak. " declaration
selection-screen : begin of block block1 with frame title text-003.
select-options : so_vbeln for vbak-vbeln. " selection range from __ to __
selection-screen : end of block block1.
now you can write the same select query as
select vbeln from vbak into it_vbeln
where vbeln in so_vbeln.
Hope this is clear now
Regards
Gopi -
Fetching data from a table & displaying it as checkbox in selection screen
I have a database table which contains report name & report description as fields.based on the number of rows of data present in the table i have to display check box for each entry & the corresponding controls in the selection-screen.
I got answers like:
1.Declaring the checkboxes & hiding the same in runtime using user-command,which is not needed...
2.Declaring the checkbox in screen painter using function code & calling the same,where i need a clear explanation...
Is there any other method other than this plz let me know...
Reply is most urgent...Hi Vijay...
The selection screen should look like...
cb1 -
variant1 -
icb1 -
date1 -
time1
cb2 -
variant2 -
icb2 -
date2 -
time2
where...
cb1 - checkbox which indicates the first report(YRTEST) in the table...
variant1 - textbox for variant which has a help,on clicking should display all the variants of YRTEST report...
icb1 - checkbox which indicates the immediate background processing...
date1 - date on which the job should be scheduled...
time1 - time on which the job should be scheduled...
If icb1 is clicked then date1 & time1 should not be allowed to enter & vice-versa...
cb2 - checkbox which indicates the second report(YRTEST1) in the table...
variant2 - textbox for variant which has a help,on clicking should display all the variants of YRTEST1 report...
icb2 - checkbox which indicates the immediate background processing...
date2 - date on which the job should be scheduled...
time2 - time on which the job should be scheduled...
If icb2 is clicked then date2 & time2 should not be allowed to enter & vice-versa...
Its not like what u said...(Based on user entered data fetch the data of report(variant,date,time) and you can submit the data to background job as incase of single record by looping the data)
Because we have only ReportName,ReportDescription as fields in the table & not variant,date,time...The variant,date,time are all entered in the selection-screen only from which the background job is scheduled...
I hope the requirement is more clearer... -
Table control and a selection screen
Hi,
I have a requirement where I am supposed to be designing a screen that has a table control with fields
w/selection column label 1(non-editable) i/o field(from) i/o field(to)
w/selection column label 2(non-editable) i/o field(from) i/o field(to)
On searching the forum threads, I found related threads as to how to implement a selection screen (as the I/O fields are similar to select-options) in module pool programming. But mine requires the use of table control and a kind of selection screen embedded into it. Please guide me through this requirement.Hi
If you need to implement a table control on selection screen u need to use a tabstrip as graphic element supports the table control.
So
1 - Step: define a tabstrip with 1 tab only:
SELECTION-SCREEN BEGIN OF BLOCK 3.
SELECTION-SCREEN BEGIN OF TABBED BLOCK MAX FOR 22 LINES.
SELECTION-SCREEN TAB (25) TABS1 USER-COMMAND UCOMM1
DEFAULT SCREEN 100.
SELECTION-SCREEN END OF BLOCK MAX.
SELECTION-SCREEN END OF BLOCK 3.
2 - Step design the subscreen (in my sample the dynrpo 100) and insert the table control there:
PROCESS BEFORE OUTPUT.
MODULE INIT_CTRL.
LOOP WITH CONTROL T_CTRL.
MODULE DISPLAY_DATA.
ENDLOOP.
PROCESS AFTER INPUT.
LOOP WITH CONTROL T_CTRL.
MODULE UPDATE_DATA.
ENDLOOP.
In the module DISPLAY_DATA and UPDATE_DATA u need to implement the code to transfer the data from internal table to table control and from table control to internal table, in order to display and update the data.
Max -
Selection-screen pushbutton & Table Control
Hi Everyone
In my program i have a pushbutton in my selection-screen; this button call a screen with a table control, the problem is when i run my report and return to the first screen, the data in the TC is cleared.
It's possible to save the information of my TC if i run my report and return to the first screen??
Thanks & Regards
DavidHi,
Write the logic for putting data from an internal table into table control in the PBO of the called screen & not in the PAI of the calling screen. Also, when you exit that screen, retrieve data into the internal table.
For e.g. if Screen 9002 contains table control then
PBO of Screen 9002:
loop at it_itab into x_itab with control table_control_name.
module put_data.
endloop.
PAI of screen 9002:
loop at it_itab into x_itab.
module get_data.
endloop.
Reward points if the answer is helpful.
Regards,
Mukul -
How to get selection screen elements and its table reference of a report ?
halo experts
How can I get selection screen elements and its table reference of a report ? . I tried rs_refresh_from_select_options. But I am unable to get the table and field it is referring to
For eg if my selection screen 1000 is
parameters: p_carrid type spfli-carrid,
select-options :s-_connid type sflight-connid.
is there any Fm or method which gives me what are the screen elements( p_carrid and s_connid ) and what table( splfi and sflight ) and field ( carrid and conid )it is referring to ?The following code is an example of how you might dynamically determine all your PARAMETERS and SELECT-OPTIONS variables at run time. The PARAMETERS and SELECT-OPTIONS only point to a dictionary element--not a specific table. Even though you may say "spfli-carrid" or "sflight-connid", the data type really references the dictionary type and not a specific table/structure.
REPORT ZTEST_PROG.
TABLES sflight.
DATA:
screen_tab TYPE STANDARD TABLE OF screen,
wa_screen TYPE screen,
scrn_nm TYPE string,
scrn_leftover TYPE string,
l_type TYPE REF TO cl_abap_typedescr,
typ_nm TYPE string,
typ_pre TYPE string.
FIELD-SYMBOLS <fs_data> TYPE ANY.
PARAMETERS p_carrid TYPE spfli-carrid.
SELECT-OPTIONS s_connid FOR sflight-connid.
INITIALIZATION.
LOOP AT SCREEN.
IF screen-group3 = 'PAR'
OR screen-group3 = 'LOW'.
APPEND screen TO screen_tab.
ENDIF.
ENDLOOP.
START-OF-SELECTION.
LOOP AT screen_tab INTO wa_screen.
ASSIGN (wa_screen-name) TO <fs_data>.
l_type = cl_abap_typedescr=>describe_by_data( <fs_data> ).
IF wa_screen-group3 = 'LOW'.
SPLIT wa_screen-name AT '-' INTO scrn_nm scrn_leftover.
TRANSLATE scrn_nm TO UPPER CASE.
ELSE.
scrn_nm = wa_screen-name.
ENDIF.
SPLIT l_type->absolute_name AT '=' INTO typ_pre typ_nm.
WRITE:
/ 'Screen Name: ', scrn_nm,
/ 'DDIC Type: ', typ_nm.
ENDLOOP.
When you get into defining internal tables you can determine those at run time with cl_abap_structdescr. The following is an example of how you might do that. You can loop through the "components_table" and evaluate each field of the structure in this way.
DATA: structure_reference TYPE REF TO cl_abap_structdescr,
components_table TYPE abap_compdescr_tab,
components_structure LIKE LINE OF components_table.
structure_reference ?= cl_abap_structdescr=>describe_by_data( any_structure ).
components_table = structure_reference->components.
I don't know if this answers any of your questions but I hope that some of it is useful. -
Checkbox Within Table Control At Selection Screen
Hello, there.
In my selection screen (dialog) I'm using a table control which is based on an internal table.
In that internal table I have a simple Yes/No field (declared as type XNULL for example).
The problem is that I want it to be displayed as checkbox on the selection screen's table control and not as a simple string with size = 1 like it is..
I hope it's clear and understood ...
Thanks in advance,
RebekaRebeka,
Its very simple,
In that field of table control just drag & drop the checkbox.
In Screen modules ,
loop at itab.
If Field = 'YES'.
Checkbox = 'X'.
else .
clear checkbox.
endif.
endloop.
Regards,
TAlwinder -
How to dispaly datas from the table, base on the selection screen
hi there gurus,
im currently developing a stock aging report,
i have completed one program but it do not allow me to excutes the program althought the syntax is correct.
i would to get some ideas from you, regarding how to extract the datas from the tables?
my selction screen will be, mat number, date, and gl account.
and the out put datas are, mbew-matnr, makt-maktx, mbew-lbkum, mara_meins, mbew-salk3,and the consumptions for the past 12months and the values for it.
can u plz guide me with this,
thank you,.
this is kind of very urgent program that i need to finish , plz help me.here is the total code the i do
REPORT ZSTK_AGING_REP2.
*TABLES
TABLES: mseg,
mara,
makt,
SKAT,
SKA1,
MARV,
T001,
T030,
T149D,
AM07M,
MCMSEG,
T001K,
T001W,
T134M,
vbak,
mbew,
mcon, rmcb0, marc, t024w, mvke, v134w, t438a, propf, maprf, t000, t024e
, tvko.
DATA: BEGIN OF ta_material OCCURS 2,
werks LIKE mard-werks,
lgort LIKE mard-lgort,
matnr LIKE mard-matnr,
labst LIKE mard-labst,
umlme LIKE mard-umlme,
insme LIKE mard-insme,
einme LIKE mard-einme,
speme LIKE mard-speme,
retme LIKE mard-retme,
verpr LIKE mbew-verpr,
maktx LIKE makt-maktx,
meins LIKE mara-meins,
bukrs LIKE t001-bukrs,
konto LIKE t030-konts,
butxt LIKE t001-butxt,
txt50 LIKE skat-txt50,
MABTR LIKE MCMSEG-DMBTR,
SKBTR LIKE MCMSEG-DMBTR,
WAERS LIKE T001-WAERS,
WAER2 LIKE T001-WAERS,
BWKEY LIKE MBEW-BWKEY,
LBKUM LIKE MBEW-LBKUM,
MEINS LIKE MARA-MEINS,
SALK3 LIKE MBEW-SALK3,
WAERS1 LIKE T001-WAERS,
BUKRS1 LIKE T001-BUKRS,
KONTO1 LIKE T030-KONTS,
lbkum LIKE mbew-lbkum,
erdat LIKE vbak-erdat,
END OF ta_material.
DATA: BEGIN OF ta_mseg OCCURS 2,
mblnr LIKE mseg-mblnr,
*->Begin of KL02+ -
mjahr like mseg-mjahr,
zeile like mseg-zeile,
*->End of KL02+ -
meins LIKE mseg-meins,
menge LIKE mseg-menge,
werks LIKE mseg-werks,
lgort LIKE mseg-lgort,
matnr LIKE mseg-matnr,
budat LIKE mkpf-budat,
saknr LIKE SKA1-SAKNR,
END OF ta_mseg.
single recs based on MATNR
DATA: BEGIN OF i_matnr OCCURS 0,
werks LIKE mard-werks,
lgort LIKE mard-lgort,
matnr LIKE mard-matnr,
maktx LIKE makt-maktx,
mblnr LIKE mseg-mblnr,
verpr LIKE mbew-verpr,
labst LIKE mard-labst, "Valuated stock with
*unrestricted use
umlme LIKE mard-umlme, "Stock in transfer
*(from one storage location to another)
insme LIKE mard-insme, "Stock in quality
*inspection
einme LIKE mard-einme, "Total Stock of All
*Restricted Batches
speme LIKE mard-speme, "Blocked stock
retme LIKE mard-retme, "Blocked Stock Returns
meins LIKE mara-meins, "base unit
bukrs LIKE t001-bukrs,
konto LIKE t030-konts,
butxt LIKE t001-butxt,
txt50 LIKE skat-txt50,
MABTR LIKE MCMSEG-DMBTR,
SKBTR LIKE MCMSEG-DMBTR,
WAERS LIKE T001-WAERS,
WAER2 LIKE T001-WAERS,
BWKEY LIKE MBEW-BWKEY,
LBKUM LIKE MBEW-LBKUM,
MEINS LIKE MARA-MEINS,
SALK3 LIKE MBEW-SALK3,
WAERS1 LIKE T001-WAERS,
BUKRS1 LIKE T001-BUKRS,
KONTO1 LIKE T030-KONTS,
lbkum LIKE mbew-lbkum,
END OF i_matnr.
recs based on MBLNR
DATA: BEGIN OF i_mblnr OCCURS 0,
mblnr LIKE mseg-mblnr,
werks LIKE mseg-werks,
lgort LIKE mseg-lgort,
matnr LIKE mseg-matnr,
menge LIKE mseg-menge,
meint LIKE mseg-meins,
budat LIKE mkpf-budat,
bukrs LIKE t001-bukrs,
konts LIKE t030-konts,
butxt LIKE t001-butxt,
txt50 LIKE skat-txt50,
MABTR LIKE MCMSEG-DMBTR,
SKBTR LIKE MCMSEG-DMBTR,
WAERS LIKE T001-WAERS,
WAER2 LIKE T001-WAERS,
BWKEY LIKE MBEW-BWKEY,
LBKUM LIKE MBEW-LBKUM,
MEINS LIKE MARA-MEINS,
SALK3 LIKE MBEW-SALK3,
WAERS1 LIKE T001-WAERS,
BUKRS1 LIKE T001-BUKRS,
KONTO1 LIKE T030-KONTS,
END OF i_mblnr.
TYPES: BEGIN OF t_mat,
lgort LIKE mseg-lgort,
werks LIKE mseg-werks,
matnr LIKE mseg-matnr,
mblnr LIKE mseg-mblnr,
maktx LIKE makt-maktx,
meins LIKE mara-meins,
meng0 LIKE mbew-lbkum,
value0 LIKE mbew-salk3,
meng0 LIKE mard-labst, "0 to 10 days
value0 LIKE mseg-dmbtr,
meng1 LIKE mard-labst, "11 to 30 days
value1 LIKE mseg-dmbtr,
meng2 LIKE mard-labst, "31 to 60 days
value2 LIKE mseg-dmbtr,
meng3 LIKE mard-labst, "61-90
value3 LIKE mseg-dmbtr,
meng4 LIKE mard-labst, "90 days onwards
value4 LIKE mseg-dmbtr,
END OF t_mat.
DATA: i_mat2 TYPE t_mat OCCURS 0 WITH HEADER LINE.
TYPES: BEGIN OF t_mat2,
lgort LIKE mard-lgort, " storage location
cnt0(5),
cnt1(5),
cnt2(5),
cnt3(5),
cnt4(5),
meng0 LIKE mbew-lbkum,
value0 LIKE mbew-salk3,
meng0 LIKE mard-labst, "0 to 10 days
value0 LIKE mseg-dmbtr,
meng1 LIKE mard-labst, "11 to 30 days
value1 LIKE mseg-dmbtr,
meng2 LIKE mard-labst, "31 to 60 days
value2 LIKE mseg-dmbtr,
meng3 LIKE mard-labst, "61-90
value3 LIKE mseg-dmbtr,
meng4 LIKE mard-labst, "90 days onwards
value4 LIKE mseg-dmbtr,
END OF t_mat2.
DATA: i_matsum TYPE t_mat2 OCCURS 0 WITH HEADER LINE.
DATA: w_mengb TYPE mbew-lbkum,
w_workqyt TYPE mbew-lbkum,
w_index TYPE sy-tabix,
*DATA: w_mengb TYPE mard-labst, "tmp Balance qty
w_workqty TYPE mard-labst, "Work qty
w_index TYPE sy-tabix,
w_days(5) TYPE n, "duration difference (days)
w_mths(5) TYPE n, "duration difference (mths)
w_dat1 TYPE sy-datum, "date
w_dat2 TYPE sy-datum, "today's date
w_detl(1) TYPE c,
w_summ(1) TYPE c,
w_denom TYPE i,
w_numer TYPE i,
w_conv TYPE i,
w_ttlcnt TYPE i,
w_cnt TYPE i,
v_topofpage(1),
w_meng LIKE mard-labst,
w_meng LIKE mbew-lbkum,
*sapscript values
w_title(20) TYPE c. "Summary / Detail Report
DATA: lv_peinh LIKE mbew-peinh, "Price Unit
lv_verpr LIKE mbew-verpr. "Moving Price
proram comes here
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_werks FOR mseg-werks,
s_lgort FOR mseg-lgort,
s_matnr FOR mara-matnr,
s_saknr FOR ska1-saknr,
S_ERDAT FOR VBAK-ERDAT.
PARAMETERS: pck_detl RADIOBUTTON GROUP rep1,
pck_summ RADIOBUTTON GROUP rep1,
pck_dtsm RADIOBUTTON GROUP rep1 DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK blk1.
top of the page
TOP-OF-PAGE.
PERFORM f_top_of_page.
FORM f_top_of_page .
IF v_topofpage = 'D'.
*-->Report header for detail report
WRITE:/2 'Printed By :', sy-uname,
80 'Stock Aging Report - Detail',
180 'Printed on:', sy-datum, sy-timlo,
220 'Page:', sy-pagno.
WRITE:/,/,/.
WRITE:/2 'Storage',
10 'Matl ID',
22 'Matl Description',
61 'UOM',
78 '<--=<QTY ON THIS DATE -->',
78 '<-- =< 10 days -->',
112 '<--11 to 30 days -->',
148 '<--31 to 60 days -->',
181 '<--61 to 90 days -->',
216 '<-- > 90 days -->',
/2 'Location',
76 'Qty',
92 'Value'.
112 'Qty',
128 'Value',
148 'Qty',
164 'Value',
181 'Qty',
195 'Value',
216 'Qty',
231 'Value'.
WRITE:/2 sy-uline(235).
ELSE.
*-->Report header for Summary report
WRITE:/2 'Printed By :', sy-uname,
80 'Stock Aging Report - Summary',
180 'Printed on:', sy-datum, sy-timlo,
220 'Page:', sy-pagno.
WRITE:/,/,/.
WRITE:/2 'Storage',
10 'Matl ID',
22 'Matl Description',
61 'UOM',
78 '<--< QTY ON THIS DATE -->',
78 '<-- < 10 days -->',
112 '<--11 to 30 days -->',
148 '<--31 to 60 days -->',
181 '<--61 to 90 days -->',
216 '<-- > 90 days -->',
/2 'Location',
76 'Qty',
92 'Value'.
112 'Qty',
128 'Value',
148 'Qty',
164 'Value',
181 'Qty',
195 'Value',
216 'Qty',
231 'Value'.
WRITE:/2 sy-uline(235).
ENDIF.
ENDFORM. " f_top_of_page
*start-of-selection
*PERFOM f_data_selection.
FORM f_data_selection.
SELECT a~werks
a~lgort
a~matnr
a~saknr
a~lbkum
a~erdat
a~labst
a~umlme
a~insme
a~einme
a~speme
a~retme
b~verpr "this field no long been used
c~maktx
d~meins
INTO CORRESPONDING FIELDS OF TABLE ta_material
FROM mard AS a
INNER JOIN makt AS c ON amatnr = cmatnr
INNER JOIN mara AS d ON amatnr = dmatnr
WHERE a~matnr IN s_matnr
AND a~werks IN s_werks
AND a~lgort IN s_lgort
AND a~saknr IN s_saknr
AND a~erdat IN s_erdat
AND c~spras = 'EN'.
*--> SC01 - End of Insertion **
*-->Select material documents
SELECT a~mblnr
a~mjahr
a~zeile
a~meins
a~menge
a~werks
a~lgort
a~matnr
b~budat
INTO CORRESPONDING FIELDS OF TABLE ta_mseg
FROM mseg AS a INNER JOIN mkpf AS b
ON amblnr = bmblnr
AND amjahr = bmjahr
FOR ALL ENTRIES IN ta_material
WHERE matnr = ta_material-matnr
AND a~werks = ta_material-werks
AND a~lgort = ta_material-lgort
AND algort NE aumlgo
AND a~shkzg = 'S'
AND a~smbln EQ space
AND a~smblp EQ space.
*--> SC03 - Start of Insertion **
If MBLNR exist in MSEG-SMBLN and this
record's SHKZG = 'H'. Remove it from the table.
This is becuase this particular record has already been reverse.
LOOP AT ta_mseg.
SELECT SINGLE *
FROM mseg
WHERE smbln = ta_mseg-mblnr
*->Begin of KL02+ -
and SMBLP = ta_mseg-zeile.
AND shkzg = 'H'. "return. " KL02-
*->End of KL02+ -
IF sy-subrc = 0.
DELETE ta_mseg.
ENDIF.
ENDLOOP.
*--> SC03 - Enf of Insertion **
ENDFORM. " f_data_selection
*IMPORTANT , NEED TO CHECK LATER
FORM f_data_preparation.
*-->Append data for report details
LOOP AT ta_material.
DATA: ta_msegtemp LIKE ta_mseg OCCURS 2 WITH HEADER LINE.
*-->Loop at all material documents into a temp table
REFRESH ta_msegtemp. CLEAR ta_msegtemp.
LOOP AT ta_mseg WHERE matnr = ta_material-matnr AND
werks = ta_material-werks AND
lgort = ta_material-lgort.
ta_msegtemp = ta_mseg. APPEND ta_msegtemp.
ENDLOOP.
*-->Add up all the stock for the material
CLEAR w_mengb.
w_mengb = ta_material-labst +
ta_material-umlme +
ta_material-insme +
ta_material-einme +
ta_material-speme +
ta_material-retme.
IF w_mengb IS INITIAL.
CONTINUE.
ENDIF.
*-->sort msegtemp by posting date
SORT ta_msegtemp BY budat DESCENDING.
*-->get the values from the material documents into the report output
LOOP AT ta_msegtemp.
*->Begin of KL02- -
CALL FUNCTION 'HRCM_TIME_PERIOD_CALCULATE'
EXPORTING
begda = ta_msegtemp-budat
endda = sy-datum
IMPORTING
NOYRS =
nomns = w_mths
nodys = w_days
EXCEPTIONS
invalid_dates = 1
overflow = 2
OTHERS = 3
*->End of KL02- -
*->Begin of KL02+ -
*-->Get the days difference btw two dates
clear w_days.
w_days = sy-datum - ta_msegtemp-budat.
*--> Include today's date into calculation
w_days = w_days + 1.
*->End of KL02+ -
check base unit, do conversion
IF ta_material-meins <> ta_msegtemp-meins.
CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT'
EXPORTING
i_matnr = ta_material-matnr
i_in_me = ta_msegtemp-meins
i_out_me = ta_material-meins
i_menge = ta_msegtemp-menge
IMPORTING
e_menge = ta_msegtemp-menge
EXCEPTIONS
error_in_application = 1
error = 2
OTHERS = 3.
ENDIF.
*--> SC01 - Start of Insertion **
SELECT SINGLE peinh
verpr
INTO (lv_peinh,
lv_verpr)
FROM mbew
WHERE matnr = ta_material-matnr
AND bwkey = ta_material-werks.
IF sy-subrc = 0.
ta_material-verpr = lv_verpr.
ENDIF.
*--> SC01 - End of Insertion **
*-->check whether the mseg value is LE than the stock value
IF ta_msegtemp-menge LE w_mengb.
*-->Days < 10 days
IF w_days LE 1 AND w_days EQ 366.
i_mat2-meng0 = i_mat2-meng0 + ta_msegtemp-menge.
IF NOT lv_peinh EQ 0.
i_mat2-value0 = ( i_mat2-meng0 / lv_peinh ) *
ta_material-verpr."+SC01
ENDIF.
**-->Days 11 - 30 days
ELSEIF w_days >= 11 AND w_days =< 30.
i_mat2-meng1 = i_mat2-meng1 + ta_msegtemp-menge.
IF NOT lv_peinh EQ 0.
i_mat2-value1 = ( i_mat2-meng1 / lv_peinh ) *
*ta_material-verpr."+SC01
ENDIF.
**-->Days 31-60 days
ELSEIF w_days >= 31 AND w_days =< 60.
i_mat2-meng2 = i_mat2-meng2 + ta_msegtemp-menge.
IF NOT lv_peinh EQ 0.
i_mat2-value2 = ( i_mat2-meng2 / lv_peinh ) *
*ta_material-verpr."+SC01
ENDIF.
**-->Days 61-90 days
ELSEIF w_days >= 61 AND w_days =< 90.
i_mat2-meng3 = i_mat2-meng3 + ta_msegtemp-menge.
IF NOT lv_peinh EQ 0.
i_mat2-value3 = ( i_mat2-meng3 / lv_peinh ) *
*ta_material-verpr.
ENDIF.
**-->Days > 90 days
ELSEIF w_days > 90.
i_mat2-meng4 = i_mat2-meng4 + ta_msegtemp-menge.
IF NOT lv_peinh EQ 0.
i_mat2-value4 = ( i_mat2-meng4 / lv_peinh ) *
*ta_material-verpr.
ENDIF.
ENDIF.
*->End of KL002+
w_mengb = w_mengb - ta_msegtemp-menge.
ELSE.
IF NOT w_mengb LE 0 .
IF NOT lv_peinh EQ 0.
**->End of KL001+
i_mat2-value0 = ( i_mat2-meng0 / lv_peinh )
*ta_material-verpr."+SC01
**->Begin of KL001+
ENDIF.
ELSEIF w_days GE 22.
i_mat2-meng3 = i_mat2-meng3 + w_mengb.
IF NOT lv_peinh EQ 0.
i_mat2-value3 = ( i_mat2-meng3 / lv_peinh )
*ta_material-verpr.
ENDIF.
**->End of KL001+
ENDIF.
**--> SC02 - End of Insertioin **
ENDIF.
*->End of KL002-
*->Begin of KL002+
*--> < 10 days
IF w_days EQ 1 AND w_days LE 366.
i_mat2-meng0 = i_mat2-meng0 + ta_msegtemp-menge.
IF NOT lv_peinh EQ 0.
i_mat2-value0 = ( i_mat2-meng0 / lv_peinh ) *
ta_material-verpr."+SC01
ENDIF.
ELSEIF w_days >= 11 AND w_days =< 30.
i_mat2-meng1 = i_mat2-meng1 + w_mengb.
IF NOT lv_peinh EQ 0.
i_mat2-value1 = ( i_mat2-meng1 / lv_peinh ) *
*ta_material-verpr.
ENDIF.
**--> 31 - 60 days
ELSEIF w_days >= 31 AND w_days =< 60.
i_mat2-meng2 = i_mat2-meng2 + w_mengb.
IF NOT lv_peinh EQ 0.
i_mat2-value2 = ( i_mat2-meng2 / lv_peinh ) *
*ta_material-verpr.
ENDIF.
**--> 61 - 90 days
ELSEIF w_days >= 61 AND w_days =< 90.
i_mat2-meng3 = i_mat2-meng3 + w_mengb.
IF NOT lv_peinh EQ 0.
i_mat2-value3 = ( i_mat2-meng3 / lv_peinh ) *
*ta_material-verpr.
ENDIF.
**--> > 90 days
ELSEIF w_days > 90.
i_mat2-meng4 = i_mat2-meng4 + w_mengb.
IF NOT lv_peinh EQ 0.
i_mat2-value4 = ( i_mat2-meng4 / lv_peinh ) *
*ta_material-verpr.
ENDIF.
ENDIF.
*->End of KL002+
w_mengb = 0.
ENDIF. " check stock value NE zero
ENDIF. "check Mat doc amount is LE than the stock value
ENDIF.
ENDLOOP. " msegtemp
*-->append i_mat2 values
i_mat2-werks = ta_material-werks.
i_mat2-lgort = ta_material-lgort.
i_mat2-matnr = ta_material-matnr.
i_mat2-maktx = ta_material-maktx.
i_mat2-meins = ta_material-meins.
APPEND i_mat2. CLEAR i_mat2.
ENDLOOP. " ta_material
*-->Append data for summary data
DATA: i_lgort LIKE i_mat2 OCCURS 2 WITH HEADER LINE.
i_lgort[] = i_mat2[].
SORT i_lgort BY werks lgort.
DELETE ADJACENT DUPLICATES FROM i_lgort COMPARING werks lgort.
DATA: v_cnt0(5), v_cnt1(5), v_cnt2(5), v_cnt3(5), v_cnt4(5),
v_value0 LIKE i_matsum-value0.
v_value1 LIKE i_matsum-value1,
v_value2 LIKE i_matsum-value2,
v_value3 LIKE i_matsum-value3,
v_value4 LIKE i_matsum-value4.
LOOP AT i_lgort.
CLEAR v_cnt0. CLEAR v_value0.
CLEAR v_cnt1. CLEAR v_value1.
CLEAR v_cnt2. CLEAR v_value2.
CLEAR v_cnt3. CLEAR v_value3.
CLEAR v_cnt4. CLEAR v_value4.
LOOP AT i_mat2 WHERE lgort = i_lgort-lgort AND
werks = i_lgort-werks.
IF NOT i_mat2-meng0 IS INITIAL.
v_cnt0 = v_cnt0 + 1.
v_value0 = v_value0 + i_mat2-value0.
ENDIF.
IF NOT i_mat2-meng1 IS INITIAL.
v_cnt1 = v_cnt1 + 1.
v_value1 = v_value1 + i_mat2-value1.
ENDIF.
IF NOT i_mat2-meng2 IS INITIAL.
v_cnt2 = v_cnt2 + 1.
v_value2 = v_value2 + i_mat2-value2.
ENDIF.
IF NOT i_mat2-meng3 IS INITIAL.
v_cnt3 = v_cnt3 + 1.
v_value3 = v_value3 + i_mat2-value3.
ENDIF.
IF NOT i_mat2-meng4 IS INITIAL.
v_cnt4 = v_cnt4 + 1.
v_value4 = v_value4 + i_mat2-value4.
ENDIF.
ENDLOOP.
CLEAR i_matsum.
i_matsum-lgort = i_mat2-lgort.
IF v_cnt0 NE space.
i_matsum-cnt0 = v_cnt0.
i_matsum-value0 = v_value0.
APPEND i_matsum.
ENDIF.
CLEAR i_matsum.
i_matsum-lgort = i_mat2-lgort.
IF v_cnt1 NE space.
i_matsum-cnt1 = v_cnt1.
i_matsum-value1 = v_value1.
APPEND i_matsum.
ENDIF.
CLEAR i_matsum.
i_matsum-lgort = i_mat2-lgort.
IF v_cnt2 NE space.
i_matsum-cnt2 = v_cnt2.
i_matsum-value2 = v_value2.
APPEND i_matsum.
ENDIF.
CLEAR i_matsum.
i_matsum-lgort = i_mat2-lgort.
IF v_cnt3 NE space.
i_matsum-cnt3 = v_cnt3.
i_matsum-value3 = v_value3.
APPEND i_matsum.
ENDIF.
CLEAR i_matsum.
i_matsum-lgort = i_mat2-lgort.
IF v_cnt4 NE space.
i_matsum-cnt4 = v_cnt4.
i_matsum-value4 = v_value4.
APPEND i_matsum.
ENDIF.
ENDLOOP.
ENDFORM. "f_data_preparation
*IMPORTANT , NEED TO CHECK LATER
FORM f_display_data .
IF pck_dtsm = 'X'.
*-->Display detail
v_topofpage = 'D'.
PERFORM f_display_detail.
*-->display summary
v_topofpage = 'S'.
NEW-PAGE.
PERFORM f_display_summary.
ELSEIF pck_detl = 'X'.
*-->Display detail
v_topofpage = 'D'.
PERFORM f_display_detail.
ELSEIF pck_summ = 'X'.
*-->display summary
v_topofpage = 'S'.
PERFORM f_display_summary.
ENDIF.
ENDFORM. " f_display_data
FORM f_display_detail .
v_topofpage = 'D'.
SORT i_mat2 BY werks lgort.
*DATA: v_count(5),
DATA: v_count,
v_va1 LIKE i_mat2-value0.
v_va2 LIKE i_mat2-value0,
v_va3 LIKE i_mat2-value0,
v_va4 LIKE i_mat2-value0,
v_va5 LIKE i_mat2-value0.
LOOP AT i_mat2.
WRITE:/2 i_mat2-lgort,
10 i_mat2-matnr,
22 i_mat2-maktx(38),
61 i_mat2-meins,
64 i_mat2-meng0,
82 i_mat2-value0.
100 i_mat2-meng1,
118 i_mat2-value1,
136 i_mat2-meng2,
154 i_mat2-value2,
169 i_mat2-meng3,
186 i_mat2-value3,
204 i_mat2-meng4,
222 i_mat2-value4.
*-->Set counter and add up all values by lgort
v_count = v_count + 1.
v_va1 = v_va1 + i_mat2-value0.
v_va2 = v_va2 + i_mat2-value1.
v_va3 = v_va3 + i_mat2-value2.
v_va4 = v_va4 + i_mat2-value3.
v_va5 = v_va5 + i_mat2-value4.
AT END OF lgort.
WRITE:/10 'Cnt:',
15 v_count,
55 'Subtotal',
82 v_va1.
118 v_va2,
154 v_va3,
186 v_va4,
222 v_va5.
CLEAR v_count. CLEAR v_va1.
CLEAR v_va2. CLEAR v_va3. CLEAR v_va4. clear v_va5.
ENDAT.
ENDLOOP.
ENDFORM. " f_display_detail
FORM f_display_summary .
v_topofpage = 'S'.
LOOP AT i_matsum.
IF NOT i_matsum-cnt0 IS INITIAL.
WRITE:/2 i_matsum-lgort,
10 'Cnt:',15 i_matsum-cnt0,
82 i_matsum-value0.
ENDIF.
IF NOT i_matsum-cnt1 IS INITIAL.
WRITE:/2 i_matsum-lgort,
10 'Cnt:',15 i_matsum-cnt1,
118 i_matsum-value1.
ENDIF.
IF NOT i_matsum-cnt2 IS INITIAL.
WRITE:/2 i_matsum-lgort,
10 'Cnt:',15 i_matsum-cnt2,
154 i_matsum-value2.
ENDIF.
IF NOT i_matsum-cnt3 IS INITIAL.
WRITE:/2 i_matsum-lgort,
10 'Cnt:', 15 i_matsum-cnt3,
186 i_matsum-value3.
ENDIF.
IF NOT i_matsum-cnt4 IS INITIAL.
WRITE:/2 i_matsum-lgort,
10 'Cnt:', 15 i_matsum-cnt4,
222 i_matsum-value4.
ENDIF.
ENDLOOP.
ENDFORM. " f_display_summary -
Selection screen and authorization check for plant from 2 diff tables?
Hi,
Could anyone help me out?
how to write code for this?
u2022 Fields for selection
Plant : WERKS (one selection) - check authorization access u2013 Mandatory .
Material code MATNR (one selection) - Mandatory
and while doing the authorization check how should i check it ? here iam taking the table as t001w for werks and for selection screen iam taking it from another Z table......i should take 2 different tables here.....for selection and for authorization.
my code is pasted below:
Data Declarations *
data: s_werks type t001w-werks.
Selection Screen *
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-h01.
PARAMETER : p_werks like Ztable-werks OBLIGATORY,
p_matnr like mara-matnr OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b1.
Start-of-Selection *
START-OF-SELECTION.
**-Get Plants for Authorization check.
SELECT werks
FROM t001w
INTO TABLE it_werks
WHERE werks IN s_werks.
LOOP AT it_werks INTO x_werks.
v_werks = x_werks.
Regards,
ReddyPlant : WERKS (one selection)
That means only 1 plant value to be given? Then you can use PARAMETERS instead of SELECT-OPTIONS. And additionally, you'll only have to check that plant value.
Using SELECT-OPTIONS you would indeed retrieve the plants and check each individual selected plant. Your code for that is good enough to start with.
I wouldn't do the check in the START-OF-SELECTION event, but rather in the AT SELECTION_SCREEN event.
To perform an authorisation check; try the ABAP help on AUTHORITY-CHECK. And you will need to know which authorisation object you need to use.
Just noticed you're using PARAMETERS
WHERE werks IN s_werks
should be
WHERE werks eq p_werks
But actually you don't need to select T001W. Just use the value in p_werks.
Edited by: Maen Anachronos on Oct 10, 2008 7:53 PM -
Table display in Selection Screen
In upper part of selection screen, there would be 2 parameters.
In lower part of selection screen, there would be 2 table display side by side. Data of these two tables can be changed from here.
Parameters are not related with tables data.
After executing the program, all the data from those Database table will be shown into selection-screen's individual table area.
After changing data, while click to 'save' button, changes would reflect into database.
Can any one please help on this matter?HI,
You can do in the following way.
You have to create a different screen for holding the table control.. When the checkbox is ticked just call the screen using CALL SCREEN or LEAVE SCREEn in your program which will display your table control.
or else
Go with module pool program.
Design the screen as your requirement.
Under PBO write the bleow code.
Create a module like MODULE_DEACTIVATE_TC.
write the below code to invisible TC initially.
IF CHECKBOX IS INITIAL.
LOOP AT SCREEN.
IF SCREEN-NAME = 'TC'.
SCREEN-INPUT = '0'.
SCREEN_INVISIBLE = '1'.
MODIFY SCREEN.
ENDIF.
ENDIF.
Create module inder PAI,to acivate TC
MODULE ACTIVE_TC.
inside module write bleow code.
IF CHECKBOX EQ 'X'.
LOOP AT SCREEN.
IF SCREEN-NAME = 'TC'.
SCREEN-INPUT = '1'.
SCREEN_INVISIBLE = '0'.
MODIFY SCREEN.
ENDIF.
ENDIF.
Regards,
Pavan.
Maybe you are looking for
-
Period not open for G/L account
Hi, Help needed- While posting goods issue, system gave error message as"Period 011 /2007 is not open for account type S and G/L 600101." So PGI could not be executed. How to make period open for accunt type & G/L acc. In MMRV, current period is 11/2
-
Not recieving email after editing a document
hi, i have setup email connectivity in portal and userA, a content admin subscribed to a particular item "test.doc" with parameters: Notification On: Any Change Channel: email address frequency: on every event User A got an email immediately stati
-
Tolerance Days in Interest Program
We are having issues where interest is being calculated on items from prior months and years. We're not sure why interest was not picked up in the period it should have. I noticed that on 10/24/05 config was changed for tolerance days from 37 days t
-
Is there any way to fix this dilemma ?
-
I'm trying to learn to use idvd 6. I want to do a slide show with music. When I go to the help menu, it tells me to go to preferences to set the 'TV safe area'. I click on IDVD, a drop down menu appears, but the first 7 choices starting with About ID