PLM系统同步到SAP修改、停用BOM数据

 

MATNR    1 类型    MATNR    CHAR    40    0    0    物料编号
WERKS    1 类型    WERKS_D    CHAR    4    0    0    工厂
STLAN    1 类型    STLAN    CHAR    1    0    0    物料清单用途 
STLAL    1 类型    STLAL    CHAR    2    0    0    备选物料清单 
AENNR    1 类型    AENNR    CHAR    12    0    0    变更编号
DSPST    1 类型    DATUV    DATS    8    0    0    有效起始日期
BMENG    1 类型    BMENG    QUAN    13    3    0    确认的数量 
MEINS    1 类型    MEINS    UNIT    3    0    0    基本计量单位
STLST    1 类型    STLST    NUMC    2    0    0    物料清单状态 

STLNR    1 类型    STNUM    CHAR    8    0    0    物料清单
STLAL    1 类型    STALT    CHAR    2    0    0    备选物料清单 
MATNR    1 类型    MATNR    CHAR    40    0    0    物料编号
WERKS    1 类型    WERKS_D    CHAR    4    0    0    工厂
STLAN    1 类型    STLAN    CHAR    1    0    0    物料清单用途 
ZBS    1 类型        CHAR    1    0    0    标识(I增、D删、C改)
SPOSN    1 类型    SPOSN    CHAR    4    0    0    BOM 项目号 
POSTP    1 类型    POSTP    CHAR    1    0    0    项目类别(物料单) 
IDNRK    1 类型    IDNRK    CHAR    40    0    0    BOM 组件
MENGE    1 类型    MENGE_D    QUAN    13    3    0    数量
MEINS    1 类型    MEINS    UNIT    3    0    0    基本计量单位
LGORT    1 类型    LGORT_D    CHAR    4    0    0    存储地点
TEXT1    1 类型    TEXT1    CHAR    50    0    0    文本
ZTEXT    1 类型    ZETEXT    CHAR    2048    0    0    长文本 

MATNR    1 类型    MATNR    CHAR    40    0    0    物料编号
WERKS    1 类型    WERKS_D    CHAR    4    0    0    工厂
STLAN    1 类型    STLAN    CHAR    1    0    0    物料清单用途 
STLAL    1 类型    STLAL    CHAR    2    0    0    备选物料清单 
AENNR    1 类型    AENNR    CHAR    12    0    0    变更编号
SPOSN    1 类型    SPOSN    CHAR    4    0    0    BOM 项目号 
IDNRK    1 类型    IDNRK    CHAR    40    0    0    BOM 组件
STATUS    1 类型    BAPI_MTYPE    CHAR    1    0    0    消息类型: S 成功,E 错误,W 警告,I 信息,A 中断
MESSAGE    1 类型    BAPI_MSG    CHAR    220    0    0    消息文本

FUNCTION zfm_plm_bom_change_tosap.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(INPUT) TYPE  ZSPP_PLM_BOM_CHANGE_INPUT OPTIONAL
*"  EXPORTING
*"     VALUE(OUTPUT) TYPE  ZSMM_PLM_BOM_OUT
*"----------------------------------------------------------------------

  DATA: lv_comp_qty TYPE p LENGTH 15 DECIMALS 3,
        lv_menge    TYPE p LENGTH 15 DECIMALS 3,
        lv_ausss    TYPE p LENGTH 5 DECIMALS 2,
        lv_tabix    TYPE sy-tabix.
  DATA:
    lv_warning TYPE capiflag-flwarning,    "出错标识
    ls_mbom    TYPE csap_mbom,             "BOM key信息
    ls_stko_i  TYPE stko_api01,            "BOM头部信息-输入
    ls_stko_o  TYPE stko_api02.            "BOM头部信息-输出
  DATA:
    lv_datuv TYPE csap_mbom-datuv,
    lv_aennr TYPE csap_mbom-aennr.
  DATA:
    lv_datum     TYPE csap_mbom-datuv,
    lv_base_quan TYPE p  DECIMALS 3,
    lv_bmeng     TYPE p  DECIMALS 3,
    lt_stpo_read TYPE TABLE OF stpo_api02,
    ls_stpo_read TYPE stpo_api02,
    lt_stko_read TYPE TABLE OF stko_api02,
    ls_stko_read TYPE stko_api02.

  DATA: lt_stpo TYPE TABLE OF stpo_api03,
        ls_stpo TYPE stpo_api03.

  DATA:lv_material    TYPE csap_mbom-matnr,
       lv_plant       TYPE csap_mbom-werks,
       lv_bom_usage   TYPE csap_mbom-stlan, "BOM用途
       lv_valid_from  TYPE csap_mbom-datuv, "有效起始日期
       lv_alternative TYPE csap_mbom-stlal. "备选物料清单
  DATA:lt_texts TYPE TABLE OF csltx_line.
  DATA:lt_lines LIKE TABLE OF tline.

  DATA:lv_uuid    TYPE  sysuuid_c32,
       lv_status  TYPE  bapi_mtype,
       lv_message TYPE  bapi_msg.
  DATA: ls_ifsort TYPE zsall_iflog_zfield.

  DATA:lv_type TYPE c.
  DATA:ls_return TYPE zsmm_bom_change_zhead.
  CLEAR ls_return.

*-----------------------------------------------------------------------
* 启用接口日志
  /log/start. output-uuid = /log/data-uuid.
*-----------------------------------------------------------------------
*  "校验表头数据
  IF input-head-matnr IS  INITIAL .
    ls_return-status = 'E'.
    ls_return-message = |{ ls_return-message }物料编码必须填写;|.
  ENDIF.
  IF input-head-werks IS  INITIAL .
    ls_return-status = 'E'.
    ls_return-message = |{ ls_return-message }工厂必须填写;|.
  ENDIF.
  IF input-head-stlan IS  INITIAL .
    ls_return-status = 'E'.
    ls_return-message = |{ ls_return-message }BOM用途必须填写;|.
  ENDIF.
  IF input-head-stlal IS  INITIAL .
    ls_return-status = 'E'.
    ls_return-message = |{ ls_return-message }BOM版本必须填写;|.
  ENDIF.
*  IF input-head-aennr IS  INITIAL .
*    ls_return-status = 'E'.
*    ls_return-message = |{ ls_return-message }ECN变更号必须填写;|.
*  ENDIF.
  IF input-head-dspst IS  INITIAL .
    ls_return-status = 'E'.
    ls_return-message = |{ ls_return-message }有效日期起必须填写;|.
  ENDIF.
  IF input-head-bmeng IS  INITIAL .
    ls_return-status = 'E'.
    ls_return-message = |{ ls_return-message }父件基本数量必须填写;|.
  ENDIF.
  IF input-head-stlst IS  INITIAL .
    ls_return-status = 'E'.
    ls_return-message = |{ ls_return-message }BOM状态必须填写;|.
  ENDIF.
  IF ls_return-status = 'E'.
    ls_return-matnr = input-head-matnr.
    ls_return-werks = input-head-werks.
    ls_return-stlan = input-head-stlan.
    ls_return-stlal = input-head-stlal.
    ls_return-aennr = input-head-aennr.
    lv_type = 'E'.
    APPEND ls_return TO output-data.
  ENDIF.

  IF lv_type <> 'E'.
    LOOP AT input-item INTO DATA(ls_item).
      CLEAR ls_return.
      CLEAR lv_message.
      IF ls_item-stlnr IS  INITIAL .
        ls_return-status = 'E'.
        lv_message = |{ lv_message }物料单必须填写;|.
      ENDIF.
      IF ls_item-stlal IS  INITIAL .
        ls_return-status = 'E'.
        lv_message = |{ lv_message }备料物料清单必须填写;|.
      ENDIF.
      IF ls_item-matnr IS  INITIAL .
        ls_return-status = 'E'.
        lv_message = |{ lv_message }物料编号必须填写;|.
      ENDIF.
      IF ls_item-werks IS  INITIAL .
        ls_return-status = 'E'.
        lv_message = |{ lv_message }工厂必须填写;|.
      ENDIF.
      IF ls_item-stlan IS  INITIAL .
        ls_return-status = 'E'.
        lv_message = |{ lv_message }BOM用途必须填写;|.
      ENDIF.
      IF ls_item-zbs IS  INITIAL .
        ls_return-status = 'E'.
        lv_message = |{ lv_message }标识必须填写;|.
      ENDIF.
      IF ls_item-idnrk IS  INITIAL .
        ls_return-status = 'E'.
        lv_message = |{ lv_message }BOM组件物料必须填写;|.
      ENDIF.
      IF ls_item-sposn IS  INITIAL .
        ls_return-status = 'E'.
        lv_message = |{ lv_message }BOM项目号必须填写;|.
      ENDIF.
      IF ls_item-postp IS  INITIAL .
        ls_return-status = 'E'.
        lv_message = |{ lv_message }项目类别必须填写;|.
      ENDIF.
      IF ls_return-status = 'E'.
        ls_return-matnr = ls_item-matnr.
        ls_return-werks = ls_item-werks.
        ls_return-stlan = ls_item-stlan.
        ls_return-stlal = ls_item-stlal.
        ls_return-idnrk = ls_item-idnrk.
        ls_return-sposn = ls_item-sposn.
        ls_return-message =  lv_message.
        APPEND ls_return TO output-data.
        lv_type = 'E'.
      ENDIF.
    ENDLOOP.
  ELSE.
    output-status = 'E'.
    output-message = '修改失败!'.
*-----------------------------------------------------------------------
* 记录调用第三方接口的实际请求参数与响应参数
    /log/return output-status output-message ls_ifsort.
*-----------------------------------------------------------------------
  ENDIF.


  IF lv_type <> 'E'.
    CLEAR: lv_datum.
    CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
      EXPORTING
        date_internal            = input-head-dspst
      IMPORTING
        date_external            = lv_datum
      EXCEPTIONS
        date_internal_is_invalid = 1
        OTHERS                   = 2.
    CLEAR:lt_stpo_read.
    input-head-matnr  = |{ input-head-matnr ALPHA = IN }|.
    input-head-stlal  = |{ input-head-stlal ALPHA = IN }|.
    CALL FUNCTION 'CSAP_MAT_BOM_READ'
      EXPORTING
        material    = input-head-matnr
        plant       = input-head-werks
        bom_usage   = input-head-stlan
        alternative = input-head-stlal
        valid_from  = lv_datum
        valid_to    = lv_datum
*     IMPORTING
*       FL_WARNING  =
      TABLES
        t_stpo      = lt_stpo_read
        t_stko      = lt_stko_read
      EXCEPTIONS
        error       = 1
        OTHERS      = 2.
    READ TABLE lt_stko_read INTO ls_stko_read INDEX 1.
    CLEAR :lv_base_quan,lv_bmeng.
    PERFORM frm_units_string_convert USING ls_stko_read-base_quan CHANGING lv_base_quan  .
    PERFORM frm_units_string_convert USING input-head-bmeng  CHANGING lv_bmeng  .
    IF  lv_base_quan <> lv_bmeng OR ls_stko_read-base_unit <> input-head-meins .
      ls_stko_i-base_quan = input-head-bmeng.   "父项基本数量
      ls_stko_i-base_unit = input-head-meins.   "基本单位
    ENDIF.

    CLEAR:lv_datuv,lv_aennr.

    lv_aennr = input-head-aennr.
    IF  input-head-dspst IS NOT INITIAL.
      lv_datuv = input-head-dspst.
    ENDIF.
    CLEAR ls_stko_i.
    "抬头数据
    lv_material    = input-head-matnr."父项物料
    lv_plant       = input-head-werks."工厂
    lv_bom_usage   = input-head-stlan."BOM用途
    lv_valid_from  = input-head-dspst."有效起始日期
    lv_alternative = input-head-stlal."备选物料清单
    lv_aennr       = input-head-aennr. "ECN变更号
    IF input-head-stlan = '2'.
      ls_stko_i-bom_status = '02'.
    ELSE.
      ls_stko_i-bom_status = input-head-stlst .
    ENDIF.
    IF input-head-stlan = '3'.
      lv_alternative = lv_alternative + 1.
    ENDIF.
    MOVE-CORRESPONDING ls_stko_read TO ls_stko_i.
    ls_stko_i-base_quan = input-head-bmeng .
    ls_stko_i-base_unit = input-head-meins .

    DATA:lv_index TYPE i.

    CLEAR ls_item.
    LOOP AT input-item INTO ls_item.
      lv_index = lv_index + 1.
      "检查行项目是否需要变更
      READ TABLE lt_stpo_read INTO ls_stpo_read WITH KEY item_no   = ls_item-sposn
                                                         component = ls_item-idnrk.
      IF sy-subrc = 0.
        MOVE-CORRESPONDING ls_stpo_read TO ls_stpo.
      ENDIF.

      ls_item-idnrk  = |{ ls_item-idnrk ALPHA = IN }|.
      ls_item-sposn  = |{ ls_item-sposn ALPHA = IN }|.

      "新项目
      ls_stpo-item_no    = ls_item-sposn.  "BOM 项目号

      ls_stpo-item_categ = ls_item-postp.  "项目类别
      ls_stpo-component  = ls_item-idnrk.  "组件物料号
      ls_stpo-comp_qty   = ls_item-menge.  "数量
      ls_stpo-comp_unit  = ls_item-meins.  "单位
      ls_stpo-issue_loc  = ls_item-lgort.  "仓储地点

      ls_stpo-rel_cost  = 'X'.  "标识:与成本核算相关的项目
      ls_stpo-rel_prod  = 'X'.  "标识:与生产相关项目
      ls_stpo-rel_sales  = 'X'.  "标识:与销售相关项目

      ls_item-stlnr  = |{ ls_item-stlnr ALPHA = IN }|.
      ls_item-stlal  = |{ ls_item-stlal ALPHA = IN }|.
      ls_stpo-bom_no    = ls_item-stlnr. "物料单
      ls_stpo-bom_alt   = lv_alternative.

      IF ls_item-zbs = 'D'.
        ls_stpo-fldelete = 'X'.
      ENDIF.

      IF ls_stpo-usage_prob = '0'."在更改模式中,如果usage_prob等于0,则不会更新
        CLEAR:ls_stpo-usage_prob.
      ENDIF.
      ls_stpo-identifier = 'ITEM' && lv_index.

      IF ls_item-ztext IS INITIAL.
        ls_item-ztext = ls_item-text1.
      ENDIF.
*      IF ls_stpo-item_categ = 'T'.
*        CLEAR:ls_stpo-id_comp,
*              ls_stpo-component.
*        ls_stpo-item_text1 = ls_item-idnrk.
*      ELSE.
*        ls_stpo-component = ls_item-idnrk.
*        ls_stpo-item_text1 = ls_item-ztext.
*      ENDIF.
*      DATA(lv_len) = strlen( ls_item-ztext ).
*      IF lv_len > 40 .
*        ls_stpo-item_text2 = ls_item-ztext+40(*).
*      ENDIF.
*      CLEAR:lt_lines.
*      CALL FUNCTION 'C14W_STRING_TO_TLINE'
*        EXPORTING
*          i_string    = ls_item-ztext
*        TABLES
*          e_tline_tab = lt_lines.
*      LOOP AT lt_lines INTO DATA(wa_text_line).
*        lt_texts = VALUE #( BASE lt_texts
*          ( object_id = '2'
*            identifier = ls_stpo-identifier
*            bom_no = ls_stko_read-bom_no
*            item_node = ls_stpo-item_node
*            item_count = ls_stpo-item_count
*            tdformat = wa_text_line-tdformat
*            tdline = wa_text_line-tdline  ) ).
*      ENDLOOP.

      DATA: l_pos TYPE i.
      DATA: l_string TYPE zetext.
      DATA: l_string1 TYPE zetext.
      DATA: l_string2 TYPE zetext.
      DATA: l_subrc TYPE i.
      DATA: l_tdformat TYPE tdformat.
      l_string = ls_item-ztext.
      DO.
        CLEAR:l_string2.
        CALL FUNCTION 'STRING_SPLIT_AT_POSITION'
          EXPORTING
            string            = l_string
            pos               = 40
          IMPORTING
            string1           = l_string1
            string2           = l_string
            pos_new           = l_pos
          EXCEPTIONS
            string1_too_small = 1
            string2_too_small = 2
            pos_not_valid     = 3
            OTHERS            = 4.
        l_subrc = sy-subrc.
        IF l_subrc = 0.
          l_string2 = l_string1.
        ELSEIF l_subrc = 3.
          l_string2 = l_string.
        ENDIF.
        IF sy-index = 1.
          l_tdformat = '/'.
        ELSE.
          l_tdformat = '='.
        ENDIF.
        IF sy-index = 1.
          ls_stpo-item_text1 = l_string2.
        ELSEIF sy-index = 2.
          ls_stpo-item_text2 = l_string2.
        ENDIF.
        lt_texts = VALUE #( BASE lt_texts
          ( object_id = '2'
            identifier = ls_stpo-identifier
            bom_no = ls_stko_read-bom_no
            item_node = ls_stpo-item_node
            item_count = ls_stpo-item_count
            tdformat = l_tdformat
            tdline = l_string2  ) ).
        IF l_subrc <> 0.
          EXIT .
        ENDIF.
      ENDDO.

      IF ls_stpo-item_categ = 'T'.
        CLEAR:ls_stpo-id_comp,ls_stpo-component.
        ls_stpo-item_text1 = ls_item-idnrk.
      ENDIF.

      "新增关联关系,更新ITEM 的Change No.
      ls_stpo-valid_from = lv_datuv.        "有效期开始日
      ls_stpo-change_no  = lv_aennr.        "变更编号

      ls_stpo-id_itm_ctg  = ls_item-postp.  "项目类别
      ls_stpo-id_item_no  = ls_item-sposn.  "BOM 项目号
      ls_stpo-id_comp     = ls_item-idnrk.  "组件物料号

      APPEND ls_stpo TO lt_stpo.
      CLEAR: ls_stpo.
    ENDLOOP.

    CLEAR ls_return.
    "调用BAPI创建BOM
    CALL FUNCTION 'CSAP_MAT_BOM_MAINTAIN'
      EXPORTING
        material           = lv_material
        plant              = lv_plant
        bom_usage          = lv_bom_usage
        alternative        = lv_alternative
        valid_from         = lv_datuv
        change_no          = lv_aennr
        i_stko             = ls_stko_i
        fl_commit_and_wait = 'X'
        fl_bom_create      = 'X'
        fl_new_item        = 'X'
        fl_complete        = 'X'
      IMPORTING
        fl_warning         = lv_warning
        o_stko             = ls_stko_o
      TABLES
        t_stpo             = lt_stpo
        t_ltx_line         = lt_texts
      EXCEPTIONS
        error              = 1
        OTHERS             = 2.

    IF sy-subrc <> 0.
      output-status = 'E'.
      output-message = '修改失败!'.
      ls_return-status = 'E'.
      CALL FUNCTION 'MESSAGE_TEXT_BUILD'
        EXPORTING
          msgid               = sy-msgid
          msgnr               = sy-msgno
          msgv1               = sy-msgv1
          msgv2               = sy-msgv2
          msgv3               = sy-msgv3
          msgv4               = sy-msgv4
        IMPORTING
          message_text_output = ls_return-message.
      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    ELSE.

      ls_return-status = 'S'.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          wait = 'X'.
      IF input-head-stlan = '2'.
        ls_stko_i-bom_status = '01'.
        lv_alternative = lv_alternative + 1.

        CLEAR ls_return.
        "调用BAPI创建BOM
        CALL FUNCTION 'CSAP_MAT_BOM_MAINTAIN'
          EXPORTING
            material           = lv_material
            plant              = lv_plant
            bom_usage          = lv_bom_usage
            alternative        = lv_alternative
            valid_from         = lv_datuv
            change_no          = lv_aennr
            i_stko             = ls_stko_i
            fl_commit_and_wait = 'X'
            fl_bom_create      = 'X'
            fl_new_item        = 'X'
            fl_complete        = 'X'
          IMPORTING
            fl_warning         = lv_warning
            o_stko             = ls_stko_o
          TABLES
            t_stpo             = lt_stpo
          EXCEPTIONS
            error              = 1
            OTHERS             = 2.
        IF sy-subrc <> 0.
          output-status = 'E'.
          output-message = '修改失败!'.
          ls_return-status = 'E'.
          CALL FUNCTION 'MESSAGE_TEXT_BUILD'
            EXPORTING
              msgid               = sy-msgid
              msgnr               = sy-msgno
              msgv1               = sy-msgv1
              msgv2               = sy-msgv2
              msgv3               = sy-msgv3
              msgv4               = sy-msgv4
            IMPORTING
              message_text_output = ls_return-message.
          CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
        ELSE.

          ls_return-status = 'S'.
          CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
            EXPORTING
              wait = 'X'.
          ls_return-message = 'BOM修改成功'.
          output-status = 'S'.
          output-message = ls_return-message.
        ENDIF.
      ELSE.
        ls_return-message = 'BOM修改成功'.
        output-status = 'S'.
        output-message = ls_return-message.
      ENDIF.
    ENDIF.
    ls_return-matnr = lv_material.
    ls_return-werks = lv_plant.
    ls_return-stlan = lv_bom_usage.
    ls_return-stlal = lv_alternative.
    ls_return-aennr = lv_aennr.
    APPEND ls_return TO output-data.
  ELSE.
    output-status = 'E'.
    output-message = '修改失败!'.
*-----------------------------------------------------------------------
* 记录调用第三方接口的实际请求参数与响应参数
    /log/return output-status output-message ls_ifsort.
*-----------------------------------------------------------------------
  ENDIF.

*-----------------------------------------------------------------------
* 结束接口日志 &1状态码 &2消息 &3搜索项 &4反写UUID
  /log/end output-status output-message ls_ifsort.
*-----------------------------------------------------------------------


ENDFUNCTION.

FORM frm_units_string_convert  USING    pv_quan1
                               CHANGING pv_quan2.

  DATA: lv_clabs TYPE p  DECIMALS 3,
        lv_dcpfm LIKE usr01-dcpfm.
  SELECT SINGLE dcpfm INTO lv_dcpfm
        FROM usr01
        WHERE bname = sy-uname.


  CLEAR lv_clabs.
  CALL FUNCTION 'UNITS_STRING_CONVERT'
    EXPORTING
      units_string = pv_quan1
      dcpfm        = lv_dcpfm      "此时为X
*     MLLN         = 'M'
*     TSND         = 'T'
    IMPORTING
      units        = lv_clabs
    EXCEPTIONS
      invalid_type = 1
      OTHERS       = 2.
  IF  sy-subrc = 0.
    pv_quan2 = lv_clabs.
  ENDIF.
ENDFORM.

*&---------------------------------------------------------------------*
*& FORM frm_log_ZFM_PLM_BOM_CREATE
*&---------------------------------------------------------------------*
*& TEXT
*&---------------------------------------------------------------------*
*FORM frm_log_zfm_plm_bom_create TABLES it_items STRUCTURE zsmm_bom_create_line
*                                   USING is_header TYPE zsmm_bom_create_head
*                                         es_return TYPE zsmm_bom_create_zhead.
*
*  DATA: ls_log TYPE ztlog.
*
*  TYPES: BEGIN OF ty_data,
*           is_header TYPE zsmm_bom_create_head,
*           it_items  TYPE TABLE OF zsmm_bom_create_line WITH NON-UNIQUE KEY matnr,
*           es_return TYPE zsmm_bom_create_zhead,
*         END OF ty_data.
*  DATA: ls_data TYPE ty_data.
*
*  MOVE-CORRESPONDING is_header TO ls_data-is_header.
*
*  ls_data-it_items = it_items[].
*
*  MOVE-CORRESPONDING es_return TO ls_data-es_return.
*
*  CLEAR ls_log.
*  ls_log-zifname    = 'ZFM_PLM_BOM_CREATE'.
*  ls_log-zifdesc    = 'PLM->SAP 创建BOM主数据'.
*  ls_log-ziftype    = 'CPI'.
*  ls_log-zdirection = 'PLM->SAP'.
*  ls_log-formatstr  = 'JSON'.
*  ls_log-status = es_return-status.
*  ls_log-message = es_return-message.
*  "TODO 后面完善
**  CALL FUNCTION 'ZFMLOG'
**    EXPORTING
***     iv_string = lv_xmlinput
**      is_log  = ls_log
**      is_data = ls_data.
*
*ENDFORM.
*FORM frm_add_tdline TABLES it_tdline STRUCTURE tline
*                    USING text TYPE char2048.
*
**  CALL FUNCTION 'SCMS_STRING_TO_FTEXT'
**    EXPORTING
**      text      = text
***    IMPORTING
***      length    = 100
**    TABLES
**      ftext_tab = it_tdline.
*
*  CALL FUNCTION 'C14W_STRING_TO_TLINE'
*    EXPORTING
*      i_string    = text
*    TABLES
*      e_tline_tab = it_tdline.
*
*
*ENDFORM.

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024.4.7作业

//登陆界面 this->setWindowTitle("传奇霸业"); this->setWindowIcon(QIcon("C:\\Users\\l1693\\Desktop\\pictures\\1.png")); this->resize(400,300); this->setFixedSize(400,300); //登录界面修饰 //底图 QLabel *lab5 new QLabel(this);…

深入理解数据结构第三弹——二叉树(3)——二叉树的基本结构与操作

二叉树&#xff08;1&#xff09;&#xff1a;深入理解数据结构第一弹——二叉树&#xff08;1&#xff09;——堆-CSDN博客 二叉树&#xff08;2&#xff09;&#xff1a;深入理解数据结构第二弹——二叉树&#xff08;2&#xff09;——堆排序及其时间复杂度-CSDN博客 前言…

前端学习之DOM编程案例:全选反选案例

代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>全选反选</title> </head> <body><input type"checkbox" id"all">全选<ul><li><…

File,IO流,递归详解

File类 介绍 java.io.File类是Java语言提供了用来描述文件和目录(文件夹)的 构造 方法 注意&#xff1a; 构造方法中通常用的是第一个方法文件和目录可以通过File封装成对象File封装的对象仅仅是一个路径名&#xff0c;它是可以存在的&#xff0c;也可以不存在 绝对路径…

linux 安装JDK

一、安装jdk mkdir -p /export/servers # 软件安装的目录 0 . 使用rpm -qa | grep java 查看是否已经安装了jdk 使用: rpm -e --nodeps 软件的名称 将jdk进行卸载 执行完成后, 查看是否全部删除: 需要解压jdk的压缩包 tar -zxvf jdk-8u144-linux-x64.tar.gz -C /export/s…

Tcl学习笔记(二)——表达式、字符串

目录 1. 表达式 算数操作符 关系操作符 逻辑操作符 按位操作符 选择操作符 数学函数 字符串操作 2. 字符串 字符串长度、大小写转换、裁剪、重复 字符串类型 字符的获取 字符串的添加、删除、替换 字符串的比较 字符串的简单搜索 字符串的匹配 格式化…

计算机网络 实验指导 实验9

实验9 三层交换机综合实验 1.实验拓扑图 名称相连的接口IP地址网关PC1F0/3172.1.1.2/28172.1.1.1/28PC2F0/4172.1.1.18/28172.1.1.17/28PC3F0/5172.1.1.34/28172.1.1.33/28PC4F0/3172.1.1.3/28172.1.1.1/28PC5F0/4172.1.1.19/28172.1.1.17/28PC6F0/5172.1.1.35/28172.1.1.33/2…

学习天机04(优惠劵)

1.使用Redis和Mq优化领取优惠卷的高并发操作 实现思路&#xff1a; 因为领取优惠券的操作&#xff0c;涉及到操作db的操作很多&#xff0c;比如说查询优惠卷&#xff0c;统计已经领取的数量&#xff0c;更新已经发放的数量和新增用户券。所以了防止在高并发的情况下对我们的数…

如何查询大数据信用报告?查询时需要注意的事项有哪些?

在数字化时代&#xff0c;大数据信用评分对于需要资金周转的个人或企业来说至关重要。许多机构在贷款审批过程中使用大数据信用评分作为风险控制的重要手段。因此&#xff0c;了解自己的大数据信用状况成为了常规操作。本文将详细介绍如何查询大数据信用报告以及查询时需要注意…

物联网实战--入门篇之(十一)安卓QT--前端开发

目录 一、设计思路 二、QML文件结构 三、顶部框 四、中心圆圈 五、泡泡 六、开关栏 七、调速栏 八、安卓编译 一、设计思路 还是再贴一下米家APP的截图&#xff0c;再根据我们之前第九篇的分析&#xff0c;大概可以得出设计思路了。首先一个根页面当底版&#xff0c;然…

SpringBoot属性配置的多种方式

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉🍎个人主页:Leo的博客💞当前专栏: 循序渐进学SpringBoot ✨特色专栏: MySQL学习 🥭本文内容:SpringBoot属性配置的多种方式 📚个人知识库: Leo知识库,欢迎大家访问 目录 …

突破编程_前端_SVG(概述)

1 什么是 SVG SVG&#xff0c;全称可缩放矢量图形&#xff08;Scalable Vector Graphics&#xff09;&#xff0c;是一种基于 XML&#xff08;可扩展标记语言&#xff09;的矢量图像格式。这种图像格式的主要特点是它描述的是矢量图形&#xff0c;而不是基于像素的位图图像。因…

接口和抽象类的综合案例

题目要求&#xff1a; 代码框架&#xff1a; 代码实现&#xff1a; person类&#xff1a; package www.jsu.com;public class Person {private String name;private int age;public Person() {}public Person(String name, int age) {this.name name;this.age age;}public …

【第十二篇】使用BurpSuite实现CSRF(实战案例)

CSRF存在前提:简单的身份验证只能保证请求是发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的 业务场景:新增、删除、收藏、编辑、保存使用Burp发现CSRF漏洞的过程如下。 1、如图,存在修改邮箱的功能点如下: 2、修改邮箱的流量包,此时邮箱已被修改: 思路:是…

Labview如何0基础自学快速入门?(纯干货帖)

大家好&#xff0c;首先声明&#xff1a;本文纯干货&#xff0c;单纯为了帮助大家快速入门。有用的话大家点赞评论加关注即可。谢谢大家 题主是从一个毫无编程基础的Labview小白到现在能独立承担软件开发项目的工程师&#xff0c;作为瑞文的老玩家&#xff0c;题主觉得&#xf…

Git场景运用

git 脚本在开发中应用场景-CSDN博客 Git基础 Git基本运作流程 ​​​​​​​ (1) workspace->index->Repository ​ 本地写代码在workspace&#xff0c;add暂存到index&#xff0c;commit提交到本地Repository。多项目成员&#xff0c;每员对应本地仓库&#xff0c;各自…

uniapp-设置UrlSchemes从外部浏览器H5打开app

需求&#xff1a;外部浏览器H5页面&#xff0c;跳转到uniapp开发的原生app内部。 1、uniapp内部的配置&#xff1a; &#xff08;1&#xff09;打开manifest->App常用其他设置&#xff0c;如下&#xff0c;按照提示输入您要设置的urlSchemes&#xff1a; &#xff08;2&am…

pom.xml文件中的标签认识

周末不卷&#xff0c;研究下pom.xml里的内容。 一般一个pom.xml文件外面一个project包着以下的标签&#xff1a; groupId artifactId repositories properties dependencies build plugins 下面分别来说说这几个标签的含义&#xff1a; 1、groupId&#xff1a;表示项目组的id…

MSOLSpray:一款针对微软在线账号(AzureO365)的密码喷射与安全测试工具

关于MSOLSpray MSOLSpray是一款针对微软在线账号&#xff08;Azure/O365&#xff09;的密码喷射与安全测试工具&#xff0c;在该工具的帮助下&#xff0c;广大研究人员可以直接对目标账户执行安全检测。支持检测的内容包括目标账号凭证是否有效、账号是否启用了MFA、租户账号是…

vivado 系统内逻辑设计调试流程

系统内逻辑设计调试流程 Vivado 工具提供了诸多功能 &#xff0c; 用于在真实硬件器件中调试系统内设计。系统内调试流程包含 3 个不同阶段 &#xff1a; 1. 探测阶段 &#xff1a; 确定设计中要探测的信号和探测的方法。 2. 实现阶段 &#xff1a; 完成设计实现 &…