Está en la página 1de 5

clear enganche2. refresh enganche2. clear km_total.

select single GSTRP into validez from afko where aufnr = r_orders-order_numb er. select single dwerk into werks from afpo where aufnr = r_orders-order_number . * Buscamos en la tabla de asignaciones los proveedores externos asignados a e sta orden y los tramos que * han recorrido al enganche. if ( sy-mandt ne '400' and sy-mandt ne '300' ) . Select * from ztraf_hist_asig where ( orden_java = ORDEN and proveedor ne '0000050142' ). if sy-subrc = 0. move-corresponding ztraf_hist_asig to enganche2. select * from ztraf_conjuntos where id_asociacion = ztraf_hist_asig-id_asociacion. if sy-subrc = 0. if i_listado-numero_personal2 = ztraf_conjuntos-num_chofer. append enganche2. endif. endif. endselect. endif. endselect. elseif ( sy-mandt eq '400' or sy-mandt eq '300' ) . Select * from ztraf_hist_asig where ( orden_java = ORDEN AND PROVEEDOR NE '0000050142' AND PROVEEDOR NE '0000050180' AND PROVEEDOR NE '0000050162' ). if sy-subrc = 0. move-corresponding ztraf_hist_asig to enganche2. select * from ztraf_conjuntos where id_asociacion = ztraf_hist_asig-id_asociacion. if sy-subrc = 0. if i_listado-numero_personal2 = ztraf_conjuntos-num_chofer. append enganche2. endif. endif. endselect. endif. endselect. endif. clear enganche. refresh enganche. sort enganche2 by proveedor. * meto el total de km por proveedor en una tabla auxiliar

loop at enganche2. at new proveedor. km_total = 0. endat. km_total = km_total + ( enganche2-pk_destino - enganche2-pk_origen ). at end of proveedor. enganche-proveedor = enganche2-proveedor. enganche-km_total = km_total. append enganche. endat. endloop. km_total = 0. * loop at enganche. se carga la cabecera y las estructuras y tablas correspondientes clear r_head. r_head-doc_date = validez. r_head-doc_type = 'ZSE'. r_head-doc_cat = 'F'. r_head-co_code = '0400'. r_head-purch_org = '0400'. if werks = '0400'. r_head-pur_group = '400'. elseif werks = '0700'. r_head-pur_group = '700'. endif. concatenate '00000' enganche-proveedor+5(5) into r_head-vendor. clear r_items. refresh r_items. R_ITEMS-ACCTASSCAT = 'R'. "IMPUTACION A OBJETO PA

R_ITEMS-PLANT = werks. * Busco el registro info del proveedor en el centro. select SINGLE INFNR INTO INFNR from eina where MATKL = 'TRAFICO' and LIFNR = r_head-vendor.

R_ITEMS-PLANT = '0400'. R_ITEMS-TAX_CODE = 'S3'. R_ITEMS-PO_ITEM = '00010' . R_ITEMS-MAT_GRP = 'TRAFICO'. R_ITEMS-NO_MORE_GR = 'X'.

concatenate 'PEDIDO enganche' r_orders-order_number into R_ITEMS-SHORT_TEXT separated by space. * R_ITEMS-SHORT_TEXT = 'PEDIDO enganche' . R_ITEMS-info_rec = INFNR . " REGISTRO POR KM SUBCONTRATADO Y PROVEEDOR. R_ITEMS-UNIT = 'KM'. R_ITEMS-PRICE_UNIT = '1'. * * * * * read TABLE gt_salesdocuments with key DISTR_PERC = '99.9'. if sy-subrc ne 0. R_ITEMS-DISTRIB = '1'. else. R_ITEMS-DISTRIB = ' '. ENDIF. append r_items. clear gt_po_item_add . refresh gt_po_item_add . gt_po_item_add-PO_ITEM = '00010' . gt_po_item_add-IR_IND = ' '. gt_po_item_add-INFO_UPD = 'A'. gt_po_item_add-FINAL_INV = 'X'. append gt_po_item_add . clear gt_po_item_add . clear r_item_s. refresh r_item_s.

R_ITEM_S-del_datcat = '1'. R_ITEM_S-po_item = '00010'. R_ITEM_S-deliv_date = validez. R_ITEM_S-quantity = ENGANCHE-KM_TOTAL. append r_item_s. clear r_item_AA. refresh r_item_AA. clear contador. loop at gt_salesdocuments where submi = r_orders-order_number. if gt_salesdocuments-por_vac_distrib is initial. * * * * * * R_ITEM_AA-co_area = '0400'. R_ITEM_AA-DISTR_PERC = gt_salesdocuments-prozs. R_ITEM_AA-order_no = r_orders-order_number. R_ITEM_AA-po_item = '00010'. R_ITEM_AA-quantity = ENGANCHE-KM_TOTAL. R_ITEM_AA-g_l_acct = '0060700010'. contador = contador + 1. R_ITEM_AA-PO_ITEM = '00010'. R_ITEM_AA-co_area = '0400'. IF gt_salesdocuments-DISTR_PERC = '99.9'. CLEAR R_ITEM_AA-DISTR_PERC.

* *

* * *

ELSE. R_ITEM_AA-DISTR_PERC = gt_salesdocuments-DISTR_PERC. ENDIF. R_ITEM_AA-quantity = gt_salesdocuments-km_cc_eng . R_ITEM_AA-SD_DOC = gt_salesdocuments-vbeln. R_ITEM_AA-SDOC_ITEM = gt_salesdocuments-posnr. r_item_aa-PROF_SEGM = contador. if sy-mandt ne '500'. R_ITEM_AA-g_l_acct = '0060700010'. elseif sy-mandt = '500'. R_ITEM_AA-g_l_acct = '0060700010'. endif. append r_item_aa. clear r_item_aa. else. R_ITEM_AA-co_area = '0400'. R_ITEM_AA-DISTR_PERC = gt_salesdocuments-prozs. R_ITEM_AA-order_no = r_orders-order_number. R_ITEM_AA-po_item = '00010'. R_ITEM_AA-quantity = ENGANCHE-KM_TOTAL. R_ITEM_AA-g_l_acct = '0060700010'. contador = contador + 1. R_ITEM_AA-PO_ITEM = '00010'. R_ITEM_AA-co_area = '0400'. R_ITEM_AA-quantity = gt_salesdocuments-km_cc_eng . IF gt_salesdocuments-DISTR_PERC = '99.9'. CLEAR R_ITEM_AA-DISTR_PERC. ELSE. R_ITEM_AA-DISTR_PERC = gt_salesdocuments-DISTR_PERC. ENDIF. R_ITEM_AA-SD_DOC = gt_salesdocuments-vbeln. R_ITEM_AA-SDOC_ITEM = gt_salesdocuments-posnr. r_item_aa-PROF_SEGM = contador. if sy-mandt ne '500'. R_ITEM_AA-g_l_acct = '0060700010'. elseif sy-mandt = '500'. R_ITEM_AA-g_l_acct = '0060700010'. endif. append r_item_aa. clear r_item_aa. R_ITEM_AA-co_area = '0400'. R_ITEM_AA-DISTR_PERC = gt_salesdocuments-prozs. R_ITEM_AA-order_no = r_orders-order_number. R_ITEM_AA-po_item = '00010'. R_ITEM_AA-quantity = ENGANCHE-KM_TOTAL. R_ITEM_AA-g_l_acct = '0060700050'. contador = contador + 1. R_ITEM_AA-PO_ITEM = '00010'. R_ITEM_AA-co_area = '0400'.

* * * * * *

* * * * * *

* * * * * *

R_ITEM_AA-DISTR_PERC = gt_salesdocuments-por_vac_distrib. R_ITEM_AA-quantity = gt_salesdocuments-km_vac_eng. R_ITEM_AA-SD_DOC = gt_salesdocuments-vbeln.

R_ITEM_AA-SDOC_ITEM = gt_salesdocuments-posnr. r_item_aa-PROF_SEGM = contador. if sy-mandt ne '500'. R_ITEM_AA-g_l_acct = '0060700050'. elseif sy-mandt = '500'. R_ITEM_AA-g_l_acct = '0060700050'. endif. append r_item_aa. clear r_item_aa. endif. endloop. * se crea el pedido de compras por grupaje CALL FUNCTION 'BAPI_PO_CREATE' EXPORTING PO_HEADER = r_head PO_HEADER_ADD_DATA = HEADER_ADD_DATA_RELEVANT = PO_ADDRESS = SKIP_ITEMS_WITH_ERROR = 'X' ITEM_ADD_DATA_RELEVANT = HEADER_TECH_FIELDS = IMPORTING PURCHASEORDER = PURCHASEORDER TABLES PO_ITEMS = R_ITEMS PO_ITEM_ADD_DATA = gt_po_item_add PO_ITEM_SCHEDULES = R_ITEM_S PO_ITEM_ACCOUNT_ASSIGNMENT = R_ITEM_AA PO_ITEM_TEXT = RETURN = PO_LIMITS = PO_CONTRACT_LIMITS = PO_SERVICES = PO_SRV_ACCASS_VALUES = PO_SERVICES_TEXT = PO_BUSINESS_PARTNER = EXTENSIONIN = POADDRDELIVERY = .

* * * * * *

* * * * * * * * * *

clear r_head. refresh r_items. clear r_items. refresh r_item_s. clear r_item_s. refresh r_item_aa. clear r_item_aa. H_PEDIDO-EBELN = PURCHASEORDER. H_PEDIDO-EBELP = '00010'. APPEND H_PEDIDO. CLEAR H_PEDIDO. ENDLOOP.

También podría gustarte