背景

最近MDG的项目,有个需求是通过接口传输过来的数据,修改Domain的域值(单值),需要通过ABAP代码实现

原理

通过调查和闻讯,得知函数组SDIF可以修改数据字典,包括修改域值、数据元素、结构、表&&视图、索引、搜索帮助等

我们使用到的函数如下

  • DDIF_DOMA_GET:获取域值的信息
  • DDIF_DOMA_PUT:修改域值的信息
  • DDIF_DOMA_ACTIVATE:激活不活动的域,用于修改后使用

示例代码

*&---------------------------------------------------------------------*
*&  场景:维护域值的多个版本描述
*&----------------------------------------------------------------------
form sub_after_save.data:ls_domain          type zmdgv_domain_i,lt_domain          type table of zmdgv_domain_i,ls_domain_head_zh  type  dd01v,ls_domain_head_en  type  dd01v,lt_domain_value_zh type table of dd07v,lt_domain_value_en type table of dd07v,ls_domain_value    type dd07v.loop at total assigning field-symbol(<fs_total>).clear ls_domain.ls_domain = <fs_total>.append ls_domain to lt_domain.endloop.sort lt_domain by zzdom_code.loop at lt_domain into ls_domain.at new zzdom_code.call function 'DDIF_DOMA_GET'exportingname          = conv ddobjname( ls_domain-zzdom_code )langu         = conv syst_langu( '1' )importing
*         GOTSTATE      =dd01v_wa      = ls_domain_head_zhtablesdd07v_tab     = lt_domain_value_zhexceptionsillegal_input = 1others        = 2.if sy-subrc <> 0.continue.endif.call function 'DDIF_DOMA_GET'exportingname          = conv ddobjname( ls_domain-zzdom_code )langu         = conv syst_langu( 'E' )importing
*         GOTSTATE      =dd01v_wa      = ls_domain_head_entablesdd07v_tab     = lt_domain_value_enexceptionsillegal_input = 1others        = 2.if sy-subrc <> 0.continue.endif.data(lv_zh_count) = conv i( lines( lt_domain_value_zh ) ).data(lv_en_count) = conv i( lines( lt_domain_value_en ) ).endat.if ls_domain-zzdel eq abap_true."域值已删除delete lt_domain_value_zh where domvalue_l eq ls_domain-zzdom_value.delete lt_domain_value_en where domvalue_l eq ls_domain-zzdom_value.else."中文描述read table lt_domain_value_zh into ls_domain_value with key domvalue_l = ls_domain-zzdom_valueddlanguage = '1' .if sy-subrc eq 0."修改ls_domain_value-ddtext = ls_domain-zzdom_t_cn.modify lt_domain_value_zh from ls_domain_value index sy-tabix.else."新增append initial line to lt_domain_value_zh assigning field-symbol(<fs_value>).<fs_value>-domname = ls_domain-zzdom_code.add 1 to lv_zh_count.<fs_value>-valpos = lv_zh_count.<fs_value>-domvalue_l = ls_domain-zzdom_value.<fs_value>-ddtext = ls_domain-zzdom_t_cn.<fs_value>-ddlanguage = '1'.endif."英文描述read table lt_domain_value_en into ls_domain_value with key domvalue_l = ls_domain-zzdom_valueddlanguage = 'E' .if sy-subrc eq 0.ls_domain_value-ddtext = ls_domain-zzdom_t_en.modify lt_domain_value_en from ls_domain_value  index sy-tabix..else.append initial line to lt_domain_value_en assigning <fs_value>.<fs_value>-domname = ls_domain-zzdom_code.add 1 to lv_en_count.<fs_value>-valpos = lv_en_count.<fs_value>-domvalue_l = ls_domain-zzdom_value.<fs_value>-ddtext = ls_domain-zzdom_t_en.<fs_value>-ddlanguage = 'E'.endif.endif.at end of zzdom_code.call function 'DDIF_DOMA_PUT'exportingname              = conv ddobjname( ls_domain-zzdom_code )dd01v_wa          = ls_domain_head_zhtablesdd07v_tab         = lt_domain_value_zhexceptionsdoma_not_found    = 1name_inconsistent = 2doma_inconsistent = 3put_failure       = 4put_refused       = 5others            = 6.if sy-subrc <> 0.continue.endif.call function 'DDIF_DOMA_PUT'exportingname              = conv ddobjname( ls_domain-zzdom_code )dd01v_wa          = ls_domain_head_entablesdd07v_tab         = lt_domain_value_enexceptionsdoma_not_found    = 1name_inconsistent = 2doma_inconsistent = 3put_failure       = 4put_refused       = 5others            = 6.if sy-subrc <> 0.continue.endif.call function 'DDIF_DOMA_ACTIVATE'exportingname        = conv ddobjname( ls_domain-zzdom_code )exceptionsnot_found   = 1put_failure = 2others      = 3.if sy-subrc <> 0.continue.endif.endat.endloop.endform.

ABAP修改Domain域值相关推荐

  1. 在程序中设置infopath中的整型等域值时出错解决方法

    最近一直和infopath表单打交道,碰到的问题也比较多,刚刚就碰到一个在程序中修改infopath表单中域的内容时出错的问题,写出来与大家共享一下,我想这个问题,可能玩infopath的话,迟早会碰 ...

  2. 转载非原创:修改BB 的内容,回车后修改CC 的值

    原文 http://blog.csdn.net/iamah/article/details/8438981 修改BB 的内容,回车后修改CC 的值 步骤: 1. 注册类为对类CL_GUI_ALV_GR ...

  3. 修改数组的值和多维数组排序

    foreach($ret as $key => $value) { //将数组元素中为空地补0,且添加sum元素的计算,注意修改数组的值,需要$key定位到是数组的哪一个地方需要修改,而不能简单 ...

  4. VUE项目中使用this.$forceUpdate();解决页面v-for中修改item属性值后页面v-if不改变的问题

    VUE项目中使用this.$forceUpdate();解决页面v-for中修改item属性值后页面v-if不改变的问题 参考文章: (1)VUE项目中使用this.$forceUpdate();解决 ...

  5. 学习旧岛小程序 (5) observer 函数中修改属性的值

    不要在一个属性的 observer  函数中修改属性的值 不然会造成内存泄露 错误代码: properties: {/* 期刊号 */index: {type: String,observer: fu ...

  6. 为什么不使用volatile,其它线程也能得到当前线程修改后的值,不使用volatile也不存在可见性问题?原来解决可见性问题不一定需要volatile,println也可以

    1. 为什么不使用volatile,其它线程也能得到变量修改后的值 实验代码分析: ①初始变量a=true,b=false: ②一个线程判断a或者b是否被改为相应逻辑,如果是,那么输出信息. ③修改a ...

  7. C# 【无法修改XX返回值,因为它不是变量】

    C# [无法修改XX返回值,因为它不是变量] using UnityEngine; using System.Collections; using System.Xml.Linq; using Uni ...

  8. SqlServer 增加字段,修改字段名,删除字段,修改字段默认值

    SqlServer 增加字段,修改字段名,删除字段,修改字段默认值 1:增加字段 语法:alter table 表名 add 新增字段名 字段类型 默认值- 2:修改字段名 语法:exec sp_re ...

  9. java反射设置属性值_Java反射如何有效的修改final属性值详解

    前言 以前写过一篇 Java 反射修改 final 属性值,本文将在这里重新温习一下Java反射如何有效的修改final属性值,下面话不多说了,来一起看看详细的介绍: 假设有个类 class Pers ...

最新文章

  1. Android studio 下 JNI 开发实例
  2. MySQL 深入浅出索引(上)
  3. Linux监控命令之==netstat
  4. HashSet与HashMap源代码深度剖析
  5. java wait方法_java wait方法
  6. IOS swift项目的单例模式.swift5以后的单例模式
  7. 怎么查看地址值_西门子S7-200 SMART PID回路控制,配置PID向导,查看项目组件
  8. linux 装windows软件,常用软件的安装(windows/linux)
  9. WingIDE中文乱码问题解决方法
  10. java反射机制中的getDeclaredField()
  11. 四则运算、数字与等式(数字游戏)
  12. Openlayer:学习笔记之图标与提示信息
  13. 计算机设计大赛作品开发文档
  14. 2021-07-13
  15. 如何删除双系统中的Linux系统
  16. 家用台式电脑计算机上的硬磁盘,台式电脑如何连接硬盘
  17. 如何用Mockplus快速做一个手风琴菜单?
  18. [vba]快速更新表格标题序号
  19. bilibili封面提取
  20. linux界面安装weblogic12c,Linux安装WebLogic12c

热门文章

  1. 总结moba游戏与皇室战争类游戏帧同步区别
  2. 解决input file上传图片,部分手机拍照或者本地图片无法上传(图片太大,需要上传之前先压缩)
  3. 黑客必读:蜜罐技术的前世今生
  4. Android车载学习笔记1——车载整体系统简介
  5. bem什么意思_bem
  6. 大地四边形类设计C++代码
  7. 《JS高级程序设计》第二遍读书笔记
  8. 两大开源平台、九个捐赠项目,走进百度开源的2020
  9. 一棵用JAVASCRIPT实现的可无限扩展的树
  10. 零售业转型升级,这三种模式如何选择?