Difference between revisions of "SAP MM BAPI"
From SapWiki
(3 intermediate revisions by the same user not shown) | |||
Line 4: | Line 4: | ||
==[[SAP_MM_BAPI_BOM|Crear Lista de Material CS01]]== | ==[[SAP_MM_BAPI_BOM|Crear Lista de Material CS01]]== | ||
== Crear una entrega de Pedido de traslado VL10B, contabilizarla y realizar picking== | == Crear una entrega de Pedido de traslado VL10B, contabilizarla y realizar picking== | ||
− | <nowiki> *&---------------------------------------------------------------------* | + | <nowiki>*&---------------------------------------------------------------------* |
− | + | *& Form CREAR_ENTREGA | |
− | + | *&---------------------------------------------------------------------* | |
− | + | * Crear una entrega de Pedido de traslado VL10B | |
− | + | *----------------------------------------------------------------------* | |
− | + | * --> p1 text | |
− | + | * <-- p2 text | |
− | + | *----------------------------------------------------------------------* | |
− | + | FORM CREAR_ENTREGA using p_ebeln | |
− | + | CHANGING p_entrega | |
− | + | p_cont. | |
− | + | * Crear una entrega de Pedido de traslado VL10B | |
− | + | DATA: begin of lt_ekpo occurs 1. | |
− | + | include structure ekpo. | |
− | + | data n_doc type i. | |
− | + | data end of lt_ekpo. | |
− | + | ||
− | + | data : begin of lt_entregas occurs 1, | |
− | + | vbeln type vbeln, | |
− | + | num type i, | |
− | + | end of lt_entregas. | |
− | + | ||
− | + | data: lt_stock_trans_items like BAPIDLVREFTOSTO occurs 0 with header line, | |
− | + | lt_return like BAPIRET2 occurs 0 with header line, | |
− | + | l_ship_point like BAPIDLVCREATEHEADER-SHIP_POINT, | |
− | + | l_due_date like BAPIDLVCREATEHEADER-DUE_DATE, | |
− | + | l_delivery like BAPISHPDELIVNUMB-DELIV_NUMB. | |
− | + | ||
− | + | data: lt_DELIVERIES like BAPISHPDELIVNUMB occurs 0 with header line, | |
− | + | lt_CREATED_ITEMS like BAPIDLVITEMCREATED occurs 0 with header line. | |
− | + | data: ls_vbkok like vbkok, | |
− | + | lt_vbpok like vbpok occurs 0 with header line, | |
− | + | lt_prot like prott occurs 0 with header line, | |
− | + | ||
+ | l_error_any_0 type c length 1, | ||
+ | l_error_in_item_deletion_0 type c length 1, | ||
+ | l_error_in_pod_update_0 type c length 1, | ||
+ | l_error_in_interface_0 type c length 1, | ||
+ | l_error_in_goods_issue_0 type c length 1, | ||
+ | l_error_in_final_check_0 type c length 1, | ||
+ | l_error_partner_update type c length 1, | ||
+ | l_error_sernr_update type c length 1. | ||
+ | |||
+ | SELECT SINGLE vstel | ||
+ | FROM ekpv | ||
+ | INTO l_ship_point | ||
+ | WHERE ebeln EQ p_ebeln. | ||
+ | |||
+ | SELECT * | ||
+ | FROM ekpo UP TO 1 ROWS | ||
+ | INTO table lt_ekpo | ||
+ | WHERE ebeln EQ p_ebeln | ||
+ | ORDER BY ebelp. | ||
+ | |||
+ | ********************************************************************** | ||
+ | * crear entrega | ||
+ | ********************************************************************** | ||
+ | IF p_entrega IS INITIAL. | ||
+ | |||
+ | REFRESH lt_stock_trans_items. | ||
+ | |||
+ | LOOP AT lt_ekpo. | ||
+ | CLEAR lt_stock_trans_items. | ||
+ | lt_stock_trans_items-ref_doc = lt_ekpo-ebeln. | ||
+ | lt_stock_trans_items-ref_item = lt_ekpo-ebelp. | ||
+ | lt_stock_trans_items-dlv_qty = lt_ekpo-menge. | ||
+ | lt_stock_trans_items-sales_unit = lt_ekpo-meins. | ||
+ | APPEND lt_stock_trans_items. | ||
+ | ENDLOOP. | ||
+ | |||
+ | CALL FUNCTION 'BAPI_OUTB_DELIVERY_CREATE_STO' | ||
+ | EXPORTING | ||
+ | ship_point = l_ship_point | ||
+ | due_date = sy-datum | ||
+ | IMPORTING | ||
+ | delivery = l_delivery | ||
+ | TABLES | ||
+ | stock_trans_items = lt_stock_trans_items | ||
+ | DELIVERIES = lt_DELIVERIES | ||
+ | CREATED_ITEMS = lt_CREATED_ITEMS | ||
+ | RETURN = lt_return. | ||
+ | |||
+ | IF l_delivery IS INITIAL. | ||
+ | LOOP AT lt_return WHERE TYPE EQ 'E'. | ||
+ | MESSAGE ID lt_return-ID TYPE 'I' NUMBER lt_return-NUMBER WITH | ||
+ | lt_return-MESSAGE_V1 | ||
+ | lt_return-MESSAGE_V2 | ||
+ | lt_return-MESSAGE_V3 | ||
+ | lt_return-MESSAGE_V4 INTO g_message. | ||
+ | |||
+ | PERFORM add_news USING 'Creación de entrega:' icon_red_light. | ||
+ | wa_data-stat = icon_red_light. | ||
+ | |||
+ | ENDLOOP. | ||
+ | |||
+ | ELSE. | ||
+ | CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' | ||
+ | EXPORTING | ||
+ | WAIT = 'X'. | ||
+ | . | ||
+ | p_entrega = l_delivery. | ||
+ | MESSAGE s000(0k) WITH l_delivery 'creada con éxito' INTO g_message. | ||
+ | PERFORM add_news USING 'Creación de entrega:' icon_green_light. | ||
+ | wa_data-stat = icon_green_light. | ||
+ | ENDIF. | ||
+ | |||
+ | * Entrega creada asigna en ITAB. | ||
+ | LOOP AT lt_CREATED_ITEMS. | ||
+ | lt_entregas-vbeln = lt_CREATED_ITEMS-DELIV_NUMB. | ||
+ | lt_entregas-num = 1. | ||
+ | COLLECT lt_entregas. | ||
+ | ENDLOOP. | ||
+ | |||
+ | ELSE. | ||
+ | l_delivery = p_entrega. | ||
+ | lt_entregas-vbeln = l_delivery. | ||
+ | lt_entregas-num = 1. | ||
+ | COLLECT lt_entregas. | ||
+ | ENDIF. | ||
+ | |||
+ | *--------------------------------------------------------------------* | ||
+ | * contabiliza SM & picking entregas. | ||
+ | *--------------------------------------------------------------------* | ||
+ | DATA lt_return2 TYPE bapiret2_t. | ||
+ | DATA lt_lips TYPE TABLE OF lips WITH HEADER LINE. | ||
+ | DATA: ls_data TYPE bapiobdlvhdrchg, | ||
+ | ls_control TYPE bapiobdlvhdrctrlchg, | ||
+ | lt_item_control TYPE TABLE OF bapiobdlvitemctrlchg WITH HEADER LINE, | ||
+ | lt_item_data TYPE TABLE OF bapiobdlvitemchg WITH HEADER LINE, | ||
+ | lt_item_spl TYPE TABLE OF /spe/bapiobdlvitemchg WITH HEADER LINE, | ||
+ | ls_techn_control TYPE bapidlvcontrol. | ||
+ | |||
+ | loop at lt_entregas. | ||
+ | REFRESH lt_return. | ||
+ | |||
+ | * modificar entrega | ||
+ | REFRESH lt_lips. | ||
+ | * si no tiene almacen => actualizar con almacén de origen | ||
+ | select * into TABLE lt_lips from lips where vbeln = l_delivery and lgort = space. | ||
+ | IF sy-subrc = 0. | ||
+ | LOOP AT lt_lips. | ||
+ | lt_item_spl-deliv_numb = lt_lips-vbeln. | ||
+ | lt_item_spl-deliv_item = lt_lips-posnr. | ||
+ | lt_item_control-deliv_numb = lt_lips-vbeln. | ||
+ | lt_item_control-deliv_item = lt_lips-posnr. | ||
+ | lt_item_data-deliv_numb = lt_lips-vbeln. | ||
+ | lt_item_data-deliv_item = lt_lips-posnr. | ||
+ | lt_item_data-dlv_qty = lt_lips-lfimg. | ||
+ | lt_item_spl-stge_loc = wa_data-lgort_ori. "almacén de origen | ||
+ | lt_item_data-material = lt_lips-matnr. | ||
+ | lt_item_data-fact_unit_nom = lt_lips-umvkz. | ||
+ | lt_item_data-fact_unit_denom = lt_lips-umvkn. | ||
+ | lt_item_data-base_uom = lt_lips-meins. | ||
+ | lt_item_data-sales_unit = lt_lips-vrkme. | ||
+ | |||
+ | APPEND lt_item_spl. | ||
+ | APPEND lt_item_control. | ||
+ | APPEND lt_item_data. | ||
+ | ENDLOOP. | ||
+ | |||
+ | *—–> modificar la entrega | ||
+ | ls_data-deliv_numb = l_delivery. | ||
+ | ls_control-deliv_numb = l_delivery. | ||
+ | ls_techn_control-upd_ind = 'U'. | ||
+ | |||
+ | CALL FUNCTION 'BAPI_OUTB_DELIVERY_CHANGE' | ||
+ | EXPORTING | ||
+ | header_data = ls_data | ||
+ | header_control = ls_control | ||
+ | delivery = l_delivery | ||
+ | techn_control = ls_techn_control | ||
+ | TABLES | ||
+ | item_data = lt_item_data[] | ||
+ | item_control = lt_item_control[] | ||
+ | RETURN = lt_return | ||
+ | item_data_spl = lt_item_spl[] | ||
+ | . | ||
+ | |||
+ | LOOP AT lt_return WHERE TYPE = 'E'. | ||
+ | MOVE lt_return-MESSAGE TO g_message. | ||
+ | PERFORM add_news USING 'Modif. Almacén de Entrega:' icon_red_light. | ||
+ | wa_data-stat = icon_red_light. | ||
+ | EXIT. | ||
+ | ENDLOOP. | ||
+ | IF sy-subrc = 0. | ||
+ | CONTINUE. | ||
+ | ELSE. | ||
+ | CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' | ||
+ | EXPORTING | ||
+ | WAIT = 'X'. | ||
+ | ENDIF. | ||
+ | ENDIF. | ||
+ | |||
+ | l_delivery = lt_entregas-vbeln. | ||
+ | ls_vbkok-vbeln_vl = l_delivery. | ||
+ | ls_vbkok-wabuc = 'X'. "contabilizar Salida merc. | ||
+ | |||
+ | SELECT vbeln AS vbeln_vl | ||
+ | posnr AS posnr_vl | ||
+ | matnr | ||
+ | charg | ||
+ | lfimg | ||
+ | lgmng | ||
+ | umvkz | ||
+ | umvkn | ||
+ | vrkme | ||
+ | meins | ||
+ | werks FROM lips | ||
+ | INTO CORRESPONDING FIELDS OF TABLE lt_vbpok | ||
+ | WHERE vbeln EQ l_delivery. | ||
+ | |||
+ | LOOP AT lt_vbpok. | ||
+ | lt_vbpok-vbeln = lt_vbpok-vbeln_vl. | ||
+ | lt_vbpok-posnn = lt_vbpok-posnr_vl. | ||
+ | lt_vbpok-lgort = wa_data-lgort_ori. "lt_ekpo-lgort. "p_lgort. | ||
+ | lt_vbpok-mdiff_lgort = wa_data-lgort_ori. "lt_ekpo-lgort. "p_lgort. | ||
+ | |||
+ | MODIFY lt_vbpok. | ||
+ | ENDLOOP. | ||
+ | |||
+ | CALL FUNCTION 'WS_DELIVERY_UPDATE_2' | ||
+ | EXPORTING | ||
+ | vbkok_wa = ls_vbkok | ||
+ | * commit = 'X' | ||
+ | delivery = l_delivery | ||
+ | update_picking = 'X' | ||
+ | if_error_messages_send = ' ' | ||
+ | IMPORTING | ||
+ | ef_error_any = l_error_any_0 | ||
+ | ef_error_in_item_deletion = l_error_in_item_deletion_0 | ||
+ | ef_error_in_pod_update = l_error_in_pod_update_0 | ||
+ | ef_error_in_interface = l_error_in_interface_0 | ||
+ | ef_error_in_goods_issue = l_error_in_goods_issue_0 | ||
+ | ef_error_in_final_check = l_error_in_final_check_0 | ||
+ | ef_error_partner_update = l_error_partner_update | ||
+ | ef_error_sernr_update = l_error_sernr_update | ||
+ | TABLES | ||
+ | vbpok_tab = lt_vbpok | ||
+ | prot = lt_prot. | ||
+ | |||
+ | IF l_error_any_0 EQ 'X'. | ||
+ | LOOP AT lt_prot where msgty eq 'E'. | ||
+ | MESSAGE ID lt_prot-msgid | ||
+ | TYPE 'I' | ||
+ | NUMBER lt_prot-msgno | ||
+ | WITH lt_prot-msgv1 | ||
+ | lt_prot-msgv2 | ||
+ | lt_prot-msgv3 | ||
+ | lt_prot-msgv4 into g_message. | ||
+ | PERFORM add_news USING 'Contabilización de entrega:' icon_red_light. | ||
+ | wa_data-stat = icon_red_light. | ||
+ | * error = 'X'. | ||
+ | ENDLOOP. | ||
+ | |||
+ | ELSE. | ||
+ | COMMIT WORK AND WAIT. | ||
+ | MESSAGE S000(0k) WITH 'Se contabilizó la entrega' l_delivery into g_message. | ||
+ | PERFORM add_news USING 'Contabilización de entrega:' icon_green_light. | ||
+ | wa_data-stat = icon_green_light. | ||
+ | p_cont = 'X'. | ||
+ | ENDIF. | ||
+ | |||
+ | endloop. | ||
+ | ENDFORM. " CREAR_ENTREGA</nowiki> | ||
+ | |||
+ | ==BAPI_GOODSMVT_CREATE entrada de mercancía para pedido de traslado MIGO con referencia a entrega == | ||
+ | <nowiki>form recepcion USING p_oc p_entrega CHANGING p_materialdocument | ||
+ | p_MATDOCUMENTYEAR. | ||
+ | * entrada de mercancía para pedido de traslado MIGO con referencia | ||
+ | * a entrega | ||
+ | |||
+ | DATA: lt_item TYPE TABLE OF bapi2017_gm_item_create, | ||
+ | lt_ekpo TYPE TABLE OF ekpo, | ||
+ | lt_return TYPE TABLE OF bapiret2. | ||
+ | |||
+ | data: ls_ekpo TYPE ekpo, | ||
+ | ls_header LIKE bapi2017_gm_head_01, | ||
+ | ls_code LIKE bapi2017_gm_code, | ||
+ | ls_item LIKE LINE OF lt_item, | ||
+ | ls_return LIKE LINE OF lt_return. | ||
+ | |||
+ | DATA: l_materialdocument TYPE bapi2017_gm_head_ret-mat_doc, | ||
+ | l_MATDOCUMENTYEAR TYPE BAPI2017_GM_HEAD_RET-DOC_YEAR, | ||
+ | l_testrun TYPE testrun VALUE space. | ||
+ | |||
+ | CLEAR: lt_item[], | ||
+ | ls_header, | ||
+ | ls_code, | ||
+ | l_materialdocument. | ||
+ | |||
+ | SELECT * FROM ekpo INTO TABLE lt_ekpo | ||
+ | WHERE ebeln = p_oc. | ||
+ | IF sy-subrc = 0. | ||
+ | ls_header-pstng_date = sy-datum. | ||
+ | ls_header-doc_date = sy-datum. | ||
+ | ls_header-ref_doc_no = p_entrega. | ||
+ | ls_header-header_txt = wa_data-vbeln. | ||
+ | ls_code-gm_code = '01'. "MB1C ver tabla T158G | ||
+ | |||
+ | LOOP AT lt_ekpo INTO ls_ekpo. | ||
+ | CLEAR ls_item. | ||
+ | ls_item-move_type = '101'. | ||
+ | ls_item-material = ls_ekpo-matnr. | ||
+ | ls_item-plant = ls_ekpo-werks. | ||
+ | ls_item-stge_loc = ls_ekpo-lgort. | ||
+ | |||
+ | * si material esta sujeto a lote => lote = pedido de traslado | ||
+ | SELECT COUNT(*) FROM MARc WHERE MATNR = ls_ekpo-matnr | ||
+ | AND WERKS = ls_ekpo-werks | ||
+ | AND XCHAR = 'X'. | ||
+ | IF sy-subrc = 0. | ||
+ | ls_item-batch = p_oc. | ||
+ | ENDIF. | ||
+ | ls_item-entry_qnt = ls_ekpo-menge. | ||
+ | ls_item-po_number = ls_ekpo-ebeln. | ||
+ | ls_item-po_item = ls_ekpo-ebelp. | ||
+ | ls_item-val_type = ls_ekpo-bwtar. | ||
+ | ls_item-mvt_ind = 'B'. "indicador de movimiento | ||
+ | ls_item-DELIV_NUMB = p_entrega. | ||
+ | APPEND ls_item TO lt_item. | ||
+ | ENDLOOP. | ||
+ | |||
+ | CALL FUNCTION 'BAPI_GOODSMVT_CREATE' | ||
+ | EXPORTING | ||
+ | goodsmvt_header = ls_header | ||
+ | goodsmvt_code = ls_code | ||
+ | testrun = l_testrun | ||
+ | IMPORTING | ||
+ | materialdocument = l_materialdocument | ||
+ | MATDOCUMENTYEAR = l_MATDOCUMENTYEAR | ||
+ | TABLES | ||
+ | goodsmvt_item = lt_item | ||
+ | RETURN = lt_return | ||
+ | . | ||
+ | IF lt_return[] IS INITIAL. | ||
+ | * proceso OK | ||
+ | p_materialdocument = l_materialdocument. | ||
+ | p_MATDOCUMENTYEAR = l_MATDOCUMENTYEAR. | ||
+ | |||
+ | MESSAGE S000(0k) WITH 'Se creo documento de material' | ||
+ | l_materialdocument l_MATDOCUMENTYEAR INTO g_message. | ||
+ | PERFORM add_news USING 'Recepción:' icon_green_light. | ||
+ | * commit work | ||
+ | CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' | ||
+ | EXPORTING | ||
+ | WAIT = 'X'. | ||
+ | ELSE. | ||
+ | * error | ||
+ | LOOP AT lt_return INTO ls_return | ||
+ | GROUP BY COND string( WHEN ls_return-TYPE = 'E' THEN |EQ 1| | ||
+ | WHEN ls_return-TYPE = 'A' THEN |EQ 2| | ||
+ | WHEN ls_return-TYPE = 'W' THEN |EQ 3| | ||
+ | WHEN ls_return-TYPE = 'I' THEN |EQ 4| | ||
+ | ) | ||
+ | ASCENDING | ||
+ | ASSIGNING FIELD-SYMBOL(<group>). | ||
+ | LOOP AT GROUP <group> ASSIGNING FIELD-SYMBOL(<ls_return>). | ||
+ | EXIT. | ||
+ | ENDLOOP. | ||
+ | EXIT. | ||
+ | ENDLOOP. | ||
+ | IF sy-subrc = 0. | ||
+ | MOVE <ls_return>-MESSAGE TO g_message. | ||
+ | PERFORM add_news USING 'Recepción:' icon_red_light. | ||
+ | wa_data-stat = icon_red_light. | ||
+ | ENDIF. | ||
+ | |||
+ | ENDIF. | ||
+ | ELSE. | ||
+ | ENDIF. | ||
+ | ENDFORM. " f_entrada_merc_pedido</nowiki> | ||
+ | |||
+ | ==Crear entrega de salida según pedido(VL01N), contabilizarla y realizar picking== | ||
+ | <nowiki>form entrega_cliente_final USING p_pedido p_oc CHANGING p_entrega | ||
+ | p_contabilizado_cli. | ||
+ | * VL01N | ||
+ | DATA: lt_sales_order TYPE TABLE OF bapidlvreftosalesorder WITH HEADER LINE, | ||
+ | lt_return type TABLE OF bapiret2, | ||
+ | lt_ekpo type TABLE OF ekpo WITH HEADER LINE, | ||
+ | ls_return like LINE OF lt_return, | ||
+ | l_delivery TYPE bapishpdelivnumb-deliv_numb, | ||
+ | l_num_deliveries TYPE bapidlvcreateheader-num_deliveries, | ||
+ | l_VSTEL type VSTEL. | ||
+ | |||
+ | if p_entrega is INITIAL. | ||
+ | lt_sales_order-ref_doc = p_pedido. | ||
+ | lt_sales_order-REF_ITEM = wa_data-posnr. | ||
+ | APPEND lt_sales_order. | ||
+ | |||
+ | SELECT SINGLE vstel into l_VSTEL from vbap where vbeln = wa_data-vbeln and | ||
+ | posnr = wa_data-posnr. | ||
+ | |||
+ | * crear la entrega | ||
+ | CALL FUNCTION 'BAPI_OUTB_DELIVERY_CREATE_SLS' | ||
+ | EXPORTING | ||
+ | SHIP_POINT = l_vstel | ||
+ | IMPORTING | ||
+ | delivery = l_delivery | ||
+ | num_deliveries = l_num_deliveries | ||
+ | TABLES | ||
+ | sales_order_items = lt_sales_order | ||
+ | return = lt_return | ||
+ | . | ||
+ | |||
+ | IF l_delivery IS INITIAL. | ||
+ | LOOP AT lt_return INTO ls_return | ||
+ | GROUP BY COND string( WHEN ls_return-type = 'E' THEN |EQ 1| | ||
+ | WHEN ls_return-type = 'A' THEN |EQ 2| | ||
+ | WHEN ls_return-type = 'W' THEN |EQ 3| | ||
+ | WHEN ls_return-type = 'I' THEN |EQ 4| | ||
+ | ) | ||
+ | ASCENDING | ||
+ | ASSIGNING FIELD-SYMBOL(<group>). | ||
+ | LOOP AT GROUP <group> ASSIGNING FIELD-SYMBOL(<ls_return>). | ||
+ | exit. | ||
+ | ENDLOOP. | ||
+ | EXIT. | ||
+ | ENDLOOP. | ||
+ | IF sy-subrc = 0. | ||
+ | move <ls_return>-message to g_message. | ||
+ | PERFORM add_news USING 'Entrega Cliente Final:' icon_red_light. | ||
+ | return. | ||
+ | ENDIF. | ||
+ | |||
+ | else. | ||
+ | CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' | ||
+ | EXPORTING | ||
+ | wait = 'X'. | ||
+ | |||
+ | p_entrega = l_delivery. | ||
+ | MESSAGE s000(0k) WITH l_delivery 'creada con éxito' into g_message. | ||
+ | PERFORM add_news USING 'Entrega Cliente Final:' icon_green_light. | ||
+ | endif. | ||
+ | else. | ||
+ | l_delivery = p_entrega. | ||
+ | endif. | ||
+ | *--------------------------------------------------------------------* | ||
+ | * contabiliza SM & picking entregas. | ||
+ | *--------------------------------------------------------------------* | ||
+ | DATA lt_return2 TYPE bapiret2_t. | ||
+ | DATA lt_lips TYPE TABLE OF lips WITH HEADER LINE. | ||
+ | DATA: ls_data TYPE bapiobdlvhdrchg, | ||
+ | ls_control TYPE bapiobdlvhdrctrlchg, | ||
+ | lt_item_control TYPE TABLE OF bapiobdlvitemctrlchg WITH HEADER LINE, | ||
+ | lt_item_data TYPE TABLE OF bapiobdlvitemchg WITH HEADER LINE, | ||
+ | lt_item_spl TYPE TABLE OF /spe/bapiobdlvitemchg WITH HEADER LINE, | ||
+ | ls_techn_control TYPE bapidlvcontrol. | ||
+ | |||
+ | check l_delivery is NOT INITIAL. | ||
+ | |||
+ | * modificar entrega | ||
+ | REFRESH lt_lips. | ||
+ | * si no tiene lote => actualizar | ||
+ | select * into TABLE lt_lips from lips where vbeln = l_delivery and charg = space. | ||
+ | IF sy-subrc = 0. | ||
+ | LOOP AT lt_lips. | ||
+ | select COUNT(*) from marc where matnr = lt_lips-matnr and | ||
+ | werks = lt_lips-werks and | ||
+ | xchar = 'X'. "sujeto a lote | ||
+ | check sy-subrc = 0. | ||
+ | lt_item_data-deliv_numb = lt_lips-vbeln. | ||
+ | lt_item_data-deliv_item = lt_lips-posnr. | ||
+ | lt_item_data-dlv_qty = lt_lips-lfimg. | ||
+ | lt_item_data-batch = p_oc. "lote => pedido de traslado | ||
+ | lt_item_data-material = lt_lips-matnr. | ||
+ | lt_item_data-fact_unit_nom = lt_lips-umvkz. | ||
+ | lt_item_data-fact_unit_denom = lt_lips-umvkn. | ||
+ | lt_item_data-base_uom = lt_lips-meins. | ||
+ | lt_item_data-sales_unit = lt_lips-vrkme. | ||
+ | |||
+ | lt_item_control-deliv_numb = lt_lips-vbeln. | ||
+ | lt_item_control-deliv_item = lt_lips-posnr. | ||
+ | lt_item_control-chg_delqty = 'X'. | ||
+ | |||
+ | APPEND lt_item_spl. | ||
+ | APPEND lt_item_control. | ||
+ | APPEND lt_item_data. | ||
+ | ENDLOOP. | ||
+ | |||
+ | *—–> modificar la entrega | ||
+ | if lt_item_data[] is NOT INITIAL. | ||
+ | ls_data-deliv_numb = l_delivery. | ||
+ | ls_control-deliv_numb = l_delivery. | ||
+ | ls_techn_control-upd_ind = 'U'. | ||
+ | |||
+ | CALL FUNCTION 'BAPI_OUTB_DELIVERY_CHANGE' | ||
+ | EXPORTING | ||
+ | header_data = ls_data | ||
+ | header_control = ls_control | ||
+ | delivery = l_delivery | ||
+ | techn_control = ls_techn_control | ||
+ | TABLES | ||
+ | item_data = lt_item_data[] | ||
+ | item_control = lt_item_control[] | ||
+ | RETURN = lt_return | ||
+ | * item_data_spl = lt_item_spl[] | ||
+ | . | ||
+ | |||
+ | LOOP AT lt_return INTO ls_return WHERE TYPE = 'E'. | ||
+ | MOVE ls_return-MESSAGE TO g_message. | ||
+ | PERFORM add_news USING 'Modif. Almacén de Entrega:' icon_red_light. | ||
+ | wa_data-stat = icon_red_light. | ||
+ | EXIT. | ||
+ | ENDLOOP. | ||
+ | IF sy-subrc = 0. | ||
+ | RETURN. "-------------------------> | ||
+ | ELSE. | ||
+ | CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' | ||
+ | EXPORTING | ||
+ | WAIT = 'X'. | ||
+ | ENDIF. | ||
+ | ENDIF. | ||
+ | ENDIF. | ||
+ | |||
+ | ********************************************************************** | ||
+ | ***picking | ||
+ | ********************************************************************** | ||
+ | data: lt_vbpok type TABLE OF vbpok WITH HEADER LINE, | ||
+ | lt_prot type TABLE OF prott WITH HEADER LINE, | ||
+ | ls_vbkok like vbkok, | ||
l_error_any_0 type c length 1, | l_error_any_0 type c length 1, | ||
l_error_in_item_deletion_0 type c length 1, | l_error_in_item_deletion_0 type c length 1, | ||
Line 46: | Line 532: | ||
l_error_partner_update type c length 1, | l_error_partner_update type c length 1, | ||
l_error_sernr_update type c length 1. | l_error_sernr_update type c length 1. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | REFRESH lt_return. | |
− | + | ||
− | + | select * into TABLE lt_ekpo from ekpo where ebeln = p_oc. | |
− | + | ||
− | + | ls_vbkok-vbeln_vl = l_delivery. | |
− | + | ls_vbkok-wabuc = 'X'. "contabilizar Salida merc. | |
− | + | ||
− | + | SELECT vbeln AS vbeln_vl | |
− | + | posnr AS posnr_vl | |
− | + | matnr | |
− | + | charg | |
− | + | lfimg | |
− | + | lgmng | |
− | + | umvkz | |
− | + | umvkn | |
− | + | vrkme | |
− | + | meins | |
− | + | FROM lips | |
− | + | INTO CORRESPONDING FIELDS OF TABLE lt_vbpok | |
− | + | WHERE vbeln EQ l_delivery. | |
− | + | ||
− | + | LOOP AT lt_vbpok. | |
− | + | lt_vbpok-vbeln = lt_vbpok-vbeln_vl. | |
− | + | lt_vbpok-posnn = lt_vbpok-posnr_vl. | |
− | + | lt_vbpok-taqui = 'X'. "confirmar picking | |
− | + | MODIFY lt_vbpok. | |
− | + | ENDLOOP. | |
− | + | ||
− | + | CALL FUNCTION 'WS_DELIVERY_UPDATE_2' | |
− | + | EXPORTING | |
− | + | vbkok_wa = ls_vbkok | |
− | + | commit = 'X' | |
− | + | delivery = l_delivery | |
− | + | update_picking = 'X' | |
− | + | if_error_messages_send = ' ' | |
− | + | IMPORTING | |
− | + | ef_error_any = l_error_any_0 | |
− | + | ef_error_in_item_deletion = l_error_in_item_deletion_0 | |
− | + | ef_error_in_pod_update = l_error_in_pod_update_0 | |
− | + | ef_error_in_interface = l_error_in_interface_0 | |
− | + | ef_error_in_goods_issue = l_error_in_goods_issue_0 | |
− | + | ef_error_in_final_check = l_error_in_final_check_0 | |
− | + | ef_error_partner_update = l_error_partner_update | |
− | + | ef_error_sernr_update = l_error_sernr_update | |
− | + | TABLES | |
− | + | vbpok_tab = lt_vbpok | |
− | + | prot = lt_prot. | |
− | + | ||
− | + | IF l_error_any_0 EQ 'X'. | |
− | + | LOOP AT lt_prot where msgty eq 'E'. | |
− | + | MESSAGE ID lt_prot-msgid | |
− | + | TYPE 'I' | |
− | + | NUMBER lt_prot-msgno | |
− | + | WITH lt_prot-msgv1 | |
− | + | lt_prot-msgv2 | |
− | + | lt_prot-msgv3 | |
− | + | lt_prot-msgv4 into g_message. | |
− | + | PERFORM add_news USING 'Entrega Cliente Final:' icon_red_light. | |
− | + | ENDLOOP. | |
− | + | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
ELSE. | ELSE. | ||
− | + | MESSAGE S000(0k) WITH 'Se contabilizó la entrega' l_delivery into g_message. | |
− | + | PERFORM add_news USING 'Entrega Cliente Final:' icon_green_light. | |
− | + | p_contabilizado_cli = 'X'. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
ENDIF. | ENDIF. | ||
− | + | endform.</nowiki> | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==Leer Datos de Clasificación de Material== | ==Leer Datos de Clasificación de Material== | ||
− | <nowiki> FORM obtiene_embalaje USING p_matnr | + | <nowiki>FORM obtiene_embalaje USING p_matnr |
− | + | CHANGING p_emba1. | |
− | + | ||
− | + | DATA: vl_classtype LIKE klah-klart VALUE '001', | |
− | + | vl_objecttable LIKE tcla-obtab VALUE 'MARA', | |
− | + | vl_clint LIKE klah-clint VALUE '0000000000'. | |
− | + | ||
− | + | DATA: tmp_material(18). | |
− | + | ||
− | + | DATA: tl_objectdata LIKE clobjdat OCCURS 0 WITH HEADER LINE. | |
− | + | DATA tl_class LIKE sclass OCCURS 0 WITH HEADER LINE. | |
− | + | DATA: vl_objek LIKE ausp-objek. | |
− | + | ||
− | + | CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' | |
− | + | EXPORTING | |
− | + | input = p_matnr | |
− | + | IMPORTING | |
− | + | output = tmp_material. | |
− | + | ||
− | + | vl_objek = tmp_material. | |
− | + | ||
− | + | CALL FUNCTION 'CLAF_CLASSIFICATION_OF_OBJECTS' | |
− | + | EXPORTING | |
− | + | classtext = 'X' | |
− | + | classtype = vl_classtype | |
− | + | clint = vl_clint | |
− | + | features = 'X' | |
− | + | language = sy-langu | |
− | + | object = vl_objek | |
− | + | objecttable = vl_objecttable | |
− | + | key_date = sy-datum | |
− | + | initial_charact = 'X' | |
− | + | change_service_clf = 'X' | |
− | + | TABLES | |
− | + | t_class = tl_class | |
− | + | t_objectdata = tl_objectdata | |
− | + | EXCEPTIONS | |
− | + | no_classification = 1 | |
− | + | no_classtypes = 2 | |
− | + | invalid_class_type = 3 | |
− | + | OTHERS = 4. | |
− | + | endform.</nowiki> |
Latest revision as of 22:13, 4 April 2020
Contents
- 1 Orden de Compra ME21N
- 2 Crear Material MM01
- 3 Creación de vista calidad materiales
- 4 Crear Lista de Material CS01
- 5 Crear una entrega de Pedido de traslado VL10B, contabilizarla y realizar picking
- 6 BAPI_GOODSMVT_CREATE entrada de mercancía para pedido de traslado MIGO con referencia a entrega
- 7 Crear entrega de salida según pedido(VL01N), contabilizarla y realizar picking
- 8 Leer Datos de Clasificación de Material
Orden de Compra ME21N
Crear Material MM01
Creación de vista calidad materiales
Crear Lista de Material CS01
Crear una entrega de Pedido de traslado VL10B, contabilizarla y realizar picking
*&---------------------------------------------------------------------* *& Form CREAR_ENTREGA *&---------------------------------------------------------------------* * Crear una entrega de Pedido de traslado VL10B *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM CREAR_ENTREGA using p_ebeln CHANGING p_entrega p_cont. * Crear una entrega de Pedido de traslado VL10B DATA: begin of lt_ekpo occurs 1. include structure ekpo. data n_doc type i. data end of lt_ekpo. data : begin of lt_entregas occurs 1, vbeln type vbeln, num type i, end of lt_entregas. data: lt_stock_trans_items like BAPIDLVREFTOSTO occurs 0 with header line, lt_return like BAPIRET2 occurs 0 with header line, l_ship_point like BAPIDLVCREATEHEADER-SHIP_POINT, l_due_date like BAPIDLVCREATEHEADER-DUE_DATE, l_delivery like BAPISHPDELIVNUMB-DELIV_NUMB. data: lt_DELIVERIES like BAPISHPDELIVNUMB occurs 0 with header line, lt_CREATED_ITEMS like BAPIDLVITEMCREATED occurs 0 with header line. data: ls_vbkok like vbkok, lt_vbpok like vbpok occurs 0 with header line, lt_prot like prott occurs 0 with header line, l_error_any_0 type c length 1, l_error_in_item_deletion_0 type c length 1, l_error_in_pod_update_0 type c length 1, l_error_in_interface_0 type c length 1, l_error_in_goods_issue_0 type c length 1, l_error_in_final_check_0 type c length 1, l_error_partner_update type c length 1, l_error_sernr_update type c length 1. SELECT SINGLE vstel FROM ekpv INTO l_ship_point WHERE ebeln EQ p_ebeln. SELECT * FROM ekpo UP TO 1 ROWS INTO table lt_ekpo WHERE ebeln EQ p_ebeln ORDER BY ebelp. ********************************************************************** * crear entrega ********************************************************************** IF p_entrega IS INITIAL. REFRESH lt_stock_trans_items. LOOP AT lt_ekpo. CLEAR lt_stock_trans_items. lt_stock_trans_items-ref_doc = lt_ekpo-ebeln. lt_stock_trans_items-ref_item = lt_ekpo-ebelp. lt_stock_trans_items-dlv_qty = lt_ekpo-menge. lt_stock_trans_items-sales_unit = lt_ekpo-meins. APPEND lt_stock_trans_items. ENDLOOP. CALL FUNCTION 'BAPI_OUTB_DELIVERY_CREATE_STO' EXPORTING ship_point = l_ship_point due_date = sy-datum IMPORTING delivery = l_delivery TABLES stock_trans_items = lt_stock_trans_items DELIVERIES = lt_DELIVERIES CREATED_ITEMS = lt_CREATED_ITEMS RETURN = lt_return. IF l_delivery IS INITIAL. LOOP AT lt_return WHERE TYPE EQ 'E'. MESSAGE ID lt_return-ID TYPE 'I' NUMBER lt_return-NUMBER WITH lt_return-MESSAGE_V1 lt_return-MESSAGE_V2 lt_return-MESSAGE_V3 lt_return-MESSAGE_V4 INTO g_message. PERFORM add_news USING 'Creación de entrega:' icon_red_light. wa_data-stat = icon_red_light. ENDLOOP. ELSE. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING WAIT = 'X'. . p_entrega = l_delivery. MESSAGE s000(0k) WITH l_delivery 'creada con éxito' INTO g_message. PERFORM add_news USING 'Creación de entrega:' icon_green_light. wa_data-stat = icon_green_light. ENDIF. * Entrega creada asigna en ITAB. LOOP AT lt_CREATED_ITEMS. lt_entregas-vbeln = lt_CREATED_ITEMS-DELIV_NUMB. lt_entregas-num = 1. COLLECT lt_entregas. ENDLOOP. ELSE. l_delivery = p_entrega. lt_entregas-vbeln = l_delivery. lt_entregas-num = 1. COLLECT lt_entregas. ENDIF. *--------------------------------------------------------------------* * contabiliza SM & picking entregas. *--------------------------------------------------------------------* DATA lt_return2 TYPE bapiret2_t. DATA lt_lips TYPE TABLE OF lips WITH HEADER LINE. DATA: ls_data TYPE bapiobdlvhdrchg, ls_control TYPE bapiobdlvhdrctrlchg, lt_item_control TYPE TABLE OF bapiobdlvitemctrlchg WITH HEADER LINE, lt_item_data TYPE TABLE OF bapiobdlvitemchg WITH HEADER LINE, lt_item_spl TYPE TABLE OF /spe/bapiobdlvitemchg WITH HEADER LINE, ls_techn_control TYPE bapidlvcontrol. loop at lt_entregas. REFRESH lt_return. * modificar entrega REFRESH lt_lips. * si no tiene almacen => actualizar con almacén de origen select * into TABLE lt_lips from lips where vbeln = l_delivery and lgort = space. IF sy-subrc = 0. LOOP AT lt_lips. lt_item_spl-deliv_numb = lt_lips-vbeln. lt_item_spl-deliv_item = lt_lips-posnr. lt_item_control-deliv_numb = lt_lips-vbeln. lt_item_control-deliv_item = lt_lips-posnr. lt_item_data-deliv_numb = lt_lips-vbeln. lt_item_data-deliv_item = lt_lips-posnr. lt_item_data-dlv_qty = lt_lips-lfimg. lt_item_spl-stge_loc = wa_data-lgort_ori. "almacén de origen lt_item_data-material = lt_lips-matnr. lt_item_data-fact_unit_nom = lt_lips-umvkz. lt_item_data-fact_unit_denom = lt_lips-umvkn. lt_item_data-base_uom = lt_lips-meins. lt_item_data-sales_unit = lt_lips-vrkme. APPEND lt_item_spl. APPEND lt_item_control. APPEND lt_item_data. ENDLOOP. *—–> modificar la entrega ls_data-deliv_numb = l_delivery. ls_control-deliv_numb = l_delivery. ls_techn_control-upd_ind = 'U'. CALL FUNCTION 'BAPI_OUTB_DELIVERY_CHANGE' EXPORTING header_data = ls_data header_control = ls_control delivery = l_delivery techn_control = ls_techn_control TABLES item_data = lt_item_data[] item_control = lt_item_control[] RETURN = lt_return item_data_spl = lt_item_spl[] . LOOP AT lt_return WHERE TYPE = 'E'. MOVE lt_return-MESSAGE TO g_message. PERFORM add_news USING 'Modif. Almacén de Entrega:' icon_red_light. wa_data-stat = icon_red_light. EXIT. ENDLOOP. IF sy-subrc = 0. CONTINUE. ELSE. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING WAIT = 'X'. ENDIF. ENDIF. l_delivery = lt_entregas-vbeln. ls_vbkok-vbeln_vl = l_delivery. ls_vbkok-wabuc = 'X'. "contabilizar Salida merc. SELECT vbeln AS vbeln_vl posnr AS posnr_vl matnr charg lfimg lgmng umvkz umvkn vrkme meins werks FROM lips INTO CORRESPONDING FIELDS OF TABLE lt_vbpok WHERE vbeln EQ l_delivery. LOOP AT lt_vbpok. lt_vbpok-vbeln = lt_vbpok-vbeln_vl. lt_vbpok-posnn = lt_vbpok-posnr_vl. lt_vbpok-lgort = wa_data-lgort_ori. "lt_ekpo-lgort. "p_lgort. lt_vbpok-mdiff_lgort = wa_data-lgort_ori. "lt_ekpo-lgort. "p_lgort. MODIFY lt_vbpok. ENDLOOP. CALL FUNCTION 'WS_DELIVERY_UPDATE_2' EXPORTING vbkok_wa = ls_vbkok * commit = 'X' delivery = l_delivery update_picking = 'X' if_error_messages_send = ' ' IMPORTING ef_error_any = l_error_any_0 ef_error_in_item_deletion = l_error_in_item_deletion_0 ef_error_in_pod_update = l_error_in_pod_update_0 ef_error_in_interface = l_error_in_interface_0 ef_error_in_goods_issue = l_error_in_goods_issue_0 ef_error_in_final_check = l_error_in_final_check_0 ef_error_partner_update = l_error_partner_update ef_error_sernr_update = l_error_sernr_update TABLES vbpok_tab = lt_vbpok prot = lt_prot. IF l_error_any_0 EQ 'X'. LOOP AT lt_prot where msgty eq 'E'. MESSAGE ID lt_prot-msgid TYPE 'I' NUMBER lt_prot-msgno WITH lt_prot-msgv1 lt_prot-msgv2 lt_prot-msgv3 lt_prot-msgv4 into g_message. PERFORM add_news USING 'Contabilización de entrega:' icon_red_light. wa_data-stat = icon_red_light. * error = 'X'. ENDLOOP. ELSE. COMMIT WORK AND WAIT. MESSAGE S000(0k) WITH 'Se contabilizó la entrega' l_delivery into g_message. PERFORM add_news USING 'Contabilización de entrega:' icon_green_light. wa_data-stat = icon_green_light. p_cont = 'X'. ENDIF. endloop. ENDFORM. " CREAR_ENTREGA
BAPI_GOODSMVT_CREATE entrada de mercancía para pedido de traslado MIGO con referencia a entrega
form recepcion USING p_oc p_entrega CHANGING p_materialdocument p_MATDOCUMENTYEAR. * entrada de mercancía para pedido de traslado MIGO con referencia * a entrega DATA: lt_item TYPE TABLE OF bapi2017_gm_item_create, lt_ekpo TYPE TABLE OF ekpo, lt_return TYPE TABLE OF bapiret2. data: ls_ekpo TYPE ekpo, ls_header LIKE bapi2017_gm_head_01, ls_code LIKE bapi2017_gm_code, ls_item LIKE LINE OF lt_item, ls_return LIKE LINE OF lt_return. DATA: l_materialdocument TYPE bapi2017_gm_head_ret-mat_doc, l_MATDOCUMENTYEAR TYPE BAPI2017_GM_HEAD_RET-DOC_YEAR, l_testrun TYPE testrun VALUE space. CLEAR: lt_item[], ls_header, ls_code, l_materialdocument. SELECT * FROM ekpo INTO TABLE lt_ekpo WHERE ebeln = p_oc. IF sy-subrc = 0. ls_header-pstng_date = sy-datum. ls_header-doc_date = sy-datum. ls_header-ref_doc_no = p_entrega. ls_header-header_txt = wa_data-vbeln. ls_code-gm_code = '01'. "MB1C ver tabla T158G LOOP AT lt_ekpo INTO ls_ekpo. CLEAR ls_item. ls_item-move_type = '101'. ls_item-material = ls_ekpo-matnr. ls_item-plant = ls_ekpo-werks. ls_item-stge_loc = ls_ekpo-lgort. * si material esta sujeto a lote => lote = pedido de traslado SELECT COUNT(*) FROM MARc WHERE MATNR = ls_ekpo-matnr AND WERKS = ls_ekpo-werks AND XCHAR = 'X'. IF sy-subrc = 0. ls_item-batch = p_oc. ENDIF. ls_item-entry_qnt = ls_ekpo-menge. ls_item-po_number = ls_ekpo-ebeln. ls_item-po_item = ls_ekpo-ebelp. ls_item-val_type = ls_ekpo-bwtar. ls_item-mvt_ind = 'B'. "indicador de movimiento ls_item-DELIV_NUMB = p_entrega. APPEND ls_item TO lt_item. ENDLOOP. CALL FUNCTION 'BAPI_GOODSMVT_CREATE' EXPORTING goodsmvt_header = ls_header goodsmvt_code = ls_code testrun = l_testrun IMPORTING materialdocument = l_materialdocument MATDOCUMENTYEAR = l_MATDOCUMENTYEAR TABLES goodsmvt_item = lt_item RETURN = lt_return . IF lt_return[] IS INITIAL. * proceso OK p_materialdocument = l_materialdocument. p_MATDOCUMENTYEAR = l_MATDOCUMENTYEAR. MESSAGE S000(0k) WITH 'Se creo documento de material' l_materialdocument l_MATDOCUMENTYEAR INTO g_message. PERFORM add_news USING 'Recepción:' icon_green_light. * commit work CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING WAIT = 'X'. ELSE. * error LOOP AT lt_return INTO ls_return GROUP BY COND string( WHEN ls_return-TYPE = 'E' THEN |EQ 1| WHEN ls_return-TYPE = 'A' THEN |EQ 2| WHEN ls_return-TYPE = 'W' THEN |EQ 3| WHEN ls_return-TYPE = 'I' THEN |EQ 4| ) ASCENDING ASSIGNING FIELD-SYMBOL(<group>). LOOP AT GROUP <group> ASSIGNING FIELD-SYMBOL(<ls_return>). EXIT. ENDLOOP. EXIT. ENDLOOP. IF sy-subrc = 0. MOVE <ls_return>-MESSAGE TO g_message. PERFORM add_news USING 'Recepción:' icon_red_light. wa_data-stat = icon_red_light. ENDIF. ENDIF. ELSE. ENDIF. ENDFORM. " f_entrada_merc_pedido
Crear entrega de salida según pedido(VL01N), contabilizarla y realizar picking
form entrega_cliente_final USING p_pedido p_oc CHANGING p_entrega p_contabilizado_cli. * VL01N DATA: lt_sales_order TYPE TABLE OF bapidlvreftosalesorder WITH HEADER LINE, lt_return type TABLE OF bapiret2, lt_ekpo type TABLE OF ekpo WITH HEADER LINE, ls_return like LINE OF lt_return, l_delivery TYPE bapishpdelivnumb-deliv_numb, l_num_deliveries TYPE bapidlvcreateheader-num_deliveries, l_VSTEL type VSTEL. if p_entrega is INITIAL. lt_sales_order-ref_doc = p_pedido. lt_sales_order-REF_ITEM = wa_data-posnr. APPEND lt_sales_order. SELECT SINGLE vstel into l_VSTEL from vbap where vbeln = wa_data-vbeln and posnr = wa_data-posnr. * crear la entrega CALL FUNCTION 'BAPI_OUTB_DELIVERY_CREATE_SLS' EXPORTING SHIP_POINT = l_vstel IMPORTING delivery = l_delivery num_deliveries = l_num_deliveries TABLES sales_order_items = lt_sales_order return = lt_return . IF l_delivery IS INITIAL. LOOP AT lt_return INTO ls_return GROUP BY COND string( WHEN ls_return-type = 'E' THEN |EQ 1| WHEN ls_return-type = 'A' THEN |EQ 2| WHEN ls_return-type = 'W' THEN |EQ 3| WHEN ls_return-type = 'I' THEN |EQ 4| ) ASCENDING ASSIGNING FIELD-SYMBOL(<group>). LOOP AT GROUP <group> ASSIGNING FIELD-SYMBOL(<ls_return>). exit. ENDLOOP. EXIT. ENDLOOP. IF sy-subrc = 0. move <ls_return>-message to g_message. PERFORM add_news USING 'Entrega Cliente Final:' icon_red_light. return. ENDIF. else. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. p_entrega = l_delivery. MESSAGE s000(0k) WITH l_delivery 'creada con éxito' into g_message. PERFORM add_news USING 'Entrega Cliente Final:' icon_green_light. endif. else. l_delivery = p_entrega. endif. *--------------------------------------------------------------------* * contabiliza SM & picking entregas. *--------------------------------------------------------------------* DATA lt_return2 TYPE bapiret2_t. DATA lt_lips TYPE TABLE OF lips WITH HEADER LINE. DATA: ls_data TYPE bapiobdlvhdrchg, ls_control TYPE bapiobdlvhdrctrlchg, lt_item_control TYPE TABLE OF bapiobdlvitemctrlchg WITH HEADER LINE, lt_item_data TYPE TABLE OF bapiobdlvitemchg WITH HEADER LINE, lt_item_spl TYPE TABLE OF /spe/bapiobdlvitemchg WITH HEADER LINE, ls_techn_control TYPE bapidlvcontrol. check l_delivery is NOT INITIAL. * modificar entrega REFRESH lt_lips. * si no tiene lote => actualizar select * into TABLE lt_lips from lips where vbeln = l_delivery and charg = space. IF sy-subrc = 0. LOOP AT lt_lips. select COUNT(*) from marc where matnr = lt_lips-matnr and werks = lt_lips-werks and xchar = 'X'. "sujeto a lote check sy-subrc = 0. lt_item_data-deliv_numb = lt_lips-vbeln. lt_item_data-deliv_item = lt_lips-posnr. lt_item_data-dlv_qty = lt_lips-lfimg. lt_item_data-batch = p_oc. "lote => pedido de traslado lt_item_data-material = lt_lips-matnr. lt_item_data-fact_unit_nom = lt_lips-umvkz. lt_item_data-fact_unit_denom = lt_lips-umvkn. lt_item_data-base_uom = lt_lips-meins. lt_item_data-sales_unit = lt_lips-vrkme. lt_item_control-deliv_numb = lt_lips-vbeln. lt_item_control-deliv_item = lt_lips-posnr. lt_item_control-chg_delqty = 'X'. APPEND lt_item_spl. APPEND lt_item_control. APPEND lt_item_data. ENDLOOP. *—–> modificar la entrega if lt_item_data[] is NOT INITIAL. ls_data-deliv_numb = l_delivery. ls_control-deliv_numb = l_delivery. ls_techn_control-upd_ind = 'U'. CALL FUNCTION 'BAPI_OUTB_DELIVERY_CHANGE' EXPORTING header_data = ls_data header_control = ls_control delivery = l_delivery techn_control = ls_techn_control TABLES item_data = lt_item_data[] item_control = lt_item_control[] RETURN = lt_return * item_data_spl = lt_item_spl[] . LOOP AT lt_return INTO ls_return WHERE TYPE = 'E'. MOVE ls_return-MESSAGE TO g_message. PERFORM add_news USING 'Modif. Almacén de Entrega:' icon_red_light. wa_data-stat = icon_red_light. EXIT. ENDLOOP. IF sy-subrc = 0. RETURN. "-------------------------> ELSE. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING WAIT = 'X'. ENDIF. ENDIF. ENDIF. ********************************************************************** ***picking ********************************************************************** data: lt_vbpok type TABLE OF vbpok WITH HEADER LINE, lt_prot type TABLE OF prott WITH HEADER LINE, ls_vbkok like vbkok, l_error_any_0 type c length 1, l_error_in_item_deletion_0 type c length 1, l_error_in_pod_update_0 type c length 1, l_error_in_interface_0 type c length 1, l_error_in_goods_issue_0 type c length 1, l_error_in_final_check_0 type c length 1, l_error_partner_update type c length 1, l_error_sernr_update type c length 1. REFRESH lt_return. select * into TABLE lt_ekpo from ekpo where ebeln = p_oc. ls_vbkok-vbeln_vl = l_delivery. ls_vbkok-wabuc = 'X'. "contabilizar Salida merc. SELECT vbeln AS vbeln_vl posnr AS posnr_vl matnr charg lfimg lgmng umvkz umvkn vrkme meins FROM lips INTO CORRESPONDING FIELDS OF TABLE lt_vbpok WHERE vbeln EQ l_delivery. LOOP AT lt_vbpok. lt_vbpok-vbeln = lt_vbpok-vbeln_vl. lt_vbpok-posnn = lt_vbpok-posnr_vl. lt_vbpok-taqui = 'X'. "confirmar picking MODIFY lt_vbpok. ENDLOOP. CALL FUNCTION 'WS_DELIVERY_UPDATE_2' EXPORTING vbkok_wa = ls_vbkok commit = 'X' delivery = l_delivery update_picking = 'X' if_error_messages_send = ' ' IMPORTING ef_error_any = l_error_any_0 ef_error_in_item_deletion = l_error_in_item_deletion_0 ef_error_in_pod_update = l_error_in_pod_update_0 ef_error_in_interface = l_error_in_interface_0 ef_error_in_goods_issue = l_error_in_goods_issue_0 ef_error_in_final_check = l_error_in_final_check_0 ef_error_partner_update = l_error_partner_update ef_error_sernr_update = l_error_sernr_update TABLES vbpok_tab = lt_vbpok prot = lt_prot. IF l_error_any_0 EQ 'X'. LOOP AT lt_prot where msgty eq 'E'. MESSAGE ID lt_prot-msgid TYPE 'I' NUMBER lt_prot-msgno WITH lt_prot-msgv1 lt_prot-msgv2 lt_prot-msgv3 lt_prot-msgv4 into g_message. PERFORM add_news USING 'Entrega Cliente Final:' icon_red_light. ENDLOOP. ELSE. MESSAGE S000(0k) WITH 'Se contabilizó la entrega' l_delivery into g_message. PERFORM add_news USING 'Entrega Cliente Final:' icon_green_light. p_contabilizado_cli = 'X'. ENDIF. endform.
Leer Datos de Clasificación de Material
FORM obtiene_embalaje USING p_matnr CHANGING p_emba1. DATA: vl_classtype LIKE klah-klart VALUE '001', vl_objecttable LIKE tcla-obtab VALUE 'MARA', vl_clint LIKE klah-clint VALUE '0000000000'. DATA: tmp_material(18). DATA: tl_objectdata LIKE clobjdat OCCURS 0 WITH HEADER LINE. DATA tl_class LIKE sclass OCCURS 0 WITH HEADER LINE. DATA: vl_objek LIKE ausp-objek. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = p_matnr IMPORTING output = tmp_material. vl_objek = tmp_material. CALL FUNCTION 'CLAF_CLASSIFICATION_OF_OBJECTS' EXPORTING classtext = 'X' classtype = vl_classtype clint = vl_clint features = 'X' language = sy-langu object = vl_objek objecttable = vl_objecttable key_date = sy-datum initial_charact = 'X' change_service_clf = 'X' TABLES t_class = tl_class t_objectdata = tl_objectdata EXCEPTIONS no_classification = 1 no_classtypes = 2 invalid_class_type = 3 OTHERS = 4. endform.