客户银行主数据批导

news2024/11/15 22:55:23

程序:ZSDR0005

*&---------------------------------------------------------------------*
*& Report ZSDR0005
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZSDR0005.


INCLUDE ZSDR0005_TOP.
INCLUDE ZSDR0005_SCR.
INCLUDE ZSDR0005_FRM.

*---------------------------------------------------------------------*
* INITIALIZATION                                                      *
*                                                                     *
*---------------------------------------------------------------------*

INITIALIZATION.

  PERFORM frm_screen_initial.
*---------------------------------------------------------------------*
* AT SELECTION-SCREEN  ON VALUE-REQUEST                               *
*                                                                     *
*---------------------------------------------------------------------*
AT SELECTION-SCREEN.
  CASE sy-ucomm.
    WHEN 'ONLI'.
    WHEN OTHERS.
      CASE sscrfields-ucomm.
        WHEN 'FC01'.
          PERFORM frm_download_module.
      ENDCASE.
  ENDCASE.

*---------------------------------------------------------------------*
* AT SELECTION-SCREEN OUTPUT                                          *
*                                                                     *
*---------------------------------------------------------------------*
AT SELECTION-SCREEN OUTPUT.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR pa_path.
  "获取文件地址搜索帮助
  PERFORM frm_get_fielpath.

*---------------------------------------------------------------------*
* START-OF-SELECTION
*---------------------------------------------------------------------*
START-OF-SELECTION.

  PERFORM frm_upload_data.                    "加载外部数据
  PERFORM frm_deal_data.                      "处理数据
  PERFORM frm_alv_layout_build.              "设置ALV整体布局
  PERFORM frm_alv_set_columns.               "设置ALV各个列的格式
  PERFORM frm_alv_display_data.              "调用ALV输出函数输出数据

INCLUDE:ZSDR0005_TOP

*&---------------------------------------------------------------------*
*& Include          ZSDR0001_TOP
*&---------------------------------------------------------------------*


TYPE-POOLS:slis.
TYPE-POOLS: abap.
TABLES sscrfields.
*EXCEL 上传模板
TYPES:
  BEGIN OF ty_data.
    INCLUDE STRUCTURE zcustomer.
TYPES:
    icon     TYPE char10,                 "指示灯
    message    TYPE string,                 "返回消息
    styletab TYPE lvc_t_styl,
    sel      TYPE c,
  END OF ty_data.

DATA:gt_data TYPE TABLE OF ty_data WITH HEADER LINE,
     wa_data TYPE ty_data.

*&---Alv变量定义
DATA:gs_layout   TYPE lvc_s_layo.
DATA:gt_fieldcat TYPE lvc_t_fcat.
DATA:gs_fieldcat TYPE lvc_s_fcat.

DATA:gt_events   TYPE slis_t_event.          " 事件存储内表
DATA:wa_events   TYPE slis_alv_event.

DATA:g_grid TYPE REF TO cl_gui_alv_grid.

DATA:where_clause TYPE string VALUE 'SEL = ABAP_TRUE'.

DATA functxt TYPE smp_dyntxt.               "下载模板按钮需要用到的变量

DATA:gv_tabix TYPE i.
DATA: ls_stylerow TYPE lvc_s_styl,
      lt_styletab TYPE lvc_t_styl.

INCLUDE:ZSDR0005_SCR

*&---------------------------------------------------------------------*
*& Include          ZSDR0001_SCR
*&---------------------------------------------------------------------*


SELECTION-SCREEN BEGIN OF BLOCK bk01 WITH FRAME TITLE TEXT-001.
  PARAMETERS: pa_path TYPE rlgrap-filename MODIF ID a.
  SELECTION-SCREEN SKIP.
SELECTION-SCREEN END OF BLOCK bk01.

SELECTION-SCREEN: FUNCTION KEY 1."下载模板按钮

INCLUDE:ZSDR0005_FRM

*&---------------------------------------------------------------------*
*& Include          ZSDR0001_FRM
*&---------------------------------------------------------------------*


*&---------------------------------------------------------------------*
*& Form frm_screen_initial
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_screen_initial .
  functxt-icon_id   = icon_xls.
  functxt-quickinfo = '下载模板'.
  functxt-icon_text = '下载模板'.
  functxt-quickinfo = '下载模板'.
  functxt-text      = '下载模板'.
  sscrfields-functxt_01 = functxt.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_download_module
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_download_module .

  DATA:l_folder TYPE string.
  DATA:l_dest LIKE rlgrap-filename.
  DATA:l_rc LIKE sy-subrc.
  DATA:lo_objdata LIKE wwwdatatab.

  CALL METHOD cl_gui_frontend_services=>directory_browse( CHANGING selected_folder = l_folder ).

  IF l_folder IS NOT INITIAL.
    l_dest = l_folder && '\客户主数据银行批导模板.XLSX'.
    SELECT SINGLE relid objid FROM wwwdata
    INTO CORRESPONDING FIELDS OF lo_objdata
    WHERE srtf2    = 0
    AND relid    = 'MI'
    AND objid    = 'ZSDR0005'.
    IF sy-subrc NE 0 OR lo_objdata-objid EQ space.
      MESSAGE '模板文件:物料主数据收集模板不存在,请用TCODE:SMW0进行加载' TYPE 'E'.
    ELSE.
      CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
        EXPORTING
          key         = lo_objdata
          destination = l_dest
        IMPORTING
          rc          = l_rc.
      IF l_rc NE 0.
        MESSAGE '模板文件下载失败!' TYPE 'S' DISPLAY LIKE 'E'.
      ENDIF.
    ENDIF.
  ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_get_fielpath
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_get_fielpath .


  DATA:
    lv_subrc      TYPE i,
    ls_filename   TYPE file_table,
    lt_filetables TYPE filetable. "路径列表

  CALL METHOD cl_gui_frontend_services=>file_open_dialog
    EXPORTING
*     WINDOW_TITLE            =
*     DEFAULT_EXTENSION       =
*     DEFAULT_FILENAME        =
*     FILE_FILTER             =
      initial_directory       = 'C:\'
*     multiselection          = ''
    CHANGING
      file_table              = lt_filetables[]
      rc                      = lv_subrc
*     USER_ACTION             =
    EXCEPTIONS
      file_open_dialog_failed = 1
      cntl_error              = 2
      error_no_gui            = 3
      OTHERS                  = 4.
  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ELSE.
    LOOP AT lt_filetables INTO ls_filename.
      pa_path = ls_filename-filename.
    ENDLOOP.
  ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_upload_data
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_upload_data .
  DATA: lt_excel  TYPE STANDARD TABLE OF alsmex_tabline,
        ls_data   TYPE ty_data,
        lv_column TYPE i.

  FIELD-SYMBOLS:
    <fs_field> TYPE any,
    <fs_excel> TYPE alsmex_tabline.

  CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
    EXPORTING
      filename                = pa_path
      i_begin_col             = 4
      i_begin_row             = 12
      i_end_col               = 12
      i_end_row               = 10000
    TABLES
      intern                  = lt_excel
    EXCEPTIONS
      inconsistent_parameters = 1
      upload_ole              = 2
      OTHERS                  = 3.
* 导入失败
  IF sy-subrc <> 0.
    MESSAGE 'EXCEL文件上传失败' TYPE 'E'.
    LEAVE LIST-PROCESSING.
  ENDIF.

  IF lt_excel IS INITIAL.
    MESSAGE '导入数据为空,请检查您的数据' TYPE 'E'.
    LEAVE LIST-PROCESSING.
  ENDIF.

  SORT lt_excel BY row ASCENDING col ASCENDING.


  PERFORM frm_set_l_fieldcat USING 'SSID'      'X' '序号'.
  PERFORM frm_set_l_fieldcat USING 'ICON'      'X' '指示灯'.         "
  PERFORM frm_set_l_fieldcat USING 'PARTNER'   'X' '客户编号'.
  PERFORM frm_set_l_fieldcat USING 'BKVID'     '' '银行明细标识'.
  PERFORM frm_set_l_fieldcat USING 'BANKS'     '' '银行国家/地区'.
  PERFORM frm_set_l_fieldcat USING 'ACCNAME'   '' '账户名称'.
  PERFORM frm_set_l_fieldcat USING 'BANKL'     '' '银行代码'.
  PERFORM frm_set_l_fieldcat USING 'BANKN'     '' '银行帐户'.
  PERFORM frm_set_l_fieldcat USING 'KOINH'     '' '账户持有人'.
  PERFORM frm_set_l_fieldcat USING 'BKREF'     '' '状态'.
  PERFORM frm_set_l_fieldcat USING 'MESSAGE'   '' '返回消息'.


  CLEAR:wa_data,gt_data[],lv_column.
  LOOP AT lt_excel INTO DATA(ls_line).
    CASE ls_line-col.
      WHEN 1. gt_data-partner  = ls_line-value."客户编号
      WHEN 2. gt_data-bkvid    = ls_line-value."银行明细标识
      WHEN 3. gt_data-banks    = ls_line-value."银行国家/地区
      WHEN 4. gt_data-accname  = ls_line-value."账户名称
      WHEN 5. gt_data-bankl    = ls_line-value."银行代码
      WHEN 6. gt_data-bankn    = ls_line-value."银行帐户
      WHEN 7. gt_data-koinh    = ls_line-value."账户持有人
      WHEN 8. gt_data-bkref    = ls_line-value."状态
    ENDCASE.
    AT END OF row.
      lv_column = lv_column + 1.
      gt_data-ssid = lv_column."序号
      APPEND gt_data.
      CLEAR gt_data.
    ENDAT.
  ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_deal_data
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_deal_data .
*  LOOP AT gt_data INTO wa_data.
*    MODIFY gt_data FROM wa_data.
*    CLEAR wa_data.
*  ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_alv_layout_build
*&---------------------------------------------------------------------*
*& text`
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_alv_layout_build .
  CLEAR: gs_layout.
  gs_layout-zebra      = 'X'.     "带条纹模式,隔行换色  "
  gs_layout-cwidth_opt = 'X'.     "优化列宽
  gs_layout-detailinit = 'X'.     "是否出现细节屏幕
*  gs_layout-box_fname  = 'SEL'.
  gs_layout-stylefname  ='STYLETAB'.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_alv_set_columns
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_alv_set_columns .

  REFRESH gt_fieldcat.
  PERFORM frm_set_l_fieldcat USING 'SSID'      'X' '序号'.
  PERFORM frm_set_l_fieldcat USING 'ICON'      'X' '指示灯'.         "
  PERFORM frm_set_l_fieldcat USING 'PARTNER'   'X' '客户编号'.
  PERFORM frm_set_l_fieldcat USING 'BKVID'     '' '银行明细标识'.
  PERFORM frm_set_l_fieldcat USING 'BANKS'     '' '银行国家/地区'.
  PERFORM frm_set_l_fieldcat USING 'ACCNAME'   '' '账户名称'.
  PERFORM frm_set_l_fieldcat USING 'BANKL'     '' '银行代码'.
  PERFORM frm_set_l_fieldcat USING 'BANKN'     '' '银行帐户'.
  PERFORM frm_set_l_fieldcat USING 'KOINH'     '' '账户持有人'.
  PERFORM frm_set_l_fieldcat USING 'BKREF'     '' '状态'.
  PERFORM frm_set_l_fieldcat USING 'MESSAGE'   '' '返回消息'.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  FRM_SET_L_FIELDCAT
*&---------------------------------------------------------------------*
*       将值赋给每一个列
*----------------------------------------------------------------------*
*      -->L_POS      列数
*      -->NAME       列的名称也就是对应的内表的名称
*      -->TEXTL      列的抬头文本
*----------------------------------------------------------------------*
FORM frm_set_l_fieldcat  USING  name fix_col textl.

  gs_fieldcat-fieldname = name.
  gs_fieldcat-coltext = textl.
  gs_fieldcat-fix_column = fix_col.

  IF name = 'ICON'.
    gs_fieldcat-icon = 'X'.
  ENDIF.
*  IF name = 'ZLGPBE_1' OR  name = 'ZLGPBE_2' OR  name = 'ZLGPBE_3' OR
*     name = 'ZLGPBE_4' OR  name = 'ZLGPBE_5' OR  name = 'ZLGPBE_6' OR
*     name = 'MATNR' OR  name = 'WERKS' OR  name = 'LGORT' OR  name = 'SOBKZ'.
*    gs_fieldcat-edit = 'X'.
*  ENDIF.
  APPEND gs_fieldcat TO gt_fieldcat.
  CLEAR gs_fieldcat.
ENDFORM.                    " FRM_SET_L_FIELDCAT
*&---------------------------------------------------------------------*
*& Form frm_alv_display_data
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_alv_display_data .

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
      i_callback_program       = sy-repid
      i_callback_pf_status_set = 'FRM_PF_STATUS_SET'
      i_callback_user_command  = 'FRM_USER_COMMAND'
      is_layout_lvc            = gs_layout
      it_fieldcat_lvc          = gt_fieldcat[]
    TABLES
      t_outtab                 = gt_data
    EXCEPTIONS
      program_error            = 1
      OTHERS                   = 2.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_PF_STATUS_SET
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
FORM frm_pf_status_set USING lt_extab TYPE slis_t_extab.
  DATA:rs_extab TYPE slis_extab.
  "设置GUI状态栏
  DATA:lv_text TYPE cua_tit_tx.
  DATA l_num   TYPE i.
  DATA l_num1  TYPE char10.
  CLEAR:l_num1,l_num,lv_text.

  lv_text = '目录录入'.
  SET PF-STATUS 'PF_STATUS' EXCLUDING lt_extab.
  SET TITLEBAR 'PF_TITLE'  WITH lv_text.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_USER_COMMAND
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
FORM frm_user_command USING ucomm LIKE sy-ucomm
  rs_selfield TYPE slis_selfield.

  DATA: lt_rows TYPE lvc_t_row,
        ls_row  TYPE lvc_s_row.

  CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    IMPORTING
      e_grid = g_grid.

  CALL METHOD g_grid->check_changed_data.
  rs_selfield-refresh    = 'X'.
  rs_selfield-row_stable = 'X'.
  rs_selfield-col_stable = 'X'.

  CALL METHOD g_grid->get_frontend_layout
    IMPORTING
      es_layout = gs_layout.

  gs_layout-cwidth_opt = 'X'.

  CALL METHOD g_grid->set_frontend_layout
    EXPORTING
      is_layout = gs_layout.

  CASE ucomm.
    WHEN '&F12' OR '&F15' OR '&F03'.
      LEAVE TO SCREEN 0.
    WHEN 'SAVE'.
      PERFORM frm_save USING ''.
*    WHEN 'CHECK'.
*      PERFORM frm_save USING 'X'.
    WHEN OTHERS.
  ENDCASE.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_save
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_save USING test TYPE char1.

  DATA:lt_zcustomer LIKE TABLE OF zcustomer.
  DATA:lt_return LIKE TABLE OF zcustomer_return WITH HEADER LINE.

  DATA:ls_input TYPE zssd_customeri.
  DATA:ls_output TYPE zssd_customero.

  LOOP AT gt_data ASSIGNING FIELD-SYMBOL(<fs>).
    CLEAR: ls_input,ls_output.
    ls_input = VALUE #( partner  = <fs>-partner
                        bank     = VALUE #( ( bkvid = <fs>-bkvid
                                              banks = <fs>-banks"银行国家/地区
                                              accname = <fs>-accname"账户名称
                                              bankl = <fs>-bankl"银行代码
                                              bankn = <fs>-bankn"银行帐户
                                              koinh = <fs>-koinh
                                              bkref = <fs>-bkref
                                               ) )"账户持有人
                        fields   = VALUE #( ( 'NOFIELDS' ) ) ).

    CALL FUNCTION 'ZSD_RF_CUSTOMER02'
      EXPORTING
        input  = ls_input
      IMPORTING
        output = ls_output.

    IF ls_output-status = 'S'.
      <fs>-icon = icon_green_light.
      <fs>-partner = ls_output-partner.
      <fs>-message = ls_output-message.
    ELSE.
      <fs>-icon = icon_red_light.
      <fs>-message = ls_output-message.
    ENDIF.
  ENDLOOP.

ENDFORM.

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深入研究:我国工业实时操作系统的核心技术与演进路径

实时操作系统&#xff08;RTOS&#xff09;在各类工业场景中发挥着中枢神经系统的关键作用&#xff0c;是数字化工业的重要基础。当前&#xff0c;全球大部分工业实时操作系统市场被国外厂商占据&#xff0c;围绕主流RTOS产品内核提供了完备的上下游软件配套&#xff0c;并以嵌…

目标检测标签分配策略,难样本挖掘策略

在目标检测任务中&#xff0c;样本的划分对于模型的性能具有至关重要的影响。其中&#xff0c;正样本指的是包含目标物体的图像或区域&#xff0c;而负样本则是不包含目标物体的图像或区域。然而&#xff0c;在负样本中&#xff0c;有一部分样本由于其与正样本在特征上的相似性…

开启虚拟机时出现此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态怎么解决

问题描述 虚拟机安装完成后&#xff0c;点击开启此虚拟机弹出系统提示 原因分析&#xff1a; Intel VT-x 处于禁用状态&#xff0c;需要开启。 解决方案&#xff1a; 以联系小新笔记本电脑为例&#xff0c;进入BIOS界面&#xff0c;将Intel Virtual Technology设置成Enabl…

在不同操作系统中搭建Python编程环境

1 在不同操作系统中搭建Python编程环境 1.1 在Linux系统中搭建Python编程环境 1. 检查Python版本 在你的系统中运行应用程序Terminal&#xff08;如果你使用的是Ubuntu&#xff0c;可按Ctrl Alt T&#xff09;&#xff0c;打开一个终端窗口。为确定是否安装了Python&…

SpringBoot实现邮箱验证

目录 1、开启邮箱IMAP/SMTP服务&#xff0c;获取授权码 2、相关代码 1、使用配置Redis&#xff08;用于存储验证码&#xff0c;具有时效性&#xff09; 2、邮箱依赖和hutool&#xff08;用于随机生成验证码&#xff09; 3、配置Redis和邮箱信息 4、开启Redis服务 5、编写发送…

广东智慧公厕管理系统哪家好@光明源

随着城市发展和人民生活水平的提高&#xff0c;智慧公厕作为城市公共卫生设施的重要组成部分&#xff0c;受到了越来越多城市管理者的重视。在广东&#xff0c;智慧公厕管理系统的选择成为了一个备受关注的话题。那么&#xff0c;在广东&#xff0c;到底哪家智慧公厕管理系统比…

某程旅行安全工程师一面

一、自我介绍 阿吧阿吧&#xff0c;不多说了 二、两段实习经历&#xff0c;看你在南京中孚数据安全部做实习生&#xff0c;你能大概讲一下做什么的吗 当时做的是一个隐写溯源项目&#xff0c;是我们实验室跟南京中孚那边共同合作的。主要是针对电子文档信息泄露&#xff0c;…

牛市来临,模块化赛道可能会出现下个以太坊?

市场专家普遍预测&#xff0c;2024年将成为加密货币市场迎来新一轮牛市的关键时刻。研究人员将下一次比特币&#xff08;BTC&#xff09;减半以及2024年现货BTC ETF&#xff08;交易所交易基金&#xff09;的可能性视为推动下一次牛市的潜在因素。这一牛市的可能爆发有望吸引大…

C# Web应用调用EXE文件的一些实践

目录 需求 范例运行环境 可执行文件的设计 调用可执行文件方法 RunExecuteFile RunShellExecuteFile 方法的区别 WEB调用举例 小结 需求 最近同事使用Python开发了一款智能文字转语音的程序&#xff0c;经讨论部署在WINDOWS环境服务器下&#xff0c;因此需要生成目标…

C语言函数实现冒泡排序

前言 今天我们来看看怎么使用函数的方式实现冒泡排序吧&#xff0c;我们以一个数组为例arr[] {9,8,7,6,5,4,3,2,1,0},我们将这个数组通过冒泡排序的方式让他变为升序吧。 代码实现 #include<stdio.h> void bubble_sort(int arr[], int sz) {int i 0;for (i 0;i < s…

如何使用GraphQL和Apollo构建一个宝可梦应用

宝可梦是一个由视频游戏、动画系列与电影、交换卡牌游戏以及其他相关媒体组成的日本媒体特许经营权。 在本文中&#xff0c;我们将使用一个宝可梦GraphQL API&#xff0c;该API提供有关不同宝可梦的数据。 我们将使用Apollo和GraphQL来处理数据获取&#xff0c;以及React来构…

数据库之DCL操作(用户、访问权限。)

DCL英文全称是Data control language(数据控制语言)&#xff0c;用来管理数据库用户、控制数据库的访问权限。 1.管理用户 1.1查询用户 select * from mysql.user; 其中 Host代表当前用户访问的主机&#xff0c;如果为localhost&#xff0c;仅代表只能够在当前本机访问&…

git上传到本地仓库

摘要&#xff1a;本地初始化init仓库&#xff0c;进行pull和push&#xff1b;好处是便于利用存储设备进行git备份 git init --bare test.git 随便到一个空的目录下git clone 然后使用git上传 把git仓库删除之后再clone一次验证一下是否上传成功&#xff1a; 如果在ubantu上面没…

嵌入式面向对象学习 RT-Thread I/O 设备管理框架 设备驱动层 案例测试

嵌入式面向对象 RT-Thread I/O 设备管理框架 设备驱动层 注&#xff1a;本文介绍性内容转载于《RT-Thread记录&#xff08;十、全面认识 RT-Thread I/O 设备模型&#xff09;》 注&#xff1a; 本次使用的开发板 &#xff1a; ​ 兆易创新GD32F407VET6开发板 ​ 雅特力科技…

c++的学习之路:7、类和对象(3)

目录 一、初始化列表 二、static成员 三、友元 四、内部类 五、匿名对象 六、类和对象的思维导图 一、初始化列表 初始化列表&#xff1a;以一个冒号开始&#xff0c;接着是一个以逗号分隔的数据成员列表&#xff0c;每个"成员变量"后面跟一个放在括号中的初始…

求m和n的最大公约数(C语言)

一、运行结果&#xff1b; 二、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>int main() {//初始化变量值&#xff1b;int remainder 1;int m 0;int n 0;int middle 0;//提示用户&#xff1b;printf("请输入整数m和n的值&#xff…

辅助PC端教程

使用谷歌浏览器打开京东,并登录好账号进入到 https://home.jd.com/ ,在根据下面操作 更多工具 - 开发者工具,会有一个窗口打开,选择network,点击XHR

撸代码时,有哪些习惯一定要坚持?

我从2011年开始做单片机开发&#xff0c;一直保持以下撸代码的习惯。 1.做好代码版本管理 有些人&#xff0c;喜欢一个程序干到底&#xff0c;直到实现全部的产品功能&#xff0c;我以前做51单片机的项目就是这样。 如果功能比较多的产品&#xff0c;我不建议这样做&#xff0…

编译原理实验2(自上而下语法分析)

一、实验目的 给出 PL/0 文法规范&#xff0c;要求编写 PL/0 语言的语法分析程序。通过设计、编制、调试一个典型的自上而下语法分析程序&#xff0c;实现对词法分析程序所提供的单词序列进行语法检查和结构分析&#xff0c;进一步掌握常用的语法分析方法。选择有代表性的语法…

一款轻量、干净的 Vue 后台管理框架

开始之前 在开始介绍之前我想谈谈为什么要自己做一个后台管理&#xff0c;我知道很多人都用一些开源的后台管理项目&#xff0c;这些老前辈有很多亮点值得学习&#xff0c;但是存在的一些问题同样不可忽视&#xff0c;我认为很多开发者会被困扰(仅代表个人观点) 技术栈老旧不升…