创建和测试number range过程

    技术2022-05-19  34

     

    输入T-CODE: SNRO

     

    输入Object名字点击“创建”出现以下界面

    最后保存,中间会弹出确认按钮都直接yes就好了

    以下代码用于测试该number range

     TABLES: sscrfields.*---------------------------------------------------------------------**   define internal tables*   定义内表**---------------------------------------------------------------------*data: begin of t_nriv occurs 0,      object like tnro-object,              "范围对象      nrrangenr like nriv-nrrangenr,        "区间编号end   of t_nriv.data: w_nriv like t_nriv.                    "定义工作区*--------------------------------------------------------------------**   define variable*   定义全局变量**--------------------------------------------------------------------*data: l_next(20) type c.             "定义下一个值.*--------------------------------------------------------------------**   selection-screen*   选择屏幕**--------------------------------------------------------------------*selection-screen begin of block blk with frame title text-001.parameters: p_object like tnro-object obligatory,           "范围对象            p_num    like nriv-nrrangenr obligatory,        "区间编号            p_next(20) type c.                              "下一个值selection-screen end   of block blk.selection-screen function key 1.              "设置选择屏幕的按钮,可以支持5个按钮,对应的功能码从FC01--FC05.*selection-screen function key 2.*--------------------------------------------------------------------**  initialzation*  初始化屏幕**--------------------------------------------------------------------*initialization.sscrfields-functxt_01  = '下一个'.             "这里设置key 1按钮文本也可以为图标* sscrfields-functxt_02  = '上一个'.*-------------------------------------------------------------------**  at selection-screen*  处理选择屏幕的按钮事件**-------------------------------------------------------------------*at selection-screen.case sy-ucomm.                   "获得当前系统的功能码when 'FC01'.*perform frm_get_data.perform frm_get_next.p_next = l_next.when 'ONLI'.                  "这个对应的是执行的功能码(F8)endcase.*--------------------------------------------------------------------**  form frm_get_data*  根据输入条件从表获取相关数据**--------------------------------------------------------------------*form frm_get_data.* 把数据放到工作区w_nrivselect objectnrrangenrinto corresponding fields of w_nrivfrom nrivwhere object eq p_objectand nrrangenr eq p_num.endselect.if w_nriv is initial.message '没有可查询的相关数据' type 'I'.stop.endif.endform.                    "frm_get_data*--------------------------------------------------------------------**  form frm_get_next*  获得当前的范围对象和区间编号对应的流水号**--------------------------------------------------------------------*form frm_get_next.call function 'NUMBER_RANGE_ENQUEUE 'exportingobject           = p_objectexceptionsforeign_lock     = 1object_not_found = 2system_failure   = 3others           4.*如果号码范围存在if sy-subrc eq .*  ****得到一个号码,call function 'NUMBER_GET_NEXT 'exportingnr_range_nr             = p_num              "这个就是维护的间隔号object                  = p_object           "这个就是流水号对象importingnumber                  = l_next             "获得的流水号*   quantity = quant*   returncode = codeexceptionsinterval_not_found      = 1number_range_not_intern = 2object_not_found        = 3quantity_is_0           = 4quantity_is_not_1       = 5interval_overflow       = 6buffer_overflow         = 7others                  8.*  ***将号码累加call function 'NUMBER_RANGE_DEQUEUE 'exportingobject           = p_objectexceptionsobject_not_found = 1others           2.else .raise num_range_error .endif .endform.                    "frm_get_next


    最新回复(0)