当前位置: 首页 > news >正文

SAP PP BOM批量创建功能分享

一、功能逻辑

二、功能界面

三、功能代码

*&---------------------------------------------------------------------*
*& Report ZRPPP_0003
*&---------------------------------------------------------------------*
*& 09.06.2021 10:00:55 By Guoxj  BOM主数据批量维护
*&---------------------------------------------------------------------*
REPORT zrppp_0003.
TABLES: marc,mara,mast,stko,stpo,ztpp003_log,
  sscrfields ,ICON.
TYPE-POOLS:slis.


DATA: gr_table TYPE REF TO cl_salv_table.
DATA: gr_layout TYPE REF TO cl_salv_layout.
DATA: gs_program TYPE salv_s_layout_key.
DATA: gr_columns TYPE REF TO cl_salv_columns_table.
DATA: gr_column TYPE REF TO cl_salv_column_table.
DATA: gr_display TYPE REF TO cl_salv_display_settings.
DATA: gr_functions TYPE REF TO cl_salv_functions.

TYPES: BEGIN OF ty_head  ,
  werks TYPE mast-werks,
  matnr TYPE mast-matnr,
  maktx TYPE makt-maktx,
  ver01 TYPE char2,
  stlan TYPE mast-stlan,
  aennr TYPE stko-aennr,
  stlal TYPE stko-stlal,
  datuv TYPE stko-datuv,
  stktx TYPE stko-stktx,
  bmeng TYPE stko-bmeng,
  bmein TYPE  basme , "父料的单位
  stlst TYPE stko-stlst,
END OF ty_head .

TYPES: BEGIN OF ty_item  ,
  postp  TYPE stpo-postp,
  posnr  TYPE stpo-posnr,
  idnrk  TYPE stpo-idnrk,
  matkl  TYPE makt-maktx,
  ver02  TYPE char2,
  menge  TYPE stpo-menge,
  zjsljs TYPE char10,
  meins  TYPE stpo-meins,
  sortf  TYPE stpo-sortf,
  ausch  TYPE stpo-ausch,
  sanka  TYPE stpo-sanka,
  alpgr  TYPE stpo-alpgr,
  alprf  TYPE stpo-alprf,
  alpst  TYPE stpo-alpst,
  ewahr  TYPE stpo-ewahr,
  lgort  TYPE stpo-lgort,
END OF ty_item .

TYPES: BEGIN OF ty_info  ,
  stlnr  TYPE mast-stlnr,
  status TYPE zde_status,
  msg    TYPE bapi_msg,
  ztype  TYPE bapi_mtype,
END OF ty_info .

DATA:BEGIN OF gt_tab OCCURS 0 .
  INCLUDE TYPE ty_head .
  INCLUDE TYPE ty_item .
  INCLUDE TYPE ty_info .
  DATA:
END OF gt_tab .

DATA:BEGIN OF alttab OCCURS 0 .
  DATA: stlal TYPE stlal,
END OF alttab .

DATA:BEGIN OF gw_info.
  DATA: ztype     TYPE bapi_mtype,
        zmsg      TYPE bapi_msg,
        zauth_wrk TYPE char1, "工厂权限
*      zauth_prs TYPE char1, "价格权限
END OF gw_info .

DATA:flg_submit TYPE C .

SELECTION-SCREEN BEGIN OF BLOCK part1 WITH FRAME TITLE TEXT-001.

  PARAMETERS:rd1 RADIOBUTTON GROUP gp1 USER-COMMAND cmd DEFAULT 'X',
  rd2 RADIOBUTTON GROUP gp1,
  rd3 RADIOBUTTON GROUP gp1.


  PARAMETERS: p_file TYPE rlgrap-filename  MODIF ID g1 MEMORY ID p03 .

  SELECT-OPTIONS:
  s_uname FOR ztpp003_log-uname MODIF ID g2 ,
  s_datum FOR ztpp003_log-datum MODIF ID g2 ,
  s_ztype FOR ztpp003_log-ztype MODIF ID g2 ,
  s_matnr FOR ztpp003_log-matnr MODIF ID g2 ,
  s_stlnr FOR ztpp003_log-stlnr MODIF ID g2 .

SELECTION-SCREEN END OF BLOCK part1.

*SELECTION-SCREEN PUSHBUTTON /1(20) btntxt1 USER-COMMAND but1 MODIF ID g1  .

SELECTION-SCREEN FUNCTION KEY 1.

AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
  IF rd3 = 'X'.
    IF SCREEN-group1 = 'G1'.
      SCREEN-active = 0.
    ENDIF.
  ELSE.
    IF SCREEN-group1 = 'G2'.
      SCREEN-active = 0.
    ENDIF.
  ENDIF.
  MODIFY SCREEN.
ENDLOOP.

INITIALIZATION.
*  btntxt1 = '模板下载' .
sscrfields-functxt_01 = '模板下载'.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
  program_name  = syst-cprog
  dynpro_number = syst-dynnr
  field_name    = ' '
IMPORTING
  file_name     = p_file.

AT SELECTION-SCREEN.
SEARCH 'FC01' FOR sscrfields-ucomm .
CHECK sy-subrc = 0 .
PERFORM frm_down_model USING sscrfields-ucomm .

CLASS l_cl_handle_events DEFINITION.
  PUBLIC SECTION.
  METHODS: on_user_command FOR EVENT added_function OF cl_salv_events_table
  IMPORTING e_salv_function.
ENDCLASS.

CLASS l_cl_handle_events IMPLEMENTATION.
  METHOD on_user_command.
    PERFORM handle_user_command USING e_salv_function.
  ENDMETHOD.
ENDCLASS.

START-OF-SELECTION.
IF rd3 = 'X'. "日志查看
  PERFORM frm_show_log .
ELSE.
  IF p_file IS INITIAL.
    MESSAGE '请选择要上传的模板文件' TYPE 'S' DISPLAY LIKE  'E'.
    RETURN .
  ENDIF.

  PERFORM frm_upload_file.

*    CHECK gw_info-ztype NE 'E'.

  PERFORM frm_show_alv .

ENDIF.
*&---------------------------------------------------------------------*
*& Form frm_show_alv
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_show_alv .
  TRY.
    cl_salv_table=>factory(
    IMPORTING
      r_salv_table = gr_table
    CHANGING
      t_table      = gt_tab[]
      ).
  CATCH cx_salv_msg.
  ENDTRY.

  gr_columns = gr_table->get_columns( ).
  gr_columns->set_optimize( 'X' ).

  gr_functions = gr_table->get_functions( ).
  gr_functions->set_all( 'X' ).

  DEFINE mcr_undisplay.
    TRY.
      gr_column ?= gr_columns->get_column( &1 ).
      gr_column->set_visible( cl_salv_column_table=>false ).
      gr_column->set_technical( 'X' ) .
    CATCH cx_salv_not_found .
    ENDTRY.
  END-OF-DEFINITION.

*  mcr_undisplay: ''.
  DEFINE mcr_setcoltext.
    TRY.
      gr_column ?= gr_columns->get_column( &1 ).
      gr_column->set_short_text( &2 ).
      gr_column->set_long_text( &2 ).
      gr_column->set_medium_text( &2 ).

    CATCH cx_salv_not_found .
    ENDTRY.
  END-OF-DEFINITION.
  mcr_undisplay: 'ZJSLJS' .
  mcr_setcoltext: 'WERKS' '工厂',
  'MATNR' '父件物料编码',
  'MAKTX' '父件物料描述',
  'STLAN' 'BOM用途',
  'AENNR' '变更编号',
  'STLAL' '可选BOM',
  'DATUV' '有效起始日期',
  'STKTX' 'BOM表头文本描述',
  'BMENG' '基本数量',
  'BMEIN' '基本计量单位',
  'STLST' 'BOM状态',
  'POSTP' '项目类别',
  'POSNR' '组件项目编号',
  'IDNRK' '组件物料编码',
  'MATKL' '组件物料描述',
  'MENGE' '组件数量',
  'MEINS' '组件单位',
  'SORTF' '排序字符串',
  'AUSCH' '损耗率',
  'SANKA' '成本核算标识',
  'ALPGR'  '替代项目:组',
  'ALPRF'  '优先级',
  'ALPST'  '替代项目:策略',
  'EWAHR'  '使用可能性按 %',
  'LGORT' '生产仓库地点',
  'STLNR' '物料清单编码',
  'VER01' '父件料号版本',
  'VER02' '子件料号版本'.


  TRY.
    DATA lv_status TYPE sypfkey .
    lv_status = 'STANDARD' .
    CALL METHOD gr_table->set_screen_status
    EXPORTING
      REPORT        = sy-repid
      pfstatus      = lv_status
      set_functions = gr_table->c_functions_all.
  CATCH cx_sy_arithmetic_error INTO DATA(exc).
  ENDTRY.

  gr_layout = gr_table->get_layout( ).
  gs_program-REPORT = sy-repid.
  gr_layout->set_key( gs_program ).
  gr_layout->set_save_restriction( cl_salv_layout=>restrict_none ).
  gr_layout->set_default( 'X' ).
*  DATA lv_variant TYPE slis_vari .
*  lv_variant = '/DEFAULT' .
*  gr_layout->set_initial_layout( lv_variant ) .



  "=====获取事件对象
  DATA: lr_event TYPE REF TO cl_salv_events_table.
  lr_event = gr_table->get_event( ).

  "=====事件注册
  DATA: lr_handle_event TYPE REF TO l_cl_handle_events.
  CREATE OBJECT lr_handle_event.
  SET HANDLER lr_handle_event->on_user_command FOR lr_event.

  DATA(lv_title) = ':创建' .
  IF rd2 = 'X'.
    lv_title = ':更改' .
  ENDIF.
  SET TITLEBAR 'TITLE' WITH 'BOM主数据批量维护' lv_title .
  gr_table->display( ).
ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_check_input
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_check_input .



  "检查输入
  CLEAR:gw_info .

  SELECT marc~matnr, marc~werks ,marc~lvorm AS wrk_lvorm ,mara~lvorm, mara~meins ,marc~ausme ,mara~bstme INTO TABLE @DATA(lt_mat)
        FROM marc INNER JOIN mara ON marc~matnr = mara~matnr
        FOR ALL ENTRIES IN @gt_tab
        WHERE ( marc~matnr = @gt_tab-matnr OR marc~matnr = @gt_tab-idnrk )
        AND marc~werks = @gt_tab-werks.
  DATA:lw_mat LIKE LINE OF lt_mat .

  SELECT DISTINCT matnr, werks ,stlan ,stlnr , stlal INTO TABLE @DATA(lt_mast)
        FROM mast FOR ALL ENTRIES IN @gt_tab
        WHERE matnr = @gt_tab-matnr AND werks = @gt_tab-werks AND stlan = @gt_tab-stlan .
  DATA:lw_mast LIKE LINE OF lt_mast .

  "判断权限
  gw_info-zauth_wrk = 'X'.
  LOOP AT gt_tab.

    CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
    EXPORTING
      percentage = 50
      TEXT       = '检查数据...'.


    AUTHORITY-CHECK OBJECT 'ZAOPP_WRK'
    ID 'ZWERKS' FIELD gt_tab-werks
    ID 'ZACTIVE' FIELD 'X'.
    IF sy-subrc <> 0.
      gw_info-ztype = 'E'.
      gw_info-zmsg = '您没有此工厂' && gt_tab-werks && '的权限' .
      gw_info-zauth_wrk = ''.
    ENDIF.

    "父阶物料
    DATA(lv_matnr) =   |{ gt_tab-matnr ALPHA = OUT }| .
    CONDENSE lv_matnr NO-GAPS .

    "创建时可选BOM为空,自动生成
    IF gt_tab-stlal IS INITIAL AND rd1 = 'X' .
      CLEAR:alttab[].
      LOOP AT lt_mast INTO lw_mast WHERE matnr = gt_tab-matnr.
        alttab-stlal = lw_mast-stlal .
        APPEND alttab .
      ENDLOOP.
      SORT alttab .
      PERFORM alt_find_next CHANGING gt_tab

http://www.dtcms.com/a/551089.html

相关文章:

  • python字符串处理与正则表达式--之八
  • 吴堡网站建设费用阿里云免费网站建设
  • lyh教大前端
  • 重庆移动网站建设html代码翻译器
  • 摄影师网站html5注册wordpress发送邮件
  • 郑州做网站云极游戏推广吧
  • 查网站ip地址网页升级紧急通知狼人
  • 青岛百度网站排名优化做网站怎么切片
  • wap网站开发公司企业宣传片制作教程
  • 怎样免费建企业网站吗wordpress首页标题修改
  • seo整站优化费用宝塔为什么要安装Wordpress
  • 天河怎样优化网站建设优化网站找哪家
  • 网站建设有几种方式美丽深圳公众号二维码原图
  • 模版 网站需要多少钱崂山网站建设
  • 广州网站定做教程wordpress知识
  • 零代码网站开发工具新乡网站建设哪家专业
  • 网站建设迁移方案厦门市城市建设档案馆网站
  • 织梦网站评论后"提示验证码错误请点击验证码图片更新验证码刚做的单页网站怎么预览
  • 做鞋的贸易公司网站怎么做好网站模板有后台
  • 东南亚营销型网站建设与网络推广重庆大渡口营销型网站建设公司推荐
  • 免费制作logo的网站如何开心设计一个网站
  • 重庆有名的网站建设编程 毕业设计代做网站
  • 网站模板设计师要求网络应用服务管理
  • 中国建设电工立网站微信网站地址
  • 网站 平均加载时间宜兴网站开发
  • 湖南英文网站建设芜湖弋江区最新消息
  • vs2008如何新建网站天津网站制作企业
  • 江门网站程序开发制作高速wordpress优化
  • 公众平台网站价格静态网站建设平台
  • 谁做网站人力资源网站开发说明书