Change Control Wizard - Audit rule tables
Hi All,
New forum member here, and I have a question regarding the setup of audit rules using the Change Control Wizard in PCG. The first rule we are setting up is to track changes to supplier files, and when we generated the audit rule we were expecting the audit table to be LA_AC_APXVDMVD, but instead the table it created was SQLAP.AP_SUPPLIER_SITES_ALL. I am not sure why this occurred, but it appears that we may have configured the rule incorrectly. Any insight you can provide would be greatly appreciated.
Thanks,
Marc
I am not sure what you want to do with the table name.
However, just to answer the query the table is correct. Since you created the rule for the supplier master files it picked the underlying supplier table
SQLAP.AP_SUPPLIER_SITES_ALL.
Similar Messages
-
'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 -
HR-ABAP using Table Control Wizard
My requirements is to customize an infotype which is customer specific.
After creating the infotype in PM01, I also create the screen(2000) for the
infotype. The issue is in the table control. I create a table control
using table control wizard, getting the information that i need to output in the
screen, using another infotype which is PA0007 planned working time.
The expected result is that the data will diplay on the screen when i execute PA30.
Do you have any idea or any recommendation to resolve the issue? thanks.
And here are my codes.
in PBO
LOOP AT g_table5_itab
INTO g_table5_wa
WITH CONTROL table5
CURSOR table5-current_line.
MODULE table5_move.
MODULE table5_get_lines.
ENDLOOP.
Inside the module pool.
MODULE TABLE5_INIT OUTPUT.
IF G_TABLE5_COPIED IS INITIAL.
*&SPWIZARD: COPY DDIC-TABLE 'PA0007'
*&SPWIZARD: INTO INTERNAL TABLE 'g_TABLE5_itab'
SELECT * FROM PA0007
INTO CORRESPONDING FIELDS
OF TABLE G_TABLE5_ITAB
*Start of Insert
WHERE pernr = pskey-pernr.
*End of Insert .
G_TABLE5_COPIED = 'X'.
REFRESH CONTROL 'TABLE5' FROM SCREEN '2000'.
ENDIF.
ENDMODULE.
MODULE TABLE5_MOVE OUTPUT.
*Start of Delete
MOVE-CORRESPONDING G_TABLE5_WA TO PA0007.
MOVE-CORRESPONDING G_TABLE5_WA TO PA9201.
*End of Delete
*Start of Change
MOVE G_TABLE5_WA-begda TO PA9201-zzpensda.
MOVE G_TABLE5_WA-endda TO PA9201-zzpendda.
MOVE G_TABLE5_WA-empct TO PA9201-zzempct.
*End of Change
ENDMODULE.
MODULE TABLE5_GET_LINES OUTPUT.
G_TABLE5_LINES = SY-LOOPC.
ENDMODULE.Hi,
Create a table control in layout and place your fields in table control.
Press F6 and give the table name and click on get from dictionary and select the 5 fields which you required and palce those fields in table control.
Double click on table control and give table control name .
In Top include create a stmt as
CONTROLS : TABlecontrolname TYPE TABLEVIEW USING SCREEN '1000'.
In PBO under a module write your logic that means select query and place it in an internal table. Place that select query under IF condition.
Module Read.
If SY-UCOMM = 'ENTER'.
Process query.
endif.
endmodule.
LOOP AT ITAB INTO WA WITH CONTROL TAB.
MODULE DISP.
ENDLOOP.
In PAI.
LOOP AT ITAB.
ENDLOOP.
Here ITAB is internal table name.TAB is table control name.In display module write the code
MODULE DISP OUTPUT.
MOVE-CORRESPONDING WA TO database tablename.
ENDMODULE.
And in 1000 screen create SET PF status in the function keys assign a keyword to Enter Icon as 'ENTER'.
Hope this is helpful.
Regards,
G.Aditya -
Using Insert and Delete icons in table control wizard.
Can anyone tell me how to perform a new row insertion or deletion in a table created using the table control wizard.
I see there is a form fcode_insert_row and fcode_delete_row, but dont know how to call them and what parameters to pass and all.
Since iam new to SAP-ABAP, some code samples will be a great help.
Thanks to all in advance.Hi Lavanya ,
You have to add the icons personally in the table control.. . Put fcode for addition button as INSE and delete as DELE ..coding will be already thr in the wizard no need to anything just add icons in the table control by selecting from f4 help on icons option of screen.
Thanks,
Vishnu . -
How to use table control wizard using standard SAP structure.
Hi ,
I'm working on one project...
I have created my own program, where we generate sequence of numbers. This output is displayed in the table control and when i save it saves in my user defined database table.
Now i'm trying and using standard structure in table control wizard to view the data... Table control wizard is not working if we define structure..
Please help me out with the solution.
Thanks and Regards in advance.
A. RafiquePlease explain as to what u mean by standard structure in the table control, when u r trying to view the data, are u trying to populate the internal table that you are feeding to the screen structure with the entries that you want to display?
-
Sort up and sort Down push buttons in module pool with table control wizard
hi,
i have created 2 buttons for Sort up and sort Down push buttons in module pool with table control wizard
please any one can help me.
regardsHi
Following code is to enable and disable the tbl control using two buttons. Just alter the code and for each button write the sort code.
REPORT YJAN27_SCREEN .
TABLES: SFLIGHT, YFLIGHT_28.
TYPES: BEGIN OF struct1,
carrid like sflight-carrid,
connid like sflight-connid,
fldate like sflight-fldate,
END OF struct1.
CONTROLS TBL1 TYPE TABLEVIEW USING SCREEN 2700.
DATA: OK_CODE LIKE SY-UCOMM,
CARRID LIKE SFLIGHT-CARRID, "cols in tbl ctrl
CONNID LIKE SFLIGHT-CONNID,
FLDATE LIKE SFLIGHT-FLDATE,
itab TYPE TABLE OF STRUCT1 WITH HEADER LINE,
cols like line of TBL1-COLS,
FLAG TYPE I.
FLAG = 1.
CALL SCREEN 2700.
*& Module STATUS_2700 OUTPUT
* text
MODULE STATUS_2700 OUTPUT.
SET PF-STATUS 'BACK'.
* SET TITLEBAR 'xxx'.
ENDMODULE. " STATUS_2700 OUTPUT
*& Module USER_COMMAND_2700 INPUT
* text
MODULE USER_COMMAND_2700 INPUT.
OK_CODE = SY-UCOMM.
CASE OK_CODE.
WHEN 'BACK'.
LEAVE PROGRAM.
WHEN 'DIS'. "write code for sort up
loop AT TBL1-COLS INTO COLS.
COLS-SCREEN-INPUT = 0.
MODIFY TBL1-COLS FROM COLS.
ENDLOOP.
FLAG = 2.
WHEN 'ENA'. "write code for sort down
loop AT TBL1-COLS INTO COLS.
COLS-SCREEN-INPUT = 1.
MODIFY TBL1-COLS FROM COLS.
ENDLOOP.
FLAG = 1.
ENDCASE.
ENDMODULE. " USER_COMMAND_2700 INPUT
*& Module GET_DATA OUTPUT
* text
MODULE GET_DATA OUTPUT.
select carrid connid fldate from SFLIGHT into table itab.
ENDMODULE. " GET_DATA OUTPUT
*& Module POPULATE_TBL OUTPUT
* text
MODULE POPULATE_TBL OUTPUT.
MOVE-CORRESPONDING ITAB TO SFLIGHT.
ENDMODULE. " POPULATE_TBL OUTPUT
*& Module CHANGE_SCREEN OUTPUT
* text
MODULE CHANGE_SCREEN OUTPUT. " use this module if you want to hide the other button
CASE FLAG.
WHEN 1.
LOOP AT SCREEN.
IF SCREEN-NAME = 'B_ENA'.
SCREEN-INVISIBLE = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
LOOP AT SCREEN.
IF SCREEN-NAME = 'B_DIS'.
SCREEN-INVISIBLE = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
WHEN 2.
LOOP AT SCREEN.
IF SCREEN-NAME = 'B_DIS'.
SCREEN-INVISIBLE = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
LOOP AT SCREEN.
IF SCREEN-NAME = 'B_ENA'.
SCREEN-INVISIBLE = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDCASE.
ENDMODULE. " CHANGE_SCREEN OUTPUT
PROCESS BEFORE OUTPUT.
MODULE STATUS_2700.
MODULE CHANGE_SCREEN. " use this if you want to display one button at a time
MODULE GET_DATA.
loop at itab WITH control TBL1.
MODULE POPULATE_TBL. " populate tbl ctrl
endloop.
PROCESS AFTER INPUT.
MODULE USER_COMMAND_2700. " do the sort operations
loop at itab.
endloop.
Hope this helps
Regards,
Jayanthi.K -
Oracle Time and Labor - Change and Late Audit
Dear All,
We are using Payroll Layout and Single Day period.
Timecard has only Hour Type (Regular Time, Overtime & So on.) and In / Out.
We have Swipe Machines. Employee Swipes In & Out. Every night these entries are deposited in OTL with Submitted mode.
Next day Employee is allowed to modify these entries in accordance with Time Policies.
For e.g. Timecard shows 08:30 to 19:30 as Regular Hour. Employee can modify 08:30 to 17:00 as Regular Time and 18:00 to 19:30 as Overtime Hour Type.
Now the problem is Approver would like to know exact change, as what was the Original Entry and What is the modified entry.
Is there any way to achieve this?
Can Change and Late Audit work on Payroll Layout?
I am unable to find Payroll Change & Late Audit Layout. Only Project Change and Late Audit Layouts are available and we are not using Project.Hi 864434,
An easier way would have been to use Earning policies.
You can define rules which would automatically split the earning types to Overtime etc..
This is a very simple setup too.
Some examples here -
Oracle Time and Labor (OTL) OTLR California Overtime Policy Setup and Examples [ID 1451080.1]
This way, the layout would show what the employee has actually worked and how the rules are applied to split it, all on one page.
But if you don't want to go that route..
Can you not use the data from the swipe machines ?
I guess you would load the data into an temporary table.
So you can write a discoverer report which would show the actual times for each employee.
On the layouts, there are only some predefined ones.
Others, you will have to create on your own(may be by customising a seeded one)
Hope that helps,
Cheers,
Vignesh -
Hi All,
I am using Jdeveloper 11.1.2.0.0. I followed below link:
http://www.oracle.com/technetwork/developer-tools/jdev/index-098707.html#01But in this link ,they are explained about how to creating our own audit rule in Jdeveloper 10g.
How to create our own audit rule in Jdeveloper 11.1.2.0.0 ?.
As per my old link,
Jdeveloper 11.1.2.0.0 Aduit rules problem.unable to add more rules and change that warning message.
As per the below link,
Third party extension in Jdeveloper 11.1.2.0.0unable to use any third party (PMD) plugin.
Any idea ?.
Thanks Advance.
Regards,
Vass LeeHi..
Check followings
http://andrejusb.blogspot.com/2010/03/red-samurai-tool-jdeveloper-11g.html
http://blogs.oracle.com/jdevextensions/entry/don_t_fear_the_audit -
Please Help, I want to change field value in a table, based on another field value in the same row (for each added row)
I am using this code :
<HTML>
<HEAD>
<SCRIPT>
function addRow(tableID) {
var table = document.getElementById(tableID);
var rowCount = table.rows.length;
var row = table.insertRow(rowCount);
var colCount = table.rows[0].cells.length;
for(var i=0; i<colCount; i++ ) {
var newcell = row.insertCell(i);
newcell.innerHTML = table.rows[1].cells[i].innerHTML;
switch(newcell.childNodes[0].type) {
case "text":
newcell.childNodes[0].value = "";
break;
case "checkbox":
newcell.childNodes[0].checked = false;
break;
case "select-one":
newcell.childNodes[0].selectedIndex = 0;
break;}}}
function deleteRow(tableID) {
try {var table = document.getElementById(tableID);
var rowCount = table.rows.length;
for(var i=0; i<rowCount; i++) {
var row = table.rows[i];
var chkbox = row.cells[0].childNodes[0];
if(null != chkbox && true == chkbox.checked) {
if(rowCount <= 2) {
alert("Cannot delete all the rows.");
break;}
table.deleteRow(i);
rowCount--;
i--;}}}catch(e) {alert(e);}}
</SCRIPT>
</HEAD>
<BODY>
<INPUT type="button" value="Add Row" onClick="addRow('dataTable')" />
<INPUT type="button" value="Delete Row" onClick="deleteRow('dataTable')" />
<TABLE id="dataTable" width="350px" border="1">
<TR>
<TD width="32"></TD>
<TD width="119" align="center"><strong>Activity</strong></TD>
<TD width="177" align="center"><strong>Cost</strong></TD>
</TR>
<TR>
<TD><INPUT type="checkbox" name="chk"/></TD>
<TD>
<select name="s1" id="s1">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
</TD>
<TD><input type="text" name="txt1" id="txt1"></TD>
</TR>
</TABLE>
</BODY>
</HTML>Hi,
Let me make sure u r working with table control.
First u have to create a event(VALIDATE) to do the validation.
Inside the event,
1. First get the current index where user has pointed the curson
2. Once u get the index read the internal table with index value.
3. Now u can compare the col1 and col2 values and populate the error message.
1. DATA : lo_elt TYPE REF TO if_wd_context_element,
l_index type i.
lo_elt = wdevent->get_context_element( name = 'CONTEXT_ELEMENT' ).
CALL METHOD LO_ELT->GET_INDEX( RECEIVING MY_INDEX = l_index.
above code should be written inside the event.
Thanks, -
ADF Faces: How do I set values for input controls in an af:table
Use case: user enters master/detail information into an input form using an af:table for the desired number of detail rows.
I have an ADF Faces input form with master level input controls, and an af:table (bound to a backing bean CoreTable) for the detail data set.
The input controls are value bound to updateable view objects built from entity objects, with the appropriate view links providing master/detail iterators.
Once the user has entered the master keys (via inputTexts, and selectOneChoices), I create a row in the detail VO, thus creating a visible blank row in the af:table.
The user then completes the key for the detail row (in the af:table) by selecting a value in a selectOneChoice (in a af:column) with autoSubmit on and a valueChangeListener that sets the VO row attribute with the new value.
The user then continues to enter into the remaining inputTexts and selectOneChoices in the af:columns until all values have been entered.
I do not have autoSubmit on for any input controls in the af:columns other than the key, for performance improvement.
The user can then use a command button (which has an action method) to create another row in the af:table.
But, (in the action method) I need to set the values for the 1st detail VO row attributes, from the input controls, before creating another row.
The input controls are bound to backing bean CoreInputText and CoreSelectOneChoice objects, and they have not set their values at this point, even though I have partialSubmit on for the "New Row" command button.
I do not value bind the input controls in the af:columns to the backing bean objects, because we need to display data for all rows entered into the af:table.
Any advice on the best way to perform this operation would be very appreciated!!!!Thanks for the reply Steve!!
Yes, I followed the techniques in Screencast#7, and it works great in my edit page.
But I am having problems with my input form.
I actually have master/detail/detail relationship for which I am creating an input form.
I created the input form as a copy of the edit form, and am making revisions as necessary.
I created new view objects for the input form (from my three entity objects), which have the "Tuning" set to retrieve "No Rows (i.e. used only for inserting new rows)"
I added an invokeAction that binds the "CreateInsert" action on the master iterator, so when the page is first displayed, the master level controls are available for data entry (as in 13.6.2 in the Developers Guide): but the first level detail controls are not rendered, and the af:table (for the second level detail) is rendered but with no rows.
Once the user enters key values for the master (a three part key), I manually create a first level detail row by executing the "CreateInsert" action binding for the first level detail iterator.
Continuing on, the user then enters a key value for the first level detail I manually create a second level detail row using it's "CreateInsert" action binding.
Now the user has a form with all master and first level detail controls completed and one empty row in the af:table for it's first entry.
The key column in the af:table has autoSubmit on, and an value change listener. That listener uses it's getNewValue() to set the key value ("locationCode" in this case) using
setLocationCode from the ViewRowImpl. Here is that value change listener:
public void locationChanged(ValueChangeEvent event) {
if (null != event.getNewValue()) {
LocObsCreateViewRowImpl locCreateRow = (LocObsCreateViewRowImpl)appMod.findViewObject("LocObsCreateView").getCurrentRow();
if (null == locCreateRow.getLocationCode()) {
locCreateRow.setLocationCode(event.getNewValue().toString());
Now comes my problem: once they have entered the values in the remaining columns, they can use a command button to create another row in the 2nd detail iterator, thus creating another visible empty row in the af:table. But the values from the first row (other than the key column) are not assigned to the row in the collection and I can't figure out how to set values in the collection's row.
I imagine I'm missing something using bindings and the Request Processing Lifecycle, and after reading this I can see how much manual work is going on.
The users have specified the need to have all information available on one page, so I've designed it so they can insert and iterate through the first level detail collection.
They have also asked to not use the mouse; they are looking for a "heads-down-data-entry" system.
Again, I really appreciate any advice you could give.
Jeffrey -
How to control the rounding rule at answer?
Hi grus,
I use the BIEE 11.1.1.6.5.
And I create the 2 answers(A and B) with a same column which setting is same column formula and data format(Treat Numbers As "number", Decimal places "2") on column properties.
Then I run the answer A that the value is 3.68( this column's SQL value is 3.675, so this means rounding up the value)
But I run the answer B with same criteria that the value is 3.67(this means truncating the value)
Why do these difference happen?
How to control the rounding rule?
Best Regards,
TakashiHi,
When add the Itemcode, default warehouse and costing codes (Profit Center) are automatically asign by SAP.
When change the warehouse for this Itemcode, the costing codes(Profit Center) are disappear. I don't want to disappear the costing codes, that's why I try to resign the default costing codes when the warehouse change.
At SAP 2005, easily access the screen matrix in the marketing document and add the required values in each costing codes columns. But SAP 2007, all costing codes are combined in 1 col and those have the other screen.
Do you have any idea to control the costing codes?
Thanks and regards,
Lei Nandar Myint -
RUN_LOGIC:Accounts are not available in the rule table
Dear BPC gurus,
I experience the following error while trying to run a Business Rule (Account transformation). Setting are to change the flow dimension of an account and apply to YTD.
Script logic that is used is:
*RUN_PROGRAM CALC_ACCOUNT
CAT = %CAT_SET%
TID_RA = %AAL_TIME_SET%
*ENDRUN_PROGRAM
The following error occurs:
RUN_LOGIC:Accounts are not available in the rule table
Failed
Application: FORECAST Package status: ERROR
All input is welcom.
Thanks and regards,
VincentHi James,
Thanks for your quick response. There is no currency dimension in the application... I've tested with the correct businessrule as CALC value, but this didn't do the trick.
Any other suggestions?
Regards,
Vincent -
Business Rule error: Accounts are not available in the rule table
Hi everybody,
I have a problem running the Business Rule for the profit/loss copy to the equity account.
The Business Rule I set reads from all P&L accounts, P&L specific flow, acual category, all datasources and then it writes everything keeping the source settings apart from the account destination (the equity profit/loss account) and the flow destination (I write in two different flows, so the rule is made up of two equal lines differing only in the flow destination). "PROFIT" is the ID I chose.
Then I created the related script logic (ID=CALCACCOUNT):
*RUN_PROGRAM CALC_ACCOUNT
CATEGORY_M = %CATEGORY_M_SET%
CURRENCYLABEL = %CURRENCYLABEL_SET%
TID_RA = %TIME_SET%
CALC=PROFIT
*ENDRUN_PROGRAM
Finally, the prompt ( process chain: CPMB/RUNCALCACCOUNT):
PROMPT(SELECTINPUT,,,,"CATEGORY_M,CURRENCYLABEL,TIME")
TASK(/CPMB/RUNCALCACCOUNT_LOGIC,SUSER,%USER%)
TASK(/CPMB/RUNCALCACCOUNT_LOGIC,SAPPSET,%APPSET%)
TASK(/CPMB/RUNCALCACCOUNT_LOGIC,SAPP,%APP%)
TASK(/CPMB/RUNCALCACCOUNT_LOGIC,SELECTION,%SELECTION%)
TASK(/CPMB/RUNCALCACCOUNT_LOGIC,LOGICFILENAME,CALCACCOUNT.LGF)
But anytime I run the package it fails giving me the message error: "Accounts are not available in the rule table".
I tried every possible change but nothing; if someone could help me somehow I'd be really grateful!!
Thanks
FilippoHi James,
Thanks for your quick response. There is no currency dimension in the application... I've tested with the correct businessrule as CALC value, but this didn't do the trick.
Any other suggestions?
Regards,
Vincent -
Change documents for a Z table
Hi,
We have a Ztable with 4 fields, Due to some business reasons.. . We have given access to users for changing the contents of the table. Now For audit purpose Customer wants to track the changes made to the table. I came know that this can be achieved by using the change documents concept. I am little confused in using this concept. After clicking on the generate update program, system will ask us to give an include name and functiona group. After giving these two system will create include object as <change document object>_write_document. This Include inturn calls some more includes like F<K4>CDC,F<K4>CDT,F<K4>CDF,F<K4>CDV.
Here my questions are
1. Wher do we need to write our owncoding for capturing the changes?
2. is it possible to share the sample code starting from the First Include <changedocument>_Write_Document to ending.
3. Does this change document functionality will be called automoatically when we use Transaction SM30(Table maintainance) for changing the contents of the tables?
4. What is the difference between single case and Multiple case. My scenario falls into single/Multiple?
Awaiiting for all the expert responses
Thanks and Best Regards
Jagadeesh AmbatiHi Srinivas,
you can activate in DDIC that your entry changes will be logged.
Go to SE11 -> Your Tablenname -> CHANGE
Button TechnicalSettings -> Activate checkbox Log data changes.
From now on any chenge will be logged in table DBTABLOG.
Kind Regards
Henner -
Hi everyone,
Can anyone tell me if i activate table logging on a table (not customizing table) like MARC table, what information is saved in the system?.
Can I check or know, previous the audit log activation over this table, what fields or what information is recorded?
thanks,
HEPCThis is table logging for customizing type entries in not necessarily what you are looking for.
For master data you need to use the application change documents (table CDHDR etc) which is a different concept (I would use that route and protect the object S_ARCHIVE).
What you are actually looking for (and waiting for) is [the package concept at runtime|http://forums.sdn.sap.com/click.jspa?searchID=58483939&messageID=4675719] which developers can already see as warnings. It also means that the package which the table is assigned to must have a complete set of APIs.
I would personally not look for workarounds with performance impacts, but rather clean up the code to make it package concept conform, and then use the application change documents and not the table change records.
This is a better design - more sustainable, less hassles and auditable (via where-used-lists).
My 2 cents,
Julius
Maybe you are looking for
-
All possible combinations of 23 columns in a table.
Hi, We have a table as follows; CREATE TABLE ALL_PROD_COMB_TMP HDLM_ID NUMBER(10), MULTIPATH_ID NUMBER(10), TRUE_COPY_ID NUMBER(10), UVM_ID NUMBER(10), TUNING_ID NUMBER(10), CLUSTER_ID NUMBER(10), MIDDLEWARE_ID NUMBER(10), TAPE_ID NUMBER(10), THIRD_P
-
Exit bottom from an interactive PDF document
Hello Do anyone know how to end/exit an interactive PDF document made in Indesign 6? B.r. Ole
-
Hi My screen consists of the fields from date and to date,after entering the dates one PDF should open consisting of data in between the dates. How can i retrive the PDF,or please tell me the code needed. I am new in webdynpro,please giv
-
Hi Experts, In SXI_CACHE, under the <b>Status of XI Runtime Cache</b> both shows the error status. How to solve this issue? Regards Sara
-
Applet : Why Weblogic RMI is so huge ???
Hi, I'm using Weblogic RMI in an applet, and the applet startup time is unacceptable. In order to find out what files are actually needed by the applet , instead of using a JAR file, I uncompressed weblogic.jar and looked at my web server log file as