修正非法字符 ZBW_CHANGE_RSKC 可执行函数

4 篇文章 0 订阅

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.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值