ABAP 一篇作业分享

ops/2024/10/21 0:47:29/

目录

一:要件定义:

二,具体代码:

三,测试结果:


一:要件定义:

二,具体代码:

*&---------------------------------------------------------------------*
*& 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博客

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


http://www.ppmy.cn/ops/56249.html

相关文章

用MATLAB绘制三向应力圆

% 定义主应力值 sigma1 100; % MPa sigma2 50; % MPa sigma3 -33; % MPa sigma_m1(sigma1 sigma3)/2; sigma_m2(sigma1 sigma2)/2; sigma_m3(sigma2 sigma3)/2; % 计算半径 r1 (sigma1 - sigma3) / 2; r2 (sigma1 - sigma2) / 2; r3 (sigma2 - sigma3…

Windows Server 2012 R2查看IIS版本

文章目录 一、方法一1.win R 键打开运行窗口 → 输入 "regedit" → 点击【确定】2.HKEY_LOCAL_MACHINE → SOFTWARE → Microsoft → InetStp 二、方法二1.win R 键打开运行窗口 → 输入 "inetmgr" → 点击【确定】2.点击 【帮助】 → 选择【关于 Intern…

模型泛化与工程技巧-模型泛化

1. 模型存在问题 1.1 过拟合 过拟合(Overfitting):模型过于紧密或精确地匹配特定数据集,以致于无法良好地拟合其他数据或预测未来的观察结果的现象。通俗的来讲,就是训练的模型在训练集上的精确度很高,但是在测试集上的精确度却很差的现象。 1.2 如何防止过拟合—数据角度 …

快速测试electron环境是否安装成功

快速测试electron环境是否安装成功 测试代码正确运行的效果运行错误的效果v22.4.1 版本无法使用v20.15.1版本无法使用v18.20.4 版本无法使用 测试代码 1.npx create-electron-app my-electron-app 2.cd my-electron-app 3.npm start 正确运行的效果 环境没问题,你就会正常运…

持久化存储与设备环境查询的最佳实践

ArkUI框架中的PersistentStorage和Environment 在ArkUI框架中&#xff0c;持久化存储和设备环境查询是应用开发中不可或缺的两个重要功能。在本文中&#xff0c;我们将深入了解框架提供的PersistentStorage和Environment&#xff0c;它们的用途、限制条件以及在应用开发中的使…

windows下使用编译opencv在qt中使用

记录一下&#xff1a;在windows下qt使用opencv 1、涉及需要下载的软件 CMake 下载地址opecnv下载地址mingw(需要配置环境变量) 这个在下载qt的时候可以直接安装一般在qt的安装路径下的tool里比如我的安装路径 (C:\zz\ProgramFiles\QT5.12\Tools\mingw730_64) 2、在安装好CMake…

Vue-Router4.0 报“Cannot read property ‘forEach‘ of undefined”

Vue-Router4.0在创建路由时 报“Cannot read property ‘forEach‘ of undefined” 解决办法 将路由规则名称更改为routes&#xff0c;否则报错 import { createWebHashHistory, createRouter } from vue-router; // 创建路由规定 const routes [{path: /login,name: login,co…

FreeRTOS——任务通知

一、任务通知 1.1 任务通知简介 任务通知&#xff1a;用来通知任务的&#xff0c;任务控制块中的结构体成员变量 ulNotifiedValue就是这个通知值 &#xff08;1&#xff09;使用队列、信号量、事件标志组时都需另外 创建一个结构体 &#xff0c;通过中间的结构体进行间接通信…