Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Looping problem against tables

Former Member
0 Likes
711

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.

1 ACCEPTED SOLUTION
Read only

former_member156446
Active Contributor
0 Likes
677

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.

4 REPLIES 4
Read only

former_member156446
Active Contributor
0 Likes
678

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.

Read only

0 Likes
677

Hi Jack,

Can you explain a bot more about placing the code you gave.

Regards,

Balu.

Read only

0 Likes
677

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

Read only

0 Likes
677

Thanks Jack.

I assigned points.

Regards,

Balu