修正非法字符 ZBW

编程入门 行业动态 更新时间:2024-10-14 06:25:58

修正非法<a href=https://www.elefans.com/category/jswz/34/1771063.html style=字符 ZBW"/>

修正非法字符 ZBW

REPORT ZBW_CHANGE_RSKC.

 

TYPE-POOLS: vrm . "存放combobox内容的type pool

DATA: name TYPE vrm_id, " list box的名称

      list TYPE vrm_values, " list box的值

      value LIKE LINE OF list . " list box的结构

 

DATA:

  GT_OBJ TYPE TABLE OF RSDODSOIOBJ,

  GS_OBJ TYPE RSDODSOIOBJ,

  GT_OBJ_DETAIL TYPE TABLE OF RSDIOBJ,

  GS_OBJ_DETAIL TYPE RSDIOBJ,

  GT_OBJT TYPE TABLE OF RSDIOBJT,

  GS_OBJT TYPE RSDIOBJT.

 

 

DATA:

  GV_ODSOBJECT   Type  RSDODSOBJECT,

  GV_TABT    Type  RSDODSTABT,

  GV_TABLNM    Type TABNAME.

 

FIELD-SYMBOLS:

  <DYN_TABLE> TYPE STANDARD TABLE,

  <DYN_TABLE_MOD> TYPE STANDARD TABLE,

  <dyn_wa> TYPE ANY,

  <dyn_field> TYPE ANY.

 

DATA: dy_table TYPE REF TO data,

      dy_table_MOD TYPE REF TO data.

 

 

DATA:

  GT_FACT TYPE LVC_T_FCAT.  "ALV

 

PARAMETERS:

  p_dso TYPE rsdodsoiobj-odsobject OBLIGATORY.  "ODS

 

PARAMETERS:

   P_OBJ TYPE RSDODSOIOBJ-IOBJNM  AS LISTBOX   VISIBLE LENGTH 20.

"信息对象

 

 

 

DEFINE fill_list.

  value-key = &1.  "变量P_LIST的值

  value-text = &2. "这个是text

  append value to list.

END-OF-DEFINITION.

 

at SELECTION-SCREEN OUTPUT.

 

*-设置信息对象选择

  PERFORM fill_OBJ_DATA.

 

 

INITIALIZATION.

 

 

START-OF-SELECTION.

 

 

* 获取ODS NEW表

  PERFORM GET_ODS_TAB.

 

* 获取动态内表

  PERFORM GET_DYN_TABLE.

 

* 获取NEW表数据

  PERFORM GET_NEW_DATA.

 

* 获取信息对象和字段名对照

  PERFORM GET_OBJ_FNM.

 

* 删除非法字符

  PERFORM DELETE_FFZF.

 

*&---------------------------------------------------------------------*

*&      Form  FILL_OBJ_DATA

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM FILL_OBJ_DATA .

 

* 获取ODS中的信息对象

 PERFORM GET_ODS_OBJ.

 

* 获取信息对象名称

 PERFORM GET_OBJT.

 

* 填充信息对象

 PERFORM FILL_OBJ.

 

"---〉调用函数显示listbox里面的值

  CALL FUNCTION 'VRM_SET_VALUES'

    EXPORTING

      id     = 'P_OBJ'  " PARAMETERS's Name

      values = list.

ENDFORM.

*&---------------------------------------------------------------------*

*&      Form  GET_ODS_OBJ

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_ODS_OBJ .

  REFRESH GT_OBJ.

  SELECT * INTO TABLE GT_OBJ

    FROM RSDODSOIOBJ

   WHERE ODSOBJECT = P_DSO

     AND OBJVERS = 'A'.

 

  SORT GT_OBJ BY POSIT.

ENDFORM.

*&---------------------------------------------------------------------*

*&      Form  GET_OBJ_DETAL

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_OBJT .

  CHECK GT_OBJ IS NOT INITIAL.

  REFRESH GT_OBJT.

  SELECT * INTO TABLE GT_OBJT

    FROM RSDIOBJT

    FOR ALL ENTRIES IN GT_OBJ

   WHERE LANGU = SY-LANGU

     AND IOBJNM = GT_OBJ-IOBJNM

     AND OBJVERS = 'A'.

  SORT GT_OBJT BY IOBJNM.

ENDFORM.

*&---------------------------------------------------------------------*

*&      Form  FILL_OBJ

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM FILL_OBJ .

 

 REFRESH list .

 

 LOOP AT GT_OBJ INTO GS_OBJ.

   CLEAR GS_OBJT.

   READ TABLE GT_OBJT INTO GS_OBJT

     WITH KEY IOBJNM = GS_OBJ-IOBJNM BINARY SEARCH.

   fill_list GS_OBJ-IOBJNM GS_OBJT-TXTSH.

 ENDLOOP.

ENDFORM.

*&---------------------------------------------------------------------*

*&      Form  GET_OBJ_FNM

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_OBJ_FNM .

  CLEAR GS_OBJ_DETAIL.

  SELECT SINGLE * INTO  GS_OBJ_DETAIL

    FROM RSDIOBJ

   WHERE IOBJNM = P_OBJ

     AND OBJVERS = 'A'.

 

  IF SY-SUBRC NE 0.

    MESSAGE S001(00) WITH '' DISPLAY LIKE 'E'.

    STOP.

  ENDIF.

ENDFORM.

 

*&---------------------------------------------------------------------*

*&      Form  GET_ODS_TAB

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_ODS_TAB .

  GV_ODSOBJECT = P_DSO.

  GV_TABT = '4'.  "NEW表

  CLEAR GV_TABLNM.

  CALL METHOD CL_RSD_ODSO=>GET_TABLNM

    EXPORTING

      I_ODSOBJECT   = GV_ODSOBJECT

      I_TABT        = GV_TABT

*      I_VIEW_SUFFIX = RSD_C_ID_VIEW_TIOBJNM2

     IMPORTING

       E_TABLNM      = GV_TABLNM

*      E_TTYPENAME   = E_TTYPENAME

*      E_VIEWNM      = E_VIEWNM

*      E_CHNGLOGNM   = E_CHNGLOGNM

*      E_INFOSOURCE  = E_INFOSOURCE

*      E_DATASOURCE  = E_DATASOURCE

*      E_TABLNM_CNV  = E_TABLNM_CNV

    EXCEPTIONS

      NAME_ERROR    = 1

      INPUT_INVALID = 2

      OTHERS        = 3

          .

  IF SY-SUBRC <> 0.

*   Implement suitable error handling here

  ENDIF.

ENDFORM.

*&---------------------------------------------------------------------*

*&      Form  GET_DYN_TABLE

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_DYN_TABLE .

DATA:

  LV_STRUCTURE_NAME TYPE DD02L-TABNAME.

 

  LV_STRUCTURE_NAME = GV_TABLNM.

  REFRESH GT_FACT.

  CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'

    EXPORTING

*     I_BUFFER_ACTIVE              =

      I_STRUCTURE_NAME             = LV_STRUCTURE_NAME

*     I_CLIENT_NEVER_DISPLAY       = 'X'

*     I_BYPASSING_BUFFER           =

*     I_INTERNAL_TABNAME           =

    CHANGING

      CT_FIELDCAT                  = GT_FACT

   EXCEPTIONS

     INCONSISTENT_INTERFACE       = 1

     PROGRAM_ERROR                = 2

     OTHERS                       = 3

            .

  IF SY-SUBRC <> 0.

* Implement suitable error handling here

  ENDIF.

 

  CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE

    EXPORTING

*      I_STYLE_TABLE             =

       IT_FIELDCATALOG           = GT_FACT

*      I_LENGTH_IN_BYTE          =

     IMPORTING

       EP_TABLE                  = dy_table

*      E_STYLE_FNAME             =

     EXCEPTIONS

       GENERATE_SUBPOOL_DIR_FULL = 1

       OTHERS                    = 2

          .

  IF SY-SUBRC <> 0.

*   Implement suitable error handling here

  ENDIF.

 

  CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE

    EXPORTING

*      I_STYLE_TABLE             =

       IT_FIELDCATALOG           = GT_FACT

*      I_LENGTH_IN_BYTE          =

     IMPORTING

       EP_TABLE                  = dy_table_MOD

*      E_STYLE_FNAME             =

     EXCEPTIONS

       GENERATE_SUBPOOL_DIR_FULL = 1

       OTHERS                    = 2

          .

  IF SY-SUBRC <> 0.

*   Implement suitable error handling here

  ENDIF.

   ASSIGN DY_TABLE->* TO <DYN_TABLE>.

   ASSIGN DY_TABLE_MOD->* TO <DYN_TABLE_MOD>.

ENDFORM.

*&---------------------------------------------------------------------*

*&      Form  GET_NEW_DATA

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_NEW_DATA .

  SELECT * INTO TABLE <DYN_TABLE>

    FROM (GV_TABLNM).

ENDFORM.

*&---------------------------------------------------------------------*

*&      Form  DELETE_FFZF

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM DELETE_FFZF .

DATA:

  LV_STR TYPE STRING.

  LOOP AT <DYN_TABLE> ASSIGNING <dyn_wa>.

    ASSIGN COMPONENT GS_OBJ_DETAIL-FIELDNM OF STRUCTURE <dyn_wa> TO <dyn_field>.

    IF <dyn_field> IS ASSIGNED.

      CLEAR LV_STR.

      LV_STR = <dyn_field>.

      CALL FUNCTION 'ZBW_CLEAN_STR2'

        EXPORTING

          STR_IN         = <dyn_field>

*         RPL_CH         = ''

          I_IOBJNM       = P_OBJ

        IMPORTING

          STR_OUT        = <dyn_field> .

      IF LV_STR NE <dyn_field>.

         APPEND <dyn_wa> TO <DYN_TABLE_MOD>.  "记录更改数据

      ENDIF.

    ENDIF.

  ENDLOOP.

  IF <DYN_TABLE_MOD> IS NOT INITIAL.

    MODIFY (GV_TABLNM) FROM TABLE <DYN_TABLE_MOD>.

    MESSAGE S001(00) WITH '数据更新成功!' .

  ELSE.

    MESSAGE S001(00) WITH '数据无非法字符!' .

  ENDIF.

 

 

ENDFORM.

更多推荐

修正非法字符 ZBW

本文发布于:2024-03-05 20:22:32,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1713306.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:字符   ZBW

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!