Hello everyone,
I have written a program that adds assortment module (LOCNR) to an existing assortment (FILIA). It works fine. However, now I need to change the date value_to (DATBI) to todays date, in order to make this assortment module (LOCNR) invalid, means out-of-date. Can I do this with the help of this BAPI? If yes, then how, because I have tried to do this on my own, but the date is not changed. Here is the piece of my code, where I try to change the date value:
wa_assortmentusers-valid_from = ls_info-datab.SELECT SINGLE datbi INTO wa_assortmentusers-valid_to FROM wrsz
WHERE asort EQ wa_assortmentusers-assortment
AND locnr EQ wa_assortmentusers-customer_site.
IF sy-subrc EQ 0.
wa_assortmentusers-valid_to = ls_info-datbi.
ELSE.
wa_assortmentusers-valid_to = ls_info-datbi.
ENDIF.
wa_assortmentusersx-valid_from = 'X'.
wa_assortmentusersx-valid_to = 'X'.
Any ideas?
Request clarification before answering.
LOOP AT mt_info INTO ls_info.
TRANSLATE ls_info-asort TO UPPER CASE.
SELECT SINGLE name1 INTO ls_info-name1 FROM wrst WHERE asort EQ ls_info-asort.
wa_assortment-assortment = ls_info-asort.
SELECT SINGLE sotyp INTO wa_assortment-astmt_cat FROM wrs1 WHERE asort EQ wa_assortment-assortment.
wa_assortmentx-astmt_cat = 'X'.
wa_assortmentx-assortment = 'X'.
wa_assortmentusers-assortment = ls_info-asort.
wa_assortmentusers-customer_site = ls_info-locnr.
SELECT SINGLE lfdnr INTO wa_assortmentusers-seqnumber FROM wrsz
WHERE asort EQ wa_assortmentusers-assortment
AND locnr EQ wa_assortmentusers-customer_site
AND datbi GT sy-datum.
IF sy-subrc NE 0.
SELECT MAX( lfdnr ) INTO wa_assortmentusers-seqnumber FROM wrsz
WHERE asort EQ wa_assortmentusers-assortment.
IF sy-subrc EQ 0.
wa_assortmentusers-seqnumber = wa_assortmentusers-seqnumber + loop_num.
ELSEIF sy-subrc NE 0.
wa_assortmentusers-seqnumber = loop_num.
ENDIF.
ENDIF.
wa_assortmentusers-salesorg = '1100'.
wa_assortmentusers-distr_chan = '10'.
wa_assortmentusers-division = '01'.
wa_assortmentusers-astmtuserc = 'A'.
CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
EXPORTING
date_external = ls_info-datab
IMPORTING
date_internal = ls_info-datab.
wa_assortmentusers-valid_from = ls_info-datab.
CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
EXPORTING
date_external = ls_info-datbi
IMPORTING
date_internal = ls_info-datbi
SELECT locnr INTO wa_wrsz-locnr FROM wrsz WHERE asort EQ wa_assortment-assortment
AND datbi GT sy-datum.
APPEND wa_wrsz TO it_wrsz.
SORT it_wrsz.
CLEAR wa_wrsz.
ENDSELECT.
LOOP AT it_wrsz INTO wa_wrsz.
date_cy = date_cy + 1.
IF wa_wrsz-locnr EQ wa_assortmentusers-customer_site.
EXIT.
ENDIF.
ENDLOOP.
CONDENSE date_cy NO-GAPS.
CONCATENATE 'MARK_040(' date_cy ')' INTO ld_mark.
CONCATENATE 'V_WRSZ-LOCNR(' date_cy ')' INTO ld_cursor.
CLEAR date_cy.
CLEAR it_wrsz.
CLEAR wa_wrsz.
SELECT SINGLE datbi INTO wa_assortmentusers-valid_to FROM wrsz
WHERE asort EQ wa_assortmentusers-assortment
AND locnr EQ wa_assortmentusers-customer_site
AND datbi GE sy-datum.
IF sy-subrc EQ 0.
IF ls_info-datbi LT wa_assortmentusers-valid_to.
wa_assortmentusers-valid_to = ls_info-datbi.
wa_description-function = '003'.
wa_description-assortment = ls_info-asort.
wa_descriptionx-function = 'X'.
wa_descriptionx-assortment = 'X'.
cycle = 1.
PERFORM fill_bdcdata USING ls_info.
run_mode = 'E'.
CALL TRANSACTION 'WSOA2'
USING bdcdata MODE run_mode UPDATE 'S' MESSAGES INTO lt_msg.
ENDIF.
ELSE.
wa_assortmentusers-valid_to = ls_info-datbi.
ENDIF.
wa_assortmentusersx-assortment = 'X'.
wa_assortmentusersx-seqnumber = 'X'.
wa_assortmentusersx-customer_site = 'X'.
wa_assortmentusersx-salesorg = 'X'.
wa_assortmentusersx-distr_chan = 'X'.
wa_assortmentusersx-division = 'X'.
wa_assortmentusersx-astmtuserc = 'X'.
wa_assortmentusersx-valid_from = 'X'.
wa_assortmentusersx-valid_to = 'X'.
APPEND wa_assortmentusers TO it_assortmentusers.
APPEND wa_assortmentusersx TO it_assortmentusersx.
APPEND wa_description TO it_description.
APPEND wa_descriptionx TO it_descriptionx.
loop_num = loop_num + 1.
CLEAR wa_assortmentusers.
CLEAR wa_assortmentusersx.
ENDLOOP.
CALL FUNCTION 'BAPI_ASSORTMENT_MAINTAINDATA'
EXPORTING
assortment = wa_assortment
assortmentx = wa_assortmentx
IMPORTING
return = ld_return
TABLES
description = it_description
descriptionx = it_descriptionx
assortmentusers = it_assortmentusers
assortmentusersx = it_assortmentusersx.
IF cycle EQ 1.
LOOP AT it_assortmentusers INTO wa_assortmentusers.
WRITE: ld_return-message,
wa_assortmentusers-customer_site, 'Удален из куба', wa_assortmentusers-assortment,
/.
ENDLOOP.
ELSE.
IF sy-subrc EQ 0.
COMMIT WORK AND WAIT.
LOOP AT it_assortmentusers INTO wa_assortmentusers.
WRITE: ld_return-message,
wa_assortmentusers-customer_site, 'Добавлен в куб', wa_assortmentusers-assortment,
/.
ENDLOOP.
ENDIF.
ENDIF.FORM fill_bdcdata USING is_info TYPE zmm_kub.
REFRESH bdcdata.
* 1st screen.
PERFORM bdc_dynpro USING 'WRFM_WSO6' '0001'.
PERFORM bdc_field USING 'BDC_CURSOR' 'V_WRS1-ASORT'.
PERFORM bdc_field USING 'BDC_OKCODE' '=ENTR'.
PERFORM bdc_field USING 'V_WRS1-ASORT' is_info-asort.
* 2nd screen.
PERFORM bdc_dynpro USING 'WRFM_WSO6' '0010'.
PERFORM bdc_field USING 'BDC_CURSOR' 'V_WRS1-NAME1'.
PERFORM bdc_field USING 'BDC_OKCODE' '=ASORT_TAB_FC4'.
PERFORM bdc_field USING 'V_WRS1-NAME1' is_info-name1.
PERFORM bdc_field USING 'V_WRS1-STATU' '1'.
PERFORM bdc_field USING 'V_WRS1-VKORG' '1100'.
PERFORM bdc_field USING 'V_WRS1-VTWEG' '10'.
PERFORM bdc_field USING 'V_WRS1-KZLIK' 'X'.
PERFORM bdc_field USING 'V_WRS1-LAYPR' 'X'.
* 3rd screen.
PERFORM bdc_dynpro USING 'WRFM_WSO6' '0010'.
PERFORM bdc_field USING 'BDC_OKCODE' '/EDEL'.
PERFORM bdc_field USING 'V_WRS1-NAME1' is_info-name1.
PERFORM bdc_field USING 'BDC_CURSOR' ld_cursor.
PERFORM bdc_field USING ld_mark 'X'.
CLEAR ld_mark.
* 4th screen.
PERFORM bdc_dynpro USING 'WRFM_WSO6' '0010'.
PERFORM bdc_field USING 'BDC_OKCODE' '=XSI'.
PERFORM bdc_field USING 'V_WRS1-NAME1' is_info-name1.
PERFORM bdc_field USING 'BDC_CURSOR' ld_cursor.
CLEAR ld_cursor.
ENDFORM.
FORM bdc_dynpro USING program dynpro.
CLEAR bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
ENDFORM.
FORM bdc_field USING fnam fval.
CLEAR bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
CONDENSE bdcdata-fval.
* REPLACE FIRST OCCURRENCE OF '.' in bdcdata-fval WITH ','.
APPEND bdcdata.
ENDFORM.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
| User | Count |
|---|---|
| 5 | |
| 4 | |
| 4 | |
| 3 | |
| 2 | |
| 2 | |
| 2 | |
| 2 | |
| 2 | |
| 2 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.