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

带EXCEL附件邮件发送相关代码

1.查看生成的邮件

2.1 非面向对象的方式(demo直接copy即可)

​
REPORT Z12.
DATA: IT_DOCUMENT_DATA TYPE SODOCCHGI1,IT_CONTENT_TEXT  TYPE STANDARD TABLE OF SOLISTI1 WITH HEADER LINE,IT_PACKING_LIST  TYPE TABLE OF SOPCKLSTI1 WITH HEADER LINE,IT_RECEIVERS     TYPE STANDARD TABLE OF SOMLRECI1 WITH HEADER LINE,LC_MAIL_ATTACH   TYPE STRING,LT_CONTENT_HEX   TYPE STANDARD TABLE OF SOLIX WITH HEADER LINE,LT_OBJECT_HEADER TYPE STANDARD TABLE OF SOLISTI1 WITH HEADER LINE,LC_MAIL_XATTACH  TYPE XSTRING,LV_SEND_ALL      TYPE C,IT_MAKT          LIKE TABLE OF MAKT WITH HEADER LINE,FIR_DATE         TYPE SY-DATUM,MIMETYPE         TYPE CHAR64.
DATA: IT_ITAB TYPE TABLE OF ITAB WITH HEADER LINE,WA_ITAB TYPE ITAB.CONSTANTS:LC_TAB  TYPE C VALUE CL_BCS_CONVERT=>GC_TAB,       "excel换格符LC_CTRL TYPE C VALUE CL_BCS_CONVERT=>GC_CRLF.      "excel换行符PERFORM SEND_EMAIL.*&---------------------------------------------------------------------*
*&      Form  SEND_EMAIL
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM SEND_EMAIL.DATA SY_VLINE TYPE I.DATA:MBLNR TYPE STRING,   "物料凭证MATNR TYPE STRING,   "物料MJAHR TYPE STRING,   "年度MAKTX TYPE STRING.   "物料描述****邮件标题信息IT_DOCUMENT_DATA-OBJ_DESCR = '邮件主题1' .    "内容的简短描述IT_DOCUMENT_DATA-PRIORITY = '1'.             "优先次序  1~9  1:最高优先权IT_DOCUMENT_DATA-OBJ_NAME = 'OFFER'.IT_DOCUMENT_DATA-OBJ_LANGU = SY-LANGU.*****邮件正文信息IT_CONTENT_TEXT = '各位好:'.APPEND IT_CONTENT_TEXT.IT_CONTENT_TEXT = '  此邮件为测试邮件!!!!!!!'.APPEND IT_CONTENT_TEXT.DESCRIBE TABLE IT_CONTENT_TEXT LINES SY_VLINE.IT_DOCUMENT_DATA-DOC_SIZE = 255 * ( SY_VLINE - 1 ) + STRLEN( IT_CONTENT_TEXT ).  "SAPoffice 文档的大小(用于 API1)IT_PACKING_LIST-TRANSF_BIN = SPACE.IT_PACKING_LIST-HEAD_START = 1 .IT_PACKING_LIST-HEAD_NUM =  0 .IT_PACKING_LIST-BODY_START = 1. "控制从第几行开始读IT_PACKING_LIST-BODY_NUM = SY_VLINE."控制读到第几行IT_PACKING_LIST-DOC_TYPE = 'RAW'.APPEND IT_PACKING_LIST.***收件人信息IT_RECEIVERS-RECEIVER = 'MEIQIAN.LIANG@HAND-CHINA.COM'.  "收件人地址IT_RECEIVERS-REC_TYPE = 'U'.IT_RECEIVERS-COM_TYPE = 'INT'.IT_RECEIVERS-NOTIF_DEL =  'X'.IT_RECEIVERS-NOTIF_NDEL = 'X'.APPEND IT_RECEIVERS.CONCATENATE '物料'     LC_TAB'物料凭证' LC_TAB'物料描述' LC_TAB'年度'     LC_CTRL INTO LC_MAIL_ATTACH.   "lc_ctrl换行符CLEAR:MBLNR, MATNR, MJAHR, MAKTX.MBLNR  = '7777777'.MATNR  = '7777777'.MJAHR  = '7777'.MAKTX  = 'seven'."物料类型CONCATENATE LC_MAIL_ATTACHMATNR  LC_TABMBLNR  LC_TABMJAHR  LC_TABMAKTX  LC_CTRL INTO LC_MAIL_ATTACH.      "lc_ctrl换行符CLEAR:MBLNR, MATNR, MJAHR, MAKTX.MBLNR  = '8888888'.MATNR  = '8888888'.MJAHR  = '8888'.MAKTX  = 'seven'."物料类型CONCATENATE LC_MAIL_ATTACHMATNR  LC_TABMBLNR  LC_TABMJAHR  LC_TABMAKTX  LC_CTRL INTO LC_MAIL_ATTACH.      "lc_ctrl换行符MIMETYPE = 'APPLICATION/MSEXCEL;CHARSET=UTF-16LE'.CALL FUNCTION 'SCMS_STRING_TO_XSTRING'EXPORTINGTEXT     = LC_MAIL_ATTACHMIMETYPE = MIMETYPEIMPORTINGBUFFER   = LC_MAIL_XATTACHEXCEPTIONSFAILED   = 1OTHERS   = 2.IF SY-SUBRC = 0.CONCATENATE CL_ABAP_CHAR_UTILITIES=>BYTE_ORDER_MARK_LITTLE LC_MAIL_XATTACH INTO LC_MAIL_XATTACH IN BYTE MODE.ENDIF.CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' "将Xtring转化成二进制格式并保存到内表中EXPORTINGBUFFER     = LC_MAIL_XATTACHTABLESBINARY_TAB = LT_CONTENT_HEX."不知道干啥用的LT_OBJECT_HEADER = 'Seven test'.APPEND LT_OBJECT_HEADER.DESCRIBE TABLE LT_CONTENT_HEX LINES SY_VLINE.IT_PACKING_LIST-TRANSF_BIN = 'X'.IT_PACKING_LIST-HEAD_START = 1 .IT_PACKING_LIST-HEAD_NUM =  0 .IT_PACKING_LIST-BODY_START = 1.IT_PACKING_LIST-BODY_NUM = SY_VLINE.IT_PACKING_LIST-DOC_TYPE = 'XLS'.IT_PACKING_LIST-DOC_SIZE = 255 * SY_VLINE.IT_PACKING_LIST-OBJ_NAME = '附件名'.IT_PACKING_LIST-OBJ_DESCR = IT_PACKING_LIST-OBJ_NAME."文档名字APPEND IT_PACKING_LIST."方法1  无法指定发送人邮箱CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'EXPORTINGDOCUMENT_DATA              = IT_DOCUMENT_DATAPUT_IN_OUTBOX              = 'X'COMMIT_WORK                = 'X'IMPORTINGSENT_TO_ALL                = LV_SEND_ALL
*     NEW_OBJECT_ID              =TABLESPACKING_LIST               = IT_PACKING_LIST[]OBJECT_HEADER              = LT_OBJECT_HEADER[]
*     contents_bin               =CONTENTS_TXT               = IT_CONTENT_TEXT[]CONTENTS_HEX               = LT_CONTENT_HEX[]
*     object_para                =
*     object_parb                =RECEIVERS                  = IT_RECEIVERS[]EXCEPTIONSTOO_MANY_RECEIVERS         = 1DOCUMENT_NOT_SENT          = 2DOCUMENT_TYPE_NOT_EXIST    = 3OPERATION_NO_AUTHORIZATION = 4PARAMETER_ERROR            = 5X_ERROR                    = 6ENQUEUE_ERROR              = 7OTHERS                     = 8.*  "方法2  可以指定发送人邮箱
*  CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
*    EXPORTING
*      DOCUMENT_DATA              = IT_DOCUMENT_DATA
*      PUT_IN_OUTBOX              = 'X'
*      SENDER_ADDRESS             = 'MEIQIAN.LIANG@HAND-CHINA.COM'
*      SENDER_ADDRESS_TYPE        = 'INT'
*      COMMIT_WORK                = 'X'
**     IP_ENCRYPT                 =
**     IP_SIGN                    =
**     IV_VSI_PROFILE             =
*    IMPORTING
*      SENT_TO_ALL                = LV_SEND_ALL
**     NEW_OBJECT_ID              =
**     SENDER_ID                  =
*    TABLES
*      PACKING_LIST               = IT_PACKING_LIST[]
*      OBJECT_HEADER              = LT_OBJECT_HEADER[]
**     CONTENTS_BIN               =
*      CONTENTS_TXT               = IT_CONTENT_TEXT[]
*      CONTENTS_HEX               = LT_CONTENT_HEX[]
**     OBJECT_PARA                =
**     OBJECT_PARB                =
*      RECEIVERS                  = IT_RECEIVERS[]
**     ET_VSI_ERROR               =
*    EXCEPTIONS
*      TOO_MANY_RECEIVERS         = 1
*      DOCUMENT_NOT_SENT          = 2
*      DOCUMENT_TYPE_NOT_EXIST    = 3
*      OPERATION_NO_AUTHORIZATION = 4
*      PARAMETER_ERROR            = 5
*      X_ERROR                    = 6
*      ENQUEUE_ERROR              = 7
*      OTHERS                     = 8.
*  IF SY-SUBRC <> 0.
**   Implement suitable error handling here
*  ELSE.
*  BREAK-POINT.
*  ENDIF.ENDFORM.                    "SEND_EMAIL​

非面向对象运行效果图:

如果要抄送则增加以下属性:

2.2面向对象的方法


REPORT Z1234.TABLES:MSEG,SSCRFIELDS,MARA,ZOWMS_DAYSTOCK_R,ADR6.
TYPE-POOLS:ICON,SLIS.TYPES: BEGIN OF TYS_DETAIL,TOTAL(100),SEL(1),STATUS(4),ITEM_STATUS(4),CYMENG         TYPE MSEG-MENGE, "差异数量XCHAR          TYPE MARC-XCHAR, "批次管理标识MAKTX          TYPE MAKT-MAKTX,LGOBE          TYPE T001L-LGOBE,MEINS          TYPE MARA-MEINS,LABST          TYPE MARD-LABST. "SAP库存INCLUDE STRUCTURE ZOWMS_DAYSTOCK_R.
TYPES:     END OF TYS_DETAIL.
DATA: GT_DETAIL     TYPE STANDARD TABLE OF TYS_DETAIL,GT_DETAIL_TMP TYPE TABLE OF TYS_DETAIL,GT_DETAIL_KEY TYPE TABLE OF TYS_DETAIL.DATA FUNCTXT TYPE SMP_DYNTXT.DATA: I_BDCDATA   LIKE BDCDATA OCCURS 0 WITH HEADER LINE.*ALV定义
DATA: GT_FIELDCAT TYPE LVC_T_FCAT,GV_CODE     LIKE SY-UCOMM,GW_LAYOUT   TYPE LVC_S_LAYO,I_CELLCLR   TYPE LVC_S_SCOL. "单元格颜色
TYPES: BEGIN OF SLIS_EXTAB,FCODE LIKE RSMPE-FUNC,END OF SLIS_EXTAB.
TYPES: SLIS_T_EXTAB TYPE SLIS_EXTAB OCCURS 1.
DATA:LS_CELLTAB TYPE LVC_S_STYL.
DATA LS_STABLE TYPE LVC_S_STBL.
DATA:GS_FIELDCAT TYPE LVC_S_FCAT.
DATA:GT_HEADER TYPE TABLE OF CHAR30,GV_CHAR30 TYPE CHAR30.
*子ALV调用
DATA:LT_FIELDCAT TYPE LVC_T_FCAT,LS_FCAT     TYPE LVC_S_FCAT,LS_SELFIELD TYPE SLIS_SELFIELD.SELECTION-SCREEN BEGIN OF BLOCK BLK2 WITH FRAME TITLE TEXT-T02.
SELECT-OPTIONS: S_RECEP FOR ADR6-SMTP_ADDR NO INTERVALSMODIF ID MAL,"收件人S_SCR FOR ADR6-SMTP_ADDR  NO INTERVALS "抄送人MODIF ID MAL.
SELECTION-SCREEN END OF BLOCK BLK2 .END-OF-SELECTION.PERFORM FRM_SEND_MAIL.FORM FRM_SEND_MAIL .DATA: BCS_EXCEPTION        TYPE REF TO CX_BCS,ERRORTEXT            TYPE STRING,LCL_SEND_REQUEST     TYPE REF TO CL_BCS,LCL_DOCUMENT         TYPE REF TO CL_DOCUMENT_BCS,LCL_RECIPIENT        TYPE REF TO IF_RECIPIENT_BCS,LCL_SENDER           TYPE REF TO CL_CAM_ADDRESS_BCS,T_ATTACHMENT_HEADER  TYPE SOLI_TAB,WA_ATTACHMENT_HEADER LIKE LINE OF T_ATTACHMENT_HEADER,ATTACHMENT_SUBJECT   TYPE SOOD-OBJDES,SOOD_BYTECOUNT       TYPE SOOD-OBJLEN,MAIL_TITLE           TYPE SO_OBJ_DES,T_MAILTEXT           TYPE SOLI_TAB,WA_MAILTEXT          LIKE LINE OF T_MAILTEXT,SEND_TO              TYPE ADR6-SMTP_ADDR,SENT                 TYPE OS_BOOLEAN,LV_MAILNAME          TYPE SOOD-OBJDES,BINARY_CONTENT       TYPE SOLIX_TAB.DATA:LV_SMTP_ADDR          TYPE ADR6-SMTP_ADDR." Set mail subjectMAIL_TITLE     = '菜鸟&SAP库存比对邮件推送'.LV_MAILNAME = '菜鸟&SAP库存比对报表'." Set mail contextDATA(LV_STRING) = |您好,附件是菜鸟&SAP库存比对报表,请查阅,谢谢|.WA_MAILTEXT    = LV_STRING.APPEND WA_MAILTEXT TO T_MAILTEXT.CONCATENATE '事务码为:ZM390 程序为:ZMM390。' 'Job时间:' SY-DATUM '' SY-UZEIT INTO WA_MAILTEXT.APPEND WA_MAILTEXT TO T_MAILTEXT.TRY.
* Create send requestLCL_SEND_REQUEST = CL_BCS=>CREATE_PERSISTENT( ).
* Create new document with mailtitle and mailtextgLCL_DOCUMENT = CL_DOCUMENT_BCS=>CREATE_DOCUMENT( I_TYPE    = 'RAW' "#EC NOTEXTI_TEXT    = T_MAILTEXTI_LANGUAGE = SY-LANGUI_SUBJECT = MAIL_TITLE ).* add document to send requestLCL_SEND_REQUEST->SET_DOCUMENT( LCL_DOCUMENT ).*收件人LOOP AT S_RECEP.LV_SMTP_ADDR = S_RECEP-LOW.LCL_RECIPIENT = CL_CAM_ADDRESS_BCS=>CREATE_INTERNET_ADDRESS( LV_SMTP_ADDR  ).LCL_SEND_REQUEST->ADD_RECIPIENT( LCL_RECIPIENT ).ENDLOOP.* 抄送人LOOP AT S_SCR.LV_SMTP_ADDR = S_SCR-LOW.LCL_RECIPIENT = CL_CAM_ADDRESS_BCS=>CREATE_INTERNET_ADDRESS( LV_SMTP_ADDR ).LCL_SEND_REQUEST->ADD_RECIPIENT(I_RECIPIENT  = LCL_RECIPIENTI_EXPRESS    = 'X'I_COPY       = 'X'I_BLIND_COPY = ' 'I_NO_FORWARD = ' ' ).ENDLOOP.
*     添加抄送人*lcl_document->CLEAR LV_STRING.PERFORM FRM_SET_DOCUMENT_BODY  CHANGING BINARY_CONTENT.LCL_DOCUMENT->ADD_ATTACHMENT(I_ATTACHMENT_TYPE    = 'XLS'                        " 附件格式I_ATTACHMENT_SUBJECT = LV_MAILNAME                  " 附件名称
*      i_attachment_size    = size                         "附件大小I_ATTACHMENT_LANGUAGE = SY-LANGU
*      I_ATTACHMENT_HEADER   =I_ATT_CONTENT_HEX    = BINARY_CONTENT).            "附件内容LCL_SEND_REQUEST->SET_DOCUMENT( LCL_DOCUMENT ).SENT = LCL_SEND_REQUEST->SEND( I_WITH_ERROR_SCREEN = 'X' ).CATCH CX_BCS INTO BCS_EXCEPTION.ERRORTEXT = BCS_EXCEPTION->IF_MESSAGE~GET_TEXT( ).MESSAGE ERRORTEXT TYPE 'S' DISPLAY LIKE 'E'.ENDTRY.COMMIT WORK.ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  FRM_SET_DOCUMENT_BODY
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      <--P_BINARY_CONTENT  text
*----------------------------------------------------------------------*
FORM FRM_SET_DOCUMENT_BODY  CHANGING PT_BODY TYPE SOLIX_TAB.TYPES: BEGIN OF TY_DATA,WERKS  TYPE ZOWMS_DAYSTOCK_R-WERKS, "工厂MATNR  TYPE ZOWMS_DAYSTOCK_R-MATNR, "物料MAKTX  TYPE MAKT-MAKTX,             "物料描述LGORT  TYPE ZOWMS_DAYSTOCK_R-LGORT, "库存地点LGOBE  TYPE T001L-LGOBE,            "库存地点描述CHARG  TYPE ZOWMS_DAYSTOCK_R-CHARG, "批次LABST  TYPE MARD-LABST,             "SAP库存数量OMENGE TYPE ZOWMS_DAYSTOCK_R-OMENGE, "未结库存WMENGE TYPE ZOWMS_DAYSTOCK_R-WMENGE, "OFS未传明细TMENGE TYPE ZOWMS_DAYSTOCK_R-TMENGE, "SAP库存数量(含未结)SMENGE TYPE ZOWMS_DAYSTOCK_R-SMENGE, "WMS库存数量CYMENG TYPE MSEG-MENGE.             "差异数量TYPES: END OF TY_DATA.DATA:LV_STRING   TYPE STRING,LC_MIMETYPE TYPE CHAR64 VALUE 'APPLICATION/MSEXCEL;charset=utf-16le',LV_XATTACH  TYPE XSTRING,LV_VALUE    TYPE STRING,LV_FLAG     TYPE C.DATA:LT_MAIL TYPE TABLE OF TY_DATA,LS_MAIL TYPE TY_DATA.CLEAR:GT_HEADER.APPEND '工厂' TO GT_HEADER.APPEND '物料' TO GT_HEADER.APPEND '物料描述' TO GT_HEADER.APPEND '库存地点' TO GT_HEADER.APPEND '库存地点描述' TO GT_HEADER.APPEND 'SAP库存数量' TO GT_HEADER.APPEND '未结库存' TO GT_HEADER.APPEND 'OFS未传SAP数量' TO GT_HEADER.APPEND 'SAP库存数量(含未结未传)' TO GT_HEADER.APPEND 'WMS库存数量' TO GT_HEADER.APPEND  '差异' TO GT_HEADER.LOOP AT GT_HEADER INTO GV_CHAR30.CONDENSE GV_CHAR30.LV_STRING = |{ LV_STRING }{ GV_CHAR30 }{ CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB }|.ENDLOOP.LV_STRING = LV_STRING && CL_ABAP_CHAR_UTILITIES=>CR_LF."发送有差异的邮件数据MOVE-CORRESPONDING GT_DETAIL[] TO LT_MAIL[].DELETE  LT_MAIL[] WHERE CYMENG EQ '0.000'."判断是否发送批次字段的数据DATA(LV_LINES1) = LINES( GT_HEADER ).IF LV_LINES1 = '11'.LV_FLAG = 'X'.ENDIF.DATA(LV_LINES) = LINES( GT_FIELDCAT ).LOOP AT LT_MAIL ASSIGNING FIELD-SYMBOL(<FS_STURC>).DO LV_LINES TIMES.IF SY-INDEX = 6 AND LV_FLAG = 'X'.CONTINUE.ENDIF.ASSIGN COMPONENT SY-INDEX OF STRUCTURE <FS_STURC> TO FIELD-SYMBOL(<FS_VALUE>).IF SY-SUBRC = 0.LV_VALUE = <FS_VALUE>.CONDENSE LV_VALUE.DATA(LV_LEN) = STRLEN( LV_VALUE ) - 1.IF LV_LEN > 0.IF LV_VALUE+LV_LEN = '-'.LV_VALUE = '-' && LV_VALUE(LV_LEN).CONDENSE LV_VALUE NO-GAPS.CLEAR LV_LEN.ENDIF.ENDIF.ELSE.LV_VALUE = ''.ENDIF.IF LV_LINES <> SY-INDEX.LV_STRING = |{ LV_STRING }{ LV_VALUE }{ CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB }|.ELSE.LV_STRING = |{ LV_STRING }{ LV_VALUE }{ CL_ABAP_CHAR_UTILITIES=>CR_LF }|.ENDIF.ENDDO.ENDLOOP.CALL FUNCTION 'SCMS_STRING_TO_XSTRING'EXPORTINGTEXT     = LV_STRINGMIMETYPE = LC_MIMETYPEIMPORTINGBUFFER   = LV_XATTACHEXCEPTIONSFAILED   = 1OTHERS   = 2.
* Add the file header for utf-16le. .IF SY-SUBRC = 0.CONCATENATE CL_ABAP_CHAR_UTILITIES=>BYTE_ORDER_MARK_LITTLELV_XATTACH INTO LV_XATTACH IN BYTE MODE.ENDIF.CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'EXPORTINGBUFFER     = LV_XATTACHTABLESBINARY_TAB = PT_BODY.
ENDFORM.

面向对象效果如下:

相关文章:

带EXCEL附件邮件发送相关代码

1.查看生成的邮件 2.1 非面向对象的方式&#xff08;demo直接copy即可&#xff09; ​ REPORT Z12. DATA: IT_DOCUMENT_DATA TYPE SODOCCHGI1,IT_CONTENT_TEXT TYPE STANDARD TABLE OF SOLISTI1 WITH HEADER LINE,IT_PACKING_LIST TYPE TABLE OF SOPCKLSTI1 WITH HEADER LIN…...

【算法作业】均分卡牌,购买股票

问题描述 John 有两个孩子&#xff0c;在 John病逝后&#xff0c;留下了一组价值不一定相同的魔卡&#xff0c; 现在要求你设计一种策略&#xff0c;帮John的经管人将John的这些遗产分给他的两个孩子&#xff0c;使得他们获得的遗产差异最小&#xff08;每张魔卡不能分拆&#…...

python作业

题目 分析 步骤&#xff1a; 判断先画空格还是数字 当有n层时&#xff0c;第i层有多少个空格第i层的起始数字是几&#xff0c;结尾是几&#xff0c;即数字取值范围当有n层时&#xff0c;第i层有多少个数字 代码 模式A n int(input("请输入行数:")) for i in range(…...

【Linux的文件篇章 - 管道文件】

Linux学习笔记---013 Linux的管道文件1、进程间通信1.1、进程为什么要通信&#xff1f;1.2、进程如何通信&#xff1f;1.3、进程通信的方式&#xff1f; 2、匿名管道2.1、理解一种现象2.2、基本概念和管道原理 3、管道的使用3.1、代码样例3.2、如何使用管道通信呢&#xff1f;3…...

C# 局部静态函数,封闭方法中的最佳选择

C# 局部静态函数&#xff0c;封闭方法中的最佳选择 简介特性 应用场景辅助计算递归与尾递归优化筛选与过滤操作查找与映射操作 生命周期静态局部函数 vs 普通局部函数性能封装性可读性 简介 C# 局部静态函数&#xff08;Local Static Functions&#xff09;是一种函数作用域内…...

【MySQL】MySQL 8.4.0 长期支持版(LTS)安装

就在2024年 “5.1” 节前&#xff0c;MySQL官方发布了8.4.0长期支持版&#xff08;LTS - Long Term Support&#xff09;。根据官方提供的文档&#xff0c;在本地虚拟机进行安装测试。 安装、配置和启动过程记录如下&#xff1a; 第一步&#xff0c;上传到安装包&#xff08;my…...

nest中的ORM

在 Nest.js 中执行 SQL 查询通常涉及使用 TypeORM 或 Sequelize 这样的 ORM&#xff08;对象-关系映射&#xff09;库。这些库使得在 Nest.js 应用程序中连接和操作 SQL 数据库变得更加简单和直观。 以下是一个使用 TypeORM 在 Nest.js 中执行 SQL 查询的示例代码&#xff1a;…...

TCP(Transmission Control Protocol,传输控制协议)如何保证数据的完整性?

TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;通过一系列机制来保证数据传输的可靠性和无错性&#xff0c;这些机制主要包括&#xff1a; 校验和&#xff1a;TCP报文段包含一个校验和字段&#xff0c;用于检测数据在传输过程中是否出错。…...

Numpy库介绍

NumPy&#xff08;Numerical Python的缩写&#xff09;是Python中用于科学计算的一个强大的库。它提供了高性能的多维数组对象&#xff08;即ndarray&#xff09;、用于处理这些数组的工具以及用于数学函数操作的函数。让我为你介绍一下它的一些主要功能&#xff1a; 1. 多维数…...

临时有事无法及时签字盖章?试试用契约锁设置“代理人”

遇到“领导休假中、在开重要会议、外出考察或者主任医生手术中等”一段时间内不方便或者无法及时签字盖章的情况怎么办&#xff1f;业务推进不了只能干等&#xff1f; 契约锁电子签及印控平台支持印章、签名“临时授权”、“代理签署”&#xff0c;实现指定人、指定时间段、指定…...

数据库权限管理

1.查看系统级权限&#xff08;global level) Select * from mysql.user\G; 2.查看数据库中所有表的权限 Select * from mysql.db\G 3.远程连接数据库 第一步在有数据库服务上的主机上&#xff1a;授权 grant all on *.* to root192.168.40.83 identified by Zxy20234; 第…...

如何创建一个 Django 应用并连接到数据库

简介 Django 是一个用 Python 编写的免费开源的 Web 框架。这个工具支持可扩展性、可重用性和快速开发。 在本教程中&#xff0c;您将学习如何为一个博客网站建立与 MySQL 数据库的初始基础。这将涉及使用 django-admin 创建博客 Web 应用程序的骨架结构&#xff0c;创建 MyS…...

【算法刷题day44】Leetcode:518. 零钱兑换 II、377. 组合总和 Ⅳ

文章目录 Leetcode 518. 零钱兑换 II解题思路代码总结 Leetcode 377. 组合总和 Ⅳ解题思路代码总结 草稿图网站 java的Deque Leetcode 518. 零钱兑换 II 题目&#xff1a;518. 零钱兑换 II 解析&#xff1a;代码随想录解析 解题思路 先遍历物品&#xff0c;再遍历背包。 代码…...

『51单片机』AT24C02[IIC总线]

存储器的介绍 ⒈ROM的功能⇢ROM的数据在程序运行的时候是不容改变的&#xff0c;除非你再次烧写程序&#xff0c;他就会改变&#xff0c;就像我们的书本&#xff0c;印上去就改不了了&#xff0c;除非再次印刷&#xff0c;这个就是ROM的原理。 注→在后面发展的ROM是可以可写可…...

Jenkins与Rancher的配合使用

Jenkins和Rancher是两个常用的DevOps工具&#xff0c;可以很好地配合使用来实现持续集成和持续部署。 Jenkins是一个开源的自动化构建工具&#xff0c;可以实现自动化的代码构建、测试和部署等一系列操作。可以通过Jenkins来触发构建任务&#xff0c;例如从代码仓库中拉取最新的…...

GIS入门,常用的多边形平滑曲线算法介绍和JavaScript的多边形平滑曲线算法库chaikin-smooth的实现原理和使用

前言 本章介绍一下常用的多边形平滑曲线算法及其使用案例。 多边形平滑算法通常用于图形处理或计算机图形学中,以使线条或曲线在连接处平滑过渡,而不出现明显的棱角或断裂。多边形平滑算法有多种实现方法,其中一些常见的有下面几种: 贝塞尔曲线插值(Bezier Curve Interpo…...

气膜体育馆内部的采光效果如何?—轻空间

气膜体育馆内部的采光效果如何&#xff1f;这是许多人对这种创新建筑的一个关键关注点。 首先&#xff0c;气膜体育馆的采光性非常好。阳光透过屋顶时以漫射光的方式进入室内&#xff0c;这种透射方式使得室内的光线柔和而均匀。从内部观察&#xff0c;整个屋顶就像一个连续的明…...

矩阵的对称正定性判决(复习)

文章目录 本科学的数学知识忘的太快了 如何判断一个实矩阵是否是对称正定 在线性代数中&#xff0c;一个实对称矩阵是否为正定可以通过以下方法判断&#xff1a; 对称性&#xff1a; 首先&#xff0c;确认矩阵是否对称&#xff0c;即矩阵的转置是否等于其本身。 特征值检查&…...

网络安全之DHCP详解

DHCP&#xff1a;Dynamic Host Configration Protocol 动态主机配置协议 某一协议的数据是基于UDP封装的&#xff0c;当它想确保自己的可靠性时&#xff0c;这个协议要么选确认重传机制&#xff0c;要么选周期性传输。 DHCP是确认重传&#xff0c;【UDP|DHCP】,当DHCP分配完地…...

【Proteus】LED呼吸灯 直流电机调速

1.LED呼吸灯 #include <REGX51.H> sbit LEDP2^0; void delay(unsigned int t) {while(t--); } void main() {unsigned char time,i;while(1){for(time0;time<100;time){for(i0;i<20;i){LED0;delay(time);LED1;delay(100-time);}}for(time100;time>0;time--){fo…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象&#xff0c;只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意&#xff1a;它移动的位置必须是相连的有内容的单元格…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...

Go 并发编程基础:通道(Channel)的使用

在 Go 中&#xff0c;Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式&#xff0c;用于在多个 Goroutine 之间传递数据&#xff0c;从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)

一、OpenBCI_GUI 项目概述 &#xff08;一&#xff09;项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台&#xff0c;其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言&#xff0c;首次接触 OpenBCI 设备时&#xff0c;往…...

手机平板能效生态设计指令EU 2023/1670标准解读

手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读&#xff0c;综合法规核心要求、最新修正及企业合规要点&#xff1a; 一、法规背景与目标 生效与强制时间 发布于2023年8月31日&#xff08;OJ公报&…...

五子棋测试用例

一.项目背景 1.1 项目简介 传统棋类文化的推广 五子棋是一种古老的棋类游戏&#xff0c;有着深厚的文化底蕴。通过将五子棋制作成网页游戏&#xff0c;可以让更多的人了解和接触到这一传统棋类文化。无论是国内还是国外的玩家&#xff0c;都可以通过网页五子棋感受到东方棋类…...

WEB3全栈开发——面试专业技能点P7前端与链上集成

一、Next.js技术栈 ✅ 概念介绍 Next.js 是一个基于 React 的 服务端渲染&#xff08;SSR&#xff09;与静态网站生成&#xff08;SSG&#xff09; 框架&#xff0c;由 Vercel 开发。它简化了构建生产级 React 应用的过程&#xff0c;并内置了很多特性&#xff1a; ✅ 文件系…...

怎么开发一个网络协议模块(C语言框架)之(六) ——通用对象池总结(核心)

+---------------------------+ | operEntryTbl[] | ← 操作对象池 (对象数组) +---------------------------+ | 0 | 1 | 2 | ... | N-1 | +---------------------------+↓ 初始化时全部加入 +------------------------+ +-------------------------+ | …...