Quantcast
Channel: SCN : Blog List - SAP Business ByDesign
Viewing all 245 articles
Browse latest View live

Connect Excel with SAP Business ByDesign using OData for Analytics

$
0
0

Using Microsoft Excel and SAP Business ByDesign OData for Analytics you can download analytical data from ByDesign systems and use the data for offline analysis in Excel.

 

This blog post describes how to connect to ByD systems using ByD OData for Analytics and native Excel capabilities as well as Microsoft PowerPivot.

 

Further information about ByD OData for Analytics:

OData for SAP Business ByDesign Analytics

 

Beyond the possibility to connect Excel with ByD as described in this blog post, ByDesign offers various possibilities to work with Excel incl.

  • open ByD reports in Excel using the ByD Add-in for MS Excel,
  • download ByD reports in Excel xml format,
  • download ByD reports and its underlying data sources in csv format,
  • and Excel Workbooks using the ByD Add-in for MS Excel

Furthermore ByD offers a URL schema to launch ByD reports as Excel Workbooks.


 

 

Steps to use ByD OData for Analytics as Data Source in Excel PowerPivot

 

Microsoft PowerPivot (PowerQuery) is a tools that can be used to join query results and other data.

Further information:

Introduction to Microsoft Power Query for Excel - Excel


  1. Create a data source in Excel using POWERPIVOT >> Manage
  2. On the PowerPivot popup select: Get External Data >> From Data Service >> From OData Data Feed:
    PowerPivot_1.jpg
  3. On the Import Wizard enter the Data Feed Url“:
    https://myXXXXXX.sapbydesign.com/sap/byd/odata/crm_customerinvoicing_analytics.svc/RPCRMCIVIB_MQ0001QueryResults
    Note:
    1. The wizard does not process the OData service file, but the data feed
    2. For large data sources use ByD OData parameter to select and filter ByD data. For example:
      myXXXXXX.sapbydesign.com/sap/byd/odata/crm_customerinvoicing_analytics.svc/RPCRMCIVIB_MQ0001QueryResults
      ?$top=...&$select=...&$filter=...
  4. Use buttom Advanced to enter the ByD credentials:
    PowerPivot_2.png
  5. Test the connection to ByD using buttom Test Connection

  6. Press buttom Next and select the Source Table:
    PowerPivot_3.jpg
  7. Use buttom Finish to extract the data from ByD ... done:
    PowerPivot_4.jpg

Now you can display and work with ByD data in PowerPivot:

PowerPivot_5.jpg




Steps to use ByD OData for Analytics as Data Source in Excel


  1. Create a data source in Excel using DATA >> From Other Sources >> From OData Data Feed:
    Excel_1.png
  2. On the Data Connection Wizard enter the OData data feed URL and the ByD logon credentials:
    Excel_2.jpg
    Example OData URL:
    https://myXXXXXX.sapbydesign.com/sap/byd/odata/crm_customerinvoicing_analytics.svc/RPCRMCIVIB_MQ0001QueryResults
    Note:
    1. The wizard does not process the OData service file, but the data feed
    2. For large data sources use ByD OData parameter to select and filter ByD data. For example:
      my331895.sapbydesign.com/sap/byd/odata/crm_customerinvoicing_analytics.svc/RPCRMCIVIB_MQ0001QueryResults?$top=...&$select=...&$filter=...

  3. Press buttom Next and select the Source Table
  4. Press buttom Next and enter a data connection name, etc.
  5. Press buttom Finish
  6. Import the data … done:
    Excel_3.jpg


 

.


Linking Down payments with Supplier Invoices

$
0
0

Linking Down payment with Supplier Invoice


In some scenarios where we have made some advanced payments to the suppliers & want to link with the Supplier Invoices we will post further, you can perform this as:


  • Create NEW DOWNPAYMENT REQUESTfor your Advanced Payment.

      1.png

 

 

  • Enter Details like Supplier, Doc ID, Posting Dates, etc.


      2.png 
 


  • Add Line Items & enter description, Tax codes, Amount, G/L accounts, Cost centers, etc.


      3.png



  • Click POST, you will get notification that Down Payment Posted.


      4.png 
 


  • Go to Payables WoC & select Supplier Accounts.


      5.png

 

 

  • Find Supplier& click View.


      6.png
 

  • Select Down Payment & click Pay Manually by Outgoing Check.


      7.png



  • Enter details & POST.


      8.png 



  • Now Create New Invoice Without Purchase Order.


      9.png



  • Enter Details like Supplier, Doc ID, Posting dates, etc.


        10.png 
 


  • To add the Down Payment to the Supplier Invoice,

      Go to the PaymentInformationtab -->DownPayments-->AddRow.


      11.png



  • As you click on the Add Row button, you will get a new screen. Search& select your Down Payment here.


      12.png 
 

  • Add Line Item & enter Description, Tax codes, Amount, G/L account, Cost Center, etc.


        13.png



  • Post the invoice.

           
        14.png


  • Here, you can see that as you linked the Down Payment to the Supplier Invoice, the Invoice get Partially Cleared automatically & you have got a Clearing ID.


        15.png
 

     

  • You can see the details by clicking on Clearing ID.


      16.png




If You have further queries regarding this you can ask me.


Regards,

Anant Patel

SAP BYD FUNCTIONAL CONSULTANT

Phone: +91-9716100326

Email: anant3113@gmail.com

Skype: anant.3105

Using SAP ByDesign OData in Microsoft Power Query

$
0
0

Eine deutsche Version des Blogs ist hier verfügbar-.

 

In this blog I would like to give you a short overview about extended functionality of SAP Business ByDesign`s OData reporting feed.

 

In my opinion Microsoft Power Query is currently the most power full tool for creating dashboards for SAP Business ByDesign. Regarding this you can find here a step by step guide to get ByDesign OData feed working with Microsoft Power Query:

 

1. Searching for a report in SAP Business ByDesign, you want to use in Power Query

 

2. Get the technical name of the report (for example ZB68545FD12E4222BE8B904)

In Business Analytics report view add ID field via Personalize or open report and click in report on Details for Technical information:

 

Report view

1.jpg

 

Technical information

2.jpg

 

3. Open Microsoft Excel

 

4. Go to PowerQuery Tab

 

3.jpg

 

5. Click on Get from web

4.jpg

6. Insert report URL with specific oData parameters (for parameters see following blog post http://scn.sap.com/community/business-bydesign/blog/2015/03/10/odata-for-sap-business-bydesign-analytics of Knut Heusermann)

 

If single sign-on is configured in system you also have to add the following parameter to url: saml2=disabled

 

7. Chose Standard Authorization:

5.jpg

 

Example request for Sales order volume:

https://myXXXXXX.sapbydesign.com/sap/byd/odata/cc_home_analytics.svc/RPCRMSLOIB_Q0001QueryResults?$top=1000000&$format=json

(for structure of URL see also following blog post http://scn.sap.com/community/business-bydesign/blog/2015/03/10/odata-for-sap-business-bydesign-analytics of Knut Heusermann)

 

I would recommend to use JSON format because it is more performant as XML.

 

8. Now you can go ahead with configuration of your request

Example:

 

  • Define source stream as JSON by clicking on Option logo behind the source (on the right side):

6.jpg

7.jpg

 

  • Convert source to table

8.jpg

  • Split Value column

9.jpg

  • Split Value.results

10.jpg

  • Split Records (At this point you have to choose which Characteristics and Key Figures you would like to use)

11.jpg

9. Now you find on the right side the automatically generated steps from Power Query. You can modify all these steps by simple click on it (for example renaming).

12.jpg

10. You can also rename column headers, delete columns or modify data in columns (for example splitting by specific char) (Please find more information about Power Query possibilities in this blog http://blogs.msdn.com/b/powerbi/archive/2014/07/08/getting-started-with-excel-and-power-bi-series.aspx)

 

11. If you now use Save and Load Button, your Power Query Request loads data in default defined data model.

13.jpg

 

12. You can define in the Options if Power Query should load by default data in Excel table or directly in Power Pivot (https://msdn.microsoft.com/en-us/library/gg399183(v=sql.110).aspx)

14.jpg

 

13. Now you have data available in data model and you can work with it

15.jpg

16.jpg

ODATA queries: JSON and date format

$
0
0

this blog describes how to convert dates e.g. posting date of ODATA queries in JSON Format to a readable date.

 

General information for ODATA queries:

http://scn.sap.com/community/business-bydesign/blog/2015/10/02/connect-excel-with-sap-business-bydesign-using-odata-for-analytics

General Information for ODATA and Power Query:

http://scn.sap.com/community/business-bydesign/blog/2015/10/07/using-sap-bydesign-odata-in-microsoft-power-query

 

 

 

If you decide to request the data in JSON Format, you have several pros but at least one con:

Every date looks like: !'"§%&#

 

in real:

p1.png

 

But this problem is solved very quickly.

Just* copy this code to your editor and smile again

 

    #"date_converting1" = Table.ReplaceValue(<last process step>,Date(","",Replacer.ReplaceText,{"CPOSTING_DATE"}),

    #"date_converting2" = Table.ReplaceValue(#"date_converting1",")/","",Replacer.ReplaceText,{"CPOSTING_DATE"}),

    #"date_converting3" = Table.TransformColumnTypes(#"date_converting2",{{"CPOSTING_DATE", Int64.Type}}),

    #"date_converting4" = Table.AddColumn(#"date_converting3", "Posting Date", each #datetime(1970, 1, 1, 0, 0, 0) + #duration(0, 0, 0, [CPOSTING_DATE]/1000)),

    #"date_converting5" = Table.RemoveColumns(#"date_converting4",{"CPOSTING_DATE"})


*Please replace <last process step> with your last step e.g. #"results erweitern1" which is above your code now. Additionally your column name could be different, so please check it and replace the parts of “CPOSTING_DATE” with your column name.

And finally you get the result in your new column:

p2.png

Cloud Success: Array Technologies, When the Mission is Critical

$
0
0

ATI_Solar.pngNext week, SAP Business ByDesign users will travel to the Mirage Hotel & Casino in Las Vegas for a one-of-a-kind conference.  The SAP Business ByDesign Users Conference is three full days of training, collaboration, consulting, and networking opportunities to help users propel their cloud enterprise resource planning (ERP) software.  We hope you can join us to hear from top SAP ByDesign executives on development and what’s next for the business management solution.  To see if ByDesign is right for your company, discover how a solar manufacturer solved its supply chain challenges – and avoids costly fines – with the help of SAP Business ByDesign.

 

Demanding Customers

While some business processes are important, others are truly mission critical.  For instance, marketing is important.  But sales – the lifeblood of your company – is mission critical.  Important processes can be handled by ordinary software.  But when you need real-time data to power your most vital processes that calls for an ERP solution.  Case in point is Array Technologies, Inc. (ATI), the leading U.S.-based manufacturer of smart, cost-effective, reliable, and robust solar tracking and racking systems for homeowners and businesses.  But its most critical market is utility companies and these companies can be extremely demanding.  If ATI misses a delivery deadline, it can incur costly fines and penalties.  After all, ATI’s products are an integral part of a utility company’s solar array system. Any holdup in construction can be extremely costly.  That’s why ATI graduated from PeachTree software and implemented SAP Business ByDesign designed for midsize companies.

 

Better Logistics

ATI knew that the key to meeting the demands of its utility customers, was better management of logistics – especially for imported components with long lead times.  According to Jeff Sanders, Configuration Manager, “we chose SAP Business ByDesign for its supply chain features, its ease of use, its full range of capabilities, and its cloud-based platform.  “We have to make sure that we deliver our product on time,” he adds.  And SAP Business ByDesign, working with SAP Partner, Navigator has helped the company streamline its manufacturing, supply chain, and logistics processes to help ensure that products are delivered on schedule.

 

A More Accurate Picture

ATI also wanted to gain a more accurate picture of its financial position – in real time.  And today, SAP Business ByDesign enables Array to see its financial position on a daily basis, leading to better decisions on cash flow and capital deployment.

 

Rolling Out

ATI continues to roll out SAP Business ByDesign to more and more employees.  “The employees who use SAP Business ByDesign are generating business for us,” Sanders says, “and we’re growing faster and faster every day.”

 

What’s Your Mission?

Which processes are critical to your company’s mission? Are they functioning as they should, or do you find your company performing time-consuming workarounds?  As ATI illustrates, an ERP application can help your most important processes – and all your processes – operate more smoothly.  For the full story on Array Technologies, click here.

 

See you in Las Vegas!

Interactive Form for Sales Quote

$
0
0

1. Business Scenario

The existing business scenario is after the sales person created the sales quote in the system, the sales quote should be confirmed by the customer, so that the next process (ex. order) can proceed.

 

After the sales quote been created by the sales person, the sales person submit the sales quote, and the sales quote will automatically be send to the customer by the output settings. Usually the sales quote will be send by the PDF template.

 

The customer will receive the PDF file which contains the sales quote’s information, and the customer can check the sales quote is correct or not. If the customer not satisfied with this sales quote, and want to change it, the customer must communicate with the sales person offline (ex. mail or phone call), and then the sales person change the sales quote to the system and send the changed quote to the customer to confirm it again. After the customer confirmed the sales quote, the sales person can proceed the next process.

 

2. Problems and Solution

According the above business scenario introduction, we can see that the communication between the customer and sales person is offline, inefficient and inconvenient. And also if the customer send his/her feedback of the sales quote to sales person by E-mail or a phone call, the risk of misunderstanding is very high.

 

For these problems, we add an interactive form.  After we add an interactive form, the whole scenario will like this:

After the sales person submit the sales quote, the system will send an E-mail to the customer by the interactive form, the customer can directly change the sales quote on the interactive form, and then submit the interactive form. After the customer submit the interactive form, the sales quote’s responsible person will receive a BTM notification on the system, and also the changed sales quote will as an attachment to the BTM notification. The responsible person will open the BTM notification and check the attachment, the responsible person open the attachment and check the sales quote which been changed by the customer, and then the responsible person can update the changed quote to the system.

 

3. Advantages

The communication between the customer and sales person will be more efficient and convenient, and also the customer’s doubts for the sales quote will be simple and clear. And because there is a BTM notification been generated for the responsible person, so that the customer’s changes for the sales quote can be proceeded by the responsible person in time.


4. Details

Next is the details of the interactive form:

Create sales quote and change the output settings

1.jpg


Submit the sales quote

2.jpg


Customer receive the interactive form and do the changes on the interactive form

3.jpg

4.jpg


Customer submit the interactive form

5.jpg


After customer submit the interactive form, there is a BTM notification generated for the sales quote’s responsible person

6.jpg


The responsible person open the notification and check the attachment

7.jpg


Responsible person open the interactive form to update the sales quote to the system

8.jpg


Sales quote been updated

9.jpg

Depreciation Overview of a Fixed Assets starts Depreciation Calculation from Subsequent Period but the Depreciation Start Date is from Preceding Period

$
0
0

Hello All,

 

In this blog, we shall see the how logic of the depreciation calculation for a fixed asset is derived in the Depreciation Overview Screen

 

Issue: We you can see in the below screenshot that the depreciation start date is 01.10.2015 but the depreciation overview shows the calculation from period 011

 

faa.png

 

To know how system did this:

 

Step 1: You can open the help document 'Using Depreciation Methods' and Under 'Depreciation Methods — Pre-delivered per Country you can click on 'Country XYZ'

 

For every country there is a specific document for depreciation from which can know the 'Period Control Method'

 

perc.png

 

 

So, for this depreciation method, the Period Control Key is 003

 

Step 2: Look for help document 'Period Control Methods and Keys' and in this document  Under 'Period Control Method Tables' you can find for the period control method: 003


pcm1.png

 

 

So now for each transaction is assigned to a different 'Period Control Key' , you can compare what is that transaction you did for the acquisition of Asset, and in the above Asset , we used 'Transfer' of old asset to create/capitalize this Asset.


So, the Period Control Key Applicable is 02


Transfer = 02 ; under period control method 003

 

pcm2.png



This states that if the transaction was done before 15th of a current period then the Depreciation Calculation starts from current period, and if the transfer is done to acquire/capitalize a Fixed Asset after 15th of current period then the Depreciation Calculation starts from Next Period


pcm3.png


So, the same thing has happened in the above Fixed Asset : 104, Although the Depreciation Start Date shows as 01.10.2015, since the Asset is acquired based on Transfer - Receiving took place on 16.10.2015, the Depreciation Overview shows the calculation starts from period 100



Please drop in your comments/feedback, if you have any regarding this blog post.


Hope this helps  someone of you.


Note: The above screenshots are taken from our internal test system only


Thanks

Lokesh Sharma


How to Transport Custom Solution in C4C

$
0
0

In this blog i will try to explain on how to transport custom solution from one tenant to other tenant in C4C.Please correct me if missed anything. Lets get started.

 

Step-1 : Download the Solution

 

  1. Log on to Development Cloud Application Studio (CAS).

    delete.png

  2. Choose the solution from the Solution Explorer.

     2.png

3. Right Click on the solution in the Solution Explorer --> Add --> New Item.

      3.png

  4. In the Add New Item window, choose BAC Elements provide the name of the BAC Element and click on Add.

       4.png

   5. Provide all mandatory fields and click on Next.

         5.png

  6. In the next step, review the information provided and hit Finish.

     6.png


  7. After creating the BAC Elements. Activate the solution.

       7.png

  8. Right click on the solution and Check in All Files.

     8.png

9. Navigate to View --> Implementation Manager.

     9.png

10.  In the Implementation Manager, choose Assemble and Download.

     10.png

11. Solution will Locked and click on OK to continue.

     11.png

 

12. Choose the location in which you want to store the solution.

     12.png

13. Solution will be successfully downloaded.

 

Step-2 : Upload the Custom Solution in other Tenant

 

1. Navigate to View --> Implementation Manager.

      13.png

2. Click on Upload button to upload the solution. Choose the desktop location in which you have previously saved the solution.

3. Solution will successfully uploaded

4. Click on Activate button to activate the solution.

     2015-10-19_14-04-16.png



Query SAP Business ByDesign Web Services via Power Query

$
0
0

This is not first post about usage of Power Query Excel addin ("Get & Transform" functionality in Excel 2016) in scope of its integration with SAP Business ByDesign.
First was about Date format in JSON response
http://scn.sap.com/community/business-bydesign/blog/2015/10/07/odata-queries-json-and-date-format
Second - about general usage of Power Query to get reports though OData
http://scn.sap.com/community/business-bydesign/blog/2015/10/07/using-sap-bydesign-odata-in-microsoft-power-query

In my post I would like to share another experience - reading web services using Power Query.
Unfortunately, some very important information is not available in data sources, e.g. Accounts Relationships and Pricing Conditions (price lists, customer specific discount lists etc.). Hope someday we will get this in reports. However, currently, we can get this info only from

  • UI manually, almost impossible to do if you have X tenants and XXX customers with specific price lists
  • Web services - Jedi path, require knowledge and skills, or trustable tools, that can be checked

To our luck, with every new release we get more and more web services.

Basic idea of web service usage

  1. Make POST http request with XML
  2. Parse XML response

Firstly, we can make queries and test everything in SOAP UI. Just because it is easier to understand how web services work in SOAP UI examples. Following two posts help to get basic knowledge


Assume that you know how to create XML query in SOAP UI.
Now, step by step about PQ part.
I've started my journey from nice post of Chris Webb http://blog.crossjoin.co.uk/2014/04/19/web-services-and-post-requests-in-power-query/
Got basics of http POST request in M code (Power Query programming language)

WS_query = Web.Contents(

URL_ADDRESS,

[Content=Text.ToBinary(PostContents)]),


In our case with ByD, PostContents is equal to XML request.
Another good example from Curt Hagenlocher http://stackoverflow.com/questions/28361628/how-to-post-a-multipart-form-data-using-power-querys-web-contents

Let

actualUrl = "http://some.url",

record = [__rdxml="some data"],

body = Text.ToBinary(Uri.BuildQueryString(record)),

options = [Headers =[#"Content-type"="application/x-www-form-urlencoded"], Content=body],

result = Web.Contents(actualUrl, options)

in

result


This code sample shows, that second parameter of Web.Contents can be complex enough. In official documentation on MSDN you may full list of options for second parameter


For our web service request to ByD we need Headers, Content, and Timeout (in some cases, but be careful). Consider web service Query Accounts
After we make basic query in SOAP UI we have

  • Headers

  • XML query


I'm not a specialist in web technologies, so method of trial and errors revealed that important for request only following headers

  • Authorization
  • #"Content-Type" = "text/xml;charset=UTF-8",

Rest

  • SOAPAction - query works without it, but I'm not sure that it will work for other queries. So probably we will need it.
  • #"Connection" = "Keep-Alive" - suppose in some cases it is useful. Maybe someone can advise when use it and when omit?


Others - question for me. I decided exclude them from my queries.
Authorization looks not convenient for reading by humans. After playing around I found that it is in Base64 encoding and can be received in PQ by following code
Authorization = "Basic " & Binary.ToText(Text.ToBinary(Login & ":" & Password))
Typical content of query

"<?xml version=""1.0"" encoding=""UTF-8""?>

<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:glob=""http://sap.com/xi/SAPGlobal20/Global"">

<soapenv:Header/>

<soapenv:Body>

<glob:CustomerByIdentificationQuery_sync>

<CustomerSelectionByIdentification>

<SelectionByInternalID>

<InclusionExclusionCode>I</InclusionExclusionCode>

<IntervalBoundaryTypeCode>1</IntervalBoundaryTypeCode>

<LowerBoundaryInternalID>1111</LowerBoundaryInternalID>

</SelectionByInternalID>

</CustomerSelectionByIdentification>

<ProcessingConditions>

<QueryHitsUnlimitedIndicator>true</QueryHitsUnlimitedIndicator>

</ProcessingConditions>

</glob:CustomerByIdentificationQuery_sync>

</soapenv:Body>

</soapenv:Envelope>"


Looks pretty simple for one account. To get several accounts we have to repeat highlighted block with corresponding Account ID. So we need a list of

"<SelectionByInternalID><InclusionExclusionCode>I</InclusionExclusionCode><IntervalBoundaryTypeCode>1</IntervalBoundaryTypeCode><LowerBoundaryInternalID>" & AccountID & "</LowerBoundaryInternalID></SelectionByInternalID>")


Not a problem for PQ. Start from table ACCOUNTS, that contains list of Account IDs which data we want to get from web service.

Couple lines of code

Accounts = Table.ToList(Excel.CurrentWorkbook(){[Name="ACCOUNTS"]}[Content]),

Query_List = List.Transform(Accounts, each "<SelectionByInternalID><InclusionExclusionCode>I</InclusionExclusionCode><IntervalBoundaryTypeCode>1</IntervalBoundaryTypeCode><LowerBoundaryInternalID>" & _ & "</LowerBoundaryInternalID></SelectionByInternalID>")


Give us

Our resulting XML request is a string, long, long string. So list should be converted to text, to be able to join it to header and footer of XML.

Query_Text = Text.Combine(Query_List)

gives Text without delimiters. For XML it is doesn't matter. Less characters - less size. OK, we are ready to make full text of request in PQ:

Request_body = "<?xml version=""1.0"" encoding=""UTF-8""?>

<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:glob=""http://sap.com/xi/SAPGlobal20/Global"">

<soapenv:Header/>

<soapenv:Body>

<glob:CustomerByIdentificationQuery_sync>

<CustomerSelectionByIdentification>"

&

Query_Text

&

"</CustomerSelectionByIdentification>

<ProcessingConditions>

<QueryHitsUnlimitedIndicator>true</QueryHitsUnlimitedIndicator>

</ProcessingConditions>

</glob:CustomerByIdentificationQuery_sync>

</soapenv:Body>

</soapenv:Envelope>"

And finally, we can make a web request

WebService_query = Binary.Buffer(Web.Contents("https://my" & TenantId & ".sapbydesign.com/sap/bc/srt/scs/sap/querycustomerin1?sap-vhost=my" & TenantId & ".sapbydesign.com HTTP/1.1",

[Headers=[#"Content-Type" = "text/xml;charset=UTF-8",

#"Authorization" = Authorization ],

Content=Text.ToBinary( request_body )])),

URL we copy from SOAP UI, it is provided by WSDL file. I use Binary.Buffer to load result in memory to

  • avoid occasional additional queries of web service. Don't know if it is possible, but just in case
  • Make easier further work with data

We know that response of web service is XML. We are lucky, because in PQ it is very easy to parse XML, simply expanding nodes. Each XML subtree is a table object in PQ response


Open as XML


We got simple table


We need Body of response, so click on Table in Body row


No choice - click on Table


Again no choice - click on Table


Where is my data? Click on Table


Good, I bet, that data in Customer's row. Before drilldown to table we can select cell with Table and check data in preview area


We have two options here

  1. Table3{[Name="Customer"]}[Table]
  2. Filter + Remove column
    #"Filtered Rows2" = Table.SelectRows(Table3, each ([Name] = "Customer")),#"Removed Columns1" = Table.RemoveColumns(#"Filtered Rows2",{"Name"})


In 1st option Table auto-expands with full list of fields in it, that most probably not what we want. I went with 2nd option - left necessary table and then expand it manually, choosing fields that I need. Last steps in code view

#"Imported XML" = Xml.Tables(WebService_query),

Table = #"Imported XML"{1}[Table],

Table1 = Table{0}[Table],

Table2 = Table1{0}[Table],

Table3 = Table2{0}[Table],

#"Filtered Rows2" = Table.SelectRows(Table3, each ([Name] = "Customer")),

#"Removed Columns1" = Table.RemoveColumns(#"Filtered Rows2",{"Name"})


What I like in Power Query, is that I don't have to program all of this transformations. Development is much faster than with VBA or other programming language. PQ is desinged for work with data.
OK, Next step is to expand table, we can choose fields from menu easily.

 

Relationship is a sub-table itself

 

One more expand

 

Where CRMH02-2 - Is Ship-To Party Of BUR001-1 - Has Contact Person Great, we got relationships, that are not available in data sources for reports! Final code

let

GetListOfAccountsGeneralData = (Accounts as list) =>

let

TenantId = Number.ToText(Excel.CurrentWorkbook(){[Name="TENANT_ID"]}[Content]{0}[Column1]),

Login = Excel.CurrentWorkbook(){[Name="USERNAME"]}[Content]{0}[Column1],

Password = Excel.CurrentWorkbook(){[Name="PASSWORD"]}[Content]{0}[Column1],

Query_List = List.Transform(Accounts, each "<SelectionByInternalID><InclusionExclusionCode>I</InclusionExclusionCode><IntervalBoundaryTypeCode>1</IntervalBoundaryTypeCode><LowerBoundaryInternalID>" & _ & "</LowerBoundaryInternalID></SelectionByInternalID>"),

Query_Text = Text.Combine(Query_List),

request_body = "<?xml version=""1.0"" encoding=""UTF-8""?>

<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:glob=""http://sap.com/xi/SAPGlobal20/Global"">

<soapenv:Header/>

<soapenv:Body>

<glob:CustomerByIdentificationQuery_sync>

<CustomerSelectionByIdentification>"

&

Query_Text

&

"</CustomerSelectionByIdentification>                                               

<ProcessingConditions>

<QueryHitsUnlimitedIndicator>true</QueryHitsUnlimitedIndicator>

</ProcessingConditions>

</glob:CustomerByIdentificationQuery_sync>

</soapenv:Body>

</soapenv:Envelope>",

Authorization = "Basic " & Binary.ToText(Text.ToBinary(Login & ":" & Password)),

WebService_query = Binary.Buffer(Web.Contents("https://my" & TenantId & ".sapbydesign.com/sap/bc/srt/scs/sap/querycustomerin1?sap-vhost=my" & TenantId & ".sapbydesign.com HTTP/1.1",

[Headers=[#"Content-Type" = "text/xml;charset=UTF-8",

//                        #"SOAPAction" = "http://sap.com/xi/A1S/Global/QueryCustomerIn/FindByIdentificationRequest",

//                        #"Connection" = "Keep-Alive",

#"Authorization" = Authorization ],

Content=Text.ToBinary( request_body )])),

#"Imported XML" = Xml.Tables(WebService_query),

Table = #"Imported XML"{1}[Table],

Table1 = Table{0}[Table],

Table2 = Table1{0}[Table],

Table3 = Table2{0}[Table],

#"Filtered Rows2" = Table.SelectRows(Table3, each ([Name] = "Customer")),

#"Removed Columns1" = Table.RemoveColumns(#"Filtered Rows2",{"Name"})

in

#"Removed Columns1",

result = GetListOfAccountsGeneralData(Table.ToList(Excel.CurrentWorkbook(){[Name="ACCOUNTS"]}[Content])),

#"Expand Table" = Table.ExpandTableColumn(result, "Table", {"InternalID", "Relationship"}, {"InternalID", "Relationship"}),

#"Expanded Relationship" = Table.ExpandTableColumn(#"Expand Table", "Relationship", {"RelationshipBusinessPartnerInternalID", "RoleCode"}, {"RelationshipBusinessPartnerInternalID", "RoleCode"})

in

#"Expanded Relationship"



Reasonable question, what happen when we input 20k accounts? Of course, web services have limitation. They should not be used for reporting purpose. However, when data not available from reports - we have no choice. For large list of account we must use paging. There are two options

  1. Paging engine that is provided by web services
  2. "Manual Paging", or paging on client side

First option is not easy to implement. Therefore, I skip it. In my sample workbook you will find 2nd option. I called it "paging on client side". General idea is to divide initial requested list of objects on list of small lists, that contain default quantity of objects. Quantity, that be surely digested by web service, e.g. 500 accounts. When I came to this task Chris Webb released small but great post, which helped me to understand magic of List.Generate. Comments to this post are very useful as well. I tried to use Table.AddColumn before, passing parameters of query in tables rows, but Power Query makes request for all rows in one moment, therefore web service going crazy and gives same result for different rows. I couldn't find a way to make delay between rows when use Table.AddColumn. So, I came to requirement to make loop. In PQ this job is done by List.Generate Code, that will help you to make query for 20k accounts

let

Accounts = Table.ToList(Excel.CurrentWorkbook(){[Name="ACCOUNTS"]}[Content]),

Count = List.Count(Accounts),

Step = 500,

Steps = Number.RoundUp(Count / Step),

Delay = 1, // seconds

r = List.Buffer(

List.Skip(List.Generate(

() => [

i = 0,

Page = null

],

each [i] <= Steps,

each let

Accounts_List_To_Query = List.Range(Accounts, Step * [i], Step),

GetPage = (Accs as list) => GetListOfAccountsGeneralData(Accs)

in [

i = [i] + 1,

Page = Function.InvokeAfter(()=>GetPage(Accounts_List_To_Query), #duration(0,0,0, Delay))

],

each [Page]

)

)),

#"Table from List" = Table.FromList(r, Splitter.SplitByNothing(), null, null, ExtraValues.Error),

#"Expand Column1" = Table.ExpandTableColumn(#"Table from List", "Column1", {"Table"}, {"Table"}),

#"Expand Table" = Table.ExpandTableColumn(#"Expand Column1", "Table", {"InternalID", "Relationship"}, {"InternalID", "Relationship"}),

#"Expanded Relationship" = Table.ExpandTableColumn(#"Expand Table", "Relationship", {"RelationshipBusinessPartnerInternalID", "RoleCode"}, {"RelationshipBusinessPartnerInternalID", "RoleCode"})

in

#"Expanded Relationship"

 

Conclusion
We can make a simple workbook that pulls data from web service for provided list of accounts. Three parts of such workbook
I.

 

 

II.

 

 

III. Result

 

 

I'm sure, mentioned queries can be optimized, universalized for different web services (up to Expand part).

 

Downloads

 

You may download sample workbook from this link.


If interestred, more examples of Power Query usage you may find in my blog.

What's New in SAP Business ByDesign as of November 2015: Task Overview in Projects

$
0
0

In this blog, we'd like to introduce you to one of the things that are new or have been changed in the November 2015 version of SAP Business ByDesign.

 

Of course, you can find more information in the What's New in SAP Business ByDesign documentation, which is available online or as a pdf.

 

Today, we are going to talk about Task Overview in Projects.

 

You can now have an overview of the project tasks in Tasks Overview table under Projects in Project Management work center. It is also possible to create the project purchasing at the task level and the table in the details section will provide you further information on the services and materials planned for the selected task.

 

wn1.png

wn2.png

 

 

 

Are you familiar with the What's New Video in SAP Business ByDesign? You can have a look at it here


What's New in SAP Business ByDesign as of November 2015: Multi Step Approval (MSA) for Purchasing Contract Approval

$
0
0

In this blog, we'd like to introduce you to one of the things that are new or have been changed in the November 2015 version of SAP Business ByDesign.

 

Of course, you can find more information in the What's New in SAP Business ByDesign documentation, which is available online or as a pdf.

 

Today, we are going to talk about multi-step approval process for purchasing contract.

 

You can now define multi-step approval process with work distribution rules for purchasing contract. You can also set approval conditions of Buying Company and Supplier to define the set of rules. MSA for purchasing contract will contain several stages of approval. In multi-step approval process an approver is determined for each step at a time, that is, the approver for the first step is determined, and once the first step is approved, the approver for the next step is determined. With this enhancement, purchasing contract approval process will become much more flexible.


3.png2015-09-16_11-42-19.png


Are you familiar with the What's New Video in SAP Business ByDesign? You can have a look at it here



What's New in SAP Business ByDesign as of November 2015: Purchase Order Output Control for Updates on Ordered Purchase Order

$
0
0

In this blog, we'd like to introduce you to one of the things that are new or have been changed in the November 2015 version of SAP Business ByDesign.

 

Of course, you can find more information in the What's New in SAP Business ByDesign documentation, which is available online or as a pdf.


Today, we are going to talk about Purchase Order Output Control for Updates on Ordered Purchase Order.

 

Prior to this release, you did not have any control over trigger of purchase order output to supplier, if there were any changes done on ordered purchase order. It is now possible to define the attributes for which the updates on ordered purchase order will be sent to the supplier. Changes to ordered purchase order will be communicated to supplier, only if there is a change in the values of the attributes selected in Purchase Order Output Control Settings.

Attributes can be defined in Purchase Order Output Control Settings in Business Configuration fine tuning activity.


1.png

blogpost.png

Are you familiar with the What's New Video in SAP Business ByDesign? You can have a look at it here


What's New in SAP Business ByDesign as of November 2015: Automatic Renewal of Contracts

$
0
0

In this blog, we'd like to introduce you to one of the things that are new or have been changed in the November 2015 version of SAP Business ByDesign.

 

Of course, you can find more information in the What's New in SAP Business ByDesign documentation, which is available online or as a pdf.

 

Today, we are going to talk about automatic renewal of contracts.

 

Prior to this upgrade, renewal functionality in contracts had to be performed manually or via add on. Now you can automatically renew customer contracts .You can automatically renew contracts based on the conditions maintained under Maintain Renewal Rules in Renewal and Cancellation of Customer Contracts under Business Configuration work center. You can also create or delete renewal rules as per your business requirements. Once you specify a renewal rule and set it to active, it will be shown in the renewal rules in Contracts view.

 

autor1.png

 

autor2.png

 

Are you familiar with the What's New video in SAP Business ByDesign? You can have a look at it here


What's New in SAP Business ByDesign as of November 2015: Service Quotes

$
0
0

In this blog, we'd like to introduce you to one of the things that are new or have been changed in the November 2015 version of SAP Business ByDesign.

 

Of course, you can find more information in the What's New in SAP Business ByDesign documentation, which is available online or as a pdf.

 

Today, we are going to talk about service quotes.

 

You can now create service quotes for service and expense items in the Service Quotes view from both New Business and Service Orders work center. A service quote will enable you to capture the desired service requests before finalizing a service order. Thus, service quotes serve as a pre-processing step and you can create service orders from service quotes.

wn1.png

6.png

Are you familiar with the What's New Video in SAP Business ByDesign? You can have a look at it here


Support Overview for SAP ByD/C4C/C4TE customers and partners

$
0
0

SAP has hosted a session on September 30, 2015, in which it gave an overview on the SAP Support processes, roles and responsibilities for customers and partners using SAP Business ByDesign, SAP Cloud for Customer or SAP Cloud for Travel and Expenses. This is especially important for customers, who also have an SAP partner at their side.

 

Key takeaways are:

 

I)   Many customer questions are answered in:

a.       Product documentation (in the help center)

b.      Federated Search (in the help center)

c.       Recordings of Meet-The-Expert Sessions (available in SAP Enterprise Support Academy)

d.      SAP Community Network (SCN)

In order to get your questions answered quickly, please consult the above sources before opening an incident.

 

II)   The Support Interaction Partner/SAP follows these principles:

a.       SAP owns (supports and maintains) SAP code

b.      Partner owns (supports and maintains) Partner code

c.       SAP cannot change or maintain partner code

d.      SAP will engage with customer and partner, when required

III)    SAP requires from all development partners (partner develops code):

a.       Signed Support Agreements with Customer and SAP

b.      7 x 24 Support Contact – both email and phone

c.       7 x 24 Escalation Contact – both email and phone

d.      Partner has educated customers on partner support process, including how customer can contact partner for support

 

Within SAP the following incident management process applies:

 

image002.jpg

 

With this, we seek to provide industry leading support for our customers.

 

Please refer to the presentation for details: http://www.sdn.sap.com/irj/scn/index?rid=/library/uuid/7092678d-9558-3310-6584-e31bcee2406f&overridelayout=true

 

 

 


SAP Business ByDesign Partners, come and collaborate in our NEW Learning Room, exclusively for our SAP Partners

$
0
0

Everything you need to succeed with SAP Business ByDesign is now available on demand, enriched by real-time collaboration and social learning capabilities. Come and join our recently launched SAP Business ByDesign Learning Room in the SAP Learning Hub. Deepen your knowledge, interact with SAP subject matter experts and/or other partner individuals in forums, ask questions and get them answered quickly and accurately or attend virtual live sessions.


See for yourself. Request access to join our SAP Business ByDesign Learning Room here.


 

direct LR link on LH.jpg

 

  • Assign the learning room to yourself
  • After accepting the terms and conditions you will be granted access. An invite will be delivered to your e-Mail
  • Follow the instructions within the e-Mail to finalize your learning room membership
  • Go back into the SAP Learning Hub and check the notification bell in the upper right-hand corner of the page next to your name.

notification.png

 

  • Click to join
  • You now have access to the learning room. Let's start collaborating!

 

Should you have questions or need help, reach out to me directly: nadia.ritter@sap.com.

Business Configuration 'Purchase Order Output Control Settings'

$
0
0

In this blog I would like to introduce how business configuration 'Purchase Order Output Control Settings' Works.

 

Business Scenario

 

This business configuration use to control the Ordered Purchase Order Output. It available user control the purchase order output triggered or not while user changed an ordered purchase order, through setting available nodes and attributes involved.

Changes to ordered purchase order is communicated to supplier (via email, fax or post) only if there is a change in the values of the attributes that are selected below. You also need to take care of dependent attributes. For example, when you change quantity, it automatically leads to a change in net value and taxes at item and header. These settings will not be applicable in case ordered purchase order is updated and approval is triggered.

 

Available Control Nodes and Attributes

Available Nodes

Available Attributes

Header

Attachments

Extensions

Incoterms

Incoterms Location

Last Approved Net Value

Notes

Payment Terms

Total Net Value

Total tax amount

Header Parties

Bill To

Buyer Responsible
Company

Supplier

Item

Attachments

Delivery Date

Extensions

Gross Price

Invoice Expected

Net Price

Net Value

Notes

Purchasing Contract Reference
Purchase Order Acknowledgment Expected

Product Information

Quantity

Schedule Lines

Tax Information

Item Delivery Terms

Over-Delivery Tolerance

Under-Delivery Tolerance

Unlimited Over-Delivery

Item Parties

Product Recipient Party

Service Performer Party

Ship to location

 

For Example

  1. Purchase Order Output Control Settings via work center view Business Configuration->Overview, Find 'Purchase Order Output Control Settings' activity. Now you may see the screen below.11-6-2015 3-43-39 PM.png
  2. Switch to Node Header Parties, deactivate the Attribute Bill To, and Save it.
  3. Go to work center view Purchase Requests and Orders-> Purchase Orders, in the OWL view, choose an ordered purchase order, and edit it.
  4. In Output History tab, note the output document list before changes. We saw there is just one entry there. 11-6-2015 3-30-04 PM.png
  5. Change Bill-To data at General Tab, Click send update.11-6-2015 3-33-52 PM.png
  6. Since we have deactivate the Bill-To attribute in purchase order output control setting, the output will not be triggered.  So we can check the output history, compare with the output history noted before changes.11-6-2015 3-37-37 PM.png
  7. Otherwise, if we change any active attribute in Purchase Order Output Control Setting, the output should be triggered. So this time we change the Buyer Responsible which is active in Purchase Order, to check if the output is triggered.
  8. As we think, the purchase order output was triggered, so there will be one new entry in output history.11-6-2015 4-37-37 PM.png

Accruals for Other Expenses

$
0
0

Problem

At month end, an accountant might want to recognize expenses he has not yet received an supplier invoice for.

 

(Of course, for COGS, you can use the revenue recognition run as well to get COGS realized at the period of delivery. But this is not discussed here.)

 

Available Solutions

  1. GL Entry Voucher - The first possibility an accountant would think of. Do a posting like "debit: expenses, credit: accrued expenses or outstanding supplier invoices", and you are done. Disadvantage: No process integration, to be controlled fully manually. Don't forget to cancel the posting next month.
    Best practice recommendations:
    • Use the Journal Antry Voucher Type 00103 - Manual Posting - JEV with Offset Entry. This entry will be reversed automatically at a specified date, usualle you would do the posting at the close of the period and reverse (Offset Posting Date) by the first day of the next period.
    • Calculate each month from new. Don't post only the difference to the previous month, but reverse the former entry (as described above) and post the full amount each month.
    • Don't use another Journal Entry Voucher to cancel your posting. This might result in FX differences. Use the JEV with Offset Entry (see above) or just cancel your journal entry voucher you made for accruals. Clicking on Reverse, will ask you for the posting date. The reversal will be posted with exchange rates of the source posting.
  2. Purchase Order with Goods- and Service Acknowledgement: Even if you don't use purchasing processes, think about it at least for expenses you want to accrue. To do so, enter a purchase order. Then, enter a Goods and Service Receipt - either by using action New Goods and Services Receipt in the view Purchase Orders in Work Center Purchase Requests and Orders, or in Work Center Goods and Services Receipts. The release of this receipt will post the expenses - at the posting date given there.
    You should activate, at item level, Goods and Services Receipt Expected and Invoice Expected. At purchase order header level, evaluate to activate Prevent Output - you might not want to send this as an PO to the supplier.
    Best practice recommendations:
    • When entering the supplier invoice, use the proposal based on the purchase order.
    • Do the GR/IR clearing run (aka Goods Received - Invoice Received Clearing Run).

 

Any other solution I forgot? Please post it as a comment, would be great to share more options you have found in your daily work.

How to set Incoming Bank Transfer option in ByD

$
0
0

Hi everyone,

 

Could u tell me that how ByD can set options for incoming bank transfer as below picture, please?

 

incoming Bank Tranfer.jpg

 

Appreciate to help,

Swacch Bharat Cess legal change effective from 15th November 2015 < All ByD customers - India >

$
0
0

This notification and below mentioned manual action required by customers using country version < INDIA>


Background Information:


The Finance Ministry of India has published a legal notification on 6th November 2015 for a new tax Swacch Bharat Cessto be applicable on all taxable services effective 15th November 2015.

 

We have released an Emergency Correction for 1508 and 1511 releases to adapt the ByD system and compute the new tax in relevant transactions. However, the customer needs to perform some manual activity so that the new tax is computed correctly in all scenarios.

 

Affected Customers:


All ByD customers in India

 

Manual Action:


Yes

 


Setup the required account determination for the new tax Swacch Bharat Cess in the Business configuration.

 


  1. Go to work center Business Configuration.
  2. Go to Implementation Project view and select Fine-Tune activity.
  3. Select and open the activity Charts of Accounts, Financial Reporting Structures, Account Determination.(Please ensure that this activity is added to your project.)
  4. Under Account Determination, select the TAXsubledger
  5. Select your chart of accounts for India. Under Tax, for Input tax, Output tax and Tax Payables tabs, “Add row” and make entries for the new tax types-


16 – Swacch Bharat Cess

39 – Swacch Bharat Cess(Special)


For “Select Country”, choose India.

This setting will ensure that the new taxes are posted to the correct tax accounts.


Current Limitations and Workaround:


a) Limitation 1: For the Down-payment Requests that have been posted before 15th November, if the payment is made on/after 15th November 2015, the Swacch Bharat Cess is not calculated automatically. This is an issue and we will work to analyse and fix the same.

 

Workaround: You need to reverse the down-payment request and post it with date on/after 15th November. This will ensure that the payment will have the new tax Swacch Bharat Cess.

 

b) Limitation 2: If Invoice is posted before 15th November 2015 and credit memo is created on/after 15th November 2015, the credit memo document will have the Swacch Bharat Cess tax calculated. We will need to analyse this issue and provide a fix.

 

Workaround: You have to manually change the tax rate type to “Zero” for tax type “Swacch Bharat Cess”/ “Swacch Bharat Cess(Special)”.

 

 

Permanent Fix Availability:

For the permanent fix, Experts on this area are still doing their analysis and arrive at the solution.

 

Let me know in case you need further information

 

Thanks

Lokesh Sharma

Viewing all 245 articles
Browse latest View live


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