SAP_ABAP_MM_Informe de seguimiento de mantenimiento de vista de material (desarrollo personalizado)

Modelo de competencia de consultor SAP ABAP (ingeniero de desarrollo)_Terry habla sobre el blog de digitalización empresarial: el artículo del blog CSDN se ha visto 458 veces. Objetivo: según la revisión del modelo de competencia del consultor abap de SAP, proporcionar un excelente combustible para que un abaper con aproximadamente un año de experiencia crezca rápidamente a tres años de experiencia. https://blog.csdn.net/java_zhong1990/article/details/132469977


1 Escenario de aplicación, consulta el estado de mantenimiento de los datos maestros de materiales y proporciona referencia sobre la puntualidad del mantenimiento de materiales.


2 para lograr el efecto


*&---------------------------------------------------------------------*
*& Report ZMM029
*&---------------------------------------------------------------------*
*& 事务代码:ZMM029                                                    *
*& 程序名称:ZMM029 物料主数据视图清单                                                *
*& 请 求 号:                                               *
*& 程序目的:                                          *
*& 创 建 人:TerryZhong                                                 *
*& 设计时间:                                                *
*& 程序类型: ABAP/4 程序 ,数据转换                                    *
*& 输入文件:                                                           *
*& 输出文件:                                                           *
*& 描    述:                                                           *
*&---------------------------------------------------------------------*
*---------------------------------------------------------------------------------------------------------------------*
*** Modification LOG                                                                                                  *
*---------------------------------------------------------------------------------------------------------------------*
*Date          |   Userid      |        Reason      |           Request No   |            Description of Change                                                        *
*
*---------------------------------------------------------------------------------------------------------------------*


REPORT zmm029.

INCLUDE zmm029_top.
INCLUDE zmm029_sel.
INCLUDE zmm029_frm.
INCLUDE zmm029_pbo.
INCLUDE zmm029_pai.

INITIALIZATION.

AT SELECTION-SCREEN.

START-OF-SELECTION.

  PERFORM get_data.
  PERFORM set_catalog.
  PERFORM display_alv.
*&---------------------------------------------------------------------*
*& Form display_alv
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM display_alv .
  DATA: ls_layout TYPE lvc_s_layo.
  IF gt_data IS NOT INITIAL.
    ls_layout-zebra      = 'X'.
    ls_layout-cwidth_opt = 'X'.
* 调用ALV function
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
      EXPORTING
        i_callback_program       = sy-repid "这里是调用这个ALV的程序名
        i_callback_pf_status_set = 'PF_STATUS' "设置ALV状态栏的函数
        i_callback_user_command  = 'USER_COMMAND' "获取用户事件的函数
        is_layout_lvc            = ls_layout "显示的布局
        it_fieldcat_lvc          = gt_fieldcat_lvc "设置显示的字段以及字段的功能
        i_save                   = 'A'
      TABLES
        t_outtab                 = gt_data
      EXCEPTIONS
        program_error            = 1.
    IF sy-subrc <> 0.
      MESSAGE '报表生成异常,请联系系统管理员!' TYPE 'S' DISPLAY LIKE 'E'.
    ENDIF.
  ELSE.
* 这个消息用来显示我们是不是获取到了数据,自己用的时候把这个硬代码换成你需要的TEXT-XXX.
    MESSAGE '没有获取到数据,请重新检索!' TYPE 'S' DISPLAY LIKE 'E'.
    LEAVE TO LIST-PROCESSING.
    EXIT.
  ENDIF.
ENDFORM.

*&---------------------------------------------------------------------*
*& 包含               ZFICO042_TOP
*&---------------------------------------------------------------------*

TYPES: BEGIN OF gy_data,

         matnr         TYPE mara-matnr, "物料描述
         mtart         TYPE mara-mtart, "物料类型
         meins         TYPE mara-meins, "单位
         werks         TYPE marc-werks, "工厂
         base_view     TYPE c, "基本数据
         pur_view      TYPE c, "采购视图
         mrp_view      TYPE c, "MRP视图
         workplan_view TYPE c, "工作计划
         sales_view    TYPE c, "销售视图
         vkorg         TYPE mvke-vkorg,  "销售组织
         fico_view     TYPE c,           "财务视图
         vprsv         TYPE mbew-vprsv , "价格控制
         mlast         TYPE mbew-mlast, "物料价格确定: 控制
         werks_view    TYPE c, "工厂存储视图

         ekgrp         TYPE marc-ekgrp,
         dismm         TYPE marc-dismm,
         dispo         TYPE marc-dispo,
         sfcpf         TYPE marc-sfcpf,
         fevor         TYPE marc-fevor,


       END OF gy_data.

DATA gt_data TYPE TABLE OF gy_data.
DATA gs_data TYPE gy_data.
DATA: gt_fieldcat_lvc TYPE lvc_t_fcat, "ALV:定义一个先显示字段的表
      gs_fieldcat_lvc LIKE LINE OF gt_fieldcat_lvc. "ALV

TABLES:rbkp,rseg,acdoca,mara,marc,mbew.

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

  SELECT-OPTIONS:  so_matnr  FOR  mara-matnr .
  SELECT-OPTIONS:  so_werks  FOR  marc-werks .
  PARAMETERS:      p_vprsv   LIKE mbew-vprsv .
  PARAMETERS:      p_mlast   LIKE mbew-mlast .

SELECTION-SCREEN END OF BLOCK b1.
*&---------------------------------------------------------------------*
*& 包含               ZZFICO43_FRM
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form get_data
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM get_data .

  SELECT

        mara~matnr, "物料描述
        mara~mtart, "物料类型
        mara~meins, "单位
        marc~werks,

        marc~ekgrp,
        marc~dismm,
        marc~dispo,
        marc~sfcpf,
        marc~fevor,

        mvke~vkorg,  "销售组织
        mbew~vprsv,  "价格控制
        mbew~mlast   "物料价格确定: 控制

    INTO CORRESPONDING FIELDS OF TABLE @gt_data
    FROM mara
    LEFT JOIN marc ON marc~matnr = mara~matnr
    LEFT JOIN mvke ON mvke~matnr = mara~matnr AND mvke~dwerk = marc~werks
    LEFT JOIN mbew ON mbew~matnr = mara~matnr AND mbew~bwkey = marc~werks

    WHERE

    mara~matnr     IN @so_matnr
    AND marc~werks IN @so_werks

    .

  IF gt_data IS NOT INITIAL.

    SELECT *
      INTO TABLE @DATA(lt_msta)
      FROM msta FOR ALL ENTRIES IN @gt_data WHERE  msta~matnr = @gt_data-matnr AND msta~werks = @gt_data-werks.

    SORT lt_msta BY matnr werks statm lgort DESCENDING.

  ENDIF.

  LOOP AT gt_data ASSIGNING FIELD-SYMBOL(<fs1>).

    IF <fs1>-matnr IS NOT INITIAL.
      <fs1>-base_view = 'X'.
    ENDIF.

    IF <fs1>-matnr IS NOT INITIAL AND <fs1>-ekgrp IS NOT INITIAL.
      <fs1>-pur_view = 'X'.
    ENDIF.

    IF <fs1>-matnr IS NOT INITIAL AND <fs1>-dismm = 'PD' AND <fs1>-dispo IS NOT INITIAL .
      <fs1>-mrp_view = 'X'.
    ENDIF.

    IF <fs1>-sfcpf = '000001' AND <fs1>-fevor = '001'  .
      <fs1>-workplan_view = 'X'.
    ENDIF.

    IF <fs1>-vkorg IS NOT INITIAL  .
      <fs1>-sales_view = 'X'.
    ENDIF.

    IF <fs1>-vprsv IS NOT INITIAL.
      <fs1>-fico_view = 'X'.
    ENDIF.

    READ TABLE lt_msta INTO DATA(ls_msta) WITH  KEY matnr = <fs1>-matnr werks = <fs1>-werks statm = 'L' .
    IF sy-subrc = 0.

      IF ls_msta-lgort IS NOT INITIAL   .
        <fs1>-werks_view = 'X'.
      ENDIF..

    ENDIF.

  ENDLOOP.


  SORT gt_data BY matnr werks vkorg.

  DELETE ADJACENT DUPLICATES FROM gt_data COMPARING matnr werks vkorg.


ENDFORM.
*&---------------------------------------------------------------------*
*& Form set_catalog
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM set_catalog .
  DATA:lv_position TYPE i VALUE 1.
  CLEAR: lv_position.
  lv_position = lv_position + 1.

  DEFINE df_fieldcat.
    CLEAR gs_fieldcat_lvc.
    gs_fieldcat_lvc-col_pos     = lv_position."ALV 控制: 输出列
    gs_fieldcat_lvc-scrtext_m   = &1."中字段标签
    gs_fieldcat_lvc-fieldname   = &2."ALV 控制: 内部表字段的字段名称
    gs_fieldcat_lvc-no_zero     = &3."ALV 控制: 为输出隐藏零
    gs_fieldcat_lvc-checkbox    = &4."ALV 控制: 作为复选框输出
    gs_fieldcat_lvc-edit        = &5."设置可编辑模式
    gs_fieldcat_lvc-outputlen   = &6."输出长度
    gs_fieldcat_lvc-ref_table   = &7.
    gs_fieldcat_lvc-ref_field   = &8.
    gs_fieldcat_lvc-datatype    = &9.
    APPEND gs_fieldcat_lvc TO gt_fieldcat_lvc.
    ADD 1 TO lv_position.
  END-OF-DEFINITION.

  df_fieldcat:
'物料编号' 'MATNR' 'X' '' '' '18' 'MARA' 'MATNR' '',
'物料类型' 'MTART' 'X' '' '' '' '' '' '',
'单位' 'MEINS' 'X' '' '' '' '' '' '',
'工厂' 'WERKS' 'X' '' '' '' '' '' '',
'基本数据' 'BASE_VIEW' 'X' 'X' '' '' '' '' '',
'采购视图' 'PUR_VIEW' 'X' 'X' '' '' '' '' '',
'MRP视图' 'MRP_VIEW' 'X' 'X' '' '' '' '' '',
'工作计划' 'WORKPLAN_VIEW' 'X' 'X' '' '' '' '' '',
'销售视图' 'SALES_VIEW' 'X' 'X' '' '' '' '' '',
'销售组织' 'VKORG' 'X' '' '' '' '' '' '',
'财务视图' 'FICO_VIEW' 'X' 'X' '' '' '' '' '',
'价格控制' 'VPRSV' 'X' '' '' '' '' '' '',
'物料价格确定: 控制' 'MLAST' 'X' '' '' '' '' '' '',
'工厂存储视图' 'WERKS_VIEW' 'X' 'X' '' '' '' '' ''


    .


ENDFORM.
*&---------------------------------------------------------------------*
*& 包含               ZFICO042_PBO
*&---------------------------------------------------------------------*

FORM pf_status USING lt_extab TYPE slis_t_extab.

  REFRESH:lt_extab[]. CLEAR:lt_extab.
  SET TITLEBAR 'ZSTATUS_TITLE'.
  "说明:需要显示的按钮进行注释
*    APPEND 'ZSAVE'  TO lt_extab.
  SET PF-STATUS 'ZSTATUS_001' EXCLUDING lt_extab.

ENDFORM.
*&---------------------------------------------------------------------*
*& 包含               ZFICO042_PAI
*&---------------------------------------------------------------------*


FORM user_command USING i_ucomm TYPE sy-ucomm
                            i_wa_selfield TYPE slis_selfield.
  DATA:gwa_edit TYPE lvc_s_styl,
       git_edit TYPE lvc_t_styl.

  DATA lv_length TYPE num10.
  DATA lr_grid TYPE REF TO cl_gui_alv_grid.
  CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    IMPORTING
      e_grid = lr_grid.
  CALL METHOD lr_grid->check_changed_data.
  CALL METHOD lr_grid->refresh_table_display.
  i_wa_selfield-refresh = 'X'.


  CASE i_ucomm.

    WHEN  'ZSAVE'.
    WHEN OTHERS.

  ENDCASE.

ENDFORM.

3 Los problemas encontrados han sido resueltos.


4 diseño del esquema

4.1 Lógica de salida

Texto de opción de pantalla

Nombre técnico del campo de referencia

Elige un tipo

valor por defecto

¿Un artículo que debes perder?

Observación

uno

valor

distrito

entre

Controlar

caja

elección única

puntos

Codificación de materiales

MARA-MATNR

Posibilidad de búsqueda difusa

fábrica

control de precios

MBEW-VPRSV

Determinación del precio del material: control

MBEW-MLAST


4.2 Lógica de salida 

Nombre de la tabla

Descripción del nombre de la tabla

Nombre del campo

Campo Descripción

ilustrar

MARÁ

Datos generales de materiales

MARÁ

Datos generales de materiales

MTAR

Tipo de material

MARÁ

Datos generales de materiales

MÍO

unidad

fábrica

datos básicos

Cuando el código de material existe MARA-MATNR

Entonces este campo se marca o se muestra como Sí

Vista de adquisiciones

Cuando el código de material existe MARC-MATNR y MARC-EKGRP ≠ vacío

Entonces este campo correspondiente a la fábrica se marca o se muestra como Sí

vista MRP

Cuando el código de material existe MARC-MATNR, y MARC-DISMM=PD y MARC-DISPO≠null

Entonces este campo correspondiente a la fábrica se marca o se muestra como Sí

El plan de trabajo

MARC-SFCPF=000001 y MARC-FEVOR=001

Entonces este campo correspondiente a la fábrica se marca o se muestra como Sí

vista de ventas

Cuando el código de material existe MVKE-MATNR

Entonces este campo correspondiente a la fábrica se marca o se muestra como Sí

MVKE

Datos de ventas de materiales

VKORG

organización de ventas

MVKE- VKORG

vista contable

Cuando existe el código de material MBEW-MATNR

Entonces este campo correspondiente a la fábrica se marca o se muestra como Sí

MBEW

Evaluación de materiales

VPRSV

control de precios

MBEW

Evaluación de materiales

MLAST

Determinación del precio del material: control

Vista de almacenamiento de fábrica

Cuando el código de material existe MSTA-MATNR, y MSTA-WERKS=factory + MSTA-STATM=L +

MSTA-LGORT≠空

Entonces este campo correspondiente a la fábrica se marca o se muestra como Sí

Supongo que te gusta

Origin blog.csdn.net/java_zhong1990/article/details/134693918
Recomendado
Clasificación