Validation for Attatchments (Services for Object) in ME51N
Hi Experts,
Actually i will attatch any documents in Service for Objects when i create ME51n, Before it creates i need to throw error message if i didnt attatch any documents(*service for objects*) .I am unable to find this , kindly suggest any Badi or Enhancement spot for it.
Regards
Deepak Gonuru
Edited by: deepakg on Dec 31, 2011 9:59 AM
Hi ,
you need to search for BADI/EHN SPOT from where you can get class instance of cl_gos_manager ...
in ME51N program...search for GOS_MANAGER....
regards
Prabhu
Similar Messages
-
ME51N services for object- How to collective list attachment by Requisition
Hello!!
When create ME51N or Change ME52N a puechase requisition, the users use the Service for Object to attach some word, excel, pictures files as attachements.
There is away to see in a table or in a report what documents have an attachemnt and what not have it?Hi
There is no standard report for attachment list. But for a particular document you can view attachment by selecting services for object and view attachement lists.
Regards
M P D Kamath -
Creating Activity object for a Service Request object...
<b>[This thread was migrated from the On Demand Developer Forum in the old Siebel Community] </b>
drangineni
New Contributor
Ho do we use Activity object of a Service Request object. I am trying to
create an Activity object for a existing Service Request object.
I am looking for some sample code.
I greatly appreciate your help.
Product: CRM OnDemand
11-26-2006 12:40 PM
Re: Creating Activity object for a Service Request object...
BigSlick
Valued Contributor
drangineni, What programming language are you using?
BS
12-04-2006 10:56 AM
Re: Creating Activity object for a Service Request object...
drangineni
New Contributor
Hi, I am using C# .
12-04-2006 07:40 PM
Re: Creating Activity object for a Service Request object...
BigSlick
Valued Contributor
drangineni, assuming you know the service requestid or externalId of the
Sr you are dealin gwith you would first set that value.
ServiceRequest1[] objSRList =new ServiceRequest1[1];
objSRList[0] = new ServiceRequest1();
objSRList[0].ServiceRequestId = <YourSRId>;
Then you create an array of activities and initialize the first one:
objSRList[0].ListOfActivity = new Activity[1];
objSRList[0].ListOfActivity[0] = new Activity();
Now set the data fields
objSRList[0].ListOfActivity[0].Subject ="My Subject";
objSRList[0].ListOfActivity[0].Description ="My Description";
objSRList[0].ListOfActivity[0].Display = "Task"; //valid values are either
"Task" or "Appointment"
Then call the ServiceREquestInsertOrUpdate method on the ServiceRequest
WebService and pass in the above variable.
BS
12-06-2006 12:36 PM
Re: Creating Activity object for a Service Request object...
drangineni
New Contributor
Thank you BigSlick.
The following error is thrown when I use the
ServiceRequestInsertOrUpdate(objInput)
"No user key can be used for the Integration Component instance 'Service <br/>
Request_Action'.(SBL-EAI-04397)"
When I use the prxySrvcRequest.ServiceRequestInsert(objInput), no error is
thrown and the Activity gets added, but a new Service Request object is
created, but the Activity gets added to an existing Service Request
object. I greatly appreciate your help.
The following is the code:
int ActivityLength = 0;
WSOD_ServiceRequest.ServiceRequest1[] ServiceRequest = new
WSOD_ServiceRequest.ServiceRequest1[1];
ServiceRequest[0] = new WSOD_ServiceRequest.ServiceRequest1();
ServiceRequest[0].ServiceRequestId = this.Request.QueryString["id"];
ServiceRequest[0].ListOfActivity = new
WebSelfService.WSOD_ServiceRequest.Activity[ActivityLength + 1];
ServiceRequest[0].ListOfActivity[0] = new WSOD_ServiceRequest.Activity();
ServiceRequest[0].ListOfActivity[ActivityLength].Description =
this.txtDescription.Text;
ServiceRequest[0].ListOfActivity[ActivityLength].Display = "Task";
ServiceRequest[0].ListOfActivity[ActivityLength].Subject = "My Subject";
WSOD_ServiceRequest.ServiceRequest prxySrvcRequest = new
WebSelfService.WSOD_ServiceRequest.ServiceRequest();
WSOD_ServiceRequest.ServiceRequestWS_ServiceRequestInsertOrUpdate_Input
objInput = new
WebSelfService.WSOD_ServiceRequest.ServiceRequestWS_ServiceRequestInsertOrUpdate_Input();
WSOD_ServiceRequest.ServiceRequestWS_ServiceRequestInsertOrUpdate_Output
objOutput = new
WebSelfService.WSOD_ServiceRequest.ServiceRequestWS_ServiceRequestInsertOrUpdate_Output();
objInput.ListOfServiceRequest = ServiceRequest;
Session objSession;
objSession = (Session) Application["Session"];
prxySrvcRequest.Url = objSession.GetURL();
try
objOutput = prxySrvcRequest.ServiceRequestInsertOrUpdate(objInput);
catch(Exception e)
12-09-2006 09:53 AM
Re: Creating Activity object for a Service Request object...
drangineni
New Contributor
Thank you BigSlick.
The following error is thrown when I use the
ServiceRequestInsertOrUpdate(objInput)
"No user key can be used for the Integration Component instance 'Service <br/>
Request_Action'.(SBL-EAI-04397)"
When I use the prxySrvcRequest.ServiceRequestInsert(objInput), no error is
thrown and the Activity gets added, but a new Service Request object is
created, but the Activity gets added to an existing Service Request
object. I greatly appreciate your help.
The following is the code:
int ActivityLength = 0;
WSOD_ServiceRequest.ServiceRequest1[] ServiceRequest = new
WSOD_ServiceRequest.ServiceRequest1[1];
ServiceRequest[0] = new WSOD_ServiceRequest.ServiceRequest1();
ServiceRequest[0].ServiceRequestId = this.Request.QueryString["id"];
ServiceRequest[0].ListOfActivity = new
WebSelfService.WSOD_ServiceRequest.Activity[ActivityLength + 1];
ServiceRequest[0].ListOfActivity[0] = new WSOD_ServiceRequest.Activity();
ServiceRequest[0].ListOfActivity[ActivityLength].Description =
this.txtDescription.Text;
ServiceRequest[0].ListOfActivity[ActivityLength].Display = "Task";
ServiceRequest[0].ListOfActivity[ActivityLength].Subject = "My Subject";
WSOD_ServiceRequest.ServiceRequest prxySrvcRequest = new
WebSelfService.WSOD_ServiceRequest.ServiceRequest();
WSOD_ServiceRequest.ServiceRequestWS_ServiceRequestInsertOrUpdate_Input
objInput = new
WebSelfService.WSOD_ServiceRequest.ServiceRequestWS_ServiceRequestInsertOrUpdate_Input();
WSOD_ServiceRequest.ServiceRequestWS_ServiceRequestInsertOrUpdate_Output
objOutput = new
WebSelfService.WSOD_ServiceRequest.ServiceRequestWS_ServiceRequestInsertOrUpdate_Output();
objInput.ListOfServiceRequest = ServiceRequest;
Session objSession;
objSession = (Session) Application["Session"];
prxySrvcRequest.Url = objSession.GetURL();
try
objOutput = prxySrvcRequest.ServiceRequestInsertOrUpdate(objInput);
catch(Exception e)
12-10-2006 08:49 AM
Re: Creating Activity object for a Service Request object...
BigSlick
Valued Contributor
Ah yes, I forgot you also need to specify a unquie Id for the activity.
It's kinda strange.
Try adding this:
ServiceRequest[0].ListOfActivity[ActivityLength].ActivityId = "DummyId";
//OD will overwrite this with a real Id
Or if you have a unquie ID for your Activities you can use:
ServiceRequest[0].ListOfActivity[ActivityLength].ExternalSystemId = <Your
Unique Value>;
Hope that helps,
BS
12-11-2006 10:52 AM
Re: Creating Activity object for a Service Request object...
surgientweb
New Contributor
Hi all,
I have a similar problem, but mine is returning a message that field
"Display" is required. Looking at this post and the documentation it is
obvious that Display is a required field, but my WSDL did not include a
field called "Display", so my proxy did not generate one.
I tried adding a field called Display to the WSDL and the proxy class, but
I get a different error... I figure I maybe cannot add it manually like
that - but I think the bigger problem is it is not part of the WSDL that
Siebel OD generates for me in my admin account.
On top of that Display is not shown in the list of fields for Activity
through the admin interface.. is it possible my account is bugged? Am I
missing something simple here? BigSlick, I see you mention a .Display in
your code sample so I thought you might understand what is wrong. Here is
my code (I am trying to add a activity to a lead).
Thanks for any insight into this!
private void InsertLeadActivity(Session session, NameValueCollection data,
string leadID)
try
if (blnDebug)
Response.Write("Setting up Activity<br>";
// instantiate the proxy service
Activity_Service.Activity activityProxy = new Activity_Service.Activity();
// set up the target URL
activityProxy.Url = session.GetURL();
activityProxy.CookieContainer = session.GetCookieContainer();
// set up input argument
ActivityNWS_Activity_Insert_Input input = new
ActivityNWS_Activity_Insert_Input();
input.ListOfActivity = new Activity1[1];
input.ListOfActivity[0] = new Activity1();
if (blnDebug)
Response.Write("Getting Data<br>";
// dg note: name value
// input.ListOfActivity[0].MrMrs = data["MrMrs"];
input.ListOfActivity[0].LeadId = leadID.ToString();
input.ListOfActivity[0].Description = DataToString(data);
input.ListOfActivity[0].Subject = "Website Submission Activity";
input.ListOfActivity[0].Priority = "3-Low";
//input.ListOfActivity[0].DueDate =
DateTime.Now.AddDays(7).ToShortDateString();
input.ListOfActivity[0].Owner = this.defaultLeadOwner;
input.ListOfActivity[0].Type = "Call";
//input.ListOfActivity[0].Display = "Task";
input.ListOfActivity[0].ActivityId = "DummyId";
input.ListOfActivity[0].ExternalSystemId = "web";
activityProxy.Activity_Insert(input);
catch (Exception exInsertActivity1)
if (blnDebug)
Response.Write("<br>Error inserting activity.<br><br>" +
exInsertActivity1.ToString() + "<br>";
01-06-2007 05:05 PM
Re: Creating Activity object for a Service Request object...
surgientweb
New Contributor
Figured it out.. the field "Display" is also known as "Activity"........
Here are some notes for other people.. good luck and feel free to write me
at raskawa-at-gmail-com if you want a code sample.
Some unpublished nice to knows for Siebel On Demand Activities....
In summary:
- .Activity is also known as Display in documentation and on the error
messages coming back from the WS. Also, it appears based on these boards
some people actually have a .Display field. Maybe different accounts
generate different WSDL's.... buggy.
- If a error message is thrown saying "Description is required" it really
means "Subject is required" (make sure .Subject has a value)
- If a error message is thrown complaining that ActionType is not right..
that is really .Type.. make sure it's lookup value is valid for the
dropdown values in your CRM OD system.
My code/values that worked..
input.ListOfActivity[0].LeadId = leadID.ToString();
input.ListOfActivity[0].Description = DataToString(data);
input.ListOfActivity[0].Subject = "Website Submission Activity";
input.ListOfActivity[0].Priority = "3-Low";
//input.ListOfActivity[0].DueDate =
DateTime.Now.AddDays(7).ToShortDateString();
input.ListOfActivity[0].Owner = this.defaultLeadOwner;
input.ListOfActivity[0].Type = "Call";
input.ListOfActivity[0].ActivityId = "DummyId";
input.ListOfActivity[0].ExternalSystemId = "web";
//input.ListOfActivity[0].Display = "Task"; //doesn't work
input.ListOfActivity[0].Activity = "Task"; //does work.
01-06-2007 05:17 PM
Re: Creating Activity object for a Service Request object...
raskawa
First Time Contributor
Hi,
This is surgientweb (under my own login now..)
Anyway, I wanted to add that I figured out that there are two ways to add
a Activity to a Lead. Via the Lead object (by getting a ListOfActivities)
OR by creating a Activity directly and just adding your "LeadID" to it (or
you can also add a "ContactID" to relate the activity to a Contact.)
Feel free to email me for a code example (raskawa....at....gmail)
-David
01-09-2007 02:58 PMHi Stephane,
You can definitely read the categories using Tables in CRM. The logic is a bit complicated though.
Use the following steps to retrieve Categories using Std. CRM Tables:
1. Pass transaction GUID in field GUID of table CRMV_REPORT_SUBJ and get KATALOGART, CODEGRUPPE and CODE field values in lv_catalog, lv_codegrp and lv_code.
2. Now you need to concatenate these 3 fields values carefully like this:
CONCATENATE lv_catelog lv_codegrp ' ' lv_code into lv_category1.
Remember there are 4 spaces between lv_codegrp and lv_code.
3. Now pass this lv_category1 in field OBJEXT in table CRMC_ERMS_CAT_OK and get OBJGUID in field lv_objguid.
4. Pass this lv_objguid in field OBJ_GUID and LNK_TYPE = 'IS_CODE' in table CRMC_ERMS_CAT_LN and get value of CAT_GUID in lv_cat_guid.
5. Pass this lv_cat_guid in field CAT_GUID in table CRMC_ERMS_CAT_CA and get value of CAT_ID in field lv_cat_text.
Remember this lv_cat_text is the text value of your last level of category of transaction.
6. To get its upper cateogry level value, simply use table CRMC_ERMS_CAT_HI and get parent guid value and pass this as CAT_GUID again in table CRMC_ERMS_CAT_CA to get its text.
Alternatively, you can also use class method cl_crm_ml_category_util=>get_parse_all to get all levels of categories.
Hope this helps.
Thanks
Vishal -
I am unable to use services for objects while creating a PO
Hi All,
I am unable to use services for objects while creating a PO ie in me21n / Me22n .
Our client wants to attach some doucument along with the PO, we want to use services for object for this. I use this services for objects in admin level , but unable to use this at user level.
System gives the following message
No service available
Message no. SGOS_MSG002
Regards
GsgHi,
Refer the following OSS notes 552127, 598073
For getting Object for services icon in ME21N and ME51N refer OSS note 913251 -
Services for Object - Store Business Documents (issue with XLSX files)
Hi,
We are using the Services for Object > Store Business Document to be able to drag and drop files into (for example) Sales Inquiry, Sales Order, Sales Quotations etc.
Within OAC2 we have set up the global document types and these have been linked to the relevant Object Types and Content Repositories in OAC3. We have also set up the Content Repository as Document Area 'ARCHLINK'.
The ArhciveLink Basic Settings in OAG1 have the 'Always Copy Document Class from Document Type' set under Storage Settings.
The issue we are having is with XLSX document types. When we drag and drop the XLSX documen type using the Store Business Document the file is stored against the Sales Order but when you come to view the attachments MS Excel opens but an error message appears saying 'Excel cannot open the file '******' because the file format or file extension is not valid. Verify that the file has not been corrupted and that the file extension matches the format of the file'?
We have reviewed SAP notes 1925897, 1739026 and 1145885 however non appear to give me a clear answer as to why this is happening?
I have found that if we unselect the option 'Always Copy Document Class from Document Type' in OAG1 then we can open the XLSX files.
As we have a significant amount of documents attached to various objects, what would be the implications of making this change agianst existing records and new records?
Any advice on this issue would be greatly appreciated.
Gary BHi David,
No joy I'm afraid!!
I added entry 'xlslx' with the relevant MIME Type, Application and Description into table TOADD for the ArchiveLink settings and also this entry was already in tables SDOKMIME and SDOKFEXT for KPro.
I then following the process via the Services for Object within VA12 (Change Inquiry) to then Create > Store Business document > Select the relevant Document Type > Drag and Drop the XLSX file into the empty box.
I then saved the record and tried to view the attachement but I am still getting the same message 'Excel cannot open the file '******' because the file format or file extension is not valid. Verify that the file has not been corrupted and that the file extension matches the format of the file'?
Our client is on componet SAP_BASIS release 701 Support Level 0014 and Support Package SAPKB70114 and I can see that note 1237688 is for SAPKB70112?
Regards
Gary -
Attachments to Notifications - using "Services for Object"
Hi All,
I have sucessfully created a VC application (7.0 sp13) to create a General Notification in R/3
using the BAPI - IQS4_CREATE_NOTIFICATION
Our users in R/3 4.7 use the button in the Top Left Hand corner of the Screen "Services for Object"
to attach MS Word documents to Notifcations. Using the Create Attachment option from the Services for Object toolbar that pops up when the button is clicked.
Has anyone else tried this or have any advice on how this can be done in VC - if you can recommend a BAPI that I can try or will this be a custom ABAP BAPI.
Thanks in advance for any advice you can offer.
- RobertFUNCTION z_pm_attachment_and_url.
*"*"Interface local:
*" IMPORTING
*" VALUE(I_QMNUM) TYPE QMNUM OPTIONAL
*" VALUE(I_AUFNR) TYPE AUFNR OPTIONAL
*" VALUE(I_URL) TYPE SO_URL OPTIONAL
*" VALUE(I_FILE) TYPE ZPMCT002 OPTIONAL
*" VALUE(I_FILENAME) TYPE STRING OPTIONAL
*" TABLES
*" T_RETURN STRUCTURE BAPIRET2
* Objetos locais
DATA:
vl_url TYPE so_url,
vl_path TYPE string, "#EC NEEDED
vl_loopc TYPE sy-loopc,
vl_lines TYPE sy-loopc,
vl_filename TYPE string,
vl_filelength TYPE i,
it_url TYPE STANDARD TABLE OF sood-objdes,
it_obj_cont TYPE STANDARD TABLE OF solix,
wa_obj TYPE borident,
wa_obj_cont TYPE soli,
wa_obj_data TYPE sood1,
wa_folder_id TYPE soodk,
wa_document_id TYPE sofmk.
DEFINE valida_retorno.
loop at t_return into t_return.
if t_return-type eq zgtpm_e.
exit.
endif.
endloop.
if t_return-type eq zgtpm_e.
exit.
endif.
END-OF-DEFINITION.
* === Valida parâmetros de entrada
IF i_qmnum IS INITIAL AND i_aufnr IS INITIAL.
* Nenhum objeto informado: Informe Nota ou Ordem de Manutenção
PERFORM mensagem_retorno_tab
USING
'ZPM_PORTAL' zgtpm_e '055' '' '' '' ''
CHANGING
t_return[].
EXIT.
ELSEIF NOT i_qmnum IS INITIAL AND NOT i_aufnr IS INITIAL.
* Informe apenas um objeto: Nota ou Ordem de Manutenção
PERFORM mensagem_retorno_tab
USING
'ZPM_PORTAL' zgtpm_e '054' '' '' '' ''
CHANGING
t_return[].
EXIT.
ENDIF.
IF i_url IS INITIAL
AND i_filename IS INITIAL.
* Informe Anexo e/ou URL
PERFORM mensagem_retorno_tab
USING
'ZPM_PORTAL' zgtpm_e '060' '' '' '' ''
CHANGING
t_return[].
EXIT.
ENDIF.
* === Define Categoria de objeto
IF NOT i_qmnum IS INITIAL.
wa_obj-objkey = i_qmnum.
wa_obj-objtype = 'BUS2038'. " Nota PM
ENDIF.
IF NOT i_aufnr IS INITIAL.
wa_obj-objkey = i_aufnr.
wa_obj-objtype = 'BUS2007'. " Ordem de manutenção
ENDIF.
* === Anexo
IF NOT i_filename IS INITIAL.
* Conteúdo do arquivo
IF NOT i_file[] IS INITIAL.
it_obj_cont[] = i_file[].
DESCRIBE TABLE it_obj_cont LINES vl_lines.
READ TABLE it_obj_cont INTO wa_obj_cont INDEX vl_lines.
vl_filelength =
( 255 * ( vl_lines - 1 ) ) + STRLEN( wa_obj_cont ).
ELSE.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = i_filename
filetype = 'BIN'
IMPORTING
filelength = vl_filelength
TABLES
data_tab = it_obj_cont
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
OTHERS = 17.
IF sy-subrc <> 0.
PERFORM mensagem_retorno_tab
USING
sy-msgid sy-msgty sy-msgno sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
CHANGING
t_return[].
EXIT.
ENDIF.
ENDIF.
* Pasta de Destino
PERFORM get_folder CHANGING wa_folder_id t_return[].
valida_retorno.
* SAPoffice: definição do objeto, modificar atributos
wa_obj_data-objla = sy-langu. " Idioma
wa_obj_data-objsns = 'O'. " Objeto confidencial
wa_obj_data-objlen = vl_filelength. " Tamanho conteúdo documento
wa_obj_data-ownnam = sy-uname. " Nome proprietário
CALL METHOD cl_report_viewer=>split_path_filename
EXPORTING
i_filename = i_filename
IMPORTING
e_path = vl_path
e_filename = vl_filename.
SPLIT vl_filename AT '.' INTO
wa_obj_data-objdes " Descrição breve do conteúdo
wa_obj_data-file_ext. " Extensão de file de uma aplicação PC
CONDENSE wa_obj_data-file_ext NO-GAPS.
* Insere Objeto (Anexo)
PERFORM object_insert
USING
'EXT' " Anexo
wa_obj_data
wa_folder_id
it_obj_cont
CHANGING
wa_document_id
t_return[].
valida_retorno.
* Relacionamento Objeto PM x Anexo
PERFORM relation_create
USING
'ATTA'
wa_obj
wa_document_id
CHANGING
t_return[].
valida_retorno.
ENDIF.
* === URL
IF NOT i_url IS INITIAL.
* Inicializa estruturas comuns a Anexo e URL
CLEAR:
it_obj_cont,
wa_obj_cont,
wa_obj_data,
wa_folder_id,
wa_document_id.
* Conteúdo da URL
MOVE i_url TO vl_url.
WHILE NOT vl_url IS INITIAL.
CONCATENATE '&KEY&' vl_url(250) INTO wa_obj_cont.
APPEND wa_obj_cont TO it_obj_cont.
SHIFT vl_url LEFT BY 250 PLACES.
ENDWHILE.
* Pasta de Destino
PERFORM get_folder CHANGING wa_folder_id t_return[].
valida_retorno.
* SAPoffice: definição do objeto, modificar atributos
wa_obj_data-objla = sy-langu. " Idioma
wa_obj_data-objsns = 'O'. " Objeto confidencial
wa_obj_data-ownnam = sy-uname. " Nome proprietário
SPLIT i_url AT '/' INTO TABLE it_url.
DESCRIBE TABLE it_url LINES vl_loopc.
READ TABLE it_url INDEX vl_loopc
INTO wa_obj_data-objdes. " Descrição breve do conteúdo
* Insere Objeto (URL)
PERFORM object_insert
USING
'URL' " Link Inter/Intranet
wa_obj_data
wa_folder_id
it_obj_cont
CHANGING
wa_document_id
t_return[].
valida_retorno.
* Relacionamento Objeto PM x URL
PERFORM relation_create
USING
'URL'
wa_obj
wa_document_id
CHANGING
t_return[].
valida_retorno.
ENDIF.
* === Libera objetos locais
FREE:
vl_url,
vl_path,
vl_loopc,
vl_lines,
vl_filename,
vl_filelength,
it_url,
it_obj_cont,
wa_obj,
wa_obj_cont,
wa_obj_data,
wa_folder_id,
wa_document_id.
ENDFUNCTION.
***INCLUDE LZGPM0010F01 .
*& Form mensagem_retorno_tab
FORM mensagem_retorno_tab
USING
p_msgid TYPE symsgid
p_msgty TYPE symsgty
p_msgno TYPE symsgno
p_msgv1 TYPE any
p_msgv2 TYPE any
p_msgv3 TYPE any
p_msgv4 TYPE any
CHANGING
t_return TYPE ty_return.
DATA:
vl_msgty TYPE symsgty,
wa_return LIKE LINE OF t_return.
IF p_msgty IS INITIAL.
MOVE zgtpm_e TO vl_msgty.
ELSE.
MOVE p_msgty TO vl_msgty.
ENDIF.
IF p_msgno IS INITIAL.
EXIT.
ENDIF.
MOVE p_msgid TO wa_return-id.
MOVE vl_msgty TO wa_return-type.
MOVE p_msgno TO wa_return-number.
MOVE p_msgv1 TO wa_return-message_v1.
MOVE p_msgv2 TO wa_return-message_v2.
MOVE p_msgv3 TO wa_return-message_v3.
MOVE p_msgv4 TO wa_return-message_v4.
MESSAGE ID p_msgid TYPE vl_msgty NUMBER p_msgno
WITH p_msgv1 p_msgv2 p_msgv3 p_msgv4
INTO wa_return-message.
APPEND wa_return TO t_return.
FREE: vl_msgty, wa_return.
ENDFORM. " mensagem_retorno_tab
*& Form get_folder
FORM get_folder
CHANGING
w_folder_id TYPE soodk
t_return TYPE ty_return.
CALL FUNCTION 'SO_FOLDER_ROOT_ID_GET'
EXPORTING
region = 'B' " ?
IMPORTING
folder_id = w_folder_id
EXCEPTIONS
OTHERS = 1.
IF sy-subrc <> 0.
PERFORM mensagem_retorno_tab
USING
sy-msgid sy-msgty sy-msgno sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
CHANGING
t_return[].
ENDIF.
ENDFORM. " get_folder
*& Form object_insert
FORM object_insert USING
p_objtp TYPE so_obj_tp
w_obj_data TYPE sood1
w_folder_id TYPE soodk
t_obj_cont TYPE zpmct002
CHANGING
w_document_id TYPE sofmk
t_return TYPE ty_return.
* Objetos locais
DATA:
it_objcont TYPE STANDARD TABLE OF soli,
it_obj_head TYPE STANDARD TABLE OF soli,
wa_obj_id TYPE soodk,
wa_obj_cont LIKE LINE OF t_obj_cont.
* RAW to CHAR
LOOP AT t_obj_cont INTO wa_obj_cont.
APPEND wa_obj_cont TO it_objcont.
CLEAR wa_obj_cont.
ENDLOOP.
* Insere objeto
CALL FUNCTION 'SO_OBJECT_INSERT'
EXPORTING
folder_id = w_folder_id
object_type = p_objtp
object_hd_change = w_obj_data
owner = sy-uname
IMPORTING
object_id = wa_obj_id
TABLES
objhead = it_obj_head
objcont = it_objcont
EXCEPTIONS
active_user_not_exist = 1
communication_failure = 2
component_not_available = 3
dl_name_exist = 4
folder_not_exist = 5
folder_no_authorization = 6
object_type_not_exist = 7
operation_no_authorization = 8
owner_not_exist = 9
parameter_error = 10
substitute_not_active = 11
substitute_not_defined = 12
system_failure = 13
x_error = 14
OTHERS = 15.
IF sy-subrc = 0.
w_document_id-foltp = w_folder_id-objtp.
w_document_id-folyr = w_folder_id-objyr.
w_document_id-folno = w_folder_id-objno.
w_document_id-doctp = wa_obj_id-objtp.
w_document_id-docyr = wa_obj_id-objyr.
w_document_id-docno = wa_obj_id-objno.
ELSE.
PERFORM mensagem_retorno_tab
USING
sy-msgid sy-msgty sy-msgno sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
CHANGING
t_return[].
ENDIF.
* Libera objetos locais
FREE:it_objcont, it_obj_head, wa_obj_id, wa_obj_cont.
ENDFORM. " object_insert
*& Form relation_create
FORM relation_create
USING
p_relationtype TYPE binreltyp
w_obj TYPE borident
w_document_id TYPE sofmk
CHANGING
t_return TYPE ty_return.
DATA wa_doc TYPE borident.
wa_doc-objtype = 'MESSAGE'.
CASE p_relationtype.
WHEN 'ATTA'.
wa_doc-objkey = w_document_id(34).
WHEN 'URL'.
wa_doc-objkey = w_document_id.
WHEN OTHERS.
ENDCASE.
CALL FUNCTION 'BINARY_RELATION_CREATE'
EXPORTING
obj_rolea = w_obj
obj_roleb = wa_doc
relationtype = p_relationtype
EXCEPTIONS
no_model = 1
internal_error = 2
unknown = 3
OTHERS = 4.
IF sy-subrc = 0.
COMMIT WORK AND WAIT.
CASE p_relationtype.
WHEN 'ATTA'.
* O anexo foi criado com êxito
PERFORM mensagem_retorno_tab
USING
'SGOS_MSG' zgtpm_s '043' '' '' '' ''
CHANGING
t_return[].
WHEN 'URL'.
* A URL foi criada com êxito
PERFORM mensagem_retorno_tab
USING
'ZPM_PORTAL' zgtpm_s '059' '' '' '' ''
CHANGING
t_return[].
WHEN OTHERS.
ENDCASE.
ELSE.
PERFORM mensagem_retorno_tab
USING
sy-msgid sy-msgty sy-msgno sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
CHANGING
t_return[].
ENDIF.
FREE wa_doc.
ENDFORM. " relation_create
Edited by: Fabrício Alves Vieira on Apr 8, 2008 3:08 PM -
"Services for Object" in my own transaction
Hi everybody,
In MM02 you see the button for the toolbar "Services for Object" in the titlebar.
I want to add that same functionality in my own transaction. Does anybody know how to do this?
Thanks,
Tim van Steenbergen.Sure, you can do that. Something like this. You will have to use a valid object and key. The example uses a maintenance notification.
report zrich_0001 .
parameters: p_check type c.
at selection-screen output.
call function 'SWU_OBJECT_PUBLISH'
exporting
objtype = 'BUS2038'
objkey = '000010004288'
* CREATOR = ' '
* METHOD = ' '
* TABLES
* CONTAINER =
exceptions
objtype_not_found = 1
others = 2.
start-of-selection.
Regards,
Rich Heilman -
Services for Object Icon not in ME21N
Hello Experts:
Does anyone know the reason why the Services for Object icon exist in ME22N but not in ME21N?
Thanks in advance for your help!!
-Edgarhi buddy
The Generic Object Services do not appear in the Enjoy Create Trasactions ME21N and ME51N. This functionality is not provided until now. Please do the below manual activities and then apply the code change.
Other terms
GOS, Generic Object Services, ME21N, ME51N
Reason and Prerequisites
New functionality
Solution
Step 1:
Create a new Method in the CLASS CL_PO_HEADER_HANDLE_MM.
1. Go to SE24 and enter CL_PO_HEADER_HANDLE_MM.
2. enter the below details,
Method name :GET_GOS_MANAGER
Level: Instance Method
Visiblity: Public
Description: Get Generic Object Services Manager
3. Now Select the Method and add the parameters
Parameter :RE_MANAGER
Type: Returning
Pass value : Select the Checkbox
Typing Method : Type Ref To
Associated Type : CL_GOS_MANAGER
Save the method and activate it.
Step 2:
Modify the Method PO_READ
1. Go to SE24 and enter CL_PO_HEADER_HANDLE_MM.
2. Select the Method PO_READ
3. Add a Parameter as below,
Parameter :IM_GOS
Type: Importing
Optional : Select the Checkbox
Typing Method : Type Ref To
Associated Type : CL_GOS_MANAGER
Save and activate the method.
Step 3:
Add a attribute to the Class CL_PO_HEADER_HANDLE_MM
1. Go to SE24 and enter CL_PO_HEADER_HANDLE_MM.
2. Fill the below values,
Attribute : MY_GOS_MANAGER
Level: Instance Attribute
Visiblity: Private
Typing: Type Ref To
Associated type: CL_GOS_MANAGER
Step 4:
Modify the Method SET_PO_NUMBER
1. Go to SE24 and enter CL_PO_HEADER_HANDLE_MM.
2. Select the Method SET_PO_NUMBER
3. Add a Parameter as below,
Parameter :IM_GOS
Type: Importing
Optional value : Select the Checkbox
Typing Method : Type Ref To
Associated Type : CL_GOS_MANAGER
Save and activate the method.
Step 5:
1. Go to SE24 and enter IF_PURCHASE_REQ_FACTORY.
2. Select the method CREATE_HEADER and add the parameter.
3. Fill the below values,
Parameter :IM_GOS
Type: Importing
Optional : Select the CheckBox
Typing Method :Type Ref To
Associated Type : CL_GOS_MANAGER
try this but the patch from sol manager will be recomended
reward if useful -
Hi,
I am getting bellow error when i am running my application. I am using JDeveloper 11.1.2.3
<Nov 6, 2013 9:52:57 AM AST> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to STANDBY>
<Nov 6, 2013 9:52:57 AM AST> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to STARTING>
<BC4JConfigLifeCycleCallBack> <contextInitialized> MDS-01702: The method getBean() is not valid for metadata object /ex/model/remittance/client/common/bc4j.xcfg - it is allowed on only bean metadata objects.
oracle.mds.exception.MDSRuntimeException: MDS-01702: The method getBean() is not valid for metadata object /ex/model/remittance/client/common/bc4j.xcfg - it is allowed on only bean metadata objects.
at oracle.mds.core.MetadataObject.getBean(MetadataObject.java:327)
at oracle.adf.share.jndi.MDSBackingStore.getMOBean(MDSBackingStore.java:558)
at oracle.bc4j.mbean.RuntimeMXBeanImpl.init(RuntimeMXBeanImpl.java:120)
at oracle.bc4j.mbean.RuntimeMXBeanImpl.<init>(RuntimeMXBeanImpl.java:110)
at oracle.bc4j.mbean.RuntimeMXBeanImpl.<init>(RuntimeMXBeanImpl.java:101)
at oracle.bc4j.mbean.BC4JConfigLifeCycleCallBack.contextInitialized(BC4JConfigLifeCycleCallBack.java:114)
at weblogic.servlet.internal.EventsManager$FireContextListenerAction.run(EventsManager.java:481)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
at weblogic.servlet.internal.EventsManager.notifyContextCreatedEvent(EventsManager.java:181)
at weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1872)
at weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:3153)
at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1508)
at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:482)
at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:425)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119)
at weblogic.application.internal.flow.ScopedModuleDriver.start(ScopedModuleDriver.java:200)
at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:247)
at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:425)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119)
at weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:27)
at weblogic.application.internal.BaseDeployment$2.next(BaseDeployment.java:636)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:205)
at weblogic.application.internal.EarDeployment.activate(EarDeployment.java:58)
at weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:161)
at weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:79)
at weblogic.deploy.internal.targetserver.BasicDeployment.activate(BasicDeployment.java:184)
at weblogic.deploy.internal.targetserver.BasicDeployment.activateFromServerLifecycle(BasicDeployment.java:361)
at weblogic.management.deploy.internal.DeploymentAdapter$1.doActivate(DeploymentAdapter.java:51)
at weblogic.management.deploy.internal.DeploymentAdapter.activate(DeploymentAdapter.java:200)
at weblogic.management.deploy.internal.AppTransition$2.transitionApp(AppTransition.java:30)
at weblogic.management.deploy.internal.ConfiguredDeployments.transitionApps(ConfiguredDeployments.java:240)
at weblogic.management.deploy.internal.ConfiguredDeployments.activate(ConfiguredDeployments.java:169)
at weblogic.management.deploy.internal.ConfiguredDeployments.deploy(ConfiguredDeployments.java:123)
at weblogic.management.deploy.internal.DeploymentServerService.resume(DeploymentServerService.java:180)
at weblogic.management.deploy.internal.DeploymentServerService.start(DeploymentServerService.java:96)
at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)
<Nov 6, 2013 9:53:11 AM AST> <Notice> <LoggingService> <BEA-320400> <The log file C:\Users\maroof\AppData\Roaming\JDeveloper\system11.1.2.3.39.62.76.1\DefaultDomain\servers\DefaultServer\logs\DefaultDomain.log will be rotated. Reop
I seen oracle docs solution
MDS-01702: The method getBean() is not valid for metadata object {0} - it is allowed on only bean metadata objects.
Cause: An attempt was made to access the metadata object using the bean API but the metadata object was not a bean metadata object. The schema for the root element may not have been registered with MDS, or the beans were not available on the classpath.
Action: Regenerate the beans from the schema definitions and ensure that the correct versions are on the classpath. Check that the schemas are registered with the MDS instance.
Level: 1
Type: ERROR
Impact: Configuration
But i am not getting what i do in my application for removing this error.
MaroofDo you use MDS in your application?
It's possible that you see a leftover of an earlier deployment.
Do you get the same error if you only start the integrated server (application server navigator->integrated server->debug or run)?
IF you don't get it when you only start the server without running your application, the problem is somewhere in your app. If you get the error it's probably an old deployment or a configuration error of your server. In this case stop jdev, rename the DefaultDomain folder C:\Users\maroof\AppData\Roaming\JDeveloper\system11.1.2.3.39.62.76.1\DefaultDomain tp C:\Users\maroof\AppData\Roaming\JDeveloper\system11.1.2.3.39.62.76.1\xxxDefaultDomain and start jdev again. Then use hte application server navigator to create a new integrated server (you should see this option as the DefaultDomain folder is not present) and once the new integrated server is created test again.
Timo -
Re: Services for Object Icon
Hi,
Is there a way i can configure the Service Object icon to be available durinng PR (ME51n) and PO (ME21N) creation to appear?
At the moment, this icon can only be use during change/display mode of PR and PO...
.the services for object icon is the one use when we want to attached document,link,sent notes etc..
Pls.help. Thanks
SheHi She,
The object services require a unique identifier for the object
processed. And this unique identifier of the document
is only created at the moment of save. Exist SAP Note 913251 to enable the
linkage of attachments in the enjoy transactions ME51N and ME21N, but
only from 4.7 onwards.
Regards,
Mauro -
Cannot view workflow log via Services for Object Workflow Overview
We recently had an upgrade of R3/ECC and discovered a new issue. For some reason we can no longer view workflow log via Services for Object > Workflow Overview for Material Master (transaction MM03). We get the message "There are no workflows that have already worked with this object". However, we have confirmed via SWEL and other t-codes that the workflow and log do exist. This seems to be the only object we have this issue for after the upgrade.
Anyone know what issue is and how to fix? Or at least path to config in SPRO for "generic object services" where we can see if anything changed via upgrade for this object?
Thanks,
Matt
Edited by: Matthew Huth on Apr 22, 2008 9:23 PMFound the solution. See OSS note 553246. This has been tested and works for us. -Matt
Note 553246
Summary
Symptom
In the material master, the system no longer displays the attachments for the material or workflow items in the Generic Object Services.
Other terms
MM01, MM02, MM03
Reason and Prerequisites
As of Release 4.6B, business object BUS1001006 is valid for the material master. Until you have implemented Note 452424, the Generic Object Services is still published for the old BUS1001 business object. After implementing the note, all attachments, relationships, notes and workflow items that are assigned to business object BUS1001 are no longer displayed.
Instead, all new attachments are assigned to business object BUS1001006. As a result, attachments cannot exist for both systems.
For workflow items, the assignment to the business object occurs in the respective tasks. It may be very time consuming to convert the business object, depending on whether an individual subtype (assigned to BUS1001) is created.
In other words, after you implement the note, the workflow items for business object BUS1001 can no longer be displayed in the material master.
Solution
With the following correction you can call the Generic Object Services for both business objects. When it is called, the system displays a dialog box in which you can choose the required business object, that is, BUS1001 ('Material') or BUS1001006 ('Standard material').
This correction is delivered as a modification supported by SAP only. This is because the additional option means that attachments can be maintained as required in either of the business objects and users may therefore require extra training.
However, the corrections enable you to display attachments and workflow items for both business objects without the need for a major conversion; this means that you do not get the impression that these have been lost.
Alternatively, as of Release 4.70 (or Basis 6.20) you can, without making a modification, implement method ADD_OBJECTS of BAdI GOS_MULT_PUBLISH for filter attribute WF_OVERVIEW ('Workflow overview'), SRELATIONS ('Relationships') and VIEW_ATTA ('Attachment list'). The implementation should be similar to the following:
METHOD if_ex_gos_mult_publish~add_objects .
DATA:
ls_lporb TYPE sibflporb.
READ TABLE ct_lporb INTO ls_lporb INDEX 1.
if ls_lporb-typeid = 'BUS1001006'.
ls_lporb-typeid = 'BUS1001'.
append ls_lporb to ct_lporb.
endif.
endmethod. -
Accessing attachments from 'services for object'
I have been tasked with extracting data from external attachments from the 'services for object' button. I am working in an sap ecc 6.0 environment. I have not found any tips on how to do this from google searches.
Here is an example. If you look at most of the major documents (purchase order, invoice, delivery, etc.) there will be a little dropdown icon in the upper left corner of the screen
That icon is the 'Services for Object' button. Clicking on it will display a small popup window with several options including one for attached documents.
If an attachment (could be word, excel, pdf, URL, etc.) exists it will show up and can be viewed by double clicking on it. Does anyone know how to access
that attachment programatically?
Thank you very much in advance.
deepakHi,
Create a subroutine in your program and call the FM: SWU_OBJECT_PUBLISH as below:
CALL FUNCTION 'SWU_OBJECT_PUBLISH'
EXPORTING
objtype = gc_businessobj
objkey = gw_header-vbeln
EXCEPTIONS
objtype_not_found = 1
OTHERS = 2.
This will automatically display your Services for Object ICON on your report. Here in the FM, gc_businessobj is a global business object = BUS2031(defined as a constant inside the pgm) and gw_header-vbeln can be any valid document no like a sale order, inquiry, quotation etc.
Use this code snippet and this will work.
Regards,
JLN -
Entity Object validation for "Date" type
I am trying to use the Entity Object validation for a Date field type, it is a required field.
I am using the format: MM/dd/yy HH:mm:ss
It is a simple validation where the date value must be less than or equal to the current date/time.
I tried using "Query Result" validation where the date is LESS THAN the query SELECT SYSDATE FROM dual.
This throws an error:
JBO-27011: Attribute set with value 2006-07-09 14:05:53.0 for LksrSurveyDte in LCFSReportService.LeakDetailView1 failed.
I have be unable to find help on validating dates using validation for an Entity Object and need some help.
Thanks in advance.In your case you can implement a service method in the VO to check if any other reservation overlaps with the new one (which is not inserted in the db).
I would use a an other VO (e.g. VODateCheck) for this. This VO has it's query build to check if a given roomid and a given startdate(time?) overlaps any other record for the roomid
select * from ReservationRoom where RoomId=:bindRoomId and ReservationEnd>=:bindReservationStartIf this query returns one or more rows you have an overlapping in the schedule and throw an error.
You call this VODateCheck from your service method in the other module before inserting the record. Set the bind variables in the VODateCheck and execute the query.
Timo -
In Attachement List Services for Objects White Screen when I Display a Note
Hi Expert,
Need your assistance.
I am trying to view a note in Vendor Master data but no information provided and I can only see white screen. Below are the steps that I performed:
1. Go to FK03
2. Open a Vendor
3. Click the Services for Objects
4. Attachement List
5. Select a Note
4. Display it
5. Pop up window appreared and no information occurred. Only White screen
Is there's a missing configuration, plugin, or data in my SAP system/workstation?
I tried to login to other PC and it worked.
Just wondering what is missing on my computer.
Your response will be helpful.Hey,
I have the exact same problem as you have described. I also used my ipod as a watch but starting from today, whenever I unlock it the screen turns white until a reset is done. Even a factory reset through itunes didn't fix it.
Have you found any solution?
Bah, this is annoying.
//Gubbar -
Display GOS without click on 'Service for Object' button
Please try the following step to figure out.
1) VA03
2) At header of report (on the left hand side of 'Display S/O SysB SDI xxxxxxxxx:Overview' ) has a button called 'Services for Object' (GOS)
3) Click on that then it will popup icon menu set. <--- Want this to be displayed when access VA03 by no need to click the button in 2)
My requirement is I want this popup to be displayed suddenly after I access VA03 (no need to click on the Services for Object button anymore).
<b>
Could you please provide me any solution, function, example, similar case, etc. (based on 4.6c)?</b>
Thank you all expert in advance.. I'll be here to provide you more information that need.I found the solution yet. Let me drop a note to be a memorandum.
(1) Insert code into the last line of form <u>USEREXIT_READ_DOCUMENT</u> within report <u>MV45AFZZ</u>
PERFORM UNITEXIT_READ_DOCUMENT.
<b>*{ INSERT
*[Display Attachment Service Automatically]
DATA: lo_myobject TYPE REF TO cl_gos_manager,
lo_container TYPE REF TO cl_gui_custom_container,
ls_object TYPE borident. "BOR Identifier
ls_object-objkey = vbak-vbeln.
ls_object-objtype = 'BUS2032'.
CREATE OBJECT lo_myobject.
CALL METHOD lo_myobject->start_service_direct
EXPORTING ip_service = 'VIEW_ATTA'
is_object = ls_object
io_container = lo_container
EXCEPTIONS OTHERS = 2.
*[Display Toolbox]
CALL METHOD lo_myobject->DISPLAY_TOOLBOX
EXPORTING is_object = ls_object
io_container = lo_container
EXCEPTIONS OTHERS = 2.
*} INSERT</b>
ENDFORM.
(2) Try open VA03 and insert attachment at Service for Object.
(3) Reopen VA03, attachment list displayed suddenly.
<i>Reference Source# SAP Library, search 'Starting Only One Service Directly'.</i>
<b>NOTE:</b> You can use another relevant object by SE24 -> CL_GOS_MANAGER
Maybe you are looking for
-
My iPad 1 is very unstable. Many Apps simply crash after opening. There is ample storage available.I have restored the iPad twice now and still it is unstable. Is this a lack of backwards compatibility because no-one writes apps for IOS 51.1. and the
-
Location of weblogic700-ejb-jar.dtd ???
The DTD is not located at http://www.bea.com/servers/wls700/dtd/weblogic700-ejb-jar.dtd where it should be. I cannot validate the documents without the DTD. Where is it?
-
Hi, What exactly oracle checks for 3-way matching? My understanding is as follows.please correct me if i am wrong. (Qty Received Vs Qty Billed) AND (PO Unit Price Vs Invoice Unit Price) OR Invoice Amount Vs PO Line Amount if this true, is there any o
-
ok i ordered my iphone 3g s on june 10th and it still has not shipped. i ordered a black 32gb iphone and it says prepared to ship. it has said that for about two days... when is it going to ship.
-
How do i get the computer to restore my apps to my new iphone
how do i get macbook pro to restore apps to new iphone?