问题:

SAP  abap

SRM java  调webservice 不通,

CIS java  这边的webservice 可以通,

WHY?

key:
请求头,
系统框架的问题,

LF:因为请求头的问题吧
CX:请求头有什么差别?  LF:r3发出来的请求,header里面很复杂 ;大概不符合srm的要求,
        这个最开始是 波哥调某个系统的时候出现的,
 
 我搞不清楚为啥会出现,而且其他sap开发人员做接口不会出现这个问题吗,之前一直想找到原因,但还是因为不够执著,且能力也有欠缺未能成功find reason ,
 可能是某些系统框架的问题,
 

abap 《-》java 还是听便利的,从技术角度很多都可行,

 

FUNCTION ZMLSCP1_FR0008.
*"----------------------------------------------------------------------
*"*"本地接口:
*" IMPORTING
*" VALUE(I_EBELN) TYPE EBELN OPTIONAL
*" VALUE(I_MATNR) TYPE MATNR OPTIONAL
*" EXPORTING
*" VALUE(O_STATU) TYPE CHAR1
*" VALUE(O_MSG) TYPE CHAR255
*" TABLES
*" OT_RESOURCE STRUCTURE ZSRM_RESOURCE
*"----------------------------------------------------------------------
*&Flag -手动; -自动
DATA:L_TABIX TYPE SY-TABIX.
DATA:LV_FLAG TYPE C.
DATA:LV_CON TYPE STRING.
DATA: ERROR TYPE REF TO CX_AI_SYSTEM_FAULT.
DATA: PRXY TYPE REF TO ZCO_REQUEST_IMATNR_RESOURCE_SE."Proxy Name
DATA: Z_IN TYPE ZREQUEST8. "request in
DATA: Z_OUT TYPE ZRESPONSE8."request out
DATA: O_CX TYPE REF TO CX_ROOT.
DATA: O_ERROR TYPE REF TO CX_ST_ERROR.
TYPES:BEGIN OF TY_RE,
BACKUP1 TYPE STRING,"备用字段1
BACKUP2 TYPE STRING,"备用字段2
BACKUP3 TYPE STRING,"备用字段3
BACKUP4 TYPE STRING,"备用字段4
BACKUP5 TYPE STRING,"备用字段5
EBELN TYPE STRING,"采购订单号
EBELP TYPE STRING,"采购订单行项目号
LIFNRAMOUNT TYPE STRING, "供应商库存数量
MAKTX TYPE STRING, "物料描述
MATNR TYPE STRING, "物料代码
PROAMOUNT TYPE STRING, "生产数量
STOREAMOUNT TYPE STRING, "线边仓库存数量
* PRODATE TYPE DATUM, "生产日期
END OF TY_RE.
DATA:GT_RE TYPE STANDARD TABLE OF TY_RE,
WA_RE LIKE LINE OF GT_RE. *&job user
IF SY-UNAME EQ ''.
LV_FLAG = ''.
ELSE.
LV_FLAG = ''.
ENDIF. CONCATENATE '<in0>' LV_FLAG '</in0>' '<in1>' I_EBELN '</in1>' '<in2>' I_MATNR '</in2>' INTO LV_CON. *&s1.call proxy get data via cis
* Z_IN-REQUEST_DATA = '<?xml version="1.0" encoding="UTF-8"?><handleIMatnrResourceService><in0>' && LV_FLAG && '</in0></handleIMatnrResourceService>'.
CONCATENATE '<?xml version="1.0" encoding="UTF-8"?><handleIMatnrResourceService>' LV_CON '</handleIMatnrResourceService>' INTO Z_IN-REQUEST_DATA.
CLEAR ERROR.
TRY.
CREATE OBJECT PRXY
EXPORTING
LOGICAL_PORT_NAME = 'ZMLSCP_GET_RESOURCE'.
CALL METHOD PRXY->REQUEST
EXPORTING
INPUT = Z_IN
IMPORTING
OUTPUT = Z_OUT.
CATCH CX_AI_SYSTEM_FAULT INTO ERROR.
O_STATU = 'E'.
O_MSG = ERROR->ERRORTEXT.
RETURN.
ENDTRY. *&1.1 is it ok?
IF Z_OUT-RETURN_CODE = 'E'.
O_STATU = 'E'.
O_MSG = Z_OUT-RETURN_DESC.
* RETURN.
ENDIF. * for test:
IF Z_OUT-RETURN_DATA IS INITIAL.
CONCATENATE
'<?xml version="1.0" encoding="UTF-8"?>' '<handleIMatnrResourceServiceResponse><out>'
'<MLMatnrResource><backup1/><backup2/><backup3/><backup4/><backup5/><ebeln>4800064316</ebeln><ebelp>00010</ebelp><lifnrAmount/><maktx>A级冰箱型号标贴_C0414.6-1(A</maktx>'
'<matnr>000000000800013563</matnr><proAmount/><storeAmount>12.0</storeAmount></MLMatnrResource>' '<MLMatnrResource><backup1/><backup2/><backup3/><backup4/><backup5/><ebeln>4800064316</ebeln><ebelp>00020</ebelp><lifnrAmount/><maktx>A级冰箱型号标贴_C0414.6-1(A</maktx>'
'<matnr>000000000800013563</matnr><proAmount/><storeAmount>12.0</storeAmount></MLMatnrResource>' '<MLMatnrResource><backup1/><backup2/><backup3/><backup4/><backup5/><ebeln>4800064317</ebeln><ebelp>00010</ebelp><lifnrAmount/><maktx>A级冰箱型号标贴_C0414.6-1(A</maktx>'
'<matnr>000000000800013563</matnr><proAmount/><storeAmount>12.0</storeAmount></MLMatnrResource>' '</out></handleIMatnrResourceServiceResponse>' INTO Z_OUT-RETURN_DATA .
ENDIF.
*&s2.transfer XML
IF Z_OUT-RETURN_DATA IS NOT INITIAL."业务系统返回报文不为空
TRY .
CLEAR:GT_RE,WA_RE.
CALL TRANSFORMATION ZML_XML_TRANS02"ZML_XML_RESOURCE
SOURCE XML Z_OUT-RETURN_DATA
RESULT MLMATNRRESOURCE = GT_RE."OT_RESOURCE[]
IF SY-SUBRC NE .
O_STATU = 'E'.
O_MSG = 'XML解析失败!'.
RETURN.
ENDIF.
CATCH CX_ST_ERROR INTO O_ERROR .
O_STATU = 'E'.
O_MSG = O_ERROR->GET_TEXT( ) .
ENDTRY.
ELSE.
O_STATU = 'E'.
O_MSG = '返回结果为空!'.
ENDIF. *&s3.data save to ZSRM_RESOURCE
LOOP AT GT_RE INTO WA_RE.
MOVE-CORRESPONDING WA_RE TO OT_RESOURCE.
OT_RESOURCE-ZDATUM = SY-DATUM.
OT_RESOURCE-ZCPUTM = SY-UZEIT.
OT_RESOURCE-USNAM = SY-UNAME.
OT_RESOURCE-ZFLAG = LV_FLAG.
APPEND OT_RESOURCE.
* MODIFY GT_RE FROM WA_RE.
* CLEAR WA_RE.
ENDLOOP.
* TRY
CHECK OT_RESOURCE[] IS NOT INITIAL.
MODIFY ZSRM_RESOURCE FROM TABLE OT_RESOURCE.
IF SY-SUBRC EQ .
COMMIT WORK AND WAIT .
DESCRIBE TABLE OT_RESOURCE LINES L_TABIX.
O_STATU = 'S'.
O_MSG = '成功存入ZSRM_RESOURCE' && L_TABIX && '条记录!'.
ELSE.
ROLLBACK WORK.
O_STATU = 'E'.
O_MSG = '数据存入 ZSRM_RESOURCE表失败!'.
ENDIF. ENDFUNCTION.

20170401 ABAP调用CIS webservice的更多相关文章

  1. 20170326 ABAP调用外部webservice实例

    调用外部webservice 使用Tcode: SICF SPROXSET      设置创建proxy 的权限 SE80 SOAMANAGER 一.目的:调用外部SRM系统的 webservice: ...

  2. 20170326 ABAP调用外部webservice 问题

    1.SE80 创建企业服务: 代理生成:出现错误 库处理程序中出现例外 错误的值:未知类型参考ns1:ArrayOfMLMatnrResource 尝试: 一.测试本地文件:---无效 1. 将网址链 ...

  3. ABAP调用外部WebService

    TCode:se80 选择 Package,输入我们自己的开发包,后回车 右击 开发包名称,选择菜单 出现创建向导窗体 选择"Service Consumer",点击 继续 选择& ...

  4. ABAP调用WebService时日期类型问题

    在使用ABAP调用WebService时, 提示CX_SY_CONVERSION_NO_DATE_TIME,意思是日期格式不能转化. 究其原因是ABAP里没有相应的数据类型与WebService描述里 ...

  5. java调用CXF WebService接口的两种方式

    通过http://localhost:7002/card/services/HelloWorld?wsdl访问到xml如下,说明接口写对了. 2.静态调用 // 创建WebService客户端代理工厂 ...

  6. java获取https网站证书,附带调用https:webservice接口

    一.java 获取https网站证书: 1.创建一个java工程,新建InstallCert类,将以下代码复制进去 package com; import java.io.BufferedReader ...

  7. JQuery的Ajax使用Get,Post方法调用C#WebService并返回数据

    本文将介绍jQuery调用基于.NET Framework 3.5的WebService返回JSON数据,另外还要介绍一下用jQuery调用WebService的参数设置及设置不当所出现的问题,还有出 ...

  8. Java调用.Net WebService参数为空解决办法 (远程)调试webservice方法 转

    Java调用.Net WebService参数为空解决办法 (远程)调试webservice方法   同事遇到一个很囧的问题,java调,netwebservice的时候,调用无参数方法成功,调用有参 ...

  9. JAVA调用.NET WebService终极方案(包含对SoapHeader的处理)

    一.前言:      今日部门的产品需要用到短信功能,需要走公司统一的接口,而该短信接口是由.net开发的,利用两天时间彻底搞定了用java来调用.net 的web service,包括对soap h ...

随机推荐

  1. waterfall.js

    jq-waterfall是一款仿Pinterest网站的响应式无限动态加载图片瀑布流特效jQuery插件.该瀑布流特效使用ajax调用来动态加载图片,达到无限加载的效果.它使用简单,兼容性好,值得推荐 ...

  2. ROW模式的SQL无法正常同步的问题总结

    转自:http://blog.chinaunix.net/uid-20639775-id-4664792.html#_Toc29623 ROW模式的SQL无法正常同步的问题总结 一. 问题起因.... ...

  3. oracle命令登录数据库

    sqlplus aa/aa@jdbc:oracle:thin:@10.200.130.111:1521:nbact 或者 sqlplus aa/aa@nbact

  4. Yarn源码分析之MRAppMaster上MapReduce作业处理总流程(二)

    本文继<Yarn源码分析之MRAppMaster上MapReduce作业处理总流程(一)>,接着讲述MapReduce作业在MRAppMaster上处理总流程,继上篇讲到作业初始化之后的作 ...

  5. 华为HiAI 助力苏宁易购,让你尽享完美视觉购物体验!

    还在感慨商品照片与实物存在差距,又要退货? 还在抱怨被忽视的图片小细节,影响了生活品质? 想要“买买买”, 又担心海量的商品图片耗光你的流量? 就在近期 搭载HiAI能力的苏宁易购新版上线, 让你畅快 ...

  6. ORACLE函数之日期时间转换函数

     1.          TO_CHAR 语法:TO_CHAR(X [,format]) 说明:将X按format格式转换成字符串.X是一个日期或者数字.format是一个规定了X採用何种格式转换 ...

  7. es6中顶层对象属性≠全局属性

    先思考一下下面代码的输出结果是什么 const a = { x:1, fn:()=>this.x+=1 } const x = 1 a.fn() console.log(a.x,x) 正确答案为 ...

  8. boot2docker里报"no space left on device" error的解决方法

    docker中pull远程image时:报 no space left on device virtualbox中调大虚拟内存即可.. 之前调的硬盘大小...

  9. css 使图片紧贴底部显示

    img{ display: table-cell; vertical-align: bottom; }

  10. awk特征相同行的合并

    [root@linux-node1 ~]# cat test.txt hisk01 hisk02 hisk03 hisk04 hisk05 hisk06 hisk07 hisk08 [root@lin ...