批量更改物料描述+中英文长描述

&---------------------------------------------------------------------
*& Report ZMM02
&---------------------------------------------------------------------
*&
&---------------------------------------------------------------------
REPORT ZMM02.

INCLUDE ZBCN_EXCEL.

DATA:
ZNAME TYPE THEAD-TDNAME .

TYPES: BEGIN OF GT_DATA ,

     MATNR    TYPE MARC-MATNR,
     MAKTX    TYPE MAkt-MAKTX,
     ZMAKTX   TYPE MAkt-MAKTX,
     ESTR     TYPE STRING,
     ZESTR     TYPE STRING,
     SELKZ(1) TYPE C,
     ZYX      TYPE STRING,
     ZICO     TYPE ICON_D,


   END OF GT_DATA .

DATA T_DATA TYPE TABLE OF GT_DATA WITH HEADER LINE .
DATA T_DATA1 TYPE TABLE OF GT_DATA WITH HEADER LINE .
DATA T_DATA2 TYPE TABLE OF GT_DATA WITH HEADER LINE .
DATA GS_HEADER TYPE THEAD .
DATA GT_LINES TYPE TABLE OF TLINE WITH HEADER LINE .
DATA GT_LINES1 TYPE TABLE OF TLINE WITH HEADER LINE .
DATA: FIELDCAT TYPE LVC_T_FCAT,
ZFIELDCAT TYPE LVC_S_FCAT,
ZLVC_S_LAYO TYPE LVC_S_LAYO.
PARAMETERS: P_FILE TYPE RLGRAP-FILENAME MODIF ID M1.
SELECTION-SCREEN FUNCTION KEY: 1 .“筛选界面-模板下载需要”
INITIALIZATION .

--------------------------------------------------------------------
*模板下载代码
--------------------------------------------------------------------
DATA:gv_filter TYPE string,
gs_functxt TYPE smp_dyntxt.
gs_functxt-icon_id = icon_export.
gs_functxt-quickinfo = ‘模板下载’.
gs_functxt-icon_text = ‘模板下载’.
sscrfields-functxt_01 = gs_functxt.

AT SELECTION-SCREEN.
CASE sscrfields-ucomm.

WHEN 'FC01'.
  CLEAR: gv_filter.
  gv_filter = '|EXCEL-Files (*.XLS)|*.XLS|All Files(*.*)|*.*|'.
  PERFORM frm_download_tmp USING gv_filter 'ZMM02'.

ENDCASE.
--------------------------------------------------------------------

--------------------------------------------------------------------
上传模板代码
--------------------------------------------------------------------
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE .
DATA(P_TITLE) = 'EXCEL-Files (
.XLS)|.XLS|EXCEL-Files (.XLSX)|.XLSX|All Files(.)|.*|'.
PERFORM FRM_SELECT_FILE USING P_TITLE P_FILE .

START-OF-SELECTION.
IF P_FILE IS NOT INITIAL .
PERFORM FRM_GET_EXCEL_DATA USING P_FILE
1
2
5
10000
‘’.
SORT GT_IEXCEL BY ROW COL .
REFRESH T_DATA .
FIELD-SYMBOLS .

LOOP AT GT_IEXCEL INTO GS_IEXCEL.
  ASSIGN COMPONENT GS_IEXCEL-COL OF STRUCTURE  T_DATA TO <FS> .
  <FS> = GS_IEXCEL-VALUE .
  AT END OF ROW .
    APPEND T_DATA .
    CLEAR T_DATA .
  ENDAT  .
ENDLOOP.

--------------------------------------------------------------------

--------------------------------------------------------------------
*ALV
--------------------------------------------------------------------
ZFIELDCAT-FIELDNAME = ‘SELKZ’.
ZFIELDCAT-COLTEXT = ‘选择’.
ZFIELDCAT-CHECKBOX = ‘X’.
ZFIELDCAT-EDIT = ‘X’.
APPEND ZFIELDCAT TO FIELDCAT.
CLEAR ZFIELDCAT.

ZFIELDCAT-FIELDNAME = 'ZICO'.
ZFIELDCAT-COLTEXT = '指示灯'.
APPEND ZFIELDCAT TO FIELDCAT.
CLEAR ZFIELDCAT.


ZFIELDCAT-FIELDNAME = 'MATNR'.
ZFIELDCAT-COLTEXT = '物料'.
APPEND ZFIELDCAT TO FIELDCAT.
CLEAR ZFIELDCAT.

ZFIELDCAT-FIELDNAME = 'MAKTX'.
ZFIELDCAT-COLTEXT = '中文短描述'.
APPEND ZFIELDCAT TO FIELDCAT.
CLEAR ZFIELDCAT.

ZFIELDCAT-FIELDNAME = 'ZMAKTX'.
ZFIELDCAT-COLTEXT = '英文短描述'.
APPEND ZFIELDCAT TO FIELDCAT.
CLEAR ZFIELDCAT.


ZFIELDCAT-FIELDNAME = 'ESTR'.
ZFIELDCAT-COLTEXT = '中文长描述'.
APPEND ZFIELDCAT TO FIELDCAT.
CLEAR ZFIELDCAT.

ZFIELDCAT-FIELDNAME = 'ZESTR'.
ZFIELDCAT-COLTEXT = '英文长描述'.
APPEND ZFIELDCAT TO FIELDCAT.
CLEAR ZFIELDCAT.


ZFIELDCAT-FIELDNAME = 'ZYX'.
ZFIELDCAT-COLTEXT = '执行情况'.
APPEND ZFIELDCAT TO FIELDCAT.
CLEAR ZFIELDCAT.


ZLVC_S_LAYO-CWIDTH_OPT ='X'."优化ALV字段宽度"



CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
  EXPORTING
  •   I_INTERFACE_CHECK        = ' '
    
  •   I_BYPASSING_BUFFER       =
    
  •   I_BUFFER_ACTIVE          =
      I_CALLBACK_PROGRAM       = SY-REPID
      I_CALLBACK_PF_STATUS_SET = 'SUB_STATUS_SET'
      I_CALLBACK_USER_COMMAND  = 'USER_COMMAND '
    
  •   I_CALLBACK_TOP_OF_PAGE   = ' '
    
  •   I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
    
  •   I_CALLBACK_HTML_END_OF_LIST       = ' '
    
  •   I_STRUCTURE_NAME         =
    
  •   I_BACKGROUND_ID          = ' '
    
  •   I_GRID_TITLE             =
    
  •   I_GRID_SETTINGS          =
      IS_LAYOUT_LVC            = ZLVC_S_LAYO
      IT_FIELDCAT_LVC          = FIELDCAT
    
  •   IT_EXCLUDING             =
    
  •   IT_SPECIAL_GROUPS_LVC    =
    
  •   IT_SORT_LVC              =
    
  •   IT_FILTER_LVC            =
    
  •   IT_HYPERLINK             =
    
  •   IS_SEL_HIDE              =
    
  •   I_DEFAULT                = 'X'
    
  •   I_SAVE                   = ' '
    
  •   IS_VARIANT               =
    
  •   IT_EVENTS                =
    
  •   IT_EVENT_EXIT            =
    
  •   IS_PRINT_LVC             =
    
  •   IS_REPREP_ID_LVC         =
    
  •   I_SCREEN_START_COLUMN    = 0
    
  •   I_SCREEN_START_LINE      = 0
    
  •   I_SCREEN_END_COLUMN      = 0
    
  •   I_SCREEN_END_LINE        = 0
    
  •   I_HTML_HEIGHT_TOP        =
    
  •   I_HTML_HEIGHT_END        =
    
  •   IT_ALV_GRAPHICS          =
    
  •   IT_EXCEPT_QINFO_LVC      =
    
  •   IR_SALV_FULLSCREEN_ADAPTER        =
    
  • IMPORTING
  •   E_EXIT_CAUSED_BY_CALLER  =
    
  •   ES_EXIT_CAUSED_BY_USER   =
    TABLES
      T_OUTTAB                 = T_DATA.
    
  • EXCEPTIONS
  • PROGRAM_ERROR = 1
  • OTHERS = 2

ENDIF.
FORM SUB_STATUS_SET USING RT_EXTAB TYPE SLIS_T_EXTAB.
DATA: WA_EXTAB LIKE LINE OF RT_EXTAB.
WA_EXTAB-FCODE = ‘&INFO’. "隐藏图标
APPEND WA_EXTAB TO RT_EXTAB.

SET PF-STATUS ‘STATUS01’ EXCLUDING RT_EXTAB .

ENDFORM.
FORM USER_COMMAND USING S_UCOMM TYPE SY-UCOMM “屏幕事件”
RE_SELFIELD TYPE SLIS_SELFIELD.

  • CALL METHOD gcl_alv_grid->check_changed_data. "触发数据变更
    CASE S_UCOMM.

    WHEN ‘MASS’.
    PERFORM ZMM02.
    WHEN ‘ALL’.
    PERFORM F_ALV_ALL_SELECT.
    WHEN ‘DEALL’.
    PERFORM F_ALV_ALL_DESELECT .

    WHEN ‘&IC1’. “双击跳转”
    READ TABLE T_DATA INDEX RE_SELFIELD-TABINDEX.
    IF RE_SELFIELD-FIELDNAME = ‘MATNR’.
    SET PARAMETER ID ‘MAT’ FIELD T_DATA-MATNR .
    CALL TRANSACTION ‘MM03’ AND SKIP FIRST SCREEN .
    ENDIF .
    ENDCASE.
    RE_SELFIELD-REFRESH = ‘X’.
    ENDFORM.

FORM ZMM02.
DATA:G_GRID TYPE REF TO CL_GUI_ALV_GRID.

CALL FUNCTION ‘GET_GLOBALS_FROM_SLVC_FULLSCR’ “动态刷新内表”
IMPORTING
E_GRID = G_GRID.

CALL METHOD G_GRID->CHECK_CHANGED_DATA.
CALL METHOD G_GRID->REFRESH_TABLE_DISPLAY.

LOOP AT T_DATA WHERE SELKZ = ‘X’.
IF T_DATA-ESTR IS NOT INITIAL.
CALL FUNCTION ‘CONVERSION_EXIT_MATN1_INPUT’
EXPORTING
INPUT = T_DATA-MATNR
IMPORTING
OUTPUT = T_DATA-MATNR.
GS_HEADER-MANDT = SY-MANDT .
GS_HEADER-TDNAME = T_DATA-MATNR .
GS_HEADER-TDID = ‘GRUN’.
GS_HEADER-TDSPRAS = SY-LANGU .
GS_HEADER-TDOBJECT = ‘MATERIAL’.
CLEAR GT_LINES .
GT_LINES-TDFORMAT = ‘*’ .
GT_LINES-TDLINE = T_DATA-ESTR .
APPEND GT_LINES.
CALL FUNCTION ‘SAVE_TEXT’
EXPORTING
HEADER = GS_HEADER
SAVEMODE_DIRECT = ‘X’
TABLES
LINES = GT_LINES[].
REFRESH GT_LINES[].
ENDIF.

IF T_DATA-MAKTX IS NOT INITIAL.

CLEAR:bdcdata[],messtab[].

*perform bdc_dynpro using ‘SAPLMGMM’ ‘0060’.
*perform bdc_field using ‘BDC_CURSOR’

  •                          'RMMG1-MATNR'.
    

*perform bdc_field using ‘BDC_OKCODE’

  •                          '=ENTR'.
    

*perform bdc_field using ‘RMMG1-MATNR’

  •                          T_DATA-MATNR.
    

*perform bdc_dynpro using ‘SAPLMGMM’ ‘0070’.
*perform bdc_field using ‘BDC_CURSOR’

  •                          'MSICHTAUSW-DYTXT(01)'.
    

*perform bdc_field using ‘BDC_OKCODE’

  •                          '=DEF_SAVE'.
    

*perform bdc_field using ‘MSICHTAUSW-KZSEL(01)’

  •                          'X' .
    

*perform bdc_dynpro using ‘SAPLMGMM’ ‘0070’.
*perform bdc_field using ‘BDC_CURSOR’

  •                          'MSICHTAUSW-DYTXT(01)'.
    

*perform bdc_field using ‘BDC_OKCODE’

  •                          '=ENTR'.
    

*perform bdc_dynpro using ‘SAPLMGMM’ ‘4004’.
*perform bdc_field using ‘BDC_OKCODE’

  •                          '=BU'.
    

*perform bdc_field using ‘BDC_CURSOR’

  •                          'MAKT-MAKTX'.
    

*perform bdc_field using ‘MAKT-MAKTX’

  •                          T_DATA-MAKTX.
    

*perform bdc_field using ‘DESC_LANGU_GDTXT’

  •                          '1'.
    

--------------------------------------------------------------------
perform bdc_dynpro using ‘SAPLMGMM’ ‘0060’.
perform bdc_field using ‘BDC_CURSOR’
‘RMMG1-MATNR’.
perform bdc_field using ‘BDC_OKCODE’
‘=AUSW’.
perform bdc_field using ‘RMMG1-MATNR’
T_DATA-MATNR.
perform bdc_dynpro using ‘SAPLMGMM’ ‘0070’.
perform bdc_field using ‘BDC_CURSOR’
‘MSICHTAUSW-DYTXT(01)’.
perform bdc_field using ‘BDC_OKCODE’
‘=DEF_SAVE’.
perform bdc_field using ‘MSICHTAUSW-KZSEL(01)’
‘X’.
perform bdc_dynpro using ‘SAPLMGMM’ ‘0070’.
perform bdc_field using ‘BDC_CURSOR’
‘MSICHTAUSW-DYTXT(01)’.
perform bdc_field using ‘BDC_OKCODE’
‘=ENTR’.
perform bdc_dynpro using ‘SAPLMGMM’ ‘4004’.
perform bdc_field using ‘BDC_OKCODE’
‘=ZU01’.
perform bdc_field using ‘BDC_CURSOR’
‘MAKT-MAKTX’.
perform bdc_field using ‘MAKT-MAKTX’
T_DATA-MAKTX.
perform bdc_field using ‘DESC_LANGU_GDTXT’
‘1’.
perform bdc_dynpro using ‘SAPLMGMM’ ‘4300’.
perform bdc_field using ‘BDC_OKCODE’
‘/00’.
perform bdc_field using ‘BDC_CURSOR’
‘SKTEXT-MAKTX(02)’.
perform bdc_field using ‘SKTEXT-SPRAS(02)’
‘EN’.
perform bdc_field using ‘SKTEXT-MAKTX(01)’
T_DATA-MAKTX.
perform bdc_field using ‘SKTEXT-MAKTX(02)’
T_DATA-ZMAKTX.
perform bdc_dynpro using ‘SAPLMGMM’ ‘4300’.
perform bdc_field using ‘BDC_OKCODE’
‘=BU’.
perform bdc_field using ‘BDC_CURSOR’
‘SKTEXT-SPRAS(02)’.

CALL TRANSACTION ‘MM02’ USING bdcdata
MODE ctumode
UPDATE cupdate
MESSAGES INTO messtab.

  ENDIF.

IF T_DATA-ZESTR IS NOT INITIAL.
CALL FUNCTION ‘CONVERSION_EXIT_MATN1_INPUT’
EXPORTING
INPUT = T_DATA-MATNR
IMPORTING
OUTPUT = T_DATA-MATNR.
GS_HEADER-MANDT = SY-MANDT .
GS_HEADER-TDNAME = T_DATA-MATNR .
GS_HEADER-TDID = ‘GRUN’.
GS_HEADER-TDSPRAS = ‘EN’ .
GS_HEADER-TDOBJECT = ‘MATERIAL’.
CLEAR GT_LINES .
GT_LINES-TDFORMAT = ‘*’ .
GT_LINES-TDLINE = T_DATA-ZESTR .
APPEND GT_LINES.
CALL FUNCTION ‘SAVE_TEXT’
EXPORTING
HEADER = GS_HEADER
SAVEMODE_DIRECT = ‘X’
TABLES
LINES = GT_LINES[].
REFRESH GT_LINES[].
ENDIF.

REFRESH GT_LINES1[].
GS_HEADER-MANDT = SY-MANDT .
GS_HEADER-TDNAME = T_DATA-MATNR  .
GS_HEADER-TDID   = 'GRUN'.
GS_HEADER-TDSPRAS = SY-LANGU .
GS_HEADER-TDOBJECT = 'MATERIAL'.
ZNAME  = T_DATA-MATNR .
CLEAR   GT_LINES1.
CALL FUNCTION 'READ_TEXT'
  EXPORTING
  •   CLIENT   = SY-MANDT
      ID       = 'GRUN'
      LANGUAGE = SY-LANGU
      NAME     = ZNAME
      OBJECT   = 'MATERIAL'
    
  • TABLES
      LINES    = GT_LINES1[].
    

    CLEAR T_DATA1-ESTR.
    LOOP AT GT_LINES1.

    T_DATA1-ESTR = T_DATA1-ESTR  &&  GT_LINES1-TDLINE.
    

    ENDLOOP .

    IF T_DATA1-ESTR = T_DATA-ESTR.
    T_DATA-ZYX = ‘修改成功’.
    T_DATA-ZICO = ICON_GREEN_LIGHT .“ALV中指示灯显示”
    ELSE.
    T_DATA-ZYX = ‘修改失败’.
    T_DATA-ZICO = ICON_RED_LIGHT.“ALV中指示灯显示”
    ENDIF.
    MODIFY T_DATA.
    CLEAR T_DATA.
    ENDLOOP.
    ENDFORM. "SUB_USER_COMMAND
    *--------------------------------------------------------------------
    **全选选按钮控制
    *--------------------------------------------------------------------
    FORM F_ALV_ALL_SELECT .

    DATA:LV_TABIX TYPE SY-TABIX.

    LOOP AT T_DATA.
    LV_TABIX = SY-TABIX.
    T_DATA-SELKZ = ‘X’.
    MODIFY T_DATA INDEX LV_TABIX.
    ENDLOOP.
    ENDFORM.

*--------------------------------------------------------------------
**反选按钮控制
*--------------------------------------------------------------------
FORM F_ALV_ALL_DESELECT .

DATA:LV_TABIX TYPE SY-TABIX.

LOOP AT T_DATA.
LV_TABIX = SY-TABIX.
T_DATA-SELKZ = ’ '.
MODIFY T_DATA INDEX LV_TABIX.
ENDLOOP.
ENDFORM.

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我小时候很黑

你的打赏是对我的肯定

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值