SAP BLOG Vendor Code addition in MB21 Screen

SAP Blog

Kayıtlı Üye
Katılım
22 Ara 2017
Mesajlar
1,925
Tepki puanı
7
Puanları
6
We got the requirement from the client that to add Vendor code field in Reservation screen (Tcode-MB21/22) & Update Vendor Code against Reservation.

So I have looked all the EXIT provide by SAP but none of then contained Screen Exit. So I have looked on SCN for any further possibility to full fill this requirement. Mostly talked about same EXIT & BADI’s But strangely I could not find any particular solution which will solve my quest.

I thought it’s better to share my solution that how we solve this quest So that It might be helpful to people with the same requirement.

Let’s get started
1f609.png
…!!!

As a developer, debugging is the best tool to find & understand the flow of the program.

After lots of debugging the standard programs, we come to the solution that we will provide a pop up to add vendor code as they need in the header level & fortunately user accepted our solution.

As there is no screen exit for ME21/22 so we fulfill the requirement by just giving the pop up during SAVE.

During debugging I have found various enhancement spot but very few spots fulfill our requirement & below is the detailed solution for that.

Program Name: MM07RFR0

Just Create Enhancement spot at the end of the subroutine: r–segmente_generieren

as shown in below screenshot:

123.png


Below is the Code Sample:

ENHANCEMENT 1 ZMB_VENDOR_POP_UP. "active version
IF sy-tcode EQ 'MB21' OR sy-tcode EQ 'MB22'.
DATA:
it_resb TYPE STANDARD TABLE OF sval,
wa_resb TYPE sval,
it_resb_ext TYPE STANDARD TABLE OF resb,
lv_lifnr TYPE resb-lifnr.

IF it_resb IS INITIAL.
wa_resb-tabname = 'RESB'.
wa_resb-fieldname = 'LIFNR'.
IF xresb-lifnr IS NOT INITIAL.
*--Display Vendor--*
wa_resb-value = xresb-lifnr.
ENDIF.
APPEND wa_resb TO it_resb.
ENDIF.
*--Pop up for Vendor--*
CALL FUNCTION 'POPUP_GET_VALUES'
EXPORTING
popup_title = 'Select Vendor'
tables
fields = it_resb
EXCEPTIONS
ERROR_IN_FIELDS = 1
OTHERS = 2 .
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.

READ TABLE it_resb ASSIGNING FIELD-SYMBOL(<fs_resb>) INDEX 1.
*--Fill the Vendor in RESB--*
IF sy-subrc IS INITIAL.
lv_lifnr = <fs_resb>-value.
ENDIF.
IF xresb IS NOT INITIAL.
LOOP AT xresb ASSIGNING FIELD-SYMBOL(<fs_xresbz>).
IF lv_lifnr IS NOT INITIAL.
<fs_xresbz>-lifnr = lv_lifnr.
ENDIF.
ENDLOOP.
ENDIF.
*--For No change--*
IF upd_resb IS INITIAL AND upd_rkpf IS INITIAL AND
new_resb IS INITIAL AND sy-tcode EQ 'MB22'.
IF xresb-rsnum IS NOT INITIAL.
SELECT
*
FROM resb
INTO TABLE it_resb_ext
WHERE rsnum = xresb-rsnum.
IF sy-subrc IS INITIAL.
LOOP AT it_resb_ext ASSIGNING FIELD-SYMBOL(<fs_resb_update>).
IF <fs_resb_update>-lifnr NE lv_lifnr.
<fs_resb_update>-lifnr = lv_lifnr.
*--Update the Vendor--*
UPDATE resb SET lifnr = <fs_resb_update>-lifnr
WHERE rsnum EQ <fs_resb_update>-rsnum
AND rspos EQ <fs_resb_update>-rspos
AND rsart EQ <fs_resb_update>-rsart.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
ENDIF.
ENDIF.

ENDENHANCEMENT.

Above solution handle both the requirement i.e. during creating (MB21) it saved the Vendor code against Reservation & during change (MB22) it should display the previous vendor & able to change the same at the SAVE moment.



Final output:

When clicking on SAVE button (MB21) the user will get pop up for vendor code –

2-40.png


After Saved Vendor got updated against reservation in Table – RESB

3-41.png


Also, the same will be reflected in MIGO –

4-33.png


Your feedback & improvement are always welcome!
1f642.png


Regards,

Rajio Urkude

Okumaya devam et...
 
Üst