Нам необходимо передать запись в таблице UNITOFMEASURE для базовой единицы измерения вместе со значением веса брутто и единицей веса брутто.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | *&---------------------------------------------------------------------* *& Report ZHM_CHANGE_MATERIAL_WEIGHT *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT zhm_change_material_weight. TYPES:BEGIN OF ty_mara, matnr TYPE mara-matnr, brgew TYPE mara-brgew, ntgew TYPE mara-ntgew, gewei TYPE mara-gewei, meins TYPE mara-meins, matnr_ext TYPE materialid-matnr_ext, END OF ty_mara. DATA: lt_mara_not_semi TYPE TABLE OF ty_mara, lt_mara_semi TYPE TABLE OF ty_mara, like_string TYPE string. DATA: ls_headdata LIKE bapimathead, ls_client_data TYPE bapi_mara, ls_client_datax TYPE bapi_marax, ls_return2 TYPE bapiret2, lt_unitsofmeasure TYPE TABLE OF bapi_marm, lt_unitsofmeasurex TYPE TABLE OF bapi_marmx, ls_unitsofmeasure TYPE bapi_marm, ls_unitsofmeasurex TYPE bapi_marmx. FIELD-SYMBOLS: <fs_mara_not_semi> LIKE LINE OF lt_mara_not_semi, <fs_mara_semi> LIKE LINE OF lt_mara_semi. SELECT * UP TO 1000 ROWS FROM mara INNER JOIN materialid ON materialid~matnr_int = mara~matnr INTO CORRESPONDING FIELDS OF TABLE lt_mara_not_semi WHERE ( brgew > 0 OR ntgew > 0 ) AND matnr_ext NOT LIKE '%\%' AND ( zbesk = 'P' OR zbesk = 'T' ). LOOP AT lt_mara_not_semi ASSIGNING <fs_mara_not_semi>. CONCATENATE <fs_mara_not_semi>-matnr_ext '%\%' INTO like_string. SELECT * FROM mara INNER JOIN materialid ON materialid~matnr_int = mara~matnr INTO CORRESPONDING FIELDS OF TABLE lt_mara_semi WHERE matnr_ext LIKE like_string. LOOP AT lt_mara_semi ASSIGNING <fs_mara_semi>. ls_headdata-material = <fs_mara_semi>-matnr. ls_client_data-net_weight = <fs_mara_not_semi>-ntgew. ls_client_data-unit_of_wt = <fs_mara_not_semi>-gewei. ls_client_datax-net_weight = 'X'. ls_client_datax-unit_of_wt = 'X'. ls_unitsofmeasure-alt_unit = <fs_mara_semi>-meins. ls_unitsofmeasure-gross_wt = ls_client_data-net_weight. CLEAR lt_unitsofmeasure. APPEND ls_unitsofmeasure TO lt_unitsofmeasure. ls_unitsofmeasurex-alt_unit = ls_unitsofmeasure-alt_unit. ls_unitsofmeasurex-gross_wt = 'X'. CLEAR lt_unitsofmeasurex. APPEND ls_unitsofmeasurex TO lt_unitsofmeasurex. CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA' EXPORTING headdata = ls_headdata clientdata = ls_client_data clientdatax = ls_client_datax IMPORTING return = ls_return2 TABLES unitsofmeasure = lt_unitsofmeasure unitsofmeasurex = lt_unitsofmeasurex . ENDLOOP. ENDLOOP. |