惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
美团技术团队
Last Week in AI
Last Week in AI
WordPress大学
WordPress大学
博客园 - 三生石上(FineUI控件)
博客园 - 聂微东
雷峰网
雷峰网
阮一峰的网络日志
阮一峰的网络日志
博客园 - 叶小钗
IT之家
IT之家
Google DeepMind News
Google DeepMind News
D
Docker
J
Java Code Geeks
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - 【当耐特】
V
V2EX
Hugging Face - Blog
Hugging Face - Blog
博客园 - Franky
月光博客
月光博客
宝玉的分享
宝玉的分享
酷 壳 – CoolShell
酷 壳 – CoolShell
aimingoo的专栏
aimingoo的专栏
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - seven1314pp

SAP ABAP SQL COALESCE 函数是用于处理 NULL 值的一种功能 SAP ABAP 从一个程序调用另外一个程序的perform XXX(另一个程序) SAP ABAP 创建后台job SAP ABAP 客制表-表格维护器-自动带出描述等 SAP ABAP 选择屏幕按钮在同一行 SAP ABAP 一个通用的ALV框架(值得收藏) SAP ABAP SQL CASE 套 CASE SAP ABAP ALV 布局 SAP ABAP开发技巧-ALV报表通过函数获取结构或表字段写入FIELDCAT SAP ABAP财务开发必备ABAP语法之 DO VARYING abap 分割字符串 ABAP 读取其他ALV的显示结果 SAP 会计凭证字段可以更改 SAP ABAP弹出对对话框错误信息设计 SAP ABAP 部分增强点 [ABAP] ABAP 三类内表 PYTHON 简单的网页图片爬虫 财务凭证生成过程中增强技术 SAP BTE增强 ABAP FB02 修改会计凭证的抬头文本/行项目文本的函数 ABAP ALV 单元格按钮 SAP日志表 CDHDR和CDPOS SAP abap外部断点 abap screen页签开发注意事项 abap screen表格控件后续增加栏位
SAP ABAP json字段名映射 name_mappings 大写 小写 驼峰 纵深...
seven1314pp · 2026-07-16 · via 博客园 - seven1314pp
*&---------------------------------------------------------------------*
*& Report ZDZ011
*& ABAP JSON 字段名映射 name_mappings 大写 小写 驼峰 纵深 /ui2/cl_json
*& https://answers.sap.com/questions/5319934/modify-hashed-table.html
*&---------------------------------------------------------------------*
REPORT  zdz011 NO STANDARD PAGE HEADING.
TABLES: spfli.

TYPES:
  BEGIN OF detail,
    carrid TYPE spfli-carrid,
    connid TYPE spfli-connid,
    fltype TYPE spfli-fltype,
    period TYPE spfli-period,
  END OF detail.

TYPES: details TYPE STANDARD TABLE OF detail WITH NON-UNIQUE KEY carrid connid.

TYPES: BEGIN OF jdata,
         carrid   TYPE spfli-carrid,
         connid   TYPE spfli-connid,
         cityto   TYPE spfli-cityto,
         airpto   TYPE spfli-airpto,
         fltime   TYPE spfli-fltime,
         deptime  TYPE spfli-deptime,
         arrtime  TYPE spfli-arrtime,
         distance TYPE spfli-distance,
         distid   TYPE spfli-distid,
         value    TYPE co2_string_tb,
         details  TYPE details,
       END OF jdata.

DATA: lw_jdata TYPE jdata,
      lt_jdata TYPE HASHED TABLE OF jdata WITH UNIQUE KEY carrid connid.

DATA: lw_details TYPE detail,
      lt_details TYPE HASHED TABLE OF detail WITH UNIQUE KEY carrid connid.

TYPES: BEGIN OF name_mapping,
         abap TYPE abap_compname,
         json TYPE string,
       END OF name_mapping.

DATA: lw_name_mapping TYPE name_mapping,
      name_mappings   TYPE HASHED TABLE OF name_mapping WITH UNIQUE KEY abap.

DATA: lv_compress         TYPE char1,
      lv_name             TYPE string,
      lv_pretty_name      TYPE char1,
      lo_type_descr       TYPE REF TO cl_abap_typedescr,
      lv_assoc_arrays     TYPE char1,
      lv_ts_as_iso8601    TYPE char1,
      lv_expand_includes  TYPE char1,
      lv_assoc_arrays_opt TYPE char1,
      lv_numc_as_string   TYPE char1,
      lt_name_mappings    LIKE name_mappings,
      lv_conversion_exits TYPE char1.

DATA: lv_jsonstr  TYPE string,
      lv_jsonxstr TYPE xstring.

TYPES:
  BEGIN OF t_s_symbol,
    header       TYPE string,
    name         TYPE string,
    type         TYPE REF TO cl_abap_datadescr,
    value        TYPE REF TO data,
    convexit_out TYPE string,
    convexit_in  TYPE string,
    compressable TYPE abap_bool,
    read_only    TYPE abap_bool,
  END OF t_s_symbol.

TYPES: t_t_symbol TYPE STANDARD TABLE OF t_s_symbol WITH DEFAULT KEY.

SELECTION-SCREEN BEGIN OF BLOCK b101 WITH FRAME TITLE TEXT-101.
SELECT-OPTIONS: s_carrid FOR spfli-carrid,
                s_connid FOR spfli-connid.
SELECTION-SCREEN END OF BLOCK b101.

INITIALIZATION.

START-OF-SELECTION.

  SELECT *
  INTO CORRESPONDING FIELDS OF TABLE lt_jdata
  FROM  spfli
  WHERE spfli~carrid IN s_carrid
  AND   spfli~connid IN s_connid.

  SORT lt_jdata BY carrid connid.


  SELECT *
  INTO CORRESPONDING FIELDS OF TABLE lt_details
  FROM  spfli
  WHERE spfli~carrid IN s_carrid
  AND   spfli~connid IN s_connid.

  SORT lt_details BY carrid connid.


  LOOP AT lt_jdata INTO lw_jdata.
    lw_details-carrid = 'AZ'.
    lw_details-connid = '0555'.
    APPEND 'value1' TO lw_jdata-value.
    APPEND 'Value2' TO lw_jdata-value.
    APPEND lw_details TO lw_jdata-details.
    MODIFY TABLE lt_jdata FROM lw_jdata.
  ENDLOOP.

  ULINE.

  LOOP AT lt_jdata INTO lw_jdata.
    WRITE:/ lw_jdata-cityto, lw_jdata-deptime, lw_jdata-distid, lw_jdata-fltime.
  ENDLOOP.

  lw_name_mapping-abap = 'CARRID'.
  lw_name_mapping-json = 'Carrid'. "
  INSERT lw_name_mapping INTO TABLE lt_name_mappings.
  lw_name_mapping-abap = 'CITYTO'.
  lw_name_mapping-json = 'CityTo'. "CityTo
  INSERT lw_name_mapping INTO TABLE lt_name_mappings.

  lw_name_mapping-abap = 'DEPTIME'.
  lw_name_mapping-json = '__depTime'.
  INSERT lw_name_mapping INTO TABLE lt_name_mappings.

  lw_name_mapping-abap = 'DISTID'.
  lw_name_mapping-json = 'dist ID'.
  INSERT lw_name_mapping INTO TABLE lt_name_mappings.

  lw_name_mapping-abap = 'FLTIME'.
  lw_name_mapping-json = 'fltime时间'.
  INSERT lw_name_mapping INTO TABLE lt_name_mappings.

  CALL METHOD /ui2/cl_json=>serialize
    EXPORTING
      data             = lt_jdata
      compress         = lv_compress
      name             = lv_name
      pretty_name      = lv_pretty_name
      type_descr       = lo_type_descr
      assoc_arrays     = lv_assoc_arrays
      ts_as_iso8601    = lv_ts_as_iso8601
      expand_includes  = lv_expand_includes
      assoc_arrays_opt = lv_assoc_arrays_opt
      numc_as_string   = lv_numc_as_string
      name_mappings    = lt_name_mappings
*     conversion_exits = lv_conversion_exits
    RECEIVING
      r_json           = lv_jsonstr.

  ULINE.

  WRITE:/ lv_jsonstr.
  cl_demo_output=>new(
  )->write_json( lv_jsonstr
  )->display( ).

  REFRESH: lt_jdata.
  CALL METHOD /ui2/cl_json=>deserialize
    EXPORTING
      json             = lv_jsonstr
      jsonx            = lv_jsonxstr
      pretty_name      = lv_pretty_name
      assoc_arrays     = lv_assoc_arrays
      assoc_arrays_opt = lv_assoc_arrays_opt
      name_mappings    = lt_name_mappings
*     conversion_exits = lv_conversion_exits
    CHANGING
      data             = lt_jdata.

  ULINE.

  LOOP AT lt_jdata INTO lw_jdata.
    WRITE:/ lw_jdata-cityto, lw_jdata-deptime, lw_jdata-distid, lw_jdata-fltime.
  ENDLOOP.