Quantcast
Channel: SCN : Blog List - All Communities
Viewing all 2548 articles
Browse latest View live

Booking delta exams for SuccessFactors Employee Central and Learning Management

$
0
0


If  you are holding a grandfathered certificate with the code C_THR81_1405 or/and C_THR88_1408 then you are eligible to take the delta exams D_THR81_1505, D_THR88_1508.

The certificates C_THR81_1405, C_THR88_1408 are valid prerequisite certificates for the related delta exams.

 

 

All grandfathered certificates are available in our Certification Hub with the S-User ID (Person ID) you provided when you registered for the data transfer.

 

 

If you cannot book the delta exam the problem might be that your Certification Hub subscription is bound to a different Person ID than the one the prerequisite exam is related to.

 

 

In this case please write an email with the subject text "[CertHub booking issue]" to Credential-Manager@sap.com. Please provide your current Person ID and the exam you'd like to book.

 

 

Please note: If you changed jobs and now work for a different company since you subscribed to the Certification Hub you cannot use the remaining contingent of your cloud subscription. This is because your cloud subscription is linked to your company's S-User.


JMS Authorization Enhancement: Your AS Java is not broken, fix your JMS application

$
0
0

Did you recently notice an exception in the default trace? Or in the JMS application logs? I mean this kind of exception:

 

#2.0#2015 05 25 12:20:51:590#+0300#Error#com.sap.jms.server.sc.UMESecurityProvider#

#BC-JAS-JMS#jms#C0000A37426704CE00000000000072BC#9677150000000004#sap.com/JMSTestProject#com.sap.jms.server.sc.UMESecurityProvider#Guest#0##4D6D5E5E006011E5CB4400000093A95E#4d6d5e5e006011e5cb4400000093a95e##0#Thread[HTTPWorker [@1110872576],5,Dedicated_Application_Thread]#Plain##

The username: Guest has not enough permissions. For more details see the exception.

[EXCEPTION]

javax.jms.JMSSecurityException: User: [ZI1] Guest has not permission: vpName: default, type: queue, action: produce, destination: MDBTestQUEUE

  at com.sap.jms.server.sc.UMESecurityProvider.checkPermission(UMESecurityProvider.java:218)

  at com.sap.jms.server.sc.UMESecurityProvider.checkDestinationProducePermission(UMESecurityProvider.java:113)

  at com.sap.jms.server.JMSVirtualProviderProcessor.producerCreate(JMSVirtualProviderProcessor.java:546)

  at com.sap.jms.client.session.JMSSession.createProducer(JMSSession.java:607)

  at com.sap.jms.client.session.JMSQueueSession.createSender(JMSQueueSession.java:56)

  at com.sap.jms.test.TestServlet.sendAndReceiveMessage(TestServlet.java:73)

  at com.sap.jms.test.TestServlet.doGet(TestServlet.java:47)

  at javax.servlet.http.HttpServlet.service(HttpServlet.java:734)

  at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)

  at com.sap.engine.services.servlets_jsp.server.Invokable.invoke(Invokable.java:152)

...

  at com.sap.engine.services.httpserver.server.rcm.RequestProcessorThread.run(RequestProcessorThread.java:56)

  at com.sap.engine.core.thread.execution.Executable.run(Executable.java:122)

  at com.sap.engine.core.thread.execution.Executable.run(Executable.java:101)

  at com.sap.engine.core.thread.execution.CentralExecutor$SingleThread.run(CentralExecutor.java:328)

 

If you have already found this exception, don’t worry. There is nothing wrong with your AS Java. Here is what happens, and what you can do about it.

Note:There is no problem during build time, the issues appears only runtime.


What has been changed?

The JMS authorization mechanism has been changed in order to provide a better protection for the JMS destinations (JMS Queues and Topics).

More details on defining security in JMS: http://help.sap.com/saphelp_nw73ehp1/helpdata/en/05/54e14a42634e76a602584cc892a0c7/frameset.htm

 

A historical reason

Before this enhancement, the security Role Everyone had by default permissions to execute JMS operations. This is what you could see in the Identity Management in the SAP NetWeaver Administrator:

 

jms_auth1.png

 

After this enhancement there are no JMS operations available for the role Everyone, and this is why you get the exception I already talked about.

 

What you can do to adjust your application to this enhancement?

There are a couple of things you can choose from:

  • Setting the necessary authorizations in the actions.xml file. You can do this by adding the following code Here is an example:

 

<BUSINESSSERVICE NAME="MyVirtualProvider">  <ACTION NAME="my_all_action">    <PERMISSION NAME="myVP.queue" VALUE="ALL:$:MyQueue" CLASS="com.sap.jms.server.service.impl.JMSDestinationPermission"/>  </ACTION>  <ACTION NAME="my_produce_action">    <PERMISSION NAME="myVP.queue" VALUE="produce:$:MyQueue" CLASS="com.sap.jms.server.service.impl.JMSDestinationPermission"/>  </ACTION>  <ROLE NAME="MyASJavaRole">    <ASSIGNEDACTION NAME="my_produce_action"/>  </ROLE></BUSINESSSERVICE>

 

Or you can manually assign Action to the Role in the SAP NetWeaver Administrator → Identity Management.

 

 

Anyway, make sure the relevant Role (for example, MyASJavaRole) is assigned to the Users who are accessing JMS.

 

  • Using the runAs mechanism. Here you have two options: using Subject.doAs() in the source code of the JMS application, or adding the necessary information in the Java EE deployment descriptors, such as web.xml, ejb-jar.xml.
    • Using Java EE deployment descriptors.
      1. If you use JMS in a Servlet, or a JSP you have to adjust the web.xml and the web-j2ee-engine.xml files.

web.xml

 

<web-app>  <servlet>    <servlet-name>...</servlet-name>    ...    <run-as>      <role-name>MyServletRole</role-name>    </run-as>  </servlet>  <security-role>    <role-name>MyServletRole</role-name>  </security-role></web-app>

web-j2ee-engine.xml

 

<web-j2ee-engine>    <security-role-map>        <role-name>MyServletRole</role-name>        <server-role-name>MyASJavaRole</server-role-name>    </security-role-map></web-j2ee-engine>

 

      1. If you use JMS in EJBs, you need to change the ejb-jar.xml and the ejb-j2ee-engine.xml files.

ejb-jar.xml

 

<ejb-jar>    <assembly-descriptor>        <security-role>            <role-name>MyEJBRole</role-name>        </security-role>    </assembly-descriptor></ejb-jar>

 

ejb-j2ee-engine.xml

 

<ejb-j2ee-engine>    <security-permission>        <security-role-map>            <role-name>MyEJBRole</role-name>            <server-role-name>MyASJavaRole</server-role-name>        </security-role-map>    </security-permission></ejb-j2ee-engine>

 

    • Using Subject.doAs() method. Here is an example:

PrivilegedExceptionAction codeToBeExecutedWithGivenUser = new PrivilegedExceptionAction() {

  public Object run() throws Exception {

    //code to be executed with given user

    return null;

  }

};

 

 

IUser doAsUser = UMFactory.getUserFactory().getUserByLogonID("RUN_AS_USER");

 

// create new Subject

final Subject runAsSubject = new Subject();

runAsSubject.getPrincipals().add(doAsUser);

try {

    Object result = Subject.doAs(runAsSubject, codeToBeExecutedWithGivenUser);

} catch (PrivilegedActionException pae) {

    ...

}

 

  • Using the JMSConnectionFactory.createConnection(user, password) method in the source code of your JMS application. Here is an example:

 

InitialContext context = new InitialContext();

Connection con = null;

try {

    Queue queue = (Queue) context.lookup("jmsqueues/default/myQueue");

    QueueConnectionFactory queueConnectionFactory = (QueueConnectionFactory)context.lookup("jmsfactory/default/QueueConnectionFactory");

    con= queueConnectionFactory.createConnection(“User”, “Password”);

    Session session = con.createSession(false, Session.AUTO_ACKNOWLEDGE);

    QueueSender sender = (QueueSender) session.createProducer(queue);

    …

 

JMS destinations created manually in SAP NetWeaver Administrator (JMS Server Configuration plug-in)

If until now you have created JMS destinations, such as JMS queues and JMS topics, in the SAP NetWeaver Administrator, probably you have expected that everyone should be able to work with these destinations. From now on, this is not the case anymore. When you create a new JMS destination, UME actions are also created.

 

jms_auth2.png

If you want particular Users to be able to work with this JMS destination, you have to assign this action to a particular Role (which is assigned to the target Users):

 

jms_auth3.png

jms_auth4.png

In the end

This JMS Security enhancement should help you provide a better protection to the JMS Queues and Topics and therefore to your JMS application. If you still have any concerns, list them below in the comments section.

The Differences of Entrepreneurship In India Compared To The U.S.

$
0
0

Entrepreneurship comes in many different forms.  The motivations, expectations, and possibilities often dictate and nature and course of the startup.  Companies develop frequently in response to a need or lack in the market place.  Thus, different market places can be conducive for the formation of different types of companies.  In India, entrepreneurship has taken different forms than it has in the US. The economy, society, and culture are different, and these factors drive business and entrepreneurship.  With differences in economy, entrepreneurs in India respond to different needs.

 

          By many standards, India is country with an immense amount of new business and entrepreneurship.  In fact, India has more than twice the number of new businesses as the US.  With an estimated 48 million, India more than doubles the US’ 23 million small businesses. Between industries, funding, and products, entrepreneurs in the US and India vary on a multiple different aspects.  Female entrepreneurs also have different experiences in both countries.  98% of female Indian entrepreneurs believe in the importance of their business in having a positive social impact.  They believe that it can and will help society.  Conversely, only 86% of women in the US agree with this notion.  For men the numbers are very different.  Only 43% of men in the US and 41% of men in India believe that their business needs to have a positive social outcome.

 

Lavy Blaggan, founder of DesiMarketsaid, “The notion of entrepreneurship depends on where you are.  In India, entrepreneurs face different challenges, and thus they are different as entrepreneurs.”  While the market place in India presents unique challenges, it also presents unique opportunities for entrepreneurs looking to grow their businesses.  India has made huge advances in information technology, and leads many tech industries.  There is also an increased emphasis on entrepreneurship in India. Just 20 years ago, entrepreneurship wasn’t valued nearly as much as it is today.  Since then, the new millennial generation has access to a plethora of new business opportunities that older generations did not.  India now fully recognises the value in creating small businesses, and has put a large emphasis on funding and helping people develop and grow businesses.  In 2016, India will emerge as the world leader in entrepreneurship, perhaps even ahead of the United States.  There will also be many opportunities present for entrepreneurs in both countries to work together.

 

To understand the difference between entrepreneurship between the two countries it is essential to understand Indian entrepreneurship on a historic level.  Prior to 1991, success in Indian businesses was largely dependent on working the bureaucratic system, and utilizing licenses, ambition, and government contracts.  Many decisions were based on social connections and prior relationships, rather than the actual business function itself.  Thus, business goals were in many ways parallel to the “Swadeshi” movement. This movement promoted the attainment of economic freedom through import substitution from western civilisations. Prior to 1991, entrepreneurship was subdued in India.  There were fewer success stories about Indian startups making it big, and capital was limited for these types of ventures.  The significance of 1991 was that it was the year when the government in India liberalised the economy.  This had huge impacts on the society, and especially for entrepreneurs.  The competitive landscape was fundamentally changed.  Whereas family businesses had traditionally dominated the Indian markets, these entities now were forced to compete against larger brands with sophisticated technology. Indian businesses had to adapt and change. 

 

       Originally, Indian businesses largely included closely-knight family businesses that were well known in their community.  Liberalisation changed this by introducing more large businesses to the arena.  This is when IT businesses started to boom in India.  To evolve and stay relevant, family businesses were forced to become more institutional. 

         

       In present day,

India is one of the world’s strongest countries in terms of entrepreneurship.  From Information Technology to virtual reality to healthcare,

entrepreneurs are finding new ways to reach the market.  Indian business people have access to an incredible amount of resources, businesses, and software.  India currently has the fastest growing economy and the fastest growing market place in the entire world, even over China.  Much of India’s growth as a nation has been due largely to the fact that young innovators are creating new businesses, which are able to compete with international corporations.   The Indian market and economy is gigantic and dense.  Communication and transportation between cities has improved immensely in the last ten years, and people are now creating and sharing ideas more rapidly

What happens in Vegas does not stay in Vegas anymore - #HR2016

$
0
0

Time flies and another SAPInsider Human Resources conference is just around the corner.HR2016will be held inWynn Hotel Las Vegasbetween 23rd and 26th of February. Just like the previous years’ conferences, this year’s conference promises a lot to the attendees. Industry counterparts and top SAP experts will be there in the conference to share the latest knowledge on SAP®and SuccessFactors solutions including core HR, talent management, and payroll. As a standard approach of the SAPInsider conferences, the knowledge presented to the attendees are presented in a way that is very easy to digest and practical to apply as soon as going back to the office. Metaphorically, SAPInsider encourages the speakers/presenters to provide the information in form of a “pill” that the attendee can swallow smoothly.

In this conference, I will be taking part with twosessions. In my first session; “An expert guide to securely manage authorizations in SAP ERP HCM systems”; I will share my knowledge on tips and tricks of managing authorizations in SAP HCM systems. Namely, the presentation will involve the technical details and best practices for the following:

a.    Identifying critical SPA ERP HCM data in the system

b.    Forming super-HR, restricted-HR, and non-HR authorization roles

c.    Configuring authorization-related SAP ERP HCM customization tables

d.    Protecting critical SAP ERP HCM information using general authorization and structural authorization profiles

e.    Checking the system simultaneously and/or periodically in order catch authorization pitfalls

If you want to hear of my 12 years’ of experience on SAP HCM authorizations, you are welcome to attend my session at 10:30 am on February 25th.

 

     My second session is a repetation from HR2015, Nice conference : “An expert guide to maximize the capabilities of PPOME for more effective organizational management in SAP ERP HCM”. In this session, I will be sharing knowledge on usage and implementation details of PPOME transaction from SAP HCM Organizational Management module. By attending this session, you will access the best practices and real-world examples to:

a.    Understand why and how to update look and feel of PPOME transaction based on client requirements

b.    Reveal all the under-utilised functionality of PPOME transaction and learn how to implement them

c.    Learn how to make use of hierarchy framework for integration purposes

If these headlines are of interest to you, you are welcome to attend my session at 15:00 pm on February 25th.

              

     I know how wonderful conferences SAPInsider organizes from my former experience. When in Las Vegas; ambience of the conferences become even better. You know there’s a saying “What happens in Vegas, stays in Vegas”. Believe me, this is not true for vast amount of knowledge learned in SAPInsider conferences. You will have them all in your luggage to take away with you while you’re leaving the city.

Make the S/4HANA Custom Code Analyzer work for you

$
0
0

Inspired by SAP Mentor Owen Pettiford’s blog Beginners Guide to Transitioning to S/4HANA 1511 On Premise edition for Existing SAP ERP 6.0x users, I followed his recommendation on Business Logic to “Use the Simplification List to understand the changes and try to adopt as many as you can before the switch.”

 

This led me to the excellent blog Upcoming Tools for SAP #S4HANA Migration – the simplification database by Sven Denecken and subsequent SAP Note 2185390 - Custom Code Analyzer.

 

From there on, there are many options how to approach making the S/4HANA Custom Code Analyzer work for you. Based on my experience, for a low footprint analysis, if you do not have a SAP NetWeaver 7.50 ABAP system already available yet

 

Frank recommends:


  1. Install a temporary sandbox SAP NetWeaver 7.50 system. An easy way to do this would be to create a respective instance in Amazon Web Services via the SAP Cloud Appliance Library as described in Mahesh Sardesai’s blog How to get around the issue of being on older Netweaver version for Simplification DB and complete in less than one hour.
  2. Upgrade that system to the latest Support Packages. At the time of this blog these were:
    Installed Software.png
  3. Create a temporary sandbox system as an as recent as possible copy of the production system you plan to analyse.
  4. Install the respective support packages as per SAP Note 2185390 - Custom Code Analyzer for the release of the sandbox system you just created system AFTER following the manual preparation instructions:
    ------------------------------------------------------------------------
    |Manuelle Vorarbeit |
    ------------------------------------------------------------------------
    |GÜLTIG FÜR |
    |Softwarekomponente   SAP_BASIS                      SAP Basis compo...|
    | Release 700          SAPKB70012 - SAPKB70032                         |
    | Release 701          SAPKB70109 - SAPKB70117                         |
    | Release 702          SAPKB70211 - SAPKB70217                         |
    | Release 731          SAPKB73109 - SAPKB73116                         |
    | Release 740          SAPKB74004 - SAPKB74012                         |
    ------------------------------------------------------------------------
    - Open transaction SE80
    - Select package BASIS
    - Create subpackage SYCM_MAIN
    - Use 'Custom Code Management' as description
    - Use 'BC-DWB-CEX' as application component
    - Use 'No Translation' as translation relevance (if this option is visible on the screen s it is relevant in SAP Systems only)
    - Set the flag 'Package Encapsulated'
    - Set the transport layer to SAP if you create the package in a customer system
    - Select package SYCM_MAIN
    - Create subpackage SYCM_ANALYSIS
    - Use 'Custom Code Management: Analysis of custom code' as description
    - Use 'BC-DWB-CEX' as application component
    - Use 'Developer Tools' as translation relevance (if this option is visible on the screen as it is relevant in SAP Systems only)
    - Set the flag 'Package Encapsulated'
    - Set the transport layer to SAP if you create the package in a customer system

  5. Prepare the sandbox system for the repository download by scheduling program SAPRSEUB – this might take a while to complete:
    Job Overview.png
  6. Create a variant of report SYCM_DOWNLOAD_REPOSITORY_INFO that reflects the customer namespace you would like to analyse. The namespace /0CUST/ represents customer development objects starting with Z* or Y*:
    Variant CCM.png
  7. Execute the variant you just created as a background job. The execution should not take long at all:
    Customer Code Management.png
  8. Execute the same variant in SE38 to download the S4HMigrationRepositoryInfoSID.zip file:
    Migration Repository Info.png
  9. Download the latest support package of the Simplification Database Content from the SAP Service Marketplace. At the time of this blog this was CCMSIDB00P_2-80001018.ZIP Simplification Database Content Patch 2:
    Simplification Database.png
  10. Upload the Simplification Database Content into your NetWeaver 7.50 system with report SYCM_UPLOAD_SIMPLIFIC_INFO:
    Upload Simplification Data.jpg
  11. Upload your S4HMigrationRepositoryInfoSID.zip file with report SYCM_UPLOAD_REPOSITORY_INFO:
    SYCM Custom Repository Upload.jpg
  12. Finally run report SYCM_DISPLAY_SIMPLIFICATIONS to see the results:
    Customer objects affected by simplifications.png

Especially important are columns Simplification Category and SAP Note, that explains the details.

When creating an SAP HANA Incident, what do I include?

$
0
0

Hello all,

 

I thought I would write this short blog on what exactly is needed when opening an incident for SAP HANA.

 

Each day I see many incidents losing valuable processing time because the correct information is not provided from the beginning.

 

I would like think this has already been covered here in the past but I think this is something that should be refreshed every now and again.

 

Looking at this note each time before opening an incident could decrease the time spent processing:

1758890 - SAP HANA: Information needed by Product/Development Support.

 

Also, having remote connection open (successfully tested) for the engineer also saves valuable time. If you could please refer to Notes 1592925 and 1635304. These notes will guide you through the process of opening valid remote connections. In all this leads to a better support for the user.

Exporting Results from CMC to Excel

$
0
0

Quite often, I had always wondered if there was an easy out to export the results from a CMC to excel.

 

There is of course, the tool that can be found online, that runs against a macro and exports it to Excel, but I wanted to see if something can be done directly out of the CMC itself.

 

With this background, I stumbled on this little workaround that uses a little known plug in that can do that. Of course, it involves a few steps, but in the end it will get the job done.

 

 

Uploading the document, for the benefit it of SCN users.

 

 

 

 

This is my first upload here, so I do not know how this works. Hopefully it will be useful to someone.

 

Disclaimer: This will work only with FIREFOX BROWSER

 

  1. Open CMC in a Browser ( Firefox)
  2. Activate FIREBUG Plug in ( found on the top right hand side of the toolbar)

fIREBUG1.png

 

3.     This will open a new window or a small window at the bottom of the current browser. You also have an option of opening it in a new window if it opens in a same window by clicking the icon

FIREBUG2.png

 

4.     Click on the little Arrow icon, found on the top left hand side of the menu bar of the firebug window

FIREBUG3.png

 

5.     Highlight the first row in CMC, that you want the query to be saved into Excel

 

Users.png

 

6.     The min u do the selection in the above step, the code in the FIREBUG window gets highlighted on the row that the data on the CMC window was selected

Code.png

 

7.     Carefully, identify the <Table id> code, which can be found a few lines above the selected

Code2.png

 

8.     Locate <DIV ID> which is right above the <TABLE ID> pointer and place the mouse on that line, right click the mouse and select  “COPY INNER HTML”           from the selected pop up menu

9.     Save this code to a Notepad and save it as .HTML file or a.XLS file

 

10.     Either of the 2 files will take a long time to open and will also get saved with the icons from CMC.

 

11.     Copy/select individually the columns that are needed, to the next tab for a cleaner and neater output.

 

12.     Finally … since CMC has a restriction to display only 500 objects at one time, you might have to do this multiple times, by navigating to the next page           and starting the process from step 1, if your list of objects runs into more than 500.

Share your #HANAStory and Win

$
0
0

SAPPHIRE NOW .jpg

If you’ve ever attended the SAPPHIRE NOW conference, you know that it’s a blast.  Keynote presentations, show floor exhibits, a private concert, networking events…SAP’s yearly tech conference doesn’t disappoint.

 

If you’d like to attend for free this May, I’m about to share an exciting opportunity.

 

If you are an employee of an SAP customer using the SAP HANA platform or SAP HANA Cloud Platform, enter to win the SAP HANA Innovation Award in 2016 by sharing your #HANAStory. The winning prize includes free passes to the 2016 SAPPHIRE NOW conference.

 

In addition to the SAPPHIRE NOW passes, competition winners will also receive up to US$5,000 to donate to charity, a trophy, recognition at the SAP HANA Innovation Award ceremony, and ample publicity.

 

Here’s how the competition works:


There are four categories under which your organization can fall.  Three finalists will be selected from each category, making four winners in total.

 

Categories include:

  • Analytics Wizard: organizations that deliver real-time analytics to empower their company’s workforce and customers
  • Digital Trailblazer: organizations who harness Big Data or the Internet of Things for breakthrough results
  • Process Simplifier: organizations operating business-critical processes in real time
  • Next-Generation Apps: organizations that are building innovative apps using SAP HANA or SAP HANA Cloud Platform

 

If you’re in need of inspiration, click to browse the 2015 and 2014 winners.

 

Next, you’ll need to complete the entry form and:

  1. Select a category.
  2. Craft a title for your entry.
  3. Provide a description of your company, business and technical challenges, and how your organization is using SAP HANA to innovate in its industry.
  4. Share how your company is positively impacting or empowering people.
  5. Provide three business or social key performance indicators that were achieved (qualitative and quantitative).
  6. Provide three technical key performance indicators (for example, data size compression rate, performance acceleration rate, hardware configuration, number of users for a live system, and so on).

 

Timeline:

  • Entry Submission: From now until March 2, 2016, submit your #HANAStory. Be sure to explain how your company is using SAP HANA to make the world run better and improve people’s lives.
  • Judging: Project submissions will be reviewed by a panel of judges from March 21 through April 1. The three entries with the highest score per category will be named finalists. Find out more about the judges.
  • Public Voting: From April 7 to April 21, the public will select the winners. Promote your entry by tagging #HANAStory on all social media.  The more votes you receive, the more likely you will be to win.
  • Winners Announced: Winners will be announced at the SAPPHIRE NOW conference in Orlando Florida, running from May 17 to May 19, 2016.


Prizes:

Charitable donations will be awarded to all category finalists.

 

  • Third place finalist: $1,000 donation to charity
  • Second place finalist: $2,000 donation to charity
  • First place winners: $5,000 donation to charity

 

Overall, there will be up to $32,000 in charitable donations. Charities include UNHCR, Fundacion Capital, and The Acumen Fund.

 

Time is running out, so enter the contest soon.  This year’s SAP HANA Innovation Award is your chance to promote your company, guide fellow SAP HANA users, and help out a great cause.

 

HIA Logo.PNG

 

Check out the award Website for all the details.

 

Be sure to tag #HANAStory when you join the conversation on social media and follow me @CMDonato.


Security Weaver’s Process Auditor - Developer's Observations (Part 1)

$
0
0

Hello!

 

This blog pertains to Security Weaver’s utility Process Auditor.  I recently had the opportunity to work with Security Weaver’s Process Auditor (or PA). In summary, PA is a utility that will provide continuous compliance monitoring in SAP.

 

This previous post gives a general overview of the utility...

  http://scn.sap.com/community/grc/blog/2013/10/09/process-audit-don-t-worry--sw-pa-can-help

 

PA has several out-of-the-box controls to use, however our requirement was to develop custom controls.  I was not able to find detailed documentation on how to configure and develop within the tool or about how the areas are connected within the tool and in the canned programs. The PA user guide (ProcessAuditor-UserGuideforv2 5PS3.pdf) contains user information and general information on how to create a new control and rule id.  Start with that document first.  In this blog, I will discuss other technical details that are vague or not detailed at all in the user guide as well as my observations to help your developer/configurator with an installation.

 

Sections covered in this blog include:

1) Our Requirements
2) The Process Auditor utility

a. Create a new Control and Rule Parameters
b. The Development Workbench:

- Output format (the format of the alert record)
- Fetch Data Code (when to generate the alert)
- Hotspot code (for hyperlink in the Inbox)

c. Online Execution
d. Execution in Background
e. How to view the Alerts
f. User Exits to Know About
g. How to Debug the Alert Generation
h. How to Import to a Target Systems
i. Observations
j. Additional Controls

 

Our Requirements

Our requirements were to create three custom controls in ECC for transaction codes FB01, FB05, and FB50 based on on a specific document type. I’ll only show FB01 in this blog.

Basically, I needed to...

  1. Create a rule ID for each control
  2. Create control IDs
  3. Create hotspots
  4. Create a background Jobs to trigger alerts in Process Auditor tool.

 

Process Auditor utility

Tcode /n/PSYNG/PA


a) Create a new Control

As explained in the user guide, here is the control I created:

Header…

1.jpg

 

Rule Parameters…

Rule parameters are passed to the program when the control is executed directly in the utility.  They are NOT passed to the batch job.  The batch job variant and special logic in Fetch Code are needed to pass these values to batch processing. I’ll explain more about that in the Fetch Data Code section.

2.jpg


b) The Development Workbench

Alert Output Format

In this section, enter the format of the output record that will appear in the Alert.  I used the same name for the Rule ID as I did for the Control ID for clarity.

3.jpg

 

For the accounting debit and credit amounts above, I used a custom structure…

4.jpg

Fetch Data Code

Any time you enter the Fetch Code tab, you need to enter the Rule ID. Then, while keeping the cursor on the Rule ID field, select ENTER. This will allow the existing code to be displayed....

5.jpg

 

If you move the cursor‘s focus to either the Selection Screen or Fetch Data Code sections, then select ENTER, the utility gets „confused“ and it will appear as if no code exists like this...

6.jpg

 

Don’t worry! Any existing code is still there. To fix this situation, just select a different tab. Select to confirm that the changes are NOT to be saved.
Then, return to the Fetch Data Code tab and keep the cursor on the Rule ID field when you select ENTER.

 

The Selection Screen and Fetch Data Codes sections are Includes. They are inserted into the canned program created by the PA utility.

 

Here is the code I used in my Selection Screen section....

 

{code}

tables: bkpf, bseg, /PSYNG/SACONRULE, /PSYNG/SARULEHDR.

SELECTION-SCREEN : BEGIN OF BLOCK BLK1.

* Refer to include /PSYNG/SA_001F01 form submit_programs for fields
* passed in SELTAB:

** Used to create case. Not used in Fetch Code directly. Declared in
** main program
*SELECT-OPTIONS  : cntrlid for /PSYNG/SACONRULE-CONTROLID,
*                  p_ruleid for /PSYNG/SARULEHDR-RULEID.

** Used to read data:
SELECT-OPTIONS  : BELNR  for bkpf-belnr,
                  BLART  for bkpf-blart,
                  wrbtr for BSEG-WRBTR,
                  tcode  for bkpf-tcode,

* read data fields for testing...
                  BUDAT FOR SY-DATUM.

* When executed in batch, the rule parameters are not passed, so the
* batch job does not receive stardard parms ZCNTRLID or ZP_RULEID.
* Pass them in variant, so the case id will be created by the batch job.
SELECT-OPTIONS  : zcntrlid for /PSYNG/SACONRULE-CONTROLID.
parameters      : zp_rule like /PSYNG/SARULEHDR-RULEID,

* "=X if processing batch job. Set in variant only
                  p_Batch(1).

SELECTION-SCREEN : END OF BLOCK BLK1.

{code}

 

Here is the code in my Fetch Data Code.....

 

{code}

************************************************
* Flow:
* 1) Read data for selection parameters
* 2) Populate output fields that appear in inbox
* 3) Fill rule and control ids, needed for batch processing
* 4) output for batch job spool
*
* Batch Job:
* When scheduling batch job, the data for this is extracted for
* yesterday.  Schedule batch job at 00:01 (midnight) to read all of
* yesterday's data.
************************************************

TYPES : BEGIN OF TY_BKPF,
        BUKRS TYPE BKPF-BUKRS, "company code
        BELNR TYPE BKPF-BELNR, "document no
        GJAHR TYPE BKPF-GJAHR, "year
        BLART TYPE BKPF-BLART, "document type
        BUDAT TYPE BKPF-BUDAT, "Posting date
        tcode type bkpf-tcode, "doc created in tcode
      END OF TY_BKPF.

TYPES : BEGIN OF TY_BSEG,
        BUKRS TYPE BKPF-BUKRS, "company code
        BELNR TYPE BKPF-BELNR, "document no
        GJAHR TYPE BKPF-GJAHR, "year
        BUZEI TYPE BSEG-BUZEI,
        BSCHL TYPE BSEG-BSCHL,
        KOART TYPE BSEG-KOART,
        SHKZG TYPE BSEG-SHKZG,
        GSBER TYPE BSEG-GSBER,
        MWSKZ TYPE BSEG-MWSKZ,
        WRBTR type ZPA_WRBTR, "amount in transaction
      END OF TY_BSEG.

DATA : LT_BKPF TYPE STANDARD TABLE OF TY_BKPF WITH HEADER LINE
                                              INITIAL SIZE 0.

DATA : LT_BSEG TYPE STANDARD TABLE OF TY_BSEG WITH HEADER LINE
                                              INITIAL SIZE 0.

data: gs_output like line of GT_output.

DATA : TABIX TYPE SY-TABIX VALUE 1,
      gs_tabix type sy-tabix.

data:  ls_yesterday like sy-datum.
DATA : v_bukrs LIKE bkpf-bukrs,
      v_belnr LIKE bkpf-belnr,
      v_gjahr LIKE bkpf-gjahr.

DATA : bkpf_curs  TYPE cursor,
      l_pack_size TYPE I VALUE 999999. "limit # of alerts

*--------------------------------------------------

FREE : LT_BKPF,LT_BSEG,GT_OUTPUT.
REFRESH: LT_BKPF,LT_BSEG,GT_OUTPUT.

*-------------------------------------------------------------
* Set date range to read. If not set, process as in production and
* default to only yesterday's records. If set, we are in testing mode.
    if BUDAT[] is initial.
*    for production processing, use yesterday's date only...
      ls_yesterday = sy-datum - 1.
      BUDAT-sign = 'I'.
      BUDAT-option = 'EQ'.
      BUDAT-low = ls_yesterday.
      append BUDAT.
    else.
*    use date requested in parm
    endif.

*-------------------------------------------------------------
* 1) Read data for selection parameters
  OPEN CURSOR WITH HOLD bkpf_curs
      FOR SELECT bukrs belnr gjahr blart budat tcode
                  FROM bkpf
                  WHERE belnr in belnr
                    and tcode in tcode
                    and blart in blart
                    and BUDAT IN BUDAT.
  DO.
    FETCH NEXT CURSOR bkpf_curs  INTO TABLE lt_bkpf
                                  PACKAGE SIZE l_pack_size.
    IF SY-SUBRC <> 0.
      EXIT.
    ENDIF.

    SORT lt_bkpf BY bukrs belnr gjahr.
    SELECT bukrs belnr gjahr buzei bschl koart shkzg gsber MWSKZ WRBTR
      FROM bseg INTO TABLE lt_bseg
      FOR ALL ENTRIES IN lt_bkpf
        WHERE bukrs = lt_bkpf-bukrs
          AND belnr = lt_bkpf-belnr
          AND gjahr = lt_bkpf-gjahr.

    SORT lt_bseg by bukrs belnr gjahr.

    LOOP AT lt_bkpf.
      v_bukrs = lt_bkpf-BUKRS.
      v_belnr = lt_bkpf-BELNR.
      v_gjahr = lt_bkpf-GJAHR.

      LOOP AT lt_bseg FROM TABIX.
        IF LT_BSEG-BUKRS <> v_bukrs OR
          LT_BSEG-GJAHR <> v_gjahr OR
          LT_BSEG-BELNR <> v_belnr.

          TABIX = SY-TABIX.
          EXIT.
      ELSE.

*--------------------------------------------------
* 2) Populate output fields that appear in inbox
        GT_output-bukrs = LT_BSEG-bukrs.
        GT_output-belnr = LT_BSEG-belnr.
        GT_output-blart = lt_bkpf-blart.
        GT_output-GJAHR = lt_bkpf-GJAHR.
        GT_output-budat  = lt_bkpf-budat.
        GT_output-tcode = lt_bkpf-tcode.

        case LT_BSEG-SHKZG.
          when 'H'."credit
            GT_output-WRBTR = LT_BSEG-WRBTR.
          when 'S'. "debit
              GT_output-DMBTR = LT_BSEG-WRBTR.
        ENDcase.

        GT_output-ruleid = cntrlid.
        GT_output-CONTROLID = p_ruleid.

        COLLECT GT_output.
        CLEAR : GT_output.
      ENDIF.
      CLEAR : lt_bseg.
    ENDLOOP.

    CLEAR lt_bkpf.
  ENDLOOP.
  REFRESH lt_bkpf.

ENDDO.

*-----------------------------------------------------
* 3) Filter cumulative amounts for DEBIT based on parm value
loop at GT_OUTPUT into gs_output.
  gs_tabix = sy-tabix.
  if Gs_output-DMBTR in wrbtr. "min amt set in parms
    "...keep in list
  else. "not in alert range so filter from list...
    delete gt_output index gs_tabix.
  endif.
endloop.

SORT GT_OUTPUT BY bukrs blart belnr.

*-----------------------------------------------------
* 4) Fill rule and control ids, needed for batch processing
if cntrlid is initial.
  move-corresponding zcntrlid to cntrlid.
  append cntrlid.
endif.

if p_ruleid is initial.
    move zp_rule to p_ruleid.
endif.

*-----------------------------------------------------
* 4) output for batch job spool
if p_batch is not initial. "processing batch job?
    write: / 'For date:', BUDAT-option, space, BUDAT-sign,
              space, BUDAT-low.
    write: / 'Parameters:',
          / 'BELNR=', belnr,
          / 'BLART=', blart,
          / 'TCODE=', tcode,
          / 'cntrlid=', cntrlid,
          / 'p_ruleid=', p_ruleid,
          / 'Amount (Credit)',
          / 'Amount (Debit)'.

    skip 2.
    write: / 'Data Read:'.
    loop at gt_output.
        write: / GT_output-bukrs,
                GT_output-belnr,
                GT_output-blart,
                GT_output-GJAHR,
                GT_output-budat,
                GT_output-tcode,
                GT_output-WRBTR,
                GT_output-DMBTR.
        skip.
    endloop.
endif.

FREE : lt_bkpf, lt_bseg.

{code}

 

Hotspot Code

This logic is called when the Alert is selected in the Inbox (note that this does NOT apply to the Alert Report). 

This logic will call FB03 (display mode) for the accounting document hyperlink selected in the Inbox.

 

{code}

DATA :  lt_bkpf TYPE STANDARD TABLE OF bkpf WITH HEADER LINE.

CHECK i_column_id-fieldname = 'BELNR'.

clear gt_output.
READ TABLE GT_OUTPUT INDEX is_row_no-row_id.

SELECT SINGLE * FROM BKPF INTO LT_BKPF WHERE bukrs = gt_output-bukrs
                                          AND  belnr = gt_output-belnr.
  CHECK sy-subrc = 0.
  SET PARAMETER ID 'BUK' FIELD GT_OUTPUT-BUKRS.
  SET PARAMETER ID 'BLN' FIELD GT_OUTPUT-BELNR.
  SET PARAMETER ID 'GJR' FIELD GT_output-gjahr.

AUTHORITY-CHECK OBJECT 'S_TCODE' ID 'TCD' FIELD 'FB03'.
if sy-subrc = 0.
  CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN .
else.
  MESSAGE e077(s#) WITH 'FB03'.
endif.

{code}

 

When you are done with the code sections, select SAVE and GENERATE. You will be prompted to enter the program name to save it under.  This program name is the one you will want to use later if you schedule a batch job for execution.

 

c) Execution Online

Online execution is perfect for testing.  The parameters used in the execution online will be the ones stored on the Rule Parameter screen.

In this example, only data for transaction FB01 for document type ZG created on 12/15/2015 with debit amounts greater than $200,000 will be processed in the alert…

7.jpg

 

To trigger the execution, select tab Controls -> Header. Enter the Control ID to execute and ENTER (with the cursor’s focus on the Control ID field)…

8.jpg

 

Select Execute Control button....

9.jpg

 

A new Case ID will be created in the Inbox (of the user assigned) and in the Alert Monitor...

901.jpg

 

911.jpg

 

...The format of these roles is from the Development Workbench -> Format tab.

...The Hotspot Code (hyperlink) is executed by selecting the Accounting Document Number. It will flow to FB03 in this case.

 

d) Execution in Background

To create the batch job, you can create it directly in tcode SM36 or you can create a "template“  batch job using the wizard in the utility.  I use the word "template“ because the wizard does not create the batch job correctly. I needed to modify the resulting job for it to exist correctly.

 

I created one batch job for each custom control for clarity.

Create a Variant

The Rule Parameters are not used by the batch job, so you’ll need to create the variant to initialize those fields.

912.jpg

  • I’m using BUDAT in the Fetch Code Data to read a specific date’s data for testing. BUDAT is not set in the variant since our requirement was to create alerts for all documents that meet the criteria. The Fetch Code Data is written for this requirement.
  • P_BATCH is used to print the values to the spool file. (Refer to the Fetch Data Code section)
  • The other values are similar to the Rule Parameters.

 

To Create the Batch Job using the Wizard

Go to tab Monitoring -> Process Controls.

913.jpg

914.jpg

915.jpg

917.jpg

To fix the incorrectly created batch job, in SM37, edit the batch job step to correct the Z program name and the variant.  Also, confirm and update the Frequency.  My Fetch Logic Code will read the data from the prior date, so it is set to run daily just after midnight to pick up all of prior day’s records.

918.jpg

e. How to view the Alerts

Inbox

Alerts will be set to the Inbox of the user assigned to the case id.

919.jpg

Alert Report

They will also be sent to the Alert Report...

920.jpg

921.jpg

922.jpg

f. User Exits to Know About

Program /PSYNG/SA_009  - User Exit 100
This exit allows setting flag SCHEDULE to X if controls are to be re-processed so they will appear again in the Inbox. 
If controls are not to be reprocessed, remove this flag.


Activate the Exit in tab Misc….

923.jpg

924.jpg

My Exit code looks like this when generated…

 

{code}

  *----------------------------------------------------------------------*
* Report  /PSYNG/SA_009                                                *
* AUTHOR: Security Weaver, LLC                                        *
*----------------------------------------------------------------------*
* COPYRIGHTS Security Weaver, LLC
*
* WARNING:
* THIS COMPUTER PROGRAM IS PROTECTED BY COPYRIGHT LAW AND INTERNATIONAL
* TREATIES. UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS STRICTLY
* PROHIBITED AND MAY RESULT IN SEVERE CIVIL AND CRIMINAL PENALTIES AND
* WILL BE PROSECUTED TO THE MAXIMUM EXTENT POSSIBLE UNDER THE LAW.
*&---------------------------------------------------------------------*


REPORT /psyng/sa_009 MESSAGE-ID /psyng/sa.
DATA: schedule.

*&---------------------------------------------------------------------*
*& Form start_user_exit
*&---------------------------------------------------------------------*
FORM execute_user_exit using schedule.
schedule = 'X'.
endform.

{code}

 

The exit code for the Schedule Flag is read here...

925.jpg

Program /PSYNG/SA_001F01 – User Exit 001

I found this exit in my analysis. It is not currently in use in my implementation.

 

{code}

...
WHEN 'RPT_SYS'.
      SUBMIT /psyng/sa_rpt07 VIA SELECTION-SCREEN AND RETURN.

*    WHEN 'PROC03'.                    "SOD Control Report
*      submit /PSYNG/SA_SOD_BY_HISTORY via selection-screen and return.
*      submit /PSYNG/SODREPORT_BY_HISTORY
*                via selection-screen and return.
      SELECT SINGLE * FROM /psyng/sa_usrext INTO /psyng/sa_usrext
            WHERE  exitnumber = 1.
      IF sy-subrc = 0.
        l_prog_name = /psyng/sa_usrext-exitname.
        PERFORM execute_user_exit IN PROGRAM (l_prog_name).
      ENDIF.

{code}

 

Due to the length of this post, this discussion is continued under...

Security Weaver’s Process Auditor - Developer's Observations (Part 2)

Security Weaver’s Process Auditor - Developer's Observations (Part 2)

$
0
0

This post is a continuation of Security Weaver’s Process Auditor - Developer's Observations (Part 1)

 


g. How to Debug the Alert Generation

This section will show where areas of the generated program to focus on in case you need to debug the logic that reads the rules and contols.

As usual, enter /H in tcode to start the debug mode  and ENTER.

 

926.jpg

 

927.jpg

 

928.jpg

... Enter form FCODE_EXECUTE_CONTROL in include /PSYNG/SA_001F01...

 


Logic that reads the rules and controls
Include /PSYNG/SA_001F01’s form FCODE_EXECUTE_CONTROL contains that the logic that reads the rules and controls...

929.jpg

 

 

Logic that calls the Fetch Data Code

Continue to single step to here...

930.jpg

 

Fetch Code program is called here...

931.jpg

 

 

Here are where the parameters are read for the control.....

932.jpg

 

h. How to Import to a Target Systems

To assign objects to a transport to import Development to a target system, follow the processing steps.

1. Create transport request (manually or in SolMan ChaRM). Manually add the Control program and import into the target system.

933.jpg

 

2. Now download the Control Matrix files. Please follow the below steps to achieve the same.

a) Go to the source system.

b) Run the transaction /N/PSYNG/PA.  Go to Misc.Tab

c) Click on Upload Download (Backup)

934.jpg

 

e. Check the Download Radio button.

f. Check all check boxes and specify the file path.

935.jpg

 

Select EXECUTE to download the files checked.

936.jpg

 

3. In the Target system,  upload the files. Please follow the below steps:

a) Run the transaction /N/PSYNG/PA.  Go to Misc. Tab

b) Click on Upload Download (Backup)

c) Check the Upload Radio button.

d) Check all check box and specify the file paths that you downloaded to in the source system.

 

937.jpg

938.jpg

 

Select EXECUTE.

 

For some reason, in my Rule Details file, two empty records were created (for reason unknown).This caused an error on the upload.  I edited the file in Notepad to delete the empty records after the download and uploaded the modified file.

 

To confirm the target system is as expected, check the following areas:
• The tabs
• The user exit(s) (For me, in the target system, I needed to access the screen on the tab Misc, then the entry appeared in the table.)

 

i. Observations

• When code changes are made, programs and the CODE file need to be downloaded/uploaded.

• By standard, files downloaded/uploaded contain data/values for ALL controls and programs, not just the ones you modified.

 

j. Additional Controls

For our requirements, the code to process tcodes FB05 and FB50 are had the same ABAP, so I copy/pasted to the new controls. The only differences were the tcodes noted in the control rules and in the variants.

 


Thank you for reading!  I hope this post will help your developer in your implementation!   If you have any questions or if I missed some details, please let me know and I will update this post.  


Cheers! 

Employees turn their Dreams into Reality & Make a Difference at SAP!

$
0
0

At the end of 2014, SAP China produced the “My Dream” micro movie with the full support from executives. Once presented, the micro movie was well received by numerous employees and became very popular within the company. It received great acclaim from staff meetings to internal activities, from Intranet social to digital platform.

 

Due to its popularity, they relaunched the "My Dream" campaign in 2015 to unleash the potential of employees to a greater extent, and enhance communication and cooperation across demographics, business units and cultural backgrounds. They also had hope of helping employees summarize their successful experiences, reflect on difficulties and challenges, and jointly make positive changes by supporting the dream pursuing journey of dream teams.

 

 

The activity mainly includes four stages:

 

1) Evaluation and selection of teams with good dreams

2) Concerted efforts to support their dream pursuing journey

3) Summary and review after the realization of a milestone

4) Replication of success and proactive response to changes.

 

china1.png

To further encourage diversity, there are three categories of dreams, namely, “make remarkable achievements”, “accomplish something great in the spirit of an entrepreneur” and “live a healthier and happier life”. In the activity, we received dreams submitted by nearly 100 employees, and had votes and comments from over 2,000 employees during the evaluation and selection process. The dream teams demonstrated the glamour of their respective dreams to the jury with their ingenious ideas and passionate speeches and many of these proposals were equally excellent. Finally, the fierce competition brought out three teams who won “Best Dreams”. They are “Make Fiori Development Simpler and More Effective” initiated by Lucky, “SAP Fitness Academy” proposed by Leon and “Simple CSR” anticipated by Linda. These three teams not only obtained a considerable dream fund, but also won a stage to demonstrate their dreams.

 

china2.png

Lucky: Make Fiori Development Simpler and More Effective

 

What makes a good product successful? It is not about the sales, but more importantly rely on positive feedback from customers. This is the philosophy that every SAP employee follows. At SAP Labs China, many engineers, who are enthusiastic and determined, just like Lucky, want to help more people with SAP products. This is their dream.

 

For development itself, highly efficient tools can yield twice the result with half the effort. Just like the old saying goes, it is necessary to have effective tools to do good work. Given this, Lucky dreams of designing Fiori intelligent development tool which can not only simplify Fiori development, and also enable developers to design, develop and test Fiori application with rapidity, and help customers and partners modify and extend solutions from SAP with ease. In short, Lucky's dream is to “Make Fiori Development Simpler and More Effective”. From working alone to working together with a team, Lucky has turned his own aspiration into the dream for a group of people. Rising from obscurity to prominence, Lucky has elicited a thumbs-up from SAP overseas teams to Chinese engineers. Previously, Lucky was alone to crack the hard nut, but now he conducts discussions with his team during spare time, and they even create a WeChat group for sharing and communication. In this way, Lucky has truly turned himself from a dream maker to a dream initiator.

 

Now many employees at SAP have joined Lucky’s dream team. And more than 27,000 people view and transmit this technology on professional BBS. They have accomplished something great with their creative ideas, superior skills and the spirit of an entrepreneur.

 

china3.pngLeon: SAP Fitness Academy

 

Every day, we are faced with challenges from both work and life, and a good mental outlook will put us at ease. At SAP Global and SAP China, we have always advocated and promoted healthier and happier work and life. Like thousands of employees, Leon, an IT expert and a fitness guru, represents the positive, sunny and wholesome SAP spirit. To have a passion for fitness, challenge himself, and spread positive energy, this is Leon’s dream.

From an ordinary fitness enthusiast to a professional fitness instructor, Leon has completed his own metamorphosis in ten years. For Leon, fitness is not only a hobby, but more an impetus to embrace challenges. Therefore, Leon hopes that more SAP employees can become a bodybuilder to facilitate their health. To this, he has built an online platform to share fitness knowledge. Besides, he will introduce the most popular body building exercise courses and the hottest group training courses. Simply put, Leon’s dream is to help people “have raised buttocks and abdominals with Apollo's belt and firm abs”.

Most often, a dream is like one's own child, bringing excitement and expectation at birth and bitter sweet in the upbringing. At the very beginning, Leon was alone in his exploration. Now, an increasing number of colleagues have joined his dream team, giving this team strong support. At the same time, the dream team has not only inspired enthusiasm in employees for fitness, and also cultivated more professional fitness instructors so that they can fight side by side and encourage each other. From the internal fitness website, WeChat Public ID of the dream team, to professional physical courses twice a week, the followers of the dream team have risen perpendicularly. With increased communications and closer relations, the dream is no longer far away. Now, the dream team has a large number of “die-hard fans” in Shanghai, and plans to expand their dream plan at SAP office in more cities. They are inspiring SAP employees to work and live in a healthier and happier way with the power of examples.

 

china5.pngLinda: Simple CSR

 

Devotion to public welfare requires not only kind-heartedness, dedication and perseverance, but more specialized methodologies and intelligent systems. As the head of SAP China CSR, Linda leads her team to organize public welfare activities and fulfill due responsibilities and obligations of SAP as a corporate. The highest excellence is like that of water and the greatest love knows no boundary. This is the belief and character of every SAPer. To build an intelligent corporate social responsibility system is both the dream of Linda and the expectation of SAP executives. Furthermore, it is believed that not only SAP needs “Simple CSR”, and also an increasing number of enterprises will all look forward to empowering public welfare undertakings with such a platform.

Take SAP Great Wall Marathon as an example. Over the past three years, this event has gathered 370 participants, over 3,700 donations and attention from thousands of SAP followers. However, this event is only the tip of the iceberg for numerous SAP CSR projects. It is easy to imagine how a group of public-spirited employees leverage their limited spare time to make repeated check on details so as to ensure precision and accuracy of the information in their daily work. Overwhelming data and simple manual operation are the major challenges to organize corporate public welfare activities. Therefore, Linda expects an intelligent operation system which can not only improve the efficiency of public welfare activities, and also encourage public-spirited colleagues to communicate and engage. Linda wants the essence of SAP RUN SAP to penetrate into daily public welfare undertakings for a full realization of “CSR POWERED BY SAP”!

 

The dream is to change the world, which is grand and magnificent; the reality is to operate across sectors and differences in the profession make one feel worlds apart. This team has superb expert, but not in software technology; they have excellent product demand ideas, but lack specialized knowledge of software design, development and test. As a caring public welfare team, they are in dire need of architects and development teams to enable the dream to fly with wings. Accordingly, architects from India, technical experts from Shanghai, and development and test teams from everywhere get together in a dream for public welfare for the creation of SAP CSR system. Linda and her companions are pursuing remarkable achievements at SAP with philanthropy, ingenuity and cross-section cooperation.

 

The three teams also get substantial support from “Let’s shine” program group during their dream pursuit. With the dream fund from the company, the guidance and support from executives, and the publicity and promotion by the dream project team, these three teams are growing up, and their dreams are blossoming. These stories are also composing a new epic for SAPers to continue to follow their dreams!


Want to join one of the world's largest and most diverse cloud tech companies? Apply to SAP today! http://bit.ly/1PoyF0V

 

Want to find a job you can really be passionate about?

Browse all of our open positions at -
http://jobs.sap.com


Learn more about the workplace culture at SAP, see pics of our offices, talk to recruiters, and get real time job openings by connecting with us on our social pages:

Glassdoor: http://bit.ly/1Vdt2Yd

Facebook: http://facebook.com/LifeatSAP
Twitter: http://twitter.com/LifeatSAP

YouTube: http://youtube.com/lifeatsap

Instagram:http://instagram.com/LifeatSAP

Small Business Trends and Resolutions for a New Year

$
0
0

https://blog.studiocoast.com.au/wp-content/uploads/2015/11/VPS-best-Australian-web-hosting-for-small-business-option-full-access-hosting-environment-easy-add-resources.jpg

Entering into 2016, this is an exciting time for small business in the United States and abroad. Consumers are becoming increasingly more comfortable with online sales and services. This removes the barrier of entry to many markets by many consumers. The freelance economy is alive and booming, with the internet connecting outside experts in their field with the businesses that need their services. Reputations are becoming more important than ever, as a Google search can now reveal almost anything about prospective partners, investors and clients.

 

So how do you jump on these trends and ride them to profitability? Embrace connectivity, transparency and profitability.

Follow the Money

Credit is becoming more attainable for a wide variety of applicants. Whether it’s small businesses or families in distress, easy money isn’t back, but needed money might be on its way. How do we know? Look at the percentage of small business loans currently being approved in the United States. That number is a 22.9% approval rate for the month of December 2015. Why is that number exciting? It’s an increase over previous months in the year, and continues a trend towards SBA (Small Business Administration) loans being approved by the big banks in the United States.

 

If you’re looking to expand in the New Year, then your chances of being approved for a loan by a primary lender is better than it’s been in a very long time. What could your business do with some extra funding?

 

Well, you could lower your cost of goods by buying orders in larger quantities, which lowers the per-unit manufacturing costs. You could launch a marketing campaign to reach a new demographic and increase your sales. You could go through and expand your team: a bigger sales team means more sales, a larger manufacturing team means faster production, and some additional executives with experience in your industry could mean stronger company-side performance.

Embrace Connectivity

Part of the biggest shifts we’ve seen in recent years is a shift towards sharing. Everyone wants to share what they’re doing, who they’re with and how they’re spending their time. They want information immediately. Smartphones, tablets and computers have become our best friends. We type things into google that we wouldn’t even ask our best friends.

 

How does your company embrace connectivity and increase sales? Start by updating or expanding your website. Look at options from virtual private servers and web design companies, like PickAWeb. Don’t be afraid to do some research and work with partners that you may be unfamiliar with. After all, if you can get a fresh perspective on your online marketing strategy, then you’ll be well on your way to standing out from the competition.

Focus on Personal Health

The market has proven that Organic is sexy. Health is becoming increasingly important as national fitness brands work diligently to bring down the cost of gym memberships and reach an ever-growing market. This isn’t just about the focus of your business, but the focus of how your personal health impacts your business. Enjoy a new you in the new year, and watch how your more energetic, health-focused self is able to help your business leverage the growing trends of the new year.

Tracing Information Steward metadata tables with SQL Server

$
0
0

To build the custom metadata reports , we often need to know where Information Steward stores the metadata in repository database.SAP provides limited information about the Information Steward metadata tables in their documents.One way of tracing where IS metadata stores the information if the repository resides in SQL server is to use Query sys.dm_db_index_usage_stats view.

 

This is Dynamic Management View in SQL server that keeps track of any table that has been last updated or scanned.

 

SELECT OBJECT_NAME(OBJECT_ID) AS Table_Name, last_user_update,*
FROM sys.dm_db_index_usage_stats
WHERE database_id = DB_ID( 'DB_IS_Repo')
ORDER BY last_user_update desc

 

*since you are querying a system view , make sure you have the necessary rights to access the view.

 

You can also use SQL server's profiler for the tracing (I haven't tried this approach).


To use this approaches you need to perform the action that you are interested in and run the query. As an example , you may want to know which metadata table stores the IS rule related information or rule binding information ; create a rule and bind it to a table column.Then run the above query/analyze the profiler, which would list the tables which are late updated / scanned.


In one of my recent project , I have used this querying approach extensively with a fair amount of success to build the custom metadata reports.

BI 2016 Conference Helps Navigate the Future and Win at the Wynn

$
0
0

wynn.jpg

The SAP BI 2016 Conferencewill be in Las Vegas from February 16-19 at the Wynn and it is considered a premier event for SAP BI professionals, consultants and customers. 

The program includes over 200 hours of in-depth educational sessions, hands-on labs, ask the expert sessions, interactive discussion forums, networking events and live demos. The event will bring out some of the smartest and most well respected individuals and customers in the SAP business intelligence, analytics and reporting communities.

It’s an excellent value for the high quality education offered. In 4 days, you’ll have access to: educational sessions, workshops, how-to clinics, roundtables, keynote presentations directly from SAP about its future direction and the latest trends, private one-on-one consultations with partners and peers and networking with peers from other companies

I will be attending this year and look forward to attending several case study customer stories:

Case study: Cardinal Health’s process and methodology for building an SAP Business Suite on SAP HANA proof of concept

Cardinal Health

Case study: How Blue Buffalo has transformed decision making with SAP HANA for real-time operational analytics, and cut analytics processes from weeks to a day

Blue Buffalo

Case study: How Coca-Cola East Japan integrated SAP HANA and Hadoop and leveraged them with SAP analytics to drive new business models

Coca-Cola East Japan

Case study: How telematics sensor-equipped trucks help Linfox improve efficiency and control costs

Linfox Logistics Australia

Case study: How the Houston Independent School District plans its tool selection process, BI strategy, and roadmap for analytics

Houston Independent School District

Case study: How ThyssenKrupp leverages SAP BusinessObjects Analysis, edition for Microsoft Office to drive self-service and reduce dependence on IT

ThyssenKrupp

Case study: Internet of Things at Hamburg Port Authority – Managing millions of details in real -time to safely and efficiently guide ships and goods

Hamburg Port Authority

Case study: Lessons for deploying and optimizing SAP Predictive Analysis

Lockheed Martin

Case study: Lessons learned from Glazer’s Wholesale Distributors SAP HANA implementation

Glazer's Wholesale Distributors

Case study: Migrating a 20TB SAP BW system to SAP BW 7.4 on SAP HANA – Allstate's SAP HANA journey and lessons learned

Allstate

Case study: SAP BusinessObjects Dashboards vs. SAP BusinessObjects Design Studio — How the Houston Independent School District determined which tool to use for its SAP BusinessObjects implementation

Houston Independent School District


Program Content - There will be over 175 sessions that cover core areas such as BI implementations and upgrades, SAP HANA, SAP BusinessObjects, Self-service BI, business analytics, reporting and much more. There is truly something for everyone, and it is being held alongside of the HANA2016, Admin & Infrastructure 2016 and IoT2016– all sessions are open to attendees at BI 2016.


Additionally, I look forward to attending SAP Mentor Ingo Hilgefort sessions "Performance and design best practices for creating fast, easily consumable dashboards with SAP BusinessObjects Design Studio" and "Are you ready to migrate from SAP BusinessObjects Dashboards to SAP BusinessObjects Design Studio?"


Networking - One of the under rated parts of any SAP event and something I always find most useful is networking. The BI2016 event is a great opportunity to network with peers and meet new people. The who’s who of the SAP BI industry will be at this event looking to swap war stories and business cards, connect on LinkedIn and Twitter and share information as well as discuss the sessions from each day


Hopefully I have shared why you should attend the BI2016. If you are an SAP BusinessObjects user or provide technical support for SAP BusinessObjects BI this is one event that you won’t want to miss and don’t forget to register today.


A look back at last year's BI2015 event:

Empathy, Design Thinking, And An Obsession With Customer-Centric Innovation

$
0
0

SAPVoice Empathy An Obsession With Customer-Centric Innovation by Kaan Turnali.pngTo deliver innovative, customer-centric solutions through design thinking, we must begin with empathy.

 

In its simplest and purest form, empathy enables us to not only experience and understand another person’s circumstances, but it also puts us in our customers’ shoes to experience what they are feeling.

 

This is where we find the innate struggle born out of user frustrations and bound to the intrinsic value chain of the user experience.

 

Without a doubt, empathy is the most important design thinking principle I will cover in this series. Its universal application offers infinite promise.


Customer-centric design is about looking out from the inside—rather than outside in

 

Design thinking helps us cut through the opacity that surrounds our customers’ (or users’) needs and behaviors, their connections with existing ecosystems, and their interactions with one another. In essence, empathy becomes a compass that guides us along the innovation path as we set out to discover hidden, but detectable, elements of the user experience.

 

We embrace the empathy principle by living and experiencing our users’ pain points and state of mind strictly from their perspective. This is why customer-centric design should be a practice of looking out from the inside—and not as outsiders looking in. It requires us to open our nerve endings, so to speak, and increase our awareness in a state of design mindfulness.

 

We can’t do that from behind a desk, inside the margins of an interview, or on the pages of a requirements document. We need to be right in the trenches, working, observing, and, more importantly, suffering side by side with them within their authentic circles and under realistic conditions. Only then do we have a chance to live the experience—rather than experience it in a distant light.


The more we know, the more biased we become

 

The more we know about something; the more prone we become to intuitive bias. This mindset can turn our expertise and experience into perceived knowledge and resurface them in a form that can be both restrictive in its forward-thinking motion and narrow in its depth and angle.

 

To be clear, this viewpoint neither rejects nor diminishes the knowledge and experience we bring to the table. Subject-matter expertise is not only a critical multiplier of design thinking, but it is also essential to collective insight. (More on this topic later in the series).

 

What we are advocating here is the strength that lies in the application of the empathy principle: The desire to seek realization and perceptiveness in the experience—not accumulated experience confined to raw knowledge.

 

Validating design in the absence of rigid knowledge is how we gain true insight and uncover design blind spots. We want to focus on the problem and defer any preconceived notions about the solution. Think of it as a reset button. If applied correctly, we experience the world around us in the proper light. We lead ourselves (and others who join us in this journey) into a state of alertness that cuts thru bias—conscious or unconscious—that could otherwise impact our ability to be receptive toward creative solutions and possibilities.


Focus on users’ experiences—especially the emotional ones

 

Don’t underestimate or skip emotional boundaries around which a product, service, or process is designed and built. These edges may be rough and sometimes come with baggage. That is precisely where we find the greatest opportunity.

 

Humans react to emotional probes—solicited or not—that are often accompanied by emotional assurances rather than logic, reason, or dispassion. I call these “emosurances.” They include things such as: “We don’t want to be left in the dark.” “Updates and continuous information flow are good.” “We want to know the next steps.” “We hate uncertainty.”

 

Regardless of their shape, form, or frequency, we seek these cues to assure ourselves. They play a critical role in shaping the user experience. Emosurances are the points of light in design thinking that we seek to uncover, which are commonly hidden or marginal.


Empathy is the shortest distance between design thinking and customer-centric innovation

 

When we place the customer (user) at the core of everything we do in our design-thinking journey, we foster a human-centered approach that always focuses on needs, including those that are unarticulated or unknown. If we can bring empathy to the forefront and make it a focal point of our thinking, we expand our capacity to experience and understand before judging or executing. That’s the essence of customer empathy.

 

This approach creates an incredible opportunity to deepen our frame of design thinking—a prerequisite for thinking in the design. And empathy lies within the depths of our passion and tenacity that yields itself to an obsession with customer-centric innovation.

 

Stay tuned for the next installment of the Design Thinking thought leadership series!

 

Connect with me on Twitter (@KaanTurnali), LinkedInand turnali.com

 


 

DESIGN THINKING

What is Design Thinking? | Competing on Design Thinking | Empathy

 

More from Business Trends:

4 Ways We Can Redefine Innovation In The Enterprise

3 Reasons Why Thought Leadership Matters

How Do You Define Business Talent?

5 Tools That Foster Technology Innovation

Leadership Starts With One

Single-Click Consultants Need Not Apply

5 Reasons Why More Data Doesn’t Guarantee Better Decisions

The Fan Experience Matters: The Essence of Fan Journey

4 Reasons Why Excellent Customer Service Should Start With A Smile

 


 

This post first appeared on turnali.com


Leadership at Work

$
0
0

If you ask people around you who their favorite/most inspirational leaders are, most likely you will hear names like Steve Jobs, Mark Zuckerberg, and Richard Branson. We have idolized a handful of popular leaders for traits like vision or charisma, without entirely understanding their personalities or studying their failures. Stanford Graduate School of Business professor Jeffrey Pfeffer addresses this in his book Leadership BS: Fixing Workplaces and Careers One Truth at a Time, where he talk about how the $70-billion-dollar leadership industry has failed us. He says “There’s all this mythologizing that besets leadership, as people try to generalize and learn from exceptional cases.”

 

The book really resonated with me as I have encountered this uncountable number of times in my career. This essay is written to give a holistic view of leadership, based on my decade long experience of leading creative teams. Since I am also an avid cook, I have codified my insights in the form of a recipe.

Recipe_image.png

One part people management

If you want to lead people, you need to know how to work with them. This does not mean that you have to be an extrovert or gregarious person, but you need to be empathetic and genuinely care about the well-being of the people you lead. You will also have to read situations quickly, listen carefully, and make good decisions. Finally, you need to manage up. Make your management feel informed and build their trust in your capacity for sound judgment.

 

One part functional expertise

As you transition from an individual contributor to manager, you need to learn to let go and delegate. However, remember that you can delegate execution, but you cannot delegate understanding.

 

As responsibility increases, it will become difficult to maintain functional expertise. By continually sharpening your functional knowledge, you can ensure that you make good decisions on behalf of the team.

 

One part administration and organization

When you are a leader, you sign up to do the administrative work on behalf of the team – usually more than you can imagine. Equipment has to be purchased, budgets have to be reconciled, expenses have to be approved, events have to be organized, performance has to be reviewed, salaries need to be negotiated and so on.

 

The key to tackling this aspect of leadership is to strive for balance. Too much administrative overhead will feel stifling and burdensome, while too little structure will feel chaotic and out of control. Apply sound organizational design principles to set up a structure that fits your team’s needs.

 

If you are part of a larger organization, it is likely that the organization will impose some processes on you and your team. As a leader, it is healthy to approach these processes with a critical eye to evaluate which ones further the mission of the team and which ones detract from it. It is inevitable that you will find a few processes that you can do without. You cannot fight every battle; so pick the ones that are worth the effort. This will showcase your leadership skills to an audience larger than your immediate team, and is ultimately a service you do to your overall company.

Stir with authenticity

When you cook, do you ever do a taste check after you have combined the ingredients?  Leaders need to do similar self-checks to assess their effectiveness.

 

If you notice that you are lacking in one area, you can adjust and find strategies to augment this aspect of leadership. For example, if you find you lack functional expertise, seek experts who can mentor you, or point you to resources to help you fill this knowledge gap. If you are disorganized, or find that administrative tasks bore you, find tools to help you stay organized, and remind yourself of the larger purpose. If you lack people skills, seek mentoring or coaching to become a better listener and thoughtful communicator.

 

The best leaders are self-aware and understand their strengths and weaknesses. Remember that it is an ongoing journey. Conduct a self-inventory by doing honest self-checks and seeking feedback. Most importantly, adopt an open and lifelong learner’s mindset.

Sprinkle with personal style

Leaders come in all shapes, sizes, colors, and genders. As long as you stay professional, and drive team results, you are better off leading in your own unique style than trying to fit a mold you feel uncomfortable in. Doing so may make you feel like an imposter deep down, and will affect your credibility.

 

It takes time to find your true voice as a leader, so be patient with yourself. Being true to yourself will help you connect with your team and earn their trust.

Serve with love

Finally, great leaders lead with love. Many of the tasks a leader does will be invisible to the team. However, they must be done if they serve the greater good.

 

There will be times when a leader is called upon to serve and even sacrifice for the team. And only upon this service and sacrifice can we build our authority and influence, and earn the right to be called a true leader.

SAP金税接口- 多数据源

$
0
0

金税接口解决方案概览

  1. p创建金税系统接口的导出文件: SAP ->金税系统
  2. p从金税系统导入文件: 金税系统 -> SAP
  3. p报表功能: 查询开票凭证与增值税发票

三种类型的传输方式: 文本传输Excel传输 和直连方式。

1.JPG


多数据源的业务需求:

由销售订单开票

由财务凭证开票

由其他单据开票


多数据源方案概述:


  导出文件初始画面

2.JPG

 

  选择多数据源

3.JPG


   详细设置

4.JPG

  导入文件

5.JPG

   源凭证报表

6.JPG



  金税凭证报表

7.JPG




范例程序:IDGTCN_SALES_ORDER


8.JPG






由销售订单开票销售订单开

 

由销售订单开票由销售订单开

GTI BAdI Instruction 金税BAdI说明及示例代码

$
0
0

Contents

1  BAdI List 2

  1. 1.1  BAdI: IDGTCN_BANK_DETAIL. 2
  2. 1.2  BAdI IDGTCN_CUST_ADDR. 2
  3. 1.3  IDGTCN_MATNR_SPEC. 2
  4. 1.4 IDGTCN_SELLER_ADDRESS. 3
  5. 1.5 IDGTCN_BILLING_CHECK. 3
  6. 1.6 IDGTCN_LINES. 3
  7. 1.7 IDGTCN_CHECK_COMBINE. 4
  8. 1.8 IDGTCN_VAT_LINES. 4
  9. 1.9  IDGTCN_MODIFY_FILE_CONTENT. 4
  10. 1.10 IDGTCN_WRITEBACK. 4

2 Implementation Example. 5

  1. 2.1  Change Material spec. 5
  2. 2.2  Pro Forma Invoice & Filter of Search Result 5
  3. 2.3  Discount 6
  4. 2.4  Different Business Area Can Not Combine. 7
  5. 2.5  Change ‘Note’ of VAT Invoices. 8
  6. 2.6  Merge Line Items According to the Material Type. 9
  7. 2.7  Merge Line Items According to the Material and Unit Price. 10
  8. 2.8  Extend Content of Outbound File. 10
  9. 2.9  Invoice number Write back to VBRK. 12
  10. 2.10  Default Combine by Material 14

Copyright 16

 

 

 

 

1  BAdI List

1.1  BAdI: IDGTCN_BANK_DETAIL

This BAdI contains 2 methods

GET_SELLER_BANK_DETAIL

This method could be used to set the payee's bank account.

GET_BUYER_BANK_DETAIL

If the default payer's bank account is insufficient, you can use this method to set the payer's bank account based on customer number.

 

1.2  BAdI IDGTCN_CUST_ADDR

This BAdI contains 3 methods:

GET_CUSTOMER_ADDRESS

If the default payer's address is insufficient, you can use this method to set the payer's address based on customer number.

SET_CUSTOMER_TYPE

This method is created to set customer type based on customer number. The exporting field 'ES_IS_SMALL_TAX_PAYER' has two values:

'X' - Small Scale Tax Payer, invoices of this customer will be printed as 'Normal invoice'.

' ' - Ordinary VAT taxpayer,  invoices of this customer will be printed as 'Special invoice'.

GET_CUSTOMER_NAME

If the default payer's name is insufficient, you can use this method to set the payer's name based on customer number.

 

1.3  IDGTCN_MATNR_SPEC

This BAdI contains 2 methods:

GET_MATERIAL_SPEC

If the default material specification is insufficient, you can use this method to set new specification.

GET_MATERIAL_DESC

If the default material description is insufficient, you can use this method to set new description.

 

1.4 IDGTCN_SELLER_ADDRESS

This BAdI contains 1 method:

GET_SELLER_ADDRESS

This method could be used to set the Payee's address

 

1.5 IDGTCN_BILLING_CHECK

This BAdI contains 1 method:

BILLING_CHECK

By using this BAdI, you can define your own logic to check whether a document should be displayed in outbound search result. E.g.:

  1. If VAT invoice has already been printed from sales order, the following billing document should not be sent to GT again. In this case you can use this BAdI to filter this billing document.
  2. In some specific business cases, you need to send data to Golden Tax System from other billing categories. E.g. Pro Forma invoices. You can use this BAdI to add these documents into the search result of outbound application.

 

1.6 IDGTCN_LINES

This BAdI contains 1 method:

CHANGE_OUTPUT_LINES

You can use this BAdI to include discount data in the outbound file for the Golden Tax Interface. In addition, this BAdI enables you to remove a line item from the output ALV list and subsequently the outbound file.

You can also use this BAdI to make necessary changes of contents which are selected from source documents.  Please be noticed that abuse of this BAdI will cause data inconsistency between SAP and Golden Tax System

 

1.7 IDGTCN_CHECK_COMBINE

This method contains 1 method:

CHECK_COMBINE

You can use this BAdI to create additional check rule for combination. It will be called after you select several documents and click 'Combine' button.

If selected documents should not be combined, you can append message with type 'E' into the return table 'ET_RETURN'.  Then the combine event will be terminated and message will be displayed on your screen.

If selected documents can be combined, you do not need to change anything in your BAdI implementation.

 

1.8 IDGTCN_VAT_LINES

This method contains 1 method:

CHANGE_VAT_LINES

This method could be used to change fields of VAT invoice after GTI generate VAT data.  E.g. you can implement this BAdI to replace 'Note' field. Please be noticed that abuse of this method will cause data inconsistency between SAP and Golden Tax System

 

1.9  IDGTCN_MODIFY_FILE_CONTENT

This BAdI contains 1 method:

MODIFY_FILE_CONTENT

This method could be used to make necessary changes on the header and Items of outbound file before downloaded. E.g. payer name/payer address/Unit price/ discount rate etc.

Please be noticed that abuse of this method will cause data inconsistency between SAP and Golden Tax System

 

1.10 IDGTCN_WRITEBACK

This method contains 1 method:

WRITEBACK

In inbound application, you can use this BAdI to write VAT invoice information back to SAP documents.

 

2 Implementation Example

2.1  Change Material spec

Case1: You need to change the default material specification to the new specification .

BAdI Name: IDGTCN_MATNR_SPEC

METHOD IF_EX_MATNR_SPEC~GET_MATERIAL_SPEC.
IF IS_MATNR_PARAMS = 'GTS_RAW_MM01'.
ES_MATNR_SPEC
= 'GTS_RAW_MM01_SPEC'.
ENDIF.
ENDMETHOD.

 

Case2: You need to change the default material description to the new description .

BAdI Name: IDGTCN_MATNR_SPEC

METHOD IF_EX_MATNR_SPEC~GET_MATERIAL_DESC.
IF IS_MATNR_PARAMS = 'GTS_RAW_MM01'.
ES_MATNR_DESC
= 'GTS_RAW_MM01_DESC'.
ENDIF.
ENDMETHOD.

 

2.2  Pro Forma Invoice & Filter of Search Result

Case3: You need to get Pro Forma invoices data in GTI and send them to Golden Tax System.

BAdI Name: IDGTCN_BILLING_CHECK

METHOD if_ex_billing_check~billing_check.
DATA: ls_tvfk TYPE tvfk.
CHECK is_vbrk-fkart IS NOT INITIAL.
SELECT SINGLE * INTO ls_tvfk
FROM tvfk
WHERE fkart = is_vbrk-fkart.
CHECK sy-subrc EQ 0.
IF ls_tvfk-vbtyp EQ 'U'     "SD document categ. -Pro forma invoice
AND ls_tvfk-trvog EQ '8'. "Transaction group  -Proforma invoices
cv_oper
= '1'.            "Billing
ENDIF.
ENDMETHOD.

Case4: Only billing documents with posting status ‘C’(Posting document has been created) could be displayed and sent.

METHOD if_ex_billing_check~billing_check.
IF is_vbrk-rfbsk NE 'C'.
cv_oper
= '3'.          "will not be displayed in output list
ENDIF.
ENDMETHOD.

 

2.3  Discount

Case5: If discount with tax is used in your billing condition. You need to add discount info into data selected.

BAdI Name: IDGTCN_LINES

METHOD if_ex_lines~change_output_lines.

DATA:ls_item TYPE idgt_s_item,
ls_konv
TYPE konv,
ls_konv_tax
TYPE konv,
ls_vbrk
TYPE vbrk.

DATA:lt_vbrk TYPE SORTED TABLE OF vbrk WITH NON-UNIQUE KEY vbeln,
lt_konv
TYPE SORTED TABLE OF konv WITH NON-UNIQUE KEY knumv kposn.

CHECK ct_header IS NOT INITIAL AND ct_item IS NOT INITIAL.
SELECT vbeln knumv fkart vtweg
FROM vbrk
INTO CORRESPONDING FIELDS OF TABLE lt_vbrk
FOR ALL ENTRIES IN ct_header
WHERE vbeln = ct_header-vbeln.
CHECK sy-subrc EQ 0.
CLEAR:lt_konv.
SELECT knumv kposn  kschl kbetr kwert mwsk1 kawrt
FROM konv
INTO CORRESPONDING FIELDS OF TABLE lt_konv
FOR ALL ENTRIES IN lt_vbrk
WHERE knumv = lt_vbrk-knumv
AND   kschl = 'ZD01'. "Discount Condition type

SELECT knumv kposn kschl kbetr kwert mwsk1 kawrt
FROM konv
APPENDING CORRESPONDING FIELDS OF TABLE lt_konv
FOR ALL ENTRIES IN lt_vbrk
WHERE knumv = lt_vbrk-knumv
AND   kschl = 'MWST'. "VAT Condition type

LOOP AT ct_item INTO ls_item.
READ TABLE lt_vbrk INTO ls_vbrk WITH KEY vbeln = ls_item-vbeln.
READ TABLE lt_konv INTO ls_konv WITH KEY knumv = ls_vbrk-knumv
kposn
= ls_item-vfpos
kschl
= 'ZD01'.
IF sy-subrc = 0.
READ TABLE lt_konv INTO ls_konv_tax WITH KEY knumv = ls_vbrk-knumv
kposn
= ls_item-vfpos
kschl
= 'MWST'.
"Discount Amount(w/o tax) = Discount amount(w/ tax) / ( 1 + tax rate )
ls_konv
-kbetr = abs( ls_konv-kbetr ).
ls_konv_tax
-kbetr = ( ls_konv_tax-kbetr + 1000 ) / 1000.
ls_item
-disc = ls_konv-kbetr / ls_konv_tax-kbetr.
" Discount tax = Total Discount amount - Discount Amount(w/o tax)
ls_item
-disctax = abs( ls_konv-kbetr ) - ls_item-disc.

IF ls_item-fkimg < 0.
ls_item
-disc = ls_item-disc * ( -1 ).
ls_item
-disctax = ls_item-disctax * ( -1 ).
ENDIF.

"Billing Net Value(before discount) = Billing Net Value(after discount) +
" Discount Amount(w/o tax)
ls_item
-netwr = ls_item-netwr + ls_item-disc.
"Billing Tax Amount(before discount) = Billing Tax Amount(after discount+
" Discount Tax
ls_item
-taxamt = ls_item-taxamt + ls_item-disctax.
MODIFY ct_item FROM ls_item TRANSPORTING disc disctax netwr taxamt.
ENDIF.

CLEAR:ls_item,ls_vbrk,ls_konv,ls_konv_tax.
ENDLOOP.

ENDMETHOD.

 

2.4  Different Business Area Can Not Combine

Case6: You need to combine with the same business area

BAdI Name: IDGTCN_CHECK_COMBINE

METHODif_check_combine~check_combine.
DATA:ls_header LIKE LINE OF  it_header,
lt_vbrp  
TYPE TABLE OF vbrp,
ls_vbrp  
TYPE          vbrp,
lv_gsber 
TYPE          vbrp-gsber,
lv_gsber1
TYPE          vbrp-gsber,
lv_flag  
TYPE          char1,
ls_return
TYPE          bapiret2.
CHECK it_header IS NOT INITIAL.
SELECT *
FROM vbrp
INTO TABLE lt_vbrp
FOR ALL ENTRIES IN it_header
WHERE vbeln = it_header-vbeln.
SORT lt_vbrp ASCENDING.
LOOP AT it_header INTO ls_header.
READ TABLE lt_vbrp INTO ls_vbrp WITH KEY vbeln = ls_header-vbeln
BINARY SEARCH.
IF sy-subrc = 0.
lv_gsber
= ls_vbrp-gsber.
IF lv_gsber IS NOT INITIAL.
IF lv_gsber1 IS INITIAL.
lv_gsber1
= lv_gsber.
ELSEIF lv_gsber1 <> lv_gsber.
lv_flag
= 'X'.
EXIT.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
IF lv_flag = 'X'.
ls_return
-type = 'E'.
APPEND ls_return TO et_return.
ENDIF.

  1. ENDMETHOD.

 

2.5  Change ‘Note’ of VAT Invoices

Case7: You need to add customer purchase order number into the note field of VAT invoice.

BAdI Name: IDGTCN_VAT_LINES

METHOD if_ex_lines~change_output_lines.
DATA: ls_vat_header LIKE LINE OF ct_vat_header,
ls_item
LIKE LINE OF it_item.
DATA: BEGIN OF ls_so,
refvbeln
LIKE ls_vat_header-refvbeln,
aubel
LIKE ls_item-aubel,
bstnk
TYPE vbak-bstnk,
END OF ls_so.
DATA: lt_so LIKE STANDARD TABLE OF ls_so,
lv_bstnk
TYPE vbak-bstnk,
lv_tabix
LIKE sy-tabix.

CHECK ct_vat_header[] IS NOT INITIAL.
LOOP AT it_item INTO ls_item.
IF ls_item-aubel IS NOT INITIAL.
ls_so
-refvbeln ls_item-refvbeln.
ls_so
-aubel = ls_item-aubel.
APPEND ls_so TO lt_so.
ENDIF.
ENDLOOP.
LOOP AT ct_vat_item INTO ls_item.
IF ls_item-aubel IS NOT INITIAL.
ls_so
-refvbeln ls_item-refvbeln.
ls_so
-aubel = ls_item-aubel.
APPEND ls_so TO lt_so.
ENDIF.
ENDLOOP.
SORT lt_so ASCENDING BY refvbeln aubel.
DELETE ADJACENT DUPLICATES FROM lt_so COMPARING refvbeln aubel.
LOOP AT lt_so INTO ls_so.
AT NEW aubel.
SELECT SINGLE bstnk INTO lv_bstnk
FROM vbak
WHERE vbeln = ls_so-aubel.
IF sy-subrc NE 0.
CLEAR lv_bstnk.
ENDIF.
ENDAT.
ls_so
-bstnk = lv_bstnk.
MODIFY lt_so FROM ls_so TRANSPORTING bstnk.
ENDLOOP.

LOOP AT ct_vat_header INTO ls_vat_header.
READ TABLE lt_so TRANSPORTING NO FIELDS
WITH KEY refvbeln = ls_vat_header-refvbeln BINARY SEARCH.
IF sy-subrc EQ 0.
lv_tabix
= sy-tabix.
ELSE.
CONTINUE.
ENDIF.
LOOP AT lt_so INTO ls_so FROM lv_tabix.
IF ls_so-refvbeln NE ls_vat_header-refvbeln.
EXIT.
ENDIF.
IF sy-tabix = lv_tabix.
CONCATENATE ls_vat_header-note ' Purchase Order:'
ls_so
-bstnk INTO ls_vat_header-note.
ELSE.
CONCATENATE ls_vat_header-note '/' ls_so-bstnk INTO ls_vat_header-note.
ENDIF.
ENDLOOP.
MODIFY ct_vat_header FROM ls_vat_header TRANSPORTING note.
ENDLOOP.
ENDMETHOD.

 

2.6  Merge Line Items According to the Material Type

Case8: You need to merge line items according to the material type.

BAdI Name: IDGTCN_VAT_LINES

METHOD IF_EX_VAT_LINES~CHANGE_VAT_LINES.

  DATA: lt_mara TYPE TABLE OF mara,
ls_mara
TYPE          mara,
ls_item
LIKE LINE OF  it_item.

CHECK ct_vat_item IS NOT INITIAL.
SELECT *
FROM mara
INTO TABLE lt_mara
FOR ALL ENTRIES IN ct_vat_item
WHERE matnr = ct_vat_item-matnr.
SORT lt_mara ASCENDING.
LOOP AT ct_vat_item INTO ls_item.
READ TABLE lt_mara INTO ls_mara WITH KEY matnr = ls_item-matnr
BINARY SEARCH.
IF sy-subrc = 0.
ls_item
-customfield1 = ls_mara-mtart.
MODIFY ct_vat_item FROM ls_item TRANSPORTING customfield1.
ENDIF.
ENDLOOP.

  1. ENDMETHOD.

2.7  Merge Line Items According to the Material and Unit Price

Case9: You need to merge line items according to the material and unit price.

BAdI Name: IDGTCN_LINES

METHOD if_ex_lines~change_output_lines.
* Local Work Area Definition
DATA: ls_item TYPE idgt_s_item.
* Local Variant Definition
DATA: lv_unit_price TYPE string.

* Below we need to change customer field2 of line item
LOOP AT ct_item INTO ls_item.
lv_unit_price
= ls_item-unitpe.
ls_item
-customfield2+0(12) = ls_item-matnr.
ls_item
-customfield2+12(8) = lv_unit_price.
MODIFY ct_item FROM ls_item.
ENDLOOP.
ENDMETHOD.

2.8  Extend Content of Outbound File

Case10: You need to add new content into GTI outbound file. E.g. add ‘Tax Rate’ in outbound file

BAdI Name: IDGTCN_MODIFY_FILE_CONTENT

METHOD if_ex_lines~change_output_lines.
DATA: BEGIN OF ls_header,
refvbeln
TYPE c LENGTH 20, "GT document number
tlines
TYPE c LENGTH 4,    "Total lines
kname1
TYPE c LENGTH 100,  "Payer name
kstcd5
TYPE c LENGTH 15,   "Customer register number
kstras
TYPE c LENGTH 80,   "Payer address
kbanka
TYPE c LENGTH 80,   "Payer band account
note
TYPE c LENGTH 160,    "Note
vusnam
TYPE c LENGTH 8,    "Verified by
cusnam
TYPE c LENGTH 8,    "Collected by
goodslist
TYPE c LENGTH 60, "Goods list name(obsolete)
sentdate
TYPE c LENGTH 8,  "send date
vbanka
TYPE c LENGTH 80,   "Payee bank account
vstras
TYPE c LENGTH 80,   "Payee address
END OF ls_header.
DATA: BEGIN OF ls_item,
maktx
TYPE c LENGTH 60,  "goods discription
mseht
TYPE c LENGTH 16,  "UOM description
mspec
TYPE c LENGTH 30,  "Material Specification
invquan
TYPE string,     " Quantity
netvalue
TYPE string,    "Net value
taxrate
TYPE string,     "Tax rate
taxcod
TYPE c LENGTH 4,  "Tax code
discamt
TYPE string,     "Discount Amount
taxamt
TYPE string,      "Tax amount
disctax
TYPE string,     "Discount Tax
discrate
TYPE string,    "Discount Rate
unitpric
TYPE string,    "Unit Price
price_mode
TYPE c,       "Price Mode
END OF ls_item.
DATA: lt_item LIKE STANDARD TABLE OF ls_item,
ls_line
LIKE LINE OF ct_content,
lv_disc_rate
TYPE p DECIMALS 3,
lv_lines
TYPE i.

*Step1: Split string into fields
LOOP AT ct_content INTO ls_line.
IF sy-tabix EQ 1. "Header line in SJJK0101
SPLIT ls_line-line AT '~~' INTO ls_header-refvbeln ls_header-tlines
ls_header
-kname1 ls_header-kstcd5
ls_header
-kstras ls_header-kbanka
ls_header
-note   ls_header-vusnam
ls_header
-cusnam ls_header-goodslist
ls_header
-sentdate ls_header-vbanka
ls_header
-vstras.
ENDIF.
IF sy-tabix GT 1. "Item line in SJJK0101
SPLIT ls_line-line AT '~~' INTO ls_item-maktx   ls_item-mseht
ls_item
-mspec        ls_item-invquan
ls_item
-netvalue     ls_item-taxrate
ls_item
-taxcod       ls_item-discamt
ls_item
-taxamt       ls_item-disctax
ls_item
-discrate     ls_item-unitpric
ls_item
-price_mode.
APPEND ls_item TO lt_item.
CLEAR ls_item.
ENDIF.
ENDLOOP.

*Step2: Change header or item content
LOOP AT lt_item INTO ls_item.
lv_disc_rate
= ls_item-discamt / ls_item-netvalue.
ls_item
-discrate = lv_disc_rate.
MODIFY lt_item FROM ls_item TRANSPORTING discrate.
ENDLOOP.

*Step3: Re-generate file lines
DESCRIBE TABLE ct_content LINES lv_lines.
DELETE ct_content FROM 2 TO lv_lines.
CONCATENATE ls_header-refvbeln ls_header-tlines
ls_header
-kname1   ls_header-kstcd5
ls_header
-kstras   ls_header-kbanka
ls_header
-note     ls_header-vusnam
ls_header
-cusnam   ls_header-goodslist
ls_header
-sentdate ls_header-vbanka
ls_header
-vstras  INTO ls_line-line SEPARATED BY '~~'.
APPEND ls_line TO ct_content.
CLEAR ls_line.
LOOP AT lt_item INTO ls_item.
CONCATENATE ls_item-maktx        ls_item-mseht
ls_item
-mspec        ls_item-invquan
ls_item
-netvalue     ls_item-taxrate
ls_item
-taxcod       ls_item-discamt
ls_item
-taxamt       ls_item-disctax
ls_item
-discrate     ls_item-unitpric
ls_item
-price_mode INTO ls_line-line SEPARATED BY '~~'.
APPEND ls_line TO ct_content.
CLEAR ls_line.
ENDLOOP.

ENDMETHOD.

 

2.9  Invoice number Write back to VBRK

Case11: You need to writeback the invoice number to table VBRK.

BAdI Name: IDGTCN_WRITEBACK

METHOD if_ex_writeback~writeback.

DATA: lv_flag_db         TYPE xfeld,
ls_idgt_gtdm      
TYPE idgt_gtdm,
ls_vbrk           
TYPE vbrk,
ls_idgt_merge_info
TYPE idgt_merge_info,
ls_idgt_info      
TYPE idgt_info,
lv_redvbeln       
TYPE char10.

CALL METHOD cl_idgt_utility=>get_db_config
IMPORTING
ev_flag
= lv_flag_db.

* Assuming the same billing, there is only one business area.
* New DB
IF lv_flag_db = 'X'.
SELECT SINGLE *
FROM idgt_gtdm
INTO ls_idgt_gtdm
WHERE vbeln_gtd = p_idgt_info-refvbeln
AND posnr_gtd = p_idgt_info-posnr.

IF sy-subrc = 0 AND ls_idgt_gtdm-gtotype IS INITIAL.
SELECT SINGLE *
FROM vbrk
INTO ls_vbrk
WHERE vbeln = ls_idgt_gtdm-vbeln.
ls_vbrk
-xblnr = p_idgt_info-gtvbeln.
UPDATE vbrk FROM ls_vbrk.
ENDIF.
* Old DB
ELSE.
lv_redvbeln
= p_idgt_info-refvbeln.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input  = lv_redvbeln
IMPORTING
output = lv_redvbeln.

SELECT SINGLE *
FROM idgt_merge_info
INTO ls_idgt_merge_info
WHERE vbeln = lv_redvbeln
AND vfpos = p_idgt_info-posnr.

IF sy-subrc = 0.
SELECT SINGLE *
FROM vbrk
INTO ls_vbrk
WHERE vbeln = ls_idgt_merge_info-vbeln.
ls_vbrk
-xblnr = p_idgt_info-gtvbeln.
UPDATE vbrk FROM ls_vbrk.
ELSE.
SELECT SINGLE *
FROM idgt_info
INTO ls_idgt_info
WHERE vbeln = lv_redvbeln.
IF sy-subrc = 0.
SELECT SINGLE *
FROM vbrk
INTO ls_vbrk
WHERE vbeln = ls_idgt_info-vbeln.
ls_vbrk
-xblnr = p_idgt_info-gtvbeln.
UPDATE vbrk FROM ls_vbrk.
ENDIF.
ENDIF.

ENDIF.

ENDMETHOD.

 

2.10  Default Item Merge by Material

Case12: The standard function does not merge different items into one item by default. If you want to merge items by material automatically, you could implement the implicit enhancement at the beginning of the method ‘BUILD_VAT_DATA’ of Class ‘CL_IDGT_OUTBOUND’.   

For example, there are three items of a billing document which contains two materials.  The standard function will generate three items as a default result. User can push the "Merge by material" to generate two items as a result. After the enhancment, the result will be two items (two materials) by default.

Class: CL_IDGT_OUTBOUND

METHOD: BUILD_VAT_DATA

Example:

DATA: lt_callstack TYPE sys_callst,
ls_cur_item 
TYPE idgt_s_item,
lv_flag_pos 
TYPE char1,
lv_flag_neg 
TYPE char1.

IF cv_mrg_typ IS INITIAL.
CALL FUNCTION 'SYSTEM_CALLSTACK'
EXPORTING
max_level         
= 0
IMPORTING
et_callstack      
= lt_callstack.

LOOP AT lt_callstack TRANSPORTING NO FIELDS
WHERE progname = 'CL_IDGT_OUTBOUND==============CP'
AND ( eventname = 'COMBINE_DOCUMENTS' OR eventname = 'SEND_TO_GT' ).
CLEAR: lv_flag_pos,
lv_flag_neg.
LOOP AT mt_cur_item into ls_cur_item.
IF ls_cur_item-netwr > 0.
lv_flag_pos
= 'X'.
ELSEIF ls_cur_item-netwr < 0.
lv_flag_neg
= 'X'.
ENDIF.
ENDLOOP.
IF lv_flag_pos is initial or lv_flag_neg is initial.
cv_mrg_typ
= 'M'.
ENDIF.
EXIT.
ENDLOOP.
ENDIF.

How to use RFC_READ_TABLE from JavaScript via WebService

$
0
0

Hello community,

 

here a step by step guide to expose the RFC-enabled function module RFC_READ_TABLE as WebService and how to use it via JavaScript:

 

  1. Start transaction code SE80 and create a new Enterprise Service.
    000.jpg
  2. Choose Service Provider and press Continue button in the dialog.
    001.JPG
  3. Choose Existing ABAP Object and press Continue button.
    002.JPG
  4. Name the service definition, the description and press Continue button.
    003.JPG
  5. Choose Function Module and press Continue button.
    004.JPG
  6. Name Function Module with RFC_READ_TABLE.
    005.JPG
  7. Accept SOAP Appl, set Profile to Authentication with User and Password, No Transport Guarantee and press Continue button.
    006.jpg
  8. Choose the Package you want, I my case I activate Local Object CheckBox, and press Continue button.
    007.JPG
  9. Press Complete button.
    008.JPG
  10. Now Save and Activate the Service Definition.
    009.JPG
  11. Start the transaction code SOAMANAGER, log on and select the link Web Service Configuration.

    0000.jpg
  12. Search for your service name, in my case ZTEST. Press the Apply Selection button.
    010.JPG
  13. Choose Configurations tab below and choose the link Create.

    00000.JPG
    Set the Service Name, the Description, the Binding Name and press the button Apply Settings.
    011.JPG
  14. Scroll down and choose in Provider Security User ID/Password and Save your configuration.
    012.JPG
    013.JPG
  15. Choose the Overview tab and select the link Open WSDL document for selected binding or service.
    017.jpg
    A new browser window is opened, scroll down until address location tag. Here you find the URL of the web service.
    014.JPG
    Thats all to expose a RFC function module as WebService.


  16. Here now a complete request to call the WebService with the table USR01.

    POST /sap/bc/srt/rfc/sap/ztest2/001/ztest2/rfc_read_table HTTP/1.1
    Host: ABAP
    Accept: */*
    Authorization: Basic YmN1c2VyOm1pbmlzYXA=
    content-length: 428
    content-type: text/xml

    <?xml version="1.0" encoding="UTF-8"?>
    <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <env:Header/>
    <env:Body>
    <ns1:RFC_READ_TABLE xmlns:ns1="urn:sap-com:document:sap:rfc:functions">
    <DATA />
    <FIELDS />
    <OPTIONS />
    <QUERY_TABLE>USR01</QUERY_TABLE>
    </ns1:RFC_READ_TABLE>
    </env:Body>
    </env:Envelope>

    015.JPG
  17. Here now a JavaScript program to call WebService.

    <!doctype html>
    <html>

      <head>
        <title>Calling Web Service from jQuery</title>

        <script type="text/javascript" src="jquery.min.js"></script>

        <script type="text/javascript">
          $(document).ready(function () {
            $("#btnCallWebService").click(function (event) {
              var wsUrl = "http://ABAP:8080/sap/bc/srt/rfc/sap/ztest/001/ztest/rfc_read_table";
              var soapRequest = '<?xml version="1.0" encoding="UTF-8"?>' +
                '<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema">' +

                '<env:Body>' +
                '<ns1:RFC_READ_TABLE xmlns:ns1="urn:sap-com:document:sap:rfc:functions">' +
                '<DATA />' +
                '<FIELDS />' +
                '<OPTIONS />' +
                '<QUERY_TABLE>USR01</QUERY_TABLE>' +
                '</ns1:RFC_READ_TABLE>' +
                '</env:Body>' +
                '</env:Envelope>';
              $.ajax({
                type: "POST",
                url: wsUrl,
                contentType: "text/xml",
                dataType: "xml",
                headers: {
                  "Authorization": "Basic " + btoa("bcuser:minisap"),
                  "Accept": "*/*",
                  "Host": "ABAP"
                },
                data: soapRequest,
                success: processSuccess,
              });
                error: processError
            });
          });

          function processSuccess(data, status, req) {
            alert('success');
            if (status == "success")
              alert(req.responseText);
          }

          function processError(data, status, req) {
            alert(req.responseText + " " + status);
          }

        </script>

      </head>

      <body>
        <h3>
            Calling SAP Web Services via JavaScript with jQuery/AJAX
        </h3>
        <input id="btnCallWebService" value="Call web service" type="button" />
      </body>

    </html>

    016.jpg

With this knowledge it should be now not difficult to expose any RFC-enable function module as WebService and to use it inside your JavaScript program.

 

Enjoy it.

 

Cheers

Stefan

Lookup of alternativeServiceIdentifier via CPA-cache failed for channel

$
0
0

I know we are not new to error "Lookup of alternativeServiceIdentifier via CPA-cache failed for channel" issue in SCN .Many blogs and references are there I am sharing my experience with this error as encountered for first  time.This is my first blog in SCN too.

 

In my project we have  a standard Function function Module in SAP ECC system which communicates using RFC in SAP PI(7.1).

The  error I received in outbound queue of ECC system "Lookup of alternativeServiceIdentifier via CPA-cache failed for channel"



As per Error I followed the steps.

  • I monitored the sender RFC channel in SAP PI RWB.

          Channel was green.Hence no error with channel.

  • I checked corresponding RFC destination in SAP ECC system with same Program ID as mentioned in channel.

RFC connection test was also fine.

Then I thought might be cache issue

  • I performed full cache refresh.

http://host:50000/CPACache/refresh?mode=full

Still the the same error while executing program in sap ECC.


Now I referred SCN threads.

e.g. https://scn.sap.com/thread/175402

  • As per SCN I got an Idea that there can be Issue with the Business system so as per Instructions I deleted and recreated new business system with same name and appropriate details of Technical system pointing to correct ECC system.

I Imported business system in Integration Directory.

Activated the business system and performed the cache refresh.

This time I assumed error should not be there,but found that same error was  there.

In the meanwhile I created new channel and sender agreement but it also did not work

Now nothing was working my way.


Then I again opened RFC destinations(SM59) in ECC system  and checked the RFC destination with same Program ID as  in Sender channel of SAP PI.

In my current project landscape we have Development, Quality,Training , Pre-Production, and Production  environments.This error was in Training environment

While checking the host configuration of RFC destination I came to know that this particular RFC destination was pointing to Pre-Production environment.

 

I have shared this blog in future if any body comes across such issue while dealing with with multiple environments we could miss out such silly things to check out initial stage.

Viewing all 2548 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>