New ABAP Program to check Direct UPDATE in Database Table
Hi all,
As per customer requirement , I have to develop ONE Program which find out that in which ABAP Program , Programmer has used Open Sql command like UPDATE , DELETE , INSERT , MODIFY to direct update in Database Table.
Have a look on all Z-ABAPs, find out if there are statements with "update", "delete", "insert" or "modify" in the coding, then find out if updates to sap-Tables are done
How can I achived that ?
Please , If anybody is having idea , than please let me know..
Thanks You ,
Hi
Kindly refer to the below link. This has step by step how you can achieve the checks.
[http://www.sdn.sap.com/irj/scn/index?rid=/library/uuid/12659a90-0201-0010-c18b-9d014f9bed0d]
But if you want to check if any program they have used 'UPDATE' then you can do like below.
Go to SE38
Utilities---> Find in Source Code-
Find --- UPDATE
In program - Z* or ZX* if you want to search only in Exits
Regards,
Vijay V .
Similar Messages
-
Remove direct update of database table for VBUk and VBRK
hello,
we are updating database table only for thse two single fields VBRK-FKDAT_RL and VBUK-RELIK using direct UPDATE statements.
Could you please suggest some function modules or BAPI ?
BDC is not possible as some fields are not editable.
Awaiting your responses.
I have tried RV_INVOICE_DOCUMENT_READ, RV_INVOICE_DOCUMENT_UPDATE, RV_INVOICE_DOCUMENT_ADD.The fields aren't editable for a reason. If you explain the reason for the requirement and what is the trigger for changing the values, you might get a better response. Why isn't this handled via configuration for instance?
-
my usual practice in creating new abap program is in se80 then type the desired program name then the sap will display that the program name is not existing and will ask if i want to create it.
however in my new company when i do the above step it just display that the program is not existing and no question if i will create this. in line with this i would like to ask how would i create new abap program?
thanks.
donnaHi Donna,
Do you have the relevant authorisations? Maybe you donot have authorisation to create new objects? Check your profiles via SU01. Personally I always ask for SAP_ALL and SAP_NEW in the Development system.
Cheers,
Pat. -
Abap programe 'AUTHORIZATION-CHECK'
What is abap programe 'AUTHORIZATION-CHECK' how can i navigate there
Hi,
You can navigate to the Code this way
1)
SE93> Display>Double click in the Entry corresponding to Program-->then you enter the Source Code here select find and give the search string as
"Authority-Check" this displays you whatever entries are there in the code.
This method is useful if you know the Tcode and want to see what check statemetns are there in ABAP code corresponding to it.
2)On the other hand if you know the program then go to
SE38> enter the program name> Select Source Code> Press Display>
and from there search with the string mentioned above justlike the case mentioned above...
Hope this helps
Regards,
Manohar -
ABAP programming extended Check
Hi
Why do we do ABAP program Extended Check?
Thank Youit is necessary for Complete check of the ABAP source text for all statically recognizable errors.Programs with errors in the extended program check can be executed, but usually result in an exceeption.
http://help.sap.com/saphelp_nw2004s/helpdata/en/d1/801afd454211d189710000e8322d00/content.htm
Error situation during execution of an ABAP program. Exceptions are treatable (statements TRY, CATCH) or untreatable.
Untreated exceptions result in a runtime error. An exception is triggered either by the ABAP runtime environment due to error situations that are not foreseeable by the static program check, or by the RAISE EXCEPTION statement. -
ABAP Program to delete the update rules
Hi guys,
Is there any ABAP Program to delete the update rules if any body knows.Hi dear,
try with FM RSAU_UPDR_DELETE...
Hope it helps!
Bye,
Roberto
...and please dont forget to reward the answers...it-s THE way to say thanks here ! -
Can we do a direct update on fnd_concurrent_programs table
Hi Team,
Can anyone help me out with this.
i have a requirement where i need to set the print_flag ='N' for all the Concurrent Programs whose Printer flag is "Y".
for this , Can i use a direct update statement or is there any standard API to update the column in the table fnd_concurrent_programs.
my update statement :
Update fnd_concurrent_programs set print_flag ='N' where print_flag='Y';
Can i go ahead with above sql statement for an update or do i need to use any api.
at the same time just want to check, can i do an direct update on fnd_concurrent_requests table too ?
Can anyone help me out on this.Can i go ahead with above sql statement for an update or do i need to use any api.
at the same time just want to check, can i do an direct update on fnd_concurrent_requests table too ?
Yes you can, for both tables.
Here are few examples:
For FND_CONCURRENT_PROGRAMS:
(Doc ID 419432.1)
(Doc ID 427963.1)
(Doc ID 837615.1)
For FND_CONCURRENT_REQUESTS, see (Doc ID 134007.1).
Thanks,
Hussein -
Runtime error:ABAP program lines are longer than the internal table
Hi all,
Below is the code I have written,when Iam running it Iam getting
'ABAP program lines are longer than the internal table' runtime error.How can I resolve it.
REPORT ZTEST1 NO STANDARD PAGE HEADING LINE-SIZE 255.
TABLES:MARC,CDHDR,CDPOS.
TYPE-POOLS:SLIS.
DATA:HEADER TYPE SLIS_T_FIELDCAT_ALV,
WA TYPE SLIS_FIELDCAT_ALV,
LAYOUT TYPE SLIS_LAYOUT_ALV.
TYPES:BEGIN OF MARC_TY,
MATNR LIKE MARC-MATNR,
WERKS LIKE MARC-WERKS,
EKGRP LIKE MARC-EKGRP,
MINBE LIKE MARC-MINBE,
EISBE LIKE MARC-EISBE,
MABST LIKE MARC-MABST,
END OF MARC_TY.
TYPES:BEGIN OF MATNR1_TY,
MATNR1 LIKE CDHDR-OBJECTID,
END OF MATNR1_TY.
TYPES:BEGIN OF CDHDR_TY,
OBJECTCLAS LIKE CDHDR-OBJECTCLAS,
OBJECTID LIKE CDHDR-OBJECTID,
CHANGENR LIKE CDHDR-CHANGENR,
USERNAME LIKE CDHDR-USERNAME,
UDATE LIKE CDHDR-UDATE,
END OF CDHDR_TY.
TYPES:BEGIN OF CDPOS_TY,
OBJECTCLAS LIKE CDPOS-OBJECTCLAS,
OBJECTID LIKE CDPOS-OBJECTID,
CHANGENR LIKE CDPOS-CHANGENR,
TABNAME LIKE CDPOS-TABNAME,
FNAME LIKE CDPOS-FNAME,
CHNGIND LIKE CDPOS-CHNGIND,
VALUE_NEW LIKE CDPOS-VALUE_NEW,
VALUE_OLD LIKE CDPOS-VALUE_OLD,
END OF CDPOS_TY.
**************TABLE TYPES********************************************
TYPES: MARC_TAB TYPE TABLE OF MARC_TY,
MATNR1_TAB TYPE TABLE OF MATNR1_TY,
CDHDR_TAB TYPE TABLE OF CDHDR_TY,
CDPOS_TAB TYPE TABLE OF CDPOS_TY.
*******************INTERNAL TABLES************************************
DATA:MARC_ITAB TYPE MARC_TAB,
MATNR1_ITAB TYPE MATNR1_TAB,
CDHDR_ITAB TYPE CDHDR_TAB,
CDPOS_ITAB TYPE CDPOS_TAB.
****************WORK AREAS********************************************
DATA:MARC_WA TYPE MARC_TY,
MATNR1_WA TYPE MATNR1_TY,
CDHDR_WA TYPE CDHDR_TY,
CDPOS_WA TYPE CDPOS_TY.
*******************SELECTION-SCREEN***********************************
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-000.
PARAMETERS:PLANT LIKE MARC-WERKS.
SELECT-OPTIONS:MATERIAL FOR MARC-MATNR.
SELECT-OPTIONS:DATE FOR CDHDR-UDATE.
SELECTION-SCREEN END OF BLOCK B1.
START-OF-SELECTION.
SELECT MATNR
WERKS
EKGRP
MINBE
EISBE
MABST
FROM MARC INTO TABLE MARC_ITAB
WHERE MATNR IN MATERIAL
AND WERKS = PLANT.
CHECK MARC_ITAB[] IS NOT INITIAL.
LOOP AT MARC_ITAB INTO MARC_WA.
MATNR1_WA-MATNR1 = MARC_WA-MATNR.
APPEND MATNR1_WA TO MATNR1_ITAB.
CLEAR MATNR1_WA.
ENDLOOP.
CHECK MATNR1_ITAB[] IS NOT INITIAL.
SELECT OBJECTCLAS
OBJECTID
CHANGENR
USERNAME
UDATE
FROM CDHDR INTO TABLE CDHDR_ITAB
FOR ALL ENTRIES IN MATNR1_ITAB
WHERE OBJECTCLAS = 'MATERIAL'
AND OBJECTID = MATNR1_ITAB-MATNR1
AND UDATE IN DATE.
CHECK CDHDR_ITAB[] IS NOT INITIAL.
SORT CDHDR_ITAB[] DESCENDING BY OBJECTID CHANGENR.
DELETE ADJACENT DUPLICATES FROM CDHDR_ITAB[] COMPARING OBJECTID.
SELECT OBJECTCLAS
OBJECTID
CHANGENR
TABNAME
FNAME
CHNGIND
VALUE_NEW
VALUE_OLD
FROM CDPOS INTO CORRESPONDING FIELDS OF TABLE CDPOS_ITAB
FOR ALL ENTRIES IN CDHDR_ITAB
WHERE OBJECTCLAS = CDHDR_ITAB-OBJECTCLAS
AND OBJECTID = CDHDR_ITAB-OBJECTID
AND CHANGENR = CDHDR_ITAB-CHANGENR
AND TABNAME = 'MARC'
AND FNAME IN ('MINBE','EISBE','MABST','LVORM')
AND CHNGIND = 'U'.
CHECK CDPOS_ITAB[] IS NOT INITIAL.
*LOOP AT CDPOS_ITAB INTO CDPOS_WA.
WRITE: / CDPOS_WA-OBJECTCLAS,
CDPOS_WA-OBJECTID,
CDPOS_WA-CHANGENR,
CDPOS_WA-TABNAME,
CDPOS_WA-FNAME,
CDPOS_WA-CHNGIND,
CDPOS_WA-VALUE_NEW,
CDPOS_WA-VALUE_OLD.
*ENDLOOP.
WA-SELTEXT_L = 'OBJECTCLAS'.
WA-COL_POS = '1'.
WA-FIELDNAME = 'OBJECTCLAS'.
WA-TABNAME = 'CDPOS_ITAB'.
WA-OUTPUTLEN = '15'.
APPEND WA TO HEADER.
CLEAR WA.
WA-SELTEXT_L = 'OBJECTID'.
WA-COL_POS = '2'.
WA-FIELDNAME = 'OBJECTID'.
WA-TABNAME = 'CDPOS_ITAB'.
WA-OUTPUTLEN = '20'.
APPEND WA TO HEADER.
CLEAR WA.
WA-SELTEXT_L = 'CHANGENR'.
WA-COL_POS = '3'.
WA-FIELDNAME = 'CHANGENR'.
WA-TABNAME = 'CDPOS_ITAB'.
WA-OUTPUTLEN = '8'.
APPEND WA TO HEADER.
CLEAR WA.
WA-SELTEXT_L = 'TABNAME'.
WA-COL_POS = '4'.
WA-FIELDNAME = 'TABNAME'.
WA-TABNAME = 'CDPOS_ITAB'.
WA-OUTPUTLEN = '5'.
APPEND WA TO HEADER.
CLEAR WA.
WA-SELTEXT_L = 'FNAME'.
WA-COL_POS = '5'.
WA-FIELDNAME = 'FNAME'.
WA-TABNAME = 'CDPOS_ITAB'.
WA-OUTPUTLEN = '7'.
APPEND WA TO HEADER.
CLEAR WA.
WA-SELTEXT_L = 'CHANGING'.
WA-COL_POS = '6'.
WA-FIELDNAME = 'CHANGING'.
WA-TABNAME = 'CDPOS_ITAB'.
WA-OUTPUTLEN = '1'.
APPEND WA TO HEADER.
CLEAR WA.
WA-SELTEXT_L = 'VALUE_NEW'.
WA-COL_POS = '7'.
WA-FIELDNAME = 'VALUE_NEW'.
WA-TABNAME = 'CDPOS_ITAB'.
WA-OUTPUTLEN = '5'.
APPEND WA TO HEADER.
CLEAR WA.
WA-SELTEXT_L = 'VALUE_OLD'.
WA-COL_POS = '8'.
WA-FIELDNAME = 'VALUE_OLD'.
WA-TABNAME = 'CDPOS_ITAB'.
WA-OUTPUTLEN = '5'.
APPEND WA TO HEADER.
CLEAR WA.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = SY-REPID
I_INTERNAL_TABNAME = 'CDPOS_ITAB'
I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = SY-REPID
CHANGING
CT_FIELDCAT = HEADER[]
EXCEPTIONS
IF SY-SUBRC <> 0.
ENDIF.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
IT_FIELDCAT = HEADER[]
TABLES
T_OUTTAB = CDPOS_ITAB[]
IF SY-SUBRC <> 0.
ENDIF.Your select querry on MARC is not matching with MARC_TY.
The field in the MARC table and MARC_TY should be same.
and also, when you are making select querry on CDPOS table
with all entries.
When ever you are using all entries select statement, you should check whether the internal table is having value.
you should check
if CDPOS_IT[] is not initial.
SELECT OBJECTCLAS
OBJECTID
CHANGENR
TABNAME
FNAME
CHNGIND
VALUE_NEW
VALUE_OLD
FROM CDPOS INTO CORRESPONDING FIELDS OF TABLE CDPOS_ITAB
FOR ALL ENTRIES IN CDHDR_ITAB
WHERE OBJECTCLAS = CDHDR_ITAB-OBJECTCLAS
AND OBJECTID = CDHDR_ITAB-OBJECTID
AND CHANGENR = CDHDR_ITAB-CHANGENR
AND TABNAME = 'MARC'
AND FNAME IN ('MINBE','EISBE','MABST','LVORM')
AND CHNGIND = 'U'.
endif.
Regards
Madhan D -
Update the database table inside an user exit.
Hi Experts,
I have a issue where i have to update a custom table in an User exit.
I am using Lock object for ENQUE/DEQUE.
I have tried to use statements like UPDATE/MODIFY inside the user exit.
But the problem is that it's not updating the database table at the same time.
I know if i use COMMIT WORK it can update at the same time but it's not advisable to use COMMIT inside a work.and also it gives a short dump.
The real issue is that this custom table is read for batch creation at the same time for different users.
Now if it the program does not update the database table at the same time then other users also read the same data and create the same Batch number..
While requirement is to create a different/unique batch numbers.
Program is updating the table but it's taking time..so in between other users are creating the same batch number.
Please guide me what would be the best solution for this.
Regards,
Amit Kumar SinghThanks for your quick reply.
My actually requirement is like that.
I have to create a Process Order using tcode COR1.
After passing some input value it goes inside an User Exit.
There one Custom table is maintained which stores some fields like month,year,numeric key field,etc.
The new batch number is created using the combination of these table fields.
Once a new batch number is created it increment the numeric key field number by one.
Issue is we have to update this new numeric field value into the database field so that other users can read a diffrent numeric field value.hence it will create a new/different batch number.
Here i am not able to update the database table inside this User Exit.
Table is geeting updated but after some time and out of this User Exit.
Please suggest what's required in that case?
Regards,
Amit Kumar Singh
Edited by: Amit Singh on Feb 3, 2009 11:33 AM -
Regarding updating of database table..
Halo All,
I have actually done the program successfully for updating the database table QMFE some days back, now we needed to update some more records and i have just changed the path of the text files but the problem is that all the values are being uploaded but the update statement is not executing successfully
I have also tried to debug the program and saw that the sy-subrc value is 4 instead of 0.
I am pasting my code here.
Please solve this asap.
*& Report Y_UPDATE_QMFE_01 *
*& Program Y_UPDATE_QMFE_01 *
*& Author RAMA KRISHNA BASA *
*& Date 02-04-2007 *
*& Description REPORT FOR Update of Table QMFE *
*& Includes *
*& Tables QMFE *
*& Program Maintenance History *
*& Date Author Change Request Number SAP Release *
*& 02-04-2007 BASA EF7K919575 6.10 *
REPORT Y_UPDATE_QMFE .
Tables: qmfe.
data: begin of gt1_qmfe occurs 0,
qmnum like qmfe-qmnum,
fenum like qmfe-fenum,
/itml/usr20 like qmfe-/itml/usr20,
end of gt1_qmfe.
data: begin of gt2_qmfe occurs 0,
qmnum like qmfe-qmnum,
fenum like qmfe-fenum,
/itml/usr21 like qmfe-/itml/usr21,
end of gt2_qmfe.
data: begin of gt3_qmfe occurs 0,
qmnum like qmfe-qmnum,
fenum like qmfe-fenum,
/itml/usr19 like qmfe-/itml/usr19,
end of gt3_qmfe.
data: begin of gt4_qmfe occurs 0,
qmnum like qmfe-qmnum,
fenum like qmfe-fenum,
/itml/usr07 like qmfe-/itml/usr07,
end of gt4_qmfe.
data: gs1_qmfe like line of gt1_qmfe,
gs2_qmfe like line of gt2_qmfe,
gs3_qmfe like line of gt3_qmfe,
gs4_qmfe like line of gt4_qmfe.
data: ls_lines1 type i,
ls_lines2 type i,
ls_lines3 type i,
ls_lines4 type i.
parameters: ip_file1 type RLGRAP-FILENAME default 'C:\Urgent\New\Text Files\StoDt.txt' obligatory, " usr20
ip_file2 type RLGRAP-FILENAME default 'C:\Urgent\New\Text Files\RcDtCust.txt' obligatory, " usr21
ip_file3 type RLGRAP-FILENAME default 'C:\Urgent\New\Text Files\DockDate.txt' obligatory, " usr19
ip_file4 type RLGRAP-FILENAME default 'C:\Urgent\New\Text Files\AWB.txt' obligatory. " usr07
field-symbols: <fs1> like gs1_qmfe,
<fs2> like gs2_qmfe,
<fs3> like gs3_qmfe,
<fs4> like gs4_qmfe.
perform upload_gt1_qmfe.
perform upload_gt2_qmfe.
perform upload_gt3_qmfe.
perform upload_gt4_qmfe.
perform update_qmfe.
*& Form upload_gt1_qmfe
text
--> p1 text
<-- p2 text
FORM upload_gt1_qmfe .
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
FILENAME = ip_file1
FILETYPE = 'DAT'
TABLES
DATA_TAB = gt1_qmfe.
describe table gt1_qmfe lines ls_lines1.
write: / ls_lines1.
ENDFORM. " upload_gt1_qmfe
*& Form upload_gt2_qmfe
text
--> p1 text
<-- p2 text
FORM upload_gt2_qmfe .
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
FILENAME = ip_file2
FILETYPE = 'DAT'
TABLES
DATA_TAB = gt2_qmfe.
describe table gt2_qmfe lines ls_lines2.
write: / ls_lines2.
ENDFORM. " upload_gt2_qmfe
*& Form upload_gt3_qmfe
text
--> p1 text
<-- p2 text
FORM upload_gt3_qmfe .
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
FILENAME = ip_file3
FILETYPE = 'DAT'
TABLES
DATA_TAB = gt3_qmfe.
describe table gt3_qmfe lines ls_lines3.
write: / ls_lines3.
ENDFORM. " upload_gt3_qmfe
*& Form upload_gt4_qmfe
text
--> p1 text
<-- p2 text
FORM upload_gt4_qmfe .
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
FILENAME = ip_file4
FILETYPE = 'DAT'
TABLES
DATA_TAB = gt4_qmfe.
describe table gt4_qmfe lines ls_lines4.
write: / ls_lines4.
ENDFORM. " upload_gt4_qmfe
*& Form update_qmfe
text
--> p1 text
<-- p2 text
FORM update_qmfe .
data: ls_cnt1 type i,
ls_cnt2 type i,
ls_cnt3 type i,
ls_cnt4 type i.
*refresh gt1_qmfe.
*clear gt1_qmfe.
loop at gt1_qmfe assigning <fs1> .
*concatenate <fs1>-/itml/usr206(2) '.' <fs1>-/itml/usr204(2) '.' <fs1>-/itml/usr20+2(2) into <fs1>-/itml/usr20.
data wa_qmfe type qmfe.
*select single * from qmfe into wa_qmfe where qmnum = <fs1>-qmnum
and fenum = <fs1>-fenum.
*wa_qmfe-/itml/usr20 = <fs1>-/itml/usr20.
update QMFE set /itml/usr20 = <fs1>-/itml/usr20
where qmnum = <fs1>-qmnum
and fenum = <fs1>-fenum.
*modify qmfe from wa_qmfe.
if sy-subrc = 0.
commit work.
add 1 to ls_cnt1.
endif.
endloop.
write: / ls_cnt1.
*refresh gt2_qmfe.
*clear gt2_qmfe.
loop at gt2_qmfe assigning <fs2>.
*concatenate <fs2>-/itml/usr216(2) '.' <fs2>-/itml/usr214(2) '.' <fs2>-/itml/usr21+2(2) into <fs2>-/itml/usr21.
update qmfe set /itml/usr21 = <fs2>-/itml/usr21
where qmnum = <fs2>-qmnum
and fenum = <fs2>-fenum.
if sy-subrc = 0.
commit work.
add 1 to ls_cnt2.
endif.
endloop.
write: / ls_cnt2.
*refresh gt3_qmfe.
*clear gt3_qmfe.
loop at gt3_qmfe assigning <fs3>.
*concatenate <fs3>-/itml/usr196(2) '.' <fs3>-/itml/usr194(2) '.' <fs3>-/itml/usr19+2(2) into <fs3>-/itml/usr19.
update qmfe set /itml/usr19 = <fs3>-/itml/usr19
where qmnum = <fs3>-qmnum
and fenum = <fs3>-fenum.
if sy-subrc = 0.
commit work.
add 1 to ls_cnt3.
endif.
endloop.
*top_of_page.
write: / ls_cnt3.
*refresh gt4_qmfe.
*clear gt4_qmfe.
loop at gt4_qmfe assigning <fs4>.
update qmfe set /itml/usr07 = <fs4>-/itml/usr07
where qmnum = <fs4>-qmnum
and fenum = <fs4>-fenum.
if sy-subrc = 0.
commit work.
add 1 to ls_cnt4.
endif.
endloop.
write: / ls_cnt4.
ENDFORM. " update_qmfe
Thanks in advance,
rama.Hi,
Thanks for the reply..
But last time the update was successfull and the program was transported onto the productive system
after that now i need to update the new records into QMFE
so what i did is just changed the path of the text files since they are of same format as of the old text files.
Does it have any problems.
How can i do that using what u have suggested......
i need to update the database table QMFE
is there any bapi to update the data base table -
Update a database table column via EO
Hi,
I want to update a database table column via EO, but somehow the table column is not updated. Could you help if I miss anything?
Here is my code:
View SQL:
select
,GoalSheetHeaderEO.srp_goal_header_id
,XL.MEANING
,GoalSheetHeaderEO.status_code
,GoalSheetHeaderEO.start_date GS_START_DATE
,GoalSheetHeaderEO.end_date GS_END_DATE
,GoalSheetHeaderEO.PERIOD_YEAR
,GoalSheetHeaderEO.LAST_UPDATED_BY
,GoalSheetHeaderEO.LAST_UPDATE_DATE
,GoalSheetHeaderEO.LAST_UPDATE_LOGIN
,'N' CHECKED
from
xxg2c_srp_goal_headers_all GoalSheetHeaderEO
,cn_comp_plans_all comp
,jtf_rs_salesreps rs
,jtf_rs_resource_extns rse
,xxg2c_lookups xl
,shr_strct_nodes nod
,g2c_goal_shr_emp_assignments_v emp
CO:
if (pageContext.getParameter("Update") != null){
am.invokeMethod("updateGoalSheet");
AM:
public void deleteGoalSheet(){
OAViewObject vo = (OAViewObject)getGoalSheetResultGAVO1();
GoalSheetResultGAVORowImpl row = (GoalSheetResultGAVORowImpl) vo.first();
while (row != null)
if (selectFlag != null)
if (selectFlag .equals("Y"))
//row.setAttribute("GsStatusCode",Constants.GOAL_SHEET_STATUS_CODE_DEL);
row.setStatusCode(Constants.GOAL_SHEET_STATUS_CODE_DEL);
row = (GoalSheetResultGAVORowImpl) vo.next();
getTransaction().commit();
EO:
public void setStatusCode(String value) {
if (value.equals(Constants.GOAL_SHEET_STATUS_CODE_DEL)){
String currentStatus = getStatusCode();
if(!(currentStatus.equals(Constants.GOAL_SHEET_STATUS_CODE_INPROG)
||currentStatus.equals(Constants.GOAL_SHEET_STATUS_CODE_RDYAUD))){
throw new OAAttrValException(OAException.TYP_ENTITY_OBJECT,
getEntityDef().getFullName(),
getPrimaryKey(),
"StatusCode",
value,
"xxg2c goaling",
"DEBUG -- need message name"
setAttributeInternal(STATUSCODE, value);
thanks
LeiHi Vikram,
It is just a type error. The delete is a soft delete to change the status to 'DEL'.
And also the view object is hybrid view object.
Complete View Object SQL:
select
nod.node_id
,nod.version_id
,emp.status_name
,rs.SALESREP_ID
,rse.source_name
,rse.source_email SRP_EMAIL_ID
,rse.source_number SRP_EMPLOYEE_NUMBER
,comp.name
,GoalSheetHeaderEO.srp_goal_header_id
,XL.MEANING
,GoalSheetHeaderEO.status_code
,GoalSheetHeaderEO.start_date GS_START_DATE
,GoalSheetHeaderEO.end_date GS_END_DATE
,GoalSheetHeaderEO.PERIOD_YEAR
,GoalSheetHeaderEO.LAST_UPDATED_BY
,GoalSheetHeaderEO.LAST_UPDATE_DATE
,GoalSheetHeaderEO.LAST_UPDATE_LOGIN
,DECODE(GoalSheetHeaderEO.PERIOD_YEAR,(SELECT PERIOD_YEAR FROM GL_PERIODS WHERE PERIOD_SET_NAME = 'Fiscal Year' AND SYSDATE BETWEEN YEAR_START_DATE AND END_DATE),DECODE(GoalSheetHeaderEO.STATUS_CODE,'AUTH','copy_enabled','copy_disabled'),'copy_disabled') COPY_FLAG
,DECODE(GoalSheetHeaderEO.SRP_GOAL_HEADER_ID,null,'create_enabled',DECODE(GoalSheetHeaderEO.status_code,'AUTH','create_enabled','create_disabled')) CREATE_FLAG
,'N' CHECKED
from
xxg2c_srp_goal_headers_all GoalSheetHeaderEO
,cn_comp_plans_all comp
,jtf_rs_salesreps rs
,jtf_rs_resource_extns rse
,xxg2c_lookups xl
,shr_strct_nodes nod
,g2c_goal_shr_emp_assignments_v emp
public void updateGoalSheet(){
OAViewObject vo = (OAViewObject)getGoalSheetResultGAVO1();
GoalSheetResultGAVORowImpl row = (GoalSheetResultGAVORowImpl) vo.first();
while (row != null)
if (selectFlag != null)
if (selectFlag .equals("Y"))
//row.setAttribute("GsStatusCode",Constants.GOAL_SHEET_STATUS_CODE_DEL);
row.setStatusCode(Constants.GOAL_SHEET_STATUS_CODE_DEL);
row = (GoalSheetResultGAVORowImpl) vo.next();
getTransaction().commit();
thanks for the help.
Lei -
Update a database table "j_2iaccbal"
Hi experts,
I want to update a database table " J_2IACCBAL" .The reason is,
In this table one field value is wrongly entered (field name is OP_BAL ) for the month of april 2010.
how to update this value (through update statement not possible) .I know through BAPI it is possible.
But i don't the BAPI concept .pls give me the syntax (if possible sdn link).
pls help me in this .I am a basic abaper.Hi Ram,
You should always avoid updating any database table with direct select statement. This is very important from the SAP Transactional Concept. Let this updating, deleting and inserting of data be handled by the database layer. Also, the database interaction is handled by the Update Modules.
The BAPI Concept of SAP - Have a look at the following link - [SAP BAPI|http://help.sap.com/saphelp_bw/helpdata/en/a5/3ec8464ac011d1894e0000e829fbbd/content.htm]
The BAPI's are function modules which can also be used inside SAP System. They are created specially created to handle all the database transactional concepts.You can search for the Function Modules in the system using the where used list.
Hope this will help you.
Thanks,
Samantak. -
Change the data in fieldcat and update the database table in alv oops
Hi,
my requirement is i have displayed a fieldcat in change mode and when i change the data and click on save it has to be updated the database table..
this has to be done using alv oops...Hi,
This code will reflect all the changes into the internal table that is being displayed.
* to reflect the data changed into internal table
DATA : ref_grid TYPE REF TO cl_gui_alv_grid. "new
IF ref_grid IS INITIAL.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = ref_grid.
ENDIF.
IF NOT ref_grid IS INITIAL.
CALL METHOD ref_grid->check_changed_data.
ENDIF.
Now after this code is executed the internal table is modified as per the changes done in alv output.
Now you can use this internal table to update the database table.
Hope this helps you.
Regards,
Tarun -
Hi All,
i need to do direct update to the database table and the table has apprx 60,000 records . i am getting all records from database table to internal table and has to chnage the one of the field value and pass it to the database table . So i am looping the internal table and what is the best approach to update the database table is it to use UPDATE Pa0001 SET KOSTL = it_0001-KOSTL from table it_0001 each time in the loop to update each record and commit work which hits database for each record or use the statement UPDATE pa0001 from table it_0001 and if count = 1000 then COMMIT work in this way it will hit the database for every 1000 records . Appreciate your suggestions,
Thanks,
Latha.My Code to update PA0006 is :
DATA: t_pa0006 TYPE STANDARD TABLE OF pa0006 INITIAL SIZE 0,
wa_pa0006 LIKE LINE OF t_pa0006,
w_lin TYPE i.
FIELD-SYMBOLS: <fs_pa0006> LIKE LINE OF t_pa0006.
SELECT * FROM pa0006 INTO TABLE t_pa0006 WHERE uname = 'PKHAROR'.
LOOP AT t_pa0006 ASSIGNING <fs_pa0006>.
<fs_pa0006>-stras = 'My Street'.
ENDLOOP.
DESCRIBE TABLE t_pa0006 LINES w_lin.
UPDATE pa0006 FROM TABLE t_pa0006.
IF sy-subrc EQ 0.
COMMIT WORK.
WRITE:/ w_lin, ' Records have been updated..'.
ENDIF.
Reward points for useful answers
Regards
Pradeep
Regards
Pradeep -
Field value is getting double while updating the database table
Hi Experts,
A simple doubt :
there is a standard program through which a zfunction module is getting triggered, through this zfunction module i am updating the database table.
Now what happening is one of the field(KCQTY) value in database is getting double at a time when i am executing the Program with same variant only.
I have also done the CLEAR & REFRESH internal tables starting of the Function module.
Can you please help me out.
Max points wil be awarded.
thanks
rico.Hi Nicole,
this is the part of the coding where you can see how the field KCQTY is getting moved in the loop statement.
DELETE IT_CE20002B_815 WHERE
KONDA = SPACE OR
WERKS = SPACE OR
VVB01001 < 0.
LOOP AT IT_CE20002B_815.
INDX = SY-TABIX.
CONCATENATE IT_CE20002B_815-PERBL0(4) IT_CE20002B_815-PERBL5(2)
INTO MONAT.
MOVE itab_ce20001b-perbl TO monat.
CLEAR S815.
READ TABLE IT_ZPL_MCS5 WITH KEY KONDA = IT_CE20002B_815-KONDA
BINARY SEARCH.
SELECT SINGLE * FROM S815 WHERE VRSIO = '000'
AND SPMON = MONAT
AND KONOB = 'APO'
AND MVGR2 = IT_CE20002B_815-KONDA
AND PRODH = IT_CE20002B_815-PRDHA
AND WERKS = IT_CE20002B_815-WERKS.
AND VTWEG EQ CO_VTWEG_99.
BREAK SAMEE.
IF SY-SUBRC EQ 0.
Eintrag in S810 existiert
IF S815-AEMENGE <= IT_CE20002B_815-VVB01001.
wenn die Auftragseingangsmenge kleiner gleich der Kontingentsmenge
wird die Kontingentmenge in das Steploop übernommen
MOVE IT_CE20002B_815-VVB01001 TO W_T_DATA_815-KCQTY.
*Liste ausgeben
PERFORM AUSGABE4.
PERFORM AUSGABE4_815.
ELSE.
Ausgabe Fehlermeldung, wenn die Auftragsmenge größer als die
Kontingentmenge ist.
*Liste mit fehlermeldungen ausgeben, Kontingent trotzdem übernehmen
MOVE IT_CE20002B_815-VVB01001 TO W_T_DATA_815-KCQTY.
PERFORM AUSGABE_FEHLER4.
PERFORM AUSGABE_FEHLER4_815.
delete it_ce20002b index indx.
continue.
ENDIF.
ELSE.
Es existiert kein Eintrag in S810, dann direkt eingeben
MOVE IT_CE20002B_815-VVB01001 TO W_T_DATA_815-KCQTY.
MODIFY IT_CE20002B_815 INDEX INDX.
*Liste ausgeben (Kein Eintrag in S810)
PERFORM EINTRAG2.
PERFORM EINTRAG2_815.
ENDIF.
*Übergabestructur für die Weiterverarbeitung durch das Copymanagement
*im Functionsbaustein wird gefüllt.
W_T_DATA_815-SPMON = MONAT. "itab_ce20001a-perbl.
W_T_DATA_815-KONOB = CO_KONOB_APO.
READ TABLE IT_ZPL_MCS5 WITH KEY KONDA = IT_CE20002B_815-KONDA
BINARY SEARCH.
IF SY-SUBRC EQ 0.
W_T_DATA_815-MVGR2 = CO_MVGR2_999.
ELSE.
W_T_DATA_815-MVGR2 = IT_CE20002B_815-KONDA.
ENDIF.
W_T_DATA_815-WERKS = IT_CE20002B_815-WERKS.
W_T_DATA_815-PRODH = IT_CE20002B_815-PRDHA.
W_T_DATA_815-VTWEG = '99'.
W_T_DATA_815-KUNNR = '9999999999'.
W_T_DATA_815-KCQTY = IT_CE20002B_815-VVB01001.
W_T_DATA_815-BASME = IT_CE20002B_815-VVB01_ME.
JR181005 - begin of ins.
w_t_data_810-matkl = it_ce20002b-matkl.
JR181005 - end of ins.
APPEND W_T_DATA_815 TO TAB_DATA.
CLEAR IT_CE20002B_815.
ENDLOOP.
thanks for reply
rico
Maybe you are looking for
-
How convert a color PDF File to black & white (gray scale...no color)
How convert a color PDF File to black & white (gray scale...no color)??? creative cloud cs6... Acrobat etc
-
Problem sending mail to hostname with multiple IN A DNS Records
Hi there I've been using the javamail API without problems for some 2 years now in the company I'm working for. The problems started this week, when the hostname I'm using to send out mails via SMTP, now has multiple 'IN A' DNS records, but allthough
-
I want to put the path of a file into a URL so that I can use the URL to open the file and put it in an image object. URL url = New URL("C:\FolderA\FolderB\filename.tif") however, I get a Malformed URL Exception Any tips?
-
SPRY Tabbed Panels Twist [literally]
Here's my question_ I've got the new TabbedPanels Widget running pretty good_ I took and migrated the default to the vertical alignment - so everything is running down the left side of the interface_ I currently have about 10 different tabs with cont
-
Does anybody have any documents on this ? We need to prototype couple of master transactions starting with Employee, so we can sell this as a Global MDM implementation. Any lessons learnt or step by step document from you experts will be appreciated.