我创建了一个带有用户属性的表“users”……
然而,我想有一个复杂的/嵌套的字段称为“地址”,但似乎表只能在abap字典表平面…我只能使用“.INCLUDE”将地址字段平铺到表中,对吗?
我只是想知道,我如何在ABAP REPORT程序中解析我的复杂JSON用户对象,并将它们插入到我的DDict表中...
REPORT zzzfz_ins_users.
*TYPES: ty_coord TYPE TABLE OF dec015 WITH NON-UNIQUE DEFAULT KEY.
TYPES: BEGIN OF address,
country TYPE char30,
county TYPE char30,
city TYPE char50,
streetAddress TYPE string,
latitude TYPE dec015,
longitude TYPE dec015,
zipcode TYPE int4,
END OF address.
TYPES: BEGIN OF ls_user,
mandt TYPE mandt,
id TYPE num05_kk2,
uuid TYPE sysuuid_c36,
firstName TYPE char30,
lastName TYPE char30,
fullName TYPE char50,
gender TYPE char10,
username TYPE char30,
email TYPE ad_smtpadr,
avatar TYPE string,
password TYPE char50,
birthdate TYPE char10,
registeredAt TYPE char30,
phone TYPE char30,
jobTitle TYPE char50,
jobType TYPE char30,
profileInfo TYPE string,
address TYPE address,
* country TYPE address-city,
* county TYPE address-county,
* city TYPE address-city,
* streetAddress TYPE address-streetaddress,
* latitude TYPE address-latitude,
* longitude TYPE address-longitude,
* zipcode TYPE address-zipcode,
* maybe TYPE char30,
END OF ls_user.
DATA lt_user TYPE STANDARD TABLE OF ls_user WITH NON-UNIQUE DEFAULT KEY.
DATA lv_dauer TYPE i.
*TYPES user_table TYPE STANDARD TABLE OF ls_user WITH NON-UNIQUE DEFAULT KEY.
DATA wa_user TYPE ls_user.
DATA(lv_json) =
`[{"id":1,"uuid":"3423e00f-b5c2-4f2c-bf88-baceca11c5f4","firstName":"Isabel",...}]
* JSON -> ABAP (iTab)
/ui2/cl_json=>deserialize(
EXPORTING
json = lv_json
* jsonx =
pretty_name = /ui2/cl_json=>pretty_mode-camel_case
* assoc_arrays =
* assoc_arrays_opt =
* name_mappings =
* conversion_exits =
* hex_as_base64 =
CHANGING
data = lt_user
).
*cl_demo_output=>write_data( lv_json ).
cl_demo_output=>write_data( lt_user[ 4 ] ).
*
cl_demo_output=>write_data( lt_user[ 5 ]-jobtitle ).
cl_demo_output=>display( lt_user[ 6 ]-profileinfo ).
*
DELETE FROM zalm_fs_users.
*
GET RUN TIME FIELD lv_dauer.
*
*
*INSERT zalm_fs_users FROM TABLE lt_user. "ACCEPTING DUPLICATE KEYS.
*
DATA: zalm_local_user TYPE zalm_fs_users.
*LOOP AT lt_user into DATA(lv_user).
* zalm_local_user-avatar = lv_user-avatar.
** INSERT zalm_fs_todos from lv_user. "Loop in Workarea
*ENDLOOP.
**
** loop at lt_todo assigning <fs_todo>. "Loop mit Field-Symbol
** INSERT zalm_fs_todos from <fs_todo>.
**endloop.
*
*
GET RUN TIME FIELD lv_dauer.
WRITE lv_dauer.
在debug中,它将地址字段显示为嵌套对象:
并且输出在打印出来时显示“kind of”嵌套内部表类型地址:
在SEGW中,似乎也存在“复杂类型”类型,这是一个没有主键的对象/结构,可以插入到另一个结构(或表?,对此不确定)...现在如何将嵌套的typeds插入到users表中?还是不可能,所以我必须再次展平我的结构?
顺便说一句,我在SEGW中创建的“实体类型”与ddict表类型不同吗?因为我假设实体类型(或实体的示例)以某种方式存储在实体表中。它们与DDIC表是不同的概念吗?我通常也通过从ddict表导入来创建实体类型。所以我想知道
1条答案
按热度按时间wljmcqd81#
我找到了问题的答案。(已经有一段时间了,忘记了这个线程;))。因此,要寻址DDIC物理表上的工作区内部表中包含的命名“地址”结构类型。在DDIC表中有一个列“GROUP”,在那里你可以给予你的包含一个“组名”。因此在这种情况下,当您将数据插入DDIC表时,它可以被识别为命名结构“地址”类型。