SAP号码段配置-SNRO/SNUM

T-CODE: SNRO、SNUM

1.创建一个号码段对象

2.设置编号长度域、警告(注意:必须是SAP系统已定意的域)

3.设置缓冲,优点:不直接去数据库里取数,提升效率;缺点:存在跳号

4.设置取数范围

5.调整当前编号

6.调用程序

DATA:l_num TYPE i.

*锁定 
CALL FUNCTION 'NUMBER_RANGE_ENQUEUE' 
  EXPORTING 
    object           = 'ZCURTNU' 
  EXCEPTIONS 
    foreign_lock     = 1 
    object_not_found = 2 
    system_failure   = 3 
    OTHERS           = 4.

IF sy-subrc = 0. 
*获取下个数字 
  CALL FUNCTION 'NUMBER_GET_NEXT' 
    EXPORTING 
      nr_range_nr             = '1' 

在编号范围中分配的序列号
      object                  = 'ZCURTNU' 

编码对象名称
    IMPORTING 
      number                  = l_num

输出生成的流水号
    EXCEPTIONS 
      interval_not_found      = 1 
      number_range_not_intern = 2 
      object_not_found        = 3 
      quantity_is_0           = 4 
      quantity_is_not_1       = 5 
      interval_overflow       = 6 
      buffer_overflow         = 7 
      OTHERS                  = 8. 
  IF sy-subrc <> 0. 
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno 
       WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

  ELSE. 
*解锁 
    CALL FUNCTION 'NUMBER_RANGE_DEQUEUE' 
      EXPORTING 
        object           = 'ZCURTNU' 
      EXCEPTIONS 
        object_not_found = 1 
        OTHERS           = 2. 
  ENDIF.

ENDIF.


  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一.引言 1. 项目的名称 飞机航班信息管理系统 2. 项目背景和目标 飞机航班信息管理系统主要能够查询飞机的航班情况,飞行线路,票价,折扣等等 情况,并能够在数据库中更新维护飞机航班的信息,对飞机航班数据库进行管理, 如航班的增加,删除和修等。我们的目标就是为该系统提供后台连接数据库程序 设计以及前台用户界面设计。 3. 项目的可行性研究 设计此系统需要java面向对象编程基础,数据库应用知识以及功能分析。根据目 前所开设的课程,学生已经具备这样的知识,有能力综合java编程知识和数据库 应用知识做出一个这样的飞机航班信息管理系统。 2. 需求分析 2.1系统概述 此系统提供给系统管理员和用户。系统管理员登陆后可以对飞机航班信息进行管理 ,如:添加飞机航班信息,删除飞机航班信息,修飞机航班属性。用户登陆后能 进行飞机航班信息查询,订票以及退订。 2.2系统运行环境 Java运行在eclipse软件上,数据库用mysql数据库 2.3功能需求描述 用户选择相关的服务项目可以查看相关航班基本信息,并且可以根据自己需求选择 相应服务,系统的信息更新时,相关的信息经过相应处理后,会存入到飞机航班数 据库中的航班信息记录表中;系统管理员根据航空公司实际情况可以更新航班信息 ,并通过修信息处理后被保存到飞机航班表中。 三、系统设计 3.1开发与设计的总体思想 飞机航班信息管理系统主要分为用户和系统管理员2类,因此也将该系统分为2个相 应的大的功能模块。 用户可以通过服务项目选择查询相关航班情况,进行订票,退订等服务项目。系统 会将数据库中相应信息反馈给顾客。 系统管理员负责管系统信息的及时更新,可以根据航空公司航班的具体的情况更新 数据库。 3.2系统模块结构图 3.3数据库结构设计 为了支持此飞机航班信息管理系统,创建数据库airplane manage,在这个数据库里包含三个表:flight information表,passenger表,managerlogin表,和passengerlogin表,它们的截图如 下: 在flight information(飞机航班信息)表中,有8个属性列,分别为id(序列),stime(飞机起 飞时间),etime(飞机到达时间),sadd(飞机起始点),eadd(飞机终点),znum( 总票数),snum(剩余票数)。其基本数据类型分别为:int,char,char,char,cha r,char。当查询飞机航班基本信息时,从此表中获取数据。截图如下: 在passenger表中,有两个属性列,分别为:Pname(),Psex(性别),Page(年龄),Ppl ace(籍贯),number()其基本数据类型分别为:char,char,int,char,int。当管理 员登录系统时从此表获取数据,其截图如下: 在managerlogin表中,有两个属性列,分别为:Mname(管理员),Mpassword(密码)其基本 数据类型分别为:char,char。当管理员登录系统时从此表获取数据,其截图如下: 在passengerlogin表中,有两个属性列,分别为:Pname(用户),Ppassword(密码)其基本 数据类型分别为:char,char。当教职工登录系统时从此表获取数据,其截图如下: 3.4模块设计 在整个系统主界面,可以选择登录方式,是用户登录还是系统管理员登录。 如果选择用户,则进入用户登录界面,在这个界面上要求输入用户和密码。输入后单击 "确认登录"按钮,若密码正确,则转换到飞机航班信息查询页面,若密码不正确,这提 示密码错误。 如果选择是系统管理员登录,则进入管理员登陆界面,在这个界面上输入管理员和密 码,输入后单击"飞机航班信息管理"按钮,则进入管理员主界面。在管理员主界面可以 选择添加操作,删除操作还是修操作。 若要查询用户的简介信息,点击查询菜单项则进入用户简介信息检索界面,在此界面 的检索方式中选择要检索的数据属性,在检索容框中输入检索的具体信息,例如,检索 "pname"字时,要输入某个用户的。输入后,单击"检索"按钮,则开始对数据库中数据 进行查询。如果数据库检索到所需信息,则生成列表显示检索结构,如果没有所需信息 ,则页面列表中显示为空。 若要查询飞机航班信息,点击查询菜单项则进入飞机航班信息检索界面,在此界面的检 索方式中选择要检索的数据属性,在检索容框中输入检索的具体信息,例如,检索"飞机 对应航班序号的相关信息"字时,要键入某个飞机航班序号。输入后,单击"检索"按钮 ,则开始对数据库中数据进行查询。如果数据库检索到所需信息,则生成列表显示检索 结构,如果没有所需信息,则页面列表中显示为空。 如果管理员要对数据库中进行修操作,则在管理员主界面上选择修
好的,这是一个比较具体的问题,我可以帮您解答。 首先,我们需要先定义结构体数组,包括学生信息和选课信息: ```c #define N 100 // 定义学生最大数量 /* 学生信息结构体 */ typedef struct Student { char sname[50]; // 学生姓名 char snum[20]; // 学生学号 char ssex[10]; // 学生性别 char sage[4]; // 学生年龄 char sid[20]; // 学生身份证号 char smajor[50]; // 学生专业 } student[N]; /* 学生选课信息结构体 */ typedef struct Lesson { char snum[20]; // 选课的学生学号 char tid[20]; // 选修课程的开课号 char grade[5]; // 选修课程的成绩 } lesson[N]; ``` 接下来,我们需要实现删除学生信息的功能。首先,我们需要输入学生的学号,并判断输入是否合法(即长度是否为8位): ```c char del_num[20]; int flag = 0; // 标记是否找到了该学号对应的学生信息 /* 输入要删除的学生学号 */ do { printf("请输入要删除的学生学号(8位):"); scanf("%s", del_num); if (strlen(del_num) != 8) { printf("学号长度不合法,请重新输入!\n"); } } while (strlen(del_num) != 8); ``` 然后,我们需要遍历学生信息结构体数组,找到要删除的学生信息,并将其删除: ```c /* 遍历学生信息结构体数组 */ for (int i = 0; i < N; i++) { if (strcmp(student[i].snum, del_num) == 0) { // 找到了要删除的学生信息 printf("已删除 %s\t%s\t%s\t%s\t%s\t%s\n", student[i].snum, student[i].sname, student[i].ssex, student[i].sage, student[i].sid, student[i].smajor); for (int j = 0; j < N; j++) { // 遍历学生选课信息结构体数组 if (strcmp(lesson[j].snum, del_num) == 0) { // 找到了该学生的选课信息 printf("已删除 %s\t%s\t%s\n", lesson[j].snum, lesson[j].tid, lesson[j].grade); /* 将该选课信息删除 */ for (int k = j; k < N - 1; k++) { strcpy(lesson[k].snum, lesson[k + 1].snum); strcpy(lesson[k].tid, lesson[k + 1].tid); strcpy(lesson[k].grade, lesson[k + 1].grade); } strcpy(lesson[N - 1].snum, ""); strcpy(lesson[N - 1].tid, ""); strcpy(lesson[N - 1].grade, ""); j--; // 由于删除了一条选课信息,所以需要将j减1 } } /* 将该学生信息删除 */ for (int j = i; j < N - 1; j++) { strcpy(student[j].sname, student[j + 1].sname); strcpy(student[j].snum, student[j + 1].snum); strcpy(student[j].ssex, student[j + 1].ssex); strcpy(student[j].sage, student[j + 1].sage); strcpy(student[j].sid, student[j + 1].sid); strcpy(student[j].smajor, student[j + 1].smajor); } strcpy(student[N - 1].sname, ""); strcpy(student[N - 1].snum, ""); strcpy(student[N - 1].ssex, ""); strcpy(student[N - 1].sage, ""); strcpy(student[N - 1].sid, ""); strcpy(student[N - 1].smajor, ""); flag = 1; // 标记已经找到了该学号对应的学生信息 break; } } if (!flag) { printf("未找到该学号对应的学生信息!\n"); } ``` 最后,我们需要在程序结束前释放所有动态分配的内存: ```c /* 释放动态分配的内存 */ free(student); free(lesson); ``` 完整代码如下:

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值