在ABAP的设计过程中经常会出现账务期输入,格式为年月。如果我们使用spmon元素为参考,但是系统无输入帮助,用户常常出错,为了避免输入错误。我们可以自定义输入帮助,步骤如下:

1、定义选择变量

parameter p_spmon  type spmon default sy-datum+0(6) obligatory.
    select-options s_spmon for s031-spmon default sy-datum+0(6) obligatory.

2、定义帮助子过程

form  monat_f4.
      data: begin of mf_dynpfields occurs 1.
              include structure dynpread.
      data: end   of mf_dynpfields.
      data: mf_returncode   like sy-subrc,
            mf_monat        like isellist-month,
            mf_hlp_repid    like sy-repid.
      field-symbols: <mf_feld>.

get cursor field mf_dynpfields-fieldname.
      append mf_dynpfields.
      mf_hlp_repid = sy-repid.
      do 2 times.
        call function 'DYNP_VALUES_READ'
             exporting
                  dyname               = mf_hlp_repid
                  dynumb               = sy-dynnr
             tables
                  dynpfields           = mf_dynpfields
             exceptions
                  invalid_ABAPworkarea = 01
                  invalid_dynprofield  = 02
                  invalid_dynproname   = 03
                  invalid_dynpronummer = 04
                  invalid_request      = 05
                  no_fielddescription  = 06
                  undefind_error       = 07.
        if sy-subrc = 3.
          mf_hlp_repid = 'SAPLALDB'.
        else.
          read table mf_dynpfields index 1.
          translate mf_dynpfields-fieldvalue using '_ '.
          exit.
        endif.
      enddo.
      if sy-subrc = 0.
        call function 'CONVERSION_EXIT_PERI_INPUT'
             exporting
                  input  = mf_dynpfields-fieldvalue
             importing
                  output = mf_monat
             exceptions
                  error_message = 1.
        if mf_monat is initial.
          mf_monat = sy-datlo(6).
        endif.
        call function 'POPUP_TO_SELECT_MONTH'
             exporting
                  actual_month               = mf_monat
             importing
                  selected_month             = mf_monat
                  return_code                = mf_returncode
             exceptions
                  factory_calendar_not_found = 01
                  holiday_calendar_not_found = 02
                  month_not_found            = 03.
        if sy-subrc = 0 and mf_returncode = 0.
          call function 'CONVERSION_EXIT_PERI_OUTPUT'
               exporting
                    input  =  mf_monat
               importing
                    output =  mf_dynpfields-fieldvalue.
          collect mf_dynpfields.
          call function 'DYNP_VALUES_UPDATE'
               exporting
                    dyname               = mf_hlp_repid
                    dynumb               = sy-dynnr
             tables
                    dynpfields           = mf_dynpfields
               exceptions
                    invalid_ABAPworkarea = 01
                    invalid_dynprofield  = 02
                    invalid_dynproname   = 03
                    invalid_dynpronummer = 04
                    invalid_request      = 05
                    no_fielddescription  = 06
                    undefind_error       = 07. 
        endif.
      endif.
    endform.                               "MONAT_F4

3、定义输入帮助事件

at selection-screen on value-request for p_spmon.
      perform monat_f4.
    at selection-screen on value-request for s_spmon-low.
      perform monat_f4.
    at selection-screen on value-request for s_spmon-high.
      perform monat_f4.

ABAP实例:如何生成年月的输入帮助相关推荐

  1. ABAP实例:一个现金流量表的代码

    ABAP实例:一个现金流量表的代码 * program SOURCE HEADER  : 现金流量表      * Program Name:      * Description:      * D ...

  2. 01基于HLS的加速器Overlay设计实例 - 快速生成硬件IP

    可进qq群进行相关Verilog知识交流:1073030956 基于HLS的加速器Overlay设计实例 – 快速生成硬件IP 介绍 本章节介绍了HLS的基本操作流程,你将熟悉HLS工程的创建.仿真. ...

  3. java生成验证码实例_Java生成验证码功能实例代码

    页面上输入验证码是比较常见的一个功能,实现起来也很简单.给大家写一个简单的生成验证码的示例程序,需要的朋友可以借鉴一下. 闲话少续,直接上代码.代码中的注释很详细. package com.SM_te ...

  4. ABAP实例之ALV

    *&-----------------------* *& Report  ZLG_ALV                                                ...

  5. ABAP文档生成工具

    本文介绍的工具原理和JavaDoc类似,位于software component BBPCRM 1. 在ABAP类里新建一个名为CLASS_DOCU的私有方法. 然后把所有的注释写在这个方法源代码的前 ...

  6. shell脚本执行php文件_分享两个shell脚本实例--批量生成随机字符文件名和批量改名...

    概述 在计算机科学中,for循环(英语:for loop)是一种编程语言的迭代陈述,能够让程式码反复的执行. 它跟其他的循环,如while循环,最大的不同,是它拥有一个循环计数器,或是循环变数.这使得 ...

  7. python生成动态二维码实例_python生成动态个性二维码(示例代码)

    1 安装工具 2 生成普通二维码 3 带图片的二维码 4 动态 GIF 二维码 5 在Python程序中使用 一.安装 首先在python环境下运行, 打开cmd进入python27 进入script ...

  8. 将实例的生成交给子类——工厂方法模式

    工厂方法模式(Factory Method),定义一个用于创建对象的接口,让子类决定实例化哪一个类.工厂方法使一个类的实例化延迟到子类. 工厂方法实现时,由客户端决定实例化哪个工厂来实现具体的产品类, ...

  9. 19.猜数字的游戏:随机生成数字与输入数字进行比较

    编程题目: 19.设计一个猜数字的游戏.数字为50-150之间的一个整数,由程序随机生成,程序使用者在键盘上输入数字,程序将输入的数字与被猜的数字作比较,给使用者提示信息(输入数字比被猜的的数字小,提 ...

最新文章

  1. 2022-2028年中国塑料安瓿瓶行业市场研究及前瞻分析报告
  2. 华为VC首次出手:投资2家半导体公司,带火5G建材“碳化硅”
  3. element-ui + redis + mongo + nuxt
  4. sublime使用笔记
  5. AT4513-[AGC030D]InversionSum【dp】
  6. java activemq jmx_通过JMX 获取Activemq 队列信息
  7. bootstrap .navbar-header 控制button隐藏/显示
  8. 串口转WIFI的工作方式理解
  9. 常见算法的英文命名(排序、查找)
  10. 2010年计算机专业考研大纲解析
  11. 如何查找qq邮箱的服务器地址
  12. linux scp密码参数,linux-scp不输入密码 - 不断的前进ING。。。 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
  13. GL-Currencies-Rates-Daily:Error:APP-FND-01206: This record already exists-文档 ID 292731.1
  14. linux 内存耗尽重启,【server故障】linux下JVM内存耗尽故障
  15. matlab寻找频谱峰值,matlab – 从数据中获取FFT峰值
  16. Minecraft 1.19.2 Forge模组开发 05.矿石生成
  17. 如何给女朋友解释为什么200M宽带,打王者荣耀还是会有460ms的延迟?
  18. java热敏打印机_用java在POS热敏打印机上打印PDF或PNG
  19. el-input-number 失去焦点blur事件,
  20. python夯实基础日记-函数详解

热门文章

  1. 阿里云宣布 Serverless 容器服务 弹性容器实例 ECI 正式商业化
  2. 让TP5.0在SWOOLE上飞起来
  3. 招募技术合伙人(H5混合开发+秒开流应用)
  4. Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111)解决方法
  5. [Array]Pascal's Triangle II
  6. Linux工具快速上手,Linux很实用命令
  7. 浅淡绿萝2.0和星火计划
  8. 90后80后70后60后和50后的无奈
  9. Redux vs Mobx系列(-):immutable vs mutable
  10. 《JavaScript忍者秘籍》——导读