Skip to Content
0
Former Member
Jan 16, 2008 at 03:51 PM

Looping problem against tables

34 Views

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.