Payload field value in container for alert
Hi All,
I am configuring Alerts for my client.I have to insert a value of one of the field from payload in the alert long message.
I have gone through SDN to search for any blogs.
1) I dont want to use BPm
2) Other option of using RFC lookup in mapping is not feasible.
Does any one else has any other idea about implementing the same.I could see some System Fields like XPATH_GET_VALUE in the alert category.But ,how can we use it?
Thanks
Nidhi
If you are using the Alert category definition of SAP PI
there are default container values that can be used to include
data in the alert message.
Refer to: [Alert Category definition|http://help.sap.com/saphelp_nw04/helpdata/en/80/942f3ffed33d67e10000000a114084/frameset.htm]
this should be the first place to look for work methods and features.
Similar Messages
-
How to set a payload field value only once for multiple instances selected?
The user needs to set a payload field value and then he can approve the task so the task can continue through the process, that's fine when the user selects one instance and sets the value in the task details section and then clicks the approve button, but how do we achieve the same behavior in a multiple way?, I mean the user can select multiple tasks in the workspace (in this case the details task page is not available and instead the following label appear "Multiple tasks selected") then if the user clicks the Actions drop down -> APPROVE he only gets the message "your request was processed successfully", so how can the user modify the payload field value only once for all the selected tasks so when he clicks APPROVE the value is populated in all the instances selected.
Thanks,
Carlos.In the action which displays the edit page just set the form idx value before displaying the jsp.
-
How can i add one field in the container for the standard task-90310004?
Hi,
Please let me know thw steps to add one field in the container for the standard task-90310004.
Usefull suggestions will be rewarded.
Regards,
Neslin.<b>Hi,
Containers are used for holding Application data for Workflow purposes.
Event container
Task container
Workflow container
Role container
Binding is the linking of data from one container to the other for making data available all across the workflow.
But you can get values from one container to another container like this
Container(Con)
1. WF Con to Role, Wf con to task con, Wf con to event
and
2. Event con to wf con, task con to wof con
and
3. Method con to task con
and
4. Task con to method con
So, we don't have direct possible binding from task con to task con.
Thanks and Regards,
Prabhakar Dharmala</b>
Message was edited by:
Prabhakar Dharmala
But you can do pass values from first task con to wf con and again from wf con to another task con -
Using MISSING FIELD VALUES ARE NULL for external table
I want to place a null for values missing in the sub_account field. Here is my external table:
CREATE OR REPLACE DIRECTORY INCOMING_ORDERS_log_dir
AS 'c:\starpubs\starpubs\dataformats\logs\INCOMING_ORDERS\log';
CREATE OR REPLACE DIRECTORY INCOMING_ORDERS_bad_dir
AS 'c:\starpubs\starpubs\dataformats\logs\INCOMING_ORDERS\bad';
create table ext_INCOMING_ORDERS_table (
Account varchar(5),
Sub_Account varchar(1),
Override_Code varchar(1),
Nomenclature varchar(28),
chg_nbr varchar(3),
quantity integer,
U_I varchar(5),
zipcode varchar(5),
type_reject varchar(2)
organization external
type oracle_loader
default directory user_dir
access parameters
records delimited by newline
missing field values are null
badfile INCOMING_ORDERS_bad_dir:'INCOMING_ORDERS%a_%p.bad'
logfile INCOMING_ORDERS_log_dir:'INCOMING_ORDERS%a_%p.log'
fields
Account(1:5) char(5),
Sub_Account(7:7) char(1),
Override_Code(10:10) char(1),
Nomenclature(11:38) char(28),
chg_nbr(40:42) char(3),
quantity(44:48) integer external,
U_I(50:54) char(5),
zipcode(56:60) char(5),
type_reject(61:62) char(2)
location('PTCLICK.MANUAL.NOMEN.TXT','PTCLICK.ORDERS.TXT', 'EUR_RES.TXT', 'MQ.TXT', 'BPRO.TXT')
reject limit unlimited;
How can I place the MISSING FIELD VALUES ARE NULL for missing values for the sub_account?made the change I received this error:
SQL> select * from ext_INCOMING_ORDERS_table;
select * from ext_INCOMING_ORDERS_table
ERROR at line 1:
ORA-29913: error in executing ODCIEXTTABLEOPEN callout
ORA-29400: data cartridge error
KUP-00554: error encountered while parsing access parameters
KUP-01005: syntax error: found "no": expecting one of: "comma, date_format,
defaultif, enclosed, ltrim, lrtrim, ldrtrim, notrim, nullif, optionally, ),
rtrim, terminated"
KUP-01007: at line 7 column 26
CREATE OR REPLACE DIRECTORY INCOMING_ORDERS_log_dir
AS 'c:\starpubs\starpubs\dataformats\logs\INCOMING_ORDERS\log';
CREATE OR REPLACE DIRECTORY INCOMING_ORDERS_bad_dir
AS 'c:\starpubs\starpubs\dataformats\logs\INCOMING_ORDERS\bad';
create table ext_INCOMING_ORDERS_table (
Account varchar(5),
Sub_Account varchar(1),
Override_Code varchar(1),
Nomenclature varchar(28),
chg_nbr varchar(3),
quantity integer,
U_I varchar(5),
zipcode varchar(5),
type_reject varchar(2)
organization external
type oracle_loader
default directory user_dir
access parameters
records delimited by newline
badfile INCOMING_ORDERS_bad_dir:'INCOMING_ORDERS%a_%p.bad'
logfile INCOMING_ORDERS_log_dir:'INCOMING_ORDERS%a_%p.log'
fields
Account(1:5) char(5),
Sub_Account(7:7) char(1) NO PRESERVE BLANKS,
Override_Code(10:10) char(1),
Nomenclature(11:38) char(28),
chg_nbr(40:42) char(3),
quantity(44:48) integer external,
U_I(50:54) char(5),
zipcode(56:60) char(5),
type_reject(61:62) char(2)
location('PTCLICK.MANUAL.NOMEN.TXT','PTCLICK.ORDERS.TXT', 'EUR_RES.TXT', 'MQ.TXT', 'BPRO.TXT')
reject limit unlimited; -
Container for alert category could not be loaded
Hi All,
I am having very strange issue with container(Variables).
I defined Alert category, created container elements and I was using them in long and short text. They were working fine, but now if I open Alert category and click on container tab, its says: Container for alert category could not be loaded and I dont see container elements that I created before. Same thing happened before and I re-created those container variables. But now I have many Alert categories. Is this an existing issue? or does any body having similar situaltion? Can anybody please provide information on this.
Thank you,
IndrasenaHi Moorthy,
Thanks for your quick reply . We are on WAS 6.40,SP16, but SAP note 656488 is released on 01.09.2003 for 620, it should have been implemented alreay. Do you think we still need to implement that???
Thank you,
Indrasena -
How to validate the incoming field value and raise an alert message
Dear all,
I have the following structure
If incoming value for the field externalid is empty then i have to raise a alert message to end user "externalid field is empty for the id : id number" and for all incoming values it should work. I used the following udf on field externalid with two arguments
if(externalid.equals(""))
throw new RuntimeException("externalid field empty for the following id : " +id);
else
return externalid;
This is working fine for single record. But for many records(multiple occurences), this logic is not working as if records 2 and 3 fails it is showing exception externalid field is empty for the id : record 2.
how to achieve the tranformation logic ?
Regards
Koti ReddyHi Amit,
I have tried the above udf, but still stuck-up.
For the above structure shown in image, i have tested giving the following payload
<?xml version="1.0" encoding="UTF-8"?>
<ns0:upsertRequest xmlns:ns0="http://sap.com/xi/SFIHCM01">
<sessionId/>
<upsert>
<type/>
<sfobject>
<id>1</id>
<businessKeys>1</businessKeys>
<type>1</type>
<status>1</status>
<externalId>1</externalId>
<username>1</username>
<firstName>1</firstName>
<lastName>1</lastName>
<mi>1</mi>
<gender>1</gender>
<email>1</email>
<managerExternalId>1</managerExternalId>
<hrExternalId>1</hrExternalId>
<department/>
<jobCode/>
<division/>
<location/>
<timeZone>1</timeZone>
<hireDate/>
<empId/>
<title/>
<businessPhone/>
<fax/>
<addressLine1/>
<addressLine2/>
<city/>
<state/>
<country/>
<zipCode/>
<reviewFreq/>
<lastReviewDate/>
<matrixManagerExternalIds/>
<defaultLocale/>
<customManagerExternalIds/>
<secondManagerExternalId/>
<loginMethod/>
<proxy/>
</sfobject>
<sfobject>
<id>2</id>
<businessKeys>2</businessKeys>
<type>2</type>
<status>2</status>
<externalId>2</externalId>
<username>2</username>
<firstName>2</firstName>
<lastName>2</lastName>
<mi>2</mi>
<gender>2</gender>
<email>2</email>
<managerExternalId>2</managerExternalId>
<hrExternalId/>
<department/>
<jobCode/>
<division/>
<location/>
<timeZone/>
<hireDate/>
<empId/>
<title/>
<businessPhone/>
<fax/>
<addressLine1/>
<addressLine2/>
<city/>
<state/>
<country/>
<zipCode/>
<reviewFreq/>
<lastReviewDate/>
<matrixManagerExternalIds/>
<defaultLocale/>
<customManagerExternalIds/>
<secondManagerExternalId/>
<loginMethod/>
<proxy/>
</sfobject>
<processingParam>
<name/>
<value/>
</processingParam>
</upsert>
</ns0:upsertRequest>
No node is creating for success records, instead it throws exception that "externalid field is missing for the id": id for empty externalid field value in second record.
But my requirement is..... when i process 50 records, records with missing value for field externalid should raise an alert message to end user intimating him to check the externalid field for particular id. If the value for externalid field is present in incoming record/payload, then it should be passed to target system.
How can i implement this logic ?
Regards
Koti Reddy -
Hi.
I created alert that is triggered via action. The alert now displays only some text that i defined. But now I would like to get in that text also the value of transaction number of task from witch alert was triggered.
I saw that there is the option on alerts to define container (SPRO > CRM > basic functions > alert management > define alert categories) but I don't now how to do it.
I added in container BOR object type BUS2000125 and in text the expression &PROCESS_TYPE.OBJECT_ID&, but looks like that is not enough.
Help needed.hi. There is no new note that I would know about. However I managed to solved the problem via steps from old note, but had to do quite a coding on Z version of TRIGGER_ALERT method.
This is my code source:
METHOD ZTRIGGER_ALERT .
DATA: lt_container TYPE swconttab,
ls_container TYPE swcont,
lv_kind_ref TYPE crmt_object_kind,
lv_guid_ref TYPE crmt_object_guid.
DATA: lt_head_guids TYPE crmt_object_guid_tab,
lt_item_guids TYPE crmt_object_guid_tab,
lt_req_obj TYPE crmt_object_name_tab,
ls_orderadm_h_ref TYPE crmt_orderadm_h_wrk,
lt_orderadm_h_ref TYPE crmt_orderadm_h_wrkt,
lv_header_ref TYPE crmt_object_guid,
ls_orderadm_i_ref TYPE crmt_orderadm_i_wrk,
lt_orderadm_i_ref TYPE crmt_orderadm_i_wrkt.
DATA: lv_message TYPE char80,
lv_preview TYPE char1.
DATA: lv_category TYPE salrtdcat,
lt_partner TYPE crmt_partner_external_wrkt,
ls_partner TYPE crmt_partner_external_wrk,
lt_recipients TYPE TABLE OF salrtsrcp,
ls_recipients LIKE LINE OF lt_recipients,
lv_guid_32 TYPE sysuuid_c.
INCLUDE crm_log_states_con.
INCLUDE crm_mode_con.
INCLUDE crm_object_names_con.
INCLUDE crm_object_kinds_con.
INCLUDE com_partner_pft3.
* get parameter from reference object
CALL METHOD me->get_ref_object
EXPORTING
io_appl_object = io_appl_object
ip_action = ip_action
ip_preview = ip_preview
ii_container = ii_container
IMPORTING
ev_guid_ref = lv_guid_ref
ev_kind_ref = lv_kind_ref
et_container = lt_container
ev_preview = lv_preview.
* not relevant iv preview is active
IF NOT lv_preview IS INITIAL.
MESSAGE s007(crm_action).
EXIT.
ENDIF.
* fill guid of the source document
REFRESH: lt_head_guids, lt_item_guids.
IF lv_kind_ref EQ gc_object_kind-orderadm_h.
INSERT lv_guid_ref INTO TABLE lt_head_guids.
ELSEIF lv_kind_ref EQ gc_object_kind-orderadm_i.
INSERT lv_guid_ref INTO TABLE lt_item_guids.
ENDIF.
* fill requested object
INSERT gc_object_name-orderadm_h INTO TABLE lt_req_obj.
INSERT gc_object_name-orderadm_i INTO TABLE lt_req_obj.
INSERT gc_object_name-partner INTO TABLE lt_req_obj.
* read relevant itmes of the source document
CALL FUNCTION 'CRM_ORDER_READ'
EXPORTING
it_header_guid = lt_head_guids
it_item_guid = lt_item_guids
iv_only_spec_items = true
it_requested_objects = lt_req_obj
IMPORTING
et_orderadm_h = lt_orderadm_h_ref
et_orderadm_i = lt_orderadm_i_ref
et_partner = lt_partner
EXCEPTIONS
document_not_found = 1
error_occurred = 2
document_locked = 3
no_change_authority = 4
no_display_authority = 5
OTHERS = 6.
IF sy-subrc NE 0.
* write message into ppf-log
CALL METHOD cl_log_ppf=>add_message
EXPORTING
ip_problemclass = '2'
ip_handle = ip_application_log.
* set return status
rp_status = '2'.
EXIT.
ENDIF.
IF lv_kind_ref EQ gc_object_kind-orderadm_h.
lv_header_ref = lv_guid_ref.
ELSEIF lv_kind_ref EQ gc_object_kind-orderadm_i.
READ TABLE lt_orderadm_i_ref INTO ls_orderadm_i_ref INDEX 1.
lv_header_ref = ls_orderadm_i_ref-header.
* get business object to built URL
CALL FUNCTION 'CRM_ORDERADM_H_READ_OW'
EXPORTING
iv_orderadm_h_guid = lv_header_ref
IMPORTING
ev_object_type = ls_orderadm_h_ref-object_type
ev_logical_system = ls_orderadm_h_ref-logical_system
EXCEPTIONS
admin_header_not_found = 1
OTHERS = 2.
IF sy-subrc EQ 0.
ls_orderadm_h_ref-guid = lv_header_ref.
INSERT ls_orderadm_h_ref INTO TABLE lt_orderadm_h_ref.
ELSE.
* write message into ppf-log
CALL METHOD cl_log_ppf=>add_message
EXPORTING
ip_problemclass = '2'
ip_handle = ip_application_log.
* set return status
rp_status = '2'.
EXIT.
ENDIF.
ENDIF.
* fill alert category
READ TABLE lt_container INTO ls_container
WITH KEY element = 'CATEGORY'.
IF sy-subrc EQ 0.
lv_category = ls_container-value.
ENDIF.
* check mandatory fields
IF lv_category IS INITIAL.
* write message into ppf-log
MESSAGE ID 'CRM_ACTION' TYPE 'E' NUMBER 004
WITH 'CATEGORY' INTO lv_message.
CALL METHOD cl_log_ppf=>add_message
EXPORTING
ip_problemclass = '2'
ip_handle = ip_application_log.
* set return status
rp_status = '2'.
EXIT.
ENDIF.
* now filter the employees.
LOOP AT lt_partner INTO ls_partner
WHERE partner_pft EQ gc_partner_pft-employee.
CLEAR: ls_recipients.
CALL FUNCTION 'BP_CENTRALPERSON_GET'
EXPORTING
iv_bu_partner_guid = ls_partner-bp_partner_guid
IMPORTING
ev_username = ls_recipients-uname
EXCEPTIONS
no_central_person = 1
no_business_partner = 2
no_id = 3
OTHERS = 4.
IF sy-subrc EQ 0 AND
ls_recipients-uname IS NOT INITIAL.
INSERT ls_recipients INTO TABLE lt_recipients.
ENDIF.
ENDLOOP.
* don't send the alert twice to the same user
SORT lt_recipients BY uname.
DELETE ADJACENT DUPLICATES FROM lt_recipients COMPARING uname.
* supply key information
READ TABLE lt_orderadm_h_ref INTO ls_orderadm_h_ref INDEX 1.
IF sy-subrc EQ 0.
lv_guid_32 = ls_orderadm_h_ref-guid.
CALL FUNCTION 'SWC_ELEMENT_SET'
EXPORTING
element = 'OBJKEY_GUID'
field = lv_guid_32
TABLES
container = lt_container
EXCEPTIONS
OTHERS = 1.
CALL FUNCTION 'SWC_ELEMENT_SET'
EXPORTING
element = 'OBJKEY_BOR_OBJECT'
field = lv_guid_32
TABLES
container = lt_container
EXCEPTIONS
OTHERS = 1.
CALL FUNCTION 'SWC_ELEMENT_SET'
EXPORTING
element = 'OBJKEY_BOR_OBJECT_TYPE'
field = ls_orderadm_h_ref-object_type
TABLES
container = lt_container
EXCEPTIONS
OTHERS = 1.
CALL FUNCTION 'SWC_ELEMENT_SET'
EXPORTING
element = 'OBJKEY_LOGICAL_SYSTEM'
field = ls_orderadm_h_ref-logical_system
TABLES
container = lt_container
EXCEPTIONS
OTHERS = 1.
ENDIF.
* trigger alert
*{ INSERT CRDK903440 1
data: object_id(10) type c.
data: lt_date_wrkt type CRMT_DATES_WRKT.
data: wa_date_wrk type CRMT_DATES_WRK.
data: lt_date type CRMT_DATE_WRKT.
data: wa_date type CRMT_DATE_WRK.
data: ZTASK_PLAN type SC_DATEFRO.
data: ZTASK_REQUIR type SC_DATEFRO.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = ls_orderadm_h_ref-object_id
IMPORTING
OUTPUT = object_id.
* document number
CALL FUNCTION 'SWC_ELEMENT_SET'
EXPORTING
element = 'OBJECT_ID'
field = object_id
tables
container = lt_container
EXCEPTIONS
TYPE_CONFLICT = 1
OTHERS = 2.
*document description
CALL FUNCTION 'SWC_ELEMENT_SET'
EXPORTING
element = 'OBJECT_DESCRIPTION'
field = ls_orderadm_h_ref-description
tables
container = lt_container
EXCEPTIONS
TYPE_CONFLICT = 1
OTHERS = 2.
*document dates
refresh lt_date_wrkt.
CALL FUNCTION 'CRM_DATES_READ_DB'
EXPORTING
IV_REF_GUID = ls_orderadm_h_ref-guid
IV_REF_KIND = 'A'
IMPORTING
ET_DATE_WRKT = lt_date_wrkt
EXCEPTIONS
PARAMETER_ERROR = 1
ENTRY_DOES_NOT_EXIST = 2
AT_LEAST_ONE_RECORD_NOT_FOUND = 3
OTHERS = 4.
refresh lt_date.
CALL FUNCTION 'CRM_DATES_READ_SINGLE_OW'
EXPORTING
iv_ref_guid = ls_orderadm_h_ref-guid
iv_ref_kind = 'A'
* IS_LOGICAL_DATE_KEY =
IMPORTING
* ES_DATE_WRK =
ET_DATE_WRK = lt_date
EXCEPTIONS
LINK_DOES_NOT_EXIST = 1
ENTRY_DOES_NOT_EXIST = 2
OTHERS = 3.
clear wa_date.
read table lt_date
with key APPT_TYPE = 'ORDERPLANNED'
into wa_date.
ZTASK_PLAN = wa_date-date_from.
if wa_date is initial.
clear wa_date_wrk.
read table lt_date_wrkt
with key APPT_TYPE = 'ORDERPLANNED'
into wa_date_wrk.
ZTASK_PLAN = wa_date_wrk-date_from.
endif.
clear wa_date.
read table lt_date
with key APPT_TYPE = 'ZTASK_REQUIR'
into wa_date.
ZTASK_REQUIR = wa_date-date_from.
if wa_date is initial.
clear wa_date_wrk.
read table lt_date_wrkt
with key APPT_TYPE = 'ZTASK_REQUIR'
into wa_date_wrk.
ZTASK_REQUIR = wa_date_wrk-date_from.
endif.
CALL FUNCTION 'SWC_ELEMENT_SET'
EXPORTING
element = 'ORDERPLANNED'
field = ZTASK_PLAN
tables
container = lt_container
EXCEPTIONS
TYPE_CONFLICT = 1
OTHERS = 2.
CALL FUNCTION 'SWC_ELEMENT_SET'
EXPORTING
element = 'ZTASK_REQUIR'
field = ZTASK_REQUIR
tables
container = lt_container
EXCEPTIONS
TYPE_CONFLICT = 1
OTHERS = 2.
*} INSERT
CALL FUNCTION 'SALRT_CREATE_API'
EXPORTING
ip_category = lv_category
ip_wait_on_commit = false
TABLES
it_recipients = lt_recipients
it_container = lt_container
EXCEPTIONS
alert_category_unknown = 1
alert_no_recipients = 2
alert_error_unknown = 3
destination_undefined = 4
communication_failure = 5
system_failure = 6
OTHERS = 7.
IF sy-subrc NE 0.
* write message into ppf-log
CALL METHOD cl_log_ppf=>add_message
EXPORTING
ip_problemclass = '2'
ip_handle = ip_application_log.
* set return status
rp_status = '2'.
EXIT.
ENDIF.
* register new document for saving
CALL METHOD me->register_for_save
EXPORTING
iv_source_header_guid = lv_header_ref
iv_recursive_det = false
ii_container = ii_container
ip_application_log = ip_application_log
IMPORTING
rp_status = rp_status.
ENDMETHOD. " -
Field values are repeating for search help.
Hello Friends.
I have a problem. When I create a search help for a field the identical field values are repeating. What should I do to trigger only the first time.
for example:
<u>Field-name</u>- <u>field-value</u>
Supplier Nr --- Commodity
5001 -
casting
5002 -
casting
5003 -
casting
So when I create the search help for commodity it is showing 'casting' 3 times in a pop-up window. It should not repeat. Can you please give me the solution what should I do?Hi
Search helps
Standard search help
Types of search helps
Concept of search help
Search Help Interface
Dialog behavior of search helps
Selection method for search helps
Performance of search helps
Attaching search helps
Hierarchy of search helps
Standard Search Help
The input help (F4 help) is a standard function of the R/3 System. It permits the user to display a list of possible values for a screen field. A value can be directly copied to an input field by list selection.
The fields having an input help are shown in the R/3 System by the input help key to the right of the field. This key appears as soon as the cursor is positioned on the corresponding screen field. The help can be started either by clicking on this screen element or with function key F4.
If the number of possible entries for a field is very large, you can limit the set of displayed values by entering further restrictions.
Further meaningful information about the displayed values is included in the display of possible entries, especially if the field requires that a formal key be entered.
TYPES OF SEARCH HELPS
Elementary search helps
Describe a search path. The elementary search help must define where the data of the hit list should be read from (selection method), how the exchange of values between the screen template and selection method is implemented (interface of the search help) and how the online input help should be defined (online behavior of the search help).
Collective search help
Combine several elementary search helps. A collective search help thus can offer several alternative search paths.
Search Help Interface
Search help interface determines how the exchange of values between the screen template and the selection method is implemented.
The search help interface defines the context data that can be used in the input help and the data that can be returned to the input mask. Analogously to the interface of a function module, the search help interface comprises interface parameters.
When you define an interface parameter of a search help, you must also define whether it should be used to copy data to the input help (IMPORT parameter) or whether it should be used to return data from the input help (EXPORT parameter). A parameter of a search help can also have both attributes at the same time.
The location from which the IMPORT parameters of a search help get their values and the screen fields in which the contents of the EXPORT parameters of the search help are returned are defined in the search help attachment. The search help itself should always be attached to an EXPORT parameter of the search help. If this parameter is also the IMPORT parameter, its contents are only used in the input help if it is a search string (that is, if it contains a ´*´ or a ´+´).
You must define the parameter types of a search help. You can do this by assigning them data elements.
Value Transport for Input Helps
NOTE:In the above example, screen fields A, B and C are linked with parameters of the search help. As a result, values can only be transported between the screen and the search help for these three fields. Existing contents of screen fields A and B can be used for selecting the hit list since they are linked with an import parameter of the search help. The values of parameters A and C can be returned to the screen from the hit list since these parameters are declared as export parameters of the search help.
Description of dialog behavior
A hit list might contain plentiful number of entries. A
dialog provides the user with an option to restrict the
entries displayed on the hit list.
In an input help process, the set of possible entries is presented in the dialog box as a list for displaying the hit list. The user selects the required value from this list by double clicking. Since the possible entries are often formal keys, you must be able to display further explanatory information about the possible entries in the list.
If the set of possible entries is very large, the user should be able to define additional conditions for the attributes of the selected entry. Restricting the set of data in this way both increases the clarity of the list and reduces the system load. Additional conditions can be entered in a further dialog window, the dialog box for restricting values.
Specifying the dialog type of a search help defines whether the dialog box for restricting values should be offered and if so under what conditions.
The attributes in the dialog box for displaying the hit list or in the dialog box for restricting values must be defined as internal parameters of the search help. An internal parameter can also be used in only one of the two dialog boxes. It can also belong to the search help interface.
The internal parameter types are also defined with data elements. These data elements define how the parameters are displayed in the two dialog boxes.
Reward if usefull -
Settting Matrix field value to contain a Tab
Hi
I am using the Matrix control in order to allow for a structured system to be created of header levels and sublevels so that I can have something like:
Header 1
Sub Level 1
Sub Level 2
Header 2
Sub Level 1
Sub Level 2
All of this will go into 1 column however I'm having a problem in getting the Sub Level rows to be indented so that it is easily visible which Sub Sections belong to which Header Sections.
I've tried setting the Matrix field by using:
oMatrix.Columns.Item("Sections").Cells.Item(2).Specific.value = vbTab & "Sub Section 1"
and also by just putting " " before the value, however it always takes this out when actually displaying it.
Is there any way to get leading spaces on a Matrix field value?
Thanks a lot
SteveHello Steven,
Did you look at a grid? You have the property CollapseLevel for this problem.
Maybe this is working for you.
HTH Regards Teun -
Display group by field value only once for each group
I have a table with following fields:
TicketNo (varchar2)
TName (varchar2)
DateIssue (Date/Time)
I wanto retrieve result in the following form:
DateIssue TName TicketNo
01-oct-2006 ABC 123-7733
DEF 545-54454
GHI 254-4545
02-oct-2006 JKL 454-7897
MNO 444-7878
TName and TicketNos must be grouped by DateIssue. Since "Group By" clause uses agregate functions only, therefore this type of query will not run:
SQL> Select DateIssue,TName,TicketNo from Table1 group by DateIssue order by DateIssue;
How to display the above given result?SQL> select * from tickets;
TICKETNO TNAME DATEISSUE
121-565 abc 04-FEB-07
454-hj def 04-FEB-07
4545-856 gftr 03-FEB-07
fg45-856 gth 03-FEB-07
SQL> select decode(row_number() over(partition by to_date(dateissue) order by ticketno),1,dateissue) dateissue
2 ,tname,ticketno
3 from tickets;
DATEISSUE TNAME TICKETNO
03-FEB-07 gftr 4545-856
gth fg45-856
04-FEB-07 abc 121-565
def 454-hj
Message was edited by:
jeneesh -
Selection screen field value capturing
Hi,
I have developed a report for displaying amendment changes in a purchse order. The input are purchase order
and plant. Now they have asked for an additional input of version field, which should also have F4 field-value help.
For version field, default there is no F4 key. So, i have written code like after entering the PO number when we press the enter key, for the corresponding PO, it brings the version no in input field. But my problem is it is displaying the values for version field, but when i select some value it is not getting updated in selection-screen version field. I have attached my code below... please help me
in the below code my problem is only between
AT SELECTION-SCREEN on value-request for P_REVNO.
and
start-of-selection event...
TABLES : ekko,
ekpo,
cdhdr,
cdpos,
MEPO1325,
t001,
t166c,
t166t,
adrc,
komp, " net rate of header
konv, " net value of purchase order
zammendpodet.
TYPES : BEGIN OF ts_cdpos,
ebeln TYPE ekbe-ebeln,
ebelp TYPE ekbe-ebelp,
matnr type ekpo-matnr,
maktx type makt-maktx,
prdat type ekpo-prdat,
belnr TYPE ekbe-belnr,
budat TYPE ekbe-budat,
tkey(70),
txz01 TYPE ekpo-txz01,
ctxnr TYPE t166c-ctxnr,
desp(20) type C,
MEINS LIKE MARA-MEINS,
chtxt TYPE t166t-chtxt.
INCLUDE STRUCTURE cdpos.
TYPES : END OF ts_cdpos.
data : begin of it_makt occurs 0,
matnr like makt-matnr,
maktx like makt-maktx,
end of it_makt.
data : begin of it_maRA occurs 0,
matnr like maRA-matnr,
mEINS like maRA-mEINS,
end of it_maRA.
*Internal table declartion
DATA : it_erev TYPE TABLE OF erev WITH HEADER LINE,
it_ekko1 type table of ekko with header line,
it_konv2 type table of konv with header line,
it_ekpo TYPE TABLE OF ekpo WITH HEADER LINE,
it_ekpo1 TYPE TABLE OF ekpo WITH HEADER LINE,
it_cdhdr TYPE TABLE OF cdhdr WITH HEADER LINE,
it_t166c TYPE TABLE OF t166c WITH HEADER LINE,
it_ekbe TYPE TABLE OF ekbe WITH HEADER LINE,
IT_AMMEND TYPE TABLE OF ZAMMENDPODET WITH HEADER LINE,
IT_AMMEND1 TYPE TABLE OF ZAMMENDPODET WITH HEADER LINE,
it_komp TYPE TABLE OF KOMP WITH HEADER LINE,
it_konv type table of konv with header line,
it_konv1 type table of konv with header line,
it_cdpos TYPE TABLE OF ts_cdpos WITH HEADER LINE.
data : BEGIN OF it_erev1 occurs 0,
revno TYPE erev-revno.
data : end of it_erev1.
data : begin of it_cdpos1 occurs 0.
include structure cdpos.
data : ebeln like ekko-ebeln,
item like ekpo-ebelp,
aedat like ekpo-aedat,
matnr like ekpo-matnr,
txz01 like ekpo-txz01,
desp(20) type C,
MEINS LIKE MARA-MEINS,
item1 like ekpo-netpr.
data : end of it_cdpos1.
types : dy_temp TYPE lips-lgort.
DATA : dyfields LIKE dynpread OCCURS 1 WITH HEADER LINE, dy_value TYPE dy_temp.
DATA: progname TYPE sy-repid,
dynnum TYPE sy-dynnr,
dynpro_values TYPE TABLE OF dynpread,
field_value LIKE LINE OF dynpro_values.
*Work variable declaration
DATA : v_revno TYPE erev-revno,
revno1 type zammendpodet-revno,
w_version TYPE erev-revno,
w_erdat TYPE erev-erdat,
w_eruhr TYPE erev-eruhr,
wv_eruhr TYPE erev-eruhr,
v_tabkey TYPE cdpos-tabkey,
v_temp(5),
v_olddate(8),
v_newdate(8),
v_value_old TYPE cdpos-value_old,
V_OLD TYPE EKPO-BRTWR, " OLD VALUE FOR PURCHASE ORDER
l_ind TYPE i,
temp value 0 type i,
temp1 type i,
temp2 type i,
temp3 type i,
wa_cdpos like line of it_cdpos,
wa_cdpos1 like line of it_cdpos1,
v_tabkey1 TYPE cdpos-tabkey.
PARAMETERS : p_ebeln TYPE ekko-ebeln,
p_ebelp TYPE ekpo-ebelp.
p_bukrs TYPE t001-bukrs,
p_revno type erev-revno.
INITIALIZATION.
AT SELECTION-SCREEN on value-request for P_REVNO.
CLEAR: dyfields[], dyfields.
dyfields-fieldname = 'P_REVNO'.
APPEND dyfields.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = sy-cprog
dynumb = sy-dynnr
TABLES
dynpfields = dyfields.
READ TABLE dyfields INDEX 1.
SELECT revno
FROM erev
INTO TABLE it_erev1 WHERE edokn = p_ebeln.
IF sy-subrc = 0.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'REVNO'
dynpprog = progname
dynpnr = dynnum
dynprofield = 'P_REVNO'
value_org = 'S'
TABLES
value_tab = it_eREV1
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.
START-OF-SELECTION.
SELECT SINGLE *
FROM t001
WHERE bukrs EQ p_bukrs.
IF sy-subrc EQ 0.
SELECT SINGLE *
FROM adrc
WHERE addrnumber EQ t001-adrnr.
ENDIF.
SELECT SINGLE *
FROM ekko
WHERE ebeln
EQ p_ebeln
AND frgke = 2.
select * from konv into corresponding fields of table it_konv where knumv eq ekko-knumv.
useful informations will be rewarded.
thanks and regards,
subbu.,Hi ,
Use this function module
call function 'DYNP_VALUES_UPDATE'
exporting
dyname = sy-repid
dynumb = sy-dynnr
tables
dynpfields = t_dynpfields
exceptions
invalid_abapworkarea = 1
invalid_dynprofield = 2
invalid_dynproname = 3
invalid_dynpronummer = 4
invalid_request = 5
no_fielddescription = 6
undefind_error = 7
others = 8.
where t_dynpfields would contain name of field and value you want to update.
Please reward if useful. -
Linking intotype listbox to table in sm30 inorder to maintain field values
Hi All,
I got a requirment to create custom infotype with some custom fields adding to stndrd infotype an with also some validations .
So let me know, How to link intotype listbox to table in sm30 inorder to maintain field values?
Thanks for the same.Hi Vinay,
The best way would be to assign the search help in the table directly and recreate the maintainance...in this manner the search help would be available in the sm30 already..then using "Ëvents" of the table maintainance generator we can validate the fields entered at the time of saving..if a standard search help already exists then t would be availbel in maintainance......
to create events -> go to se11 -> utilities -> table maintainance generator -> click '
then go to environment -> modification -> events ..in the table control..create new entries ....and select the suitable event and write the code in the routine to do validations
Hope it helps
Pls check and revert
Regards
Byju -
Screen exit MEREQ001- Copy 1 PR line item custom fields values in all
Hi,
I have implemented the Enhancement MEREQ001 to add a new tab for Purchase Requistion screen at line item level .
Requirement for me is to show the same data in the newly added tab for all line items and also to save the same data in EBAN table.
I am facing a problem while saving the data. In EBAN table, the data was saved for all line items. But the custom added field values are saved for only the line item displayed.
I ll explain with an example for better understanding.
I have created a PR with 3 line items ITEM1, ITEM2 ,and ITEM2
When i saved the data when ITEM1 is displayed, EBAN have custom added field values for ITEM1 but not for ITEM2 and item3.
The same way, if I save data when ITEM2 is displayed, EBAN has custom added field values for ITEM2 but not for ITEM3 and ITEM1.
Now, my requirement is to get the all line items ITEM1 & ITEM2 and ITEM3 updated with custom added field values in EBAN.
The logic i added in ME_PROCESS_REQ_CUST~CHECK are as below.
i_items TYPE mmpur_requisition_ite ,
lv_if_item TYPE REF TO if_purchase_requisition_item,
lt_itm_data TYPE mereq_item .
DATA : LV_dept TYPE EBAN-ZZDEPARTMENT ,
lx_itm_data type mereq_itemx.
CALL METHOD im_header->get_items
RECEIVING
re_items = i_items.
LOOP AT i_items INTO wa_item.
lv_if_item = wa_item-item.
CALL METHOD lv_if_item->get_data
RECEIVING
re_data = lt_itm_data.
CALL METHOD lv_if_item->get_datax
RECEIVING
re_datax = lx_itm_data.
IF lt_itm_data-zzdepartment IS INITIAL.
lt_itm_data-zzdepartment = LV_dept .
lx_itm_data-zzdepartment = 'X' .
ELSE.
Lv_dept = lt_itm_data-zzdepartment.
ENDIF.
To set the value for all line item.
CALL METHOD lv_if_item->SET_DATAX
EXPORTING
IM_DATAX = lx_itm_data.
CALL METHOD lv_if_item->Set_data
EXPORTING
IM_data = lt_itm_data.
ENDLOOP. " LOOP AT i_items INTO wa_item.
ENDIF. " IF ( NOT ls_header1-banfn IS INITIAL
BUT above logic is not working
Please give your inputs
Thanks in advance
Deepanker DwivediHI,
You can use GET CURSOR LINE LINE_NO this will give you the sy-index so that you can read the itab like
read table itab index line_no. This is one option and second is if you have row selector.
read table itab with key mark = 'X'.
If you want the Row contents befor the PAI triggers
[Check this Thread|Table Control dynamic F4;
Hope this is clear to you.
Regards
Ram -
Difference between * and ALL field values?
Greetings to all,
Here is an intresting question. For a particular authorization object of a role, I see that it has a field value of ALL for a specific field. Is this same as * or is there any subtle difference between the two. This is in ECC 5.0.I would greatly appreciate a discussion. Thanks.i have also seen the value ALL in some roles in my org...
Object:C_PRPS_USR (PS: Model for User Field Authorization for WBS elements)
Field:USR10_1 (User field with 10 characters)
Value: ALL
If ALL means value ALL then what is the significance of it in the above field?
Pls throw some light...
thankx
Sachin -
Referencing form field values in javascript
I am attempting to call a report from a button on a form in Portal. I have been successful in calling a report from a OnClick JavaScript event handler, but I also need to send a parameter to the report based on the value in a field on the form.
I have been unable to find any information on how to do this. Does someone know how to do this? Thanks.
Bruce Cable
Kids123.comPerhaps this technote below may be of help:
Addressing field values in forms
For forms all of the form field values are kept in the "session storage", which is an internal
data structure object
and has some methods to access the data
to access them you must have following information:
1. Block name
- DEFAULT for forms on tables
- MASTER_BLOCK for the master section of MD form
- DETAIL_BLOCK for the detail section of MD form
2. Attribute name (is the column name plus 'A_' prefix)
3. Column datatype (NUMBER, VARCHAR2, DATE)
Example:
declare
my_empno number;
begin
my_empno := p_session.get_value_as_NUMBER(
p_block_name => 'DEFAULT',
p_attribute_name => 'A_EMPNO');
end;
In case of MD form, there are 2 blocks - MASTER_BLOCK for master section of the form
and DETAIL_BLOCK for the detail section. Since there is more that 1 record in detail section
you must specify a row index for the detail row
Example:
declare
my_empno number;
begin
my_empno := p_session.get_value_as_NUMBER(
p_block_name => 'DETAIL_BLOCK',
p_attribute_name => 'A_EMPNO'
p_index => 5);
end;
Writing custom buttons code
Every event handler has p_session argument, for any event handler it is a reference to the
session storage object, by calling
appropriate methods you can get and set values of the fields in the form.
Attribute names are create by adding 'A_' to your table's column names, so DEPTNO becomes
A_DEPTNO
Note, if you add a button to detail section of the form for each detail row then you'll have to
examine p_instance value which will be set to a number indicating for which row button has been
pressed. (1 for the first detail record, 2, 3, etc.)
Example:
bold - generated part
italic - custom code
procedure WWV_DETAIL_GENSYS_99
p_block_name in varchar2,
p_object_name in varchar2,
p_instance in integer,
p_event_type in varchar2,
p_user_args in varchar2,
p_session in out DNONKIN.wwa_api_module_session
is
begin
declare
my_action varchar2(4000);
var1 integer;
var2 varchar2(4000);
begin
my_action := p_session.get_value_as_varchar2(
p_block_name => p_block_name,
p_attribute_name => '_DETAIL_ACTION',
p_index => p_instance
if my_action = 'DELETE' then
var1:=p_session.get_value_as_NUMBER(
p_block_name => p_block_name,
p_attribute_name => 'A_EMPNO',
p_index => p_instance
var2:=p_session.get_value_as_VARCHAR2(
p_block_name => p_block_name,
p_attribute_name => 'A_ENAME',
p_index => p_instance
--- Add a record to my log table
insert into my_log values (var1,var2);
end if;
exception when others then
my_error_handler_if_any;
raise;
end;
end WWV_DETAIL_GENSYS_99;
null
Maybe you are looking for
-
Loading data file Flat file to Oracle DB
I have 600/700 MB datafiles on AIX box which need to upload to Oracle using ODI. I am considering the below KMs ...which would be more appropriate in this case LKM File to Oracle LKM File to Oracle (EXTERNAL TABLE) Why should we use LKM File to Oracl
-
Hooking up 2 computers side by side
Hi... possible stupid question of the day... how do I hook up my G-4 to my G-5 so I can utilize both of them???
-
Component reference point in ultiboard
The default setting for component reference point is the center of PIN 1 of the part. however, for many SMT machines, it reference to the center of the component (not a pin). How doImodify it without going through every component in the database? So
-
Files should be deleted after applying patches
Hi, after applying support Packages successfully, which files should be deleted from the OS level. i mean the files allocated on /usr/sap/trans/data /usr/sap/trans/cofiles /usr/sap/trans/EPS/in and so on Thanks Sherif
-
Import PlayLIST, not songs
Hello, I am wondering how I can use a playlist, either from the music store or from a buddy, to create my own playlist without having to purchase the songs. If I see a playlist that has 10 songs that are already in my iTunes Music library, how can I