2007 Sep 17 8:41 AM
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.
2007 Sep 17 8:43 AM
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>
2007 Sep 17 9:44 AM
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.
2007 Sep 17 9:57 AM
Hi Pani,
Can you say what input you gave to MATNR AND WERKS, tell me it's immediate.
2007 Sep 17 11:14 AM
| User | Count |
|---|---|
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |