点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家好,
我正在构建将s4hana与外部Web服务集成在一起的应用程序,例如。 ariba的成功因素。 因此,我们的s4hana abap正在使用基于python的rest api。 在将主体参数传递给rest api调用时,我正在将字符串结构序列化为json格式,这将被我们的rest api接受。 例如,
body_in_string:
" Attribute1":" Value1",
" Attribute2":" Value2",
" Attribute3":[{" Sub-attri1":" Name1"},[{" Sub-attri2":" Name2"},[{" Sub-attri3":" Name3"},[{" Sub -attri4":" Name4"},[{" Sub-attri5":" Name5"},[{" Sub-attri6":" Name6"},[{" Sub-attri7":" Name7"},[{ " Sub-attri8":" Name8"},[{" Sub-attri9":" Name9"},[{" Sub-attri10":" Name10"}],
" Attribute4":" Value4",
" Attribute5":" Value5",
" Attribute6":" Value6",
" Attribute7":" Value7"
我正在使用
/ui2/cl_json =>序列化(data = body_in_string compress = abap_false pretty_name =/ui2/cl_json => pretty_mode-camel_case)。
将上述字符串序列化为json格式
{" Attribute1":" Value1",
" Attribute2":" Value2",
" Attribute3":[{" Sub-attri1":" Name1"},[{" Sub-attri2":" Name2"},[{" Sub-attri3":" Name3"},[{" Sub -attri4":" Name4"},[{" Sub-attri5":" Name5"},[{" Sub-attri6":" Name6"},[{" Sub-attri7":" Name7"},[{ " Sub-attri8":" Name8"},[{" Sub-attri9":" Name9"},[{" Sub-attri10":" Name10"}],
" Attribute4":" Value4",
" Attribute5":" Value5",
" Attribute6":" Value6",
" Attribute7":" Value7"}
/ui2/cl_json序列化程序仅将字符串序列化为json,最多255个字符,其余部分被截断。 我也尝试过-
数据lo_json_writer类型参考cl_sxml_string_writer。
lo_json_writer = cl_sxml_string_writer => create(type = if_sxml => co_xt_json)。
呼叫转换ID
源正文= body_in_string
结果XML lo_json_writer。 >
也尝试过
数据lr_json_serializer类型参考cl_trex_json_serializer。
创建对象lr_json_serializer
导出
data = body_in_string。
lr_json_serializer-> serialize()。
lv_body = lr_json_ser。/p>
所有选项都将body_in_string上面的255个字符后的字符串值截断为json序列化。
请帮助!。
"我已验证调试器中的错误,因为在将字符串se11结构序列化为json后,我得到了截断的值。"
抱歉,但是您选择了正确的显示 调试中的变量? 选择显示内容时,可以选择显示类型,例如下面的图像中的显示:
Manisha Madhwani 什么是内部表?
嗨Manisha,
我认为要理解当前的问题,是您用来将数据传递给序列化方法的abap类型。我不知道您的body_to_string变量是什么"类型",但是我想这有一个 最多255个字符的限制,导致在将变量值传递给序列化程序时中断该变量值。建议使用像Sandra这样的字符串表是一个很好的选择,长度超过255个字符的自定义数据类型也将有所帮助
亲切的问候
您
内部表sap_t_dc_ec_req。 请找到示例代码段。
数据lv_body TYPE字符串。
数据sap_v_len TYPE i。
TYPES:ty_request的开始,
attribute1 TYPE字符串,
attribute2 TYPE字符串,
attribute3 TYPE ztt_fields,
attribute4 TYPE字符串,
attribute5 TYPE字符串,
attribute6 TYPE字符串,
ty_request的结尾。
数据:sap_s_dc_ec_req TYPE ty_request,
sap_t_dc_ec_req TYPE STAND。 br>
ls_fields-field ='DUMMY'。
ls_fields-attribute = NAME'。
将ls_fields附加到lt_fields。
ls_fields-field ='DUMMY'。
ls_fields- 属性='NAME2'。
附加ls_fields到lt_fields。
ls_fields-field ='DUMMY'。
ls_fields-attribute ='NAME3'。
附加ls_fields到lt_fields。
* &&& ---为Rest api调用准备请求参数---
sap_s_dc_ec_req-attribute1 ='127.0.0.1'。
sap_s_dc_ec_req-attribute2 = sy-uname。
sap_s_dc_ec_req-attribute6 =' 420EEE10A8A00041EE9BAEE6CBF223D5CC9'。
sap_s_dc_ec_req-attribute4 ='DUMMY'。
sap_s_dc_ec_req-attribute3 [] = lt_fields []。
* &&& ---获取utc时间
sap_s_dc_ec_req-attribute5 ='2019-10-10T15:41:02Z'。
* &&&-移至表格< br> APPEND sap_s_dc_ec_req TO sap_t_dc_ec_req。
* &&&--创建并返回JSON主体请求以进行剩余调用---
TRY。
*选项3 ui2/json序列化器
嗨,桑德拉,
感谢您的回复。 将字符串结构传递给CALL TRANSFORMATION后,我得到的字符串仅包含255个字符。 我什至尝试通过将属性手动添加到json字符串(在调试器中)来编辑相同内容,而abap编辑器显示的错误是仅可传输255个字符。 如果您进一步需要任何信息来帮助我解决此问题,请告诉我。
谢谢
Manisha Madhwani
因此您得到了286个字符的字符串-问题是什么?
PS:以下是完整的可复制示例:
感谢您 Sandra Rossi 和 Raphael Pacheco
一周热门 更多>