Application Development 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: 

abap

Former Member
0 Kudos

SELECT MATNR

WERKS

LGORT

LABST

FROM MARD

INTO TABLE IT_MARD

WHERE MATNR = S_MATNR.

IF NOT IT_MARD[] IS INITIAL.

SELECT MATNR

WERKS

LGORT

CHARG

FROM MCHB

INTO TABLE IT_MCHB

FOR ALL ENTRIES IN IT_MARD

WHERE MATNR = IT_MARD-MATNR

AND WERKS = IT_MARD-WERKS

AND LGORT = IT_MARD-LGORT.

ENDIF.

DATA : L_LABST LIKE MARD-LABST,

G_LABST LIKE MARD-LABST,

H_LABST LIKE MARD-LABST,

I_LABST LIKE MARD-LABST.

LOOP AT IT_MCHB INTO ST_MCHB.

MOVE-CORRESPONDING ST_MCHB TO ST_FINAL.

APPEND ST_FINAL TO IT_FINAL.

READ TABLE IT_MARD INTO ST_MARD WITH KEY MATNR =

ST_MCHB-MATNR

WERKS = ST_MCHB-WERKS

LGORT = ST_MCHB-LGORT.

IF SY-SUBRC = 0.

MOVE-CORRESPONDING ST_MARD TO ST_FINAL.

APPEND ST_FINAL TO IT_FINAL.

CLEAR IT_FINAL.

ENDIF.

endloop.

loop at it_final into st_final.

AT NEW CHARG.

MOVE ST_final-LABST TO L_LABST.

G_LABST = ( 45 * L_LABST ) / 100.

H_LABST = ( 25 * L_LABST ) / 100.

I_LABST = ( 30 * L_LABST ) / 100.

WRITE 😕 ST_final-CHARG,

ST_final-LABST,

G_LABST,

H_LABST,

I_LABST.

ENDAT.

AT END OF CHARG.

SUM.

CHECK ST_final-LABST = S_QUAN.

IF SY-SUBRC <> 0.

WRITE:/ 'stock not availabale'.

ELSE.

MOVE ST_final-LABST TO L_LABST.

G_LABST = ( 45 * L_LABST ) / 100.

H_LABST = ( 25 * L_LABST ) / 100.

I_LABST = ( 30 * L_LABST ) / 100.

WRITE 😕 ST_final-CHARG,

ST_final-LABST,

G_LABST,

H_LABST,

I_LABST.

ENDIF.

ENDAT.

ENDLOOP.

ENDFORM. " z_get_data

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi Rakhee,

The it_final table population should be like the below

LOOP AT IT_MCHB INTO ST_MCHB.

MOVE-CORRESPONDING ST_MCHB TO ST_FINAL.

READ TABLE IT_MARD INTO ST_MARD

WITH KEY MATNR = ST_MCHB-MATNR

WERKS = ST_MCHB-WERKS

LGORT = ST_MCHB-LGORT.

IF SY-SUBRC = 0.

ST_FINAL-LABST = IT_MARD-LABST.

ENDIF.

APPEND ST_FINAL TO IT_FINAL.

CLEAR IT_FINAL.

ENDLOOP.

Try this and let me know whether it is working or not.

Regards,

Satya.

3 REPLIES 3

Former Member
0 Kudos

Hi Rakhee,

The it_final table population should be like the below

LOOP AT IT_MCHB INTO ST_MCHB.

MOVE-CORRESPONDING ST_MCHB TO ST_FINAL.

READ TABLE IT_MARD INTO ST_MARD

WITH KEY MATNR = ST_MCHB-MATNR

WERKS = ST_MCHB-WERKS

LGORT = ST_MCHB-LGORT.

IF SY-SUBRC = 0.

ST_FINAL-LABST = IT_MARD-LABST.

ENDIF.

APPEND ST_FINAL TO IT_FINAL.

CLEAR IT_FINAL.

ENDLOOP.

Try this and let me know whether it is working or not.

Regards,

Satya.

RichHeilman
Developer Advocate
Developer Advocate
0 Kudos

I don't even see a question here?

Regards,

Rich Heilman

former_member181962
Active Contributor
0 Kudos

Hi rakhee,

Modify this part of the code:

LOOP AT IT_MCHB INTO ST_MCHB.

<b>*MOVE-CORRESPONDING ST_MCHB TO ST_FINAL.

*APPEND ST_FINAL TO IT_FINAL.</b>READ TABLE IT_MARD INTO ST_MARD WITH KEY MATNR =

ST_MCHB-MATNR

WERKS = ST_MCHB-WERKS

LGORT = ST_MCHB-LGORT.

IF SY-SUBRC = 0.

<b>MOVE-CORRESPONDING ST_MCHB TO ST_FINAL.</b>

MOVE-CORRESPONDING ST_MARD TO ST_FINAL.

APPEND ST_FINAL TO IT_FINAL.

CLEAR IT_FINAL.

ENDIF.

endloop.