Copy Vendor-Material Info Record Data(BDC)

2 篇文章 0 订阅
FORM frm_upload2 USING value(ps_i_tabindex) LIKE sy-tabix
                                value(pc_i_fieldname) TYPE slis_fieldname
                            CHANGING
                                 value(l_subrc) LIKE sy-subrc
                                 value(l_msgtx) TYPE msgtx.
  CLEAR:l_subrc,l_msgtx,g_lines.

  DATA:
        lt_inforecord_general	LIKE STANDARD TABLE OF eina WITH HEADER LINE,
        lt_inforecord_purchorg LIKE STANDARD TABLE OF eine WITH HEADER LINE,
        lt_query LIKE STANDARD TABLE OF rsdswhere WITH HEADER LINE,
        lt_query_eina LIKE STANDARD TABLE OF rsdswhere WITH HEADER LINE.
  DATA:
        wa_eina LIKE eina,
        wa_eine LIKE eine.
  DATA:
        l_meins TYPE meins.
  DATA:
        ls_datab(10) TYPE c,
        ls_datbi(10) TYPE c.

  READ TABLE gt_list WITH KEY sel = 'X'.
  IF sy-subrc <> 0.
    l_subrc = 0.
    l_msgtx = 'Please select at least one record'.
    RETURN.
  ENDIF.

  LOOP AT gt_list WHERE sel = 'X' AND ensel = 'X'.
    g_lines = g_lines + 1.
  ENDLOOP.

  FIELD-SYMBOLS:<f_list> LIKE LINE OF gt_list.

  LOOP AT gt_list ASSIGNING <f_list> WHERE sel = 'X' AND ensel = 'X'.
    g_tabix = sy-tabix.

    CALL FUNCTION 'ZFM_SHOW_PROGRESSBAR'
      EXPORTING
        text      = 'Converting...'
        curr_num  = g_tabix
        total_num = g_lines.

    REFRESH:
    lt_inforecord_general,
    lt_inforecord_purchorg,
    lt_query,
    lt_query_eina.
    CLEAR:
    wa_eina,
    wa_eine.

    CALL FUNCTION 'INFORECORD_GETLIST'
      EXPORTING
        vendor              = <f_list>-lifnr
        material            = <f_list>-matnr
        purch_org           = <f_list>-ekorg
        info_type           = <f_list>-esokz
        plant               = <f_list>-werks
      TABLES
        inforecord_general  = lt_inforecord_general
        inforecord_purchorg = lt_inforecord_purchorg
        t_query             = lt_query
        t_query_eina        = lt_query_eina
      EXCEPTIONS
        not_found           = 1
        OTHERS              = 2.
    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 INTO l_msgtx.
      l_subrc = sy-subrc.
      <f_list>-msg = 'Read info rec. error'.
      CLEAR <f_list>-ensel.
      <f_list>-icon = icon_led_red.
      CONTINUE.
    ENDIF.

    IF lt_inforecord_general[] IS  NOT INITIAL.
      READ TABLE lt_inforecord_general INDEX 1.
      MOVE-CORRESPONDING lt_inforecord_general TO wa_eina.
    ENDIF.
    IF lt_inforecord_purchorg[] IS NOT INITIAL.
      READ TABLE lt_inforecord_purchorg INDEX 1.
      MOVE-CORRESPONDING lt_inforecord_purchorg TO wa_eine.
    ENDIF.

    CHECK wa_eina IS NOT INITIAL AND wa_eine IS NOT INITIAL.

    CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'
      EXPORTING
        input          = wa_eina-meins
        language       = sy-langu
      IMPORTING
        output         = l_meins
      EXCEPTIONS
        unit_not_found = 1
        OTHERS         = 2.

    "BDC
    REFRESH:bdc_tab,mesgitab.
    PERFORM frm_create_bdctab USING:
                    'X'    'SAPMM06I'          '0100' ,
                    ' '    'EINA-LIFNR'       wa_eina-lifnr,
                    ' '    'EINA-MATNR'       <f_list>-newmt,
                    ' '    'EINE-EKORG'       wa_eine-ekorg,
                    ' '    'EINE-WERKS'       wa_eine-werks,
                    ' '    'EINA-INFNR'       '',
                    ' '    'RM06I-NORMB'      'X',
                    ' '    'BDC_OKCODE'        '/00',
                    'X'    'SAPMM06I'          '0101' ,
                    ' '    'EINA-MAHN1'        wa_eina-mahn1,
                    ' '    'EINA-MAHN2'        wa_eina-mahn2,
                    ' '    'EINA-MAHN3'        wa_eina-mahn3,
                    ' '    'EINA-IDNLF'        wa_eina-idnlf,
                    ' '    'EINA-LTSNR'        wa_eina-ltsnr,
                    "' '    'EINA-LTSSF'        wa_eina-ltssf,
                    ' '    'EINA-WGLIF'        wa_eina-wglif,
                    ' '    'EINA-ANZPU'        wa_eina-anzpu,
                    ' '    'EINA-PUNEI'        wa_eina-punei,
                    ' '    'EINA-VERKF'        wa_eina-verkf,
                    ' '    'EINA-TELF1'        wa_eina-telf1,
                    ' '    'EINA-RUECK'        wa_eina-rueck,
                    ' '    'EINA-KOLIF'        wa_eina-kolif,
                    "' '    'EINA-MEINS'        l_meins,
                    ' '    'EINA-UMREN'        wa_eina-umren,
                    ' '    'EINA-UMREZ'        wa_eina-umrez,
                    ' '    'EINA-VABME'        wa_eina-vabme,
                    ' '    'EINA-URZTP'        wa_eina-urztp,
                    ' '    'EINA-URZNR'        wa_eina-urznr,
                    "' '    'EINA-URZDT'        wa_eina-urzdt,
                    ' '    'EINA-URZLA'        wa_eina-urzla,
                    ' '    'EINA-REGIO'        wa_eina-regio,
                    ' '    'EINA-URZZT'        wa_eina-urzzt,
                    ' '    'EINA-MFRNR'        wa_eina-mfrnr,
                    "' '    'EINA-LIFAB'        wa_eina-lifab,
                    "' '    'EINA-LIFBI'        wa_eina-lifbi,
                    ' '    'EINA-RELIF'        wa_eina-relif,
                    ' '    'BDC_OKCODE'        '/00',

                    'X'    'SAPMM06I'          '0102',
                    ' '    'EINE-APLFZ'        wa_eine-aplfz,
                    ' '    'EINE-EKGRP'        wa_eine-ekgrp,
                    ' '    'EINE-NORBM'        wa_eine-norbm,
                    ' '    'EINE-MINBM'        wa_eine-minbm,
                    ' '    'EINE-MHDRZ'        wa_eine-mhdrz,
                    ' '    'EINE-IPRKZ'        wa_eine-iprkz,
                    ' '    'EINE-EVERS'        wa_eine-evers,
                    ' '    'EINE-BWTAR'        wa_eine-bwtar,
                    ' '    'EINE-BSTMA'        wa_eine-bstma,
                    ' '    'EINE-UNTTO'        wa_eine-untto,
                    ' '    'EINE-UEBTO'        wa_eine-uebto,
                    ' '    'EINE-MTXNO'        wa_eine-mtxno,
                    ' '    'EINE-KZABS'        wa_eine-kzabs,
                    ' '    'EINE-UEBTK'        wa_eine-uebtk,
                    ' '    'EINE-WEBRE'        wa_eine-webre,
                    ' '    'EINE-XERSN'        wa_eine-xersn,
                    ' '    'EINE-BSTAE'        wa_eine-bstae,
                    ' '    'EINE-MWSKZ'        wa_eine-mwskz,
                    ' '    'EINE-EXPRF'        wa_eine-exprf,
                    ' '    'EINE-MEGRU'        wa_eine-megru,
                    ' '    'EINE-RDPRF'        wa_eine-rdprf,
                    ' '    'EINE-NETPR'        wa_eine-netpr,
                    ' '    'EINE-WAERS'        wa_eine-waers,
                    ' '    'EINE-PEINH'        wa_eine-peinh,
                    ' '    'EINE-BPUMN'        wa_eine-bpumn,
                    ' '    'EINE-BPUMZ'        wa_eine-bpumz,
                    ' '    'EINE-SKTOF'        wa_eine-sktof,
                    ' '    'EINE-BPUMN'        wa_eine-bpumn,
                    ' '    'EINE-BPUMZ'        wa_eine-bpumz,
                    ' '    'EINE-EKKOL'        wa_eine-ekkol,
                    ' '    'EINE-MEPRF'        wa_eine-meprf,
                    ' '    'EINE-INCO1'        wa_eine-inco1,
                    ' '    'EINE-INCO2'        wa_eine-inco2,
                    ' '    'BDC_OKCODE'        '/00',

                    'X'    'SAPMM06I'          '0105',
                    ' '    'BDC_OKCODE'        '/00'.
    IF <f_list>-werks IS NOT INITIAL.
      CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
        EXPORTING
          date_internal            = <f_list>-datab
        IMPORTING
          date_external            = ls_datab
        EXCEPTIONS
          date_internal_is_invalid = 1
          OTHERS                   = 2.
      IF sy-subrc <> 0.
        CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
          EXPORTING
            date_internal            = sy-datum
          IMPORTING
            date_external            = ls_datab
          EXCEPTIONS
            date_internal_is_invalid = 1
            OTHERS                   = 2.
      ENDIF.

      PERFORM frm_create_bdctab USING:
                      'X'    'SAPMM06I'          '0103',
                      ' '    'BDC_OKCODE'        '=KO',

                      'X'    'SAPMV13A'          '0201',
                      ' '    'BDC_OKCODE'        '/00',
                      ' '    'RV13A-DATAB'       ls_datab,

                      'X'    'SAPMV13A'          '0201',
                      ' '    'BDC_OKCODE'        '/00',
                      ' '    'RV13A-DATAB'       ls_datab,

                      'X'    'SAPMV13A'          '0201',
                      ' '    'BDC_OKCODE'        '=BACK',
                      ' '    'RV13A-DATAB'       ls_datab.
    ENDIF.

    PERFORM frm_create_bdctab USING:
                    'X'    'SAPMM06I'          '0103',
                    ' '    'BDC_OKCODE'        '/00',

                    'X'    'SAPLSPO1'          '0100',
                    ' '    'BDC_OKCODE'        '=YES'.

    CALL TRANSACTION 'ME11' USING bdc_tab MODE 'P' UPDATE 'S'
                             MESSAGES INTO mesgitab.
    READ TABLE mesgitab WITH KEY msgtyp = 'E'.
    IF sy-subrc = 0.
      <f_list>-icon = icon_led_red.
      <f_list>-msg = 'Error'.
    ELSE.
      <f_list>-icon = icon_led_green.
      <f_list>-msg = 'Successful'.
      READ TABLE mesgitab WITH KEY msgtyp = 'S' msgid = '06' msgnr = '331'.
      IF sy-subrc = 0.
        <f_list>-infnr_n = mesgitab-msgv1.
      ENDIF.
    ENDIF.
  ENDLOOP.
ENDFORM.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值