Difference between revisions of "SAP SD BAPI VA01"
From SapWiki
(Created page with "==Ejemplo 1== <nowiki>FORM f_pedido_venta USING i_kunnr i_werks CHANGING p_documento TYPE vbak-vbeln o_da...") |
|||
(One intermediate revision by the same user not shown) | |||
Line 100: | Line 100: | ||
ENDFORM. "f_pedido_venta</nowiki> | ENDFORM. "f_pedido_venta</nowiki> | ||
+ | |||
+ | ==Crear pedido con referencia a factura== | ||
+ | En SAP no existe una BAPI para crear una orden de venta con referencia a otros documentos, como otros pedidos, ofertas, etc. Solución ver Nota SAP 370988 | ||
+ | <nowiki>FUNCTION Z_SD_CREA_PEDIDO_CON_REF_FACT. | ||
+ | *"---------------------------------------------------------------------- | ||
+ | *"*"Interfase local | ||
+ | *" IMPORTING | ||
+ | *" REFERENCE(I_AUART) LIKE VBAK-AUART DEFAULT 'ZFIN' | ||
+ | *" REFERENCE(I_VBELN) LIKE VBRK-VBELN | ||
+ | *" REFERENCE(I_MONTO) TYPE ACBTR | ||
+ | *" REFERENCE(I_WAERS) TYPE WAERS | ||
+ | *" REFERENCE(I_COMMIT) TYPE CHAR1 DEFAULT SPACE | ||
+ | *" REFERENCE(I_VERSION) TYPE VSNMR_V OPTIONAL | ||
+ | *" EXPORTING | ||
+ | *" REFERENCE(O_SALESDOCUMENT) LIKE BAPIVBELN-VBELN | ||
+ | *" TABLES | ||
+ | *" I_T_SALESDOCUMENTS STRUCTURE SALES_KEY OPTIONAL | ||
+ | *" O_T_RETURN STRUCTURE BAPIRET2 OPTIONAL | ||
+ | *"---------------------------------------------------------------------- | ||
+ | ls_bapi_view-header = 'X'. | ||
+ | ls_bapi_view-item = 'X'. | ||
+ | ls_bapi_view-sdschedule = 'X'. | ||
+ | ls_bapi_view-sdcond = 'X'. | ||
+ | ls_bapi_view-partner = 'X'. | ||
+ | ls_bapi_view-BUSINESS = 'X'. | ||
+ | select single aubel into ls_salesdocuments | ||
+ | from vbrp where vbeln = i_vbeln. | ||
+ | append ls_salesdocuments to lt_salesdocuments. | ||
+ | CALL FUNCTION 'BAPISDORDER_GETDETAILEDLIST' | ||
+ | EXPORTING | ||
+ | i_bapi_view = ls_bapi_view | ||
+ | * I_MEMORY_READ = | ||
+ | TABLES | ||
+ | sales_documents = lt_salesdocuments | ||
+ | order_headers_out = lt_order_headers_out | ||
+ | order_items_out = lt_order_items_out | ||
+ | order_schedules_out = lt_order_schedules_out | ||
+ | order_partners_out = lt_order_partners_out | ||
+ | order_conditions_out = lt_order_conditions_out | ||
+ | order_business_out = lt_order_business_out | ||
+ | . | ||
+ | ************************************************************************ | ||
+ | ** PREPARE DATA | ||
+ | clear lt_order_items_in[]. | ||
+ | clear lt_order_partners[]. | ||
+ | clear lt_order_schedules_in[]. | ||
+ | clear lt_order_conditions_in[]. | ||
+ | * fill header data | ||
+ | IF NOT lt_order_headers_out[] IS INITIAL. | ||
+ | READ TABLE lt_order_headers_out INTO ls_header_out INDEX 1. | ||
+ | * fill header data | ||
+ | perform fill_header using i_auart | ||
+ | i_vbeln | ||
+ | i_version. | ||
+ | * fill header business data | ||
+ | perform fill_header_business. | ||
+ | * fill partner data | ||
+ | perform fill_partners. | ||
+ | endif. | ||
+ | * ORDER_ITEMS_IN | ||
+ | select single matnr werks zterm from ZSD_MAT_INTERES | ||
+ | into (ls_order_items_in-material, | ||
+ | ls_order_items_in-plant, | ||
+ | ls_order_header_in-PMNTTRMS) | ||
+ | where vkorg = ls_header_out-SALES_ORG. | ||
+ | ls_order_items_in-po_itm_no = '0010'. | ||
+ | * ls_order_items_in-material = '000000000000040383'. | ||
+ | * ls_order_items_in-plant = '700P'. | ||
+ | APPEND ls_order_items_in TO lt_order_items_in. | ||
+ | * ORDER_SCHEDULE_IN | ||
+ | ls_order_schedules_in-itm_number = '0010'. | ||
+ | ls_order_schedules_in-req_qty = '1'. | ||
+ | APPEND ls_order_schedules_in TO lt_order_schedules_in. | ||
+ | * ORDER_CONDITIONS_IN | ||
+ | ls_order_conditions_in-itm_number = '0010'. | ||
+ | ls_order_conditions_in-cond_type = 'ZFIN'. | ||
+ | ls_order_conditions_in-cond_value = i_monto. | ||
+ | ls_order_conditions_in-currency = i_waers. | ||
+ | APPEND ls_order_conditions_in TO lt_order_conditions_in. | ||
+ | |||
+ | *fill logic switch | ||
+ | * lv_logic_switch-pricing = i_prart. | ||
+ | clear o_t_return[]. | ||
+ | CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2' | ||
+ | EXPORTING | ||
+ | * SALESDOCUMENTIN = | ||
+ | order_header_in = ls_order_header_in | ||
+ | logic_switch = lv_logic_switch | ||
+ | IMPORTING | ||
+ | salesdocument = o_salesdocument | ||
+ | TABLES | ||
+ | return = o_t_return | ||
+ | order_items_in = lt_order_items_in | ||
+ | order_partners = lt_order_partners | ||
+ | order_schedules_in = lt_order_schedules_in | ||
+ | order_conditions_in = lt_order_conditions_in | ||
+ | . | ||
+ | if o_salesdocument is not initial. | ||
+ | if i_commit = 'X'. | ||
+ | CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' | ||
+ | EXPORTING | ||
+ | WAIT = 'X' | ||
+ | * IMPORTING | ||
+ | * RETURN = | ||
+ | . | ||
+ | endif. | ||
+ | endif. | ||
+ | ENDFUNCTION. | ||
+ | |||
+ | FORM add_schedules using i_qty. "add schedules to item | ||
+ | LOOP AT lt_order_schedules_out INTO ls_schedules_out | ||
+ | WHERE itm_number = ls_item_out-itm_number | ||
+ | and DOC_NUMBER = ls_item_out-DOC_NUMBER | ||
+ | . | ||
+ | * ls_order_schedules_in-itm_number = ls_schedules_out-itm_number. | ||
+ | ls_order_schedules_in-itm_number = ld_item_number. | ||
+ | IF NOT i_qty IS INITIAL AND NOT ls_schedules_out-req_qty = 0. | ||
+ | ls_order_schedules_in-req_qty = i_qty. | ||
+ | ELSE. | ||
+ | ls_order_schedules_in-req_qty = ls_schedules_out-req_qty. | ||
+ | ENDIF. | ||
+ | ls_order_schedules_in-sched_line = ls_schedules_out-sched_line. | ||
+ | APPEND ls_order_schedules_in TO lt_order_schedules_in. | ||
+ | ENDLOOP. | ||
+ | IF sy-subrc <> 0. | ||
+ | ls_order_schedules_in-itm_number = ls_item_out-itm_number. | ||
+ | ls_order_schedules_in-sched_line = '001'. | ||
+ | ls_order_schedules_in-req_qty = i_qty. | ||
+ | APPEND ls_order_schedules_in TO lt_order_schedules_in. | ||
+ | ENDIF. | ||
+ | ENDFORM. " add_schedules | ||
+ | *&---------------------------------------------------------------------* | ||
+ | *& Form add_items | ||
+ | *&---------------------------------------------------------------------* | ||
+ | FORM add_items . | ||
+ | CONSTANTS: | ||
+ | kzvbr_e TYPE c VALUE 'E', " Einzelfertigung | ||
+ | vkgru_rep_reparaturanfo LIKE vbap-vkgru VALUE 'I01'. | ||
+ | * ls_order_items_in-itm_number = ls_item_out-itm_number. | ||
+ | * MOVE-CORRESPONDING ls_item_out to ls_order_items_in. | ||
+ | ls_order_items_in-itm_number = ld_item_number. | ||
+ | ls_order_items_in-material = ls_item_out-material. | ||
+ | * ls_order_items_in-ref_doc = pa_key. | ||
+ | ls_order_items_in-ref_doc = ls_item_out-DOC_NUMBER. | ||
+ | ls_order_items_in-ref_doc_it = ls_item_out-itm_number. | ||
+ | ls_order_items_in-ref_doc_ca = ls_header_out-sd_doc_cat. | ||
+ | ls_order_items_in-PLANT = ls_item_out-PLANT. "centro | ||
+ | ls_order_items_in-STore_LOC = ls_item_out-STGE_LOC. "almacen | ||
+ | ls_order_items_in-MAT_ENTRD = ls_item_out-MAT_ENTRD. "material introducido ; | ||
+ | ls_order_items_in-MATL_GROUP = ls_item_out-MATL_GROUP. "grupo de articulos; | ||
+ | ls_order_items_in-SHORT_TEXT = ls_item_out-SHORT_TEXT."Texto breve posición de pedido de cliente; | ||
+ | ls_order_items_in-VAL_TYPE = ls_item_out-VAL_TYPE ."clase de valoración; | ||
+ | ls_order_items_in-PROD_HIERa = ls_item_out-PROD_HIER."jerarquía de productos; | ||
+ | ls_order_items_in-PR_REF_MAT = ls_item_out-PR_REF_MAT. "Material determinante del precio; | ||
+ | * ls_order_items_in-BASE_UOM = ls_item_out-BASE_UOM."Unidad de medida base; | ||
+ | ls_order_items_in-SALES_UNIT = ls_item_out-SALES_UNIT . "Cantidad de pedido acumulada (en unidades de venta); | ||
+ | ls_order_items_in-SALQTYNUM = ls_item_out-SALES_QTY1. "Numerador (factor) p.conversión cantidad venta en UMA; | ||
+ | ls_order_items_in-SALQTYDEN = ls_item_out-SALES_QTY2. "Denominador (divisor) p.conversión ctd.venta en UMA; | ||
+ | * IF NOT ls_item_out-REPAIR_PRO EQ VKGRU_REP_REPARATURANFO. | ||
+ | * ls_order_items_in-REPAIR_PRO = ls_item_out-REPAIR_PRO. "Gestión de reparaciones: Clasificación de posiciones; | ||
+ | * ENDIF. | ||
+ | ls_order_items_in-dlvschduse = ls_item_out-DLVSCHEDUS. "Indicador de utilización; | ||
+ | IF NOT ls_item_out-DLV_GROUP IS INITIAL. | ||
+ | ls_order_items_in-DLV_GROUP = ls_item_out-DLV_GROUP . "Grupo de entrega (las pos.se entregan conjuntamente); | ||
+ | ENDIF. | ||
+ | ls_order_items_in-FIXED_QUAN = ls_item_out-FIXED_QUAN . "Cantidad fija; | ||
+ | * ls_order_items_in-REPLACE_PT = ls_item_out-REPLACE_PT. "Pieza de recambio; | ||
+ | * ls_order_items_in-METH_BILL = ls_item_out-METH_BILL. "Forma de facturación para órdenes RK/PPS; | ||
+ | ls_order_items_in-DIVISION = ls_item_out-DIVISION. "sector; | ||
+ | ls_order_items_in-CURRENCY = ls_item_out-CURRENCY. "Moneda de documento comercial; | ||
+ | IF NOT ls_item_out-PROFIT_CTR IS INITIAL. | ||
+ | ls_order_items_in-PROFIT_CTR = ls_item_out-PROFIT_CTR. "Centro de beneficio;PROFIT_CTR | ||
+ | ENDIF. | ||
+ | ls_order_items_in-ORDERID = ls_item_out-ORDERID. "Orden | ||
+ | if ls_item_out-WBS_ELEM is NOT INITIAL. | ||
+ | * ls_order_items_in-WBS_ELEM = ls_item_out-WBS_ELEM . "Elemento PEP | ||
+ | CALL FUNCTION 'CONVERSION_EXIT_ABPSP_OUTPUT' | ||
+ | EXPORTING | ||
+ | INPUT = ls_item_out-WBS_ELEM | ||
+ | IMPORTING | ||
+ | OUTPUT = ls_order_items_in-WBS_ELEM | ||
+ | . | ||
+ | endif. | ||
+ | * ls_order_items_in-NO_OF_SERI = ls_item_out-NO_OF_SERI. "Cantidad de números de serie; | ||
+ | * ls_order_items_in-SERNO_PROF = ls_item_out-SERNO_PROF. "Perfil de números de serie; | ||
+ | APPEND ls_order_items_in TO lt_order_items_in. | ||
+ | ENDFORM. " add_items | ||
+ | *&---------------------------------------------------------------------* | ||
+ | *& Form add_conditions | ||
+ | *&---------------------------------------------------------------------* | ||
+ | FORM add_conditions. " add conditions to item | ||
+ | LOOP AT lt_order_conditions_out INTO ls_conditions_out | ||
+ | WHERE itm_number = ls_item_out-itm_number | ||
+ | and sd_doc = ls_item_out-DOC_NUMBER | ||
+ | AND NOT cond_type IS INITIAL | ||
+ | . | ||
+ | CLEAR ls_order_conditions_in. | ||
+ | MOVE-CORRESPONDING ls_conditions_out TO ls_order_conditions_in. | ||
+ | ls_order_conditions_in-itm_number = ld_item_number. | ||
+ | ls_order_conditions_in-cond_unit = ls_conditions_out-cond_d_unt. | ||
+ | APPEND ls_order_conditions_in TO lt_order_conditions_in. | ||
+ | ENDLOOP. | ||
+ | ENDFORM. " add_conditions | ||
+ | *----------------------------------------------------------------------* | ||
+ | *&---------------------------------------------------------------------* | ||
+ | *& Form FILL_HEADER | ||
+ | *&---------------------------------------------------------------------* | ||
+ | * text | ||
+ | *----------------------------------------------------------------------* | ||
+ | * --> p1 text | ||
+ | * <-- p2 text | ||
+ | *----------------------------------------------------------------------* | ||
+ | FORM FILL_HEADER using i_auart | ||
+ | i_vbeln | ||
+ | i_version. | ||
+ | |||
+ | ls_order_header_in-doc_type = i_auart. | ||
+ | ls_order_header_in-sales_org = ls_header_out-sales_org. | ||
+ | ls_order_header_in-distr_chan = ls_header_out-distr_chan. | ||
+ | ls_order_header_in-division = ls_header_out-division. | ||
+ | * ls_order_header_in-ref_doc = ls_header_out-DOC_NUMBER. | ||
+ | * ls_order_header_in-purch_no_c = i_purno. | ||
+ | * ls_order_header_in-refdoc_cat = ls_header_out-sd_doc_cat. | ||
+ | ls_order_header_in-sales_off = ls_header_out-sales_off. "oficina de ventas | ||
+ | ls_order_header_in-sales_grp = ls_header_out-sales_grp. "grupo de vendedores | ||
+ | ls_order_header_in-WAR_DATE = ls_header_out-WAR_DATE. "Fecha límite de garantía | ||
+ | if ls_header_out-WBS_ELEM is not initial | ||
+ | and ls_header_out-WBS_ELEM ne '000000000'. | ||
+ | ls_order_header_in-WBS_ELEM = ls_header_out-WBS_ELEM. "Elemento del plan de estructura de proyecto (elemento PEP) | ||
+ | endif. | ||
+ | ls_order_header_in-COLLECT_NO = ls_header_out-SD_COL_NUM. "Nº de licitación (SD) | ||
+ | ls_order_header_in-DLV_BLOCK = ls_header_out-DLV_BLOCK. "Bloqueo de nota de entrega cabecera de documento | ||
+ | ls_order_header_in-ORD_REASON = ls_header_out-ORD_REASON. "Motivo de pedido (motivo de la operación) | ||
+ | ls_order_header_in-BILL_BLOCK = ls_header_out-BILL_BLOCK. "Bloqueo de clases de facturas para documento comercial | ||
+ | ls_order_header_in-CURRENCY = ls_header_out-CURRENCY. "Moneda de documento comercial | ||
+ | ls_order_header_in-COMPL_DLV = ls_header_out-COMPL_DLV. "¿Entrega completa por pedido? | ||
+ | if ls_header_out-REQ_DATE_H is not INITIAL. | ||
+ | ls_order_header_in-REQ_DATE_H = ls_header_out-REQ_DATE_H. "Fecha preferente de entrega | ||
+ | ls_order_header_in-DATE_TYPE = ls_header_out-DATE_TYPE. "Período propuesto para la fecha | ||
+ | endif. | ||
+ | ls_order_header_in-CUST_GRP1 = ls_header_out-CUST_GRP1. "Grupo de clientes 1 | ||
+ | ls_order_header_in-CUST_GRP2 = ls_header_out-CUST_GRP2. "Grupo de clientes 2 | ||
+ | ls_order_header_in-CUST_GRP3 = ls_header_out-CUST_GRP3. "Grupo de clientes 3 | ||
+ | ls_order_header_in-CUST_GRP4 = ls_header_out-CUST_GRP4. "Grupo de clientes 4 | ||
+ | ls_order_header_in-CUST_GRP5 = ls_header_out-CUST_GRP5. "Grupo de clientes 5 | ||
+ | ls_order_header_in-REF_DOC_L = ls_header_out-REF_DOC_L. "Número de documento de referencia | ||
+ | ls_order_header_in-REF_DOC = i_vbeln. | ||
+ | select SINGLE vbtyp into ls_order_header_in-refdoc_cat from vbrk | ||
+ | where vbeln = i_vbeln. | ||
+ | ls_order_header_in-ASS_NUMBER = ls_header_out-ASS_NUMBER. "Número de asignación | ||
+ | ls_order_header_in-ALTTAX_CLS = ls_header_out-ALT_TAX_CL. "Diferente clasificación fiscal | ||
+ | ls_order_header_in-TAX_CLASS2 = ls_header_out-TAX_CLASS2. "Clasificación fiscal cliente 2 | ||
+ | ls_order_header_in-TAX_CLASS3 = ls_header_out-TAX_CLASS3. "Clasificación fiscal cliente 3 | ||
+ | ls_order_header_in-TAX_CLASS4 = ls_header_out-TAX_CLASS4. "Clasificación fiscal cliente 4 | ||
+ | ls_order_header_in-TAX_CLASS5 = ls_header_out-TAX_CLASS5. "Clasificación fiscal cliente 5 | ||
+ | ls_order_header_in-TAX_CLASS6 = ls_header_out-TAX_CLASS6. "Clasificación fiscal cliente 6 | ||
+ | ls_order_header_in-TAX_CLASS7 = ls_header_out-TAX_CLASS7. "Clasificación fiscal cliente 7 | ||
+ | ls_order_header_in-TAX_CLASS8 = ls_header_out-TAX_CLASS8. "Clasificación fiscal cliente 8 | ||
+ | ls_order_header_in-TAX_CLASS9 = ls_header_out-TAX_CLASS9. "Clasificación fiscal cliente 9 | ||
+ | ls_order_header_in-EUTRI_DEAL = ls_header_out-EU_TRIANG. "Indicador: ¿operación triangular dentro de la UE? | ||
+ | ls_order_header_in-TAXDEP_CTY = ls_header_out-TAX_DEPART. "País de salida para la determinación de impuestos | ||
+ | ls_order_header_in-TAXDST_CTY = ls_header_out-TAX_DEST_CT. "País receptor fiscal | ||
+ | ls_order_header_in-DLVSCHDUSE = ls_header_out-DLVSCHEDUS. "Indicador de utilización | ||
+ | ls_order_header_in-version = i_version. | ||
+ | ls_ORDER_HEADER_IN-PURCH_NO_C = i_vbeln. | ||
+ | ls_ORDER_HEADER_IN-CUST_GROUP = '01'. | ||
+ | ENDFORM. " FILL_HEADER | ||
+ | *&---------------------------------------------------------------------* | ||
+ | *& Form FILL_HEADER_BUSINESS | ||
+ | *&---------------------------------------------------------------------* | ||
+ | * text | ||
+ | *----------------------------------------------------------------------* | ||
+ | * --> p1 text | ||
+ | * <-- p2 text | ||
+ | *----------------------------------------------------------------------* | ||
+ | FORM FILL_HEADER_BUSINESS . | ||
+ | * fill business data | ||
+ | IF NOT lt_order_business_out[] IS INITIAL. | ||
+ | READ TABLE lt_order_business_out INTO ls_business_out INDEX 1. | ||
+ | ls_order_header_in-ACCNT_ASGN = ls_business_out-ACCNT_ASGN. "Cuenta contrato | ||
+ | ls_order_header_in-FKK_CONACCT = ls_business_out-FKK_CONACCT. "grupo de Imputación | ||
+ | ls_order_header_in-PYMT_METH = ls_business_out-PAYMETHODE. "Vía de Pago | ||
+ | * = ls_business_out-POSTPERIOD Periodo Contable | ||
+ | * = ls_business_out-FISC_YEAR Ejercicio | ||
+ | ls_order_header_in-EXRATE_FI = ls_business_out-EXCHRATEFI. "Tipo de Cambio | ||
+ | ls_order_header_in-DUNN_KEY = ls_business_out-DUNN_KEY. "Clave de Reclamación | ||
+ | ls_order_header_in-DUNN_BLOCK = ls_business_out-DUNN_BLOCK. "Bloqueo de reclamación | ||
+ | ENDIF. | ||
+ | ENDFORM. " FILL_HEADER_BUSINESS | ||
+ | *&---------------------------------------------------------------------* | ||
+ | *& Form FILL_PARTNERS | ||
+ | *&---------------------------------------------------------------------* | ||
+ | * text | ||
+ | *----------------------------------------------------------------------* | ||
+ | * --> p1 text | ||
+ | * <-- p2 text | ||
+ | *----------------------------------------------------------------------* | ||
+ | FORM FILL_PARTNERS . | ||
+ | data ld_pn(10) type n. | ||
+ | loop at lt_order_partners_out INTO ls_order_partners_out | ||
+ | where SD_DOC = ls_header_out-doc_number | ||
+ | . | ||
+ | ls_order_partners-partn_role = ls_order_partners_out-partn_role. | ||
+ | ls_order_partners-partn_numb = ls_order_partners_out-customer. | ||
+ | if ls_order_partners_out-PERSON_NO is not INITIAL. | ||
+ | move ls_order_partners_out-PERSON_NO to ld_pn. | ||
+ | move ld_pn to ls_order_partners-partn_numb. | ||
+ | endif. | ||
+ | APPEND ls_order_partners TO lt_order_partners. | ||
+ | ENDloop. | ||
+ | ENDFORM. " FILL_PARTNERS | ||
+ | ********************************************************************************** | ||
+ | include ZSSO_RVADOR01_SIM_TOP. | ||
+ | DATA ls_bapi_view TYPE order_view. | ||
+ | DATA lt_salesdocuments TYPE TABLE OF sales_key. | ||
+ | DATA lt_order_headers_out TYPE TABLE OF bapisdhd. | ||
+ | DATA lt_order_items_out TYPE TABLE OF bapisdit. | ||
+ | DATA lt_order_schedules_out TYPE TABLE OF bapisdhedu. | ||
+ | DATA lt_order_conditions_out TYPE TABLE OF bapisdcond. | ||
+ | DATA lt_order_partners_out TYPE TABLE OF bapisdpart. | ||
+ | data lt_order_business_out type table of BAPISDBUSI. | ||
+ | DATA: lv_logic_switch TYPE bapisdls. | ||
+ | DATA lv_salesdocument TYPE bapivbeln-vbeln. | ||
+ | DATA lt_return TYPE TABLE OF bapiret2. | ||
+ | DATA lt_order_items_in TYPE TABLE OF bapisditm. | ||
+ | DATA lt_order_schedules_in TYPE TABLE OF bapischdl. | ||
+ | DATA lt_order_partners TYPE TABLE OF bapiparnr. | ||
+ | DATA lt_order_conditions_in TYPE TABLE OF bapicond. | ||
+ | data ls_salesdocuments type sales_key. | ||
+ | DATA: ls_return TYPE bapiret2. | ||
+ | DATA: ls_header_out TYPE bapisdhd. | ||
+ | DATA ls_order_header_in TYPE bapisdhd1. | ||
+ | DATA: ls_item_out TYPE bapisdit. | ||
+ | DATA: ls_order_items_in TYPE bapisditm. | ||
+ | DATA: ls_order_schedules_in TYPE bapischdl. | ||
+ | DATA: ls_schedules_out TYPE bapisdhedu. | ||
+ | DATA: ls_order_partners_out TYPE bapisdpart. | ||
+ | DATA: ls_order_partners TYPE bapiparnr. | ||
+ | DATA ls_order_conditions_in TYPE bapicond. | ||
+ | DATA: ls_conditions_out TYPE bapisdcond. | ||
+ | data ls_business_out type BAPISDBUSI. | ||
+ | data ld_item_number like ls_item_out-itm_number. | ||
+ | data ld_sales_key type sales_key. | ||
+ | ********************************************************************** | ||
+ | *&---------------------------------------------------------------------* | ||
+ | *& Include ZSSO_RVADOR01_SIM_TOP | ||
+ | *&---------------------------------------------------------------------* | ||
+ | *----------------------------------------------------------------------* | ||
+ | * DATA DECLARATION | ||
+ | *----------------------------------------------------------------------* | ||
+ | **CONSTANTS** | ||
+ | CONSTANTS: c_sapmv45a_xvbkd TYPE char40 VALUE '(SAPMV45A)XVBKD[]', | ||
+ | c_sapmv45a_xvbap TYPE char40 VALUE '(SAPMV45A)XVBAP[]', | ||
+ | c_initial TYPE posnr VALUE '000000', | ||
+ | c_end_date TYPE auszdat VALUE '99991231', | ||
+ | c_formname TYPE tdsfname VALUE 'ZSSO_RVADOR01_SIM', | ||
+ | c_waerk TYPE waerk VALUE 'CLP', | ||
+ | c_skfbt TYPE acfbt VALUE '0.00', | ||
+ | c_valtg TYPE valtg VALUE '00', | ||
+ | c_valdt TYPE valdt VALUE space, | ||
+ | c_true TYPE char1 VALUE 'X', | ||
+ | c_as01 TYPE dzterm VALUE 'AS01', | ||
+ | c_ts01 TYPE dzterm VALUE 'TS01', | ||
+ | c_id_z001 TYPE tdid VALUE 'Z001', | ||
+ | c_es TYPE spras VALUE 'S', | ||
+ | c_konp TYPE tdobject VALUE 'KONP', | ||
+ | c_01 TYPE char2 VALUE '01', | ||
+ | c_zint TYPE kscha VALUE 'ZINT'. | ||
+ | constants: c_sapmv45a_xKOMV TYPE char40 VALUE '(SAPMV45A)XKOMV[]'. | ||
+ | **TYPES** | ||
+ | TYPES: ty_sim TYPE zsso_sim_st, | ||
+ | ty_sim_hdr TYPE zsso_sim_hdr_st, | ||
+ | ty_sim_pos TYPE zsso_sim_pos_st, | ||
+ | ty_sim_ftr TYPE zsso_sim_ftr_st, | ||
+ | ty_vbdka TYPE vbdka, | ||
+ | ty_xvbkd TYPE vbkdvb, | ||
+ | ty_xvbap TYPE vbapvb, | ||
+ | ty_te418 TYPE te418. | ||
+ | TYPES: BEGIN OF ty_t052s, | ||
+ | ratnr TYPE ratnr, | ||
+ | ratpz TYPE ratpz, | ||
+ | ratzt TYPE ratzt, | ||
+ | END OF ty_t052s. | ||
+ | **TYPE TABLE** | ||
+ | TYPES: ty_t_sim_pos TYPE STANDARD TABLE OF ty_sim_pos, | ||
+ | ty_t_xvbkd TYPE STANDARD TABLE OF ty_xvbkd, | ||
+ | ty_t_xvbap TYPE STANDARD TABLE OF ty_xvbap, | ||
+ | ty_t_t052s TYPE STANDARD TABLE OF ty_t052s, | ||
+ | ty_t_tline TYPE STANDARD TABLE OF tline. | ||
+ | types: ty_t_xkomv TYPE STANDARD TABLE OF KOMV. | ||
+ | **DATA** | ||
+ | DATA: gt_xvbap TYPE ty_t_xvbap, | ||
+ | gt_t052s TYPE ty_t_t052s, | ||
+ | ga_sim TYPE ty_sim, | ||
+ | ga_xvbkd TYPE ty_xvbkd. | ||
+ | data gt_xkomv type ty_t_xkomv. | ||
+ | **********************************************************************</nowiki> |
Latest revision as of 15:14, 6 April 2020
Ejemplo 1
FORM f_pedido_venta USING i_kunnr i_werks CHANGING p_documento TYPE vbak-vbeln o_datos_pedido LIKE gt_datos_pedido[]. DATA: ls_header TYPE bapisdhd1, lt_partners TYPE STANDARD TABLE OF bapiparnr, ls_partner TYPE bapiparnr, lt_items TYPE STANDARD TABLE OF bapisditm, ls_item TYPE bapisditm, lt_schedule TYPE STANDARD TABLE OF bapischdl, ls_schedule TYPE bapischdl, lt_condiciones TYPE STANDARD TABLE OF bapicond, ls_condicion TYPE bapicond, lt_return TYPE STANDARD TABLE OF bapiret2, ls_return TYPE bapiret2, posicion(6) TYPE n. DATA detalle LIKE LINE OF o_datos_pedido. CLEAR: ls_header, lt_items[], lt_condiciones[], lt_partners[], lt_schedule[], lt_return[]. ls_header-doc_type = 'PSER'. ls_header-sales_org = 'PTG'. ls_header-distr_chan = 'PT'. ls_header-division = 'PT'. ls_header-req_date_h = sy-datlo. ls_partner-partn_role = 'AG'. ls_partner-partn_numb = i_kunnr. APPEND ls_partner TO lt_partners. posicion = '0'. LOOP AT o_datos_pedido INTO detalle. CLEAR: ls_item, ls_condicion, ls_schedule. posicion = posicion + 10. ls_item-itm_number = posicion. ls_item-material = detalle-matnr. ls_item-short_text = detalle-maktx. ls_item-plant = i_werks. APPEND ls_item TO lt_items. ls_condicion-itm_number = posicion. ls_condicion-cond_type = 'PCOND'. DATA ld_monto LIKE bapicurr-bapicurr. CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_EXTERNAL' EXPORTING currency = detalle-waerk amount_internal = detalle-kwert IMPORTING amount_external = ld_monto. ls_condicion-cond_value = ld_monto. ls_condicion-currency = detalle-waerk. APPEND ls_condicion TO lt_condiciones. ls_schedule-itm_number = posicion. ls_schedule-req_qty = detalle-menge. APPEND ls_schedule TO lt_schedule. ENDLOOP. CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2' EXPORTING order_header_in = ls_header behave_when_error = space IMPORTING salesdocument = p_documento TABLES return = lt_return order_items_in = lt_items order_partners = lt_partners order_schedules_in = lt_schedule order_conditions_in = lt_condiciones. IF p_documento IS NOT INITIAL. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X' IMPORTING return = ls_return. * Pedido de Venta grabado MESSAGE ID 'V1' TYPE 'S' NUMBER '311' WITH 'Pedido de Venta'(s01) p_documento. ELSE. LOOP AT lt_return INTO ls_return WHERE type = 'E'. MESSAGE ID ls_return-id TYPE ls_return-type NUMBER ls_return-number WITH ls_return-message_v1 ls_return-message_v2 ls_return-message_v3 ls_return-message_v4. EXIT. ENDLOOP. ENDIF. ENDFORM. "f_pedido_venta
Crear pedido con referencia a factura
En SAP no existe una BAPI para crear una orden de venta con referencia a otros documentos, como otros pedidos, ofertas, etc. Solución ver Nota SAP 370988
FUNCTION Z_SD_CREA_PEDIDO_CON_REF_FACT. *"---------------------------------------------------------------------- *"*"Interfase local *" IMPORTING *" REFERENCE(I_AUART) LIKE VBAK-AUART DEFAULT 'ZFIN' *" REFERENCE(I_VBELN) LIKE VBRK-VBELN *" REFERENCE(I_MONTO) TYPE ACBTR *" REFERENCE(I_WAERS) TYPE WAERS *" REFERENCE(I_COMMIT) TYPE CHAR1 DEFAULT SPACE *" REFERENCE(I_VERSION) TYPE VSNMR_V OPTIONAL *" EXPORTING *" REFERENCE(O_SALESDOCUMENT) LIKE BAPIVBELN-VBELN *" TABLES *" I_T_SALESDOCUMENTS STRUCTURE SALES_KEY OPTIONAL *" O_T_RETURN STRUCTURE BAPIRET2 OPTIONAL *"---------------------------------------------------------------------- ls_bapi_view-header = 'X'. ls_bapi_view-item = 'X'. ls_bapi_view-sdschedule = 'X'. ls_bapi_view-sdcond = 'X'. ls_bapi_view-partner = 'X'. ls_bapi_view-BUSINESS = 'X'. select single aubel into ls_salesdocuments from vbrp where vbeln = i_vbeln. append ls_salesdocuments to lt_salesdocuments. CALL FUNCTION 'BAPISDORDER_GETDETAILEDLIST' EXPORTING i_bapi_view = ls_bapi_view * I_MEMORY_READ = TABLES sales_documents = lt_salesdocuments order_headers_out = lt_order_headers_out order_items_out = lt_order_items_out order_schedules_out = lt_order_schedules_out order_partners_out = lt_order_partners_out order_conditions_out = lt_order_conditions_out order_business_out = lt_order_business_out . ************************************************************************ ** PREPARE DATA clear lt_order_items_in[]. clear lt_order_partners[]. clear lt_order_schedules_in[]. clear lt_order_conditions_in[]. * fill header data IF NOT lt_order_headers_out[] IS INITIAL. READ TABLE lt_order_headers_out INTO ls_header_out INDEX 1. * fill header data perform fill_header using i_auart i_vbeln i_version. * fill header business data perform fill_header_business. * fill partner data perform fill_partners. endif. * ORDER_ITEMS_IN select single matnr werks zterm from ZSD_MAT_INTERES into (ls_order_items_in-material, ls_order_items_in-plant, ls_order_header_in-PMNTTRMS) where vkorg = ls_header_out-SALES_ORG. ls_order_items_in-po_itm_no = '0010'. * ls_order_items_in-material = '000000000000040383'. * ls_order_items_in-plant = '700P'. APPEND ls_order_items_in TO lt_order_items_in. * ORDER_SCHEDULE_IN ls_order_schedules_in-itm_number = '0010'. ls_order_schedules_in-req_qty = '1'. APPEND ls_order_schedules_in TO lt_order_schedules_in. * ORDER_CONDITIONS_IN ls_order_conditions_in-itm_number = '0010'. ls_order_conditions_in-cond_type = 'ZFIN'. ls_order_conditions_in-cond_value = i_monto. ls_order_conditions_in-currency = i_waers. APPEND ls_order_conditions_in TO lt_order_conditions_in. *fill logic switch * lv_logic_switch-pricing = i_prart. clear o_t_return[]. CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2' EXPORTING * SALESDOCUMENTIN = order_header_in = ls_order_header_in logic_switch = lv_logic_switch IMPORTING salesdocument = o_salesdocument TABLES return = o_t_return order_items_in = lt_order_items_in order_partners = lt_order_partners order_schedules_in = lt_order_schedules_in order_conditions_in = lt_order_conditions_in . if o_salesdocument is not initial. if i_commit = 'X'. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING WAIT = 'X' * IMPORTING * RETURN = . endif. endif. ENDFUNCTION. FORM add_schedules using i_qty. "add schedules to item LOOP AT lt_order_schedules_out INTO ls_schedules_out WHERE itm_number = ls_item_out-itm_number and DOC_NUMBER = ls_item_out-DOC_NUMBER . * ls_order_schedules_in-itm_number = ls_schedules_out-itm_number. ls_order_schedules_in-itm_number = ld_item_number. IF NOT i_qty IS INITIAL AND NOT ls_schedules_out-req_qty = 0. ls_order_schedules_in-req_qty = i_qty. ELSE. ls_order_schedules_in-req_qty = ls_schedules_out-req_qty. ENDIF. ls_order_schedules_in-sched_line = ls_schedules_out-sched_line. APPEND ls_order_schedules_in TO lt_order_schedules_in. ENDLOOP. IF sy-subrc <> 0. ls_order_schedules_in-itm_number = ls_item_out-itm_number. ls_order_schedules_in-sched_line = '001'. ls_order_schedules_in-req_qty = i_qty. APPEND ls_order_schedules_in TO lt_order_schedules_in. ENDIF. ENDFORM. " add_schedules *&---------------------------------------------------------------------* *& Form add_items *&---------------------------------------------------------------------* FORM add_items . CONSTANTS: kzvbr_e TYPE c VALUE 'E', " Einzelfertigung vkgru_rep_reparaturanfo LIKE vbap-vkgru VALUE 'I01'. * ls_order_items_in-itm_number = ls_item_out-itm_number. * MOVE-CORRESPONDING ls_item_out to ls_order_items_in. ls_order_items_in-itm_number = ld_item_number. ls_order_items_in-material = ls_item_out-material. * ls_order_items_in-ref_doc = pa_key. ls_order_items_in-ref_doc = ls_item_out-DOC_NUMBER. ls_order_items_in-ref_doc_it = ls_item_out-itm_number. ls_order_items_in-ref_doc_ca = ls_header_out-sd_doc_cat. ls_order_items_in-PLANT = ls_item_out-PLANT. "centro ls_order_items_in-STore_LOC = ls_item_out-STGE_LOC. "almacen ls_order_items_in-MAT_ENTRD = ls_item_out-MAT_ENTRD. "material introducido ; ls_order_items_in-MATL_GROUP = ls_item_out-MATL_GROUP. "grupo de articulos; ls_order_items_in-SHORT_TEXT = ls_item_out-SHORT_TEXT."Texto breve posición de pedido de cliente; ls_order_items_in-VAL_TYPE = ls_item_out-VAL_TYPE ."clase de valoración; ls_order_items_in-PROD_HIERa = ls_item_out-PROD_HIER."jerarquía de productos; ls_order_items_in-PR_REF_MAT = ls_item_out-PR_REF_MAT. "Material determinante del precio; * ls_order_items_in-BASE_UOM = ls_item_out-BASE_UOM."Unidad de medida base; ls_order_items_in-SALES_UNIT = ls_item_out-SALES_UNIT . "Cantidad de pedido acumulada (en unidades de venta); ls_order_items_in-SALQTYNUM = ls_item_out-SALES_QTY1. "Numerador (factor) p.conversión cantidad venta en UMA; ls_order_items_in-SALQTYDEN = ls_item_out-SALES_QTY2. "Denominador (divisor) p.conversión ctd.venta en UMA; * IF NOT ls_item_out-REPAIR_PRO EQ VKGRU_REP_REPARATURANFO. * ls_order_items_in-REPAIR_PRO = ls_item_out-REPAIR_PRO. "Gestión de reparaciones: Clasificación de posiciones; * ENDIF. ls_order_items_in-dlvschduse = ls_item_out-DLVSCHEDUS. "Indicador de utilización; IF NOT ls_item_out-DLV_GROUP IS INITIAL. ls_order_items_in-DLV_GROUP = ls_item_out-DLV_GROUP . "Grupo de entrega (las pos.se entregan conjuntamente); ENDIF. ls_order_items_in-FIXED_QUAN = ls_item_out-FIXED_QUAN . "Cantidad fija; * ls_order_items_in-REPLACE_PT = ls_item_out-REPLACE_PT. "Pieza de recambio; * ls_order_items_in-METH_BILL = ls_item_out-METH_BILL. "Forma de facturación para órdenes RK/PPS; ls_order_items_in-DIVISION = ls_item_out-DIVISION. "sector; ls_order_items_in-CURRENCY = ls_item_out-CURRENCY. "Moneda de documento comercial; IF NOT ls_item_out-PROFIT_CTR IS INITIAL. ls_order_items_in-PROFIT_CTR = ls_item_out-PROFIT_CTR. "Centro de beneficio;PROFIT_CTR ENDIF. ls_order_items_in-ORDERID = ls_item_out-ORDERID. "Orden if ls_item_out-WBS_ELEM is NOT INITIAL. * ls_order_items_in-WBS_ELEM = ls_item_out-WBS_ELEM . "Elemento PEP CALL FUNCTION 'CONVERSION_EXIT_ABPSP_OUTPUT' EXPORTING INPUT = ls_item_out-WBS_ELEM IMPORTING OUTPUT = ls_order_items_in-WBS_ELEM . endif. * ls_order_items_in-NO_OF_SERI = ls_item_out-NO_OF_SERI. "Cantidad de números de serie; * ls_order_items_in-SERNO_PROF = ls_item_out-SERNO_PROF. "Perfil de números de serie; APPEND ls_order_items_in TO lt_order_items_in. ENDFORM. " add_items *&---------------------------------------------------------------------* *& Form add_conditions *&---------------------------------------------------------------------* FORM add_conditions. " add conditions to item LOOP AT lt_order_conditions_out INTO ls_conditions_out WHERE itm_number = ls_item_out-itm_number and sd_doc = ls_item_out-DOC_NUMBER AND NOT cond_type IS INITIAL . CLEAR ls_order_conditions_in. MOVE-CORRESPONDING ls_conditions_out TO ls_order_conditions_in. ls_order_conditions_in-itm_number = ld_item_number. ls_order_conditions_in-cond_unit = ls_conditions_out-cond_d_unt. APPEND ls_order_conditions_in TO lt_order_conditions_in. ENDLOOP. ENDFORM. " add_conditions *----------------------------------------------------------------------* *&---------------------------------------------------------------------* *& Form FILL_HEADER *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM FILL_HEADER using i_auart i_vbeln i_version. ls_order_header_in-doc_type = i_auart. ls_order_header_in-sales_org = ls_header_out-sales_org. ls_order_header_in-distr_chan = ls_header_out-distr_chan. ls_order_header_in-division = ls_header_out-division. * ls_order_header_in-ref_doc = ls_header_out-DOC_NUMBER. * ls_order_header_in-purch_no_c = i_purno. * ls_order_header_in-refdoc_cat = ls_header_out-sd_doc_cat. ls_order_header_in-sales_off = ls_header_out-sales_off. "oficina de ventas ls_order_header_in-sales_grp = ls_header_out-sales_grp. "grupo de vendedores ls_order_header_in-WAR_DATE = ls_header_out-WAR_DATE. "Fecha límite de garantía if ls_header_out-WBS_ELEM is not initial and ls_header_out-WBS_ELEM ne '000000000'. ls_order_header_in-WBS_ELEM = ls_header_out-WBS_ELEM. "Elemento del plan de estructura de proyecto (elemento PEP) endif. ls_order_header_in-COLLECT_NO = ls_header_out-SD_COL_NUM. "Nº de licitación (SD) ls_order_header_in-DLV_BLOCK = ls_header_out-DLV_BLOCK. "Bloqueo de nota de entrega cabecera de documento ls_order_header_in-ORD_REASON = ls_header_out-ORD_REASON. "Motivo de pedido (motivo de la operación) ls_order_header_in-BILL_BLOCK = ls_header_out-BILL_BLOCK. "Bloqueo de clases de facturas para documento comercial ls_order_header_in-CURRENCY = ls_header_out-CURRENCY. "Moneda de documento comercial ls_order_header_in-COMPL_DLV = ls_header_out-COMPL_DLV. "¿Entrega completa por pedido? if ls_header_out-REQ_DATE_H is not INITIAL. ls_order_header_in-REQ_DATE_H = ls_header_out-REQ_DATE_H. "Fecha preferente de entrega ls_order_header_in-DATE_TYPE = ls_header_out-DATE_TYPE. "Período propuesto para la fecha endif. ls_order_header_in-CUST_GRP1 = ls_header_out-CUST_GRP1. "Grupo de clientes 1 ls_order_header_in-CUST_GRP2 = ls_header_out-CUST_GRP2. "Grupo de clientes 2 ls_order_header_in-CUST_GRP3 = ls_header_out-CUST_GRP3. "Grupo de clientes 3 ls_order_header_in-CUST_GRP4 = ls_header_out-CUST_GRP4. "Grupo de clientes 4 ls_order_header_in-CUST_GRP5 = ls_header_out-CUST_GRP5. "Grupo de clientes 5 ls_order_header_in-REF_DOC_L = ls_header_out-REF_DOC_L. "Número de documento de referencia ls_order_header_in-REF_DOC = i_vbeln. select SINGLE vbtyp into ls_order_header_in-refdoc_cat from vbrk where vbeln = i_vbeln. ls_order_header_in-ASS_NUMBER = ls_header_out-ASS_NUMBER. "Número de asignación ls_order_header_in-ALTTAX_CLS = ls_header_out-ALT_TAX_CL. "Diferente clasificación fiscal ls_order_header_in-TAX_CLASS2 = ls_header_out-TAX_CLASS2. "Clasificación fiscal cliente 2 ls_order_header_in-TAX_CLASS3 = ls_header_out-TAX_CLASS3. "Clasificación fiscal cliente 3 ls_order_header_in-TAX_CLASS4 = ls_header_out-TAX_CLASS4. "Clasificación fiscal cliente 4 ls_order_header_in-TAX_CLASS5 = ls_header_out-TAX_CLASS5. "Clasificación fiscal cliente 5 ls_order_header_in-TAX_CLASS6 = ls_header_out-TAX_CLASS6. "Clasificación fiscal cliente 6 ls_order_header_in-TAX_CLASS7 = ls_header_out-TAX_CLASS7. "Clasificación fiscal cliente 7 ls_order_header_in-TAX_CLASS8 = ls_header_out-TAX_CLASS8. "Clasificación fiscal cliente 8 ls_order_header_in-TAX_CLASS9 = ls_header_out-TAX_CLASS9. "Clasificación fiscal cliente 9 ls_order_header_in-EUTRI_DEAL = ls_header_out-EU_TRIANG. "Indicador: ¿operación triangular dentro de la UE? ls_order_header_in-TAXDEP_CTY = ls_header_out-TAX_DEPART. "País de salida para la determinación de impuestos ls_order_header_in-TAXDST_CTY = ls_header_out-TAX_DEST_CT. "País receptor fiscal ls_order_header_in-DLVSCHDUSE = ls_header_out-DLVSCHEDUS. "Indicador de utilización ls_order_header_in-version = i_version. ls_ORDER_HEADER_IN-PURCH_NO_C = i_vbeln. ls_ORDER_HEADER_IN-CUST_GROUP = '01'. ENDFORM. " FILL_HEADER *&---------------------------------------------------------------------* *& Form FILL_HEADER_BUSINESS *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM FILL_HEADER_BUSINESS . * fill business data IF NOT lt_order_business_out[] IS INITIAL. READ TABLE lt_order_business_out INTO ls_business_out INDEX 1. ls_order_header_in-ACCNT_ASGN = ls_business_out-ACCNT_ASGN. "Cuenta contrato ls_order_header_in-FKK_CONACCT = ls_business_out-FKK_CONACCT. "grupo de Imputación ls_order_header_in-PYMT_METH = ls_business_out-PAYMETHODE. "Vía de Pago * = ls_business_out-POSTPERIOD Periodo Contable * = ls_business_out-FISC_YEAR Ejercicio ls_order_header_in-EXRATE_FI = ls_business_out-EXCHRATEFI. "Tipo de Cambio ls_order_header_in-DUNN_KEY = ls_business_out-DUNN_KEY. "Clave de Reclamación ls_order_header_in-DUNN_BLOCK = ls_business_out-DUNN_BLOCK. "Bloqueo de reclamación ENDIF. ENDFORM. " FILL_HEADER_BUSINESS *&---------------------------------------------------------------------* *& Form FILL_PARTNERS *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM FILL_PARTNERS . data ld_pn(10) type n. loop at lt_order_partners_out INTO ls_order_partners_out where SD_DOC = ls_header_out-doc_number . ls_order_partners-partn_role = ls_order_partners_out-partn_role. ls_order_partners-partn_numb = ls_order_partners_out-customer. if ls_order_partners_out-PERSON_NO is not INITIAL. move ls_order_partners_out-PERSON_NO to ld_pn. move ld_pn to ls_order_partners-partn_numb. endif. APPEND ls_order_partners TO lt_order_partners. ENDloop. ENDFORM. " FILL_PARTNERS ********************************************************************************** include ZSSO_RVADOR01_SIM_TOP. DATA ls_bapi_view TYPE order_view. DATA lt_salesdocuments TYPE TABLE OF sales_key. DATA lt_order_headers_out TYPE TABLE OF bapisdhd. DATA lt_order_items_out TYPE TABLE OF bapisdit. DATA lt_order_schedules_out TYPE TABLE OF bapisdhedu. DATA lt_order_conditions_out TYPE TABLE OF bapisdcond. DATA lt_order_partners_out TYPE TABLE OF bapisdpart. data lt_order_business_out type table of BAPISDBUSI. DATA: lv_logic_switch TYPE bapisdls. DATA lv_salesdocument TYPE bapivbeln-vbeln. DATA lt_return TYPE TABLE OF bapiret2. DATA lt_order_items_in TYPE TABLE OF bapisditm. DATA lt_order_schedules_in TYPE TABLE OF bapischdl. DATA lt_order_partners TYPE TABLE OF bapiparnr. DATA lt_order_conditions_in TYPE TABLE OF bapicond. data ls_salesdocuments type sales_key. DATA: ls_return TYPE bapiret2. DATA: ls_header_out TYPE bapisdhd. DATA ls_order_header_in TYPE bapisdhd1. DATA: ls_item_out TYPE bapisdit. DATA: ls_order_items_in TYPE bapisditm. DATA: ls_order_schedules_in TYPE bapischdl. DATA: ls_schedules_out TYPE bapisdhedu. DATA: ls_order_partners_out TYPE bapisdpart. DATA: ls_order_partners TYPE bapiparnr. DATA ls_order_conditions_in TYPE bapicond. DATA: ls_conditions_out TYPE bapisdcond. data ls_business_out type BAPISDBUSI. data ld_item_number like ls_item_out-itm_number. data ld_sales_key type sales_key. ********************************************************************** *&---------------------------------------------------------------------* *& Include ZSSO_RVADOR01_SIM_TOP *&---------------------------------------------------------------------* *----------------------------------------------------------------------* * DATA DECLARATION *----------------------------------------------------------------------* **CONSTANTS** CONSTANTS: c_sapmv45a_xvbkd TYPE char40 VALUE '(SAPMV45A)XVBKD[]', c_sapmv45a_xvbap TYPE char40 VALUE '(SAPMV45A)XVBAP[]', c_initial TYPE posnr VALUE '000000', c_end_date TYPE auszdat VALUE '99991231', c_formname TYPE tdsfname VALUE 'ZSSO_RVADOR01_SIM', c_waerk TYPE waerk VALUE 'CLP', c_skfbt TYPE acfbt VALUE '0.00', c_valtg TYPE valtg VALUE '00', c_valdt TYPE valdt VALUE space, c_true TYPE char1 VALUE 'X', c_as01 TYPE dzterm VALUE 'AS01', c_ts01 TYPE dzterm VALUE 'TS01', c_id_z001 TYPE tdid VALUE 'Z001', c_es TYPE spras VALUE 'S', c_konp TYPE tdobject VALUE 'KONP', c_01 TYPE char2 VALUE '01', c_zint TYPE kscha VALUE 'ZINT'. constants: c_sapmv45a_xKOMV TYPE char40 VALUE '(SAPMV45A)XKOMV[]'. **TYPES** TYPES: ty_sim TYPE zsso_sim_st, ty_sim_hdr TYPE zsso_sim_hdr_st, ty_sim_pos TYPE zsso_sim_pos_st, ty_sim_ftr TYPE zsso_sim_ftr_st, ty_vbdka TYPE vbdka, ty_xvbkd TYPE vbkdvb, ty_xvbap TYPE vbapvb, ty_te418 TYPE te418. TYPES: BEGIN OF ty_t052s, ratnr TYPE ratnr, ratpz TYPE ratpz, ratzt TYPE ratzt, END OF ty_t052s. **TYPE TABLE** TYPES: ty_t_sim_pos TYPE STANDARD TABLE OF ty_sim_pos, ty_t_xvbkd TYPE STANDARD TABLE OF ty_xvbkd, ty_t_xvbap TYPE STANDARD TABLE OF ty_xvbap, ty_t_t052s TYPE STANDARD TABLE OF ty_t052s, ty_t_tline TYPE STANDARD TABLE OF tline. types: ty_t_xkomv TYPE STANDARD TABLE OF KOMV. **DATA** DATA: gt_xvbap TYPE ty_t_xvbap, gt_t052s TYPE ty_t_t052s, ga_sim TYPE ty_sim, ga_xvbkd TYPE ty_xvbkd. data gt_xkomv type ty_t_xkomv. **********************************************************************