SAP SD BAPI TRANSPORTE

From SapWiki

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