Thursday, 25 January 2024

VA21 Create Quotation FM BAPI_ALM_ORDER_MAINTAIN

 


refresh lt_methods.
  clear ls_methods.

  ls_methods-refnumber '000001'.
  ls_methods-objecttype 'HEADER'.
  ls_methods-method 'CREATETONOTIF'.
  ls_methods-objectkey '%00000000001'.
  insert ls_methods into table lt_methods.

  ls_methods-refnumber '000001'.
  ls_methods-objecttype 'PARTNER'.
  ls_methods-method 'CREATE'.
  insert ls_methods into table lt_methods.

  ls_methods-refnumber '000001'.
  ls_methods-objecttype 'OPERATION'.
  ls_methods-method 'CREATE'.
  ls_methods-objectkey '%00000000001'.
  insert ls_methods into table lt_methods.

  clear ls_methods.
  ls_methods-refnumber '000001'.
  ls_methods-objectkey '%00000000001'.
  ls_methods-method 'SAVE'.
  insert ls_methods into table lt_methods.

*Header
  loop at it_dat1 into wa_dat1.
    ls_header-orderid '%00000000001'.
    ls_header-order_type wa_dat1-col_01.
    ls_header-bus_area   wa_dat1-col_02.
    ls_header-short_text   wa_dat1-col_03.
    ls_header-planplant  '2000'.
    ls_header-mn_wk_ctr  =  wa_dat1-col_04.

    concatenate wa_dat1-col_05+4(4wa_dat1-col_05+2(2)
    wa_dat1-col_05(2into wa_dat1-col_05.
    ls_header-start_date  =  wa_dat1-col_05.

    concatenate wa_dat1-col_06+4(4wa_dat1-col_06+2(2)
    wa_dat1-col_06(2into wa_dat1-col_06.
    ls_header-finish_date wa_dat1-col_06 .

    ls_header-salesorg   '1000'.
    ls_header-distr_chan wa_dat1-col_08"'40'.
    ls_header-division   =   wa_dat1-col_09.

    ls_header-pmacttype  '003'.
    insert ls_header into table lt_header.

  endloop.

  ls_header_up-orderid '%00000000001'.
  ls_header_up-notif_no 'X'.
*    ls_header_up-order_type = 'X'.
  ls_header_up-bus_area 'X'.
  ls_header-short_text 'X'.
*    ls_header_up-planplant = 'X'.
  ls_header_up-mn_wk_ctr  'X'.
  ls_header_up-start_date 'X'.
  ls_header_up-finish_date 'X'.

  ls_header_up-salesorg    'X'.
  ls_header_up-distr_chan  'X'.
  ls_header_up-division    'X'.
  ls_header_up-pmacttype   'X'.
  insert ls_header_up into table lt_header_up.

  ls_partner-orderid '%00000000001'.
  ls_partner-partn_role 'AG'.
  ls_partner-partner g_sldpty "'0001012090'.
  append ls_partner to it_partner.

  ls_partner_up-partner 'X'.
  append ls_partner_up to it_partner_up.

*Operation
  loop at it_dat2 into wa_dat2.

    ls_operation-activity     '0010'.
    ls_operation-control_key  'INT' ."wa_dat2-col_01.
    ls_operation-plant        '2000'.
    ls_operation-work_cntr    =  g_wrkctr.
    ls_operation-description  =  wa_dat2-col_02.
    ls_operation-strttimcon   =  sy-uzeit.
*    ls_operation-fintimcons   = SY-UZEIT. "G_ENDT.

*    External
    ls_operation-quantity   =  wa_dat2-col_03.
    ls_operation-price      wa_dat2-col_04 / 100.
    ls_operation-currency   'IDR'.
    ls_operation-base_uom 'UNT'.
    ls_operation-price_unit '1'.
    concatenate '000' wa_dat2-col_08 into wa_dat2-col_08.
    ls_operation-vendor_no  wa_dat2-col_08.
    ls_operation-preq_name   sy-uname.
    ls_operation-trackingno  wa_dat2-col_09"wa_dat2-col_02.  "
    ls_operation-matl_group  wa_dat2-col_05.

    ls_operation-pur_group wa_dat2-col_06.
    ls_operation-purch_org '1000'.

    ls_operation-constraint_type_start =  '1'.
    ls_operation-start_cons  sy-datum"wa_dat2-COL_14.

*   only for Int
    ls_operation-pers_no =  g_person"wa_dat2-col_08.

    insert ls_operation into table lt_operation.

    ls_operation_up-activity 'X'.
    ls_operation_up-control_key 'X'.
    ls_operation_up-plant =  'X'.
    ls_operation_up-work_cntr 'X'.
    ls_operation_up-description 'X'.
    ls_operation_up-strttimcon =   'X'.
    ls_operation_up-quantity =   'X'.
    ls_operation_up-price =   'X'.
    ls_operation_up-base_uom =  'X'.
    ls_operation_up-currency =   'X'.
    ls_operation_up-price_unit =   'X'.
    ls_operation_up-vendor_no  =   'X'.
    ls_operation_up-preq_name  =   'X'.
    ls_operation_up-trackingno =   'X'.
    ls_operation_up-matl_group  =  'X'.
    ls_operation_up-pur_group =    'X'.
    ls_operation_up-purch_org =     'X'.
    ls_operation_up-fintimcons =   'X'.
*  ls_operation_up-mrp_relevant = 'X'.
    ls_operation_up-constraint_type_start  =  'X'.
    ls_operation_up-start_cons  =  'X'.
    ls_operation_up-pers_no 'X'.
    insert ls_operation_up into table lt_operation_up.

  endloop.

  clear ls_component.
  loop at it_dat4 into wa_dat4.
*-- Component Mapping
    ls_methods-refnumber wa_dat4-col_22 .
    ls_methods-objecttype 'COMPONENT'.
    ls_methods-method 'CREATE'.
    ls_methods-objectkey '%000000000010010'.
    append ls_methods to lt_methods.

    ls_component-activity '0010'.
    ls_component-material wa_dat4-col_10.
    ls_component-price    wa_dat4-col_04 / 100.
    ls_component-price_unit '1'.
    ls_component-requirement_quantity wa_dat4-col_03.

    concatenate '000' wa_dat4-col_08 into wa_dat4-col_08.
    ls_component-vendor_no  wa_dat4-col_08.

*Mrp
    if wa_dat4-col_02(3'EXT'.
    else.  "Internal
      if  wa_dat4-col_20 is not initial.
        ls_component-mrp_relevant '1'.
      endif.
    endif.

    ls_component-preq_name sy-uname.
    ls_component-plant '2000'.
    ls_component-pur_group wa_dat4-col_06.
    ls_component-matl_group wa_dat4-col_05.
    ls_component-purch_org '1000'.
    ls_component-item_number wa_dat4-col_21.
    ls_component-trackingno =  g_ope_desc"WA_DAT4-COL_09
    ls_component-stge_loc wa_dat4-col_12.
    append ls_component to lt_component.
  endloop.

  clear ls_component_up.
  ls_component_up-activity 'X'.
  ls_component_up-material 'X'.
  ls_component_up-price    'X'.
  ls_component_up-price_unit 'X'.
  ls_component_up-requirement_quantity =  'X'.
  ls_component_up-requirement_quantity_unit =  'X'.
  ls_component_up-vendor_no 'X'.
  ls_component_up-preq_name =  'X'.

  ls_component_up-mrp_relevant =  'X'.
  ls_component_up-plant =  'X'.
  ls_component_up-pur_group =  'X'.
  ls_component_up-matl_group =  'X'.
  ls_component_up-purch_org =  'X'.
  ls_component_up-item_number 'X'.
  ls_operation_up-mrp_relevant 'X'.
  ls_component_up-stge_loc 'X'.
  ls_component_up-trackingno 'X'.
  append ls_component_up to lt_component_up.

  call function 'BAPI_ALM_ORDER_MAINTAIN'
    tables
      it_methods      lt_methods
      it_header       lt_header
      it_header_up    lt_header_up
      it_operation    lt_operation
      it_operation_up lt_operation_up
      it_component    lt_component
      it_component_up lt_component_up
      it_partner      it_partner
      it_partner_up   it_partner_up
      return          lt_return
      et_numbers      lt_numbers.

  loop at lt_return into ls_return..
    if ls_return-type eq 'E'.
      g_error 'SVO'.
      lt_error-text =  g_svo_desc.
      lt_error-text2 ls_return-message.
      append lt_error.
      perform send_s.
      message ' Fail Create SVO' type 'S'.
      stop.
    else.
      call function 'BAPI_TRANSACTION_COMMIT'
        exporting
          wait 'X'.
      if ls_return-message_v2(1'9'.
        g_aufnr ls_return-message_v2.
      endif.
    endif.
  endloop.








Visitor

Code Syntax Try...Endtry

  Code : Report Try. Parameters  NUMBER  type  I . data  RESULT  type  P  decimals  2 . data  OREF  type  ref  to  CX_ROOT . data  TEXT  typ...