ABAP 一篇作业分享

目录

一:要件定义:

二,具体代码:

三,测试结果:


一:要件定义:

二,具体代码:

*&---------------------------------------------------------------------*
*& Report Z_LIU_20240701_TEST
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT Z_LIU_20240701_TEST.

DATA : GV_BUKRS TYPE BUKRS,                                "定义项目类型
       GV_BELNR TYPE BELNR_D,
       GV_GJAHR TYPE GJAHR,
       GV_BLART TYPE BLART,
       GV_BLDAT TYPE BLDAT,
       GV_BUDAT TYPE BUDAT,
       GV_LIFNR TYPE LIFNR,
       GV_LAND1 TYPE LAND1,
       GV_NAME1 TYPE NAME1,
       GV_PSTLZ TYPE PSTLZ.

SELECTION-SCREEN BEGIN OF BLOCK BK1 WITH FRAME TITLE TEXT-B01.  "做一个大框定义B01命名为:期間
  SELECTION-SCREEN BEGIN OF LINE.                                "放同一行里
    SELECTION-SCREEN COMMENT 1(20) TEXT-C01 FOR FIELD P_KIKANN.  "定义C01 命名レポート期間
    PARAMETERS P_KIKANN TYPE CHAR20 DEFAULT '対象の時間'.          "添加初始值:対象の時間
    SELECTION-SCREEN POSITION 55.                                 "从第55位开始
    SELECT-OPTIONS S_DATA FOR SY-DATLO.
  SELECTION-SCREEN END OF LINE.                                  "结束同一行
SELECTION-SCREEN END OF BLOCK BK1.

SELECTION-SCREEN BEGIN OF BLOCK BK2 WITH FRAME TITLE TEXT-B02.  "做一个大框定义B02命名为:选择选项
  SELECTION-SCREEN BEGIN OF LINE.                               "放同一行里
    SELECTION-SCREEN COMMENT 1(20) TEXT-C02 FOR FIELD RB_KAKE.  "定义C02 命名会計期間画面
    PARAMETERS RB_KAKE TYPE CHAR1 RADIOBUTTON GROUP GP1 USER-COMMAND US1 DEFAULT 'X'. "单选按钮 rb_kake
  SELECTION-SCREEN END OF LINE.                                 "结束同一行

  SELECTION-SCREEN BEGIN OF LINE.                               "放同一行里
    SELECTION-SCREEN COMMENT 1(20) TEXT-C03 FOR FIELD RB_SIRE.  "定义C03 命名仕入先画面
    PARAMETERS RB_SIRE TYPE CHAR1 RADIOBUTTON GROUP GP1.        "单选按钮 rb_sire
  SELECTION-SCREEN END OF LINE.                                 "结束同一行
SELECTION-SCREEN END OF BLOCK BK2.

SELECTION-SCREEN BEGIN OF BLOCK BK3 WITH FRAME TITLE TEXT-B03.  "做一个大框定义B02命名为:選択基準

  SELECT-OPTIONS : S_BUKRS FOR GV_BUKRS MODIF ID ET1,
                   S_BELNR FOR GV_BELNR MODIF ID ET1,
                   S_GJAHR FOR GV_GJAHR MODIF ID ET1 NO-EXTENSION, "不带复数选择
                   S_BLART FOR GV_BLART MODIF ID ET1 NO-EXTENSION, "不带复数选择
                   S_BLDAT FOR GV_BLDAT MODIF ID ET1 NO-EXTENSION, "不带复数选择
                   S_BUDAT FOR GV_BUDAT MODIF ID ET1 NO-EXTENSION, "不带复数选择
                   S_LIFNR FOR GV_LIFNR MODIF ID ET2,
                   S_LAND1 FOR GV_LAND1 MODIF ID ET2,
                   S_NAME1 FOR GV_NAME1 MODIF ID ET2,
                   S_PSTLZ FOR GV_PSTLZ MODIF ID ET2 NO INTERVALS. "不带区间选项,有复数选择

SELECTION-SCREEN END OF BLOCK BK3.

INITIALIZATION.
  PERFORM F_INITION.     "创建子程序

AT SELECTION-SCREEN OUTPUT.  "做选择帮助
  PERFORM F_SCREEN_PBO.   "创建一个控制


AT SELECTION-SCREEN.
  PERFORM F_CHECK_DATA.
*&---------------------------------------------------------------------*
*& Form F_INITION
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM F_INITION .
*付初始值
  DATA: LV_DATE_LOW  TYPE SY-DATUM,
        LV_DATE_HIGH TYPE SY-DATUM,
        LV_MONTH     TYPE N LENGTH 2,
        LV_YEAR      TYPE N LENGTH 4.

* 获取当前日期
  LV_DATE_LOW = SY-DATLO.
  LV_YEAR = LV_DATE_LOW(4).
  LV_MONTH = LV_DATE_LOW+4(2).

* 设置月初
  CONCATENATE LV_YEAR LV_MONTH '01' INTO S_DATA-LOW.

* 设置月末
  CASE LV_MONTH.
    WHEN '01' OR '03' OR '05' OR '07' OR '08' OR '10' OR '12'.
      CONCATENATE LV_YEAR LV_MONTH '31' INTO S_DATA-HIGH.
    WHEN '04' OR '06' OR '09' OR '11'.
      CONCATENATE LV_YEAR LV_MONTH '30' INTO S_DATA-HIGH.
    WHEN '02'.
      IF ( LV_YEAR MOD 4 = 0 AND LV_YEAR MOD 100 <> 0 ) OR ( LV_YEAR MOD 400 = 0 ).
        CONCATENATE LV_YEAR LV_MONTH '29' INTO S_DATA-HIGH.
      ELSE.
        CONCATENATE LV_YEAR LV_MONTH '28' INTO S_DATA-HIGH.
      ENDIF.
  ENDCASE.

* 添加到内表
  APPEND S_DATA.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form F_SCREEN_PBO
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM F_SCREEN_PBO.

  LOOP AT SCREEN.
    IF SCREEN-NAME = 'P_KIKANN'.
      SCREEN-INPUT = 0.
    ENDIF.

    IF RB_KAKE = ABAP_ON AND SCREEN-GROUP1 = 'ET2'. "检查变量RB_KAKE是否等于ABAP_ON(假设ABAP_ON是一个特定的值或标志,表明某个条件为真)
      "检查当前迭代的屏幕元素是否属于分组'ET2'。
      SCREEN-ACTIVE = 0.
    ENDIF.

    IF RB_SIRE = ABAP_ON AND SCREEN-GROUP1 = 'ET1'."如果上述两个条件都满足,将当前屏幕元素的ACTIVE属性设置为0(禁用该元素)。
      SCREEN-ACTIVE = 0.
    ENDIF.

    MODIFY SCREEN.                          "将对SCREEN内表所做的修改应用到实际屏幕上。
  ENDLOOP.                               "结束对SCREEN内表的迭代。
ENDFORM.                                "结束FORM子程序定义。
*&---------------------------------------------------------------------*
*& Form F_CHECK_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM F_CHECK_DATA .

  IF S_BLDAT-LOW NOT IN S_DATA                "空的会报错,如果不空就不会报错。
    AND S_BLDAT-LOW IS NOT INITIAL.
    SET CURSOR FIELD 'S_BLDAT-LOW'.            "定义光标,起到一个提示的效果
    MESSAGE E001(ZMESSAGEFU) WITH S_BLDAT-LOW . "如果日期不在这个范围内,就会报错。
  ENDIF.

ENDFORM.

三,测试结果:

相关操作常用参数:SAP ABAP 常用的参数-CSDN博客

创作不易,请点赞关注支持一下,多谢,多谢!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/778766.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

强化学习编程实战-1-一个及其简单的强化学习实例(多臂赌博机)

1.1 多臂赌博机 一台拥有K个臂的机器&#xff0c;玩家每次可以摇动K个臂中的一个&#xff0c;摇动后&#xff0c;会吐出数量不等的金币&#xff0c;吐出金币的数量服从一定的概率分布&#xff0c;而且不同臂的概率分布不同。 多臂赌博机的问题是&#xff1a;假设玩家共有N次摇地…

CSS 【详解】样式选择器(含ID、类、标签、通配、属性、伪类、伪元素、Content属性、子代、后代、兄弟、相邻兄弟、交集、并集等选择器)

CSS 样式选择器&#xff0c;用于选中页面中的 html 元素&#xff0c;以便添加 CSS 样式。 按渲染性能由高到低 依次是&#xff1a; ID 选择器 #id 通过元素的 id 属性选中元素&#xff0c;区分大小写 <p id"p1" >第一段</p>#p1{color: red; }但不推荐使…

eclipse ide中文件编码的修改,解决中文乱码的问题。

1、先上一张图&#xff1a; 记得之前设置过&#xff0c;但是稍微一变&#xff0c;环境编码又到了ISO-8859-1了&#xff0c;然后就出现了乱码。 2、设置eclipse的编码&#xff1a; Preferences--General -- Content Types -- Text -- Java Properties File -- Default encoding…

要想贵人相助,首先自己得先成为贵人!

点击上方△腾阳 关注 转载请联系授权 在金庸江湖里&#xff0c;有两位大侠&#xff0c;一个是萧峰&#xff0c;一个是郭靖。 郭靖在《射雕英雄传》里是绝对的主角&#xff0c;在《神雕侠侣》当中也是重要的配角&#xff0c;甚至可以说是第二主角。 谈起郭靖&#xff0c;很多…

策略为王股票软件源代码-----如何修改为自己软件61----资讯菜单修改-----举例---------调用同花顺网页------

http://stock.sina.com.cn 将原来的新浪行情,修改为同花顺, 搜索 stock.sina.com.cn... StkUI\View\InfoView.cpp(58):char

20K Stars!一个轻量级的 JS 库

大家好,我是CodeQi! 一位热衷于技术分享的码仔。 Driver.js 是一个轻量级的 JavaScript 库,旨在帮助开发人员创建网站或应用程序的引导和教程。通过 Driver.js,您可以引导用户了解网站的各个功能和使用方式。 Driver.js 提供了高度可定制的功能,使其能够适应各种需求和…

【Python学习笔记】菜鸟教程Scrapy案例 + B站amazon案例视频

背景前摇&#xff08;省流可以跳过这部分&#xff09; 实习的时候厚脸皮请教了一位办公室负责做爬虫这块的老师&#xff0c;给我推荐了Scrapy框架。 我之前学过一些爬虫基础&#xff0c;但是用的是比较常见的BeautifulSoup和Request&#xff0c;于是得到Scrapy这个关键词后&am…

在AvaotaA1全志T527开发板上使用AvaotaOS 部署 LNMP 服务

准备工作 在这之前&#xff0c;确保设备已经联网&#xff0c;可以用 ifconfig 命令查看联网状态。这里使用的是 WIFI 联网&#xff0c;可以看到已经获取了IP地址。 由于安装需要较长时间&#xff0c;建议使用 screen 后台登录&#xff0c;这里看到系统默认已经安装了 screen …

6800和8080单片机读写时序和液晶屏接口

前言&#xff1a; 随着单片机发展&#xff0c;集成度越来越高&#xff0c;因此目前单片机较少使用RD和WR信号操作外设&#xff0c;因此很多时候&#xff0c;变成了6800和8080单片机读写液晶屏了。早期的读写本质上是对一个地址进行即时的操作&#xff0c;现在可能是等数据送到…

vue中自定义设置多语言(包括使用vue-i18n),并且运行js脚本自动生成多语言文件

在项目中需要进行多个国家语言的切换时&#xff0c;可以用到下面方法其中一个 一、自定义设置多语言 方法一: 可以自己编写一个设置多语言文件 在项目新建js文件&#xff0c;命名为&#xff1a;language.js&#xff0c;代码如下 // language.js 文档 let languagePage {CN…

baomidou多数据源切换注解@DS没有效果

baomidou多数据源切换注解DS没有效果 <dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>3.1.1</version> </dependency> ##原因 方法上有Transaction…

2024年AI技术深入研究

2024年AI技术持续快速发展,应用领域广泛,产业发展迅速,市场趋势积极,学术研究深入。 AI技术进展大模型发展 2024年,智谱AI正在研发对标OpenAI Sora的高质量文生视频模型,预计最快年内发布。智谱AI的进展显示了国内AI大模型领域的快速发展,以及与国际领先技术的竞争态势…

全网最详细的Appium自动化测试框架(一)环境搭建

一、环境搭建 1、安装python3 2、安装appium-destop 3 、安装python虚拟环境 ,安装依赖库 : pip install Appium-Python-Client pip install pytest 4、安装java brew install java 配置好环境变量 5、安装 android-platform-tools &#xff08;也可以用android sdk 工…

关于多人开发下git pull报错代码冲突问题的解决方案

关于多人开发下git pull报错代码冲突问题的解决方案 问题描述 最近多人开发项目习惯性先 git pull 来更新代码的时候&#xff0c;遇到了下面的问题&#xff1a;error: Your local changes to the following files would be overwritten by merge: Please, commit your change…

Zabbix触发器

目录 触发器基础概念 创建和管理触发器 示例 定义一个触发器 在 Zabbix 中&#xff0c;触发器&#xff08;Trigger&#xff09;用于定义在监控数据满足特定条件时触发警报或动作。触发器是实现监控告警和自动响应的核心组件之一。以下是关于 Zabbix 触发器的详细解释和用法…

Windows 11 安装 安卓子系统 (WSA)

How to Install Windows Subsystem for Android (WSA) on Windows 11 新手教程&#xff1a;如何安装Windows 11 安卓子系统 说明 Windows Subsystem for Android 或 WSA 是由 Hyper-V 提供支持的虚拟机&#xff0c;可在 Windows 11 操作系统上运行 Android 应用程序。虽然它需…

解决问题:使用PageHelper.startPage和PageInfo实现分页,但是得到的total和传入的页面大小pageSize一样

我们需要的是total得到的数值是数据库里所有数据的条数。 1、包别引错 <!--PageHelper开始--><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.4.6</…

c++:struct和class的区别

C和C中struct的区别 (1)C中不支持成员函数&#xff08;只能通过函数指针成员变量间接支持&#xff09;&#xff0c;而C源生支持。 (2)C中不支持static成员&#xff0c;而C中支持。后面会详细讲&#xff0c;C static class是一个大知识点 (3)访问权限&#xff0c;C中默认public…

2024年【金属非金属矿山(地下矿山)安全管理人员】考试报名及金属非金属矿山(地下矿山)安全管理人员模拟考试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年金属非金属矿山&#xff08;地下矿山&#xff09;安全管理人员考试报名为正在备考金属非金属矿山&#xff08;地下矿山&#xff09;安全管理人员操作证的学员准备的理论考试专题&#xff0c;每个月更新的金属非…

Ratf协议图解、Nacos CP集群源码分析

文章目录 Nacos CP集群说明Raft协议leader选举重新选举leader多个Candidate情况更新操作&#xff0c;日志复制网络分区 源码实现服务注册leader选举leader心跳包 Nacos CP集群 说明 CAP原则 C 一致性 ConsistencyA 可用性 Availability分区容错性 Partition tolerance 分区…