on 2006 Apr 13 7:24 PM
Hi guys!
Anyone, have a sample code of using the FM BAPI_PRICES_CONDITIONS??
regards
Martín.
Request clarification before answering.
I wrote a code that can handle overlaps. This can be helpful.
FORM f_uploadprices .
CONSTANTS: lcon_tcode TYPE tcode VALUE 'ZPRICEUPLOAD',
lcon_name_sarea_curr TYPE rvari_vnam VALUE 'SALESAREA_CURR',
lcon_name_uom TYPE rvari_vnam VALUE 'UOM',
lcon_value1_default TYPE tvarv_val VALUE 'DEFAULT',
lcon_value1_other TYPE tvarv_val VALUE 'OTHER',
lcon_operation_009 TYPE msgfn VALUE '009',
lcon_operation_004 TYPE msgfn VALUE '004',
lcon_operation_003 TYPE msgfn VALUE '003',
lcon_table_no_900 TYPE kotabnr VALUE '900',
lcon_table_no_923 TYPE kotabnr VALUE '923',
lcon_applicatio_v TYPE kappl VALUE 'V',
lcon_cond_type_j3ap TYPE kschl VALUE 'J3AP',
lcon_scale_type_c TYPE stfkz VALUE 'C',
lcon_calc_type_c TYPE krech VALUE 'C',
lcon_valid_to TYPE kodatbi VALUE '99991231',
lcon_cond_usage_a TYPE kvewe VALUE 'A',
lcon_knumh_i TYPE knumh VALUE '$000000001',
lcon_knumh_test TYPE knumh VALUE 'TESTMODE',
lcon_cond_count_i TYPE kopos VALUE '01'.
TYPES: BEGIN OF t_zparams_sarea_curr,
vkorg TYPE vkorg,
vtweg TYPE vtweg,
spart TYPE spart,
waerk TYPE waerk,
END OF t_zparams_sarea_curr,
BEGIN OF t_zparams_uom,
kmein TYPE kvmei,
kpein(5) TYPE c, "kpein,
END OF t_zparams_uom,
BEGIN OF t_varkey_a900_header,
vkorg TYPE vkorg,
vtweg TYPE vtweg,
spart TYPE spart,
pltyp TYPE pltyp,
waerk TYPE waerk,
matnr TYPE matnr,
END OF t_varkey_a900_header,
* BEGIN OF t_varkey_a900_item,
* VKORG type VKORG,
* VTWEG type VTWEG,
* SPART type SPART,
* PLTYP type PLTYP,
* WAERK type WAERK,
* MATNR type MATNR,
* END OF t_varkey_a900_item,
BEGIN OF t_varkey_a923_header,
vkorg TYPE vkorg,
vtweg TYPE vtweg,
spart TYPE spart,
kunnr TYPE kunnr_v,
pltyp TYPE pltyp,
waerk TYPE waerk,
matnr TYPE matnr,
END OF t_varkey_a923_header,
* BEGIN OF t_varkey_a923_item,
* VKORG type VKORG,
* VTWEG type VTWEG,
* SPART type SPART,
* KUNNR type KUNNR_V,
* PLTYP type PLTYP,
* WAERK type WAERK,
* MATNR type MATNR,
* END OF t_varkey_a923_item,
BEGIN OF t_tvko,
vkorg TYPE vkorg,
END OF t_tvko,
BEGIN OF t_tvtw,
vtweg TYPE vtweg,
END OF t_tvtw,
BEGIN OF t_tspa,
spart TYPE spart,
END OF t_tspa,
BEGIN OF t_tvta,
vkorg TYPE vkorg,
vtweg TYPE vtweg,
spart TYPE spart,
END OF t_tvta,
BEGIN OF t_mara,
matnr TYPE matnr,
END OF t_mara,
BEGIN OF t_mvke,
matnr TYPE matnr,
vkorg TYPE vkorg,
vtweg TYPE vtweg,
END OF t_mvke,
BEGIN OF t_t006,
msehi TYPE msehi,
END OF t_t006,
BEGIN OF t_tcurc,
waers TYPE waers_curc,
END OF t_tcurc,
BEGIN OF t_kna1,
kunnr TYPE kunnr,
END OF t_kna1,
BEGIN OF t_knvv,
kunnr TYPE kunnr,
vkorg TYPE vkorg,
vtweg TYPE vtweg,
spart TYPE spart,
END OF t_knvv,
BEGIN OF t_a9xx,
knumh TYPE knumh,
datab TYPE datab,
datbi TYPE datbi,
kbetr TYPE kbetr_kond,
loevm_ko TYPE loevm_ko,
END OF t_a9xx.
DATA: lt_bapicondct TYPE STANDARD TABLE OF bapicondct,
lt_bapicondhd TYPE STANDARD TABLE OF bapicondhd,
lt_bapicondit TYPE STANDARD TABLE OF bapicondit,
lt_bapicondqs TYPE STANDARD TABLE OF bapicondqs,
lt_bapicondvs TYPE STANDARD TABLE OF bapicondvs,
lt_a9xx TYPE STANDARD TABLE OF t_a9xx,
lv_tabix like sy-tabix,
lv_knumh TYPE knumh,
lv_same_recfound TYPE c,
lt_a9xx_deleted TYPE STANDARD TABLE OF t_a9xx,
* ls_a9xx TYPE t_a9xx,
lte_bapiret2 TYPE STANDARD TABLE OF bapiret2,
lte_bapiknumhs TYPE STANDARD TABLE OF bapiknumhs,
lte_mem_initial TYPE STANDARD TABLE OF cnd_mem_initial,
ls_bapicondct TYPE bapicondct,
ls_bapicondhd TYPE bapicondhd,
ls_bapicondit TYPE bapicondit,
ls_bapicondqs TYPE bapicondqs,
ls_bapicondvs TYPE bapicondvs,
lse_bapiret2 TYPE bapiret2,
lse_bapiknumhs TYPE bapiknumhs,
lse_mem_initial TYPE cnd_mem_initial,
lt_zsd_pricelist TYPE STANDARD TABLE OF zsd_pricelist,
* lt_zparams_uom TYPE STANDARD TABLE OF zparams,
* ls_zparams_value1_uom TYPE tvarv_val,
* ls_zparams_uom TYPE t_zparams_uom,
ls_varkey_a900_header TYPE t_varkey_a900_header,
* ls_varkey_a900_item type t_varkey_a900_item,
ls_varkey_a923_header TYPE t_varkey_a923_header,
* ls_varkey_a923_item type t_varkey_a900_item,
ls_varkey_header(100) TYPE c,
ls_varkey_item(100) TYPE c,
lt_tvko TYPE STANDARD TABLE OF t_tvko,
lt_tvtw TYPE STANDARD TABLE OF t_tvtw,
lt_tspa TYPE STANDARD TABLE OF t_tspa,
lt_tvta TYPE STANDARD TABLE OF t_tvta,
lt_mara TYPE STANDARD TABLE OF t_mara,
lt_mvke TYPE STANDARD TABLE OF t_mvke,
lt_t006 TYPE STANDARD TABLE OF t_t006,
lt_tcurc TYPE STANDARD TABLE OF t_tcurc,
lt_kna1 TYPE STANDARD TABLE OF t_kna1,
lt_knvv TYPE STANDARD TABLE OF t_knvv,
lt_upload_j3ap_kunnr TYPE STANDARD TABLE OF t_upload_j3ap.
FIELD-SYMBOLS: <fs_lt_bapicondct> LIKE LINE OF lt_bapicondct,
<fs_lt_bapicondhd> LIKE LINE OF lt_bapicondhd ,
<fs_lt_bapicondit> LIKE LINE OF lt_bapicondit ,
<fs_lt_bapicondqs> LIKE LINE OF lt_bapicondqs ,
<fs_lt_bapicondvs> LIKE LINE OF lt_bapicondvs ,
<fs_lte_bapiret2> LIKE LINE OF lte_bapiret2 ,
<fs_lte_bapiknumhs> LIKE LINE OF lte_bapiknumhs ,
<fs_lte_mem_initial> LIKE LINE OF lte_mem_initial,
<fs_lt_zsd_pricelist> LIKE LINE OF lt_zsd_pricelist,
* <fs_lt_zparams_sarea_curr> LIKE LINE OF lt_zparams_sarea_curr,
* <fs_lt_zparams_uom> LIKE LINE OF lt_zparams_uom,
<fs_lt_tvko> LIKE LINE OF lt_tvko ,
<fs_lt_a9xx> LIKE LINE OF lt_a9xx,
<fs_lt_a9xx_deleted> LIKE LINE OF lt_a9xx_deleted,
<fs_lt_tvtw> LIKE LINE OF lt_tvtw,
<fs_lt_tspa> LIKE LINE OF lt_tspa,
<fs_lt_tvta> LIKE LINE OF lt_tvta,
<fs_lt_mara> LIKE LINE OF lt_mara,
<fs_lt_mvke> LIKE LINE OF lt_mvke,
<fs_lt_t006> LIKE LINE OF lt_t006,
<fs_lt_tcurc> LIKE LINE OF lt_tcurc,
<fs_lt_kna1> LIKE LINE OF lt_kna1,
<fs_lt_knvv> LIKE LINE OF lt_knvv.
REFRESH: gt_output_j3ap[].
SELECT * FROM zsd_pricelist
INTO TABLE lt_zsd_pricelist.
* SELECT * FROM zparams
* INTO TABLE lt_zparams_uom
* WHERE tcode = lcon_tcode AND
* name = lcon_name_uom.
* IF p_uomd = abap_true.
* ls_zparams_value1_uom = lcon_value1_default.
* ELSEIF p_uomo = abap_true.
* ls_zparams_value1_uom = lcon_value1_other.
* ENDIF.
* CLEAR: ls_zparams_uom.
* LOOP AT lt_zparams_uom ASSIGNING <fs_lt_zparams_uom>
* WHERE value1 = ls_zparams_value1_uom.
*
* MOVE <fs_lt_zparams_uom>-value2 TO ls_zparams_uom.
* ENDLOOP.
SELECT msehi FROM t006
INTO TABLE lt_t006
WHERE msehi = p_kmein. "ls_zparams_uom+0(3).
IF lt_zsd_pricelist[] IS NOT INITIAL.
SELECT vkorg FROM tvko
INTO TABLE lt_tvko
FOR ALL ENTRIES IN lt_zsd_pricelist
WHERE vkorg = lt_zsd_pricelist-vkorg.
SORT lt_tvko BY vkorg.
DELETE ADJACENT DUPLICATES FROM lt_tvko COMPARING vkorg.
SELECT vtweg FROM tvtw
INTO TABLE lt_tvtw
FOR ALL ENTRIES IN lt_zsd_pricelist
WHERE vtweg = lt_zsd_pricelist-vtweg.
SORT lt_tvtw BY vtweg.
DELETE ADJACENT DUPLICATES FROM lt_tvtw COMPARING vtweg.
SELECT spart FROM tspa
INTO TABLE lt_tspa
FOR ALL ENTRIES IN lt_zsd_pricelist
WHERE spart = lt_zsd_pricelist-spart.
SORT lt_tspa BY spart.
DELETE ADJACENT DUPLICATES FROM lt_tspa COMPARING spart.
SELECT vkorg
vtweg
spart FROM tvta INTO TABLE lt_tvta
FOR ALL ENTRIES IN lt_zsd_pricelist
WHERE vkorg = lt_zsd_pricelist-vkorg AND
vtweg = lt_zsd_pricelist-vtweg AND
spart = lt_zsd_pricelist-spart.
SORT lt_tvta BY vkorg vtweg spart.
DELETE ADJACENT DUPLICATES FROM lt_tvta
COMPARING vkorg vtweg spart.
SELECT waers FROM tcurc
INTO TABLE lt_tcurc
FOR ALL ENTRIES IN lt_zsd_pricelist
WHERE waers = lt_zsd_pricelist-waerk.
SORT lt_tcurc BY waers.
DELETE ADJACENT DUPLICATES FROM lt_tcurc
COMPARING waers.
ENDIF.
IF gt_upload_j3ap[] IS NOT INITIAL.
SELECT matnr FROM mara
APPENDING TABLE lt_mara
PACKAGE SIZE 3000
FOR ALL ENTRIES IN gt_upload_j3ap
WHERE matnr = gt_upload_j3ap-matnr.
ENDSELECT.
SORT lt_mara BY matnr.
DELETE ADJACENT DUPLICATES FROM lt_mara
COMPARING matnr.
lt_upload_j3ap_kunnr[] = gt_upload_j3ap[].
DELETE lt_upload_j3ap_kunnr WHERE kunnr IS INITIAL.
IF lt_upload_j3ap_kunnr[] IS NOT INITIAL.
SELECT kunnr FROM kna1
APPENDING TABLE lt_kna1
PACKAGE SIZE 3000
FOR ALL ENTRIES IN lt_upload_j3ap_kunnr
WHERE kunnr = lt_upload_j3ap_kunnr-kunnr.
ENDSELECT.
SORT lt_kna1 BY kunnr.
DELETE ADJACENT DUPLICATES FROM lt_kna1
COMPARING kunnr.
ENDIF.
LOOP AT lt_tvta ASSIGNING <fs_lt_tvta>.
AT NEW vtweg.
IF gt_upload_j3ap[] IS NOT INITIAL.
SELECT matnr
vkorg
vtweg FROM mvke
APPENDING TABLE lt_mvke
PACKAGE SIZE 3000
FOR ALL ENTRIES IN gt_upload_j3ap
WHERE matnr = gt_upload_j3ap-matnr AND
vkorg = <fs_lt_tvta>-vkorg AND
vtweg = <fs_lt_tvta>-vtweg.
ENDSELECT.
ENDIF.
ENDAT.
IF lt_upload_j3ap_kunnr[] IS NOT INITIAL.
SELECT kunnr
vkorg
vtweg
spart FROM knvv
APPENDING TABLE lt_knvv
PACKAGE SIZE 3000
FOR ALL ENTRIES IN lt_upload_j3ap_kunnr
WHERE kunnr = lt_upload_j3ap_kunnr-kunnr AND
vkorg = <fs_lt_tvta>-vkorg AND
vtweg = <fs_lt_tvta>-vtweg AND
spart = <fs_lt_tvta>-spart.
ENDSELECT.
ENDIF.
ENDLOOP.
ENDIF.
LOOP AT gt_upload_j3ap ASSIGNING <fs_gt_upload_j3ap>.
gs_output_j3ap-kunnr = <fs_gt_upload_j3ap>-kunnr.
gs_output_j3ap-matnr = <fs_gt_upload_j3ap>-matnr.
gs_output_j3ap-pltyp = <fs_gt_upload_j3ap>-pltyp.
gs_output_j3ap-kwert = <fs_gt_upload_j3ap>-kwert.
gs_output_j3ap-datab = <fs_gt_upload_j3ap>-datab.
gs_output_j3ap-kpein = p_kpein.
gs_output_j3ap-kmein = p_kmein.
* ls_zparams_value2_sarea_curr = <fs_gt_upload_j3ap>-pltyp.
CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY'
EXPORTING
date = <fs_gt_upload_j3ap>-datab
EXCEPTIONS
plausibility_check_failed = 1
OTHERS = 2.
IF sy-subrc IS NOT INITIAL.
gs_output_j3ap-icon = icon_cancel.
gs_output_j3ap-icontext = 'Invalid date'.
APPEND gs_output_j3ap TO gt_output_j3ap.
CHECK 1 = 2.
ELSE.
ENDIF.
LOOP AT lt_zsd_pricelist ASSIGNING <fs_lt_zsd_pricelist>
WHERE pltyp = <fs_gt_upload_j3ap>-pltyp.
CLEAR: gs_output_j3ap.
REFRESH: lt_bapicondct[],
lt_bapicondhd[],
lt_bapicondit[],
lt_bapicondqs[],
lt_bapicondvs[],
lte_bapiret2[],
lte_bapiknumhs[],
lte_mem_initial[].
CLEAR: ls_bapicondct,
ls_bapicondhd,
ls_bapicondit,
ls_bapicondqs,
ls_bapicondvs,
lse_bapiret2,
lse_bapiknumhs,
lse_mem_initial,
ls_varkey_header,
ls_varkey_item,
ls_varkey_a900_header,
* ls_varkey_a900_item,
ls_varkey_a923_header.
* ls_varkey_a923_item.
gs_output_j3ap-vkorg = <fs_lt_zsd_pricelist>-vkorg.
gs_output_j3ap-vtweg = <fs_lt_zsd_pricelist>-vtweg.
gs_output_j3ap-spart = <fs_lt_zsd_pricelist>-spart.
gs_output_j3ap-kunnr = <fs_gt_upload_j3ap>-kunnr.
gs_output_j3ap-matnr = <fs_gt_upload_j3ap>-matnr.
gs_output_j3ap-pltyp = <fs_gt_upload_j3ap>-pltyp.
gs_output_j3ap-kwert = <fs_gt_upload_j3ap>-kwert.
gs_output_j3ap-waerk = <fs_lt_zsd_pricelist>-waerk.
gs_output_j3ap-datab = <fs_gt_upload_j3ap>-datab.
gs_output_j3ap-kpein = p_kpein.
gs_output_j3ap-kmein = p_kmein.
READ TABLE lt_tvko ASSIGNING <fs_lt_tvko>
WITH KEY vkorg = gs_output_j3ap-vkorg.
IF sy-subrc IS NOT INITIAL.
gs_output_j3ap-icon = icon_cancel.
gs_output_j3ap-icontext = 'Incorrect Sales organization'.
APPEND gs_output_j3ap TO gt_output_j3ap.
CHECK 1 = 2.
ENDIF.
READ TABLE lt_tvtw ASSIGNING <fs_lt_tvtw>
WITH KEY vtweg = gs_output_j3ap-vtweg.
IF sy-subrc IS NOT INITIAL.
gs_output_j3ap-icon = icon_cancel.
gs_output_j3ap-icontext = 'Incorrect Distribution channel'.
APPEND gs_output_j3ap TO gt_output_j3ap.
CHECK 1 = 2.
ENDIF.
READ TABLE lt_tspa ASSIGNING <fs_lt_tspa>
WITH KEY spart = gs_output_j3ap-spart.
IF sy-subrc IS NOT INITIAL.
gs_output_j3ap-icon = icon_cancel.
gs_output_j3ap-icontext = 'Incorrect Division'.
APPEND gs_output_j3ap TO gt_output_j3ap.
CHECK 1 = 2.
ENDIF.
READ TABLE lt_tvta ASSIGNING <fs_lt_tvta>
WITH KEY vkorg = gs_output_j3ap-vkorg
vtweg = gs_output_j3ap-vtweg
spart = gs_output_j3ap-spart.
IF sy-subrc IS NOT INITIAL.
gs_output_j3ap-icon = icon_cancel.
gs_output_j3ap-icontext = 'Incorrect Sales Area'.
APPEND gs_output_j3ap TO gt_output_j3ap.
CHECK 1 = 2.
ENDIF.
READ TABLE lt_t006 ASSIGNING <fs_lt_t006>
WITH KEY msehi = gs_output_j3ap-kmein.
IF sy-subrc IS NOT INITIAL.
gs_output_j3ap-icon = icon_cancel.
gs_output_j3ap-icontext = 'Incorrect Condition Unit'.
APPEND gs_output_j3ap TO gt_output_j3ap.
CHECK 1 = 2.
ENDIF.
READ TABLE lt_tcurc ASSIGNING <fs_lt_tcurc>
WITH KEY waers = gs_output_j3ap-waerk.
IF sy-subrc IS NOT INITIAL.
gs_output_j3ap-icon = icon_cancel.
gs_output_j3ap-icontext = 'Incorrect Currency'.
APPEND gs_output_j3ap TO gt_output_j3ap.
CHECK 1 = 2.
ENDIF.
READ TABLE lt_mara ASSIGNING <fs_lt_mara>
WITH KEY matnr = gs_output_j3ap-matnr.
IF sy-subrc IS NOT INITIAL.
gs_output_j3ap-icon = icon_cancel.
gs_output_j3ap-icontext = 'Incorrect Material'.
APPEND gs_output_j3ap TO gt_output_j3ap.
CHECK 1 = 2.
ENDIF.
IF gs_output_j3ap-kunnr IS NOT INITIAL.
READ TABLE lt_kna1 ASSIGNING <fs_lt_kna1>
WITH KEY kunnr = gs_output_j3ap-kunnr.
IF sy-subrc IS NOT INITIAL.
gs_output_j3ap-icon = icon_cancel.
gs_output_j3ap-icontext = 'Incorrect Customer'.
APPEND gs_output_j3ap TO gt_output_j3ap.
CHECK 1 = 2.
ENDIF.
ENDIF.
READ TABLE lt_mvke ASSIGNING <fs_lt_mvke>
WITH KEY matnr = gs_output_j3ap-matnr
vkorg = gs_output_j3ap-vkorg
vtweg = gs_output_j3ap-vtweg.
IF sy-subrc IS NOT INITIAL.
gs_output_j3ap-icon = icon_cancel.
gs_output_j3ap-icontext = 'Material is not extended to Sales Area'.
APPEND gs_output_j3ap TO gt_output_j3ap.
CHECK 1 = 2.
ENDIF.
IF gs_output_j3ap-kunnr IS NOT INITIAL.
READ TABLE lt_knvv ASSIGNING <fs_lt_knvv>
WITH KEY kunnr = gs_output_j3ap-kunnr
vkorg = gs_output_j3ap-vkorg
vtweg = gs_output_j3ap-vtweg
spart = gs_output_j3ap-spart.
IF sy-subrc IS NOT INITIAL.
gs_output_j3ap-icon = icon_cancel.
gs_output_j3ap-icontext = 'Customer is not extended to Sales Area'.
APPEND gs_output_j3ap TO gt_output_j3ap.
CHECK 1 = 2.
ENDIF.
ENDIF.
ls_bapicondct-operation = lcon_operation_009.
ls_bapicondct-cond_usage = lcon_cond_usage_a .
IF p_a900 = abap_true.
* refresh lt_a900[].
* if sy-subrc is NOT INITIAL.
* endif.
ls_bapicondct-table_no = lcon_table_no_900.
ls_varkey_a900_header-vkorg = <fs_lt_zsd_pricelist>-vkorg.
ls_varkey_a900_header-vtweg = <fs_lt_zsd_pricelist>-vtweg.
ls_varkey_a900_header-spart = <fs_lt_zsd_pricelist>-spart.
ls_varkey_a900_header-pltyp = <fs_gt_upload_j3ap>-pltyp.
ls_varkey_a900_header-matnr = <fs_gt_upload_j3ap>-matnr.
ls_varkey_a900_header-waerk = <fs_lt_zsd_pricelist>-waerk.
ls_varkey_header = ls_varkey_a900_header.
ELSEIF p_a923 = abap_true.
* select single knumh from a923 INTO ls_bapicondct-cond_no
* where kappl = lcon_applicatio_v and
* kschl = lcon_cond_type_j3ap and
* vkorg = <fs_lt_zsd_pricelist>-vkorg and
* vtweg = <fs_lt_zsd_pricelist>-vtweg and
* spart = <fs_lt_zsd_pricelist>-spart and
* pltyp = <fs_gt_upload_j3ap>-pltyp and
* kunnr = <fs_gt_upload_j3ap>-kunnr and
* waerk = <fs_lt_zsd_pricelist>-waerk and
* DATBI GE <fs_gt_upload_j3ap>-datab and
* datab LE <fs_gt_upload_j3ap>-datab.
* if sy-subrc is NOT INITIAL.
* endif.
ls_bapicondct-table_no = lcon_table_no_923.
ls_varkey_a923_header-vkorg = <fs_lt_zsd_pricelist>-vkorg.
ls_varkey_a923_header-vtweg = <fs_lt_zsd_pricelist>-vtweg.
ls_varkey_a923_header-spart = <fs_lt_zsd_pricelist>-spart.
ls_varkey_a923_header-pltyp = <fs_gt_upload_j3ap>-pltyp.
ls_varkey_a923_header-kunnr = <fs_gt_upload_j3ap>-kunnr.
ls_varkey_a923_header-matnr = <fs_gt_upload_j3ap>-matnr.
ls_varkey_a923_header-waerk = <fs_lt_zsd_pricelist>-waerk.
ls_varkey_header = ls_varkey_a923_header.
ENDIF.
IF p_test IS INITIAL.
ls_bapicondct-cond_no = lcon_knumh_i .
ELSE.
ls_bapicondct-cond_no = lcon_knumh_test.
ENDIF.
CLEAR: lv_knumh,
lv_same_recfound.
lv_knumh = ls_bapicondct-cond_no .
ls_bapicondct-applicatio = lcon_applicatio_v .
ls_bapicondct-cond_type = lcon_cond_type_j3ap.
ls_bapicondct-varkey = ls_varkey_header.
ls_bapicondct-valid_to = lcon_valid_to.
* ls_bapicondct-agree_cond
ls_bapicondct-valid_from = <fs_gt_upload_j3ap>-datab.
* ls_bapicondct-vadat
APPEND ls_bapicondct TO lt_bapicondct.
REFRESH: lt_a9xx[],
lt_a9xx_deleted[].
IF p_a900 = abap_true.
SELECT a900~knumh
a900~datab
a900~datbi
konp~kbetr
konp~loevm_ko
FROM a900
INNER JOIN konp
ON a900~knumh = konp~knumh
INTO TABLE lt_a9xx
WHERE a900~kappl = lcon_applicatio_v AND
a900~kschl = lcon_cond_type_j3ap AND
a900~vkorg = <fs_lt_zsd_pricelist>-vkorg AND
a900~vtweg = <fs_lt_zsd_pricelist>-vtweg AND
a900~spart = <fs_lt_zsd_pricelist>-spart AND
a900~pltyp = <fs_gt_upload_j3ap>-pltyp AND
a900~waerk = <fs_lt_zsd_pricelist>-waerk AND
a900~matnr = <fs_gt_upload_j3ap>-matnr AND
a900~datbi LE lcon_valid_to AND
a900~datbi GE <fs_gt_upload_j3ap>-datab AND
a900~datab LE <fs_gt_upload_j3ap>-datab ." and
* konp~LOEVM_KO = space.
SELECT a900~knumh
a900~datab
a900~datbi
konp~kbetr
konp~loevm_ko
FROM a900
INNER JOIN konp
ON a900~knumh = konp~knumh
INTO TABLE lt_a9xx_deleted
WHERE a900~kappl = lcon_applicatio_v AND
a900~kschl = lcon_cond_type_j3ap AND
a900~vkorg = <fs_lt_zsd_pricelist>-vkorg AND
a900~vtweg = <fs_lt_zsd_pricelist>-vtweg AND
a900~spart = <fs_lt_zsd_pricelist>-spart AND
a900~pltyp = <fs_gt_upload_j3ap>-pltyp AND
a900~waerk = <fs_lt_zsd_pricelist>-waerk AND
a900~matnr = <fs_gt_upload_j3ap>-matnr AND
a900~datbi LT lcon_valid_to AND
a900~datab GE <fs_gt_upload_j3ap>-datab ."and
* konp~LOEVM_KO = space.
ELSE.
SELECT a923~knumh
a923~datab
a923~datbi
konp~kbetr
konp~loevm_ko
FROM a923
INNER JOIN konp
ON a923~knumh = konp~knumh
INTO TABLE lt_a9xx
WHERE a923~kappl = lcon_applicatio_v AND
a923~kschl = lcon_cond_type_j3ap AND
a923~vkorg = <fs_lt_zsd_pricelist>-vkorg AND
a923~vtweg = <fs_lt_zsd_pricelist>-vtweg AND
a923~spart = <fs_lt_zsd_pricelist>-spart AND
a923~kunnr = <fs_gt_upload_j3ap>-kunnr AND
a923~pltyp = <fs_gt_upload_j3ap>-pltyp AND
a923~waerk = <fs_lt_zsd_pricelist>-waerk AND
a923~matnr = <fs_gt_upload_j3ap>-matnr AND
a923~datbi LE lcon_valid_to AND
a923~datbi GE <fs_gt_upload_j3ap>-datab AND
a923~datab LE <fs_gt_upload_j3ap>-datab ." and
* konp~LOEVM_KO = space.
SELECT a923~knumh
a923~datab
a923~datbi
konp~kbetr
konp~loevm_ko
FROM a923
INNER JOIN konp
ON a923~knumh = konp~knumh
INTO TABLE lt_a9xx_deleted
WHERE a923~kappl = lcon_applicatio_v AND
a923~kschl = lcon_cond_type_j3ap AND
a923~vkorg = <fs_lt_zsd_pricelist>-vkorg AND
a923~vtweg = <fs_lt_zsd_pricelist>-vtweg AND
a923~spart = <fs_lt_zsd_pricelist>-spart AND
a923~kunnr = <fs_gt_upload_j3ap>-kunnr AND
a923~pltyp = <fs_gt_upload_j3ap>-pltyp AND
a923~waerk = <fs_lt_zsd_pricelist>-waerk AND
a923~matnr = <fs_gt_upload_j3ap>-matnr AND
a923~datbi LT lcon_valid_to AND
a923~datab GE <fs_gt_upload_j3ap>-datab." and
* konp~LOEVM_KO = space.
ENDIF.
LOOP AT lt_a9xx ASSIGNING <fs_lt_a9xx>.
lv_tabix = sy-tabix.
READ TABLE lt_a9xx_deleted ASSIGNING <fs_lt_a9xx_deleted>
with key knumh = <fs_lt_a9xx>-knumh.
if sy-subrc is INITIAL.
delete lt_a9xx index lv_tabix.
continue.
endif.
ls_bapicondct-cond_no = <fs_lt_a9xx>-knumh.
ls_bapicondct-operation = lcon_operation_004.
ls_bapicondct-valid_from = <fs_lt_a9xx>-datab.
ls_bapicondct-valid_to = <fs_lt_a9xx>-datbi .
LOOP AT lt_bapicondct ASSIGNING <fs_lt_bapicondct>
WHERE valid_from = ls_bapicondct-valid_from AND
valid_to = lcon_valid_to AND
( cond_no = lcon_knumh_i OR
cond_no = lcon_knumh_test ) .
<fs_lt_bapicondct>-cond_no = ls_bapicondct-cond_no.
lv_knumh = <fs_lt_bapicondct>-cond_no.
lv_same_recfound = abap_true.
EXIT.
ENDLOOP.
IF sy-subrc IS NOT INITIAL.
<fs_lt_a9xx>-datbi = <fs_gt_upload_j3ap>-datab - 1.
ls_bapicondct-valid_to = <fs_lt_a9xx>-datbi .
APPEND ls_bapicondct TO lt_bapicondct.
ENDIF.
ENDLOOP.
IF p_del IS INITIAL.
DELETE lt_a9xx_deleted WHERE loevm_ko NE space.
ENDIF.
LOOP AT lt_a9xx_deleted ASSIGNING <fs_lt_a9xx_deleted>.
ls_bapicondct-cond_no = <fs_lt_a9xx_deleted>-knumh.
ls_bapicondct-operation = lcon_operation_003.
ls_bapicondct-valid_from = <fs_lt_a9xx_deleted>-datab.
ls_bapicondct-valid_to = <fs_lt_a9xx_deleted>-datbi.
APPEND ls_bapicondct TO lt_bapicondct.
ENDLOOP.
ls_bapicondhd-operation = lcon_operation_009.
IF p_test IS INITIAL.
ls_bapicondhd-cond_no = lcon_knumh_i .
ELSE.
ls_bapicondhd-cond_no = lcon_knumh_test .
ENDIF.
ls_bapicondhd-created_by = sy-uname.
ls_bapicondhd-creat_date = sy-datum.
ls_bapicondhd-cond_usage = lcon_cond_usage_a .
ls_bapicondhd-table_no = ls_bapicondct-table_no.
ls_bapicondhd-applicatio = lcon_applicatio_v .
ls_bapicondhd-cond_type = lcon_cond_type_j3ap.
ls_bapicondhd-varkey = ls_varkey_header.
ls_bapicondhd-valid_from = <fs_gt_upload_j3ap>-datab.
ls_bapicondhd-valid_to = lcon_valid_to.
APPEND ls_bapicondhd TO lt_bapicondhd.
LOOP AT lt_a9xx ASSIGNING <fs_lt_a9xx>.
ls_bapicondhd-cond_no = <fs_lt_a9xx>-knumh.
ls_bapicondhd-operation = lcon_operation_004.
ls_bapicondhd-valid_from = <fs_lt_a9xx>-datab.
ls_bapicondhd-valid_to = <fs_lt_a9xx>-datbi.
LOOP AT lt_bapicondhd ASSIGNING <fs_lt_bapicondhd>
WHERE valid_from = ls_bapicondhd-valid_from AND
valid_to = lcon_valid_to AND
( cond_no = lcon_knumh_i OR
cond_no = lcon_knumh_test ) .
<fs_lt_bapicondhd>-cond_no = ls_bapicondhd-cond_no.
EXIT.
ENDLOOP.
IF sy-subrc IS NOT INITIAL.
APPEND ls_bapicondhd TO lt_bapicondhd.
ENDIF.
ENDLOOP.
LOOP AT lt_a9xx_deleted ASSIGNING <fs_lt_a9xx_deleted>.
ls_bapicondhd-cond_no = <fs_lt_a9xx_deleted>-knumh.
ls_bapicondhd-operation = lcon_operation_003.
ls_bapicondhd-valid_from = <fs_lt_a9xx_deleted>-datab.
ls_bapicondhd-valid_to = <fs_lt_a9xx_deleted>-datbi.
APPEND ls_bapicondhd TO lt_bapicondhd.
ENDLOOP.
ls_bapicondit-operation = lcon_operation_009.
* sd_doc
* itm_number
IF p_test IS INITIAL.
ls_bapicondit-cond_no = lcon_knumh_i .
ELSE.
ls_bapicondit-cond_no = lcon_knumh_test .
ENDIF.
ls_bapicondit-cond_count = lcon_cond_count_i .
ls_bapicondit-applicatio = lcon_applicatio_v .
ls_bapicondit-cond_type = lcon_cond_type_j3ap.
* text_no
ls_bapicondit-scaletype = lcon_scale_type_c.
* scalebasin
* scale_qty
* unitmeasur
* measur_iso
* scale_val
* currenckey
* curren_iso
ls_bapicondit-calctypcon = lcon_calc_type_c.
ls_bapicondit-cond_value = <fs_gt_upload_j3ap>-kwert.
ls_bapicondit-condcurr = <fs_lt_zsd_pricelist>-waerk.
* ls_bapicondit-cond_iso
ls_bapicondit-cond_p_unt = p_kpein.
ls_bapicondit-cond_unit = p_kmein.
* conunitiso
* pricelevel
* numconvert
* denominato
* base_uom
* baseqtyiso
* lowerlimit
* upperlimit
* plcondval
* cum_value
* cumm_accr
* currency
* curr_iso
* condcurren
* isocurrenc
* plan_basis
* rate_unit
* exclusion
* customer
* vendor_no
* tax_code
* indidelete
* conditidx
* matlsettl
* accruals
* reb_retroa
* statofagre
* promot_no
* sales_deal
* salesquote
* add_val_dy
* fix_val_dy
* pmnttrms
* numborders
* minconbava
* maxconbava
* maxconval
* incr_scale
* pricscale
* relprcg
* promotion
* rebagreemt
* withtaxcod
* contract
* contractno
* flow_type
* indimatmai
* status
* umsabst
* matlsettl_external
* matlsettl_guid
* matlsettl_version
APPEND ls_bapicondit TO lt_bapicondit.
LOOP AT lt_a9xx ASSIGNING <fs_lt_a9xx>.
ls_bapicondit-cond_no = <fs_lt_a9xx>-knumh.
ls_bapicondit-operation = lcon_operation_003.
ls_bapicondit-cond_value = <fs_lt_a9xx>-kbetr.
IF lv_same_recfound = abap_true.
LOOP AT lt_bapicondit ASSIGNING <fs_lt_bapicondit>
WHERE cond_no = lcon_knumh_i OR
cond_no = lcon_knumh_test.
<fs_lt_bapicondit>-cond_no = ls_bapicondit-cond_no.
EXIT.
ENDLOOP.
IF sy-subrc IS NOT INITIAL.
APPEND ls_bapicondit TO lt_bapicondit.
ENDIF.
ELSE.
APPEND ls_bapicondit TO lt_bapicondit.
ENDIF.
ENDLOOP.
LOOP AT lt_a9xx_deleted ASSIGNING <fs_lt_a9xx_deleted>.
ls_bapicondit-cond_no = <fs_lt_a9xx_deleted>-knumh.
ls_bapicondit-operation = lcon_operation_003.
ls_bapicondit-cond_value = <fs_lt_a9xx_deleted>-kbetr.
APPEND ls_bapicondit TO lt_bapicondit.
ENDLOOP.
CALL FUNCTION 'BAPI_PRICES_CONDITIONS'
EXPORTING
* PI_INITIALMODE = ' '
* PI_BLOCKNUMBER =
pi_physical_deletion = p_del
TABLES
ti_bapicondct = lt_bapicondct
ti_bapicondhd = lt_bapicondhd
ti_bapicondit = lt_bapicondit
ti_bapicondqs = lt_bapicondqs
ti_bapicondvs = lt_bapicondvs
to_bapiret2 = lte_bapiret2
to_bapiknumhs = lte_bapiknumhs
to_mem_initial = lte_mem_initial
EXCEPTIONS
update_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
LOOP AT lte_bapiret2 ASSIGNING <fs_lte_bapiret2>
WHERE type = 'E'.
IF p_shwmod IS INITIAL.
CHECK <fs_lte_bapiret2>-message_v1 = lv_knumh OR
<fs_lte_bapiret2>-message_v3 = 'I'.
ENDIF.
gs_output_j3ap-icon = icon_cancel.
* IF p_test IS INITIAL.
* CASE <fs_lte_bapiret2>-message_v3 .
* WHEN 'I'.
* gs_output_j3ap-icon_m = icon_create.
* gs_output_j3ap-datbi = lcon_valid_to.
* WHEN 'U'.
* READ TABLE lt_a9xx ASSIGNING <fs_lt_a9xx>
* WITH KEY knumh = <fs_lte_bapiret2>-message_v1.
* IF sy-subrc IS INITIAL.
* gs_output_j3ap-kwert = <fs_lt_a9xx>-kbetr.
* gs_output_j3ap-datbi = <fs_gt_upload_j3ap>-datab - 1.
* ENDIF.
* gs_output_j3ap-icon_m = icon_change.
* WHEN 'D'.
* READ TABLE lt_a9xx_deleted ASSIGNING <fs_lt_a9xx_deleted>
* WITH KEY knumh = <fs_lte_bapiret2>-message_v1.
* IF sy-subrc IS INITIAL.
* gs_output_j3ap-kwert = <fs_lt_a9xx_deleted>-kbetr.
* gs_output_j3ap-datbi = <fs_lt_a9xx_deleted>-datbi.
* ENDIF.
* gs_output_j3ap-icon_m = icon_delete.
* WHEN OTHERS.
* ENDCASE.
* ENDIF.
gs_output_j3ap-icontext = <fs_lte_bapiret2>-message.
APPEND gs_output_j3ap TO gt_output_j3ap.
ENDLOOP.
IF sy-subrc IS NOT INITIAL.
LOOP AT lte_bapiret2 ASSIGNING <fs_lte_bapiret2>
WHERE type = 'W'.
IF p_shwmod IS INITIAL.
CHECK <fs_lte_bapiret2>-message_v1 = lv_knumh OR
<fs_lte_bapiret2>-message_v3 = 'I'.
ENDIF.
gs_output_j3ap-icon = icon_okay.
IF <fs_lte_bapiret2>-message_v3 = 'I' OR
<fs_lte_bapiret2>-message_v1 = lcon_knumh_test.
gs_output_j3ap-icon_m = icon_create.
gs_output_j3ap-kwert = <fs_gt_upload_j3ap>-kwert.
gs_output_j3ap-datab = <fs_gt_upload_j3ap>-datab.
gs_output_j3ap-datbi = lcon_valid_to.
ELSEIF <fs_lte_bapiret2>-message_v3 = 'U'.
READ TABLE lt_a9xx ASSIGNING <fs_lt_a9xx>
WITH KEY knumh = <fs_lte_bapiret2>-message_v1.
IF sy-subrc IS INITIAL.
gs_output_j3ap-kwert = <fs_lt_a9xx>-kbetr.
gs_output_j3ap-datab = <fs_lt_a9xx>-datab .
gs_output_j3ap-datbi = <fs_lt_a9xx>-datbi .
ENDIF.
gs_output_j3ap-icon_m = icon_change.
ELSEIF <fs_lte_bapiret2>-message_v3 = 'D'.
READ TABLE lt_a9xx_deleted ASSIGNING <fs_lt_a9xx_deleted>
WITH KEY knumh = <fs_lte_bapiret2>-message_v1.
IF sy-subrc IS INITIAL.
gs_output_j3ap-kwert = <fs_lt_a9xx_deleted>-kbetr.
gs_output_j3ap-datab = <fs_lt_a9xx_deleted>-datab.
gs_output_j3ap-datbi = <fs_lt_a9xx_deleted>-datbi.
ENDIF.
gs_output_j3ap-icon_m = icon_delete.
ENDIF.
IF p_test IS NOT INITIAL.
CLEAR gs_output_j3ap-icon_m.
ENDIF.
gs_output_j3ap-icontext = <fs_lte_bapiret2>-message.
APPEND gs_output_j3ap TO gt_output_j3ap.
ENDLOOP.
IF sy-subrc IS NOT INITIAL.
LOOP AT lte_bapiret2 ASSIGNING <fs_lte_bapiret2>
WHERE type = 'S'.
IF p_shwmod IS INITIAL.
CHECK <fs_lte_bapiret2>-message_v1 = lv_knumh OR
<fs_lte_bapiret2>-message_v3 = 'I'.
ENDIF.
gs_output_j3ap-icon = icon_okay.
IF <fs_lte_bapiret2>-message_v3 = 'I' OR
<fs_lte_bapiret2>-message_v1 = lcon_knumh_test.
gs_output_j3ap-icon_m = icon_create.
gs_output_j3ap-kwert = <fs_gt_upload_j3ap>-kwert.
gs_output_j3ap-datab = <fs_gt_upload_j3ap>-datab.
gs_output_j3ap-datbi = lcon_valid_to.
ELSEIF <fs_lte_bapiret2>-message_v3 = 'U'.
READ TABLE lt_a9xx ASSIGNING <fs_lt_a9xx>
WITH KEY knumh = <fs_lte_bapiret2>-message_v1.
IF sy-subrc IS INITIAL.
gs_output_j3ap-kwert = <fs_lt_a9xx>-kbetr.
gs_output_j3ap-datab = <fs_lt_a9xx>-datab .
gs_output_j3ap-datbi = <fs_lt_a9xx>-datbi .
ENDIF.
gs_output_j3ap-icon_m = icon_change.
ELSEIF <fs_lte_bapiret2>-message_v3 = 'D'.
READ TABLE lt_a9xx_deleted ASSIGNING <fs_lt_a9xx_deleted>
WITH KEY knumh = <fs_lte_bapiret2>-message_v1.
IF sy-subrc IS INITIAL.
gs_output_j3ap-kwert = <fs_lt_a9xx_deleted>-kbetr.
gs_output_j3ap-datab = <fs_lt_a9xx_deleted>-datab.
gs_output_j3ap-datbi = <fs_lt_a9xx_deleted>-datbi.
ENDIF.
gs_output_j3ap-icon_m = icon_delete.
ENDIF.
IF p_test IS NOT INITIAL.
CLEAR gs_output_j3ap-icon_m.
ENDIF.
gs_output_j3ap-icontext = <fs_lte_bapiret2>-message.
APPEND gs_output_j3ap TO gt_output_j3ap.
ENDLOOP.
ENDIF.
ENDIF.
ENDLOOP.
IF sy-subrc IS NOT INITIAL.
gs_output_j3ap-icon = icon_cancel.
gs_output_j3ap-icontext = 'Incorrect pricelist'.
APPEND gs_output_j3ap TO gt_output_j3ap.
ENDIF.
ENDLOOP.
IF p_test IS NOT INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
* IMPORTING
* RETURN =
.
ELSE.
LOOP AT gt_output_j3ap ASSIGNING <fs_gt_output_j3ap>
WHERE icon = icon_cancel.
EXIT.
ENDLOOP.
IF sy-subrc IS INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
* IMPORTING
* RETURN =
.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'
*IMPORTING
*return = ret
.
ENDIF.
ENDIF.
ENDFORM. " F_UPLOADPRICES
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
62 | |
8 | |
7 | |
6 | |
6 | |
5 | |
5 | |
4 | |
4 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.