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.的更多相关文章

  1. SAP S/4HANA生产订单创建时使用的工厂数据是从什么地方带出来的

    大家如果使用我github上的这段代码创建S/4HANA的生产订单时,一定会发现,我在代码里并没有硬编码来指定生产订单的ID,然而运行时会发现我在系统里配置的这个2800被自动使用了,这是怎么做到的呢 ...

  2. SAP S/4HANA生产订单的BAdI增强点之Initialize方法

    在S/4HANA里创建生产订单时,有一个增强点WORKORDER_UPDATE: 这个CAUFVDB里存放的是生产订单抬头级别的数据: 我们来观察下运行时这个结构里存放的数据. 请大家用我github ...

  3. PP读取生产订单状态

    转自http://blog.csdn.net/heng0757/article/details/6656089 传递订单号码,可以返回该订单的状态 REPORT  ZCMH2.TABLES : JES ...

  4. PP生产订单成本的计划、控制和结算

    SAP系统成本分析功能关注订单的成本,通过对计划成本和实际成本的比较分析,可以发现成本控制上的问题,以便及时解决问题.1.订单成本计划在基础数据齐全的基础上,系统可以自动滚算生产订单的成本.生产订单计 ...

  5. SAP PP 生产订单变更记录保存

    *&---------------------------------------------------------------------* *& 包括 ZXCO1U01 *&am ...

  6. PP生产订单创建、下达、报工、收货、投料

    转自http://blog.sina.com.cn/s/blog_69fb8eb60102vpjd.html SAP 物料订单创建.下达.报工.收货与投料(ABAP代码) (2015-06-03 22 ...

  7. SAP生产订单状态

    SAP系统的常见订单状态如下: ·        CRTD (创建):标识生产订单刚刚创建,此时禁止做后续发料和报工确认等操作: ·        PREL (部分下达):当生产订单部分下达时,如仅下 ...

  8. SAP 生产订单变更管理 OCM Order Changement Management

    SAP OCM Order Changement Management  一.目的 订单变更管理系统是当我们的订单(生产订单.计划订单.采购订单)已经存在的时候,其物料主数据或销售数据有变更时,我们可 ...

  9. PP篇11 增、改生产订单组件BAPI

    增.改生产订单组件BAPI BAPI_ALM_ORDER_MAINTAIN USE BAPI_ALM_ORDER_MAINTAIN TO CREATE OR CHANGE PM WORK ORDER ...

随机推荐

  1. C++怎么实现多态?

    C++通过函数重载或模板实现编译期多态(静态绑定),通过虚函数实现运行时多态(动态绑定). 1.函数重载 #include <stdio.h> int add(int a, int b) ...

  2. alipay 当面付扫码支付实战开发

    alipay 当面付扫码支付开发 参考官网地址:https://opendocs.alipay.com/open/194/105072 1.当面付介绍: 当面付包括付款码支付和扫码支付两种收款方式.适 ...

  3. 原生js 复选框全选案例

    注 : 本文章主要写功能 代码示例 : <body> <input type="checkbox" id="che" /><br& ...

  4. Go 语言字符串常见操作

    @ 目录 1. 字节数组 2. 头尾处理 3. 位置索引 4. 替换 5. 统计次数 6. 重复 7. 大小写 8. 去除字符 9. 字符串切片处理 10. 数值处理 1. 字节数组 字节与字符的区别 ...

  5. 执行Hive sql 报FAILED:Execution Error,return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask

    在hive Beeline命令行使用insert into ... select ...向hive表插入数据时,报FAILED:Execution Error,return code 2 from o ...

  6. Vert.X CompositeFuture 用法

    CompositeFuture 是一种特殊的 Future,它可以包装一个 Future 列表,从而让一组异步操作并行执行:然后协调这一组操作的结果,作为 CompositeFuture 的结果.本文 ...

  7. 撸了一个 Feign 增强包 V2.0 升级版

    前言 大概在两年前我写过一篇 撸了一个 Feign 增强包,当时准备是利用 SpringBoot + K8s 构建应用,这个库可以类似于 SpringCloud 那样结合 SpringBoot 使用声 ...

  8. mysql的命令二

    1.插入数据 格式一:insert into table_name valuse (字段1,字段2): insert test1 values ('wangsan',22,'male'); 格式二:i ...

  9. .Net 6 WebApi 项目部署到 Linux 系统上的 Docker 容器

    1.创建一个基础的WebApi项目 注意:因为发布时候,Dockerfile文件必须和解决方案.cspro文件放在同级,所以建议勾上这个,当时遇到这个问题,导致打包镜像时找不到.cspro文件,搞了好 ...

  10. DirectX11--CPU与GPU计时器

    前言 GAMES104的王希说过: 游戏引擎的世界里,它的核心是靠Tick()函数把这个世界驱动起来. 本来单是一个CPU的计时器是不至于为其写一篇博客的,但把GPU计时器功能加上后就不一样了.在这一 ...