New Article on Customizing KM Notifications

There are several different areas used to generate e-mail notifications. Knowledge Management uses such a mechanism for Subscriptions and Approval. I have written an article about how these notifications may be customized. This may be found at:
http://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/90626697-0901-0010-2ca7-86e2a50ce70d
An SDN search on "Customizing Notifications" will turn up info on other mechanisms, such as this posting on User Management notifications:
How to Customize eMail Notification Textes
I hope you find this information useful. Let me know if you find any errors!
Regards,
Darin Krasle

Hi Darin,
I have read ur article on Customizing Notifications.
I have similar requirement.
I tried wht u have stated in ur article but its not working.
I am attaching the code for both SUBSCRIPTION_EMAIL.XSL and SUBSCRIPTION_en.xml.
Could you pls tell me where am in going wrong.
Regards
Saurabh
<u><b>SUBSCRIPTION_EMAIL.XSL</b></u>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:x="DAV:" xmlns:y="SAP:">
  <xsl:output method='html'/>
  <xsl:param name="subscriptionname"/>
  <xsl:param name="notificationtext"/>
  <xsl:param name="eventid"/>
  <xsl:param name="eventname"/>
  <xsl:param name="resourcename"/>
  <xsl:param name="resourceiscollection"/>
  <xsl:param name="resourceurl"/>
  <xsl:param name="parenturl"/>
  <xsl:param name="parentname"/>
  <xsl:param name="parentpath"/>
  <xsl:param name="contentaccessurl"/>
  <xsl:param name="folderaccessurl"/>
  <xsl:param name="deleteurl"/>
  <xsl:param name="administrationurl"/>
  <xsl:param name="mailto"/>
  <xsl:param name="newresourcelink"/> 
  <xsl:param name="isowner"/>
  <xsl:param name="detailsurl"/> 
  <xsl:param name="lastmodified"/> 
  <xsl:param name="lastmodifieduser"/>
  <xsl:param name="subscriptiondetailsurl"/>
  <xsl:param name="resourceDescription"/>
  <xsl:param name="righttoleft"/>
//This is my code*********
<xsl:template match="/root">
<xsl:output encoding="UTF-8" />
<xsl:choose>
<xsl:when test="count(area[starts-with($resourceurl, @kmPath)])>0">
<xsl:apply-templates select="area[starts-with($resourceurl,@kmPath)]"/>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="area[@kmPath='default']"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="area">
//My Code ends here*********
<xsl:comment xml:space="preserve">
<xsl:apply-templates select="notification/greeting/textspan"><xsl:with-param name="outputFormat" select="'plaintext'"/></xsl:apply-templates>
<xsl:apply-templates select="notification/eventinfo/textspan[@pEventid=$eventid and @isCollection=$resourceiscollection]"><xsl:with-param name="outputFormat" select="'plaintext'"/></xsl:apply-templates>
<xsl:value-of select="$notificationtext"/>
<xsl:apply-templates select="notification/warning/textspan"><xsl:with-param name="outputFormat" select="'plaintext'"/></xsl:apply-templates>
<xsl:apply-templates select="notification/txtwarning/textspan"><xsl:with-param name="outputFormat" select="'plaintext'"/></xsl:apply-templates>
</xsl:comment>
    <html><xsl:if test="$righttoleft='true'"><xsl:attribute name="dir">rtl</xsl:attribute></xsl:if>
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
        <title><xsl:apply-templates select="notification/title/textspan"><xsl:with-param name="outputFormat" select="'plaintext'"/></xsl:apply-templates></title>
      </head>
      <body  style="font-family:Arial,sans-serif; font-size:small">
        <table>
          <tr>
            <td>
              <span style="font-size:medium; font-weight:bold;"><xsl:apply-templates select="notification/title/textspan"/></span>
            </td>
         <td align="right" valign="bottom" style="font-size:xx-small">
              <xsl:if test="not($eventid='delete') and not($eventid='archive')">
             <xsl:apply-templates select="notification/actioninfo/textspan[@isowner=$isowner]"/>
           </xsl:if>
         </td>
          </tr>
          <tr>
            <td colspan="2"><hr/></td>
       </tr>
          <tr>
            <td colspan="2"><pre style="font-style:italic;" tabindex="0"><xsl:value-of select="$notificationtext"/></pre>
            </td>
          </tr>
          <tr>
         <td colspan="2">
              <xsl:apply-templates select="notification/eventinfo/textspan[@pEventid=$eventid and @isCollection=$resourceiscollection]"/>
         </td>
       </tr>
          <tr>
            <td colspan="2"><hr/></td>
       </tr>
     </table>
        <span style="font-size:xx-small"><xsl:apply-templates select="notification/warning/textspan"/></span>
      </body>
    </html>
  </xsl:template>
  <xsl:template match="textspan">
    <xsl:param name="outputFormat" select="'HTML'"/>
     <xsl:apply-templates select="resourcename|parentname|parentpath|resourceDescription|lastmodified|lastmodifieduser|subscriptiondetailsurl|subscriptiondetailslink|newresourcelink|subscriptionname|notificationtext|eventid|eventname|parenturl|contentaccessurl|folderaccessurl|deleteurl|administrationurl|mailto|subscriptionlink|resourcelink|parentlink|deletelink|administerlink|mailtolink|detailsurl|detailslink|text()"><xsl:with-param name="outputFormat" select="$outputFormat"/></xsl:apply-templates>
  </xsl:template>
  <xsl:template match="text()">
    <xsl:param name="outputFormat" select="'HTML'"/>
    <xsl:if test="$outputFormat='HTML'"><span tabindex="0"><xsl:value-of select="."/></span></xsl:if>
    <xsl:if test="not($outputFormat='HTML')"><xsl:value-of select="."/></xsl:if>
  </xsl:template>
  <xsl:template match="resourcename">
    <xsl:param name="outputFormat" select="'HTML'"/>
    <xsl:if test="$outputFormat='HTML'"><span tabindex="0"><xsl:value-of select="$resourcename"/></span></xsl:if>
    <xsl:if test="not($outputFormat='HTML')"><xsl:value-of select="$resourcename"/></xsl:if>
  </xsl:template>
  <xsl:template match="parentname">
    <xsl:param name="outputFormat" select="'HTML'"/>
    <xsl:if test="$outputFormat='HTML'"><span tabindex="0"><xsl:value-of select="$parentname"/></span></xsl:if>
    <xsl:if test="not($outputFormat='HTML')"><xsl:value-of select="$parentname"/></xsl:if>
  </xsl:template>
  <xsl:template match="parentpath">
    <xsl:param name="outputFormat" select="'HTML'"/>
    <xsl:if test="$outputFormat='HTML'"><span tabindex="0"><xsl:value-of select="$parentpath"/></span></xsl:if>
    <xsl:if test="not($outputFormat='HTML')"><xsl:value-of select="$parentpath"/></xsl:if>
  </xsl:template> 
  <xsl:template match="resourceDescription">
    <xsl:param name="outputFormat" select="'HTML'"/>
    <xsl:if test="$outputFormat='HTML'"><span tabindex="0"><xsl:value-of select="$resourceDescription"/></span></xsl:if>
    <xsl:if test="not($outputFormat='HTML')"><xsl:value-of select="$resourceDescription"/></xsl:if>
  </xsl:template>
  <xsl:template match="lastmodified">
    <xsl:param name="outputFormat" select="'HTML'"/>
    <xsl:if test="$outputFormat='HTML'"><span tabindex="0"><xsl:value-of select="$lastmodified"/></span></xsl:if>
    <xsl:if test="not($outputFormat='HTML')"><xsl:value-of select="$lastmodified"/></xsl:if>
  </xsl:template>
  <xsl:template match="lastmodifieduser">
    <xsl:param name="outputFormat" select="'HTML'"/>
    <xsl:if test="$outputFormat='HTML'"><span tabindex="0"><xsl:value-of select="$lastmodifieduser"/></span></xsl:if>
    <xsl:if test="not($outputFormat='HTML')"><xsl:value-of select="$lastmodifieduser"/></xsl:if>
  </xsl:template>
  <xsl:template match="subscriptiondetailsurl">
    <xsl:param name="outputFormat" select="'HTML'"/>
    <xsl:if test="$outputFormat='HTML'"><span tabindex="0"><xsl:value-of select="$subscriptiondetailsurl"/></span></xsl:if>
    <xsl:if test="not($outputFormat='HTML')"><xsl:value-of select="$subscriptiondetailsurl"/></xsl:if>
  </xsl:template>
  <xsl:template match="subscriptionname">
    <xsl:param name="outputFormat" select="'HTML'"/>
    <xsl:if test="$outputFormat='HTML'"><span tabindex="0"><xsl:value-of select="$subscriptionname"/></span></xsl:if>
    <xsl:if test="not($outputFormat='HTML')"><xsl:value-of select="$subscriptionname"/></xsl:if>
  </xsl:template>
  <xsl:template match="notificationtext">
    <xsl:param name="outputFormat" select="'HTML'"/>
    <xsl:if test="$outputFormat='HTML'"><span tabindex="0"><xsl:value-of select="$notificationtext"/></span></xsl:if>
    <xsl:if test="not($outputFormat='HTML')"><xsl:value-of select="$notificationtext"/></xsl:if>
  </xsl:template>
  <xsl:template match="eventid">
    <xsl:param name="outputFormat" select="'HTML'"/>
    <xsl:if test="$outputFormat='HTML'"><span tabindex="0"><xsl:value-of select="$eventid"/></span></xsl:if>
    <xsl:if test="not($outputFormat='HTML')"><xsl:value-of select="$eventid"/></xsl:if>
  </xsl:template>
  <xsl:template match="eventname">
    <xsl:param name="outputFormat" select="'HTML'"/>
    <xsl:if test="$outputFormat='HTML'"><span tabindex="0"><xsl:value-of select="$eventname"/></span></xsl:if>
    <xsl:if test="not($outputFormat='HTML')"><xsl:value-of select="$eventname"/></xsl:if>
  </xsl:template>
  <xsl:template match="mailto">
    <xsl:param name="outputFormat" select="'HTML'"/>
    <xsl:if test="$outputFormat='HTML'"><span tabindex="0"><xsl:value-of select="$mailto"/></span></xsl:if>
    <xsl:if test="not($outputFormat='HTML')"><xsl:value-of select="$mailto"/></xsl:if>
  </xsl:template>
  <xsl:template match="parenturl">
    <xsl:param name="outputFormat" select="'HTML'"/>
    <xsl:if test="$outputFormat='HTML'"><span tabindex="0"><xsl:value-of select="$parenturl"/></span></xsl:if>
    <xsl:if test="not($outputFormat='HTML')"><xsl:value-of select="$parenturl"/></xsl:if>
  </xsl:template>
  <xsl:template match="contentaccessurl">
    <xsl:param name="outputFormat" select="'HTML'"/>
    <xsl:if test="$outputFormat='HTML'"><span tabindex="0"><xsl:value-of select="$contentaccessurl"/></span></xsl:if>
    <xsl:if test="not($outputFormat='HTML')"><xsl:value-of select="$contentaccessurl"/></xsl:if>
  </xsl:template>
  <xsl:template match="folderaccessurl">
    <xsl:param name="outputFormat" select="'HTML'"/>
    <xsl:if test="$outputFormat='HTML'"><span tabindex="0"><xsl:value-of select="$folderaccessurl"/></span></xsl:if>
    <xsl:if test="not($outputFormat='HTML')"><xsl:value-of select="$folderaccessurl"/></xsl:if>
  </xsl:template>
  <xsl:template match="deleteurl">
    <xsl:param name="outputFormat" select="'HTML'"/>
    <xsl:if test="$outputFormat='HTML'"><span tabindex="0"><xsl:value-of select="$deleteurl"/></span></xsl:if>
    <xsl:if test="not($outputFormat='HTML')"><xsl:value-of select="$deleteurl"/></xsl:if>
  </xsl:template>
  <xsl:template match="administrationurl">
    <xsl:param name="outputFormat" select="'HTML'"/>
    <xsl:if test="$outputFormat='HTML'"><span tabindex="0"><xsl:value-of select="$administrationurl"/></span></xsl:if>
    <xsl:if test="not($outputFormat='HTML')"><xsl:value-of select="$administrationurl"/></xsl:if>
  </xsl:template>
  <xsl:template match="detailsurl">
    <xsl:param name="outputFormat" select="'HTML'"/>
    <xsl:if test="$outputFormat='HTML'"><span tabindex="0"><xsl:value-of select="$detailsurl"/></span></xsl:if>
    <xsl:if test="not($outputFormat='HTML')"><xsl:value-of select="$detailsurl"/></xsl:if>
  </xsl:template>
  <xsl:template match="subscriptiondetailslink">
    <xsl:param name="outputFormat" select="'HTML'"/>
    <xsl:if test="$outputFormat='HTML'"><a href="{$subscriptiondetailsurl}"><xsl:attribute name="title"><xsl:value-of select="text()"/></xsl:attribute><xsl:value-of select="text()"/></a></xsl:if>
    <xsl:if test="$outputFormat='plaintext'"><xsl:value-of select="text()"/> (<xsl:value-of select="$subscriptiondetailsurl"/>)</xsl:if>
  </xsl:template>
  <xsl:template match="newresourcelink">
    <xsl:param name="outputFormat" select="'HTML'"/>
    <xsl:if test="$outputFormat='HTML'"><a href="{$contentaccessurl}"><xsl:attribute name="title"><xsl:value-of select="$newresourcelink"/></xsl:attribute><xsl:value-of select="$newresourcelink"/></a></xsl:if>
    <xsl:if test="$outputFormat='plaintext'"><xsl:value-of select="text()"/> (<xsl:value-of select="$contentaccessurl"/>)</xsl:if>
  </xsl:template>
  <xsl:template match="subscriptionlink">
    <xsl:param name="outputFormat" select="'HTML'"/>
    <xsl:if test="$outputFormat='HTML'"><a href="{$subscriptiondetailsurl}"><xsl:attribute name="title"><xsl:value-of select="text()"/></xsl:attribute><xsl:value-of select="text()"/></a></xsl:if>
    <xsl:if test="$outputFormat='plaintext'"><xsl:value-of select="text()"/> (<xsl:value-of select="$subscriptiondetailsurl"/>)</xsl:if>
  </xsl:template>
  <xsl:template match="resourcelink">
    <xsl:param name="outputFormat" select="'HTML'"/>
    <xsl:if test="$outputFormat='HTML'"><a href="{$contentaccessurl}"><xsl:attribute name="title"><xsl:value-of select="$resourcename"/></xsl:attribute><xsl:value-of select="$resourcename"/></a></xsl:if>
    <xsl:if test="$outputFormat='plaintext'"><xsl:value-of select="$resourcename"/> (<xsl:value-of select="$contentaccessurl"/>)</xsl:if>
    <xsl:if test="$outputFormat='plaintextsms'"><xsl:value-of select="$resourcename"/></xsl:if>
  </xsl:template>
  <xsl:template match="parentlink">
    <xsl:param name="outputFormat" select="'HTML'"/>
    <xsl:if test="$outputFormat='HTML'"><a href="{$folderaccessurl}"><xsl:attribute name="title"><xsl:value-of select="$parentpath"/></xsl:attribute><xsl:value-of select="$parentpath"/></a></xsl:if>
    <xsl:if test="$outputFormat='plaintext'"><xsl:value-of select="$parentname"/> (<xsl:value-of select="$parentpath"/>)</xsl:if>
    <xsl:if test="$outputFormat='plaintextsms'"><xsl:value-of select="$parentpath"/></xsl:if>
  </xsl:template>
  <xsl:template match="deletelink">
    <xsl:param name="outputFormat" select="'HTML'"/>
    <xsl:if test="$outputFormat='HTML'"><a href="{$deleteurl}"><xsl:attribute name="title"><xsl:value-of select="text()"/></xsl:attribute><xsl:value-of select="text()"/></a></xsl:if>
    <xsl:if test="$outputFormat='plaintext'"><xsl:value-of select="text()"/> - <xsl:value-of select="$deleteurl"/></xsl:if>
  </xsl:template>
  <xsl:template match="administerlink">
    <xsl:param name="outputFormat" select="'HTML'"/>
    <xsl:if test="$outputFormat='HTML'"><a href="{$administrationurl}"><xsl:attribute name="title"><xsl:value-of select="text()"/></xsl:attribute><xsl:value-of select="text()"/></a></xsl:if>
    <xsl:if test="$outputFormat='plaintext'"><xsl:value-of select="text()"/> - <xsl:value-of select="$administrationurl"/></xsl:if>
  </xsl:template>
  <xsl:template match="mailtolink">
    <xsl:param name="outputFormat" select="'HTML'"/>
    <xsl:if test="$outputFormat='HTML'"><a href="{$mailto}"><xsl:attribute name="title"><xsl:value-of select="text()"/></xsl:attribute><xsl:value-of select="text()"/></a></xsl:if>
    <xsl:if test="$outputFormat='plaintext'"><xsl:value-of select="text()"/> - <xsl:value-of select="$mailto"/></xsl:if>
  </xsl:template>
  <xsl:template match="detailslink">
    <xsl:param name="outputFormat" select="'HTML'"/>
    <xsl:if test="$outputFormat='HTML'"><a href="{$detailsurl}"><xsl:attribute name="title"><xsl:value-of select="text()"/></xsl:attribute><xsl:value-of select="text()"/></a></xsl:if>
    <xsl:if test="$outputFormat='plaintext'"><xsl:value-of select="text()"/> - <xsl:value-of select="$detailsurl"/></xsl:if>
  </xsl:template>
</xsl:stylesheet>
<u><b>SUBSCRIPTION_en.xml</b></u>
<notification>
  <title>
    <textspan pEventid="title">MIndtree Subscription <subscriptionname/></textspan>
  </title>
  <greeting>
    <textspan pEventid="greeting"><subscriptionlink/></textspan>
  </greeting>
//This is my Code *******
<root>
<area kmPath="/documents/MindTreeNews">
<notification>
<textspan isCollection="true" pEventid="create"><resourcelink/>@@@ in folder @@@<parentlink/> created by <lastmodifieduser/> on <lastmodified/>. (<detailslink>Details</detailslink>)</textspan></notification>
</area>
<area kmPath="default">
<notification>
<textspan isCollection="true" pEventid="create"><resourcelink/> in folder <parentlink/> created by <lastmodifieduser/> on <lastmodified/>. (<detailslink>Details</detailslink>)</textspan>
</notification>
</area>
</root>
//My Code ends here*******
  <eventinfo>
    <textspan isCollection="true" pEventid="create"><resourcelink/> in folder <parentlink/> created by <lastmodifieduser/> on <lastmodified/>. (<detailslink>Details</detailslink>)</textspan>
    <textspan isCollection="false" pEventid="move"><resourcename/> in folder <parentlink/> moved to <newresourcelink/>. (<detailslink>Details</detailslink>).</textspan>
    <textspan isCollection="false" pEventid="rename"><resourcename/> in folder <parentlink/> renamed as <newresourcelink/>. (<detailslink>Details</detailslink>)</textspan>
    <textspan isCollection="true" pEventid="change_discussion">Discussion <resourcelink/> changed by <lastmodifieduser/> on <lastmodified/>.</textspan>
    <textspan isCollection="false" pEventid="back_in_progress"><resourcename/> in folder <parentlink/> is back in progress.</textspan>
    <textspan isCollection="false" pEventid="delete"><resourcename/> in folder <parentlink/> deleted.</textspan>
    <textspan isCollection="false" pEventid="removed"><resourcelink/> removed from folder <parentlink/>. (<detailslink>Details</detailslink>)</textspan>
    <textspan isCollection="false" pEventid="change_discussion_item">Discussion entry <resourcelink/> changed.</textspan>
    <textspan isCollection="true" pEventid="delete_discussion">Discussion <resourcename/> deleted.</textspan>
    <textspan isCollection="true" pEventid="delete"><resourcename/> in folder <parentlink/> deleted.</textspan>
    <textspan isCollection="false" pEventid="new_discussion_item">Discussion entry <resourcelink/> created.</textspan>
    <textspan isCollection="false" pEventid="stop"><resourcename/> in folder <parentlink/> withdrawn.</textspan>
    <textspan isCollection="false" pEventid="create"><resourcelink/> in folder <parentlink/> created by <lastmodifieduser/> on <lastmodified/>. (<detailslink>Details</detailslink>)</textspan>
    <textspan isCollection="true" pEventid="set"><resourcelink/> in folder <parentlink/> changed by <lastmodifieduser/> on <lastmodified/>.</textspan>
    <textspan isCollection="true" pEventid="rename"><resourcename/> in folder <parentlink/> renamed as <newresourcelink/>. (<detailslink>Details</detailslink>)</textspan>
    <textspan isCollection="false" pEventid="archive"><resourcename/> in folder <parentlink/> archived.</textspan>
    <textspan isCollection="false" pEventid="added"><resourcelink/> added to folder <parentlink/>. (<detailslink>Details</detailslink>)</textspan>
    <textspan isCollection="false" pEventid="other"><resourcelink/> in folder <parenturl/> generated a <eventname/> event.</textspan>
    <textspan isCollection="false" pEventid="start"><resourcelink/>in folder <parentlink/> released. (<detailslink>Details</detailslink>)</textspan>
    <textspan isCollection="true" pEventid="del_dis_item">Discussion entry <resourcename/> deleted.</textspan>
    <textspan isCollection="false" pEventid="publish"><resourcelink/> in folder <parentlink/> published. (<detailslink>Details</detailslink>)</textspan>
    <textspan isCollection="true" pEventid="removed"><resourcelink/> removed from folder <parentlink/>. (<detailslink>Details</detailslink>)</textspan>
    <textspan isCollection="true" pEventid="added"><resourcelink/>added to folder <parentlink/> by <lastmodifieduser/> on <lastmodified/>. (<detailslink>Details</detailslink>)</textspan>
    <textspan isCollection="true" pEventid="other"><resourcelink/> generated a <eventname/> event. (<detailslink>Details</detailslink>)</textspan>
    <textspan isCollection="true" pEventid="new_discussion">Discussion <resourcelink/> started.</textspan>
    <textspan isCollection="true" pEventid="move"><resourcename/> in folder <parentlink/> moved to <newresourcelink/>. (<detailslink>Details</detailslink>)</textspan>
    <textspan isCollection="false" pEventid="set"><resourcelink/> in folder <parentlink/> changed by <lastmodifieduser/> on <lastmodified/>. (<detailslink>Details</detailslink>)</textspan>
  </eventinfo>
  <actioninfo>
    <textspan isowner="true" pEventid="owner_action_info"><subscriptiondetailslink>Edit Subscription</subscriptiondetailslink> | <deletelink>Cancel Subscription</deletelink></textspan>
    <textspan isowner="false" pEventid="user_action_info"><subscriptiondetailslink>Edit Subscription</subscriptiondetailslink> | <deletelink>Cancel Subscription</deletelink> | <mailtolink>e-mail owner</mailtolink></textspan>
  </actioninfo>
  <warning>
    <textspan pEventid="warning">Do not reply to this automated mail.</textspan>
  </warning>
  <txtwarning>
    <textspan pEventid="txtwarning">Ignore the information below. It is only shown because your e-mail client is not HTML-compatible.</textspan>
  </txtwarning>
</notification>

Similar Messages

  • SDK: adding new value in custom fields

    Hello,
    I wanted to add new value in custom field of the resource table... I used this code (taken from SDK example) :
    //Create and fill request for CustomData Service
    SaveCustomDataRequest request = new SaveCustomDataRequest();
    List<CustomValue> customData = new ArrayList<CustomValue>();
    CustomValue attribute = new CustomValue();
    //Field name
    attribute.setName("NOTIFICATION_NUMBER");
    //value received from ERP
    attribute.setValue(notification);
    customData.add(attribute);
    request.setCustomData(customData);
    //table name
    request.setObjectAlias("RESRCE");
    request.setRef(handle);
    customDataService.saveCustomData(request);
    But get a validation error, complaining about no ModifiedDateTime providen... How can I initialize this date or avoid the validation ?
    I also tried using the ResourceDOService, using the setCustomData method, but same error...
    Thanks

    I'm using ME 5.2.2.2, sdk 5.0.1.8, for the moment locally on my laptop for development.
    There is no stack trace, I can just see the error when debugging :
    com.sap.me.frame.domain.RequiredValueValidationException: class com.sap.me.domain.model.CustomFieldDOmodifiedDateTime
    The resource exist, I do a read request before to check if the custom field has value or not. Anyway, it's a collaboration plug-in, executed when we change the resource status, so I got the resource handle as input ;o)
    I can confirm there are some resource with custom value in other fields with date = null. It occurs when I'm saving the data in the GUI (so entering data's manually in custom field, do a save => fields are not initialized)
    Regards

  • Create new article using BAPI_MATERIAL_MAINTAINDATA_RT

    Hi all,
    When i try to create a new article by using BAPI_MATERIAL_MAINTAINDATA_RT  i am getting the follow success message M3801 ("Material & changed") but article is not created. After sending the BAPI_MATERIAL_MAINTAINDATA_RT and returning without an error I call a BAPI_TRANSACTION_COMMIT. How can I resolve this? Thanks in advance.
    Best Regards
    Gabriel.

    The answer is very simple.  The article master data model has an internel link to the classification system. Unfortunately the classification system works with a kind of on commit logic.
    Based on fact that the BAPis are not allowed to send a commit work, the caller must do this.
    So after sending the BAPI_MATERIAL_MAINTAINDATA_RT and returning without an error call a  BAPI_TRANSACTION_COMMIT
    Then it will work fine.
    If you have such articles with MH084 in your productive system, let me know. For single articles I can provide a fix report.
    Generic articles should be deleted.
    Better idea is opening an customer message for support.
    regards
    B

  • SAP IS Retail Outbound Idoc Creation for New Articles

    Hi SAP Gurus,
    Good day!
    I would like to inquire if you are familiar with the necessary set up to create OUTbound Idocs to be sent to POS whenever a new article is created. I have already activated the Change Pointers for the Message Types for IS Retail via BD50. However, this did not solve the issue. I have an existing material which ably triggers the idoc change;however, when I try accessing the materials I created recently, no idocs are created.
    Your help is most appreciated.
    Best regards,

    Hi,
    Check in WE20 partner profiles > customer type KU - Customer > choose your store number > under outbound parameters all relevant message type must defined
    Look at the following links for more details:
    http://allian.uclv.net/saphelp/helpdata/EN/50/94f500470e11d1894a0000e8323352/frameset.htm
    http://allian.uclv.net/saphelp/helpdata/EN/50/94f500470e11d1894a0000e8323352/frameset.htm
    http://allian.uclv.net/saphelp/helpdata/EN/50/94f500470e11d1894a0000e8323352/frameset.htm
    http://allian.uclv.net/saphelp/helpdata/EN/50/94f500470e11d1894a0000e8323352/frameset.htm
    Hope you got answer
    regards
    Satish

  • New Article - RoboHelp projects with Subversion and TortoiseSVN

    Some folks have posted questions about Subversion and TortoiseSVN in this forum, so I thought I'd pass along this new article I found in the Adobe Developer Network this week that goes in to detail on how to set up this open-source solution with RoboHelp:
    http://www.adobe.com/devnet/robohelp/articles/robohelp_subversion.html
    Thanks
    John Daigle
    Adobe Certified RoboHelp and Captivate Instructor
    Evergreen, Colorado
    www.showmethedemo.com

    Thread moved to Source Control forum.
    See www.grainge.org for RoboHelp and Authoring tips
    @petergrainge

  • How can I add news articles to website and dynamically update headlines without MySQL?

    Hi guys,
    I update a number of website for athletes with news articles...
    I'm doing it manually at the moment so I have to update:
        1. news.php (with date and article title which links to the article)
        2. News Article (with title, date and article text)
        3. includes/latestNews.php (an include latest 3-4 article dates and headline which links to the article - displays on every page via include)
    The News Article is a plain and simple PHP file which is stored in a folder 'assets/news/' and the file is named according to date i.e. a news article today would be 130420 (as in 2013 year, 04 month, 20 day) so they sit in chronological order in the 'news' folder. There is a template page file called viewArticle.php which drags in the appropriate news article by link i.e. viewArticle.php?id=130420
    At the moment, I have to update news.php, latestNews.php and the individual article individually and manually.
    What I would like to do is...
    ...create, edit and add the News Article file (130420) to the 'news' foler as I am currently doing. But, with PHP, set news.php and latestNews.php to read the files in the 'assets/news/' folder to display the latest 4 article dates and linked headlines (for latestNews.php) and display all the dates and linked headlines (for news.php).
    I don't know anything about databases and can't get my head around them so I would rather do it with PHP code. Is this possible?
    Thank you very much and I hope to hear from you.
    SM

    This seems like a follow up question to your earlier one
    http://forums.adobe.com/thread/1195549
    Have you considered setting this site up as a blog such as Wordpress?
    You could then automate much of what you're attempting with a few well chosen point-and-click plugins without touching any code.

  • How to create a new field for Q3 - QM notification in Header and item level

    Dear All,
    l
               Sub: How to create a new field for Q3 - QM notification in Header and item level
    Ref. the link --> Quality Notification
    We want to create a new field in header level and item level.
    As per the thread the solution is given below.
    In the IMG Config: Quality Management -> Quality Notification -> Notification Types -> Define screen areas for notification types Then Choose 'Define screen areas' Then Click on 'New entries' button Now, select the relevant Notification Type and click in 'Enter'. Select the 'Iten Cases' register and remember to setup the Tabstrip Header, Icon, etc. Set the 'Tabstrip active' flag. Then Save.
    Quality Notification -> Notification Types -> Define screen areas for notification types
    WE ARE UNABLE TO FIND IN CUSTOMIZATION PATH --> DEFINE SCREEN AREAS FOR NOTIFICATION TYPES.
    Please help.
    Question No. 2 :
    THE REQUIREMENT IS GIVEN BELOW.
    We want to hide the field in Q3 - QM Notification
    In header --> Reference tab --> Item (sub heading) --> "DEFECT LOCATION" FIELD TO BE ELIMINATED (HIDE)
    Ref the link --> Quality notification
    The solutiion is given below.
    Hi Sami,
    We can hide the collumns using the Transaction OQM1 and Program Name SAPLIQS0.
    Lets say Defect location need to be hidden, the field TXTCDOT need to have the radio button HIDE.
    Hope this will suffice your requirement.
    Kindly ask me if you need any other details.
    Thanks & Regards,
    Srinivas.D
    Hi Sami,
    We can hide the collumns using the Transaction OQM1 and Program Name SAPLIQS0.
    Lets say Defect location need to be hidden, the field TXTCDOT need to have the radio button HIDE.
    Hope this will suffice your requirement.
    Kindly ask me if you need any other details.
    Thanks & Regards,
    Srinivas.D
    By double clicking the "DEFECTIVE QUANTITY (EXTERNAL), WE COULD NOT GET --> field TXTCDOT .
    Plese do the needful.
    We are using ECC6.0 Ehp3 and Ehp4.
    With Best Regards,
    Raghu Sharma

    Dear Pushpa,
    Transaction Code :SHD0 is working fine.
    Please accept my sincere thanks for your sharing your Knowledge.
    I am able to fulfill my
    Regarding the enhancement, I have not tried.
    Once I will complete, I will award the fulll marks to you.
    With Best Regards,
    Raghu Sharma

  • RFC: Introduce new 'Article/Tutorial (Comment) Threads' in the Web Dynpro Forum

    Some time ago I've suggested on SCN Support is both forum moderator and most active articles wrtiter
    Valery Silaev
    SaM Solutions
    http://www.sam-solutions.net
    Message was edited by: Bertram Ganz
    This thread was branched from forum thread: How to print the data of a Model node.

    Hi Valery,
    thanks for this great idea. Indeed, there is no channel set up to communicate feedback/suggestions/questions to Web Dynpro tutorials or articles in a standardized way.
    WebLogs can be commented on the WebLog page itself and they are announced in a special ;\ New Web Dynpro Weblogs which can be opened via the <a href="https://www.sdn.sap.comhttp://www.sdn.sap.comhttp://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/uuid/49f2ea90-0201-0010-ce8e-de18b94aee2d">Web Dynpro Feature2Sample Matrix</a>. Actually the section 'Further Information' lists all related articles, WebLogs etc. These links are regularly updated so that the Sample Description Pages helps to keep all links to valuable information in a central place.
    The 'Sample Description Page' should additionally comprise a section <b>'Discussion'</b> with a link to the above 'Article Comment Thread' in the Web Dynpro forum. The reader downloads the material from the sample description page and also finds a link to the related 'Article Comment Thread' there.
    For all new articles (which are combined with a related 'Article Comment Thread') the <i>Further Information</i> links could point to the 'Article Comment Thread' (which then itself links to the article) but not directly to the article resource. The reader can then also have look at the existing comments to the related resource. As an alternative the article PDF itself should have a permanent link to the 'Article Comment Thread' in the Web Dynpro Forum.
    Please post your comments on this idea.
    Regards, Bertram

  • Trx. MM41: Creation of new article data

    Hi togehter,
    I've a special question regarding tax data proposal in the area of SAP Retaill - Creation of new article data.
    We've distribution centers in different countries.
    If I create a new article masterdata for a sales organization assigned to Austria and a distribution center
    assigned to Italy I get the following tax data proposal (if I enter '1' in field MARA-TAKLV):
    IT     Italy     MWST     Output tax               1     Full tax    
    IT     Italy     LCIT        VAT license Italy      1    Full tax    ->     error: the category LCIT does not define classification 1 (only 0)
    I assume that the entry LCIT comes from table TSKM.(material taxes).
    Now my question.
    We don't need the entry LCIT. It is possible or it is the right way to delete the entry named before?
    Or should we create a new entry?
    Thanks in advance for your help/info.
    Best regards
    Frank

    Moved from SAP ERP SD Sales to SAP for Retail.  Please try to post in the right forum to get right direction to your requirement / issue.  Also go through the following blog which will help you.
    Find Topic Spaces on SCN (Forums)
    G. Lakshmipathi

  • Addition of new field to customer master data

    Hi
    Is it possible to create a new field in customer master table screen  and
    to have the same field in sales order creation screen.
    can we do it in Ideas version of ECC.
    please guide me step by step.
    Regards
    Jai

    Hello,
    Information about the latest enhancement technology to change the standard SAP funcionalities can be found here :
    [http://help.sap.com/saphelp_nw2004s/helpdata/EN/94/9cdc40132a8531e10000000a1550b0/frameset.htm|http://help.sap.com/saphelp_nw2004s/helpdata/EN/94/9cdc40132a8531e10000000a1550b0/frameset.htm]
    This technology is also included in ECC 6.0, you can add fields, add fields to screens, ...
    Hope this is usefull.
    Wim

  • Can we create new partner types for quallity notifications in SAP system?

    Can we create new partner types for quallity notifications in SAP system?
    The business requirement is to limit the available entries for partners  displayed when they search in quality notification. I have already created new partner functions & assigned the relevant partner types, however struggling with defining new partner types.
    Would appreciate help in resolving this.
    Thanks,
    Nilesh

    I know this customisation setting ...It allows us to create the partner functions & assign it to the partner determination procedure.
    Then you can assign the procedure to the notification type.
    This customisation setting does not solve the problem I have.
    I'm looking for the partner type creation process which we assign to the partner function.
    Edited by: NILESH BHAVE on Aug 12, 2010 3:06 PM

  • Firefox closes a document after opened. Hard to read news articles on some sites. Getting very tired of article closing one paragraph into it.

    Firefox continues to close documents after opened on some sites. News articles opened will close after opened. Very upsetting to have to switch to another browser just to read an article. It also closes down Amazon.com after opened. It is not just one URL. Cache has been cleared, spy ware cleaned, and no viruses. Very frustrating.
    == URL of affected sites ==
    http://

    Among the alternatives not mentioned... Using a TiVo DVR, rather than the X1; a Roamio Plus or Pro would solve both the concern over the quality of the DVR, as well as providing the MoCA bridge capability the poster so desperately wanted the X1 DVR to provide. (Although the TiVo's support only MoCA 1.1.) Just get a third-party MoCA adapter for the distant location. Why the hang-up on having a device provided by Comcast? This seems especially ironic given the opinions expressed regarding payments over time to Comcast. If a MoCA 2.0 bridge was the requirement, they don't exist outside providers. So couldn't the poster have simply requested a replacement XB3 from the local office and configured it down to only providing MoCA bridging -- and perhaps as a wireless access point? Comcast would bill him the monthly rate for the extra device, but such is the state of MoCA 2.0. Much of the OP sounds like frustration over devices providing capabilities the poster *thinks* they should have.

  • Create new article:  BAPI_MATERIAL_MAINTAINDATA_RT

    Hi all,
    When i try to create a new article by using BAPI_MATERIAL_MAINTAINDATA_RT i am getting the follow success message M3801 ("Material & changed") but article is not created. After sending the BAPI_MATERIAL_MAINTAINDATA_RT and returning without an error I call a BAPI_TRANSACTION_COMMIT. How can I resolve this? Thanks in advance.
    Best Regards
    Gabriel.

    Hi,
    Thanks in advance. If i create an article using BAPI_MATERIAL_SAVEDATA then there is not using transaction MM43...
    Best Regards
    Gabriel

  • Adding new fields in Custom Infotype

    Hi,
    I need to change some fields of Custom Infotype. But project is already gone live for 1 country. will making changes to infotype affect for existing live country?
    Safe side....We are thinking Adding new fields in Custom Infotype. & displaying corresponding fields for countries in another tab
    & hiding the old tab.
    Please let me know procedure for  Adding new fields in Custom Infotype for displaying in new tab.
    Edited by: Sachin Thigale on Aug 23, 2010 7:04 PM
    Edited by: Sachin Thigale on Aug 23, 2010 7:05 PM

    Please search. Lot of Threads on this.
    Follow these steps.
    Go to Transaction PM01.
    2) Enter the custom Infotype number which you want to create (Should be a 4 digit number, start with 9).
    3) Select the u2018Employee Infotypeu2019 radio button.
    4) Select the u2018PS Structure Infotypeu2019.
    5) Click on Createu2026 A separate table maintenance window appearsu2026
    6) Create a PS structure with all the fields you want on the Infotype
    7) Save and Activate the PS structure
    8) Go back to the initial screen of PM01.
    9) Click on u2018Allu2019 push button. It takes a few moments.
    10) Click on u2018Technical Characteristicsu2019. Infotype list screen appears
    11) Click on u2018Changeu2019(pencil) button
    12) Select your Infotype and click on u2018Detailu2019 (magnifying glass) button
    13) Give u2018T591Au2019 as subtype table
    14) Give u2018T591Su2019 as subtype txt tab
    15) Give your subtype field as subtype field
    16) Save and come back to PM01 initial screen
    17) Click on u2018Infotype Characteristicsu2019 u2026 Infotype list screen appears
    18) Click on u2018Changeu2019 (pencil) button
    19) Click on u2018New Entriesu2019
    20) Enter your Infotype number and short text
    21) Here we have to set different Infotype Characteristics as per the requirement. (Better open another session with some standard Infotypeu2019s infotype characteristics screen and use as the reference to fill yours)
    22) Save your entries.
    23) Now the Infotype is created and ready to use.
    24) If you want to change the layout of the Infotype as per your requirementu2026
    25) In the PM01 initial screenu2026Select u2018Screenu2019 radio button and give 2000 as the screen name, then click on edit.
    26) In the next screen.. Select u2018Layout Editoru2019 and click u2018Changeu2019.
    27) Screen default layout appearsu2026here you can design/modify the screen..change the attributes of the fields..etc.
    28) Save and activate. (Donu2019t forget to u2018Activate at every level
    i think u have to select CI_INCLUDE while enhanceing the Standrad Infotype
    The above details are from the following link
    Re: How to add fields in custom infotype and update its screens

  • How to sort news articles from Oldest(from the current date) to newest?

    I have a list of news announcements from the month of "Jan 2015" to "Dec 2015". For example each month having a one event, so totally 12 events. But I need to display the latest news articles from current date of latest upcoming news at the top(i.e. May 2015) to farthest at the bottom(i.e. Dec 2015)

    Try with sort!
    {module_announcement sort="datereverse"} or {module_announcement sortType="datereverse"}. I'm not sure what syntax we use with the new render engine.
    With the old syntax it would be {module_announcement,filter,id,noTemplate,effect,targetFrame,reserved,reserved,reserved,r eserved,sort}

Maybe you are looking for

  • Error with XSLT mapping .. code included

    I am using XSLT to map my input legacy message into the CATS_INSERT02 IDoc. I am getting a wierd error .... ===================================================== <Trace level="1" type="T">TransfromerException during XSLT processing:</Trace>   <Trace

  • Recording which articles are being read

    I want to create a cloud tag of popular topics What i need to work out 1. How to record which articles are being read 2. How to display these in a tag cloud 3. Then when a user clicks on a tag - all the articles which similar tag are displayed What i

  • If I crack my screen, do i have to buy a whole lcd screen replacement, or is there a way to just replace the glass?

    I have a iphone 5 and have recently dropped it. theres a crack on the screen and theres a pretty steep price difference between a screen thing and the lcd/digitizer part plus the screen thing. Whats the difference and how can i tell if i need to buy

  • Moving My Daughter's MobileMe Account to iCloud

    My 11 year old daughter has a .ME account set up under my master account as part of the Family Pack. Up until now, if she wanted to download an app onto her 4th Gen. iPod Touch she'd have to come to me and ask me to enter in my accounts password. Nic

  • Recordings Vanished

    Hi, I have a silver box (not sure what gen but I've had it about 3 years It says Model STB/CPU: PACE Pace_DiT7421_05_L4/297.) I have/had quite a few recordings on it, some marked to keep, others not, but I go through it fairly often and delete stuf