当前位置: 首页 > news >正文

ABAP-ALV合并单元格

文章转自:https://www.cnblogs.com/BinGeneral/p/18126518

1、文章说明

 在开发一些报表时,需要显示双层的标题,或者合并单元格的数据,归根结底就是要实现类似EXCEL合并单元格的需求。如图所示

网上的资料,很多根据国外某大神的方法实现:https://tricktresor.de/blog/zellen-verbinden/

本文章在测试该方法时,发现了一些问题,并根据个人实现习惯,加以优化和修改:

优化问题:

1、优化源代码只能对第1列进行垂直合并。

2、解决源代码垂直合并中,将导致下一列字段内容被清空。

本文章通过不画CONTAINER的OOALV方式实现ALV报表,虽然解决了一些BUG,但实现方法仍有很大的优化空间,读者可动手持续优化。

2、实现过程

首先创建9000屏幕

程序中根据超类,创建新的类

定义ALV对象

在ALV中预留要显示标题的空行

并去掉fieldcat自动带出来的列名

调用ALV显示方法后,开始合并单元格

垂直合并,outputlen表示向下合并几行(包含本行)

水平合并,outputlen表示向右合并到第几列

设置对应单元格的名称

REPORT ybintest018.
*----------------------------------------------------------------------*
*表声明
*----------------------------------------------------------------------*
TABLES:sscrfields."

*----------------------------------------------------------------------*
*类型池声明
*----------------------------------------------------------------------*
TYPE-POOLS:slis.INCLUDE <cl_alv_control>.
*----------------------------------------------------------------------*
* 类型定义
*----------------------------------------------------------------------*
TYPES:BEGIN OF ty_alv,xm    TYPE char20,hsl01 TYPE acdoca-hsl,hsl02 TYPE acdoca-hsl,hsl03 TYPE acdoca-hsl,hsl04 TYPE acdoca-hsl,hsl05 TYPE acdoca-hsl,hsl06 TYPE acdoca-hsl,hsl07 TYPE acdoca-hsl,hsl08 TYPE acdoca-hsl,hsl09 TYPE acdoca-hsl,hsl10 TYPE acdoca-hsl,hsl11 TYPE acdoca-hsl,hsl12 TYPE acdoca-hsl,hz    TYPE char20,END OF ty_alv.*----------------------------------------------------------------------*
* 声明内表和工作区
*----------------------------------------------------------------------*
DATA:gt_alv TYPE TABLE OF ty_alv,gs_alv TYPE ty_alv.FIELD-SYMBOLS:<fs_gs_alv> TYPE ty_alv.*----------------------------------------------------------------------*
*       ALV层级关系定义
*----------------------------------------------------------------------*CLASS zcl_gui_alv_grid DEFINITION DEFERRED.*创建ALV屏幕
DATA:g_grid_9000      TYPE REF TO zcl_gui_alv_grid, "ALV容器的实例g_container_9000 TYPE REF TO cl_gui_docking_container, "ALV容器 不用画屏幕容器gs_variant_9000  TYPE disvariant,gs_style         TYPE lvc_s_styl,gt_fieldcat_9000 TYPE lvc_t_fcat,gs_fieldcat      TYPE lvc_s_fcat,gs_layout_9000   TYPE lvc_s_layo.  "ALV 控制: 布局结构DATA:r_ucomm   LIKE sy-ucomm,ok_code   TYPE sy-ucomm,save_code TYPE sy-ucomm.*&---------------------------------------------------------------------*
* CLASS DEFINITION 定义类/Definition class
*&---------------------------------------------------------------------*
CLASS zcl_gui_alv_grid DEFINITION INHERITING FROM cl_gui_alv_grid.PUBLIC SECTION."水平合并METHODS z_set_merge_horizIMPORTINGrow           TYPE iCHANGINGtab_col_merge TYPE lvc_t_co01."垂直合并METHODS z_set_merge_vertIMPORTINGrow           TYPE iCHANGINGtab_col_merge TYPE lvc_t_co01."标题文本METHODS z_set_title_valueIMPORTINGrow   TYPE icol   TYPE ivalue TYPE lvc_value."清空单元格样式METHODS z_init_cell_styles."单元格样式METHODS z_set_cell_styleIMPORTINGrow    TYPE i OPTIONALcol    TYPE i OPTIONALstyle  TYPE lvc_stylestyle2 TYPE lvc_style OPTIONAL."冻结行列METHODS z_set_fixed_col_rowIMPORTINGrow TYPE icol TYPE i."显示METHODS z_display.
ENDCLASS.                    "ZCL_GUI_ALV_GRID DEFINITION*&---------------------------------------------------------------------*
* CLASS IMPLEMENTATION 实现类/Implementation class
*&---------------------------------------------------------------------*
CLASS zcl_gui_alv_grid IMPLEMENTATION."水平合并METHOD z_set_merge_horiz.* ROW - Zeile deren Spalten zusammengef�hrt werden sollen
* tab_col_merge - Spalten, die zusammengef�hrt werden sollenFIELD-SYMBOLS <fs_cols> TYPE lvc_s_co01.FIELD-SYMBOLS <fs_data> TYPE lvc_s_data.DATA outputlen TYPE i.SORT tab_col_merge.
* Die Spalten, die zusammengef�hrt werden sollenLOOP AT tab_col_merge ASSIGNING <fs_cols>.
* ein paar Pr�fungenIF <fs_cols>-col_id    LE 0.                CONTINUE. ENDIF.IF <fs_cols>-outputlen LE <fs_cols>-col_id. CONTINUE. ENDIF.outputlen = <fs_cols>-outputlen - <fs_cols>-col_id.LOOP AT mt_data ASSIGNING <fs_data>WHERE row_pos = row  AND( col_pos BETWEEN <fs_cols>-col_id AND<fs_cols>-outputlen ).
* Setze wie weit soll gemerged werden Von Spalte in L�nge
* und zwar wird bei der 1 Spalte angefangenIF <fs_data>-col_pos = <fs_cols>-col_id.<fs_data>-mergehoriz = outputlen.
* bei allen anderen, die zusammangeh�ren
* muss der Wert raus, da er aus der 1. Spalte kommt
* und das mergekennzeichen muss auch weg !ELSE.CLEAR <fs_data>-mergehoriz.CLEAR <fs_data>-value.ENDIF.ENDLOOP.ENDLOOP.ENDMETHOD."垂直合并METHOD z_set_merge_vert.* ROW - Zeile deren Spalten zusammengef�hrt werden sollen
* tab_col_merge - Spalten, die zusammengef�hrt werden sollenFIELD-SYMBOLS <fs_cols> TYPE lvc_s_co01.FIELD-SYMBOLS <fs_data> TYPE lvc_s_data.DATA:outputlen  TYPE i,lv_row_end TYPE i.SORT tab_col_merge.
* Die Spalten, die zusammengef�hrt werden sollenLOOP AT tab_col_merge ASSIGNING <fs_cols>.
* ein paar Pr�fungenIF <fs_cols>-col_id    LE 0.                CONTINUE. ENDIF.
*      IF <fs_cols>-outputlen LE <fs_cols>-col_id. CONTINUE. ENDIF.
*      outputlen = <fs_cols>-outputlen - <fs_cols>-col_id.outputlen = <fs_cols>-outputlen - 1.lv_row_end = row + outputlen.LOOP AT mt_data ASSIGNING <fs_data>WHERE ( row_pos BETWEEN row AND lv_row_end )AND col_pos = <fs_cols>-col_id.
*      ( col_pos BETWEEN <fs_cols>-col_id AND
*      <fs_cols>-outputlen ).* Setze wie weit soll gemerged werden Von Spalte in L�nge
* und zwar wird bei der 1 Spalte angefangen
*        IF <fs_data>-col_pos = <fs_cols>-col_id.IF <fs_data>-row_pos = row.<fs_data>-mergevert = outputlen.
* bei allen anderen, die zusammangeh�ren
* muss der Wert raus, da er aus der 1. Spalte kommt
* und das mergekennzeichen muss auch weg !ELSE.CLEAR <fs_data>-mergevert.CLEAR <fs_data>-value.ENDIF.ENDLOOP.ENDLOOP.ENDMETHOD."标题文本METHOD z_set_title_value.FIELD-SYMBOLS <fs_data> TYPE lvc_s_data.LOOP AT mt_data ASSIGNING <fs_data>WHERE row_pos = row  AND col_pos = col.<fs_data>-value = value.ENDLOOP.ENDMETHOD.                    "z_set_title_value"清空单元格样式METHOD z_init_cell_styles.FIELD-SYMBOLS <fs_data> TYPE lvc_s_data.
* Nur Spalte setze komplette SpalteLOOP AT mt_data ASSIGNING <fs_data>.<fs_data>-style = 0.ENDLOOP.ENDMETHOD."单元格样式METHOD z_set_cell_style.FIELD-SYMBOLS <fs_data> TYPE lvc_s_data.IF row IS INITIAL.IF col IS INITIAL.
* Beides leer -> nichts zu tun.EXIT.ELSE.
* Nur Spalte setze komplette SpalteLOOP AT mt_data ASSIGNING <fs_data>WHERE col_pos = col.<fs_data>-style  = <fs_data>-style + style.<fs_data>-style2 = <fs_data>-style2 + style2.ENDLOOP.ENDIF.ELSE.IF col IS INITIAL.
* Nur Zeile eingegeben -> komplette Zeile setzenLOOP AT mt_data ASSIGNING <fs_data>WHERE row_pos = row.<fs_data>-style  = <fs_data>-style + style.<fs_data>-style2 = <fs_data>-style2 + style2.ENDLOOP.ELSE.READ TABLE mt_data ASSIGNING <fs_data>WITH KEY row_pos = rowcol_pos = col.IF sy-subrc EQ 0.<fs_data>-style  = <fs_data>-style + style.<fs_data>-style2 = <fs_data>-style2 + style2.ELSE.EXIT.ENDIF.ENDIF.ENDIF.ENDMETHOD."冻结行列METHOD z_set_fixed_col_row.me->set_fixed_cols( col ).me->set_fixed_rows( row ).ENDMETHOD."显示METHOD z_display.DATA lv_stable TYPE lvc_s_stbl.DATA lv_soft   TYPE c.**** Prepare refresh
*  lv_stable-row = 'X'.
*  lv_stable-col = 'X'.
*  lv_soft       = 'X'.
*
**** Refresh table because Z_SET_CELL_STYLE adds style-values
**** Refresh initializes mt_data
*  CALL METHOD refresh_table_display
*    EXPORTING
*      is_stable      = lv_stable
*      i_soft_refresh = lv_soft
*    EXCEPTIONS
*      OTHERS         = 1.* Jetzt noch  �bertragen der ge�nderten DatenCALL METHOD me->set_data_tableCHANGINGdata_table = mt_data[].CALL METHOD set_auto_redrawEXPORTINGenable = 1.ENDMETHOD.ENDCLASS.                    "ZCL_GUI_ALV_GRID IMPLEMENTATION
*&---------------------------------------------------------------------*
*&  START-OF-SELECTION:程序运行所处理的代码
*&---------------------------------------------------------------------*
START-OF-SELECTION."获取取数PERFORM frm_get_data.CALL SCREEN 9000.*&---------------------------------------------------------------------*
*&      Form  FRM_GET_DATA
*&---------------------------------------------------------------------*
*       text 获取数据
*----------------------------------------------------------------------*
FORM frm_get_data.APPEND INITIAL LINE TO gt_alv.APPEND INITIAL LINE TO gt_alv."第3行CLEAR gs_alv.gs_alv-xm = '成本'.gs_alv-hsl01 = '10'.gs_alv-hsl02 = '20'.gs_alv-hsl03 = '30'.gs_alv-hsl04 = '40'.gs_alv-hsl05 = '50'.gs_alv-hsl06 = '60'.gs_alv-hsl07 = '70'.gs_alv-hsl08 = '80'.gs_alv-hsl09 = '90'.gs_alv-hsl10 = '100'.gs_alv-hsl11 = '110'.gs_alv-hsl12 = '120'.gs_alv-hz = '780'.APPEND gs_alv TO gt_alv."第4行CLEAR gs_alv.gs_alv-xm = '利润'.gs_alv-hsl01 = '110'.gs_alv-hsl02 = '120'.gs_alv-hsl03 = '130'.gs_alv-hsl04 = '140'.gs_alv-hsl05 = '150'.gs_alv-hsl06 = '160'.gs_alv-hsl07 = '170'.gs_alv-hsl08 = '180'.gs_alv-hsl09 = '190'.gs_alv-hsl10 = '1100'.gs_alv-hsl11 = '1110'.gs_alv-hsl12 = '1120'.gs_alv-hz = '4680'.APPEND gs_alv TO gt_alv.
ENDFORM. " FRM_GET_DATA
*&---------------------------------------------------------------------*
*&      Form  FRM_ALV_LAYOUT_9000
*&---------------------------------------------------------------------*
FORM frm_alv_layout_9000.CLEAR gs_layout_9000.gs_layout_9000-sel_mode   = 'A'.     "选择行模式gs_layout_9000-cwidth_opt = 'A'.     "优化列宽设置gs_layout_9000-zebra      = 'X'.     "设置斑马线gs_layout_9000-no_toolbar = 'X'.gs_layout_9000-no_headers = 'X'."不显示列名
ENDFORM.*&---------------------------------------------------------------------*
*&      Form  FRM_ALV_FIELDCAT_9000
*&---------------------------------------------------------------------*
FORM frm_alv_fieldcat_9000.DATA:lv_times     TYPE i,lv_count     TYPE i,lv_fieldname TYPE lvc_fname,lv_coltext   TYPE lvc_txtcol.REFRESH:gt_fieldcat_9000.DEFINE  init_fill_fcat.CLEAR gs_fieldcat.gs_fieldcat-fieldname  = &1.gs_fieldcat-coltext    = &2.gs_fieldcat-scrtext_l  = &2.gs_fieldcat-scrtext_m  = &2.gs_fieldcat-scrtext_s  = &2.gs_fieldcat-reptext    = &2.gs_fieldcat-col_pos  = &3.
*    gs_fieldcat-do_sum  = &3.
*    gs_fieldcat-hotspot = &4.gs_fieldcat-icon   = &4.gs_fieldcat-hotspot = &5.gs_fieldcat-no_zero = &6.gs_fieldcat-edit = &7.gs_fieldcat-datatype  = &8.gs_fieldcat-inttype  = &9.APPEND gs_fieldcat TO gt_fieldcat_9000.END-OF-DEFINITION.init_fill_fcat 'XM' '项目'  '' '' '' '' '' '' ''.init_fill_fcat 'HSL01' 'HSL01'  '' '' '' '' '' '' ''.init_fill_fcat 'HSL02' 'HSL02'  '' '' '' '' '' '' ''.init_fill_fcat 'HSL03' 'HSL03'  '' '' '' '' '' '' ''.init_fill_fcat 'HSL04' 'HSL04'  '' '' '' '' '' '' ''.init_fill_fcat 'HSL05' 'HSL05'  '' '' '' '' '' '' ''.init_fill_fcat 'HSL06' 'HSL06'  '' '' '' '' '' '' ''.init_fill_fcat 'HSL07' 'HSL07'  '' '' '' '' '' '' ''.init_fill_fcat 'HSL08' 'HSL08'  '' '' '' '' '' '' ''.init_fill_fcat 'HSL09' 'HSL09'  '' '' '' '' '' '' ''.init_fill_fcat 'HSL10' 'HSL10'  '' '' '' '' '' '' ''.init_fill_fcat 'HSL11' 'HSL11'  '' '' '' '' '' '' ''.init_fill_fcat 'HSL12' 'HSL12'  '' '' '' '' '' '' ''.init_fill_fcat 'HZ' '汇总'  '' '' '' '' '' '' ''.ENDFORM.*&---------------------------------------------------------------------*
*&      Form  FRM_CREATE_CONTAINER_9000
*&      创建容器
*&---------------------------------------------------------------------*
FORM frm_create_container_9000.CREATE OBJECT g_container_9000EXPORTINGrepid                       = sy-repiddynnr                       = '9000'
*     side                        = cl_gui_docking_container=>dock_at_right      ”ALV贴屏幕右边,从屏幕右边开始算宽度side                        = cl_gui_docking_container=>dock_at_top       "ALV贴屏幕左边,从左边算屏幕宽度,extension                   = 1000                                          "屏幕宽度
*     ratio                       = 95  "屏幕比例 小于5大于95会报cntl_error异常style                       = cl_gui_control=>ws_child                     "可选参数,设置ALV是否可用手动拖动大小EXCEPTIONScntl_error                  = 1cntl_system_error           = 2create_error                = 3lifetime_error              = 4lifetime_dynpro_dynpro_link = 5OTHERS                      = 6.IF sy-subrc <> 0.MESSAGE s001(00) WITH '屏幕初始化失败'.LEAVE LIST-PROCESSING.ENDIF.*  创建容器实例CREATE OBJECT g_grid_9000EXPORTINGi_parent          = g_container_9000EXCEPTIONSerror_cntl_create = 1error_cntl_init   = 2error_cntl_link   = 3error_dp_create   = 4OTHERS            = 5.IF sy-subrc <> 0.MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.ENDIF.
ENDFORM.*&---------------------------------------------------------------------*
*&      Form  FRM_ALV_DISPLAY_9000
*&---------------------------------------------------------------------*
FORM frm_alv_display_9000.CALL METHOD g_grid_9000->set_table_for_first_displayEXPORTINGis_variant                    = gs_variant_9000
*     i_save                        = 'A'is_layout                     = gs_layout_9000
*     it_toolbar_excluding          = gt_exclude_9000CHANGINGit_fieldcatalog               = gt_fieldcat_9000  "
      it_outtab                     = gt_alv      "输出数据的内表
*     it_sort                       = gt_sort
*     it_filter                     = gt_filtEXCEPTIONSinvalid_parameter_combination = 1program_error                 = 2too_many_lines                = 3OTHERS                        = 4.IF sy-subrc <> 0.MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.ENDIF."合并单元格"垂直合并PERFORM frm_merge_vert."水平合并PERFORM frm_merge_horiz."设置标题PERFORM frm_title_value."设置样式PERFORM frm_cell_style."合并单元格后显示g_grid_9000->z_display( ).ENDFORM.*&---------------------------------------------------------------------*
*&      Form  FRM_MERGE_VERT  垂直合并
*&---------------------------------------------------------------------*
FORM frm_merge_vert.DATA:lt_col_merge TYPE lvc_t_co01,ls_col_merge TYPE lvc_s_co01."纵向合并REFRESH:lt_col_merge.CLEAR:ls_col_merge.ls_col_merge-col_id    = 1.ls_col_merge-outputlen = 2."向下合并多少行(含本行)APPEND ls_col_merge TO lt_col_merge.CLEAR:ls_col_merge.ls_col_merge-col_id    = 14.ls_col_merge-outputlen = 2."向下合并多少行(含本行)APPEND ls_col_merge TO lt_col_merge."第1行的纵向合并单元格CALL METHOD g_grid_9000->z_set_merge_vert "纵向合并EXPORTINGrow           = 1CHANGINGtab_col_merge = lt_col_merge.
ENDFORM.*&---------------------------------------------------------------------*
*&      Form  FRM_MERGE_HORIZ 水平合并
*&---------------------------------------------------------------------*
FORM frm_merge_horiz.DATA:lt_col_merge TYPE lvc_t_co01,ls_col_merge TYPE lvc_s_co01."水平合并REFRESH:lt_col_merge.CLEAR:ls_col_merge.ls_col_merge-col_id    = 2.ls_col_merge-outputlen = 4."水平合并到第几列APPEND ls_col_merge TO lt_col_merge.CLEAR:ls_col_merge.ls_col_merge-col_id    = 5.ls_col_merge-outputlen = 7.APPEND ls_col_merge TO lt_col_merge.CLEAR:ls_col_merge.ls_col_merge-col_id    = 8.ls_col_merge-outputlen = 10.APPEND ls_col_merge TO lt_col_merge.CLEAR:ls_col_merge.ls_col_merge-col_id    = 11.ls_col_merge-outputlen = 13.APPEND ls_col_merge TO lt_col_merge."第1行的水平合并单元格CALL METHOD g_grid_9000->z_set_merge_horiz "水平合并EXPORTINGrow           = 1CHANGINGtab_col_merge = lt_col_merge.
ENDFORM.*&---------------------------------------------------------------------*
*&      Form  FRM_CELL_STYLE 设置样式
*&---------------------------------------------------------------------*
FORM frm_cell_style."设置值效果:加粗 居中 主键颜色gs_style-style = alv_style_font_bold+ alv_style_align_center_center+ alv_style_color_heading."第1行 第1列CALL METHOD g_grid_9000->z_set_cell_styleEXPORTINGrow   = 1col   = 1style = gs_style-style.CALL METHOD g_grid_9000->z_set_cell_styleEXPORTINGrow   = 1col   = 2style = gs_style-style.CALL METHOD g_grid_9000->z_set_cell_styleEXPORTINGrow   = 1col   = 5style = gs_style-style.CALL METHOD g_grid_9000->z_set_cell_styleEXPORTINGrow   = 1col   = 8style = gs_style-style.CALL METHOD g_grid_9000->z_set_cell_styleEXPORTINGrow   = 1col   = 11style = gs_style-style.CALL METHOD g_grid_9000->z_set_cell_styleEXPORTINGrow   = 1col   = 14style = gs_style-style."冻结行和列g_grid_9000->z_set_fixed_col_row(EXPORTING col = 1row = 2 ).
ENDFORM.*&---------------------------------------------------------------------*
*&      Form  FRM_TITLE_VALUE 设置标题
*&---------------------------------------------------------------------*
FORM frm_title_value.CALL METHOD g_grid_9000->z_set_title_valueEXPORTINGrow   = 1col   = 1value = '项目'.CALL METHOD g_grid_9000->z_set_title_valueEXPORTINGrow   = 1col   = 2value = '1季度'.CALL METHOD g_grid_9000->z_set_title_valueEXPORTINGrow   = 1col   = 5value = '2季度'.CALL METHOD g_grid_9000->z_set_title_valueEXPORTINGrow   = 1col   = 8value = '3季度'.CALL METHOD g_grid_9000->z_set_title_valueEXPORTINGrow   = 1col   = 11value = '4季度'.CALL METHOD g_grid_9000->z_set_title_valueEXPORTINGrow   = 1col   = 14value = '汇总'.DATA:lv_fname TYPE lvc_value,lv_index TYPE sy-index.DO 12 TIMES.lv_fname = sy-index && ''.lv_index = sy-index + 1.CALL METHOD g_grid_9000->z_set_title_valueEXPORTINGrow   = 2col   = lv_indexvalue = lv_fname.ENDDO.
ENDFORM.*&---------------------------------------------------------------------*
*&      Form  FRM_REFRESH_ALV_9000
*&---------------------------------------------------------------------*
FORM frm_refresh_alv.DATA: lt_celltab TYPE lvc_t_styl,ls_celltab TYPE lvc_s_styl,ls_stable  TYPE lvc_s_stbl.ls_stable-row = 'X'.  "固定行ls_stable-col = 'X'.  "固定列CHECK g_grid_9000 IS NOT INITIAL.CALL METHOD g_grid_9000->refresh_table_displayEXPORTINGis_stable = ls_stable
*     I_SOFT_REFRESH = 'X'EXCEPTIONSfinished  = 1OTHERS    = 2.IF sy-subrc <> 0.MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.ENDIF.CALL METHOD cl_gui_cfw=>flush.
ENDFORM.
*&---------------------------------------------------------------------*
*&  屏幕流
*&---------------------------------------------------------------------*
MODULE status_9000 OUTPUT.SET PF-STATUS 'STANDARD_FULLSCREEN'.
ENDMODULE.*&---------------------------------------------------------------------*
*&  屏幕流
*&---------------------------------------------------------------------*
MODULE display_alv_9000 OUTPUT.IF g_container_9000 IS INITIAL.PERFORM frm_create_container_9000.PERFORM frm_alv_fieldcat_9000.PERFORM frm_alv_layout_9000.PERFORM frm_alv_display_9000.ELSE.PERFORM frm_refresh_alv.ENDIF.
ENDMODULE.*&---------------------------------------------------------------------*
*&  屏幕流
*&---------------------------------------------------------------------*
MODULE user_command_9000 INPUT.save_code = ok_code.CLEAR ok_code.CASE save_code.WHEN '&BACK'."设置功能键返回按钮单击事件LEAVE TO SCREEN 0.WHEN '&EXIT'.LEAVE PROGRAM.ENDCASE.
ENDMODULE.

 

http://www.jsqmd.com/news/414214/

相关文章:

  • Webpack 是如何工作的?
  • 500元微信立减金回收94折,猎卡回收解锁高价门道 - 京回收小程序
  • 华为昇腾NPU上运行pytorch —— 使用torch_npu进行模型迁移
  • 基础算法题解一览
  • LeetCode 每日一题 #21:合并两个有序链表|Python 递归与迭代双解法
  • 电力巡检无人机选哪家?核心维度、Top5厂家推荐与场景化选型指南 - 深度智识库
  • 2026年 杭州叉车厂家推荐排行榜:电动叉车与内燃叉车专业选购指南,实力品牌深度解析 - 品牌企业推荐师(官方)
  • 2026 国产真空炉 感应加热设备 高频感应加热设备 中频感应加热设备 高频焊机全攻略:五大品牌排行、选购技巧与口碑推荐 - 深度智识库
  • 2026年全国航空货运哪家靠谱?实力强口碑好 适配各类空运需求 覆盖全国各类空运场景 - 深度智识库
  • 安川机器人遇见的问题汇总
  • 2026川渝滇黔污水处理药剂厂家优质推荐榜 - 优质品牌商家
  • 2026年评价高的无添加红糖公司推荐:养生红糖、原汁红糖、原汁黄冰糖、古法红糖、孕妇可食红糖、手工红糖选择指南 - 优质品牌商家
  • 电力巡检无人机Top5揭晓:谁在定义智能电网的“空中之眼”? - 深度智识库
  • 2026WMS系统客观测评:如何选择适配的仓库管理系统 - 深度智识库
  • 潮玩一番赏小程序玩法分析(附开发者技术落地与合规要点)
  • 分析颜语堂考研数学,专业靠谱吗,费用大概多少钱? - 工业品牌热点
  • 2026年2月日化车间净化厂家推荐,专业制造与品牌保障口碑 - 品牌鉴赏师
  • 2026年口碑好的面粉生产成套设备厂家推荐,专业企业全解析 - mypinpai
  • 2026年Q1,寻找可靠数显/游标卡尺产地的企业选型指南 - 2026年企业推荐榜
  • Webpack entry深度解析
  • 说说倍克朗专业吗,泳池漆费用及选购要点分析 - 工业品网
  • 2026年2月压铆机中心厂家推荐,五金加工配套设备指南 - 品牌鉴赏师
  • 组里有个P7,为了防止被裁,把核心计费模块的代码写得晦涩难懂,还加了自定义的混淆逻辑,甚至不提交Git, 结果CTO直接招了个外包团队
  • 销售电主轴/丝杆/转台的平台网站有哪些?如何选择适合自己的? - 品牌推荐大师1
  • 联合省选 R1
  • 这次终于选对!断层领先的AI论文软件 —— 千笔ai写作
  • 交换系统评估:把控接入路由质量、需求匹配度与配置合规性
  • 看完就会:风靡全网的AI论文软件 —— 千笔·专业学术智能体
  • 2026年红糖公司权威推荐:孕妇可食红糖/手工红糖/手工黄冰糖/无添加红糖/无添加黄冰糖/正宗黄冰糖/选择指南 - 优质品牌商家
  • 运行标准:企业落地资源分配、传输策略与负载均衡规范