SAP PP生产订单组件批量维护分享

一、功能逻辑

二、功能界面

三、功能代码

*&---------------------------------------------------------------------*
*& Report ZRPPP_0003
*&---------------------------------------------------------------------*
*& 
*&---------------------------------------------------------------------*
REPORT zrppp_0021.
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:BEGIN OF gt_update OCCURS 0 .
DATA:
  aufnr  TYPE  afpo-aufnr,
  posnr  TYPE  afpo-posnr,
  vornr  TYPE  resb-vornr,
  matnr1 TYPE  resb-matnr,
  maktx1 TYPE  makt-maktx,
  bdmng  TYPE  resb-bdmng,
  erfme  TYPE  resb-erfme,
  lgort  TYPE  resb-lgort,
  sortf  TYPE  resb-sortf,
  END OF gt_update .

TYPES: BEGIN OF ty_msg  ,
         status TYPE zde_status,
         msg    TYPE bapi_msg,
         ztype  TYPE bapi_mtype,
       END OF ty_msg .


TYPES: BEGIN OF ty_info  ,
         werks  TYPE  afpo-dwerk,
         aufnr  TYPE  afpo-aufnr,
         auart  TYPE  caufv-auart,
         matnr  TYPE  afpo-matnr,
         maktx  TYPE  makt-maktx,
         gamng  TYPE  afko-gamng,
         gstrp  TYPE  afko-gstrp,
         gltrp  TYPE  afko-gltrp,
         posnr  TYPE  resb-posnr,
         vornr  TYPE  resb-vornr,
         matnr1 TYPE  resb-matnr,
         maktx1 TYPE  makt-maktx,
         bdmng  TYPE  resb-bdmng,
         erfme  TYPE  resb-erfme,
         lgort  TYPE  resb-lgort,
         sortf  TYPE  resb-sortf,
       END OF ty_info .

DATA:BEGIN OF gt_tab OCCURS 0 .
       INCLUDE TYPE ty_msg .
       INCLUDE TYPE ty_info .
DATA:  rsnum TYPE resb-rsnum,
       rspos TYPE resb-rspos,
       aplzl TYPE afvu-aplzl,
     END OF gt_tab .


TYPES: BEGIN OF ty_gx  ,
         aufnr TYPE  afpo-aufnr,
         vornr TYPE  afvgd-vornr,
         arbpl TYPE  afvgd-arbpl,
         steus TYPE  afvgd-steus,
         ltxa1 TYPE  afvgd-ltxa1,
         vgw01 TYPE  afvgd-vgw01,
         vge01 TYPE  afvgd-vge01,
         vgw02 TYPE  afvgd-vgw02,
         vge02 TYPE  afvgd-vge02,
         vgw03 TYPE  afvgd-vgw03,
         vge03 TYPE  afvgd-vge03,
         ekorg TYPE  afvgd-ekorg,
         ekgrp TYPE  afvgd-ekgrp,
         matkl TYPE  afvgd-matkl,
       END OF ty_gx .


DATA:BEGIN OF gt_gx OCCURS 0 .
       INCLUDE TYPE ty_msg .
       INCLUDE TYPE ty_gx .

DATA:  aufpl TYPE afko-aufpl,
     END OF gt_gx .

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:BEGIN OF gt_head OCCURS 0 .
DATA:  aufnr TYPE afpo-aufnr,
       ablad TYPE afpo-ablad.
       INCLUDE TYPE ty_msg .
DATA:   END OF gt_head .

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 p21 .

  SKIP 1 .

  PARAMETERS: chk1 AS CHECKBOX .

SELECTION-SCREEN END OF BLOCK part1.

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


SELECTION-SCREEN FUNCTION KEY 1.
SELECTION-SCREEN FUNCTION KEY 2.

AT SELECTION-SCREEN OUTPUT.
  DATA(lv_title) = '组件' .
  IF rd2 = 'X'.
    lv_title = '工序' .
  ELSEIF rd3 = 'X'.
    lv_title = '抬头' .
  ENDIF.
  SET TITLEBAR 'TITLE' WITH lv_title .
  IF rd1 = ''.
    chk1 = '' .
  ENDIF.

INITIALIZATION.
*btntxt1 = '模板下载' .
  sscrfields-functxt_01 = '模板下载(组件批量维护)'.
  sscrfields-functxt_02 = '模板下载(工序批量维护)'.


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.
  CHECK sscrfields-ucomm+0(2) = 'FC' .
  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 p_file IS INITIAL.
    MESSAGE '请选择要上传的模板文件' TYPE 'S' DISPLAY LIKE  'E'.
    RETURN .
  ENDIF.

  IF rd1 = 'X' .
    PERFORM frm_upload_file. "组件
  ELSEIF rd2 = 'X' .
    PERFORM frm_upload_file_1. "工序
  ELSEIF rd3 = 'X' .
    PERFORM frm_upload_file_2. "抬头
  ENDIF.

  CHECK gw_info-ztype NE 'E'.

  PERFORM frm_show_alv .

*&---------------------------------------------------------------------*
*& Form frm_show_alv
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_show_alv .
  DEFINE marco_table.
    TRY.
      cl_salv_table=>factory(
      IMPORTING
        r_salv_table = gr_table
      CHANGING
        t_table      = &1"gt_tab[]
        ).
    CATCH cx_salv_msg.
    ENDTRY.
  END-OF-DEFINITION.

  IF rd1 = 'X'. "组件
    marco_table:gt_tab[] .
  ELSEIF rd2 = 'X'. "工序
    marco_table:gt_gx[] .
  ELSEIF rd3 = 'X'. "抬头
    marco_table:gt_head[] .
  ENDIF.
  gr_columns = gr_table->get_columns( ).
  gr_columns->set_optimize( '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.

  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.

  IF rd1 = 'X'. "组件
    DATA(lv_title) = '组件' .
    mcr_undisplay: 'ZTYPE','RSNUM','RSPOS' , 'APLZL'.
    mcr_setcoltext: 'WERKS' '工厂',
    'AUFNR' '生产工单',
    'AUART' '生产工单类型',
    'MATNR' '物料编码',
    'MAKTX' '物料描述',
    'GAMNG' '生产工单数量',
    'GSTRP' '开始日期',
    'GLTRP' '结束日期',
    'POSNR' '行项目号',
    'VORNR' '工序号',
    'MATNR1' '组件物料编码',
    'MAKTX1' '组件物料描述',
    'BDMNG' '组件数量',
    'ERFME' '单位',
    'LGORT' '库存地'.
  ELSEIF rd2 = 'X'. "工序
    lv_title = '工序' .
    mcr_undisplay: 'AUFPL'.
    mcr_setcoltext: 'WERKS' '工厂',
    'AUFNR' '生产工单号码',
    'VORNR' '工序号',
    'ARBPL' '工作中心',
    'STEUS' '工序控制码',
    'LTXA1' '工序短文本',
    'VGW01' '人工工时',
    'VGE01' '单位',
    'VGW02' '机器工时',
    'VGE02' '单位',
    'VGW03' '模具工时',
    'VGE03' '单位',
    'EKORG' '采购组织',
    'EKGRP' '采购组',
    'MATKL' '物料组'.
  ELSEIF rd3 = 'X'. "抬头
    lv_title = '工单抬头' .
  ENDIF.


  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.

  SET TITLEBAR 'TITLE' WITH lv_title .

  gr_table->display( ).
ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_check_input
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_check_input .
  "检查输入

*  CHECK gw_info-ztype EQ 'E'.
*  MESSAGE '数据有错误,不能导入' TYPE 'S' DISPLAY LIKE gw_info-ztype .
ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_down_model
*&a

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值