使用简单的Java代码在SAP C4C里创建销售订单
需要创建的销售订单的明细通过硬编码指定:
比如销售订单的描述为Jerry Test 2019-1-23 16:05PM
执行之后,看到Status Code 201,说明创建成功:

到UI上能看到成功创建的销售订单:
实现代码:
package odata;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URI;
import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClientBuilder;
public class SimpleOrderCreator {
private final String SERVICEURL = "https://my5000jerry.c4c.saphybriscloud.cn/sap/c4c/odata/cust/v1/zjerrysalesorder/CustomerQuoteCollection";
HttpClient m_httpClient;
private HttpClient getHttpClient() {
if (this.m_httpClient == null) {
this.m_httpClient = HttpClientBuilder.create().build();
}
return this.m_httpClient;
}
private String getCSRFToken(){
final HttpGet get = new HttpGet(SERVICEURL);
get.setHeader("Authorization", "Basic 0FOR0pFUlJZMTpTYXB0ZXN0MQ==");
get.setHeader("x-csrf-token", "fetch");
HttpHost proxy = new HttpHost("proxy.sha.sap.corp", 8080, "http");
RequestConfig config = RequestConfig.custom().setProxy(proxy).build();
get.setConfig(config);
HttpResponse response;
String token = null;
try {
response = getHttpClient().execute(get);
/*Header[] header = response.getAllHeaders();
for( int i =0; i < header.length; i++){
System.out.println("Header: " + header[i].getValue());
}*/
token = response.getFirstHeader("x-csrf-token").getValue();
System.out.println("token: " + token);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException | UnsupportedOperationException e) {
e.printStackTrace();
}
return token;
}
private void createSO(String token,String body) {
final HttpPost post = new HttpPost(
URI.create(SERVICEURL));
post.setHeader("Authorization",
"Basic 0FOR0pFUlJZMTpTYXB0ZXN0MQ==");
post.setHeader("Content-Type", "application/json");
post.setHeader("X-CSRF-Token", token);
HttpEntity entity = null;
try {
entity = new StringEntity(body);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
post.setEntity(entity);
HttpResponse response = null;
try {
response = getHttpClient().execute(post);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Response statusCode for Batch => "
+ response.getStatusLine().getStatusCode());
}
public static void main(String[] args) {
SimpleOrderCreator tool = new SimpleOrderCreator();
String token = tool.getCSRFToken();
String body = "{" +
"\"Name\": \"Jerry Test 2019-1-23 16:05PM\"," +
"\"TypeCode\": \"2059\"," +
"\"BuyerID\":\"ee\"," +
"\"PartyID\":\"60102\", " +
"\"CustomerQuoteText\":[{" +
"\"Text\": \"test comment by Jerry Wang\", " +
"\"TypeCode\": \"10024\"" +
"}]," +
"\"CustomerQuoteItem\":[{ " +
"\"ProductID\": \"1042416\"" +
"}]," +
"\"CustomerQuoteItemProposal\":[{" +
"\"ProductUUID\": \"00163E72-09C6-1EE8-BBDC-AC5F0CB0D795\"," +
"\"Quantity\": \"1\"," +
"\"unitCode\": \"EA\"" +
"}]" +
"}";
tool.createSO(token, body);
}
}
要获取更多Jerry的原创文章,请关注公众号"汪子熙":

使用简单的Java代码在SAP C4C里创建销售订单的更多相关文章
- 使用nodejs代码在SAP C4C里创建Individual customer
需求:使用nodejs代码在SAP Cloud for Customer里创建Individual customer实例. 代码: var createAndBind = require('../je ...
- 在SAP C4C里触发SAP ERP的ATP check和Credit check
在C4C里创建一个新的Sales Quote: 添加三个行项目: 执行action "Request External Pricing"会从ERP更新pricing信息,触发ATP ...
- SAP SD如何将销售订单其它ITEM加入到一个已创建好的交货单里
SAP SD如何将销售订单其它ITEM加入到一个已创建好的交货单里 如下的销售订单,有多个ITEM, 为其中的第一个ITEM创建了DN 80016362, 如果业务发现需要修改该交货单,将销售订单里的 ...
- 【SD系列】SAP 创建销售订单-用外部给号的方法步骤
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[SD系列]SAP 创建销售订单-用外部给号的方 ...
- 如何用Java代码在SAP Marketing Cloud里创建contact数据
我们可以使用SAP Marketing Cloud提供的Contact create OData API在第三方应用里创建Contact主数据. API地址:/sap/opu/odata/sap/CU ...
- 如何在SAP C4C里使用ABSL消费第三方Restful API
首先我们得有一个可以正常工作的Restful API: 然后在Cloud for Customer的Cloud Application Studio里创建Restful API的模型,把第一步可以正常 ...
- SAP Cloud for Customer销售订单External Note的建模细节
SAP Cloud for Customer的销售订单创建页面里,我们可以给一个订单维护External Note,当这个订单同步到S/4HANA生成对应的生产订单后,这个note可以作为备注提示生产 ...
- 如何用SAP Cloud for Customer的手机App创建销售订单
第一次启动App,设置一个初始化的pin code: 输入C4C tenant的url,用户名和密码: 登录进系统后,找到Sales Order工作中心: 可以看到系统里很多已有的销售订单了.点击屏幕 ...
- SAP C4C里如何实现Sales Unit和Seller的自动determination
先看一个效果,我录了一个视频,发布在视频网站上,大家可以先看看SAP Cloud for Customer里启用了partner 自动determination后的效果. 在SAP Cloud for ...
随机推荐
- android中The connection to adb is down,问题和解决
android中The connection to adb is down,问题和解决 自己总结的在android中常会出现的不好解决的问题和方法(其中第三个方法经过了四天的折磨.....哎) 1 ...
- css3画半圆
border-radius制作半圆与制作圆形的方法是一样的,只是元素的宽度与圆角方位要配合一致,不同的宽度和高度比例,以及圆角方位,可以制作上半圆.下半圆.左半圆和右半圆效果.例如:.semicirc ...
- Java ConcurrentModificationException异常原因和解决方法(转)
摘自:http://www.cnblogs.com/dolphin0520/p/3933551.html#undefined 在前面一篇文章中提到,对Vector.ArrayList在迭代的时候如果同 ...
- [转]OData/WebApi
本文转自:https://github.com/OData/WebApi/tree/vNext OData Web API Introduction OData Web API (i.e., ASP. ...
- Eclipse 工具栏无法移动的解决办法
升级到Juno后发现工具栏有些乱 而且无法拖动,试了下http://blog.csdn.net/cxx504659987/article/details/38532599的方法 发现配置文件里没有文中 ...
- webpack使用extract-text-webpack-plugin打包时提示错误Use Chunks.groupsIterable and filter by instanceof Entryp
转自:https://blog.csdn.net/gezilan/article/details/80020417 前提条件: 当前时间是2018年4月20日. webpack的最新版本为是 v4.6 ...
- mysql主从复制测试
mysql主从复制测试: 1. 配置主服务器:在主库上面添加复制账号GRANT REPLICATION SLAVE on *.* to 'mark'@'%' identified by 'mark' ...
- [javaEE] 开源数据库连接池
一些开源组织提供了数据源的独立实现: DBCP数据库连接池 C3P0数据库连接池 Apache Tomcat内置的连接池 DBCP连接池 apache提供的连接池实现,需要导入common-dbcp. ...
- springboot集成邮件服务
一.前言 Spring Email 抽象的核心是 MailSender 接口,MailSender 的实现能够把 Email 发送给邮件服务器,由邮件服务器实现邮件发送的功能. Spring 自带了一 ...
- java温故而知新(9)OOP(面向对象编程)理念
Object Oriented Programming (面向对象的程序设计) 1.定义 面向对象程序设计(OOP)的具体定义很难下,也很容易因此而引起争论,在 Object-Orie ...