ME21N / ME22N - material PO text blank / obligatory
Hi experts,
I have a requirement where I need to make the material PO text in ME21N / ME22N obligatory for all items in some types of POs. Also, this text must not be changed after saving the PO.
I am already using the enhancement MM06E005 (EXIT_SAPMM06E_012). Inside the include, I'm importing the table CATALOG from the memory id SAPLSTXD. Using this table is fine, but the problem is that the user can add blank lines (pressing enter once or twice), and the table CATALOG recognizes the user has inputted valid text. Then, I have a few questions:
1. Is there any way this can be achieved through customizing? (Except for the blank lines, I suppose)
2. Is there any way to retrieve the text inputted by the user during runtime? I've tried to access the table GT_CONTROL-TEXTLINES, but it only contains the text for the current item / text type being displayed at that moment.
3. During debug, I've found some standard memory IDs with the name SAPLSTXD<item number>, which I presume that contain the texts. Does anyone know the names of the tables inside those memory IDs? Or how to access them?
TIA,
Leo
Hi Leonardo Schmidt ,
1) Not sure, but probably by customizing you will not be able to make Item Long Text mandatory.
2)Try the following,Under the method CHECK of BADI ME_PROCESS_PO_CUST, there is an interface called IF_LONGTEXTS_MMGET_TEXT, which should help to resolve your issue. Or you can even use method PROCESS_ITEM of the same BADI, there is an interface called IF_LONGTEXTS_MMGET_TEXT.
Thanks & Regards,
Faheem.
Similar Messages
-
ME23N Material PO Text (Automatically Adopt Material PO Text)
Hi SAP Experts,
My company have just upgraded to ECC6.0. When creating Purchase Order using ME21N, the "Material PO Text" is fetched from the Material Master MM03. When we view the Print Preview using ME23N, we are able to see the text there, but when we actually print the form NEU out, the "Material PO Text" is missing. This problem didn't exist before the upgrade, has anyone have come across this?
Hi,
Does anyone knows where in SPRO can I configure so that the "Material PO Text" is automatically adopted from the Material Master. Curently we need to press the button for every line item to adopt the text.
Thanks
Edited by: jamison2004 jordan2004 on Nov 9, 2010 4:31 AMHi ,
Please check if you are using smb40 smart forms for printing . We had the same issue where the Material PO text was not getting printed and the reply from SAP is as follows .
The smartforms /smb40/ were delivered by SAP Best Practices for
R/3 4.70 system,which will not be available in the ECC600 system.
Also that were never tested and enhanced in the ECC600 system.
So It is out support scope if smartforms /smb40/ are used in ECC600
system.
Limitation:
3. This workaround is for the customer who are using Preconfigure
Smartform /SMB40/* in the 470 or 500 system.
4. This workaround is not available for ECC600 system,it is not
supported
4) 843193 SAP Best Practices for Preconfigured SmartForms
Solution
Now, the preconfigured SmartForms are delivered with
the country-specific SAP Best Practices Baseline and Industry packages.
Please check http://service.sap.com/bestpractices for availability.
That means you must use Best Practices Package if you want to use
smartforms.
More release version for Best Practices Package you can find from
http://help.sap.com-->Best Practices
-Hari, -
ME21N: "Material PO text" in EXIT
People,
In ME21N, under some conditions, we would like to create a text in "Material PO text" for each item. This text will be create when the PO is saved, in EXIT EXIT_SAPMM06E_012.
In this exit I´m using:
CALL FUNCTION 'INIT_TEXT'
EXPORTING
id = 'F03'
language = sy-langu
name = lc_name
object = 'EKPO'
IMPORTING
header = lc_header
TABLES
lines = ti_lines_ni
EXCEPTIONS
id = 1
language = 2
name = 3
object = 4
OTHERS = 5.
CALL FUNCTION 'SAVE_TEXT'
EXPORTING
header = lc_header
insert = ''
savemode_direct = 'X'
IMPORTING
newheader = lc_header
TABLES
lines = ti_lines_ni
EXCEPTIONS
id = 1
language = 2
name = 3
object = 4
OTHERS = 5.
CALL FUNCTION 'COMMIT_TEXT'
EXPORTING
object = lc_header-tdobject
name = lc_header-tdname
id = lc_header-tdid
language = lc_header-tdspras.
===============================
The text does not appear automatically (after save the PO).
But if we change to Display Mode, the text appears! What else I have to do to display the text immediatelly?
Thanks a lot!Where did you check the text (ME22N / ME23N)??
-
In PO -Me21N Material PO text field non editable
Dear All ,
We have specific requirment in PO (ME21N). In Item level ther is free text field "Item Texts". In Item texts we have 4 text fields
(1) Item Text
(2) Info Record PO text
(3) Material Po text
(4) Deivery Text
As per our configuration in "Material PO text" Material long description picking from Material master .We want to make this text field Non Editable.
In SAP there is facility to configure non editable Texts , But it will non editable all text fields.
How we can non editable only Material Po text .
Thanks in Advance.
Regards
Abhishek TiwariDear Chetan,
I think you have not understood my complete question. First thing i dont want to non editable Short text field.
In my problem i In Item level ther is free text field "Item Texts". In Item texts we have 4 text fields
(1) Item Text
(2) Info Record PO text
(3) Material Po text
(4) Deivery Text
In above text fields ,I want to non editable only "Material PO Text" only....
Regards
Abhishek Tiwari -
PO (Tcode- ME21N) In Item Text "Material PO text" to be non editable
Dear All ,
We have specific requirment in PO (ME21N). In Item level ther is free text field "Item Texts". In Item texts we have 4 text fields
(1) Item Text
(2) Info Record PO text
(3) Material Po text
(4) Deivery Text
As per our configuration in "Material PO text" Material long description picking from Material master .We want to make this text field Non Editable.
In SAP there is facility to configure non editable Texts , But it will non editable all text fields.
How we can non editable only Material Po text .
Thanks in Advance.
Regards
Abhishek TiwariHi,
As of my knowledge, there is no purchase organization specific texts exits. But you may make use of the purchase organization specific text in vendor master. You may define purchase organization specific text for vendor master and then maintain the text in vendor master. You may configure to copy the vendor master text to PO automatically. Refer the doc: Copy Control in MM (Conditions, Fields and Texts): (3rd part)
Regards,
AKPT -
BADI for Disabling NetPrice field in ME21N & ME22N based of Material Type.
Hi.
I had a requirement to disable "net price" field while creating or changing a PO (ME21N & ME22N) based on the type of material entered.
Please asssit me in finding the BADI or exit name which can meet my requirement. Thanks.Hi Ranga nadh,
The BAdi what you have mentioned is correct.
ME_PROCESS_PO_CUST - In this BAdi, we are having a method PROCESS_ITEM. These method is used to process all the Item data. As the field Netprice is at the level. You can use this method.
Here inside this method we are having a parameter IM_ITEM
So, You create a implementation and inside this method you can code here to appear the field in disable mode.
Cheers,
Swamy Kunche -
Material descri screen level field greyout in ME21N/ME22N/ME23N-Urgent
Hi,
I have a requirement in ME21N/ME22N/ME23N is that when i want to change a PO, the material short description field should be grey out after the material is entered in the item level.
Can anybody suggest me how to do screen level field greyout in ME21N/ME22N/ME23N.
Thanks in advance,
EsakiHi,
This query can be solved by modifying some configuration part. Your MM consultant in project can do this or you can also try this following meintioned path: Goto tcode SPRO
SPRO>Materials Management>Purchase Order-->Define Screen layout at document level.
In this screen layout for the mentioned transactions ME21N/ME22N/ME23N ,material short description field can be greyed out by selecting display mode for that field.
For more clarification refer documentation against this point in SPRO.
Hope this solves your problem.
Regards,
Brajvir -
Material PO text to be only Displayed in PO
Hi ,
My requirement is I need to only display the Material PO text in PO .Which is copied from Material Master in PO.
User should not be allowed to changed once it gets copied in PO.
Thanks for inputs
Regards
Amar> User should not be allowed to changed once it gets copied in PO.
One option you can do is to make the make the Text field in display, so that Text will get copied only from Material & will be uneditable , For making Text field as display go through T-code OLME -> Purchase Order -> Define Screen Layout at Document Level -> Do the setting for Field selection ME21N, ME22N & NBF. -
Material item text not appearing in PO Print Preview
Hi experts,
We have created a new PO type . We have assigned it with PO text via Spro>Purchasing>Purchase Order > Message > Text for messages > define text for purchase order
Maintained text for document header
Maintained text for document item
But still in Purchase Order , the material PO text at item level , is not appearing at the time of print preview / print out.
Please suggest .
Regards,
( Rajneesh Gulati )If I understand correctly, you want to copy the purchase order text from the material master directly into the PO's for this material.
I got the same problem; text appears in PO item text, but doesn't appear on print preview.
=> check your forms first
=> if you can't find an error here, check the copying control in
SPRO -> Materials Management -> Purchasing -> Purchase Order -> Texts for purchase orders -> Define copying rules for item texts
go to the text linkages of the text type that you want to see appearing
=> make sure that the entries with source object 'material master' have the Fix value (blank) rather than N or * (if you see the text appearing in the PO but not on the print out, this means that this setting is currently set on *)
Hope this helps -
ABAP runtime error while doing ME21N, ME22N, ME23N, ME51N,ME52N, ME53N
Dear All Expert,
I am facing problem while doing ME21N, ME22N, ME23N, ME51N,ME52N, ME53N,
Please find the below ABAP Runtime Error.
Runtime Errors LOAD_TYPE_VERSION_MISMATCH
Date and Time 10.02.2011 11:13:07
Short text
Change of a Dictionary structure at runtime of a program.
What happened?
Runtime error
The current ABAP program "CL_IM_WRF_MM_PROC_PO==========CP" had to be
terminated because one
of the statements could not be executed at runtime.
What can you do?
Restart the program.
If the error persists, contact your SAP administrator.
You can use the ABAP dump analysis transaction ST22 to view and manage
termination messages, in particular for long term reference.
Error analysis
The ABAP runtime system detected that the Dictionary-type "WRF_POHF_KOMP_STY"
changed
during the flow of the transaction.
As the type was already used in the old version
and in the new type should be used in the same transaction in the new
version, the transaction had to be cancelled to avoid inconsistencies.
How to correct the error
Try to restart the program.
System environment
SAP-Release 700
Application server... "iqe"
Network address...... "172.25.0.85"
Operating system..... "Linux"
Release.............. "2.6.9-55.ELsmp"
Hardware type........ "x86_64"
Character length.... 16 Bits
Pointer length....... 64 Bits
Work process number.. 0
Shortdump setting.... "full"
Database server... "iqe"
Database type..... "ORACLE"
Database name..... "IQE"
Database user ID.. "SAPSR3"
Terminal................. "MUMJML5727"
Char.set.... "C"
SAP kernel....... 700
created (date)... "Dec 26 2010 20:17:07"
create on........ "Linux GNU SLES-9 x86_64 cc3.3.3"
Database version. "OCI_102 (10.2.0.2.0) "
Patch level. 285
Patch text.. " "
Database............. "ORACLE 10.1.0.., ORACLE 10.2.0.., ORACLE 11.2...*"
SAP database version. 700
Operating system..... "Linux 2.6"
Memory consumption
Roll.... 16192
EM...... 25139088
Heap.... 0
Page.... 40960
MM Used. 8038136
MM Free. 4528408
User and Transaction
Client.............. 600
User................ "JKMM"
Language key........ "E"
Transaction......... " "
Transactions ID..... "4D524AD1FD7A42F9E1000000AC190055"
Program............. "CL_IM_WRF_MM_PROC_PO==========CP"
Screen.............. " "
Screen line......... " "
Information on where terminated
The termination occurred during generation of the ABAP/4 program
"CL_IM_WRF_MM_PROC_PO==========CP".
The termination occurred in line 213
of the source code of program "CL_IM_WRF_MM_PROC_PO==========CM007" (when
calling the editor 2130).
Source Code Extract
Line SourceCde
183 DATA: l_flag TYPE wrf_pbas_boolean.
184
185 CALL FUNCTION 'WRF_POHF_MSG_READ_PREVIEW_FLAG'
186 IMPORTING
187 e_preview_flag = l_flag.
188
189 IF NOT l_flag IS INITIAL.
190
191 DATA: l_header TYPE REF TO cl_po_header_handle_mm.
192
193 MOVE im_header ?TO l_header.
194
195 CALL METHOD l_header->if_output_mm~preview( ).
196
197 CALL FUNCTION 'WRF_POHF_MSG_RESET_PREV_FLAG'.
198
199 ***$ Widening Cast for printing information.
200 ** CALL FUNCTION 'WRF_POHF_STORE_PRINT_INFO_SET'
201 ** EXPORTING
202 ** im_header = l_header.
203
204 * Printing Preview
205 * IF NOT gv_preview IS INITIAL.
206 * CALL METHOD l_header->if_output_mm~overview( ).
207 * CALL METHOD l_header->if_output_mm~preview( ).
208 * clear gv_preview.
209 ENDIF.
210
211 * ENDIF.
212
>>>>> ENDMETHOD.
Internal notes
The termination was triggered in function "ab_RxDdicStruShareFailed"
of the SAP kernel, in line 2539 of the module
"//bas/700_REL/src/krn/runt/abtypload.c#11".
The internal operation just processed is " ".
Internal mode was started at 20110210111306.
Name of the changed type......: "WRF_POHF_KOMP_STY"
New version of the type.......: 20070508193207
Old version of the type.......: 20070508193207
New user......................: "Type" "WRF_POHF_KOMP_STY"
Version of the new user.......: 20070508193207
Old user......................: "???" "???"
Version of the old user.......: "???"
Active Calls in SAP Kernel
Lines of C Stack in Kernel (Structure Differs on Each Platform)
(CTrcStack2+0x78)[0x6cbb78]
(CTrcStack+0xb)[0x6cc17b]
(ab_rabax+0x3be5)[0xb8d985]
(_Z24ab_RxDdicStruShareFailedPKtm4RUDIS0_S1_S0_+0x163)[0xb16823]
(_Z19ab_GetDdicTypeIndexPKtm4RUDI+0x1f6)[0xb0dbb6]
(_Z11ab_LoadViewPtjPKtPK11PROGRAMHEADPj+0x27e)[0xb16ede]
(_Z18ab_GetDdicTypeLoad4RUDI+0x6e)[0xb1705e]
(ab_GetView+0xc1d)[0xb0ee1d]
(_Z20CompressInitRcByDatajPK6CG_DIRjjS1_jj4RUDIPKhj+0x60d)[0xe32b2d]
(_Z21cg_CompressStackFrameP4TRIGjj+0x169)[0xe33399]
(_Z8cg_blkleP3ENV+0x75f)[0xe4779f]
(_Z9sc_cblklePKt8ENV_KINDP7SC_INFO+0x394)[0xe90024]
(sc_blkle+0xdd)[0xec6e4d]
(rs_oper_abap1729+0x37)[0x10eb237]
(rs_expan_abap+0xa1996)[0xfd7a2a]
(_Z8sc_expanj+0x76d)[0xe1d55d]
(_Z5parsejPi+0x258)[0xe19998]
(sc_check+0xb9c)[0xe1857c]
(sc_inclu+0x5fa)[0xe0d50a]
(rs_oper_abap2160+0x3a)[0x1115d6a]
(rs_expan_abap+0xcd41d)[0x10034b1]
(_Z8sc_expanj+0x76d)[0xe1d55d]
(_Z5parsejPi+0x258)[0xe19998]
(sc_check+0xb9c)[0xe1857c]
(sc_checkStart+0x41)[0xe1ac51]
(cg_generate+0xb65)[0xe57755]
(ab_gabap+0x14a)[0xb01a5a]
(dy_gen_abap+0x63c)[0x74428c]
(ab_genprog+0x13d3)[0xb03d13]
(_Z17ab_LoadProgOrTrfoPKtjPj+0xb56)[0x8f9ab6]
(_Z11ab_LoadProgPKtj+0x11)[0x8f9ca1]
(_Z15LoadGlobalClassPKtjjj9ClasState+0x24c)[0x958c2c]
(_Z11FillCfixIntPK4CREFP4CFIXjj9ClasState+0x214)[0x957404]
(_Z11ab_FillCfixtj+0x65)[0x957ae5]
(_Z26ab_CrefToCladId_ActivateOKtPh+0x7d)[0x957b6d]
(_Z8ab_jaboov+0x623)[0x959793]
(_Z8ab_extriv+0x607)[0x8ba9c7]
(_Z9ab_xeventPKt+0x1c1)[0xa1c021]
(_Z8ab_triggv+0x9c)[0xa1c77c]
(ab_run+0x97)[0xbde5c7]
(N_ab_run+0x9)[0x736359]
(dynpmcal+0x669)[0x7333b9]
(dynppai0+0x8eb)[0x734d9b]
(dynprctl+0x3e9)[0x733db9]
(dynpen00+0x4a5)[0x726eb5]
(Thdynpen00+0x359)[0x541bd9]
(TskhLoop+0xc49)[0x54d999]
(ThStart+0x20f)[0x55b29f]
(DpMain+0x2da)[0x4bd49a]
(nlsui_main+0x9)[0x4910c9]
(main+0x33)[0x491103]
/lib64/tls/libc.so.6(__libc_start_main+0xdb)[0x3cde51c3fb]
Please help me to resolve the issue.
Thanks & Regards
SKKread this part again: The ABAP runtime system detected that the Dictionary-type "WRF_POHF_KOMP_STY" changed during the flow of the transaction. As the type was already used in the old version and in the new type should be used in the same transaction in the new version, the transaction had to be cancelled to avoid inconsistencies. How to correct the error Try to restart the program
how often had you restarted ME21N before you posted this message?
In best case this message appears only once, because the program / or dictionary was changed while you executed ME21N
If many times, then contact your ABAPer, because then he probably did not transport all objects that were changed, or the objects have to be regenerated in your system. -
Dump While Executing ME21N, ME22N and ME23N
Hi,
Am getting the below Short Dump while executing ME21N, ME22N and ME23N.
Runtime Errors SYNTAX_ERROR
Date and Time 08.07.2009 15:41:00
|Short text
Syntax error in program "ME_PROCESS_PO_CUST============CP ".
|What happened?
| Error in the ABAP Application Program
|
| The current ABAP program "CL_EX_ME_PROCESS_PO_CUST======CP" had to be
| terminated because it has
| come across a statement that unfortunately cannot be executed.
|
| The following syntax error occurred in program
| "ME_PROCESS_PO_CUST============CP " in include
| "ME_PROCESS_PO_CUST============CM000 " in
| line 14:
| "The specified type cannot be converted into the target variables."
| " "
| " "
| " "
|
| The include has been created and last changed by:
| Created by: "SILABAP "
| Last changed by: "SILABAP "
| Error in the ABAP Application Program
|
| The current ABAP program "CL_EX_ME_PROCESS_PO_CUST======CP" had to be
| terminated because it has
| come across a statement that unfortunately cannot be executed.
|Error analysis
| The following syntax error was found in the program
| ME_PROCESS_PO_CUST============CP :
| "The specified type cannot be converted into the target variables."
| " "
| " "
| " "
|Trigger Location of Runtime Error
| Program CL_EX_ME_PROCESS_PO_CUST======CP
| Include CL_EX_ME_PROCESS_PO_CUST======CM001
| Row 1
| Module type (METHOD)
Module Name IF_EX_ME_PROCESS_PO_CUST~INITIALIZE
|Source Code Extract
|Line |SourceCde
|>>>>>|method IF_EX_ME_PROCESS_PO_CUST~INITIALIZE.
| 2| CLASS CL_EXIT_MASTER DEFINITION LOAD.
3
| 4| DATA l_badi TYPE REF TO ME_PROCESS_PO_CUST.
5
6
7
8
9
| 10| TRY.
11
| 12| GET BADI l_badi
| 13| CONTEXT me.
14
| 15| CALL BADI l_badi->INITIALIZE
| 16|.
17
18
19
| 20| CATCH CX_BADI_NOT_IMPLEMENTED CX_BADI_INITIAL_REFERENCE.
Please let me know is there any OSS note to resolve the Issue.
Thanks,
SubasHi,
when I try to do the same in my system SAP gives me an information message as follows:-
Changes to transported Business Add-In definitions are incompatible
Message no. ENHANCEMENT236
Diagnosis
This business add-in definition has already been transported. Subsequent changes could invalidate existing business add-in implementations.
System Response
The runtime behaviour is no longer predictable. Syntax errors or short dumps may occur.
Procedure
If possible, do not make these changes. Alternatively, create a new business add-in definition incorporating the changes and use it, along with the existing definition.
It clearly indicates that the BADI definition should not be changed if active implementations already exists.
I am really now not sure how to solve your issue.
Try deactiviting the standard BADI implementation.
Then again add the filter and then remove it.
And then try activating the BADI implementation once again.
Regards,
Ankur Parab -
Add new column in ITEM data of ME21N/ME22N/ME23N
Hi Experts,
We have a requirement to add a custom field in ITEM data of transactions ME21N, ME22N and ME23N. A new column is required that would appear as checkbox. We have already tried screen exit MM06E005 but it is adding a new tab and the new field under the ITEM DETAIL data. We have also read that BADI ME_GUI_PO_CUST would do the job but it will be under the ITEM DETAIL as well.
<<text removed>>
Thanks
Edited by: Matt on Mar 9, 2009 11:06 AM - expressions of urgency can be perceived as rudenessHi,
If you want to make the new field to appear as check box...Go to the screen layout from its module pool program --> right click on that field and Convert it to Check Box. This would help you.
Regards,
Swapna. -
Batch creation through ME21N, ME22N and MSC1N
Hi All,
Please note we are already using EXIT_SAPLV01Z_001, EXIT_SAPLV01Z_002, EXIT_SAPLV01Z_003, EXIT_SAPLCLFM_002, EXIT_SAPLV01Z_012, EXIT_SAPLV01Z_014 for Batch creation based on different logics for Material type, Plant and PO doc type and currently using these exits for logic it allows us to create new internal batch number during PO creation (ii) change already existing batch with some new number (of couse this number must not be used in some other PO) in PO change and (iii) create new internal batch number using MSC1N, by inputing plant, stor. loc etc. But currently i can create batch with 1 digit, 2 digit, and so on.
The requirement is to allow user to create batches only with 10 digits during:
(i)PO creation (ME21N)and PO change(ME22N) and also during
(ii) transaction MSC1N
currently in all three ME21N, ME22N or MSC1N it allows to create batch with 1 digit, 2 digit,3 digit and so on . i want to create batch with only 10 digit.
Please tell this is possible through configuration steps or some changes are required to be done in above said user exit.
Regards
Rahul ShuklaHi Jurgen,
Thanks for your reply.
In ME21N i am able to assign batch in PO
(1) By clicking on 'create' button appearing just side of Batch field in item Tab "Material". I think this create button is appearing due to user exit being applied here. Here it creates and assigns internal number automatically (from range 01in Batch_Clt) based on the Material type and Plant combination (Some logic defined in user exit)
(2) By putting any random number manually (both numeric and alphanumeric)whether 1 digit, 2 digit,3 digit in Batch field in item Tab "Material" it will accept and in this case also po is saved.
same way i can do changes in batch number in ME22N and able to save.
In MSC1N also due to user exit applied if i give Material number alone and enter, it assignes the internal batch number based on Material type and plant logic defined in user exit.here also if i input some random number manually in batch field it accepts and that random batch number is created for material.
Now i want that i should be able to put random batch number manually but that number must be out of the number ranges defined in Batch_CLT object (Also the number must be exact 10 digits length as is there in defined number ranges) and not any random alphanumeric number . Also i am not able to understand how it is accepting random alphanumeric number (like ABC111)although all number ranges defined are numeric only.Also external number range is 0008000001 - 0089999999 which is numeric only.
Regards
Rahul -
Incorrect characters in material PO text after upgrade
Hi there,
We have just upgraded from 4.6c to ECC 6.0 and have a problem with invalid characters on material PO text.
On the material master there is a long text description with the character "-". in ECC 6.0, these have been replaced with the character "?" or "#". Also, there are entries such as " " and " " included at the end of lines.
If you manually change the text via MM02, there is no problem, it saves the correct character.
Does anyone have any ideas what may be causing this?
thanks
DonalCheck the config in Materials Management --> Purchasing --> Purch Req --> Texts for Purch Reqs --> Define copying rules.
For your text, see the linkage with Material PO text. The fix indicator will be N. This means you cannot change it in PR. Change the config setting to blank and you will be able to change it in PR.
Hope this resolves,
Lakshman -
SOLUTION: tab not showing in ME21N/ME22N with badi ME_GUI_PO_CUST
Hi,
I implemented BADI's ME_GUI_PO_CUST and ME_PROCESS_PO_CUST to show a custom tab in the header section of ME21N, ME22N and ME23N.
But after implementing the BADI's, the tab showed up in ME23N, but not in ME21N and ME22N.
So I started looking for a solution in the SDN forum, and I saw that there were a LOT of people with the same problem, but nobody ever posted a solution.
So here is the solution:
So, I added the fields I wanted to show in the structure CI_EKKODB, implemented the BADI ME_GUI_PO_CUST (the methods SUBSCRIBE and MAP_DYNPRO_FIELDS), and the BADI ME_PROCESS_PO_CUST.
After that the tab showed up in ME23N, not in ME21N or ME22N.
So I found an SAP note saying the following:
Question:
I implemented the 'ME_GUI_PO_CUST' Business Add-In to display customer-
specific tab titles in the EnjoySAP purchase order. They are only shown in display mode (ME23N) however, not in create or change. Why?
Solution:
You may have forgotten to assign a field status to the user-defined fields on these tabs. As a result, the system automatically interprets the field status as 'hidden' in create and change modes. However if a tab contains only hidden fields, then the entire tab is set to hidden. In display mode, fields without a field status are automatically set to display. That is why the tab is displayed in this case.
To assign a field status to the user-defined fields, use the methods provided for this purpose in the Business Add-In 'ME_PROCESS_PO_CUST' (compare sample source code in the FIELDSELECTION_ITEM method).
So in my case, I had to add some code to the FIELDSELECTION_HEADER method of the BADI ME_PROCESS_PO_CUST.
This is the code:
method IF_EX_ME_PROCESS_PO_CUST~FIELDSELECTION_HEADER.
DATA: l_persistent TYPE mmpur_bool.
FIELD-SYMBOLS: <fs> LIKE LINE OF ch_fieldselection.
* if the item is already on the database, we disallow to change field badi_bsgru
l_persistent = im_header->is_persistent( ).
* IF l_persistent EQ mmpur_yes.
READ TABLE ch_fieldselection ASSIGNING <fs> WITH TABLE KEY metafield = mmmfd_cust_01.
IF sy-subrc IS INITIAL.
<fs>-fieldstatus = '*'. " Input
ENDIF.
* ENDIF.
endmethod.
But then, I realized that this BADI was never triggered. When I entered one of the transaction codes ME21N, ME22N or ME23N, the code in the fieldselection_header method was never executed.
So I went to transaction SE18, and entered ME_PROCESS_PO_CUST in 'Enhancement Spot' and pushed the button display.
And there in the tab 'Enhancement Implementations', I saw an implementation that was not mine, and that did not show up in the overview of the SE18 'BADI NAME' tab for the same BADI... which to me seems strange.
So as you may know, there can never be more than one active implementation of the BADI ME_PROCESS_PO_CUST.
So I disactivated my implementation and put my code in the existing implementation.
And after that it worked!implement first badi :ZME_GUI_PO_CUST:
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 = 'HEADER'.
* 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 = 'SAPLMEPOBADIEX'.
* 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.
ENDMETHOD.
implement 2nd badi : ZME_PROCESS_PO_CUST:
method IF_EX_ME_PROCESS_PO_CUST~FIELDSELECTION_HEADER.
DATA: l_persistent TYPE mmpur_bool.
FIELD-SYMBOLS: <fs> LIKE LINE OF ch_fieldselection.
* if the item is already on the database, we disallow to change field badi_bsgru
l_persistent = im_header->is_persistent( ).
* IF l_persistent EQ mmpur_yes.
READ TABLE ch_fieldselection ASSIGNING <fs> WITH TABLE KEY metafield = mmmfd_cust_01.
IF sy-subrc IS INITIAL.
<fs>-fieldstatus = '*'. " Input
ENDIF.
* ENDIF.
endmethod.
Maybe you are looking for
-
Deleting a row from a Parent VO gives NullPointerException
I am using JDev 11.1.1.2.0 Deleting a row from a Parent VO gives NullPointerException raised from oracle.jbo.server.EntityImpl.vetoRemoveWithDetails(EntityImpl.java:8214) Here is my implementation: There are two Entity Objects(Named "Parent" and "Chi
-
I need to send a complex vector print to a commercial printer who requires my .ai file to be saved as 1.3 PDF compatibility. All the graphics display & print correctly bar two elements: 1. A gradient with transparency applied 2. A repeat pattern swa
-
Hello. At first sorry for my english. I have encountered problem with DataGrid control. There is DataGrid control, which have custom ItemRenderer (MulticolorDataGridItemRenderer). This DataGrid control has several properties: 1) click on a row change
-
Dear all, My QAS offiline backup return error code .Following is a part of backup detail log,any answer will be appreciate, thank you in advance. BR0352I Decompressing /oracle/QAS/sapreorg/sr3.data10 BR0355I from /oracle/QAS/sapbackup/bedistwg/sr3.da
-
Can't edit photos in my MobileMe gallery in iPhoto '11
Hi, I have all my photos in my MobileMe gallery. Everything sync very well with iPhoto '11. But I'm surprised by the fact that I can't edit those photos. It keeps saying that the element I selected can't be modified in iPhoto '11. Is this because I d