MIRO Header Customer Screens
Hi all,
We want to enhance MIR7 and MIRO txn screens to add own screen and data at header level. The data is populated and stored at custom tables. Which BADI or user exit will help us in getting custm tab screen at header level.
Prashant
hi Prashant,
Its Difficult task...To add a screen and to add fields and then have a link between fields and a table to store those values requires a very details ABAP coding....
Hope it helps...
Regards
Priyanka.P
Similar Messages
-
Adding the customer screen to enhance the header for Enjoy PO
Dear Expert's,
My requirement is to add a new tab on Header for Enjoy PO by enhancing ME21N/ME22N and ME23N.
I have already implemented the BADI's ME_GUI_PO_CUST and ME_PROCESS_PO_CUST.
Actions Taken:
I have created a custom Function group and subscreen '9000'.
I have created a 'Z' structure as per the screen layout on the Header Tab
I have appended the custom fields in EKKO custom include CI_EKKO.
Reactions:
1. I am able to successfully display the screen on additional tab at header level.
2. The Display & Change is working perfectly for screen '9000' on ME21N/ME22N and ME23N header.
Problem:
I am unable to read the 'Z' fields from EKKO to populate the TAB Screen '9000' and neither able to save the 'Z' fields from '9000' TAb screen for header data.
I am not using any EXIT for this and have to use only BADI for this solution. Please help me to implement this solution using BADI only.
Also i have tried implementaing the transport Data object -> Model + Model -> Dynpro + Dynpro -> Model + Model -> Data object methods, but these methods are not getting triggered.
Please let me know if i can use EVENT_PBO & EVENT_PAI if yes , than how to trigger these events and where..?Hi ,
try to enhance PO header using SAP Note 407975
Summary
Symptom
You are using SAP customer enhancement MM06E005. There is no sample source
code for this enhancement.
More Terms
User exit, customer enhancement, MM06E005, example, sample
Cause and Prerequisites
You want to activate user exit MM06E005. Note that this is a consulting
note and not a correction of the user exit.
Solution
You can use the sample source code attached here to recognize the basic
functions of the exit. This example is, however, only one of many options
that are offered by the customer enhancement.
The sample source code includes the following functions:
o Supply of an additional field on header level
o Supply of an additional field on item level
o Derivation of a field on item level from the copied reference
document
Now, in order to be able to use the sample source code, you must create
field ZZFLAG on the header level of the document and field ZZFIELD on the
item level.
Double-click on Include table CI_EKKODB
Enter the following values:
- Name Component type DType Length DecPlace Short text
- ZZFLAG CHAR1 CHAR 1 0 1-digit indicator
Save and activate the include table.
Double-click on Include table CI_EKPODB
Enter the following values:
- Name Component type DType Length DecPlace Short Text
- ZZFIELD CHAR1 CHAR 1 0 1-digit indicator
Save and activate the include table.
In order to activate the sample source code, you additionally have to carry
out the following changes on screens 0101 and 0111.
1. Screen 0101: Create the following fields:
2010.02.05 Page 2 of 3
SAP Note 407975 - MM06E005: Collective note: Examples for
implementation
"Checkbox" Name: EKKO_CI-ZZFLAG
2. Screen 0111: Create the following fields:
"Input/output field" Name: EKPO_CI-ZZFIELD
"Pushbutton" Name: BUTTON
FctCode: ZZDETERMINE
The following assignments apply to the sample source code:
EXIT_SAPMM06E_006 --> LXM06F36
EXIT_SAPMM06E_007 --> LXM06F38
EXIT_SAPMM06E_008 --> LXM06F37
EXIT_SAPMM06E_009 --> LXM06F39
EXIT_SAPMM06E_016 --> LXM06F41
EXIT_SAPMM06E_017 --> LXM06F42
EXIT_SAPMM06E_018 --> LXM06F40
Copy the source code from the attachment and insert it into the
corresponding function modules. Save and activate the function modules.
Create the following variables in the corresponding TOP include in order
not to get any syntax errors:
INCLUDE ZXM06TOP
data: gl_aktyp type c,
gl_no_screen type c,
gl_rekko like ekko,
gl_ekko_ci like ekko_ci,
gl_ekpo_ci like ekpo_ci,
gl_ekpo like ekpo,
gl_ucomm like sy-ucomm.
types: begin of ekpo_tab,
ebeln like ekpo-ebeln,
ebelp like ekpo-ebelp,
ekpo like ekpo,
end of ekpo_tab.
data: gt_ref_ekpo_tab type table of ekpo_tab.
Save and activate the TOP include.
On header level, you can now store a character, X or space, via field
ZZFLAG on the database with the document and read it also again.
On item level, you can fill field ZZFIELD with a one-digit value and save
it with the document. If you copy this document, the system displays an
additional function button on tab page "Customer data". If you press this
button, the value of the reference document is copied to field ZZFIELD.
If you want to store the source code as sample source code in your system,
start Transaction SMOD. Enter MM06E005 as an enhancement. Select
"Components". Press "Change". Position the cursor on the corresponding
module and choose "Sample code". Create the corresponding include and copy
2010.02.05 Page 3 of 3
SAP Note 407975 - MM06E005: Collective note: Examples for
implementation
the source code from the note. Save the include. Note that, of course,
syntax errors may occur when you check components. This is because the
includes of the sample code are not integrated into a program but rather
are completely independent and, therefore, do not have any relationship to
each other either. For this reason, only save the include and do not
activate or check it. The sample code has to be copied into the
corresponding function modules in order to become active.
If you use the user exit in the new purchase order, it is not guaranteed
that the customer screen is always processed. To make sure that possible
required fields are checked, include a corresponding message into the
EXIT_SAPMM06E_012. This screen is always processed. -
How to call a Custom screen in portal from a Poratal UWL ??
How to display a Custom screen which is developed in portal when a work item is executed through the
portal-UWL ?.
In detail....
A custom screen has been developed in portals.
Workflow triggers when a new item is created on the custom screen then the workitem gets populated in the respective approver Portal UWL(universal work list).
when the workitem is executed from the UWL then it has to display the custom screen with its header data on the portal.Hi sampath,
Thanks. I found that the redirection is not working
properly at IIS end and changed the configuaration to
make it work.
Thanks a lot,
Gopi -
MIRO of Custom duty in case of Assets
Dear Sir,
While posting of MIRO for custom duty i(Planned delivery cost(n account assigned assets for non valuated material sytem is posting value as
Vendor account credit
Asset account debit
my asset is debited by total custom duty including CVD ,ECS and SEcess. but I am taking credit of it in excise.
At the time of taking 'CVD credit system is passing following entries
Cenvat clearing Cr
RG23C BED DR
RG23CECS DR
Cenvat on hold DR
Please advice how my cenvat clearing account is nullify
Best regards,
Jeewan OberoiFonzie,
You would add the Custom Trigger server behavior. Under the Developer Toolbox>Forms>Custom Trigger.
The Custom Trigger Wizard has 2 tabs, Basic and Advanced. I usually leave the box in the basic tab blank. You can add your php code here, but I prefer to add my Custom Trigger code to the Dreamweaver Code View directly.
The Advanced Tab allows you to name your Trigger/function and you can set the execution order. Trigger's are registered to transactions Update, Insert, and/or Delete. You specify wether you want the Trigger to execute BEFORE or AFTER the Update/Insert/Delete transaction. By default this is set to AFTER.
Priority allows you to control execution order of the transactions and triggers. You can have multiple triggers and control the order they execute.
So I usually start the Custom Trigger Wizard and go right to the Advanced tab. I name my Trigger, and set the execution order. Then I close the Wizard. Then I go to the Dreamweaver Code View, and you will see something like this:
//start Trigger_Custom trigger
function Trigger_Custom(&$tNG) {
//end Trigger_Custom trigger
Add your code between the { } and add
header("Location: error_page.php");
exit;
for the redirecting.
Shane -
Could not get Custom screen in me21n after implementing Badi ME_GUI_PO_CUST
Hi.,
I created implementation for the badi ME_GUI_PO_CUST... but i could not get the Tab and screen in header tab.
also used below link in the forum to correct the issue ....but dint help me .
Custom screen not displaying using BADI ME_GUI_PO_CUST
Pls help me how to go abt...
Thanks,
Ranjitha.Hi ....
Now the tab is reflecting in me22n & me23n but not in me21n ......can anybody tell what could be the reason?
thanks
ranjitha -
Hi All,
I have added custom screen with two z fields at item level using BADI ME_GUI_PO_CUST and ME_PROCESS_PO_CUST i can see my screen in tcodes ME21N , ME22N , ME23N but I am not able to save data.
and also screen is coming in change mode even in ME23N .
thanks.Hi,
I have added two xfields at item level.
This is the code i have added in zimplementation ZME_GUI_PO_CUST .
IN Zimplementation ME_PROCESS_PO_CUST I have added code only in method FIELDSELECTION_ITEM . after doing this I can see only screens in ME21N, ME22N, ME23N but when enter data in zfields and trying to save it is giving me message no data has changed.
method IF_EX_ME_GUI_PO_CUST~SUBSCRIBE.
DATA: ls_subscriber LIKE LINE OF re_subscribers.
we want to add a customer subscreen on the item detail tab
CHECK im_application = 'PO'.
CHECK im_element = 'ITEM'.
each line in re_subscribers generates a subscreen. We add one subscreen in this example
CLEAR re_subscribers[].
the name is a unique identifier for the subscreen and defined in this class definition
ls_subscriber-name = subscreen1.
the dynpro number to use
ls_subscriber-dynpro = '0001'.
the program where the dynpro can be found
ls_subscriber-program = 'SAPLYMEPOBADIEX'.
each subscreen needs his own DDIC-Structure
ls_subscriber-struct_name = 'MEPO_BADI_STRUCT'.
a label can be defined
ls_subscriber-label = text-001.
the position within the tabstrib can be defined
ls_subscriber-position = 4.
the height of the screen can be defined here. Currently we suport two screen sizes:
value <= 7 a sevel line subscreen
value > 7 a 16 line subscreen
ls_subscriber-height = 7.
APPEND ls_subscriber TO re_subscribers.
ENDIF.
method IF_EX_ME_GUI_PO_CUST~TRANSPORT_FROM_MODEL.
DATA: l_item TYPE REF TO if_purchase_order_item_mm,
ls_mepoitem TYPE mepoitem,
ls_customer TYPE mepo_badi_exampl.
system asks to transport data from the business logic into the view
CASE im_name.
WHEN subscreen1.
is it an item? im_model can be header or item.
mmpur_dynamic_cast l_item im_model.
CHECK NOT l_item IS INITIAL.
transport standard fields
ls_mepoitem = l_item->get_data( ).
transport customer fields
CALL FUNCTION 'YMEPOBADIEX_GET_DATA'
EXPORTING
im_ebeln = ls_mepoitem-ebeln
im_ebelp = ls_mepoitem-ebelp
IMPORTING
ex_data = ls_customer.
store info for later use
MOVE-CORRESPONDING ls_mepoitem TO dynp_data_pbo.
MOVE ls_customer-badi_bsgru TO dynp_data_pbo-badi_bsgru.
MOVE ls_customer-badi_afnam TO dynp_data_pbo-badi_afnam.
WHEN OTHERS.
ENDCASE.
endif.
method IF_EX_ME_GUI_PO_CUST~TRANSPORT_TO_DYNP.
CASE im_name.
WHEN subscreen1.
CALL FUNCTION 'YMEPOBADIEX_PUSH'
EXPORTING
im_dynp_data = dynp_data_pbo.
WHEN OTHERS.
ENDCASE.
ENDIF.
endmethod.
method IF_EX_ME_GUI_PO_CUST~TRANSPORT_FROM_DYNP.
CASE im_name.
WHEN subscreen1.
CALL FUNCTION 'YMEPOBADIEX_POP'
IMPORTING
ex_dynp_data = dynp_data_pai.
IF dynp_data_pai NE dynp_data_pbo.
something has changed therefor we have to notify the framework
to transport data to the model
re_changed = mmpur_yes.
ENDIF.
WHEN OTHERS.
ENDCASE.
ENDIF.
endmethod.
method IF_EX_ME_GUI_PO_CUST~TRANSPORT_TO_MODEL.
DATA: l_item TYPE REF TO if_purchase_order_item_mm,
ls_mepoitem TYPE mepoitem,
ls_customer TYPE mepo_badi_exampl.
data have to be transported to business logic
CASE im_name.
WHEN subscreen1.
is it an item? im_model can be header or item.
mmpur_dynamic_cast l_item im_model.
CHECK NOT l_item IS INITIAL.
ls_mepoitem = l_item->get_data( ).
standard fields changed?
IF dynp_data_pbo-matkl NE dynp_data_pai-matkl OR
dynp_data_pbo-plifz NE dynp_data_pai-plifz OR
dynp_data_pbo-webaz NE dynp_data_pai-webaz.
update standard fields
ls_mepoitem-matkl = dynp_data_pai-matkl.
ls_mepoitem-plifz = dynp_data_pai-plifz.
ls_mepoitem-webaz = dynp_data_pai-webaz.
CALL METHOD l_item->set_data( ls_mepoitem ).
ENDIF.
CALL FUNCTION 'YMEPOBADIEX_GET_DATA'
EXPORTING
im_ebeln = ls_mepoitem-ebeln
im_ebelp = ls_mepoitem-ebelp
IMPORTING
ex_data = ls_customer.
ls_customer-badi_bsgru = dynp_data_pai-badi_bsgru.
ls_customer-badi_afnam = dynp_data_pai-badi_afnam.
CALL FUNCTION 'YMEPOBADIEX_SET_DATA'
EXPORTING
im_data = ls_customer.
ENDIF.
WHEN OTHERS.
ENDCASE.
ENDIF.
method IF_EX_ME_PROCESS_PO_CUST~FIELDSELECTION_ITEM.
DATA: l_persistent TYPE mmpur_bool.
CONSTANTS:
FIELD-SYMBOLS: <fs> LIKE LINE OF ch_fieldselection.
l_persistent = im_item->is_persistent( ).
*IF l_persistent EQ mmpur_yes.
READ TABLE ch_fieldselection ASSIGNING <fs> WITH TABLE KEY
metafield = MMMFD_YYMAN_NUM."fd_cust_01.
IF sy-subrc IS INITIAL.
<fs>-fieldstatus = '*'. " Display <-- this one was as per the sample code given.
<fs>-fieldstatus = '+'. " Input <-- this i added to make the field mandatory.
ENDIF.
READ TABLE ch_fieldselection ASSIGNING <fs> WITH TABLE KEY
metafield = MMMFD_YYMAN_DES."fd_cust_01.
IF sy-subrc IS INITIAL.
<fs>-fieldstatus = '*'. " Display <-- this one was as per the sample code given.
<fs>-fieldstatus = '+'. " Input <-- this i added to make the field mandatory.
ENDIF.
*ENDIF.
ENDIF.
endmethod. -
Custom Screen doesn't display properly
I am on SRM 5.5 and I have created a custom screen with a custom field in all the proper structures it's supposed to be in. The screen has been generated into HTML and it has a service. I am calling the screen in the BADI BBP_CUF_BADI. The field is showing properly, but my problem is that my custom screen is not displaying where I expect. If I generate the HTML template as a type classic, it doubles my fields when it displays and it shows them at the top of the header above all the other standard fields.
If I create my HTML template as WEBGUI, it covers the entire Header section and displays partly at the top over the standard buttons on the screen and partly at the bottom after the last header field. I presume the custom screen should display after the last header field. Does anyone know why the screens behave differently when I generate the templates as Classic (shows twice) versus WEBGUI and does anyone know what I might be doing wrong?
Points will be rewarded.
Thanks,
MartyHi
There seems like a bug in the SRM system...
Have you created a bespoke service in this case ? Please give some more insights in next reply ?
Meanwhile, go through the links which might help ->
Contract Custom fields are not showing
Re: New Tab in Bid Process Screen
Re: New screen with table control information in Process Bid Invitation
BBP_CUF_BADI_2
Regards
- Atul -
How to make a field in custom screen as display field in screen exit
Hi ,
I have created a screen exit for CO02 with a field for item text in header level as input field , when value is given and save button is cliked it gets updated in database but the problem is same field shows as input field in CO03 ( display mode ) .
Code which i have used .
in PBO
if sy-tcode = 'CO03'.
loop at screen .
if screen-name cs 'SUBSCREEN' or screen-name cs 'RESB-POTX1'.
( subscreen - screen name given in screen editor and resb-potx1 field name given in screen editor )
SCREEN-INPUT = '0'.
modify screen.
endif.
endloop.
endif.
and even i tried in PAI too .....
if sy-tcode = 'CO01' or sy-tcode = 'CO02'.
update resb set POTX1 = RESB-POTX1
where aufnr = i_aufnr.
elseif sy-tcode = 'CO03'.
*oop at screen .
*f screen-name cs 'SUBSCREEN' or screen-name cs 'RESBD-SORTF'.
SCREEN-INPUT = '0'.
modify screen.
endif.
endloop.
endif.
but itshows as input field only ........how to make that custom field as display field in CO03HI Andy,
Try this out.
FIrst check the sy-dynnr, if it is same as your custom screen number
in PBO of your custom screen
if sy-dynnr = 'YOUR_NUMBER' and sy-tcode = 'CS03'.
loop at screen
if screen-name = 'YOUR_SCREEN_NAME'
screen-input = 0.
modify screen
endif
endloop.
endif.
if it wont work they try using Tcode SHD0
Hope this will serve your purpose.
Regards
Ramchander Rao.K -
Hi,
I have a question regarding search help on screen.
I have searched, but did not find anything for my requirement.
Here is my requirement...............
I have a drop down on one of the field of the custom screen. This dropdown has three items to choose from.
e.g.
Dropdown has PO, Reservation and Pcard.
And the other custom field is "Source". I want to put seach help on "Source" field.
So my requirement is to when user chooses PO in dropdown, they should get search help for PO on "Source" field.
And when user chooses Reservation in dropdown, they should get search help for Reservation on "Source" field.
Is it possible to that? If yes, then how should i proceed for that?
Any help would be appriciatable!!
Thanks in Advance .HI Varam.
Plesae copy this code and Paste in ABAP Editor and Format properly You will know it as it is appearing in Continuous Lines
And i dont know how to rectify it. Hopp you understand it
-->In Screen PVO
-->PROCESS ON VALUE-REQUEST.
--> FIELD Screen-Field MODULE f4_get.
-->in program
-->MODULE f4_get INPUT.
DATA : BEGIN OF f4_tab OCCURS 0,
define Required Fields here
END OF f4_tab.
GET CURSOR FIELD fnam VALUE fval.
DATA : dynpread TYPE TABLE OF dynpread WITH HEADER LINE.
refresh dynpread.
dynpread-fieldname = 'Screen-Field'.
APPEND dynpread.
CLEAR dynpread.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = sy-repid
dynumb = sy-dynnr
TRANSLATE_TO_UPPER = ' '
REQUEST = ' '
PERFORM_CONVERSION_EXITS = ' '
PERFORM_INPUT_CONVERSION = ' '
DETERMINE_LOOP_INDEX = 'X'
START_SEARCH_IN_CURRENT_SCREEN = 'X'
START_SEARCH_IN_MAIN_SCREEN = 'X'
START_SEARCH_IN_STACKED_SCREEN = ' '
START_SEARCH_ON_SCR_STACKPOS = ' '
SEARCH_OWN_SUBSCREENS_FIRST = ' '
SEARCHPATH_OF_SUBSCREEN_AREAS = ' '
TABLES
dynpfields = dynpread
EXCEPTIONS
invalid_abapworkarea = 1
invalid_dynprofield = 2
invalid_dynproname = 3
invalid_dynpronummer = 4
invalid_request = 5
no_fielddescription = 6
invalid_parameter = 7
undefind_error = 8
double_conversion = 9
stepl_not_found = 10
OTHERS = 11
IF sy-subrc IS INITIAL.
READ TABLE dynpread WITH KEY fieldname = 'Screen-field'.
IF sy-subrc IS INITIAL.
SELECT Your Fields FROM Required FIelds
INTO TABLE f4_tab
WHERE Required Condions.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
DDIC_STRUCTURE = ' '
retfield = 'RETURN FIELD' To which the F4 value to be passed on to screen
PVALKEY = ' '
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = 'Screen-Field' --> All single Quote Values to be Capital Letters
STEPL = 0
WINDOW_TITLE =
VALUE = ' '
value_org = 'S'
MULTIPLE_CHOICE = ' '
DISPLAY = ' '
CALLBACK_PROGRAM = ' '
CALLBACK_FORM = ' '
MARK_TAB =
IMPORTING
USER_RESET =
TABLES
value_tab = f4_tab
FIELD_TAB =
RETURN_TAB =
DYNPFLD_MAPPING =
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 2
OTHERS = 3
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.
ENDIF.
ENDMODULE. " f4_get INPUT
Edited by: Ramchander Krishnamraju on Oct 31, 2009 4:32 AM -
Custom screen for ME21n - BADI issue
hi,
I had implemented BADI ME_GUI_PO_CUST for ME21n/me22n. The control is going to Subscribe and Map Dynpro methods but the control is not going to other methods like TRANSPORT_FROM_MODEL, TRANSPORT_TO_DYNP, TRANSPORT_FROM_DYNP and TRANSPORT_TO_MODEL.
Please explain how we can make the control to move to these methods. not sure what is missing in the implementation"Customer Data" on ME21N/ME22N uses the SMOD enhancement MM06E005. Screen 0101 is used for Header Customer Data. So, when you navigate through this screen it doesn't go through the TRANSPORT* methods.
You can also use the BADI ME_GUI_PO_CUST to add your additional tabs in ME21N. You need to use the method SUBSCRIBE to set the Program, Subscreen number and other details. When you do the subscribe method, it would call the TRNSPORT* methods. Check the example code given in the class CL_EXM_IM_ME_GUI_PO_CUST.
Regards,
Naimesh Patel -
Custom Screen in Shopping cart
Hi Guys,
I am currently trying to use the BADi BBP_CUF_BADI to get a custom screen in my Shopping Cart header.
I created a new custom screen & followed all the steps required.
I implemented the BADI & actiavted it. To my surprise the custom screen that i cretaed is visible in the carryout sourcing section (instead of the shopping cart section). That is not what i require. I suppouse this is beacuse of the settings that are made in the BADI.
Under the subscreens tab of the BADI i have maintained the following values:
Call Program : SAPLBBP_SC_UI_ITS
Scr.No : 140
Subscreen area : GC_SUB_COMPLETE_CUSTOMERFIELDS.
Can anyone tell me what details are to be maitained, so that we can get the custom screen in shopping cart section.Hi
Pls refer to the following SAP OSS Notes -
Note 825569 - Customer Field (CUF). Customer screens are not called
Note 458591 - User-defined fields: Preparation and use
Note 672960 - User-defined fields 2
Note 812679 - BBP_CUF_BADI calls the incorrect template
You should start with a training on web developement with Internet Transaction Server (ITS).
ITS is emulating SAP GUI transaction into a web transaction.
To do this you need:
- the SAP GUI transaction, program, PBO, PAI...
- the ITS templates
For each SAP transaction, there is an ITS service.
For each SAP dynpro, ITS requires an HTML template.
So if you use the BADI to call your custom screen (a dynpro from program Z), you must also create the corresponding HTML template.
If no template is provided, then ITS will use the webgui service to emulate the screen.
Pls reward suitable points.
Regards
- Atul -
Custom screen lisbox and button
Hello Friends. How to add a custom screen field lisbox and a button to an existing sales order header view. The listbox is a screen field (not a CUSTOMERH field). What are the steps besides copying the view .Please suggest.
I do not know the answer about existing JSF components, but here is something that might work for you
Drop a Grid Panel component where you want the text field and button.
Set the columns property to 2.
Drop a Text Field Component in the Grid Panel. Then Drop a Button component. If they don't drop in the right order, use the Outline window to rearrange.
Try setting the width (setColumns) of the Text Field component in the prerender method. The button should nicely sit to the right, and you should not have overlap.
Hope this helps,
Chris -
How to create PO through BAPI from custom screen
Hi SAP Technical Guru,
i am new to module pool programming.
i designed custom screen which is like TA me21n means it has one tabstrip and tablecontrol.
for header details(fields) at tab strip, and item detials(fields) at table control i used.
now i have to capture screen fields into FM bapi_po_create1 and update the database tables.
please suggest me how to create Purchase Order through BAPI FM.
regards,here is the sample code
*tables for passing podata to bapi
DATA : gt_header TYPE STANDARD TABLE OF bapimepoheader,
gt_headerx TYPE STANDARD TABLE OF bapimepoheaderx,
gt_item TYPE STANDARD TABLE OF bapimepoitem,
gt_itemx TYPE STANDARD TABLE OF bapimepoitemx,
gt_account TYPE STANDARD TABLE OF bapimepoaccount,
gt_accountx TYPE STANDARD TABLE OF bapimepoaccountx,
*tables used for passing custom field data to bapi
gt_custom TYPE STANDARD TABLE OF bapiparex,
gt_custdata_in TYPE STANDARD TABLE OF bapi_te_mepoaccounting,
gt_custdata_ix TYPE STANDARD TABLE OF bapi_te_mepoaccountingx,
*tables used for cathing messages returned by bapi
gt_return TYPE STANDARD TABLE OF bapiret2,
gt_return1 TYPE STANDARD TABLE OF bapiret2,
*Work area declaration for passing custom field data to bapi
w_custom LIKE LINE OF gt_custom,
w_custdata_in LIKE LINE OF gt_custdata_in,
w_custdata_ix LIKE LINE OF gt_custdata_ix,
*Work area declaration for passing podata to bapi
w_header LIKE LINE OF gt_header,
w_headerx LIKE LINE OF gt_headerx,
w_item LIKE LINE OF gt_item,
w_itemx LIKE LINE OF gt_itemx,
w_account LIKE LINE OF gt_account,
w_accountx LIKE LINE OF gt_accountx,
*work area declaration for cathing messages returned by bapi
w_return LIKE LINE OF gt_return,
w_return1 LIKE LINE OF gt_return1.
*populating po dat into internal tables
w_header-comp_code = 'PH02'.
w_header-doc_type = 'TEST'.
w_header-vendor = '0000600019'.
w_header-purch_org = 'PH02'.
w_header-pur_group = '901'.
w_headerx-comp_code = 'X'.
w_headerx-doc_type = 'X'.
w_headerx-vendor = 'X'.
w_headerx-purch_org = 'X'.
w_headerx-pur_group = 'X'.
w_item-po_item = '00001'.
w_item-short_text = 'test po'.
w_item-po_unit = 'CM'.
w_item-matl_group = '01'.
w_item-po_unit = 'EA'.
w_item-plant = 'PH02'.
w_item-quantity = '1.000'.
w_item-net_price = '10.00'.
w_item-item_cat = '0'.
w_item-acctasscat = 'K'.
APPEND w_item TO gt_item.
w_itemx-po_item = '00001'.
w_itemx-short_text = 'X'.
w_itemx-matl_group = 'X'.
w_itemx-po_unit = 'X'.
w_itemx-plant = 'X'.
w_itemx-stge_loc = 'X'.
w_itemx-quantity = 'X'.
w_itemx-tax_code = 'X'.
w_itemx-net_price = 'X'.
w_itemx-item_cat = 'X'.
w_itemx-acctasscat = 'X'.
APPEND w_itemx TO gt_itemx.
w_account-po_item = '00001'.
w_account-serial_no = '01'.
w_account-quantity = '1.000'.
w_account-gl_account = '0000199999'.
w_account-costcenter = '0000400011'.
APPEND w_account TO gt_account.
w_accountx-po_item = '00001'.
w_accountx-serial_no = '01'.
w_accountx-quantity = 'X'.
w_accountx-gl_account = 'X'.
w_accountx-costcenter = 'X'.
APPEND w_accountx TO gt_accountx.
w_custdata_in-po_item = '00001'.
w_custdata_in-serial_no = '01'.
w_custdata_in-zzttry = '1000'.
w_custom-structure = 'BAPI_TE_MEPOACCOUNTING'.
MOVE w_custdata_in TO w_custom-valuepart1.
APPEND w_custom TO gt_custom.
w_custdata_ix-zzttry = 'X'.
w_custdata_ix-po_item = '00001'.
w_custdata_ix-serial_no = '01'.
w_custom-structure = 'BAPI_TE_MEPOACCOUNTINGX'.
MOVE w_custdata_ix TO w_custom-valuepart1.
APPEND w_custom TO gt_custom.
*bapi to create po oreders
CALL FUNCTION 'BAPI_PO_CREATE1'
EXPORTING
poheader = w_header
poheaderx = w_headerx
TABLES
return = gt_return
poitem = gt_item
poitemx = gt_itemx
poaccount = gt_account
poaccountx = gt_accountx
extensionin = gt_custom.
*bapi for po data commit
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = ' '
IMPORTING
return = w_return1.
*clearing tables & work area
REFRESH:gt_account,gt_item,gt_itemx,gt_accountx.
CLEAR:w_header,w_headerx.
*displaying message returned by bapi
LOOP AT gt_return INTO w_return.
WRITE: w_return-type , w_return-id , w_return-number , w_return-message .
ENDLOOP. -
Identifying changes in the custom screen added to Delivery
Hello,
I have added a custom screen in delivery transaction(VL02n) at header level. I used BADI LE_SHP_TAB_CUST_HEAD to do that. Now if user comes and enters some data on the custom screen, then goes to menu option Subsequent processing-->Create Transfer Order, user is not prompted with a pop up screen to save changes.
It happens with SAP Standard screens for any data changes. How do we achieve the same functionality to prompt a popup message for any changes in the custom screen and save the data?
Thanks
AnilHi Appana,
Yes, we can identify any screen changes from sy-datar. It is set when I make any changes in the custom screen also. But I dont want to give a pop up every time I leave the custom screen. I want to give raise a pop up for saving the delivery document just like any other SAP screen (For eg. SAP Screens do not give a pop up when we move from one screen to another screen, but it gives a pop up if we try to do a subsequent functions like picking without saving the changes in delivery).
Thanks
Anil -
Using BBP_CUF_BADI to display custom screens
I am using BBP_CUF_BADI to display my customer screen on the Shopping Cart Item Screen. How do I pass data to my custom screen? I would like to display my CUF fields, I would like the data from the standard fields on the Shopping Cart line item. Any help would be appreciated.
Hi Jagathi,
You'll name the FM as you want.
The pupose of these 2 FM is to exchange data between the BADIs methods and the Function Group (with global data of the FG).
The 1st FM is to be called from the PUT_DATA method of the BADI, to send data to the Function Group (FG global data): for example items and/or header and iv_mode, ...
The 2nd FM is to be called from the GET_DATA method of the BADI to get the result of the subscreen (CUF changes).
Hope you'll get it all.
Vadim
Maybe you are looking for
-
Hardware key is not displayed in SAP B1 8.81
Hi, We installed SAP B1 8.81(Evaluation version). Hardware key is exists in Service manager -> Licence Manger. But it is not displaying in Client System 's Help -> About SAP Business one. Please let me know how to retrieve hardware key.
-
I have a requirement to capture a PDF report at a scheduled time (ie out of hours) and store on the DB. The reason behind this is that the data is purged every few hours (hundreds of millions of rows) and so they would like to capture the stats befor
-
Can I disable the ESC key in camera raw?
When working in Photoshop in general, I've gotten into the habit of using the ESC key to get out of a tool I'm currently using, but when using Camera Raw, this has the consequence of closing the image I've been working on without saving any of the ed
-
Can´t sync iphoto properly after OS4 update
geez I am going mad, after inszalling OS4 I cannot sync properly iphoto with my iphone. I did a restore from backup but it did not help. It either tells me that it is not possible to copy to or from iphone or it just says there is no free space on th
-
Discovered new Volume on managed storage is shown as "unmanaged"
Hello, I'm working with OVM 3.1.1.305 and a managed storage device (ETERNUS). 2 volumes are configured on my storage device and this volues are used for repository and cluster file system. With the storage plug in it is possible create new physical d