Calling Transaction code & returning back to calling program
Hi,
I have requirement as below
Write the report to call the transaction code say for example different tcode (1000 in number) need to be executed and after every tcode execution it should return back to calling report. I tried using "CALL TRANSACTION 'ABC' AND SKIP FIRST SCREEN" it does execute the tcode but need the user interaction to return back to report, where here i want do this programatically.
can someone please help me & what is possible ways this can be do able.
Thanks,
John.
There are two method of BDC
1- Call transaction method
2- BDC Session method
In this case you can use call tansaction method.
Syntax- call tansaction abc using gt_bdcdata.
Do the recording with t-code SHDB for that particular transaction and after the necessary modification use it in your program.
Please check f1 help of call transaction for details.
Similar Messages
-
Reg calling Transaction code in Webdynpro ABAP
Hi All,
Can I call Transaction code in Webdynpro ABAP Portal Application. If so, how can this be possible? Can anybody give me a lead?
Thanks.
Kumar Saurav.Hi,
The most easy Way is here:
1) Test any Webdynpro Application from SE80 when the webdynpro Browser opens to display output
Copy its HTTP link, Suppose we get the below link
http://r3d01web1.Siemens.dk:8001/sap/bc/webdynpro/sap/z_dynamic_view?sap-client=002&sap-language=EN
2) Now replace some part of the above link ( webdynpro/sap/z_dynamic_view?sap-client=002&sap-language=EN ) with the new link part ( gui/sap/its/webgui?~transaction=PA30 )
So that the newly generated link is such that the below one:
http://r3d01web1.Siemens.dk:8001/sap/bc/gui/sap/its/webgui?~transaction=PA30
Note in place of PA30 you can put any of your desired tcode.
3) Now Just Make a webdynpro component and in its View layout put a LINK TO URL ui element
and in its property REFERENCE just past the http link ( http://r3d01web1.Siemens.dk:8001/sap/bc/gui/sap/its/webgui?~transaction=PA30 )
4) Activate and test your webdynpro Application. -
Hi Experts,
I've created RFC function module that make use of CALL TRANSACTION code. This function module is being called in CRM system. However I encountered a short dump CALL_FUNCTION_RECEIVE_ERROR. Kindly help to determine if CALL TRANSACTION code is possible in RFC function module?
Thanks in advance!Hello,
Here's the detailed error analysis found in ST22:
Error analysis
An error occurred when executing a Remote Function Call.
"Exception condition "CNTL_ERROR" raised. "
Status of connection.... " "
Internal error code.... "RFC_GET3"
Log error: No end marker in data container.
Thanks! -
Assign Transaction Code for Report Painter generated program
I am trying to assign a transaction code for report painter generated program... I assigned the transaction code in Development for the generated program but the program name changes in every system and I get a runtime error...
Can you please guide me on how to handle this problemhttp://dap-consulting.com/yahoo_site_admin/assets/docs/Report_Painter_Reports.47142031.pdf
Found my answer in the above link -
Call transaction method in back ground Processing?
HI Friends,
I am working on interface program to post documents of 309 movement type into MIGO transaction .
my program is executing succesfully when i am processing in fore ground.
but when i am processing in background it is giving error .
can any help in this requirement?
*Solution rewarded*My Program will do transfer Posting from material to material.
when i am executing the program in back ground mode The Program statement call transaction fails with the following error
CALL_TRANSACTION MIGO_TR Return code = 1,001 RECORD: 0
S
Field GODYNPRO-ACTION . is not an input field
S
Field GODYNPRO-REFDOC . is not an input field
S
Field GOITEM-UMMAKTX . is not an input field
S
similar statement when executing in foreground it is posting document succesfully.
kindly revert back for any other information. -
ALV Grid Calling Transaction Code
Hello Everybody
Can anyone help me about my problem in using ALV Grid calling a transaction code...?Here is the sample code below..
IF rs_selfield-fieldname = 'BELNR'.
SET PARAMETER ID 'BLN' FIELD rs_selfield-value.
CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
ENDIF.
the main problem is how can I set my parameter id for company since
my rs_field-value is for the column BELNR ( document # field only)
it returns error when i set this code since i have no value to pass for rs_selfield for company code
SET PARAMETER ID 'BUK' FIELD
Help
thanks in advance
aVaDuDzHi,
*"Table declarations...................................................
TABLES:
rbkp, " Document Header Invoice receipt
rseg, " Document Item: Incoming Invoice
eban, " Purchase Requisition
t001w. " Plants/Branches
*"Selection screen elements............................................
PARAMETERS:
p_gjahr LIKE rbkp-gjahr. " Fiscal Year
SELECT-OPTIONS:
s_belnr FOR rbkp-belnr, " Document number of an invoice
s_bldat FOR rbkp-bldat, " Document Date in Document
s_budat FOR rbkp-budat, " Posting Date in the Document
s_werks FOR rseg-werks. " Plant
*" Data declarations...................................................
Work variables *
DATA:
w_flag1 TYPE c VALUE '0', " Flag variable 1
w_flag2 TYPE c VALUE '0', " Flag variable 2
w_index1 TYPE sy-tabix. " Index variable
Field String to hold Document Header Invoice receipt *
DATA:
BEGIN OF fs_rbkp,
belnr TYPE rbkp-belnr, " Document number of an invoice
gjahr TYPE rbkp-gjahr, " Fiscal Year
bldat TYPE rbkp-bldat, " Posting Date in the Document
budat TYPE rbkp-budat, " Posting Date in the Document
lifnr TYPE rbkp-lifnr, " Different invoicing party
END OF fs_rbkp,
Internal table to hold Document Header Invoice receipt *
t_rbkp LIKE STANDARD TABLE OF fs_rbkp.
Field String to hold Document Item: Incoming Invoice *
DATA:
BEGIN OF fs_rseg,
belnr TYPE rseg-belnr, " Document number of an invoice
ebeln TYPE rseg-ebeln, " Purchasing Document Number
wrbtr TYPE rseg-wrbtr, " Amount in document currency
END OF fs_rseg,
Internal table to hold Document Item: Incoming Invoice *
t_rseg LIKE STANDARD TABLE OF fs_rseg.
Field String to hold Purchase Requisition *
DATA:
BEGIN OF fs_eban,
banfn TYPE eban-banfn, " Purchase requisition number
ernam TYPE eban-ernam, " Person who Created the Object
afnam TYPE eban-afnam, " Name of requisitioner/requester
badat TYPE eban-badat, " Requisition (request) date
ebeln TYPE eban-ebeln, " Purchase order number
END OF fs_eban,
Internal table to hold Purchase Requisition *
t_eban LIKE STANDARD TABLE OF fs_eban.
Field String to hold Desired Data *
DATA:
BEGIN OF fs_final,
ebeln TYPE rseg-ebeln, " Purchasing Document Number
banfn TYPE eban-banfn, " Purchase requisition number
badat TYPE eban-badat, " Requisition (request) date
bldat TYPE rbkp-bldat, " Posting Date in the Document
lifnr TYPE rbkp-lifnr, " Different invoicing party
wrbtr TYPE rseg-wrbtr, " Amount in document currency
afnam TYPE eban-afnam, " Name of requisitioner/requester
ernam TYPE eban-ernam, " Name of Person who Created the
" Object
END OF fs_final,
Internal table to hold Desired Data *
t_final LIKE STANDARD TABLE OF fs_final.
INITIALIZATION *
INITIALIZATION.
p_gjahr = sy-datum+0(4).
AT SELECTION-SCREEN EVENT *
AT SELECTION-SCREEN.
IF s_belnr IS INITIAL OR s_bldat IS INITIAL OR s_budat IS INITIAL.
MESSAGE ' (Invoice) Add Creation Date .' TYPE 'E'.
ENDIF. " IF S_BELNR...
AT SELECTION-SCREEN ON FIELD EVENT *
AT SELECTION-SCREEN ON s_werks.
SELECT SINGLE werks " Plant
FROM t001w
INTO t001w
WHERE werks IN s_werks.
IF sy-subrc NE 0.
MESSAGE 'Invalid plant' TYPE 'E'.
ENDIF. " IF SY-SUBRC NE 0.
START-OF-SELECTION EVENT *
START-OF-SELECTION.
PERFORM get_purchaserequistion.
LOOP AT t_rseg INTO fs_rseg.
READ TABLE t_rbkp INTO fs_rbkp WITH KEY belnr = fs_rseg-belnr
BINARY SEARCH.
IF sy-subrc EQ 0.
READ TABLE t_eban INTO fs_eban WITH KEY ebeln = fs_rseg-ebeln
BINARY SEARCH.
IF sy-subrc EQ 0.
IF fs_rbkp-bldat LE fs_eban-badat.
DELETE t_rseg INDEX sy-tabix.
ENDIF. " IF FS_RBKP-BLDAT...
ENDIF. " IF SY-SUBRC EQ 0
ENDIF. " IF SY-SUBRC EQ 0
ENDLOOP. " LOOP AT T_RSEG...
LOOP AT t_rbkp INTO fs_rbkp.
WHILE w_flag1 EQ '0'.
READ TABLE t_rseg INTO fs_rseg WITH KEY belnr = fs_rbkp-belnr
BINARY SEARCH.
w_index1 = sy-tabix.
IF sy-subrc EQ 0.
WHILE w_flag2 EQ '0'.
READ TABLE t_eban INTO fs_eban WITH KEY ebeln = fs_rseg-ebeln
BINARY SEARCH.
IF sy-subrc EQ 0.
fs_final-bldat = fs_rbkp-bldat.
fs_final-lifnr = fs_rbkp-lifnr.
fs_final-ebeln = fs_rseg-ebeln.
fs_final-wrbtr = fs_rseg-wrbtr.
fs_final-banfn = fs_eban-banfn.
fs_final-badat = fs_eban-badat.
fs_final-afnam = fs_eban-afnam.
fs_final-ernam = fs_eban-ernam.
APPEND fs_final TO t_final.
CLEAR fs_final.
DELETE t_eban INDEX sy-tabix .
ELSE.
w_flag2 = '1'.
DELETE t_rseg INDEX w_index1.
ENDIF. " IF SY-SUBRC EQ 0
ENDWHILE. " WHILE W_FLAG2...
w_flag2 = '0'.
ELSE.
w_flag1 = '1'.
ENDIF. " IF SY-SUBRC EQ 0
ENDWHILE. " WHILE W_FLAG1...
w_flag1 = '0'.
ENDLOOP. " LOOP AT T_RBKP...
CLASS lcl_event_receiver DEFINITION DEFERRED.
Declare reference variables to the ALV grid and the container
DATA :
cust_con TYPE scrfname VALUE 'BCALVC_TOOLBAR_D100_C1',
cont_on_dialog TYPE scrfname VALUE 'BCALVC_TOOLBAR_D101_C1',
ref1 TYPE REF TO cl_gui_custom_container,
ref2 TYPE REF TO cl_gui_alv_grid,
event_receiver TYPE REF TO lcl_event_receiver,
fcat TYPE lvc_t_fcat,
wa TYPE lvc_s_fcat,
wa_layo TYPE lvc_s_layo.
CALL SCREEN 200.
class lcl_event_receiver: local class to define and handle own
*functions......................................................
Definition:
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
METHODS:
handle_toolbar
FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING e_object e_interactive,
handle_user_command
FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm.
PRIVATE SECTION.
ENDCLASS. "lcl_event_receiver DEFINITION
class lcl_event_receiver (Implementation)
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD handle_toolbar.
In event handler method for event TOOLBAR: Append own functions
by using event parameter E_OBJECT.
DATA: ls_toolbar TYPE stb_button.
E_OBJECT of event TOOLBAR is of type REF TO CL_ALV_EVENT_TOOLBAR_SET.
append a separator to normal toolbar
CLEAR ls_toolbar.
MOVE 3 TO ls_toolbar-butn_type.
APPEND ls_toolbar TO e_object->mt_toolbar.
append an icon to show booking table
CLEAR ls_toolbar.
MOVE 'PORDER' TO ls_toolbar-function.
MOVE icon_employee TO ls_toolbar-icon.
MOVE 'Show Bookings' TO ls_toolbar-quickinfo.
MOVE 'PONUMBER' TO ls_toolbar-text.
MOVE ' ' TO ls_toolbar-disabled.
APPEND ls_toolbar TO e_object->mt_toolbar.
append a separator to normal toolbar
CLEAR ls_toolbar.
MOVE 3 TO ls_toolbar-butn_type.
APPEND ls_toolbar TO e_object->mt_toolbar.
append an icon to show booking table
CLEAR ls_toolbar.
MOVE 'PREQUISITION' TO ls_toolbar-function.
MOVE icon_employee TO ls_toolbar-icon.
MOVE 'Show Bookings' TO ls_toolbar-quickinfo.
MOVE 'PRNUMBER' TO ls_toolbar-text.
MOVE ' ' TO ls_toolbar-disabled.
APPEND ls_toolbar TO e_object->mt_toolbar.
ENDMETHOD. " handle_toolbar
METHOD handle_user_command.
*Event handler method for event USER_COMMAND:
CASE e_ucomm.
WHEN 'PORDER'.
CALL TRANSACTION 'ME23N'.
WHEN 'PREQUISITION'.
CALL TRANSACTION 'ME53N'.
ENDCASE.
ENDMETHOD. " handle_user_command
ENDCLASS. " lcl_event_receiver
*& Module STATUS_0200 OUTPUT
text
MODULE status_0200 OUTPUT.
SET PF-STATUS 'GUI'.
SET TITLEBAR 'TITLE'.
IF sy-ucomm = 'BACK'.
LEAVE PROGRAM.
ENDIF.
PERFORM form_fcat.
PERFORM form_layo.
IF ref1 IS INITIAL.
CREATE OBJECT ref1
EXPORTING
PARENT = ref1
container_name = 'CUST_CON'
STYLE =
LIFETIME = lifetime_default
REPID =
DYNNR =
NO_AUTODEF_PROGID_DYNNR =
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
OTHERS = 6
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDIF.
IF ref2 IS INITIAL.
CREATE OBJECT ref2
EXPORTING
I_SHELLSTYLE = 0
I_LIFETIME =
i_parent = ref1
I_APPL_EVENTS = space
I_PARENTDBG =
I_APPLOGPARENT =
I_GRAPHICSPARENT =
I_NAME =
EXCEPTIONS
error_cntl_create = 1
error_cntl_init = 2
error_cntl_link = 3
error_dp_create = 4
OTHERS = 5
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CALL METHOD ref2->set_table_for_first_display
EXPORTING
I_BUFFER_ACTIVE =
I_BYPASSING_BUFFER =
I_CONSISTENCY_CHECK =
I_STRUCTURE_NAME =
IS_VARIANT =
I_SAVE =
I_DEFAULT = 'X'
is_layout = wa_layo
IS_PRINT =
IT_SPECIAL_GROUPS =
IT_TOOLBAR_EXCLUDING =
IT_HYPERLINK =
IT_ALV_GRAPHICS =
IT_EXCEPT_QINFO =
CHANGING
it_outtab = t_final
it_fieldcatalog = fcat
IT_SORT =
IT_FILTER =
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CREATE OBJECT event_receiver.
SET HANDLER event_receiver->handle_user_command FOR ref2.
SET HANDLER event_receiver->handle_toolbar FOR ref2.
*Call method 'set_toolbar_interactive' to raise event TOOLBAR.
CALL METHOD ref2->set_toolbar_interactive.
ENDIF.
ENDMODULE. " STATUS_0200 OUTPUT
Form FORM_FCAT *
text *
FORM form_fcat.
CLEAR fcat.
CLEAR wa.
wa-fieldname = 'EBELN'.
wa-col_pos = 1.
wa-scrtext_l = ' PURCHASE ORDER NUMBER'.
APPEND wa TO fcat.
CLEAR wa.
wa-fieldname = 'BANFN'.
wa-col_pos = 2.
wa-scrtext_l = 'PURCHASE REQUISITION NUMBER'.
APPEND wa TO fcat.
CLEAR wa.
wa-fieldname = 'BADAT'.
wa-col_pos = 3.
wa-scrtext_l = 'PR CREATION DATE'.
APPEND wa TO fcat.
CLEAR wa.
wa-fieldname = 'BLDAT'.
wa-col_pos = 4.
wa-scrtext_l = 'INVOICE DATE'.
APPEND wa TO fcat.
CLEAR wa.
wa-fieldname = 'LIFNR'.
wa-col_pos = 5.
wa-scrtext_l = 'VENDOR NUMBER'.
APPEND wa TO fcat.
wa-fieldname = 'WRBTR'.
wa-col_pos = 6.
wa-do_sum = 'X'.
wa-scrtext_l = ' PO AMOUNT'.
APPEND wa TO fcat.
wa-fieldname = 'AFNAM'.
wa-col_pos = 7.
wa-scrtext_l = 'REQUISITIONER'.
APPEND wa TO fcat.
wa-fieldname = 'ERNAM'.
wa-col_pos = 8.
wa-scrtext_l = 'PR CREATOR'.
APPEND wa TO fcat.
ENDFORM. " FORM_FCAT
Module USER_COMMAND_0200 INPUT *
text *
MODULE user_command_0200 INPUT.
CASE sy-ucomm.
WHEN 'BACK' OR 'CANCEL' OR 'EXIT'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " USER_COMMAND_0200 INPUT
FORM FORM_LAYO *
There are no interface parameters to be passed to this subroutine.*
FORM form_layo.
CLEAR wa_layo.
wa_layo-zebra = 'X'.
wa_layo-grid_title = 'GRID TITLE'.
wa_layo-no_toolbar = 'X'.
ENDFORM. " FORM_LAYO
FORM GET_PURCHASEREQUISITION *
This subroutine selects all the Purchase requisitions from table *
EBAN for all the selected Invoices based on the Purchase orders. *
There are no interface parameters to be passed to this subroutine. *
FORM get_purchaserequistion.
SELECT belnr " Document number of an invoice
gjahr " Fiscal Year
bldat " Posting Date in the Document
budat " Posting Date in the Document
lifnr " Different invoicing party
FROM rbkp
INTO TABLE t_rbkp
WHERE belnr IN s_belnr
AND gjahr EQ p_gjahr
AND bldat IN s_bldat
AND budat IN s_budat.
IF NOT t_rbkp[] IS INITIAL.
SELECT belnr " Document number of an invoice
ebeln " Purchasing Document Number
wrbtr " Amount in document currency
FROM rseg
INTO TABLE t_rseg
FOR ALL ENTRIES IN t_rbkp
WHERE belnr EQ t_rbkp-belnr
AND werks IN s_werks.
ENDIF. " IF NOT t_rbkp[] IS INITIAL...
IF NOT t_rseg[] IS INITIAL.
SELECT banfn
ernam
afnam
badat
ebeln
FROM eban
INTO CORRESPONDING FIELDS OF TABLE t_eban
FOR ALL ENTRIES IN t_rseg
WHERE ebeln EQ t_rseg-ebeln.
ENDIF. " IF NOT t_rseg[] IS INITIAL...
ENDFORM. " GET_PURCHASEREQUISITION
reward points if helpful.
regards,
kiran kumar k. -
Calling transaction codes.
Hi Everyone,
I have around 5 different programs, and have transaction codes for them. Now if I navigate from one screen to another say for until the 4 screen and then again if I press the back button, it has to come back to the previous screen until the last one.
Can this be implemented through callstack if so, how can it be done, any suggestions.
It would be of great help if anyone can help me.
Thanks,
Prabs.Hi
If you use call transaction then you can go back only one step with leave program . There is no way to determine previuos steps. You can still achieve this -
In Program for ( TRANSACTION Z1 )
CALL TRANSACTION Z2 .
In Program for ( TRANSACTION Z2 )
CALL TRANSACTION Z3 .
LEAVE PROGRAM.
In Program for ( TRANSACTION Z3 )
CALL TRANSACTION Z4 .
LEAVE PROGRAM.
If now you branch to Z4 and click a back button here it will goto ( internally ->Z3 -> Z2 ) to Z1 . You have to place the "LEAVE PROGRAM" just after the call transaction.
If you are using call screen ( within same program ) you can use SET SCREEN 0 . LEAVE SCREEN to branch to first screen in call sequence.
You can also try function module SYSTEM_CALLSTACK in your code . With every call transaction a new call stack is created.
( You can even check in debugging the call stack ).
Cheers -
CALL Transaction 'MIRO' return error messages in MESSTAB
Dear All,
We have created a test function module to call transaction 'MIRO', the function works fine on one server but the same give error messages on other server.
The messages returned by call transaction is as follows
======================================================
Messages retunrned by 'CALL Transaction MIRO' as on server I (success)
======================================================
1 MIRO SAPLMR1M 6000 I E F5 096 1,002,010.00 INR Advance to Vendors CTU
2 MIRO SAPLMR1M 6000 S E F5A 034 BusA CTU
3 MIRO SAPLMR1M 6000 S E M8 060 5200000423 CTU
======================================================
Messages retunrned by 'CALL Transaction MIRO' as on server II (error)
======================================================
1 MIRO SAPLMR1M 6000 S E F5 480 RE Doc. Header Text CTU
2 MIRO SAPLMR1M 6000 I E M8 584 CTU
3 MIRO SAPLMR1M 6000 S E F5 480 RE Doc. Header Text CTU
4 MIRO SAPLMR1M 6000 S E 7Q 333 1008473 CTU
5 MIRO SAPLMR1M 6000 E E F5 480 RE Doc. Header Text CTU
In fact, when the MIRO screen is displayed to user and user enter the data in MIRO and simulate, there is no error.
But when we post the transaction the screen is exited without displaying the invoice document number.
Where as if we call MIRO directly, it works fine without any error.
Kindly help.
Regards
Ruhi HiraThe sample code is
FUNCTION Z_TEST_MIRO.
""Local Interface:
*" EXPORTING
*" REFERENCE(ERRCODE) TYPE N
*" REFERENCE(INVOICENUMBER) TYPE C
*" REFERENCE(OLDINVOICENUMBER) TYPE C
DATA: BEGIN OF tran_opts,
dismode TYPE ctu_params-dismode VALUE 'A',
updmode TYPE ctu_params-updmode VALUE 'S',
cattmode TYPE ctu_params-cattmode,
defsize TYPE ctu_params-defsize ,
racommit TYPE ctu_params-racommit,
nobinpt TYPE ctu_params-nobinpt VALUE 'X',
nobiend TYPE ctu_params-nobiend,
END OF tran_opts.
DATA: BEGIN OF MESSTAB OCCURS 10.
INCLUDE STRUCTURE BDCMSGCOLL.
DATA: END OF MESSTAB.
ERRCODE = 0.
GET PARAMETER ID 'RBN' FIELD OldInvoiceNumber.
DATA BEGIN OF BDCDATA OCCURS 1.
INCLUDE STRUCTURE BDCDATA.
DATA END OF BDCDATA.
CALL TRANSACTION 'MIRO' USING BDCDATA OPTIONS FROM tran_opts MESSAGES INTO MESSTAB.
LOOP AT MESSTAB.
WRITE: / MESSTAB-TCODE,
MESSTAB-DYNAME,
MESSTAB-DYNUMB,
MESSTAB-MSGTYP,
MESSTAB-MSGSPRA,
MESSTAB-MSGID,
MESSTAB-MSGNR,
MESSTAB-msgv1,
MESSTAB-msgv2,
MESSTAB-msgv3,
MESSTAB-msgv4.
IF MESSTAB-MSGTYP = 'S' AND MESSTAB-msgid = 'M8' AND MESSTAB-msgnr = '060'.
invoicenumber = messtab-msgv1.
ENDIF.
ENDLOOP.
IF OldInvoiceNumber = InvoiceNumber OR InvoiceNumber IS INITIAL.
ERRCODE = 1.
ELSE.
ERRCODE = 0.
ENDIF.
REFRESH BDCDATA.
ENDFUNCTION. -
Can we use Call transaction and session method in same program ?
Hi experts,
Is it suggested to use call Transaction and session method in the same Program ?
i have a doubt , why cant we use multiple call transactions in same program instead of session method if we have multiple transaction updations ?Hi Dengyong Zhang,
we can use the call transation and session method in same program.
However for better performance it's benificial to use call trasaction method of BDC. but if u want to upload very large amount of data then Session method is more preferable to use.
Session method is one of the method of BDC.
U can also use BAPI to upload the data in SAP but it's a different concept than BDC. Performance wise BAPI is more advantageous than BDC. -
Personas: how to call Transaction code using a Script Button?
Hi,
I want to use a script button to run to certain UI based on the given transaction code. I am thinking there might be some ways to do so:
Option 1:
Somehow one can let the script button call the T-code in script, say, IW21, but how to write such script?
Option 2:
In the script of the script button, use "Push" or "Click" to cause an action on the launch button which contains the T-code, say /nIW21.
But on my PC, this does not work. Why?
pls help asap!
Thx a lot!
Br,
DongKnowledge sharing:
Hi,
I have found exact answer to this question: in the script of a script button, one can first set the T-code to the /okdc component, then call "press Enter" action. By this way, any script button can be used to triggle an action for a T-code. One can set teh /okdc as "hidden". Hope this will help other newers.
Br,
Dong -
System did not take VK11 call transaction if I have many call transaction
Hi, experts, please help,
My program will call transaction VK11 repeatly (one by one). They all use same condition table (e.g. A005). When I run using mode = 'N', each call transaction returns sy-subrc = 0. But the conditon records are not created. But when I change to mode = 'D' the condition records are created.
Since VK11 is a very simple transaction, it let me feel the VK11 BDC process too fast and backend SAP not able to handle them one by one.
Any one has same problem? Any idea?
Thanks.Hi,
After calling transaction check the messages table. If there are no errors then do like this.
DO 5 TIMES.
COMMIT WORK AND WAIT.
CHECK sy-subrc IS INITIAL.
EXIT.
ENDDO.
If this also does not work then give an explicit wait statement.
COMMIT WORK AND WAIT.
WAIT UPTO 4 seconds.
We also had similar problem when we try to call sequence of transactions i.e if first transaction is success then call second.
But even the first transaction was success second one was failing because of time lag in data base updation. Even do loop also did not worked for one transaction. after that we gave both commit work and wait & wait upto 5 seconds. Now it is working fine.
Hope this will resolve ur issue.
Thanks,
Vinod. -
Hi Team,
I am new to OAF and is working on a requirement to add some custom validations when the user clicks on a Button in a standard seeded page.
The approach I took was to Extend the seeded Controller object that handled this button press event and put my custom logic in the extended controller and override the standard controller via personalization.
The standard flow was that upon pressing the Complete Button in Page A ,user was taken to the next seeded page (Page B) to perform certain operations based on the records that were selected in Page A.
Part of the custom validation requirement was that if certain validations were not met then the user needs to be shown a Pop-up asking if they really wanted to proceed and if they selected Yes then continue with the standard seeded flow(move to page B) and if they selected NO then just stay on the current page.
I was able to use OADialogPage and do this partially , the issue I am running into is that once the user selects the one or more records using a check box from a multi-record (table) region and hits the Complete Button on page A and if the validation fails then a modal page is shown and the user makes a selection i.e.either Yes or No from the modal page and when they return to calling page (i.e. Page A) , All the Data (records ) that they selected previously is lost (Page is refreshed). Based on what I see on this forum I suspect that it is because after clicking on Yes on the modal page and while returning to the original page the processRequest fires again and VO data is queried again and all selections on the page A are lost. Since I am trying to alter the flow in seeded pages based on user intervention I am kind of lost as to how this issue can be fixed. i.e. either prevent the page refresh or preserve the selections that were made prior to navigating to the modal page. Any Help is truly appreciated !!
My Code :
public void processFormRequest(OAPageContext oapagecontext, OAWebBean oawebbean)
if (oapagecontext.getParameter("completeOps") != null) {
if (warnCount > 0) {
//OAException message = new OAException("Not in Sequence...", OAException.WARNING);
//oapagecontext.putDialogMessage(message);
OAException message = new OAException("Rule XYZ Violated .Do you want continue ?",OAException.WARNING);
OADialogPage dialogPage = new OADialogPage(OAException.WARNING, message, null, "","");
String yes = oapagecontext.getMessage("AK", "FWK_TBX_T_YES", null);
String no = oapagecontext.getMessage("AK", "FWK_TBX_T_NO", null);
dialogPage.setOkButtonItemName("ConYesButton");
dialogPage.setNoButtonItemName("ConNoButton");
dialogPage.setOkButtonToPost(true);
dialogPage.setNoButtonToPost(true);
dialogPage.setPostToCallingPage(true);
dialogPage.setOkButtonLabel(yes);
dialogPage.setNoButtonLabel(no);
oapagecontext.redirectToDialogPage(dialogPage);
if (oapagecontext.getParameter("ConYesButton") != null) {
// Write Action code for Yes Button
oapagecontext.putParameter("completeOps", "Continue");
if (oapagecontext.getParameter("ConNoButton") != null){
// Write Action code for No Button
String errormsg = "Rule Violations have occured ";
throw new OAException(errormsg);
super.processFormRequest(oapagecontext, oawebbean);I was able to work around this issue by adding a simple check in the processRequest method of my extended Controller to prevent the call to super.processRequest incase when the control returns to the page after the user has made a selection in the Dialog Page
if((oapagecontext.getParameter("ConYesButton") == null) && (oapagecontext.getParameter("ConNoButton") == null)) {
super.processRequest(oapagecontext, oawebbean);
Thanks ! -
CALL A TRANSACTION IN SIMPLE REPORT AND RETURN BACK TO REPORT
I 'VE A REQUIREMENT IN WHICH I HAVE TO MAKE A REPORT PROGRAM. IN THIS REPORT PROGRAM I HAVE TO CALL A TRANSACTION cs11 IN BACKGROUND AND THEN PICK ITS OUTPUT VALUE (DISPLAYED IN alv GRID OF cs11) AND THEN RETURN BACK TO MAIN PROGRAM. DO SOME CALCULATION WITH THE BROUGHT DATA AND THEN DISPLAY THEM ON THE REPORT alv OUTPUT.
iS THIS POSSIBLe? IF YES? HOW.
PLEASE HELP.try creating two reports.....ztest_a and ztest_b
do your call transaction in ztest_b
in ztest_a you can write submit ztest_a and return....
see if this works...
Message was edited by:
Priyank Jain -
Hi guys please give me sample code for call transaction that handles error
hi guys, please give me sample code for call transaction that handles error,
please send me the sample code in which there should be all decleration part and everything, based on the sample code i will develop my code.
please do help me as it is urgent.
thanks and regards.
prasadnn.Hi Prasad,
Check this code.
Source Code for BDC using Call Transaction
*Code used to create BDC
*& Report ZBDC_EXAMPLE *
*& Example BDC program, which updates net price of item 00010 of a *
*& particular Purchase order(EBELN). *
REPORT ZBDC_EXAMPLE NO STANDARD PAGE HEADING
LINE-SIZE 132.
Data declaration
TABLES: ekko, ekpo.
TYPES: BEGIN OF t_ekko,
ebeln TYPE ekko-ebeln,
waers TYPE ekko-waers,
netpr TYPE ekpo-netpr,
err_msg(73) TYPE c,
END OF t_ekko.
DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
wa_ekko TYPE t_ekko,
it_error TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
wa_error TYPE t_ekko,
it_success TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
wa_success TYPE t_ekko.
DATA: w_textout LIKE t100-text.
DATA: gd_update TYPE i,
gd_lines TYPE i.
*Used to store BDC data
DATA: BEGIN OF bdc_tab OCCURS 0.
INCLUDE STRUCTURE bdcdata.
DATA: END OF bdc_tab.
*Used to stores error information from CALL TRANSACTION Function Module
DATA: BEGIN OF messtab OCCURS 0.
INCLUDE STRUCTURE bdcmsgcoll.
DATA: END OF messtab.
*Screen declaration
SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME
TITLE text-001. "Purchase order Num
SELECT-OPTIONS: so_ebeln FOR ekko-ebeln OBLIGATORY.
SELECTION-SCREEN END OF BLOCK block1.
SELECTION-SCREEN BEGIN OF BLOCK block2 WITH FRAME
TITLE text-002. "New NETPR value
PARAMETERS: p_newpr(14) TYPE c obligatory. "LIKE ekpo-netpr.
SELECTION-SCREEN END OF BLOCK block2.
*START-OF-SELECTION
START-OF-SELECTION.
Retrieve data from Purchase order table(EKKO)
SELECT ekkoebeln ekkowaers ekpo~netpr
INTO TABLE it_ekko
FROM ekko AS ekko INNER JOIN ekpo AS ekpo
ON ekpoebeln EQ ekkoebeln
WHERE ekko~ebeln IN so_ebeln AND
ekpo~ebelp EQ '10'.
*END-OF-SELECTION
END-OF-SELECTION.
Check data has been retrieved ready for processing
DESCRIBE TABLE it_ekko LINES gd_lines.
IF gd_lines LE 0.
Display message if no data has been retrieved
MESSAGE i003(zp) WITH 'No Records Found'(001).
LEAVE TO SCREEN 0.
ELSE.
Update Customer master data (instalment text)
LOOP AT it_ekko INTO wa_ekko.
PERFORM bdc_update.
ENDLOOP.
Display message confirming number of records updated
IF gd_update GT 1.
MESSAGE i003(zp) WITH gd_update 'Records updated'(002).
ELSE.
MESSAGE i003(zp) WITH gd_update 'Record updated'(003).
ENDIF.
Display Success Report
Check Success table
DESCRIBE TABLE it_success LINES gd_lines.
IF gd_lines GT 0.
Display result report column headings
PERFORM display_column_headings.
Display result report
PERFORM display_report.
ENDIF.
Display Error Report
Check errors table
DESCRIBE TABLE it_error LINES gd_lines.
If errors exist then display errors report
IF gd_lines GT 0.
Display errors report
PERFORM display_error_headings.
PERFORM display_error_report.
ENDIF.
ENDIF.
*& Form DISPLAY_COLUMN_HEADINGS
Display column headings
FORM display_column_headings.
WRITE:2 ' Success Report '(014) COLOR COL_POSITIVE.
SKIP.
WRITE:2 'The following records updated successfully:'(013).
WRITE:/ sy-uline(42).
FORMAT COLOR COL_HEADING.
WRITE:/ sy-vline,
(10) 'Purchase Order'(004), sy-vline,
(11) 'Old Netpr'(005), sy-vline,
(11) 'New Netpr'(006), sy-vline.
WRITE:/ sy-uline(42).
ENDFORM. " DISPLAY_COLUMN_HEADINGS
*& Form BDC_UPDATE
Populate BDC table and call transaction ME22
FORM bdc_update.
PERFORM dynpro USING:
'X' 'SAPMM06E' '0105',
' ' 'BDC_CURSOR' 'RM06E-BSTNR',
' ' 'RM06E-BSTNR' wa_ekko-ebeln,
' ' 'BDC_OKCODE' '/00', "OK code
'X' 'SAPMM06E' '0120',
' ' 'BDC_CURSOR' 'EKPO-NETPR(01)',
' ' 'EKPO-NETPR(01)' p_newpr,
' ' 'BDC_OKCODE' '=BU'. "OK code
Call transaction to update customer instalment text
CALL TRANSACTION 'ME22' USING bdc_tab MODE 'N' UPDATE 'S'
MESSAGES INTO messtab.
Check if update was succesful
IF sy-subrc EQ 0.
ADD 1 TO gd_update.
APPEND wa_ekko TO it_success.
ELSE.
Retrieve error messages displayed during BDC update
LOOP AT messtab WHERE msgtyp = 'E'.
Builds actual message based on info returned from Call transaction
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
msgid = messtab-msgid
msgnr = messtab-msgnr
msgv1 = messtab-msgv1
msgv2 = messtab-msgv2
msgv3 = messtab-msgv3
msgv4 = messtab-msgv4
IMPORTING
message_text_output = w_textout.
ENDLOOP.
Build error table ready for output
wa_error = wa_ekko.
wa_error-err_msg = w_textout.
APPEND wa_error TO it_error.
CLEAR: wa_error.
ENDIF.
Clear bdc date table
CLEAR: bdc_tab.
REFRESH: bdc_tab.
ENDFORM. " BDC_UPDATE
FORM DYNPRO *
stores values to bdc table *
--> DYNBEGIN *
--> NAME *
--> VALUE *
FORM dynpro USING dynbegin name value.
IF dynbegin = 'X'.
CLEAR bdc_tab.
MOVE: name TO bdc_tab-program,
value TO bdc_tab-dynpro,
'X' TO bdc_tab-dynbegin.
APPEND bdc_tab.
ELSE.
CLEAR bdc_tab.
MOVE: name TO bdc_tab-fnam,
value TO bdc_tab-fval.
APPEND bdc_tab.
ENDIF.
ENDFORM. " DYNPRO
*& Form DISPLAY_REPORT
Display Report
FORM display_report.
FORMAT COLOR COL_NORMAL.
Loop at data table
LOOP AT it_success INTO wa_success.
WRITE:/ sy-vline,
(10) wa_success-ebeln, sy-vline,
(11) wa_success-netpr CURRENCY wa_success-waers, sy-vline,
(11) p_newpr, sy-vline.
CLEAR: wa_success.
ENDLOOP.
WRITE:/ sy-uline(42).
REFRESH: it_success.
FORMAT COLOR COL_BACKGROUND.
ENDFORM. " DISPLAY_REPORT
*& Form DISPLAY_ERROR_REPORT
Display error report data
FORM display_error_report.
LOOP AT it_error INTO wa_error.
WRITE:/ sy-vline,
(10) wa_error-ebeln, sy-vline,
(11) wa_error-netpr CURRENCY wa_error-waers, sy-vline,
(73) wa_error-err_msg, sy-vline.
ENDLOOP.
WRITE:/ sy-uline(104).
REFRESH: it_error.
ENDFORM. " DISPLAY_ERROR_REPORT
*& Form DISPLAY_ERROR_HEADINGS
Display error report headings
FORM display_error_headings.
SKIP.
WRITE:2 ' Error Report '(007) COLOR COL_NEGATIVE.
SKIP.
WRITE:2 'The following records failed during update:'(008).
WRITE:/ sy-uline(104).
FORMAT COLOR COL_HEADING.
WRITE:/ sy-vline,
(10) 'Purchase Order'(009), sy-vline,
(11) 'Netpr'(010), sy-vline,
(73) 'Error Message'(012), sy-vline.
WRITE:/ sy-uline(104).
FORMAT COLOR COL_NORMAL.
ENDFORM. " DISPLAY_ERROR_HEADINGS
Hope this resolves your query.
Reward all the helpful answers.
Regards -
Calling a transaction and return
Hi all,
I need to call a transaction from a report and the control has to return back to the report after the called transaction is executed.
The "Call Transaction" statement does not have the option to have the return to the calling program neither do "Leave Transaction".How do I achieve it?
Pls help with your ideas.
Thanks,
StockHi,
I am trying to call the customised copy program of CO99( named new Tcode as ZCO99 with all the values of selection screen passed to memory id and imported in the copy program) through another report.
Now I tried with submit as well and the result is the same.
Another thing is with the Pop-up that we have when the CO99 Tcode is called which is for Controlling Area.Two pop-ups at the start and in between.
Does this prevent from returning to the cliing program.
Thanks,
Stock
Maybe you are looking for
-
i've a report and it was divided into two groups and this is in matrix format. the 1st group is ok but i'm having problem with the 2nd group wherein the data does not pan to the right.. if someone could help me..i can send the rtf and my xml file..
-
How can I get firefox in my application folder? I lost it while trying to upgrade to firefox 4? I don't it in my dock. My computer is Mac 10.4 older one. Can you help me?
-
Screen has white lines across it. Can barely read Screen. Is it fixable?
Someone was throwing my phone and it hit the back of laptop. Not even that hard. But now lines are all over screen.
-
Where are the Exercise files?
I am looking on a tutorial at https://helpx.adobe.com/creative-cloud/tutorials/videos/aftereffects-create-first-project- cc.html?product=aftereffects&path=fundamentals and the turor mentions the 'Exercise files. I understand that this course is borro
-
Does G5 1.8 GHz write to dual layer DVDs?
I have large picture library that's more than a normal DVD can hold, but will fit on a dual layer DVD. When I put the DL disk in, my Mac just spits it out. It won't even recognize it. G5, machine model PowerMac9,1, PowerPC g5 (3.0). Pioneer DVD-RW DV