SAP PP- OPK8生产订单打印 配置Smart form.
OPK8 正常情况下是不可以配置Smart form 的
OPK8进入工单打印配置界面,选择Forms, 你会发现只有Script form 和PDF form(Adobe form)可选的,没有配置smartform的地方

这时候如果想要使用Smart form 可以用以下这种解决方案
通过IMG或OPK8访问的SAP PP车间控制输出文书工作的标准配置并未更改,以受益于Smartforms(ECC6 EHP 0)的引入。这限制了SapScript的使用,尽管SapScript能够提供设计自己的输出的功能,但仍有一些限制。我们遇到的主要限制之一是要求拥有能够打印条形码的打印机,以便将其添加到输出中,而使用Smartforms,您可以在任何以图形形式发送的打印机上打印条形码。除此之外,Smartforms的设计和定制要容易得多,这促使我寻找一种配置SAP以允许Smartforms的方法。
1.OPK8 配置form时,选择一个已经存在的Script form。这个form只是一个傀儡,实际打印不会调用该form.

2. 配置自定义的Print Program.

注意程序结构

两个必须的include
INCLUDE ppcoincl.
INCLUDE lcodrinc.
一个必须的子例程,名字必须为print_sub
完整程序如下
*&--------------------------------------------------------------------*
*& Report ZRMP0698_01
*&--------------------------------------------------------------------*
*&
*&--------------------------------------------------------------------*
REPORT zrmp0698_01 MESSAGE-ID zmp.
TABLES: nast.
INCLUDE znmp0698_revision_log IF FOUND.
INCLUDE ppcoincl.
INCLUDE lcodrinc.
INCLUDE znmp0698_01_top. * entry to print
PERFORM print_sub. *&---------------------------------------------------------------------*
*& Form PRINT_SUB
*&---------------------------------------------------------------------*
* entry to print
*----------------------------------------------------------------------*
FORM print_sub.
CLEAR: gv_fmname,gt_components,gt_operations,gs_header,gs_control,gs_options.
PERFORM sub_get_data.
PERFORM sub_get_fm.
PERFORM sub_set_print_param USING gs_control gs_options.
PERFORM sub_perform_output.
ENDFORM. *&---------------------------------------------------------------------*
*& Form SUB_GET_DATA
*&---------------------------------------------------------------------*
* Get input data
*----------------------------------------------------------------------*
FORM sub_get_data.
DATA:lv_number TYPE bapi_order_key-order_number.
DATA:ls_objects TYPE bapi_pp_order_objects.
DATA:ls_return TYPE bapiret2.
DATA:
lt_header TYPE STANDARD TABLE OF bapi_order_header1, "Header Info
lt_position TYPE STANDARD TABLE OF bapi_order_item, "Position Info
lt_operation TYPE STANDARD TABLE OF bapi_order_operation1, "Operation Info
lt_component TYPE STANDARD TABLE OF bapi_order_component. "Copmonents Info DATA:
lt_vali TYPE STANDARD TABLE OF api_vali. DATA:lv_object TYPE ausp-objek. DATA:lv_t TYPE char8. READ TABLE caufvd_tab INTO DATA(ls_tab) INDEX 1.
lv_number = ls_tab-aufnr. * 1. Issue error message if order doesn’t exist
IF lv_number IS INITIAL. CALL FUNCTION 'NAST_PROTOCOL_UPDATE'
EXPORTING
msg_arbgb = gc_msg_id
msg_nr = gc_msg_nr
msg_ty = gc_msg_e
msg_v1 = 'Order does not exist!'(m01)
msg_v2 = ' '
msg_v3 = ' '
msg_v4 = ' '
EXCEPTIONS
message_type_not_valid = 1
no_sy_message = 2
OTHERS = 3.
IF sy-subrc <> 0.
" UPDATE ERROR LOG, NO NEED CHECK.
ENDIF.
ENDIF. SELECT aufnr,
a~objnr,
stat
INTO TABLE @DATA(lt_jest)
FROM aufk AS a JOIN jest AS b
ON a~objnr = b~objnr
WHERE aufnr = @lv_number
AND stat = @gc_stat
AND inact = ''. IF sy-subrc = 0.
CALL FUNCTION 'NAST_PROTOCOL_UPDATE'
EXPORTING
msg_arbgb = gc_msg_id
msg_nr = gc_msg_nr
msg_ty = gc_msg_e
msg_v1 = 'Order has been delete!'(m02)
msg_v2 = ' '
msg_v3 = ' '
msg_v4 = ' '
EXCEPTIONS
message_type_not_valid = 1
no_sy_message = 2
OTHERS = 3.
IF sy-subrc <> 0.
" UPDATE ERROR LOG, NO NEED CHECK.
ENDIF.
ENDIF. ls_objects-header = abap_true.
ls_objects-operations = abap_true.
ls_objects-components = abap_true.
ls_objects-positions = abap_true. CALL FUNCTION 'BAPI_PRODORD_GET_DETAIL'
EXPORTING
number = lv_number
order_objects = ls_objects
IMPORTING
return = ls_return
TABLES
header = lt_header
position = lt_position
operation = lt_operation
component = lt_component. IF sy-subrc = 0.
IF lt_header IS NOT INITIAL.
READ TABLE lt_header INTO DATA(ls_header) INDEX 1.
IF sy-subrc = 0.
lv_object = ls_header-material.
PERFORM sub_convert_date USING sy-datum sy-uzeit
CHANGING gs_header-print_date gs_header-print_time.
gs_header-aufart = ls_header-order_type.
"Get special type CALL FUNCTION 'QC01_BATCH_VALUES_READ'
EXPORTING
i_val_matnr = ls_header-material
i_val_werks = ls_header-production_plant
i_val_charge = ls_header-batch
i_language = sy-langu
i_date = sy-datum
TABLES
t_val_tab = lt_vali
EXCEPTIONS
no_class = 1
internal_error = 2
no_values = 3
no_chars = 4
OTHERS = 5.
IF sy-subrc = 0.
SORT lt_vali BY atnam.
READ TABLE lt_vali INTO DATA(ls_vali) WITH KEY atnam = gc_atnam BINARY SEARCH.
IF sy-subrc = 0.
gs_header-special_type = ls_vali-atwtb.
ENDIF.
ELSE.
CALL FUNCTION 'NAST_PROTOCOL_UPDATE'
EXPORTING
msg_arbgb = sy-msgid
msg_nr = sy-msgno
msg_ty = sy-msgty
msg_v1 = sy-msgv1
msg_v2 = sy-msgv2
msg_v3 = sy-msgv3
msg_v4 = sy-msgv4
EXCEPTIONS
message_type_not_valid = 1
no_sy_message = 2
OTHERS = 3.
IF sy-subrc <> 0.
" UPDATE ERROR LOG, NO NEED CHECK.
ENDIF.
ENDIF. gs_header-batch = ls_header-batch.
*Begin DEL:Joe Wang:23-Apr-2021:ECR202002738
* SELECT SINGLE licha INTO gs_header-licha
* FROM mcha
* WHERE matnr = ls_header-material
* AND werks = ls_header-production_plant
* AND charg = ls_header-batch.
*End DEL:Joe Wang:23-Apr-2021:ECR202002738 *Begin ADD:Joe Wang:23-Apr-2021:ECR202002738
SELECT SINGLE licha INTO gs_header-licha
FROM mch1
WHERE matnr = ls_header-material
AND charg = ls_header-batch
AND lvorm = ''.
*End ADD:Joe Wang:23-Apr-2021:ECR202002738 IF sy-subrc = 0.
IF gs_header-licha IS INITIAL.
gs_header-licha = gs_header-batch.
ENDIF.
ENDIF. gs_header-aufnr = ls_header-order_number.
gs_header-plant = ls_header-production_plant.
gs_header-fevor = ls_header-production_scheduler.
gs_header-co_dispo = ls_header-mrp_controller.
gs_header-matnr = ls_header-material. SELECT pmatn INTO gs_header-pmatn UP TO 1 ROWS
FROM mvke
WHERE matnr = ls_header-material
*Begin ADD:Joe Wang:23-Apr-2021:ECR202002738
and dwerk = ls_header-production_plant.
*End ADD:Joe Wang:23-Apr-2021:ECR202002738
ENDSELECT.
IF sy-subrc NE 0.
"no acctions here , keep gs_header-pmatn
ENDIF.
gs_header-co_matxt = ls_header-material_text.
READ TABLE lt_position INTO DATA(ls_pos) INDEX 1.
IF sy-subrc = 0.
gs_header-verid = ls_pos-production_version. SELECT SINGLE text1 INTO gs_header-vers_text
FROM mkal
WHERE matnr = ls_header-material
AND werks = ls_header-production_plant
AND verid = ls_pos-production_version.
IF sy-subrc NE 0.
"no acctions here , keep gs_header-vers_text
ENDIF.
ENDIF. SELECT a~doknr,
a~dokvr,
c~datuv
INTO TABLE @DATA(lt_draw)
FROM drad AS a
INNER JOIN draw AS b
ON a~dokar = b~dokar AND a~doknr = b~doknr AND a~dokvr = b~dokvr AND a~doktl = b~doktl
LEFT JOIN aenr AS c ON b~aennr = c~aennr
WHERE a~objky = @ls_header-material
AND a~dokar = @gc_dokar
AND b~dokst = @gc_dokst. IF sy-subrc = 0.
SORT lt_draw BY datuv DESCENDING.
READ TABLE lt_draw INTO DATA(ls_draw) INDEX 1.
IF sy-subrc = 0.
gs_header-doknr = ls_draw-doknr.
gs_header-dokvr = ls_draw-dokvr.
ENDIF.
ENDIF.
gs_header-gamng = ls_header-target_quantity.
gs_header-gamng_st = gs_header-gamng.
CONDENSE gs_header-gamng_st NO-GAPS.
SHIFT gs_header-gamng_st RIGHT DELETING TRAILING gc_zero.
SHIFT gs_header-gamng_st RIGHT DELETING TRAILING gc_point.
CONDENSE gs_header-gamng_st NO-GAPS.
gs_header-unit = ls_header-unit. PERFORM sub_convert_date USING ls_header-start_date ls_header-start_time
CHANGING gs_header-start_date lv_t. PERFORM sub_convert_date USING ls_header-finish_date ls_header-finish_time
CHANGING gs_header-finish_date lv_t. SELECT ablad INTO gs_header-ablad UP TO 1 ROWS
FROM afpo
WHERE aufnr = ls_header-order_number.
ENDSELECT.
IF sy-subrc NE 0.
"no acctions here , keep gs_header-ablad
ENDIF.
ENDIF.
ENDIF. IF lt_component IS NOT INITIAL.
SELECT rsnum,
rspos,
schgt
INTO TABLE @DATA(lt_resb)
FROM resb FOR ALL ENTRIES IN @lt_component
WHERE rsnum = @lt_component-reservation_number
AND rspos = @lt_component-reservation_item.
IF sy-subrc = 0.
SORT lt_resb BY rsnum rspos.
ENDIF.
ENDIF. LOOP AT lt_component INTO DATA(ls_cm).
APPEND INITIAL LINE TO gt_components ASSIGNING FIELD-SYMBOL(<fs_cm>). *Begin DEL:Joe Wang:23-Apr-2021:ECR202002738
* <fs_cm>-item = ls_cm-reservation_item.
*End DEL:Joe Wang:23-Apr-2021:ECR202002738 *Begin ADD:Joe Wang:23-Apr-2021:ECR202002738
<fs_cm>-item = ls_cm-item_number.
*End ADD:Joe Wang:23-Apr-2021:ECR202002738 <fs_cm>-matnr = ls_cm-material.
<fs_cm>-maktx = ls_cm-material_description.
<fs_cm>-erfmg = ls_cm-entry_uom.
<fs_cm>-bdmng = ls_cm-req_quan.
<fs_cm>-bdmng_st = ls_cm-req_quan.
CONDENSE <fs_cm>-bdmng_st NO-GAPS.
<fs_cm>-batch = ls_cm-batch.
READ TABLE lt_resb INTO DATA(ls_resb) WITH KEY rsnum = ls_cm-reservation_number
rspos = ls_cm-reservation_item BINARY SEARCH.
IF sy-subrc = 0.
<fs_cm>-schgt = ls_resb-schgt.
ENDIF. UNASSIGN <fs_cm>.
ENDLOOP. SORT gt_components BY item. IF lt_operation IS NOT INITIAL.
SELECT steus,
txt
INTO TABLE @DATA(lt_t430t)
FROM t430t
FOR ALL ENTRIES IN @lt_operation
WHERE steus = @lt_operation-opr_cntrl_key
AND spras = @sy-langu
AND plnaw = @gc_plnaw. IF sy-subrc = 0.
SORT lt_t430t BY steus.
ENDIF. SELECT aufpl,
aplzl,
vgw01,
vge01,
vgw02,
vge02,
vgw03,
vge03
INTO TABLE @DATA(lt_afvv)
FROM afvv
FOR ALL ENTRIES IN @lt_operation
WHERE aufpl = @lt_operation-routing_no
AND aplzl = @lt_operation-counter.
IF sy-subrc = 0.
SORT lt_afvv BY aufpl aplzl.
ENDIF.
ENDIF. LOOP AT lt_operation INTO DATA(ls_op).
APPEND INITIAL LINE TO gt_operations ASSIGNING FIELD-SYMBOL(<fs_op>).
<fs_op>-vornr = ls_op-operation_number.
<fs_op>-ltxa1 = ls_op-description.
<fs_op>-steus = ls_op-opr_cntrl_key.
READ TABLE lt_t430t INTO DATA(ls_430t) WITH KEY steus = ls_op-opr_cntrl_key BINARY SEARCH.
IF sy-subrc = 0.
<fs_op>-steutxt = ls_430t-txt.
ENDIF. <fs_op>-arbpl = ls_op-work_center.
<fs_op>-co_rueck = ls_op-conf_no. READ TABLE lt_afvv INTO DATA(ls_afvv) WITH KEY aufpl = ls_op-routing_no
aplzl = ls_op-counter BINARY SEARCH.
IF sy-subrc = 0.
<fs_op>-setup = |{ ls_afvv-vgw01 } { ls_afvv-vge01 }|.
<fs_op>-machine = |{ ls_afvv-vgw02 } { ls_afvv-vge02 }|.
<fs_op>-labor = |{ ls_afvv-vgw03 } { ls_afvv-vge03 }|.
ENDIF.
UNASSIGN <fs_op>.
ENDLOOP.
SORT gt_operations BY vornr.
ENDIF. ENDFORM. *&---------------------------------------------------------------------*
*& Form SUB_CONVERT_DATE
*&---------------------------------------------------------------------*
* Convert date into local time
*----------------------------------------------------------------------*
FORM sub_convert_date USING i_date TYPE syst_datum
i_time TYPE syst_uzeit
CHANGING
c_date TYPE char10
c_time TYPE char8.
DATA: lv_date TYPE sy-datum,
lv_time TYPE sy-uzeit.
DATA:lv_tzone TYPE timezone.
DATA:lv_timesp TYPE tzonref-tstamps."TIME STAMPS CALL FUNCTION 'GET_SYSTEM_TIMEZONE'
IMPORTING
timezone = lv_tzone
EXCEPTIONS
customizing_missing = 1
OTHERS = 2. IF sy-subrc <> 0.
CALL FUNCTION 'NAST_PROTOCOL_UPDATE'
EXPORTING
msg_arbgb = sy-msgid
msg_nr = sy-msgno
msg_ty = sy-msgty
msg_v1 = sy-msgv1
msg_v2 = sy-msgv2
msg_v3 = sy-msgv3
msg_v4 = sy-msgv4
EXCEPTIONS
message_type_not_valid = 1
no_sy_message = 2
OTHERS = 3.
IF sy-subrc <> 0.
" UPDATE ERROR LOG, NO NEED CHECK.
ENDIF.
ENDIF. CALL FUNCTION 'IB_CONVERT_INTO_TIMESTAMP'
EXPORTING
i_datlo = i_date
i_timlo = i_time
i_tzone = lv_tzone
IMPORTING
e_timestamp = lv_timesp. IF sy-subrc <> 0.
CALL FUNCTION 'NAST_PROTOCOL_UPDATE'
EXPORTING
msg_arbgb = sy-msgid
msg_nr = sy-msgno
msg_ty = sy-msgty
msg_v1 = sy-msgv1
msg_v2 = sy-msgv2
msg_v3 = sy-msgv3
msg_v4 = sy-msgv4
EXCEPTIONS
message_type_not_valid = 1
no_sy_message = 2
OTHERS = 3.
IF sy-subrc <> 0.
" UPDATE ERROR LOG, NO NEED CHECK.
ENDIF.
ENDIF. CALL FUNCTION 'IB_CONVERT_FROM_TIMESTAMP'
EXPORTING
i_timestamp = lv_timesp
i_tzone = sy-zonlo
IMPORTING
e_datlo = lv_date
e_timlo = lv_time. IF sy-subrc = 0.
CONCATENATE lv_date+0(4) lv_date+4(2) lv_date+6(2) INTO c_date SEPARATED BY gc_sp_1.
CONCATENATE lv_time+0(2) lv_time+2(2) lv_time+4(2) INTO c_time SEPARATED BY gc_sp_2.
ENDIF.
ENDFORM. *&---------------------------------------------------------------------*
*& Form FRM_SET_PRINT_PARAM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_LS_CONTROL_PARAM text
* <--P_LS_COMPOSER_PARAM text
*----------------------------------------------------------------------*
FORM sub_set_print_param CHANGING pv_control_param TYPE ssfctrlop
pv_composer_param TYPE ssfcompop. DATA: ls_itcpo TYPE itcpo.
DATA: lv_repid TYPE sy-repid.
DATA: lv_device TYPE tddevice.
DATA: lv_retcode TYPE sysubrc.
lv_repid = sy-repid. CALL FUNCTION 'WFMC_PREPARE_SMART_FORM'
EXPORTING
pi_nast = nast
pi_repid = lv_repid
IMPORTING
pe_returncode = lv_retcode
pe_itcpo = ls_itcpo
pe_device = lv_device. IF sy-subrc = 0 AND lv_retcode = 0.
MOVE-CORRESPONDING ls_itcpo TO pv_composer_param.
pv_composer_param-tdnewid = abap_true.
pv_control_param-device = lv_device.
pv_control_param-no_dialog = abap_true.
pv_control_param-getotf = ls_itcpo-tdgetotf.
pv_control_param-langu = nast-spras.
ELSE.
* pv_composer_param-tdarmod = abap_true.
pv_composer_param-tdnewid = abap_true.
pv_composer_param-tdimmed = abap_true.
pv_composer_param-tddest = print_co-desti.
* pv_control_param-device = 'LP01'.
pv_control_param-no_dialog = abap_true.
* pv_control_param-getotf = ls_itcpo-tdgetotf.
pv_control_param-langu = print_co-spras.
ENDIF.
ENDFORM. *&---------------------------------------------------------------------*
*& Form SUB_GET_FM
*&---------------------------------------------------------------------*
* This routine dynamically passes the function module name
*----------------------------------------------------------------------*
FORM sub_get_fm .
DATA:lv_name TYPE rvari_vnam. " ABAP: Name of Variant Variable
DATA:l_numb TYPE tvarv_numb . " ABAP: Current selection number
MOVE print_co-drvar TO l_numb .
CONCATENATE gc_sfname print_co-lstid INTO lv_name.
* Fetch the smartform name based on output type and Current selection
* number
SELECT SINGLE low INTO gv_formname FROM tvarv " Table of variables in selection criteria
WHERE name = lv_name
AND type = gc_type_p
AND numb = l_numb. "Print Varient
CLEAR: gv_fmname.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = gv_formname
IMPORTING
fm_name = gv_fmname
EXCEPTIONS
no_form = 1
no_function_module = 2
OTHERS = 3.
IF sy-subrc NE 0.
CALL FUNCTION 'NAST_PROTOCOL_UPDATE'
EXPORTING
msg_arbgb = sy-msgid
msg_nr = sy-msgno
msg_ty = sy-msgty
msg_v1 = sy-msgv1
msg_v2 = sy-msgv2
msg_v3 = sy-msgv3
msg_v4 = sy-msgv4
EXCEPTIONS
message_type_not_valid = 1
no_sy_message = 2
OTHERS = 3.
IF sy-subrc <> 0.
" UPDATE ERROR LOG, NO NEED CHECK.
ENDIF. ENDIF. ENDFORM. " sub_get_fm *&---------------------------------------------------------------------*
*& Form sub_perform_output
*&---------------------------------------------------------------------*
* This routine populates the final tables and structures being
* passed to the smartforms
*----------------------------------------------------------------------*
FORM sub_perform_output . * The smartform calling function
IF gv_fmname IS NOT INITIAL. CALL FUNCTION gv_fmname
EXPORTING
control_parameters = gs_control
output_options = gs_options
it_components = gt_components
it_operations = gt_operations
is_header = gs_header
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
IF sy-subrc <> 0.
CALL FUNCTION 'NAST_PROTOCOL_UPDATE'
EXPORTING
msg_arbgb = sy-msgid
msg_nr = sy-msgno
msg_ty = sy-msgty
msg_v1 = sy-msgv1
msg_v2 = sy-msgv2
msg_v3 = sy-msgv3
msg_v4 = sy-msgv4
EXCEPTIONS
message_type_not_valid = 1
no_sy_message = 2
OTHERS = 3.
IF sy-subrc <> 0.
" UPDATE ERROR LOG, NO NEED CHECK.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. " sub_perform_output
真正的smartform 配置在表TVARV 里,改信息需要workbance 工作台传输请求。注意请求号0007的配置 和OPK8 的Print variant 有关。

搞定!
SAP PP- OPK8生产订单打印 配置Smart form.的更多相关文章
- SAP S/4HANA生产订单创建时使用的工厂数据是从什么地方带出来的
大家如果使用我github上的这段代码创建S/4HANA的生产订单时,一定会发现,我在代码里并没有硬编码来指定生产订单的ID,然而运行时会发现我在系统里配置的这个2800被自动使用了,这是怎么做到的呢 ...
- SAP S/4HANA生产订单的BAdI增强点之Initialize方法
在S/4HANA里创建生产订单时,有一个增强点WORKORDER_UPDATE: 这个CAUFVDB里存放的是生产订单抬头级别的数据: 我们来观察下运行时这个结构里存放的数据. 请大家用我github ...
- PP读取生产订单状态
转自http://blog.csdn.net/heng0757/article/details/6656089 传递订单号码,可以返回该订单的状态 REPORT ZCMH2.TABLES : JES ...
- PP生产订单成本的计划、控制和结算
SAP系统成本分析功能关注订单的成本,通过对计划成本和实际成本的比较分析,可以发现成本控制上的问题,以便及时解决问题.1.订单成本计划在基础数据齐全的基础上,系统可以自动滚算生产订单的成本.生产订单计 ...
- SAP PP 生产订单变更记录保存
*&---------------------------------------------------------------------* *& 包括 ZXCO1U01 *&am ...
- PP生产订单创建、下达、报工、收货、投料
转自http://blog.sina.com.cn/s/blog_69fb8eb60102vpjd.html SAP 物料订单创建.下达.报工.收货与投料(ABAP代码) (2015-06-03 22 ...
- SAP生产订单状态
SAP系统的常见订单状态如下: · CRTD (创建):标识生产订单刚刚创建,此时禁止做后续发料和报工确认等操作: · PREL (部分下达):当生产订单部分下达时,如仅下 ...
- SAP 生产订单变更管理 OCM Order Changement Management
SAP OCM Order Changement Management 一.目的 订单变更管理系统是当我们的订单(生产订单.计划订单.采购订单)已经存在的时候,其物料主数据或销售数据有变更时,我们可 ...
- PP篇11 增、改生产订单组件BAPI
增.改生产订单组件BAPI BAPI_ALM_ORDER_MAINTAIN USE BAPI_ALM_ORDER_MAINTAIN TO CREATE OR CHANGE PM WORK ORDER ...
随机推荐
- 帝国cms一键排版删除段落前两个空格和换行符
打开网站根目录下e\class\function.php文件:一.删除两个空格: 搜索:$nbsp=' '; 改为:$nbsp=''; 二.删除<br>换行符 搜索: $ok='<b ...
- Istio实践(2)-流量控制及服务间调用
前言:接上一篇istio应用部署,本文介绍通过virtualservice实现流量控制,并通过部署client端进行服务调用实例 1. 修改virtualservice组件,实现权重占比访问不同版本服 ...
- 解构华为云HE2E项目中的容器技术应用
摘要:本文从容器技术应用的角度解构了HE2E项目的代码仓库配置.镜像构建.及docker-compose的部署方式.希望通过本篇文章分享可以使更多的开发者了解容器技术和华为云. 本文分享自华为云社区& ...
- React 日常记录
以下是学习重点 原文地址 浏览器环境 JS解析和执行.绘制.事件处理.静态资源加载和处理 GUI渲染线程和Javascript线程 调度策略 先到先得(FCFS) 对短进程不利 对I/O密集不利 单处 ...
- 通过实例程序验证与优化谈谈网上很多对于Java DCL的一些误解以及为何要理解Java内存模型
个人创作公约:本人声明创作的所有文章皆为自己原创,如果有参考任何文章的地方,会标注出来,如果有疏漏,欢迎大家批判.如果大家发现网上有抄袭本文章的,欢迎举报,并且积极向这个 github 仓库 提交 i ...
- 元素偏移量 offset 系列
offset 概述 offset翻译过来就是偏移量,我们使用offset系列相关属性可以动态的得到该元素的位置(偏移).大小等. 获得元素距离带有定位父元素的位置 获得元素自身的大小(宽度高度) 注意 ...
- python学习-Day18
目录 今日内容详细 模块 循环导入问题 判断文件类型 py文件可以被分为两种类型 内置变量 __ name __ 模块的查找顺序 验证先从内存空间中查找 验证再从内置模块中查找 验证sys.path ...
- [笔记] 轮廓线 DP
是状态 DP 的一种,主要是对于网格图状压,实现 \(O(1)\) 转移的一种处理方式. oooo---- ----x - 是状压了信息的位置,x 是当前更新的位置. 应用价值 可以一格一格考虑状态, ...
- Linux进程总结
一个执着于技术的公众号 进程 进程,是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.它的执行需要系统分配资源创建实体之后,才能进行.举个例子: ...
- jQuery操作标签,jQuery事件操作,jQuery动画效果,前端框架
jQuery操作标签 jQuery代码查找标签绑定的变量名推荐使用 $xxxEle 样式类操作 addClass();// 添加指定的CSS类名. removeClass();// 移除指定的CSS类 ...