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.
*"*"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.
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.
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.
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