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

ABAP开发-批量导入BAPI和BDC_1

系列文章目录


文章目录

  • 系列文章目录
    • @[TOC](文章目录)
  • 前言
  • 一、概念
  • 二、BDC和BAPI数据导入
    • 1、BDC数据导入(录屏)
    • 2、BAPI数据导入
  • 三、实例
    • 1、BAPI
    • 2、BDC
  • 总结

前言


一、概念

SAP中,对一个事务码反复操作并且达到批量处理数据的效果,即批量导入,重复操作一类数据,从而用程序模拟业务人员的操作,节约时间。
批量导入的方法从原理上看分两大类:屏幕录制、功能调用

二、BDC和BAPI数据导入

1、BDC数据导入(录屏)

TCODE:SHDB
Batch Input是一种数据批量输入SAP系统的辅助程序,SAP系统的资料、格式可以通过Batch Input录入SAP系统,Batch Input机制是模拟事务处理将数据录入R/3系统,Batch Input类似SAP的CATT,控制性好,处理能力强
最后的保底方案

2、BAPI数据导入

TCODE:SE37
BAPI是一种SAP系统预留的标准对象的操作函数,可使用SE37查看代码
开发者通过自定义程序,按照操作函数的使用规范,把一定格式的数据,导入到BAPI的参数里,系统会自动创建标准对象,从而达到批处理效果
更可靠,若存在BAPI,推荐用BAPI,不用BDC,系统标准的函数-可以操作标准的对象,不会受到屏幕变化自开发等影响
实现步骤: SE37测试(BAPI_PO_CHANGE->BAPI_TRANSACTION_COMMIT)-》写程序

三、实例

1、BAPI

对采购订单行项目的短文本进行修改

TCODE:ME22
找一个标准采购订单如下,原本的短文本如下,看之后返回,以防在下面操作时被锁
在这里插入图片描述
TCODE:SE37
输入功能模块:BAPI_PO_CHANGE
点显示,可以看到具体代码,标准程序不要点修改!!
在这里插入图片描述
点执行
在这里插入图片描述
在导入参数的PURCHASEORDER中的值中填入采购单号
在这里插入图片描述
点击表中的POITEM,点击值“详细信息查看”
点击“单一结构”
在这里插入图片描述
PO_ITEM中填00010(修改第一个行项目)
因为要修改短文本,所以在SHORT_TEXT中填入修改后的短文本“测试质量流量计&CS200D029C03”
点击对号
在这里插入图片描述
然后退出,就可以看到已经改了一条目
在这里插入图片描述
点击POITEMX,目的:告诉系统改的是谁
在这里插入图片描述
点击“单一条目”
在这里插入图片描述
将PO_ITEM值改为00010,因为要修改的是短文本,所以将SHORT_TEXT值填上"X",点对号
在这里插入图片描述
点击执行
在这里插入图片描述
然后再到se37中,执行测试序列
输入功能模块名称BAPI_TRANSACTION_COMMIT,点击功能模块-》执行-》测试序列
在这里插入图片描述
在这里插入图片描述
测试序列中输入功能模块BAPI_PO_CHANGE、BAPI_TRANSACTION_COMMIT,即要更改的是BAPI_PO_CHANGE,提交更改到数据库 BAPI_TRANSACTION_COMMIT,然后点执行
在这里插入图片描述
同样的,输入采购订单号,PO_ITEM、PO_ITEMX中分别输入要更改的内容
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
都填好之后,返回点执行
在这里插入图片描述
点退回
在这里插入图片描述
来到如下界面,点执行,就提交了
在这里插入图片描述
在这里插入图片描述
再打开ME22,查看该采购订单的短文本,显示已经被修改为“测试质量流量计&CS200D029C03”
在这里插入图片描述

注:SE37中,填入功能模块名称-》显示-》函数模块文档
函数模块文档中通常包含以下部分:
在这里插入图片描述
以BAPI__PO_CHANGE为例
1、Functionality该功能模块的作用
BAPI_PO_CHANGE使我们能改变采购订单

2、Functions in Detail功能详情
Authorization授权
当创建采购订单时,会检查以下授权对象
M_BEST_BSA (document type in PO)采购订单中的文档类型
M_BEST_EKG (purchasing group in PO)采购订单中的采购组
M_BEST_EKO (purchasing organization in PO)采购订单中的采购组织
M_BEST_WRK (plant in PO)采购工厂

3、Transfer具体有哪些字段
Purchase order number采购订单编号:PurchaseOrder字段唯一标识采购订单,必须填充此字段才能执行CHANGE方法;
Header data标头数据:采购订单的Header数据在PoHeader表中传输;
Item data项目数据:采购订单的item数据存储在Poltem表中,数量和交货日期/时间的更改应该在PoSchedule表中进行
Services and items服务和限制:不能使用Change方法对现有项执行更改,只能创建新项目
Conditions条件
Supplier and delivery address供应商和交货地址
Partner roles合作伙伴角色
Export/import data导出导入数据

4、RETURN返回信息
返回信息
如果 PO 已成功更改,则 HEADER 和 item 表中将填充 PO 中的信息。
返回消息
消息在 Return 参数中返回。这还包含有关接口数据是被错误填充还是可能被错误填充的信息(启发式接口检查)。如果已成功创建 PO,则 PO 编号也会与相应的消息一起放置在返回表中。

5、Restrictions限制
使用此功能模块,无法:
创建分包组件(只能使用现有组件)
创建配置(只能使用现有配置)
将文档附加到采购订单
更改外贸数据
更改服务数据
更改或重新分解BOM
无法使用BAPI创建或更改具有开票计划的PO项目

6、Example
对采购订单进行更改的示例
标头数据更改 、项目的更改、交货时间表变更、账户分配变更 、条件变化 、更换合作伙伴

SE37中查看标准程序,事实上我们最不需要关心的是源代码,因为通常是极其复杂的,我们需要关心的是导入、导出、正在更改、表中的信息
导入:
可以看到PURCHASEORDER这个参数不是可选的,即若要修改采购订单,则必须涉及到采购订单号
在这里插入图片描述
表:
上面的实例中,要修改的是短文本,那么可以从表中看到
在这里插入图片描述
在这里插入图片描述
双击关联类型
在这里插入图片描述
可以看到采购订单的采购订单项目,比如PO_ITEM是采购凭证的项目编号,即me22中的项目字段;SHORT_TEXT是要修改的短文本
在这里插入图片描述
在这里插入图片描述
同样的,可以在表中看到POITEMX,双击其关联类型
在这里插入图片描述
可以看到和POITEM是对应的
在这里插入图片描述

2、BDC

TCODE:SHDB
点击新建记录
在这里插入图片描述
输入“记录”、“要录屏的事务代码”、点击“开始记录”
在这里插入图片描述
会跳转到如下界面
在这里插入图片描述
修改短文本,点击保存,弹出会话框,点击“是”
在这里插入图片描述
可以看到如下,要改的采购凭证、项目号、短文本
点击返回,弹出对话框“是否保存更改到记录条目”,点击“是”
通过EKPO-TXZ01(01)、EKPO-TXZ01(02)来区分改的是采购订单的哪个行项目(即改的是哪个项目号的)
在这里插入图片描述
在这里插入图片描述
选中记录,点击程序
在这里插入图片描述
填入程序名,自己起一个名字,点√
在这里插入图片描述
此时,在se38里即可查到此次创建的程序
在这里插入图片描述
需要将代码改为如下:

REPORT zyt36_me22_36130NO STANDARD PAGE HEADING LINE-SIZE 255.* Include bdcrecx1_s:
* The call transaction using is called WITH AUTHORITY-CHECK!
* If you have own auth.-checks you can use include bdcrecx1 instead.
*include bdcrecx1_s.
DATA:   bdcdata LIKE bdcdata    OCCURS 0 WITH HEADER LINE."定义BDC,CALL TRANSACTION时需要传的
DATA:   bdcmessage LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE."用来接收CALL TRANSACTION回来以后的MESSAGE*** End generated data section ***START-OF-SELECTION."调用perform"准备BDC的数据PERFORM bdc_dynpro      USING 'SAPMM06E' '0105'.
*perform bdc_field       using 'BDC_CURSOR'"和光标相关,不用管
*                              'RM06E-BSTNR'.PERFORM bdc_field       USING 'BDC_OKCODE''/00'.PERFORM bdc_field       USING 'RM06E-BSTNR''4500000056'."record-BSTNR_001."PO HEADER号,自己填入采购订单号4500000056PERFORM bdc_dynpro      USING 'SAPMM06E' '0120'.
*perform bdc_field       using 'BDC_CURSOR'
*                              'EKPO-TXZ01(01)'.PERFORM bdc_field       USING 'BDC_OKCODE''=BU'.
*perform bdc_field       using 'RM06E-EBELP'
*                              record-EBELP_002."Item的行项目号PERFORM bdc_field       USING 'EKPO-TXZ01(01)''测试测试BDC质量流量计&CS200D029C03'."record-TXZ01_01_003."短文本PERFORM bdc_dynpro      USING 'SAPLSPO1' '0300'.PERFORM bdc_field       USING 'BDC_OKCODE''=YES'.
*perform bdc_transaction using 'ME22'."根据上面的BDCDATA调用事务代码CALL TRANSACTION 'ME22' USING bdcdata"ME22代表的是事务代码;光标落在TRANSACTION上,按F1,可以弹出帮助文档,CALL TRANSACTION-USING中有CALL TRANSACTION的语法用法MODE 'N'    "N-no screen mode ,不弹出屏幕  A--all screen mode    E--only error screenUPDATE 'A'  "A/S :同步/异步MESSAGES INTO bdcmessage.  "用定义的变量BDCMESSAGE来接MESSAGE*如何确定BDC是否执行成功
*1、sy-subrc = 0  并且需要查看BDCMESSAGE,不能包含A/E/X
*2、sy-subrc <>0 失败,失败里面有一个特殊的情况:sy-subrc = 1001,标识屏幕上面的字段出现了问题,需要检查的bdcdata*成功了才需要提交数据库,否则 ROLL BACK回滚数据IF sy-subrc = 0."成功的第一个条件 sy-subrc = 0LOOP AT  bdcmessage INTO DATA(lw_message).IF lw_message-msgtyp = 'A' OR lw_message-msgtyp = 'E' OR lw_message-msgtyp = 'X'."包含其中任何一个,我们认为调用失败,需要回滚数据CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.EXIT."程序结束ENDIF.ENDLOOP.ELSE.WRITE: / '数据更新失败'.CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.EXIT.ENDIF."成功了才会进行提交的操作CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
* EXPORTING
*   WAIT          =
* IMPORTING
*   RETURN        =.*----------------------------------------------------------------------*
*        Start new screen                                              *
*----------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro.CLEAR bdcdata.bdcdata-program  = program.bdcdata-dynpro   = dynpro.bdcdata-dynbegin = 'X'.APPEND bdcdata.
ENDFORM.*----------------------------------------------------------------------*
*        Insert field                                                  *
*----------------------------------------------------------------------*
FORM bdc_field USING fnam fval.
*  IF FVAL <> NODATA.CLEAR bdcdata.bdcdata-fnam = fnam.bdcdata-fval = fval.APPEND bdcdata.
*  ENDIF.
ENDFORM.

在这里插入图片描述
检查-》激活-》执行,提示标准采购订单已更改
在这里插入图片描述
此时,ME22中即可看到修改后的短文本
在这里插入图片描述

代码解释:
(1)双击“定义BDC”的语句DATA: BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.中的 LIKE后的BDCDATA,显示如下:
显示的是为了调用transaction需要往里面填的值,用perform填这些的值,除了采购订单号和短文本需要我们自己填入,其他的都是默认录屏带出的
在这里插入图片描述
(2)perform

  • perform bdc_dynpro :给PROGRAM、DYNPRO 、DYNBEGIN赋值
*        Start new screen                                              *
*----------------------------------------------------------------------*
FORM BDC_DYNPRO USING PROGRAM DYNPRO.CLEAR BDCDATA.BDCDATA-PROGRAM  = PROGRAM.BDCDATA-DYNPRO   = DYNPRO.BDCDATA-DYNBEGIN = 'X'.APPEND BDCDATA.
ENDFORM.
  • perform bdc_field:给FNAM、FVAL赋值
FORM BDC_FIELD USING FNAM FVAL.
*  IF FVAL <> NODATA.CLEAR BDCDATA.BDCDATA-FNAM = FNAM.BDCDATA-FVAL = FVAL.APPEND BDCDATA.
*  ENDIF.
ENDFORM.

(3)CALL TRANSACTION ‘ME22’ USING BDCDATA"

CALL TRANSACTION 'ME22' USING BDCDATA"ME22代表的是事务代码;光标落在TRANSACTION上,按F1,可以弹出帮助文档,CALL TRANSACTION-USING中有CALL TRANSACTION的语法用法MODE 'N'"N-no screen mode ,不弹出屏幕UPDATE 'A'.

在这里插入图片描述
在这里插入图片描述
优化,事实上我们不想要上面的代码那样在里面直接写采购订单号和短文本,我们需要的是传入一个参数,然后来改;思路:定义一个structure,里面包含采购订单号和短文本

创建PERFORM子例程
在这里插入图片描述
在这里插入图片描述
由于这里直接双击perform创建子例程不成功,所以我直接在SE38创建了INCLUDE程序
在这里插入图片描述
在这里插入图片描述
再优化后的代码:
主程序:

REPORT zyt36_me22_36130NO STANDARD PAGE HEADING LINE-SIZE 255.
INCLUDE zyt36_me22_36130_d01.
INCLUDE zyt36_me22_36130_f01.INITIALIZATION."初始化事件里面,给想要改的PO赋值
*准备数据ls_bdc-ebeln = '4500000056'."PO numberls_bdc-ebelp = 10."ITEM number 行项目号ls_bdc-txz01 = 'demo测试测试BDC质量流量计&CS200D029C03'."短文本APPEND ls_bdc TO lt_bdc.START-OF-SELECTION.
*根据LS_BDC,对PO数据进行更改LOOP AT lt_bdc INTO ls_bdc.PERFORM change_po_bdc USING ls_bdc.ENDLOOP.

INCLUDE zyt36_me22_36130_d01:

*&---------------------------------------------------------------------*
*& Include ZYT36_ME22_36130_D01
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
*   data definition    从系统的复制来的
*----------------------------------------------------------------------*
DATA:   bdcdata LIKE bdcdata    OCCURS 0 WITH HEADER LINE."定义BDC ,CALL TRANSACTION时需要传的
DATA:   bdcmessage LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE."用来接收CALL TRANSACTION回来以后的MESSAGEDATA:BEGIN OF RECORD,
* data element: BSTNRbstnr_001(010),
* data element: AUFEPebelp_002(005),
* data element: TXZ01txz01_01_003(040),END OF record.
"定义一个数据结构,用来保存需要更改的PO数据
TYPES: BEGIN OF TY_S_BDC,EBELN TYPE EBELN,"PO号EBELP TYPE EBELP,"行项目号TXZ01 TYPE TXZ01,"短文本END OF TY_S_BDC.
*定义一个变量,用来存放我们需要更改的PO
DATA: LS_BDC TYPE TY_S_BDC,LT_BDC TYPE TABLE OF TY_S_BDC.

INCLUDE zyt36_me22_36130_f01:

*&---------------------------------------------------------------------*
*& Include ZYT36_ME22_36130_F01
*&---------------------------------------------------------------------**&---------------------------------------------------------------------*
*& Form change_po_bdc  根据传入参数修改PO短文本
*&      --> LS_DBC
*&---------------------------------------------------------------------*
FORM change_po_bdc USING is_bdc TYPE TY_S_BDC.DATA : lv_pos TYPE c LENGTH 2,lv_val TYPE bdc_fval."通过bdc的type得来的"调用perform"准备BDC的数据  录屏的形式生成performPERFORM bdc_dynpro      USING 'SAPMM06E' '0105'.
perform bdc_field       using 'BDC_CURSOR'"和光标相关,不用管'RM06E-BSTNR'.PERFORM bdc_field       USING 'BDC_OKCODE''/00'.PERFORM bdc_field       USING 'RM06E-BSTNR'is_dbc-ebeln."record-BSTNR_001."PO HEADER号,自己填入采购订单号4500000056PERFORM bdc_dynpro      USING 'SAPMM06E' '0120'.
*perform bdc_field       using 'BDC_CURSOR'
*                              'EKPO-TXZ01(01)'.PERFORM bdc_field       USING 'BDC_OKCODE''=BU'.
perform bdc_field       using 'RM06E-EBELP''0010'. "record-EBELP_002."Item的行项目号* 处理短文本的字段名字lv_pos = is_dbc-ebelp+2(2)."跳过前两位,取两位lv_val = 'EKPO-TXZ01(' && lv_pos && ')'."拼接短文本字段名PERFORM bdc_field       USING 'EKPO-TXZ01(01)''测试测试BDC质量流量计&CS200D029C03'."record-TXZ01_01_003."短文本PERFORM bdc_dynpro      USING 'SAPLSPO1' '0300'.PERFORM bdc_field       USING 'BDC_OKCODE''=YES'.
*perform bdc_transaction using 'ME22'."根据上面的BDCDATA调用事务代码CALL TRANSACTION 'ME22' USING bdcdata"ME22代表的是事务代码;光标落在TRANSACTION上,按F1,可以弹出帮助文档,CALL TRANSACTION-USING中有CALL TRANSACTION的语法用法MODE 'N'    "N-no screen mode ,不弹出屏幕  A--all screen mode    E--only error screenUPDATE 'A'  "A/S :同步/异步MESSAGES INTO bdcmessage.  "用定义的变量BDCMESSAGE来接MESSAGE*如何确定BDC是否执行成功
*1、sy-subrc = 0  并且需要查看BDCMESSAGE,不能包含A/E/X
*2、sy-subrc <>0 失败,失败里面有一个特殊的情况:sy-subrc = 1001,标识屏幕上面的字段出现了问题,需要检查的bdcdata*成功了才需要提交数据库,否则 ROLL BACK回滚数据IF sy-subrc = 0."成功的第一个条件 sy-subrc = 0LOOP AT  bdcmessage INTO DATA(lw_message).IF lw_message-msgtyp = 'A' OR lw_message-msgtyp = 'E' OR lw_message-msgtyp = 'X'."包含其中任何一个,我们认为调用失败,需要回滚数据CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.EXIT."程序结束ENDIF.ENDLOOP.ELSE.WRITE: / '数据更新失败'.CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.EXIT.ENDIF."成功了才会进行提交的操作CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
* EXPORTING
*   WAIT          =
* IMPORTING
*   RETURN        =.
ENDFORM.
*----------------------------------------------------------------------*
*        Start new screen                      从系统的复制来的                        *
*----------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro.CLEAR bdcdata.bdcdata-program  = program.bdcdata-dynpro   = dynpro.bdcdata-dynbegin = 'X'.APPEND bdcdata.
ENDFORM.*----------------------------------------------------------------------*
*        Insert field                          从系统的复制来的                           *
*----------------------------------------------------------------------*
FORM bdc_field USING fnam fval.
*  IF FVAL <> NODATA.CLEAR bdcdata.bdcdata-fnam = fnam.bdcdata-fval = fval.APPEND bdcdata.
*  ENDIF.
ENDFORM.

总结

相关文章:

ABAP开发-批量导入BAPI和BDC_1

系列文章目录 文章目录 系列文章目录[TOC](文章目录) 前言一、概念二、BDC和BAPI数据导入1、BDC数据导入&#xff08;录屏&#xff09;2、BAPI数据导入 三、实例1、BAPI2、BDC 总结 前言 一、概念 SAP中&#xff0c;对一个事务码反复操作并且达到批量处理数据的效果&#xff0…...

RabbitMQ七种工作模式之 RPC通信模式, 发布确认模式

文章目录 六. RPC(RPC通信模式)客户端服务端 七. Publisher Confirms(发布确认模式)1. Publishing Messages Individually(单独确认)2. Publishing Messages in Batches(批量确认)3. Handling Publisher Confirms Asynchronously(异步确认) 六. RPC(RPC通信模式) 客⼾端发送消息…...

并非传统意义上的整体二分

是的&#xff0c;如标题所见&#xff0c;本文章会以作者所理解的整体二分思想来介绍一系列整体二分食用方法。 一下内容均是作者本人理解&#xff0c;可能会与算法本身冲突。 1 本质 1.1 板子及从中的启发 我们在做主席树板子的时候&#xff0c;如果使用整体二分&#xff0…...

PostgreSQL的一主一从集群搭建部署 (同步)

一、实验环境 虚拟机名IP身份简称keep-postgres12-node1192.168.122.87主节点node1keep-postgres12-node2192.168.122.89备节点node2 二、安装数据库 源码包方式&#xff08;主&#xff09; 1、创建用户 [rootkeep-postgres12-node1 ~]# groupadd postgres [rootkeep-post…...

ios逆向某新闻 md5+aes

本期的案例比较简单&#xff0c;也许是ios逆向算法本来就比较简单的原因&#xff0c;所以前面我就多扯一些爬虫和逆向的东西。之前写的文章都是js逆向和android逆向的案例&#xff0c;这也是首篇ios的案例&#xff0c;所以会从入门开始讲起。 3大逆向对比 首先爬虫工程师大部…...

grpc的负载均衡

grpc的负载均衡分为client-side load balance和server-side load balance。 所谓的“客户端负载均衡”是指主调方调用被调方的时候&#xff0c;在grpc.DialContext里需要指定grpc.WithDefaultServiceConfig&#xff0c;这个DefaultServiceConfig默认是用pick-first策略。也支持…...

提升搜索体验!—— 推出 Elastic Rerank 模型(技术预览版)

作者&#xff1a;来自 Elastic Shubha Anjur Tupil 几分钟内即可开始使用 Elastic Rerank 模型&#xff1a;强大的语义搜索功能&#xff0c;无需重新索引&#xff0c;提供灵活性和成本控制&#xff1b;高相关性、顶级性能和文本搜索效率。 使用我们全新的先进跨编码器 Elastic …...

【51单片机】程序实验1112.外部中断-定时器中断

主要参考学习资料&#xff1a;B站【普中官方】51单片机手把手教学视频 前置知识&#xff1a;C语言 单片机套装&#xff1a;普中STC51单片机开发板A4标准版套餐7 码字不易&#xff0c;求点赞收藏加关注(•ω•̥) 有问题欢迎评论区讨论~ 目录 程序实验11&12.外部中断-定时器…...

webrtc-java:引领Java进入实时通信新时代

webrtc-java&#xff1a;引领Java进入实时通信新时代 项目地址:https://gitcode.com/gh_mirrors/we/webrtc-java 在现代互联网应用中&#xff0c;实时通信&#xff08;Real-Time Communication, RTC&#xff09;已成为连接人们的桥梁。而说起RTC技术的先锋&#xff0c;不得不…...

TongWeb7-东方通快速使用手册

TongWeb7-东方通 快速使用手册 文章目录 第1章 TongWeb7 产品介绍 1.1 概述1.2 规范支持 第2章 TongWeb7 安装 2.1 TongWeb7 安装要求 2.1.1 TongWeb7 支持的操作系统2.1.2 系统要求2.1.3 其他 2.2 安装TongWeb72.3TongWeb7 目录结构说明2.4 TongWeb7 的启动和停止 第3章 应用…...

JVM内存区块

大家好&#xff0c;经过前两篇文章的介绍&#xff0c;大家对数组也有了一定了解&#xff0c;其实所有的数组都是对象&#xff0c;我们在方法中引用数组的变量叫做引用变量&#xff08;简称引用&#xff09;&#xff0c;那么数组到底是存放在哪里的呢&#xff0c;为什么引用再出…...

C语言单元总结

黑色加粗表示刷题刷到这样的题 红色加粗表示可能重要 单元一 程序设计宏观认识 C语言程序框架 C语言程序最基本的程序框架由两部分构成&#xff0c;分别是 1) 编译预处理 2) 函数组 C语言程序构成 C程序最大的特点就是所有的程序都是用函数来装配的&#xff0c;函数是构成…...

通过PS和Unity制作2D动画之一:创建形象

1、通过路径画出轮廓 使用路径的过程中&#xff0c;需要注意&#xff1a; 1&#xff09;如果使用形状工具作图&#xff0c;比如使用椭圆工具画正圆形&#xff0c;需要设置其属性为“路径”。 2&#xff09;使用路径选择工具&#xff0c;再按住Alt键点击某个路径&#xff0c;可…...

Notable是一款优秀开源免费的Markdown编辑器

一、Notable简介 ‌ Notable‌是一款开源的跨平台Markdown编辑器&#xff0c;支持Linux、MacOS、Windows以及国产操作系统等多种主流操作系统。它以其高颜值和强大的功能&#xff0c;成为了许多用户的首选工具。 主要特性 实时预览‌&#xff1a; Notable提供了实时预览功能&…...

基于MFC绘制门电路

MFC绘制门电路 1. 设计内容、方法与难点 本课题设计的内容包括了基本门电路中与门和非门的绘制、选中以及它们之间的连接。具体采用的方法是在OnDraw函数里面进行绘制&#xff0c;并设计元器件基类&#xff0c;派生出与门和非门&#xff0c;并组合了一个引脚类&#xff0c;在…...

C—指针初阶(2)

如果看完阁下满意的话&#xff0c;能否一键三连呢&#xff0c;我的动力就是大家的支持与肯定&#xff0c;冲&#xff01; 二级指针 我们先看概念以及作用&#xff1a;用来存放一级指针的地址的指针 先看例子&#xff0c;我们逐一分析 我们先分析上面那个“1” 标注那里&#x…...

Linux 基础环境的开发工具以及使用(下)

1. make / Makefile 自动化构建的工具 1&#xff09;引入 在我们进行一些大型的工程的时候&#xff0c;代码量是极其大&#xff0c;当我们代码在进行一系列的编译的时候&#xff0c;难免会出现一些错误&#xff0c;当我们对错误进行一系列的更改之后&#xff0c;难道我们需要…...

constexpr、const和 #define 的比较

constexpr、const 和 #define 的比较 一、定义常量 constexpr 定义&#xff1a;constexpr用于定义在编译期可求值的常量表达式。示例&#xff1a;constexpr int x 5;这里&#xff0c;x的值在编译期就确定为5。 const 定义&#xff1a;const表示变量在运行期间不能被修改&…...

期末复习-Hadoop综合复习

说明 以下内容仅供参考&#xff0c;提到不代表考到&#xff0c;请结合实际情况自己复习 目录 说明 一、题型及分值 二、综合案例题-部署Hadoop集群 或 部署Hadoop HA集群 案例 1&#xff1a;Hadoop 基础集群部署 案例 2&#xff1a;Hadoop HA 集群部署 案例 3&#xff…...

禁用SAP Hana错误密码锁定用户功能

背景 公司项目适配多种数据库其中包含SAP Hana&#xff0c;由于有同事的数据库连接工具保存了某个在用的数据库的旧密码&#xff0c;导致时不时会被锁用户。通过查询官方文档已解决&#xff0c;这里统一记录一下。 禁用密码锁定方法 以下按系统管理员和普通用户的解法分别列…...

Ubuntu 22.04加Windows AD域

说明&#xff1a;   Ubuntu 22.04系统通过realmd&#xff0c;sssd加入到 Active Directory 域&#xff0c;并为域用户配置sudo权限。同时为方便用户使用为Ubuntu系统安装wps与sogou中文输入法。 1. Ubuntu 22.04加入Windows AD域 1.1 首先配置网络&#xff0c;Ubuntu系统能…...

qt实现窗口的动态切换

先说一下整体思路。页面布局两个widget然后再将定时器和按钮关联起来。 定时器发出信号的时候&#xff0c;随着信号&#xff0c;不断地重新设置widget的宽度&#xff0c;实现窗口的动态切换。 具体操作如下&#xff1a; class QtWidgetsApplication4 : public QMainWindow {…...

第十七届山东省职业院校技能大赛 中职组“网络安全”赛项资源任务书样题②

第十七届山东省职业院校技能大赛 中职组“网络安全”赛项资源任务书样题② 模块A 基础设施设置与安全加固(200分)A-1 登录安全加固&#xff08;Windows, Linux&#xff09;A-2 Nginx安全策略&#xff08;Linux&#xff09;A-3日志监控&#xff08;Windows&#xff09;A-4中间件…...

【Vulkan入门】09-CreateFrameBuffer

目录 先叨叨git信息关键代码VulkanEnv::FindHostVisitbaleMemoryTypeIndex()TestPipeLine::CreateFramebuffers() 与网上大多数文章不同&#xff0c;其他文章基本上都使用窗口框架&#xff08;X11、GLFW、WSL等&#xff09;提供的surface来显示Vulkan渲染出的图像。我认为那样会…...

FPGA设计-Vivado的Off-Chip Termination设置问题

目录 简介: 设置规则: output strength(输出驱动器的电流驱动能力) slew rate(输出电压压摆率) Pull type(上下拉类型) On-chip termination(输入端/输出端的内置片上端接电阻) 输出端接电阻配置 简介: 经常遇到在FPGA设计时,很多人很迷惑这些关于硬件的终…...

GC常见垃圾回收算法,JVM分代模型

如何判断是垃圾&#xff1f;引用计数器和Root可达性算法 如何进行清除&#xff1f;标记清除、复制、标记整理 堆分代模型&#xff1f;Eden&#xff0c;Surevivor&#xff0c;Tenuring 一个对象从创建到消亡的过程&#xff1f; 对象什么时候进入老年代&#xff1f; 一、GC&a…...

面试题整理(三)

芯冰乐知识星球入口:...

可视化建模以及UML期末复习----做题篇

一、单项选择题。&#xff08;20小题&#xff0c;每小题2分,共40分&#xff09; 1、UML图不包括&#xff08; &#xff09; A、用例图 B、状态机图 C、流程图 D、类图 E、通信图 答案&#xff1a;C、流程图 UML中不包括传统意义上的流程图&#xff0c;流程图通常是指B…...

PostGIS分区表学习相关

在Postgresql中对空间数据进行表分区的实践_postgresql空间数据-CSDN博客文章浏览阅读1.4k次&#xff0c;点赞26次&#xff0c;收藏21次。Postgresql的分区功能允许将一个大表按照特定的规则拆分成多个小的分区表。这样做的好处在于&#xff0c;在查询数据时&#xff0c;可以只…...

JavaEE 【知识改变命运】03 多线程(3)

文章目录 多线程带来的风险-线程安全线程不安全的举例分析产出线程安全的原因&#xff1a;1.线程是抢占式的2. 多线程修改同一个变量&#xff08;程序的要求&#xff09;3. 原子性4. 内存可见性5. 指令重排序 总结线程安全问题产生的原因解决线程安全问题1. synchronized关键字…...

wordpress创建配置文件/活动推广方式都有哪些

258. Add Digits Digit root 数根问题 /*** param {number} num* return {number}*/ var addDigits function(num) {var b (num-1) % 9 1 ;return b; };//之所以num要-1再1;是因为特殊情况下&#xff1a;当num是9的倍数时&#xff0c;09的数字根和0的数字根不同。 性质说明 …...

学做网站论坛插件/外贸业务推广

SimpleViewpagerIndicator 项目地址&#xff1a;al4fun/SimpleViewpagerIndicator 简介&#xff1a;一个简单的 Viewpager 指示器&#xff0c;提供多种可选样式 更多&#xff1a;作者 提 Bug 标签&#xff1a; viewpager指示器- 写这个小控件是因为最近负责维护的一…...

福州网站建设网络公司排名/网站销售怎么推广

Matlab提供了两种方法进行聚类分析。 一种是利用 clusterdata函数对样本数据进行一次聚类&#xff0c;其缺点为可供用户选择的面较窄&#xff0c;不能更改距离的计算方法&#xff1b; 另一种是分步聚类&#xff1a;&#xff08;1&#xff09;找到数据集合中变量两两之间的相似性…...

网站建设新闻 常识/百度pc网页版入口

更多渗透技能 欢迎搜索公众号&#xff1a;白帽子左一一、Python反序列化 与PHP存在反序列化一样 Python也存在反序列化漏洞、并且Python反序列化更加强大 除了能反序列化当前代码中出现的类&#xff08;包括import引入的模块中的类&#xff09; 还能反序列化types创建的匿…...

做网站建设优化的公司/免费个人网站注册

1.内核对内存的分配overcommit_memory文件指定了内核针对内存分配的策略&#xff0c;其值可以是0、1、2。0&#xff0c; 表示内核将检查是否有足够的可用内存供应用进程使用&#xff1b;如果有足够的可用内存&#xff0c;内存申请允许&#xff1b;否则&#xff0c;内存申请失败…...

合肥知名网站建设公司/全球十大搜索引擎排名

我们在开发微信小程序的时候会发现用wx.getUserInfo方法获取到的用户国家、省份、城市等信息都是英文字母&#xff0c;要想获取中文信息&#xff0c;您只需在wx.getUserInfo中加上 lang:"zh_CN"这条语句就可以。 wx.getUserInfo({lang:"zh_CN",success: …...