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

Urgent Help

Former Member
0 Likes
783

Hi,

Refere this code.

INPUT FIELDS:

*******************

1.MATNR(MATERIAL NUMBER), 2. WERKS(PLANT), 3.STLAN(BOM USAGE),4.DATUV(VALID FROM), 5. DATUB(VALID TO).

I want to use 'CS_WHERE_USED_MAT' this function module here to get the detail where the material is using now. I don't know how to use this function module, please any one help me.

TABLES: MARC,T439G.

SELECTION-SCREEN BEGIN OF BLOCK MATERIAL WITH FRAME TITLE T1.

SELECT-OPTIONS: MATNR FOR MARC-MATNR.

PARAMETERS: WERKS LIKE MARC-WERKS, "OBLIGATORY.

STLAN LIKE MARC-STLAN," OBLIGATORY.

DATUV LIKE T439G-DATUV,

DATUB LIKE T439G-DATUB.

SELECTION-SCREEN END OF BLOCK MATERIAL.

INITIALIZATION.

T1 = 'MATERIAL DETAILS'.

DATA : TEMPMATCAT LIKE CSCMAT OCCURS 0 WITH HEADER LINE.

DATA: CHOISE TYPE I,

FLAG TYPE I,

VALUE_LOW LIKE DYNPREAD-FIELDVALUE,

VALUE_HIGH LIKE DYNPREAD-FIELDVALUE,

TFLD_NAME TYPE STRING,

SFLD_NAME TYPE STRING.

DATA: BEGIN OF ITAB OCCURS 0,

MATNR LIKE MARC-MATNR,

WERKS LIKE MARC-WERKS,

STLAN LIKE MARC-STLAN,

END OF ITAB.

DATA: DYNFIELDS LIKE DYNPREAD OCCURS 0 WITH HEADER LINE.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR WERKS.

FLAG = 1.

PERFORM FUNCTION_POV.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR STLAN.

FLAG = 2.

PERFORM FUNCTION_POV.

FORM FUNCTION_POV.

DYNFIELDS-FIELDNAME = 'MATNR-LOW' .

APPEND DYNFIELDS.

DYNFIELDS-FIELDNAME = 'MATNR-HIGH' .

APPEND DYNFIELDS.

CALL FUNCTION 'DYNP_VALUES_READ'

EXPORTING

DYNAME = SY-CPROG

DYNUMB = SY-DYNNR

  • TRANSLATE_TO_UPPER = ' '

  • REQUEST = ' '

  • PERFORM_CONVERSION_EXITS = ' '

  • PERFORM_INPUT_CONVERSION = ' '

  • DETERMINE_LOOP_INDEX = ' '

TABLES

DYNPFIELDS = DYNFIELDS

EXCEPTIONS

INVALID_ABAPWORKAREA = 1

INVALID_DYNPROFIELD = 2

INVALID_DYNPRONAME = 3

INVALID_DYNPRONUMMER = 4

INVALID_REQUEST = 5

NO_FIELDDESCRIPTION = 6

INVALID_PARAMETER = 7

UNDEFIND_ERROR = 8

DOUBLE_CONVERSION = 9

STEPL_NOT_FOUND = 10

OTHERS = 11

.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

READ TABLE DYNFIELDS WITH KEY FIELDNAME = 'MATNR-LOW'.

VALUE_LOW = DYNFIELDS-FIELDVALUE.

READ TABLE DYNFIELDS WITH KEY FIELDNAME = 'MATNR-HIGH'.

VALUE_HIGH = DYNFIELDS-FIELDVALUE.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

EXPORTING

INPUT = VALUE_LOW

IMPORTING

OUTPUT = VALUE_LOW.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

EXPORTING

INPUT = VALUE_HIGH

IMPORTING

OUTPUT = VALUE_HIGH.

DATA : RET_TAB TYPE TABLE OF DDSHRETVAL WITH HEADER LINE.

IF VALUE_HIGH <> SPACE.

SELECT MATNR WERKS STLAN FROM MARC INTO TABLE ITAB WHERE MATNR BETWEEN VALUE_LOW AND VALUE_HIGH.

ELSE.

SELECT MATNR WERKS STLAN FROM MARC INTO TABLE ITAB WHERE MATNR = VALUE_LOW." AND VALUE_HIGH.

ENDIF.

IF FLAG = 1.

TFLD_NAME = 'WERKS'.

SFLD_NAME = 'WERKD'.

  • PERFORM FUNCTION1.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

EXPORTING

RETFIELD = 'WERKS' "Original table name FIELD

DYNPROFIELD = 'WERKS' "Screen field name

DYNPPROG = SY-CPROG

DYNPNR = SY-DYNNR

VALUE_ORG = 'S'

TABLES

VALUE_TAB = ITAB

RETURN_TAB = RET_TAB

EXCEPTIONS

PARAMETER_ERROR = 1

NO_VALUES_FOUND = 2

OTHERS = 3.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDIF.

IF FLAG = 2.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

EXPORTING

RETFIELD = 'STLAN' "Original table name

DYNPROFIELD = 'STLAN' "Screen field name

DYNPPROG = SY-CPROG

DYNPNR = SY-DYNNR

VALUE_ORG = 'S'

TABLES

VALUE_TAB = ITAB

RETURN_TAB = RET_TAB

EXCEPTIONS

PARAMETER_ERROR = 1

NO_VALUES_FOUND = 2

OTHERS = 3.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDIF.

ENDFORM.

Hi,

Refere this code.

INPUT FIELDS:

*******************

1.MATNR(MATERIAL NUMBER), 2. WERKS(PLANT), 3.STLAN(BOM USAGE),4.DATUV(VALID FROM), 5. DATUB(VALID TO).

I want to use 'CS_WHERE_USED_MAT' this function module here to get the detail where the material is using now. I don't know how to use this function module, please any one help me.

TABLES: MARC,T439G.

SELECTION-SCREEN BEGIN OF BLOCK MATERIAL WITH FRAME TITLE T1.

SELECT-OPTIONS: MATNR FOR MARC-MATNR.

PARAMETERS: WERKS LIKE MARC-WERKS, "OBLIGATORY.

STLAN LIKE MARC-STLAN," OBLIGATORY.

DATUV LIKE T439G-DATUV,

DATUB LIKE T439G-DATUB.

SELECTION-SCREEN END OF BLOCK MATERIAL.

INITIALIZATION.

T1 = 'MATERIAL DETAILS'.

DATA : TEMPMATCAT LIKE CSCMAT OCCURS 0 WITH HEADER LINE.

DATA: CHOISE TYPE I,

FLAG TYPE I,

VALUE_LOW LIKE DYNPREAD-FIELDVALUE,

VALUE_HIGH LIKE DYNPREAD-FIELDVALUE,

TFLD_NAME TYPE STRING,

SFLD_NAME TYPE STRING.

DATA: BEGIN OF ITAB OCCURS 0,

MATNR LIKE MARC-MATNR,

WERKS LIKE MARC-WERKS,

STLAN LIKE MARC-STLAN,

END OF ITAB.

DATA: DYNFIELDS LIKE DYNPREAD OCCURS 0 WITH HEADER LINE.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR WERKS.

FLAG = 1.

PERFORM FUNCTION_POV.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR STLAN.

FLAG = 2.

PERFORM FUNCTION_POV.

FORM FUNCTION_POV.

DYNFIELDS-FIELDNAME = 'MATNR-LOW' .

APPEND DYNFIELDS.

DYNFIELDS-FIELDNAME = 'MATNR-HIGH' .

APPEND DYNFIELDS.

CALL FUNCTION 'DYNP_VALUES_READ'

EXPORTING

DYNAME = SY-CPROG

DYNUMB = SY-DYNNR

  • TRANSLATE_TO_UPPER = ' '

  • REQUEST = ' '

  • PERFORM_CONVERSION_EXITS = ' '

  • PERFORM_INPUT_CONVERSION = ' '

  • DETERMINE_LOOP_INDEX = ' '

TABLES

DYNPFIELDS = DYNFIELDS

EXCEPTIONS

INVALID_ABAPWORKAREA = 1

INVALID_DYNPROFIELD = 2

INVALID_DYNPRONAME = 3

INVALID_DYNPRONUMMER = 4

INVALID_REQUEST = 5

NO_FIELDDESCRIPTION = 6

INVALID_PARAMETER = 7

UNDEFIND_ERROR = 8

DOUBLE_CONVERSION = 9

STEPL_NOT_FOUND = 10

OTHERS = 11

.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

READ TABLE DYNFIELDS WITH KEY FIELDNAME = 'MATNR-LOW'.

VALUE_LOW = DYNFIELDS-FIELDVALUE.

READ TABLE DYNFIELDS WITH KEY FIELDNAME = 'MATNR-HIGH'.

VALUE_HIGH = DYNFIELDS-FIELDVALUE.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

EXPORTING

INPUT = VALUE_LOW

IMPORTING

OUTPUT = VALUE_LOW.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

EXPORTING

INPUT = VALUE_HIGH

IMPORTING

OUTPUT = VALUE_HIGH.

DATA : RET_TAB TYPE TABLE OF DDSHRETVAL WITH HEADER LINE.

IF VALUE_HIGH <> SPACE.

SELECT MATNR WERKS STLAN FROM MARC INTO TABLE ITAB WHERE MATNR BETWEEN VALUE_LOW AND VALUE_HIGH.

ELSE.

SELECT MATNR WERKS STLAN FROM MARC INTO TABLE ITAB WHERE MATNR = VALUE_LOW." AND VALUE_HIGH.

ENDIF.

IF FLAG = 1.

TFLD_NAME = 'WERKS'.

SFLD_NAME = 'WERKD'.

  • PERFORM FUNCTION1.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

EXPORTING

RETFIELD = 'WERKS' "Original table name FIELD

DYNPROFIELD = 'WERKS' "Screen field name

DYNPPROG = SY-CPROG

DYNPNR = SY-DYNNR

VALUE_ORG = 'S'

TABLES

VALUE_TAB = ITAB

RETURN_TAB = RET_TAB

EXCEPTIONS

PARAMETER_ERROR = 1

NO_VALUES_FOUND = 2

OTHERS = 3.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDIF.

IF FLAG = 2.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

EXPORTING

RETFIELD = 'STLAN' "Original table name

DYNPROFIELD = 'STLAN' "Screen field name

DYNPPROG = SY-CPROG

DYNPNR = SY-DYNNR

VALUE_ORG = 'S'

TABLES

VALUE_TAB = ITAB

RETURN_TAB = RET_TAB

EXCEPTIONS

PARAMETER_ERROR = 1

NO_VALUES_FOUND = 2

OTHERS = 3.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDIF.

ENDFORM.

4 REPLIES 4
Read only

Former Member
0 Likes
752

Hi,

Try this. This is what I am using to get multi-level BOM explosion. export parameter says that this is a multi level BOM when set. Please comment stpst in the export parameter.

CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'

EXPORTING

capid = 'PP01'

datuv = sy-datum

mtnrv = wa_mast-matnr

mehrs = 'X'

stlan = wa_mast-stlan

stlal = wa_mast-stlal

werks = wa_mast-werks

ehndl = '1'

mmory = '1'

  • stpst = 1

TABLES

stb = it_stb

EXCEPTIONS

alt_not_found = 1

call_invalid = 2

material_not_found = 3

missing_authorization = 4

no_bom_found = 5

no_plant_data = 6

no_suitable_bom_found = 7

conversion_error = 8

OTHERS = 9.

if you want to use the same function module for a purticular level of BOM say just for the first level then remove MEHRS and add STPST = 1.

<b>Reward if helpful.</b>

Read only

Former Member
0 Likes
752

Hello Udaya,

Check the below code.

i am using the same code for finding the material where it is used.

and change your code , according to your requirement.

TABLES : marc.

TYPE-POOLS : slis.

DATA: BEGIN OF g_t_final OCCURS 0,

werks LIKE marc-werks,

matnr LIKE marc-matnr,

comp LIKE marc-matnr,

level LIKE stpov-level,

END OF g_t_final.

DATA : g_t_fieldcat TYPE slis_t_fieldcat_alv.

DATA : g_t_marc LIKE marc OCCURS 0 WITH HEADER LINE.

SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-000.

PARAMETERS : p_werks LIKE marc-werks.

SELECT-OPTIONS : s_matnr FOR marc-matnr.

SELECTION-SCREEN END OF BLOCK blk1.

PERFORM : get_ss_components,

search_components,

display.

&----


*& Form get_ss_components

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM get_ss_components.

SELECT * FROM marc INTO TABLE g_t_marc WHERE matnr IN s_matnr

AND werks = p_werks.

ENDFORM. " get_ss_components

&----


*& Form search_components

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM search_components.

DATA : l_t_marc LIKE marc OCCURS 0 WITH HEADER LINE,

l_t_final LIKE g_t_final OCCURS 0 WITH HEADER LINE.

DATA : l_t_wultb LIKE stpov OCCURS 0 WITH HEADER LINE,

l_t_equicat LIKE cscequi OCCURS 0 WITH HEADER LINE,

l_t_kndcat LIKE cscknd OCCURS 0 WITH HEADER LINE,

l_t_matcat LIKE cscmat OCCURS 0 WITH HEADER LINE,

l_t_stdcat LIKE cscstd OCCURS 0 WITH HEADER LINE,

l_t_tplcat LIKE csctpl OCCURS 0 WITH HEADER LINE.

DATA : l_f_matnr LIKE mara-matnr,

l_f_num TYPE i VALUE '0'.

l_t_marc[] = g_t_marc[].

CLEAR g_t_marc.

REFRESH g_t_marc[].

DO.

l_f_num = l_f_num + 1.

LOOP AT l_t_marc.

IF l_f_num = 1.

l_f_matnr = l_t_marc-matnr.

ENDIF.

CALL FUNCTION 'CS_WHERE_USED_MAT'

EXPORTING

datub = sy-datum

datuv = sy-datum

matnr = l_t_marc-matnr

stlan = '1'

werks = l_t_marc-werks

TABLES

wultb = l_t_wultb

equicat = l_t_equicat

kndcat = l_t_kndcat

matcat = l_t_matcat

stdcat = l_t_stdcat

tplcat = l_t_tplcat

EXCEPTIONS

call_invalid = 1

material_not_found = 2

no_where_used_rec_found = 3

no_where_used_rec_selected = 4

no_where_used_rec_valid = 5

OTHERS = 6.

IF sy-subrc = 0.

LOOP AT l_t_wultb.

g_t_final-werks = l_t_marc-werks.

g_t_final-matnr = l_f_matnr.

g_t_final-comp = l_t_wultb-matnr.

g_t_final-level = l_f_num.

APPEND g_t_final.

CLEAR g_t_final.

l_t_final-werks = l_t_marc-werks.

l_t_final-comp = l_t_wultb-matnr.

APPEND l_t_final.

CLEAR l_t_final.

ENDLOOP.

ENDIF.

REFRESH : l_t_wultb, l_t_equicat, l_t_kndcat,

l_t_matcat, l_t_stdcat, l_t_tplcat.

CLEAR : l_t_wultb, l_t_equicat, l_t_kndcat,

l_t_matcat, l_t_stdcat, l_t_tplcat.

LOOP AT l_t_final.

g_t_marc-matnr = l_t_final-comp.

g_t_marc-werks = l_t_final-werks.

APPEND g_t_marc.

CLEAR g_t_marc.

ENDLOOP.

CLEAR : l_t_final.

REFRESH : l_t_final[].

ENDLOOP.

CLEAR : l_t_marc[].

REFRESH : l_t_marc[].

l_t_marc[] = g_t_marc[].

CLEAR : g_t_marc.

REFRESH : g_t_marc[].

IF l_t_marc[] IS INITIAL.

EXIT.

ENDIF.

ENDDO.

ENDFORM. " search_components

&----


*& Form display

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM display.

DATA : l_t_fieldcat TYPE slis_t_fieldcat_alv,

l_r_fieldcat LIKE LINE OF l_t_fieldcat,

l_f_repid LIKE sy-repid,

l_r_layout TYPE slis_layout_alv.

IF g_t_final[] IS INITIAL.

MESSAGE i000(vz) WITH 'No data found'.

EXIT.

ELSE.

l_f_repid = sy-repid.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

i_program_name = l_f_repid

i_internal_tabname = 'G_T_FINAL'

i_client_never_display = 'X'

i_inclname = l_f_repid

CHANGING

ct_fieldcat = g_t_fieldcat[].

LOOP AT g_t_fieldcat INTO l_r_fieldcat.

IF l_r_fieldcat-key = 'X'.

l_r_fieldcat-key = ''.

MODIFY g_t_fieldcat FROM l_r_fieldcat.

ENDIF.

CASE l_r_fieldcat-fieldname.

WHEN 'MATNR'.

l_r_fieldcat-seltext_l = 'Component'.

l_r_fieldcat-seltext_m = 'Component'.

l_r_fieldcat-seltext_s = 'Component'.

MODIFY g_t_fieldcat FROM l_r_fieldcat.

ENDCASE.

ENDLOOP.

*Layout

l_r_layout-zebra = 'X'.

l_r_layout-colwidth_optimize = 'X'.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_program = l_f_repid

is_layout = l_r_layout

it_fieldcat = g_t_fieldcat

i_save = 'X'

TABLES

t_outtab = g_t_final

EXCEPTIONS

program_error = 1

OTHERS = 2.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

ENDIF.

ENDFORM. " display

Please correct me , if you found anything wrong.

Reward if Useful.

Regards,

Phani.

Read only

Former Member
0 Likes
752

Hi Pani,

Can you say what input you gave to MATNR AND WERKS, tell me it's immediate.

Read only

0 Likes
752

Hi Udaya kumar,

material number and plant.

Regards,

Phani.