Wednesday, February 20, 2019

             Enhancement for MIGO Tcode

Requirement 1: To Do Authorization validations while posting MIGO based on user code given to users.

1.    In MIGO at header level utilized existing field for entering user code given to post GR.




All User Codes will be given to each individual who are using MIGO for posting GR. All the user codes are maintained in custom table for validating in MIGO. If User enters valid user code then only they are able to post GR or else it will throw an error message. You are not authorized to post GR. All user codes will be confidential.


For this implemented logic in customer exit MBCF0002 (EXIT_SAPMM07M_001).



Requirement 2 : Add custom Tab in MIGO header for Adding Transporter details.

For this requirement implemented BADI MB_MIGO_BADI.



Before that append custom fields to MKPF table.


Create function module ZMIGO_BADI_PUT_HEADER for displaying custom field values when Created GR is in Display mode.


Source Code :

*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     REFERENCE(I_MKPF) TYPE  ZZTRANSPORTER_DETAILS
*"----------------------------------------------------------------------
  
DATA ls_transporter TYPE zpo_transporter_name,
         ls_truckno     
TYPE ztruckno,
         ls_driver      
TYPE zdrivername,
         ls_courier     
TYPE zlr_courier.

  
IF zztransporter IS INITIAL.
    
GET PARAMETER ID 'TRANS' FIELD ls_transporter.
    zztransporter 
ls_transporter.
  
ENDIF.

  
IF zztruckno IS INITIAL .
    
GET PARAMETER ID 'TRUCK'  FIELD  ls_truckno.
    zztruckno 
ls_truckno.

ENDIF.

  
IF zzdrivername IS INITIAL.
    
GET PARAMETER ID 'DRIVER' FIELD ls_driver.
    zzdrivername 
ls_driver.
  
ENDIF.

  
IF zzlr_courier IS INITIAL.
    
GET PARAMETER ID 'COURIER' FIELD ls_courier.
    zzlr_courier 
ls_courier.
  
ENDIF.

       In method PBO Header add the custom tab screen created under function group.



1.       In method post document write logic to store values entered in custom fields in MIGO screen.


Function module Z_SET_DATA_MIGO_HEADER is used to get custom field values entered in MIGO.



Function Module ZEXPORT_MEMORY is used to place custom field values in Memory Id’s for using in later purpose .

This FM is of type Update FM because in MIGO (MKPF & MSEG or MATDOC table in HANA) Will get updated in Update task.



       In method STATUS_AND_HEADER implement logic to get custom field values updated in MKPF and place them in Memory to use in PBO Header Method in 

     ZMIGO_BADI_PUT_HEADER FM for displaying GR details in display mode along with custom values.

       Now most important thing is we need to write logic to update custom values in standard tables MKPF/ MATDOC.

For this created Implicit Enhancement in NSDM_MTDCSA_POST FM which is of Update Fm.

ENHANCEMENT 1  ZTRANS_DETAILS_UPDATE_ENH_IMP.    "active version

DATA ls_transporter TYPE ZPO_TRANSPORTER_NAME,
       ls_truckno TYPE ZTRUCKNO,
       ls_driver TYPE ZDRIVERNAME,
       ls_courier TYPE ZLR_COURIER,
       ls_mblnr TYPE mblnr,
       LS_MATDOC TYPE MATDOC.

**Importing Custom Field Values Entered In MIGO In Custom Tab
GET PARAMETER ID 'TRANS' FIELD ls_transporter.
GET PARAMETER ID 'TRUCK' FIELD LS_TRUCKNO.
GET PARAMETER ID 'DRIVER' FIELD LS_DRIVER.
GET PARAMETER ID 'COUR' FIELD LS_COURIER.
GET PARAMETER ID 'MBLNR' FIELD LS_MBLNR.

ls_matdoc-zztransporter ls_transporter.
ls_matdoc-zztruckno ls_truckno.
ls_matdoc-zzdrivername LS_DRIVER.
ls_matdoc-zzlr_courier LS_COURIER.
ls_matdoc-mblnr ls_mblnr.
**Modifying Standard Table With Custom Field Values To Update In Standard Tables ( MKPF , MATDOC )
MODIFY it_matdoc FROM ls_matdoc TRANSPORTING zztransporter zztruckno zzdrivername zzlr_courier
 WHERE mblnr ls_matdoc-mblnr.

ENDENHANCEMENT.

In This FM get the custom values from Memory ID Stored in Badi in Post Document method in ZEXPORT_MEMORY FM and modify IT_MATDOC based on Material Doc number with Custom Values. Beacause IT_MATDOC is the table from which standard tables gets updated.

No comments:

Post a Comment

Create Dynamic Internal Table & Dynamic FIELD CATALOG Introduction: This document explains how to create dynamic internal table ...