‎2008 Jan 16 3:51 PM
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.
‎2008 Jan 16 4:34 PM
Hi Balu
at seleciton-screen input/output.
select single kunnr from VBPA
into lv_test
where kunnr = P_KUNNR and
partner function = 'AG'. <<< or 'SP' as saved in DB
if sy-subrc NE 0.
message '''given customer is not a sold-to-party''.
endif.
Award points if helpful.
‎2008 Jan 16 4:34 PM
Hi Balu
at seleciton-screen input/output.
select single kunnr from VBPA
into lv_test
where kunnr = P_KUNNR and
partner function = 'AG'. <<< or 'SP' as saved in DB
if sy-subrc NE 0.
message '''given customer is not a sold-to-party''.
endif.
Award points if helpful.
‎2008 Jan 16 4:48 PM
Hi Jack,
Can you explain a bot more about placing the code you gave.
Regards,
Balu.
‎2008 Jan 16 4:54 PM
>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.
at seleciton-screen input/output. <<<<<<event name I guess input is right
*in the select you check if the kunnr is a sold to or ship to
if the Kunnr is saved as AG/ SP then it will proceed, if its not AG/SP then it will go inside the if statement and raise the message as you wanted*
select single kunnr from VBPA
into lv_test
where kunnr = P_KUNNR and
partner function = 'AG'. <<< or 'SP' as saved in DB
if sy-subrc NE 0.
message '''given customer is not a sold-to-party''. <<< message
endif.
‎2008 Jan 16 5:44 PM