SAP SD BAPI TRANSPORTE
From SapWiki
Contents
EJEMPLO 1
REPORT ztest_bapi_shipment_create2 . *************************************************************** * This report is provided to help understanding the interface * * of function module 'BAPI_SHIPMENT_CREATE' with regard to * * its ability to fill the different shipment-deadlines * * With running this report, new shipments are created * * see note 531207 *************************************************************** * fill the interface for bapi DATA: headerdata LIKE bapishipmentheader, headerdeadline LIKE bapishipmentheaderdeadline OCCURS 0 WITH HEADER LINE, itemdata LIKE bapishipmentitem OCCURS 0 WITH HEADER LINE, stagedata LIKE bapishipmentstage OCCURS 0 WITH HEADER LINE, stagedeadline LIKE bapishipmentstagedeadline OCCURS 0 WITH HEADER LINE, itemonstage LIKE bapishipmentitemonstage OCCURS 0 WITH HEADER LINE, address LIKE bapishipmentaddress OCCURS 0 WITH HEADER LINE, hdunheader LIKE bapishipmenthdunheader OCCURS 0 WITH HEADER LINE, hdunitem LIKE bapishipmenthdunitem OCCURS 0 WITH HEADER LINE, return LIKE bapiret2 OCCURS 0 WITH HEADER LINE. SELECTION-SCREEN COMMENT /1(83) com1. SELECTION-SCREEN COMMENT /1(83) com2. SELECTION-SCREEN COMMENT /1(83) com3. SELECTION-SCREEN COMMENT /1(83) com4. SELECTION-SCREEN COMMENT /1(83) com5. SELECTION-SCREEN COMMENT /1(83) com6. SELECTION-SCREEN COMMENT /1(83) com7. SELECTION-SCREEN SKIP 1. SELECTION-SCREEN ULINE. SELECTION-SCREEN BEGIN OF BLOCK header WITH FRAME TITLE text-hrd. * Headerdate - obligatory SELECTION-SCREEN COMMENT /1(79) com8 FOR FIELD tplst. PARAMETER: tplst LIKE vttk-tplst. SELECTION-SCREEN COMMENT /1(79) com9 FOR FIELD tplst. PARAMETER: shtyp LIKE vttk-shtyp. SELECTION-SCREEN END OF BLOCK header. SELECTION-SCREEN ULINE. SELECTION-SCREEN BEGIN OF BLOCK status WITH FRAME TITLE com10. * Plan PARAMETER: plan LIKE bapishipmentheader-status_plan. *checkin PARAMETER: check LIKE bapishipmentheader-status_checkin. *load start PARAMETER: load_s LIKE bapishipmentheader-status_load_start. *load end PARAMETER: load_e LIKE bapishipmentheader-status_load_end. *Completion PARAMETER: compl LIKE bapishipmentheader-status_compl. * tra begin PARAMETER: ship_s LIKE bapishipmentheader-status_shpmnt_start. * tra end PARAMETER: ship_e LIKE bapishipmentheader-status_shpmnt_end. SELECTION-SCREEN END OF BLOCK status. * Headerdeadline SELECTION-SCREEN BEGIN OF BLOCK h_deadline WITH FRAME TITLE com11. PARAMETERS: ttype(10) DEFAULT 'HDRSTPLDT', "= End of planning utc LIKE bapishipmentheaderdeadline-time_stamp_utc, zone LIKE bapishipmentheaderdeadline-time_zone. PARAMETERS: ttype2(10) DEFAULT 'HDRSTCIPDT',"= planned date of check-in utc2 LIKE bapishipmentheaderdeadline-time_stamp_utc, zone2 LIKE bapishipmentheaderdeadline-time_zone. PARAMETERS: ttype3(10) DEFAULT 'HDRSTCIADT',"= actual date of check-in utc3 LIKE bapishipmentheaderdeadline-time_stamp_utc, zone3 LIKE bapishipmentheaderdeadline-time_zone. PARAMETERS: ttype4(10) DEFAULT 'HDRSTLSPDT',"= planned date f. start loading utc4 LIKE bapishipmentheaderdeadline-time_stamp_utc, zone4 LIKE bapishipmentheaderdeadline-time_zone. PARAMETERS: ttype5(10) DEFAULT 'HDRSTLSADT',"= current date f. start loading utc5 LIKE bapishipmentheaderdeadline-time_stamp_utc, zone5 LIKE bapishipmentheaderdeadline-time_zone. PARAMETERS: ttype6(10) DEFAULT 'HDRSTLEPDT',"= planned date f. end loading utc6 LIKE bapishipmentheaderdeadline-time_stamp_utc, zone6 LIKE bapishipmentheaderdeadline-time_zone. PARAMETERS: ttype7(10) DEFAULT 'HDRSTLEADT',"= actual date f. end loading utc7 LIKE bapishipmentheaderdeadline-time_stamp_utc, zone7 LIKE bapishipmentheaderdeadline-time_zone. PARAMETERS: ttype8(10) DEFAULT 'HDRSTCPDT',"= planned date f. shpmnt completion utc8 LIKE bapishipmentheaderdeadline-time_stamp_utc, zone8 LIKE bapishipmentheaderdeadline-time_zone. PARAMETERS: ttype9(10) DEFAULT 'HDRSTCADT',"= actual date f. shpmnt completion utc9 LIKE bapishipmentheaderdeadline-time_stamp_utc, zone9 LIKE bapishipmentheaderdeadline-time_zone. PARAMETERS: ttype10(10) DEFAULT 'HDRSTSSPDT',"= planned date f. start shpmnt utc10 LIKE bapishipmentheaderdeadline-time_stamp_utc, zone10 LIKE bapishipmentheaderdeadline-time_zone. PARAMETERS: ttype11(10) DEFAULT 'HDRSTSSADT',"= actual date f. start shpmnt utc11 LIKE bapishipmentheaderdeadline-time_stamp_utc, zone11 LIKE bapishipmentheaderdeadline-time_zone. PARAMETERS: ttype12(10) DEFAULT 'HDRSTSEPDT',"= planned date f. end shpmnt utc12 LIKE bapishipmentheaderdeadline-time_stamp_utc, zone12 LIKE bapishipmentheaderdeadline-time_zone. PARAMETERS: ttype13(10) DEFAULT 'HDRSTSEADT',"= actual date f. end shpmnt utc13 LIKE bapishipmentheaderdeadline-time_stamp_utc, zone13 LIKE bapishipmentheaderdeadline-time_zone. SELECTION-SCREEN END OF BLOCK h_deadline. *********************************************************************** * Format the select-options * *********************************************************************** INITIALIZATION. com1 = 'This report was provided to help understanding the behaviour'. com2 = 'of function module BAPI_SHIPMENT_CREATE with regard to its '. com3 = 'ability to fill the new shipments deadlines: '. com4 = 'Planning, Check-In, Loading Start, Loading end, '. com5 = 'Shpmnt completion, Shipment start and shipment end.'. com6 = 'This report creates new shipments which can be '. com7 = 'viewed e.g. with transaction VT03n'. com8 = 'Transportation Planning Point (obligatory)'. com9 = 'Shipment type (obligatory)'. com10 = 'BAPISHIPMENTHEADER-Flags --> see note 531207 '. com11 = 'HEADERDEADLINE-Structure --> see note 531207 '. *********************************************************************** START-OF-SELECTION. ******************head begin*********************************** headerdata-trans_plan_pt = tplst. headerdata-shipment_type = shtyp. * change Plan status * HEADERDATA-SHIPMENT_NUM = tknum. IF plan <> space. headerdata-status_plan = plan. ENDIF. * Change Check_in status IF check <> space. headerdata-status_checkin = check. ENDIF. *load beginn IF load_s <> space . headerdata-status_load_start = load_s. ENDIF. * load end IF load_e <> space . headerdata-status_load_end = load_e. ENDIF. * completion IF compl <> space. headerdata-status_compl = compl. ENDIF. *tra beginn IF ship_s <> space. headerdata-status_shpmnt_start = ship_s. ENDIF. *tra beginn IF ship_e <> space. headerdata-status_shpmnt_end = ship_e. ENDIF. ***** HEADERDEADLINE END OF PLANNING IF ttype <> space. headerdeadline-time_type = ttype. headerdeadline-time_stamp_utc = utc. headerdeadline-time_zone = zone. APPEND headerdeadline. ENDIF. ***** HEADERDEADLINE PLANNED DATE OF CHECK-IN IF ttype2 <> space. headerdeadline-time_type = ttype2. headerdeadline-time_stamp_utc = utc2. headerdeadline-time_zone = zone2. APPEND headerdeadline. ENDIF. ***** HEADERDEADLINE ACTUAL DATE OF CHECK-IN IF ttype3 <> space. headerdeadline-time_type = ttype3. headerdeadline-time_stamp_utc = utc3. headerdeadline-time_zone = zone3. APPEND headerdeadline. ENDIF. ***** HEADERDEADLINE PLANNED D START OF LOADING IF ttype4 <> space. headerdeadline-time_type = ttype4. headerdeadline-time_stamp_utc = utc4. headerdeadline-time_zone = zone4. APPEND headerdeadline. ENDIF. ***** HEADERDEADLINE CURRENT D START OF LOADING IF ttype5 <> space. headerdeadline-time_type = ttype5. headerdeadline-time_stamp_utc = utc5. headerdeadline-time_zone = zone5. APPEND headerdeadline. ENDIF. ***** HEADERDEADLINE PLANNED D END OF LOADING IF ttype6 <> space. headerdeadline-time_type = ttype6. headerdeadline-time_stamp_utc = utc6. headerdeadline-time_zone = zone6. APPEND headerdeadline. ENDIF. ***** HEADERDEADLINE ACTUAL D END OF LOADING IF ttype7 <> space. headerdeadline-time_type = ttype7. headerdeadline-time_stamp_utc = utc7. headerdeadline-time_zone = zone7. APPEND headerdeadline. ENDIF. ***** HEADERDEADLINE PLANNED D SHIPMENT COMPLETION IF ttype8 <> space. headerdeadline-time_type = ttype8. headerdeadline-time_stamp_utc = utc8. headerdeadline-time_zone = zone8. APPEND headerdeadline. ENDIF. ***** HEADERDEADLINE ACTUAL D SHIPMENT COMPLETION IF ttype9 <> space. headerdeadline-time_type = ttype9. headerdeadline-time_stamp_utc = utc9. headerdeadline-time_zone = zone9. APPEND headerdeadline. ENDIF. ***** HEADERDEADLINE PLANNED D START OF SHIPMENT IF ttype10 <> space. headerdeadline-time_type = ttype10. headerdeadline-time_stamp_utc = utc10. headerdeadline-time_zone = zone10. APPEND headerdeadline. ENDIF. ***** HEADERDEADLINE ACTUAL D START OF SHIPMENT IF ttype11 <> space. headerdeadline-time_type = ttype11. headerdeadline-time_stamp_utc = utc11. headerdeadline-time_zone = zone11. APPEND headerdeadline. ENDIF. ***** HEADERDEADLINE PLANNED D END OF SHIPMENT IF ttype12 <> space. headerdeadline-time_type = ttype12. headerdeadline-time_stamp_utc = utc12. headerdeadline-time_zone = zone12. APPEND headerdeadline. ENDIF. ***** HEADERDEADLINE CURRENT D END OF SHIPMENT IF ttype13 <> space. headerdeadline-time_type = ttype13. headerdeadline-time_stamp_utc = utc13. headerdeadline-time_zone = zone13. APPEND headerdeadline. ENDIF. ************************************************************ ************************************************************ CALL FUNCTION 'BAPI_SHIPMENT_CREATE' EXPORTING headerdata = headerdata TABLES headerdeadline = headerdeadline itemdata = itemdata stagedata = stagedata stagedeadline = stagedeadline itemonstage = itemonstage address = address hdunheader = hdunheader hdunitem = hdunitem return = return. LOOP AT return. WRITE: return. ENDLOOP. *Colocar commit work para grabar
EJEMPLO 2
FORM CREAR_TRANSPORTE CHANGING o_TKNUM type TKNUM o_SUBRC. data: lt_return type TABLE OF bapiret2, ls_return like LINE OF lt_return. data: ls_headerdata LIKE BAPISHIPMENTHEADER, ls_itemdata type BAPISHIPMENTITEM, lt_itemdata type TABLE OF BAPISHIPMENTITEM, ls_HEADERDEADLINE type BAPISHIPMENTHEADERDEADLINE, lt_HEADERDEADLINE type table of BAPISHIPMENTHEADERDEADLINE. ls_headerdata-SHIPMENT_TYPE = 'ZDT'. ls_headerdata-TRANS_PLAN_PT = vttk-tplst. ls_headerdata-SHIPPING_COND = vttk-vsbed. ls_headerdata-SHIPMENT_ROUTE = vttk-route. ls_headerdata-SERVICE_AGENT_ID = vttk-tdlnr. ls_headerdata-CONTAINER_ID = vttk-signi. ls_headerdata-EXTERNAL_ID_1 = vttk-exti1. ls_headerdata-status_plan = 'X'. loop at gt_likp into gs_likp where vbeln is NOT INITIAL. ls_itemdata-DELIVERY = gs_likp-vbeln. append ls_itemdata to lt_itemdata. endloop. data ld_time(14) type c. CONCATENATE sy-datum sy-timlo into ld_time. ls_HEADERDEADLINE-TIME_TYPE = 'HDRSTPLDT'. "WSHDRTDDAT move ld_time to ls_HEADERDEADLINE-TIME_STAMP_UTC. ls_HEADERDEADLINE-time_zone = 'CHILE'. append ls_HEADERDEADLINE to lt_HEADERDEADLINE. * CALL FUNCTION 'BAPI_SHIPMENT_CREATE' EXPORTING HEADERDATA = ls_headerdata IMPORTING TRANSPORT = o_TKNUM * SHIPMENTGUID = TABLES HEADERDEADLINE = lt_HEADERDEADLINE ITEMDATA = lt_itemdata RETURN = lt_return . if o_TKNUM is INITIAL. * transporte no creado o_subrc = 1. loop at lt_return into ls_return WHERE type = 'E'. exit. endloop. if sy-subrc = 0. MESSAGE ID ls_return-id TYPE 'E' NUMBER ls_return-number WITH ls_return-MESSAGE_V1 ls_return-MESSAGE_V2 ls_return-MESSAGE_V3 ls_return-MESSAGE_V4. endif. else. o_subrc = 0. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING WAIT = 'X' IMPORTING RETURN = ls_return. * GRABA TEXTOS if ls_return is INITIAL. PERform get_texts_from_screen_and_save using o_TKNUM . else. MESSAGE ID ls_return-id TYPE 'E' NUMBER ls_return-number WITH ls_return-MESSAGE_V1 ls_return-MESSAGE_V2 ls_return-MESSAGE_V3 ls_return-MESSAGE_V4. endif. message s006(VW) with o_TKNUM. ENDIF. ENDFORM. " CREAR_TRANSPORTE
EJEMPLO 3 con embalaje
FORM CREAR_TRANSPORTE using i_unidad CHANGING o_TKNUM type TKNUM o_SUBRC. data: lt_return type TABLE OF bapiret2, ls_return like LINE OF lt_return. data: ls_headerdata LIKE BAPISHIPMENTHEADER, ls_itemdata type BAPISHIPMENTITEM, lt_itemdata type TABLE OF BAPISHIPMENTITEM, ls_HEADERDEADLINE type BAPISHIPMENTHEADERDEADLINE, lt_HEADERDEADLINE type table of BAPISHIPMENTHEADERDEADLINE. data: ls_HDUNHEADER LIKE BAPISHIPMENTHDUNHEADER, lt_HDUNHEADER like TABLE OF ls_HDUNHEADER, ls_HDUNITEM LIKE BAPISHIPMENTHDUNITEM, lt_HDUNITEM like TABLE OF ls_HDUNITEM. ls_headerdata-SHIPMENT_TYPE = gd_SHTYP. ls_headerdata-TRANS_PLAN_PT = vttk-tplst. ls_headerdata-SHIPPING_COND = vttk-vsbed. ls_headerdata-SHIPMENT_ROUTE = vttk-route. ls_headerdata-SERVICE_AGENT_ID = vttk-tdlnr. ls_headerdata-CONTAINER_ID = vttk-signi. ls_headerdata-EXTERNAL_ID_1 = vttk-exti1. move LIKP-ANZPK to ls_headerdata-TEXT_1. ls_headerdata-status_plan = 'X'. loop at gt_likp into gs_likp where vbeln is NOT INITIAL . ls_itemdata-DELIVERY = gs_likp-vbeln. append ls_itemdata to lt_itemdata. endloop. data ld_time(14) type c. CONCATENATE vttk-dtdis vttk-uzdis into ld_time. ls_HEADERDEADLINE-TIME_TYPE = 'HDRSTPLDT'. "WSHDRTDDAT move ld_time to ls_HEADERDEADLINE-TIME_STAMP_UTC. ls_HEADERDEADLINE-time_zone = 'CHILE'. append ls_HEADERDEADLINE to lt_HEADERDEADLINE. if i_unidad ne space. loop at gt_likp into gs_likp where vbeln is NOT INITIAL and sel = 'X'. clear ls_HDUNITEM. select vbeln posnr matnr lfimg into (ls_HDUNITEM-DELIV_NUMB,ls_HDUNITEM-DELIV_ITEM,ls_HDUNITEM-material,ls_HDUNITEM-PACK_QTY) from lips where vbeln = gs_likp-vbeln. ls_HDUNITEM-HDL_UNIT_EXID_INTO = '$0001'. append ls_HDUNITEM to lt_HDUNITEM. endselect. endloop. if sy-subrc = 0. ls_HDUNHEADER-SHIP_MAT = i_unidad. ls_HDUNHEADER-HDL_UNIT_EXID = '$0001'. append ls_HDUNHEADER to lt_HDUNHEADER. else. message E490(VW) WITH 'No se ha seleccionado ninguna Entrega'. endif. else. clear: lt_HDUNHEADER[], lt_HDUNITEM[]. endif. * CALL FUNCTION 'BAPI_SHIPMENT_CREATE' EXPORTING HEADERDATA = ls_headerdata IMPORTING TRANSPORT = o_TKNUM TABLES HEADERDEADLINE = lt_HEADERDEADLINE ITEMDATA = lt_itemdata HDUNHEADER = lt_HDUNHEADER HDUNITEM = lt_HDUNITEM RETURN = lt_return . if o_TKNUM is INITIAL. * transporte no creado o_subrc = 1. loop at lt_return into ls_return WHERE type = 'E'. exit. endloop. if sy-subrc = 0. MESSAGE ID ls_return-id TYPE 'E' NUMBER ls_return-number WITH ls_return-MESSAGE_V1 ls_return-MESSAGE_V2 ls_return-MESSAGE_V3 ls_return-MESSAGE_V4. endif. else. o_subrc = 0. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING WAIT = 'X' IMPORTING RETURN = ls_return. * GRABA TEXTOS if ls_return is INITIAL. PERform get_texts_from_screen_and_save using o_TKNUM . else. MESSAGE ID ls_return-id TYPE 'E' NUMBER ls_return-number WITH ls_return-MESSAGE_V1 ls_return-MESSAGE_V2 ls_return-MESSAGE_V3 ls_return-MESSAGE_V4. endif. message s006(VW) with o_TKNUM. ENDIF. ENDFORM. " CREAR_TRANSPORTE
Modificar Transporte
- Modificar estado transporte
DATA: l_it_header TYPE bapishipmentheader, l_it_headeraction TYPE bapishipmentheaderaction, l_it_return TYPE TABLE OF bapiret2. DATA: l_wa_return TYPE bapiret2. l_it_header-shipment_num = shipment. l_it_headeraction-shipment_num = 'X'. l_it_header-status_shpmnt_start = 'X'. l_it_headeraction-status_shpmnt_start = 'C'. CALL FUNCTION 'BAPI_SHIPMENT_CHANGE' EXPORTING headerdata = l_it_header headerdataaction = l_it_headeraction TABLES return = l_it_return.
bloquear patente ( VTTK-SIGNI )
FORM BLOQUEAR_PATENTE . data : lt_SYSTEM_STATUS type TABLE OF BAPI_ITOB_STATUS WITH HEADER LINE, lt_USER_STATUS type TABLE OF BAPI_ITOB_STATUS WITH HEADER LINE. data wa_return type bapiret2. data: l_equi type EQUNR, l_objnr type JSTO-OBJNR, l_stat_e LIKE jest-stat. move wa_vttk-signi to l_equi. CALL FUNCTION 'BAPI_EQUI_GETSTATUS' EXPORTING EQUIPMENT = l_equi IMPORTING RETURN = wa_return TABLES SYSTEM_STATUS = lt_system_status USER_STATUS = lt_user_status . if wa_return is NOT INITIAL. write:/ 'Transporte:', wa_vttk-tknum, 'Error leer estado Patente:', wa_vttk-signi, wa_return-MESSAGE(80). gd_bloqueado = co_no_aplica. return. endif. loop at lt_USER_STATUS TRANSPORTING NO FIELDS WHERE status = 'E0001'. ENDLOOP. if sy-subrc = 0. CONCATENATE 'IE' wa_vttk-signi into l_objnr. move 'E0002' to l_stat_e. CALL FUNCTION 'STATUS_CHANGE_EXTERN' EXPORTING OBJNR = l_objnr USER_STATUS = l_stat_e EXCEPTIONS OBJECT_NOT_FOUND = 1 STATUS_INCONSISTENT = 2 STATUS_NOT_ALLOWED = 3 OTHERS = 4 . IF SY-SUBRC <> 0. write:/ 'Transporte:', wa_vttk-tknum, 'Error bloqueo patente:', wa_vttk-signi. else. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING WAIT = 'X' . write:/ 'Transporte:', wa_vttk-tknum, 'Patente bloqueada con exito:', wa_vttk-signi. gd_bloqueado = co_yes. add 1 to gd_num_bloqueados. ENDIF. else. gd_bloqueado = co_no_aplica. endif. ENDFORM. " BLOQUEAR_PATENTE