Hello Gurus,
I wrote the following code. The program is working fine.
When executed, a selection screen appears with material and customer number.
When only material is given, it displays the material - sales org- dchannel - material status - description.
When clicked on any line, it takes to CO09 tcode.
When both material and customer are given, it displays the common sales org where both material and customer exists:
material - sales org- dchannel - material status - description.
if the customer and material does not have no common sales area data, it will display the
material - sales org- dchannel - material status - description, where material exists.
When a line is selected, it will take to CO09 tcode.
Everything is working fine until now.
I need to make a change now. The program should function as it is when a customer is given, when the partner function is 'SP' or 'AG'. Else it should display a messahe - given customer is not a sold-to-party.
Please help me out.
Thanks in advance.
Regards,
Balu
REPORT YP_10 MESSAGE-ID YPMSG .
TABLES : MVKE, TVMST.
TYPES : BEGIN OF T_MVKE,
MATNR TYPE MVKE-MATNR,
VKORG TYPE MVKE-VKORG,
VTWEG TYPE MVKE-VTWEG,
VMSTA TYPE MVKE-VMSTA,
VMSTB TYPE TVMST-VMSTB,
END OF T_MVKE.
DATA : LT_MVKE TYPE STANDARD TABLE OF T_MVKE WITH HEADER LINE,
LS_MVKE TYPE T_MVKE.
DATA : LT1_MVKE TYPE STANDARD TABLE OF T_MVKE WITH HEADER LINE,
LS1_MVKE TYPE T_MVKE.
DATA : LT2_MVKE TYPE STANDARD TABLE OF T_MVKE WITH HEADER LINE,
LS2_MVKE TYPE T_MVKE.
TYPES : BEGIN OF T_KNVP,
KUNNR TYPE KNVP-KUNNR,
VKORG TYPE KNVP-VKORG,
VTWEG TYPE KNVP-VTWEG,
PARVW TYPE KNVP-PARVW,
END OF T_KNVP.
DATA : LT_KNVP TYPE STANDARD TABLE OF T_KNVP WITH HEADER LINE,
LS_KNVP TYPE T_KNVP.
SELECT-OPTIONS S_MATNR FOR MVKE-MATNR OBLIGATORY.
PARAMETER : P_KUNNR TYPE KNVP-KUNNR .
START-OF-SELECTION.
SELECT MATNR VKORG VTWEG VMSTA FROM MVKE INTO TABLE LT_MVKE WHERE MATNR IN S_MATNR .
IF SY-SUBRC = 0.
APPEND LT_MVKE.
ELSE.
EXIT.
ENDIF.
SELECT DISTINCT KUNNR VKORG VTWEG PARVW FROM KNVP INTO TABLE LT_KNVP WHERE KUNNR = P_KUNNR.
IF SY-SUBRC = 0.
APPEND LT_KNVP.
ENDIF.
LOOP AT LT_MVKE.
LT1_MVKE-MATNR = LT_MVKE-MATNR.
LT1_MVKE-VKORG = LT_MVKE-VKORG.
LT1_MVKE-VTWEG = LT_MVKE-VTWEG.
LT1_MVKE-VMSTA = LT_MVKE-VMSTA.
SELECT SINGLE VMSTB FROM TVMST INTO LT1_MVKE-VMSTB WHERE VMSTA = LT_MVKE-VMSTA AND SPRAS = SYST-LANGU.
APPEND LT1_MVKE.
CLEAR LT1_MVKE.
ENDLOOP.
IF NOT LT_KNVP[] is INITIAL.
LOOP AT LT1_MVKE.
READ TABLE LT_KNVP WITH KEY VKORG = LT1_MVKE-VKORG VTWEG = LT1_MVKE-VTWEG BINARY SEARCH TRANSPORTING NO FIELDS.
IF SY-SUBRC = 0.
APPEND LT1_MVKE TO LT2_MVKE.
CLEAR LT1_MVKE.
ENDIF.
ENDLOOP.
IF LT2_MVKE[] IS INITIAL.
MESSAGE I003 DISPLAY LIKE 'E'.
MESSAGE S003.
LT2_MVKE[] = LT1_MVKE[].
ENDIF.
ELSEIF LT_KNVP[] IS INITIAL.
LOOP AT LT1_MVKE.
IF SY-SUBRC = 0.
APPEND LT1_MVKE TO LT2_MVKE.
ELSE.
CONTINUE. "EXIT.
ENDIF.
CLEAR LT1_MVKE.
ENDLOOP.
ENDIF.
WRITE: /1 'MATERIAL NUMBER', 20 'SALES ORG', 35 'DISTRIBUTION CHANNEL', 65 'MATERIAL STATUS', 85 'STATUS DESCRIPTION'.
SKIP 1.
LOOP AT LT2_MVKE.
FORMAT HOTSPOT ON.
WRITE: /1 LT2_MVKE-MATNR, 20 LT2_MVKE-VKORG, 35 LT2_MVKE-VTWEG, 65 LT2_MVKE-VMSTA, 85 LT2_MVKE-VMSTB.
HIDE: LT2_MVKE-MATNR, LT2_MVKE-VKORG, LT2_MVKE-VTWEG, LT2_MVKE-VMSTA, LT2_MVKE-VMSTB.
CLEAR LT2_MVKE.
FORMAT HOTSPOT OFF.
ENDLOOP.
AT LINE-SELECTION.
IF LT2_MVKE-VMSTA = 'Z2'.
MESSAGE I002 DISPLAY LIKE 'E'.
ELSE.
SET PARAMETER ID 'MAT' FIELD LT2_MVKE-MATNR.
CLEAR LT2_MVKE-MATNR.
DATA WERKS(4) TYPE C VALUE '1200'.
SET PARAMETER ID 'WRK' FIELD WERKS.
DATA RULE(2) TYPE C VALUE 'ZB'.
SET PARAMETER ID 'PRR' FIELD RULE.
CALL TRANSACTION 'CO09'.
ENDIF.