Commit Work Failed.
Hi experts,
A weird problem hits me so much. After I insert a table item and of course commit work following the insert clause in a function module, and I want to read the inserted item out and change it, but after I commit work for the update clause and go to the table to see the item you have changed, nothing happened. It seems that there are two threads for the insert and update clause. I want to know why, and how to solve the problem properly. Actually I use wait up to 1 seconds to solve the problem, but I do not want to wait for 1 second for each table item, as there are many items should be processed at one time, so it will take a long time to complete the whole processing which can not be accepted by the user.
Thx in advance, points will be rewarded.
Vincent.
My suggestion is to do all the intermediate changes in the internal table itself first and only "SAVE" updates the database.
You may have to do without the first Insert and have the data in the internal table itself. and when user modifies some data, the changes happens to the data in internal table rather than the Database. You can have a SAVE button (which updates to Database & commit work) to save the changes at one go.
Regards,
Anish Thomas
Similar Messages
-
What exception should I use when commit work fails ?
hi all:
I create a class with methods to insert , modify and delete trasaction data,
when commit work fails, I want to throw an exception, what exception should I use
for this case?In general, you should do your commit using CALL FUNCTION IN UPDATE TASK. As this runs in a different process, you will never be able to catch an exception in your main task, even if you throw one in the Open SQL code. What you should do is carefully validate your data before posting it to the database, so that commit cannot fail for data integrity reasons. If it fails for technical reasons (DB down etc.) there is nothing that your code could do about it anyway, so in this case even getting an exception would be no use. What exactly is it you are trying to accomplish?
-- Sebastian -
I
Commit work sets sy-subrc always to zero.
In this case how can we know if commit work fails.
Please provide more details and efficient usage of commit statements in a reportHi,
Usage of commit statements is as follows:
COMMIT WORK.
Addition
u2026 AND WAIT
Effect
Executes a database commit and thus closes a logical processing unit or Logical Unit of Work ( LUW ) (see also Transaction processing ). This means that
all database changes are made irrevocable and cannot be reversed with ROLLBACK WORK and
all database locks are released.
COMMIT WORK also
calls the subroutines specified by PERFORM u2026 ON COMMIT ,
executes asynchronously any update requests (see CALL FUNCTION u2026 IN UPDATE TASK ) specified in these subroutines or started just before,
processes the function modules specified in CALL FUNCTION u2026 IN BACKGROUND TASK ,
cancels all existing locks (see SAP locking concept ) if no update requests exist,
closes all open database cursors (see OPEN CURSOR ) and
resets the time slice counter to 0.
COMMIT WORK belongs to the Open SQL command set.
Return code value
The SY-SUBRC is set to 0.
Notes
All subroutines called with PERFORM u2026 ON COMMIT are processed in the LUW concluded by the COMMIT WORK command. All V1 update requests specified in CALL FUNCTION u2026 IN UPDATE TASK are also executed in one LUW . When all V1 update requests have been successfully concluded, the V2 update requests (u201Dupdate with start delayedu201D) are processed, each in one LUW . Parallel to this, the function modules specified in CALL FUNCTION u2026 IN BACKGROUND TASK are each executed in one LUW per destination.
COMMIT WORK commands processed within CALL DIALOG processing
- execute a database commit (see above),
- close all open database cursors,
- reset the time slice counter and
- call the function modules specified by CALL FUNCTION IN
BACKGROUND TASK in the CALL DIALOG processing.
However, subroutines and function modules called with PERFORM u2026 ON COMMIT or CALL FUNCTION u2026 IN UPDATE TASK in the CALL DIALOG processing are not executed in the calling transaction until a COMMIT WORK occurs.
Since COMMIT WORK closes all open database cursors, any attempt to continue a SELECT loop after a COMMIT WORK results in a runtime error. For the same reason, a FETCH after a COMMIT WORK on the now closed cursors also produces a runtime error. You must therefore ensure that any open cursors are no longer used after the COMMIT WORK .
With batch input and CALL TRANSACTION u2026 USING , COMMIT WORK successfully concludes the processing.
Addition
u2026 AND WAIT
Effect
The addition u2026 AND WAIT makes the program wait until the type V1 updates have been completed.
The return code value is set as follows:
SY-SUBRC = 0 The update was successfully performed.
SY-SUBRC <> 0 The update could not be successfully performed.
Note
Runtime errors
COMMIT_IN_PERFORM_ON_COMMIT : COMMIT WORK is not allowed in a FORM callled with PERFORM u2026 ON COMMIT .
COMMIT_IN_POSTING : COMMIT WORK is not allowed in the update task.
Hope it will help you.
Feel free to ask any doubt.
Regards
Aparna -
CO54: Message is not sent to any destination: Commit Work is getting failed
Hello,
While processing the Messages from XFP to SAP Update is getting terminated due to the use of Commit Work. SAP Note 147467 - Update termination when sending process messages has been referred which is for 4.6C, but we are in ECC6.0.
While processing the message in second iteration Commit Work triggres and Update happens in the data base.
Following Issue is only concerned with Nested HUs
T-Code used CO54
Following are the analysis:
it looks like u201CCreate and Post a Physical Inventory Docu201D is failing in the initial processing because the inventory doc is created when the Transfer Order to the PSA (or the TO from the PSA) is not yet completed (quant is still locked somehow).
CO54, process message category=ZHU_CONS: HU to be consumed is a nested pallet (unpacking/ repacking and TOs to/from) and qty to consume is greater that HU qty in SAP (creation of a physical inventory doc is required).
1. The error occurs while clearing the inventory posting for the physical inventory document.
2. The surprising factor is the u201CProcess Messageu201D is not processed correctly for the first time.
3. Indeed it is successfully processed without any error if you do process it second time.
Error Log from C054 T-Code.
02.08.2010 Dynamic List Display 1
Type
Message text
LTxt
Message category: ZHU_CONS --- Process message: 100000000000000621 "Send to All Destinations" Is Active
Message to be sent to destination:
ZHGI ZPP_0285_XFP_GOODSISSUE Individual Processing Is Active
=> Message will be sent to destination (check log for destination)
Message category: ZHU_CONS --- Process message: 100000000000000621 "Send to All Destinations" Is Active
Message destination ZPP_0285_XFP_GOODSISSUE triggered COMMIT WORK
Input parameters OK, passed to source field structure
Step 0: Now checking if scenario with HU
Step 2: Scenario with HU, Now checking if HU nested
Step 3: HU nested, checking if HU in repack area
Step 4: HU not in repack area, moving it to repack area
HU moved to repack area, TO number 0000000873
Step 5: Depacking nested HU...
Nested HU depacked, HU pallet n°: 00176127111000461994
Steps 6-7: Moving back HUs to supply storage type / bin...
HU 00376127111000462001 moved back to original area with TO number 0000000875
Steps 6-7: Moving back HUs to supply storage type / bin...
No need to move back HU 00176127111000461994 (not in table LEIN)
Step 8: Checking if HU fully used and quantity matches HU system quantity
HU not fully used but picked quantity > HU quantity: inventory necessary
Step 9: Inventory needed, creating physical inventory document...
Physical inventory document 0000000126 created
Step 10: Adding weighted quantity on inventory document...
Weighted quantity entered in document 0000000126
Step 11: Posting rectification in inventory document 0000000126...
Physical inventory document 0000000126 rectified
Error: rectification for doc 0000000126 not updated in DB!
=> Destination ZHGI ZPP_0285_XFP_GOODSISSUE can currently not process the message
=> Message is not sent to any destination
The errors in SM13 for this contain the program SAPLZPP_0285_HUINV_ENH (creating/changing the HUM physical inventory doc). WM Function module L_LK01_VERARBEITEN is also involved.
From SM13, it displays the following piece of code in include LL03TF2M (read the LEIN table=Storage Units table):
WHEN CON_LK01_NACH.
IF (LEIN-LGTYP = LK01-NLTYP AND
LEIN-LGPLA = LK01-NLPLA) OR
NOT P_LEDUM IS INITIAL.
ELSE.
Das ist der Fall einer TA-Quittierung wo Von-Hu = Nach-HU ist und sofort die WA-Buchung erfolgt. Dann steht die HU noch auf dem Von-Platz, daher darf hier kein Fehler kommen, sondern es wird ein. Flag gesetzt, daß verhindert daß die LE fortgeschrieben wird.
FLG_NO_LE_UPDATE = CON_X.
MESSAGE A558 WITH P_LENUM.
ENDIF.
Translation in English of the German text via Google:
"This is the case where confirmation of a TO source-HU = destination-HU, and now the WA (Good Issue?)- made book. Then, the HU is still on the From-space may therefore come here not a mistake, but it sets a flag that prevents that the LE is updated."
Thanks and Regards,
Prabhjot Singh
Edited by: Prabhjot Singh on Aug 2, 2010 4:39 PMHope you have carried out following things in Production ( Please refer to SAP help before actually doing it in production).
1. Transport the predefined characteristics from the SAP reference client (000) to your logon client.
2. Adopt Predefined Message Categories - In this step, you copy the process message categories supplied by SAP from internal tables as Customizing settings in your plants. -
BDC failing at the statment "COMMIT WORK" in code
All,
I am working on benefits (COBRA) and I had to create a BDC for transaction HRBENUSCOB02(COBRA letter generation). Everything is fine except it hits code COMMIT WORK(this is SAP code). The program does not go any further after COMMIT WORK but if I run the transaction by itself it works fine! Does BDC does not work with steament "COMMIT WORK"? Is this because it is asynchronous? This is my sample BDC code:
==============================================
perform bdc_dynpro using 'RPUCOB02' '1000'.
perform bdc_field using 'BDC_CURSOR'
'PNPPERNR-LOW'.
perform bdc_field using 'BDC_OKCODE'
'=ONLI'.
perform bdc_field using 'PNPPERNR-LOW'
'305968'.......................................more code, I just didn't eant to paste the whole code
l_opt-DISMODE = 'N'.
CALL TRANSACTION 'HRBENUSCOB02' USING bdcdata OPTIONS FROM l_opt.
=============================================
Please give me any feedback or information if anyone has any ideas.
Thanks.
MithunThanks everyone for the time. Actually, I was doing trial and error and resolved this issue. There is one parameter "RACOMMIT", and I set it to TRUE and it worked!
l_opt-RACOMMIT = 'X'.
Thanks.
Mithun -
Reg. commit work in a follow-up action
friends
i am using the following approach to solve a requirement which is posted in this thread..How to send a mail after a usage decision is made in QA11?
got a nice reply too
i have defined a follow-up action and assigned a customized mail-sending fm to it..my doubts are, i am on 4.7..am able to send the mail to an internal id, but the problem is without using commit work and submit rsconn01 commands, am failing in doing the same...i have read in a thread that commit work or submit (if the called program uses commit work) will cause data inconsistencies and will trigger locks if it's used in any user-exit or badi...but in my case, when will a follow-up action actually take place? will it happen after all the database commits? if so, then i believe that even i use commit work and submit commands in my z mail sending fm, it wouldn't cause any problems...am just sort of afraid whether this approach is the correct one? or triggering the mail code from the last user exit or badi itself will solve the purpose? i believe not..please guide me on this friends...helpful replies will be appreciated and awarded..thanks in advance
Regards,
Sathish. Rless views and no answers:-(
-
Hi Experts,
Why should not use COMMIT WORK in BAPI ? If I give COMMIT WORK in BAPI what is will happen?Hi,
1. Why should not use COMMIT WORK in BAPI
I suppose you are asking this in context of Z BAPI and not standard BAPI.
The reason why we should not use is bcos SAP has recommended the design for BAPI in that manner.
2. If I give COMMIT WORK in BAPI what is will happen?
Well, as such there is nothing wrong going to happen. (Unless there is some dependent update in database)
To give you an example.
Suppose we have to update ZTABLE1 and ZTABLE2- the code for which is in TWO SEPARATE BAPIs.
Also it is requierd that if one fails, then other should not get updated. Either All or Either None case.
ZBAPI1 - TABLE1
ZBAPI2 - TABLE2
If ZBAPI1 is called and we have written commit work inside that, TABLE1 will get updated.
Then if there is any error in ZBAPI2, then TABLE2 will not get updated in hence the information will be INCONSISTENT.
3. Hence, the flow should be like this; (No commit work inside the bapi)
Main Program.
Call ZBAPI1.
Call ZBAPI2.
COMMIT WORK.
This will ensure that ALL or NONE happens.
regards,
amit m. -
Hi all,
Im facing a issue in BDC:
In a loop there is a select query called and if sy-subrc = 0 the call transaction using mode N is called in the next step.
first time if the sy-subrc is ne 0 then call transaction is done which updates( considered as new entry )
the table used in the select query.
when the loop executes the second time the sy-subrc is still 4 instead of 0( previous data is not updated in DB ).
So after all the execution only the last record exists in the transaction,
that is the table control index is always 1 due to the select query failure.
Here the problem is when using mode N, when mode A is used its working fine.
The data is not getting updated in db in first loop cycle, so the select query in second loop cycle fails.
The select query gets executed for the same material no's.
I have also tried with explicit commit and synchrounous update is used
Thanks,
KeshavHi Suhas,
This applies when we open a cursor for select, use fetch to get the data. Ater the fetch if we commit, then it closes all the open cursors. So next fetch on the previously opened cursor will lead to dump.
Perfect example could be.
SELECT......
Do processing.
COMMIT WORK.
ENDSELECT.
Keshav,
I beleive you are not using SELECT ENDSELECT in your case. If it is SELECT SIGLE/SELECT INTO TABLE, OPEN, FETCH and CLOSE CURSOR operations happens at the back end during the select query execution. ( We can see ST05 trace for this). So as per my understanding COMMIT after the CALL TRANSACTION shouldn't cause any problem.
Please correct if i am wrong any where.
Thanks,
Vinod. -
DUMP with Commit work and wait
Hi all!! I need your help again!!
I have this:
WAIT UP TO 1 SECONDS.
UPDATE zpsc_ofertes
SET status = 'ENTRA'
status_v = 'CO/AA'
WHERE oferta = zpsc_ofertes-oferta
AND versio = var_vers_destino.
CALL FUNCTION 'STATUS_UPDATE_ON_COMMIT'.
COMMIT WORK AND WAIT.
CALL FUNCTION 'BUFFER_REFRESH_ALL'
That code creates a dump... Why could be this problem??
Thanks!!Let's see.
The current application triggered a termination with a short dump.
¿Qué ha sucedido?
The current application program detected a situation which really
should not occur. Therefore, a termination with a short dump was
triggered on purpose by the key word MESSAGE (type X).
¿Qué puede hacer?
Print out the error message (using the "Print" function)
and make a note of the actions and input that caused the
error.
To resolve the problem, contact your SAP system administrator.
You can use transaction ST22 (ABAP Dump Analysis) to view and administer
termination messages, especially those beyond their normal deletion
date.
The code...
000010 *
000020 ***INCLUDE LPS_BAPIF01 .
000030 *
000040 *&
000050 *& Form CHK_PRECOMMIT
000060 *&
000070 * check precommit
000080 *
000090 FORM chk_precommit.
000100
000110 DATA: chk_precommit_ok TYPE c,
000120 chk_error type c.
000130
000140 CALL FUNCTION 'PS_FLAG_GET_GLOBAL_FLAGS'
000150 IMPORTING
000160 e_precommit_ok = chk_precommit_ok
000170 e_error = chk_error.
000180
000190 IF chk_precommit_ok = space.
000200 * Precommit wurde noch nicht aufgerufen.
> MESSAGE x030(cnif_pi).
000220 ELSEIF chk_precommit_ok <> 'Y'.
000230 * Precommit wurde nicht erfolgreich durchlaufen.
000240 MESSAGE x033(cnif_pi).
000250 elseif not chk_error is initial.
000260 * At least one single BAPI failed
000270 MESSAGE x056(cnif_pi).
000280 ENDIF.
000290
000300 * commit work was called successfully after the precommit
000310 PERFORM ps_bapi_init_global_variables.
000320
000330 ENDFORM. " CHK_PRECOMMIT
000340 -
COMMIT WORK within an user exit
Hi every one,
I got a lill question here, can i use COMMIT WORK (AND WAIT ) within a user
exit FM, if yes is do i need any thing extra. Please help.
Thanks in advance
Jahan.Hi Jahan,
although your question has been answered, just a few words on COMMIT WORK.
During a LUW (logical unit of work, i.e. transaction) all changes of database records are done within a so-called rollback segment of the database. That means they are visible within the current LUW but invisible to other users.
This makes it easy to do all necessary changes to all tables step by step. And if any step fails, all changes can be thrown away. Thats what we call a rollback - A rollback will just dump the rollback segment.
The reason you should not COMMIT WORK in a user exit is simply you have no idea what other database changes have already been done and what other database changes may follow after the user exit. If in one of the following steps a severe error is detected, all prior changes cannot be rolled back. COMMIT WORK means that all changes still in the rollback segment of the database will be applied and finalized to the database. The rollback segment will also be dumped that there is no chance to find out details about the changes.
An Error message (Type E or A) will automatically finish the LUW without commiting the data in the rollback segment - implicit rollback.
The end of a report not caused by any error will commit the rollback segment to the database - implicit commit.
All function modules called IN UPDATE TASK will be executed in their own update process after COMMIT or DUMPED after rollback.
All form routines called as PERFORM ... ON COMMIT or PERFORM ... ON ROLLBACK will be executed only after explicit COMMIT WORK or ROLLBACK WORK.
The addition 'AND WAIT' just means that the next program statement is not executed before all update processes started with COMMIT WORK have finished.
The general rule derived from this can be:
Never do a commit or rollback in a process which is called by another process. The only place for COMMIT or ROLLBACK is at the end of reports and transactions using CALL ... IN UPDATE TASK or PERFORM ... ON COMMIT - if you call any functions you should be aware that function modules may initiate update calls and/or form calls ...ON COMMIT/ROLLBACK. An explicit COMMIT WORK at the end of a process (or ROLLBACK WORK in case of error) will be OK.
Regards,
Clemens -
friends,
i have defined a follow-up action for txn qa11/12 and assigned a customized mail-sending fm to it..am on 4.7 and to send the mail to an internal lotus notes id using so_new_document_send_api1, but the problem is without using commit work and submit rsconn01 commands, am failing in doing the same...just want to make sure that my follow-up action will take place after all the database commits and will not cause any problems? ..please guide me on this friends...thanks in advance
regards,
Sathish. Rhi
thanks for your response...but QFOA_MAIL_SENDING_STANDARD is the fm used by a standard follow-up action that sends a mail to user's SAP office...that fm uses so_object_send to send the mail, which finally calls a commit work...just in a general sense, i hope follow up action triggers after all database commits..correct me if am wrong...i've never used perform on commit...any suggestions will be of great help
regards
Sathish. R -
New C310 - Wireless working FAIL - Printer's wireless network seems to be dead
Product: HP Photosmart Premium C310
OS: Windows Vista 64 bit and Windows 7 64 Bit
Error: Wireless working: FAIL
Changes: No changes since this is the first install of this printer ever
Description:
I've just unpacked my new C310 as a replacement for my older HP Inktjet 3845.
But when trying to install the wireless network everything I try seems to fail.
Printer doesn't detect my wireless network (blue wireless led is blinking 1sec on - 1sec off )
HP Network test tool on my laptop (standing next to the printer to test it's location ) gives no issues whatsoever, wireless network is strong and working very well.
Settings of the wifi connection are WPA security, no WPS, Channel 11, ... .
When I run a Wireless Network Test report from the printer menu, the result is (= printout)
* Wireless On => PASS
* Wireless Working => FAIL
* All the other points below are on status NOT RUN so no connection at all ...
Solutions tested:
Tried to reboot printer while waiting 1 minute in between => No result
Reset to factory settings straight on the printer => No result
Tried to run the Wireless network Setup Wizzard several times without merit.
Explanations on the forums seemed to be that this might be a faulty wireless network card in the printer?
Since this is one of the reasons of buying this item, I do need it to work.
Can anyone provide me advice/next steps?
Kind regards,
RafGreat info and troubleshooting, thanks!
Unfortunately, I think you have a dead radio. This is how to contact HP support: www.hp.com/go/totalcare
Say thanks by clicking "Kudos" "thumbs up" in the post that helped you.
I am employed by HP -
Work failed while applying the patch 3480000
Dear All,
Please Help
At the phase of applying the patch 3480000 while upgrading from 11.58 to 11.5.10.2
workers failed:
FAILED: file WFXLoad.class on worker 5 for product fnd username APPLSYS.
Time is: Tue Apr 05 2011 06:30:13
ATTENTION: All workers either have failed or are waiting:
FAILED: file WFXLoad.class on worker 1.
FAILED: file WFXLoad.class on worker 2.
FAILED: file WFXLoad.class on worker 3.
FAILED: file WFXLoad.class on worker 4.
FAILED: file WFXLoad.class on worker 5.
FAILED: file WFXLoad.class on worker 6.
FAILED: file WFXLoad.class on worker 7.
FAILED: file WFXLoad.class on worker 8.
ATTENTION: Please fix the above failed worker(s) so the manager can continue.Hi Hussein,
Sorry for being late
next is output screen for patch 3480000
There are now 39641 jobs remaining (current phase=A84):
6 running, 216 ready to run and 39419 waiting.
Assigned: file WFXLoad.class on worker 7 for product fnd username APPLSYS.
Assigned: file WFXLoad.class on worker 8 for product fnd username APPLSYS.
FAILED: file WFXLoad.class on worker 4 for product fnd username APPLSYS.
FAILED: file WFXLoad.class on worker 1 for product fnd username APPLSYS.
FAILED: file WFXLoad.class on worker 3 for product fnd username APPLSYS.
FAILED: file WFXLoad.class on worker 6 for product fnd username APPLSYS.
FAILED: file WFXLoad.class on worker 8 for product fnd username APPLSYS.
FAILED: file WFXLoad.class on worker 2 for product fnd username APPLSYS.
FAILED: file WFXLoad.class on worker 7 for product fnd username APPLSYS.
FAILED: file WFXLoad.class on worker 5 for product fnd username APPLSYS.
ATTENTION: All workers either have failed or are waiting:
FAILED: file WFXLoad.class on worker 1.
FAILED: file WFXLoad.class on worker 2.
FAILED: file WFXLoad.class on worker 3.
FAILED: file WFXLoad.class on worker 4.
FAILED: file WFXLoad.class on worker 5.
FAILED: file WFXLoad.class on worker 6.
FAILED: file WFXLoad.class on worker 7.
FAILED: file WFXLoad.class on worker 8.
ATTENTION: Please fix the above failed worker(s) so the manager can continue.
next is last lines in adworker log file
adjava -mx256m -nojit oracle.apps.fnd.wf.WFXLoad -u &un_apps &pw_apps &jdbc_db_addr &jdbc_protocol US &fullpath_cln_patch/115/xml/US_cln2a12os.wfx
Error:
Program exited with status 1
Cause: The program terminated, returning status code 1.
Action: Check your installation manual for the meaning of this code on this operating system.
Copyright (c) 2002 Oracle Corporation
Redwood Shores, California, USA
AD Java
Version 11.5.0
NOTE: You may not use this utility for custom development
unless you have written permission from Oracle Corporation.
Reading product information from file...
Reading language and territory information from file...
Reading language information from applUS.txt ...
Temporarily resetting CLASSPATH to:
"h:\oracle\prodappl\ad\11.5.0\java\adjri.zip;H:\oracle\prodcomn\util\java\1.3\jdk1.3.1_07\lib\rt.jar;H:\oracle\prodcomn\util\java\1.3\jdk1.3.1_07\lib\i18n.jar;h:\oracle\prodcomn\java\appsborg.zip;h:\oracle\prodora\8.0.6\forms60\java;h:\oracle\prodcomn\java"
Calling h:\oracle\prodora\8.0.6\jdk\bin\java.exe ...
Oracle Workflow XML Loader 2.6.2
Connecting to APPS@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=NT4SERVER)(PORT=1521))(CONNECT_DATA=(SID=PROD))) -- UTF8
Connected to (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=NT4SERVER)(PORT=1521))(CONNECT_DATA=(SID=PROD)))
SQL Exception encountered during upload: ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'UPLOADOBJECT'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
Fatal error encountered during upload between line 10 and 35
Error encountered when upload.
AD Run Java Command is complete.
AD Worker error:
The above program failed. See the error messages listed
above, if any, or see the log and output files for the program.
Time when worker failed: Tue Apr 05 2011 06:30:13
Thanks&BR
Tarek -
How to execute Update Module FM after final commit work for a T-code.
Hello Folks,
I have a bit complex issue with my current object.
We have modified MM41/MM42 transactions and added a subscreen to fulfill the requirement.
We have designed the subscreen and embedded the same to MM41/MM42 through SPRO configuration.
Now for update business logic,i am trying to execute one Function module(Update Module) in update Task...so that it will be executed once after the final commit work will be done for MM41/MM42.
But its not executing.
To fulfill my requirement i need to execute the FM only after Final Commit work for MM41/MM42.
Please suggest in this regard.
Even i can see few BADI's which are triggering through MM01/MM02 but not through MM41/MM42.
BADI_ARTICLE_REF_RT
BADI_MATERIAL_CHECK
BADI_MAT_F_SPEC_SEL
Code with which i am trying is given below.
After PAI event of the subscreen---
1: MODULE USER_COMMAND_9001.
2: MODULE user_command_9001 INPUT.
PERFORM sub_save_mara ON COMMIT.
ENDMODULE.
3: FORM sub_save_mara.
CALL FUNCTION 'ZMMUPDATE_MARA_APPEND_STRUCT' "IN UPDATE TASK
EXPORTING
materialno = gv_matnr
appendmara = ty_zzmara.
ENDFORM. "sub_save_mara
4: FUNCTION zmmupdate_mara_append_struct.
""Update Function Module:
""Local Interface:
*" IMPORTING
*" VALUE(MATERIALNO) TYPE MATNR
*" VALUE(APPENDMARA) TYPE ZZMARA
Data Declaration for Local use
DATA : w_mara TYPE mara.
Selecting the latest values for the material.
SELECT SINGLE * FROM mara INTO w_mara WHERE matnr = materialno.
IF sy-subrc = 0.
Move the ZZMARA values to structure MARA
MOVE-CORRESPONDING appendmara TO w_mara.
Update the values in table MARA.
MODIFY mara FROM w_mara.
ENDIF.
ENDFUNCTION.
Kindly suggest.Thanks in advance.
Regards
AnsumeshHi..
The code given by me will work fine provided the Final commit should happen.
Because to execute FM with update task,final commit work should happen which is mandatory and after that it will call the update task.
In my case final commit work was not happeneing because..SAP standard program was not able to detect wether there is any change in my sub-screen or not as the standard program & my custom program,subscreens are different.
As it was not able to detect the change,so final commit was not happening and hence update task also.
To provide the reference of change in my subscreen to standard program ,i set a flag as per the change in the subscreen
And exported the same to memory.
Then Implemented one enhacement spot in MATERIAL_CHANGE_CHECK_RETAIL Fm where i have Imported the flag value.
Based on my custom flag value,i have set one standard flag FLG_AENDERUNG_GES which tells SAP standard program for MM42 wether any change has happened or not.
The above solved my purpose.
Regards
Ansumesh -
SO_OBJECT_SEND function does not work without an explicit COMMIT WORK
Hi,
We have used this Function module (SO_OBJECT_SEND) inside a custom BAdI Implementation , which sends e-mails when some of the fields inside an infotype are modified using transaction PA30 (HR-Maintain master data).
After the system was upgraded to BASIS version 7.0 , as per SAP note 489286 ,the calling program of the send interface must execute an explicit COMMIT WORK.But inside an update , COMMIT WORK should not be executed.
So we did not execute explicit COMMIT WORK inside BAdI.
But after this upgrade, the emails are not sent out of R/3 , and the status message 672 (Still no entry in queue) is displayed on the program 'Administration of External Send Processes' - Transaction SOST.
Can anyone suggest a solution , if you have used this Function module (SO_OBJECT_SEND) inside a BAdI during update?
Thanks,
KiranHi Kiran,
create one remote enable function module, write your required logic in this remote enableD function module.
Now call this function module in Badi as below,
eg. suppose Remote enable function module created is 'ztest'.
then,
In BadI write logic,
CALL FUNCTION 'ZTEST' SEPARATE TASK 'T'
EXPORTING ......
IMPORTING.......
also inside this function module
call function 'SO_OBJECT_SEND' separate task 'T'
exporting....
importing....
committwork.
after doing this what will happen is your mail logic will be in saperate session, so your current program will pass the data and execution of this RFC and Program having BADI, will be in two saperate sessions, so although you are using committ work standred program will not get affected.
This will improve performance too...:)
Please Give points if it is going to help you.
Maybe you are looking for
-
Enabling / Disabling graphs and opening a new Front Panel Window
Hi, I have a simple application of showing 12 analog signals on 12 different graphs placed vertically in aligned position. I have to develop a user interface so that if user wants to display signal no. 1, 4 and 6 out of total 12 signals, he should
-
Connecting domain from Windows 8.1 pro to Windows server 2008
Hello, We try to login to our domain controller from a windows 8.1 pro laptop. The login is going good it looks like, but the user is nog getting the shares that the user expects to get. This is working with a windows 7 pro laptop but on a windows 8.
-
Cant Restore I-tunes Library After Crash
Hello everyone, my computer crashed on monday but luckily I had backed up my library. I downloaded I-tunes and try to restore my library and the first disc did fine but when the second one tried to run I got an error saying "an unknown error occurred
-
Quick question about JButton...
All right, so I'm in my first year second semester of computer programming. On Monday of this week we had a test� on this test we had this question: Which of the following methods does JButton not have? (A) setLabel() (B) setEnabled() (C) setText
-
I have a quick question. I have a signed applet. In the applet I am trying to write to a file FileOutputStream out = new FileOutputStream(m_File) this throws an error. Even though the applet is signed. I found this information: In Java2 JDK1.2, readi