Copy Condition Records(BDC)

2 篇文章 0 订阅
DATA:BEGIN OF gt_list OCCURS 0,
  kappl   LIKE a304-kappl,
  kschl   LIKE a304-kschl,
  vkorg   LIKE a304-vkorg,
  vtweg   LIKE a304-vtweg,
  matnr   LIKE a304-matnr,
  kfrst   LIKE a304-kfrst,
  datbi   LIKE a304-datbi,
  datab   LIKE a304-datab,
  kbstat  LIKE a304-kbstat,
  knumh   LIKE a304-knumh,

  newmt   LIKE ztmm022-newmt,

  icon(4)     TYPE c,
  msgtx(50)   TYPE c,
  sel	        TYPE c,
  ensel	      TYPE c,
  field_style	TYPE lvc_t_styl,
  END OF gt_list.

FORM frm_upload_a304 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.

  g_lines = lines( gt_list ).
  IF g_lines IS INITIAL.
    l_subrc = 4.
    l_msgtx = 'No records in the list.'.
    RETURN.
  ENDIF.

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

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

  DATA:
        lt_konp LIKE STANDARD TABLE OF konp WITH HEADER LINE.
  DATA:
        ls_kmein LIKE konp-kmein.

  SELECT * INTO CORRESPONDING FIELDS OF TABLE lt_konp
    FROM konp
    FOR ALL ENTRIES IN gt_list
    WHERE knumh = gt_list-knumh.
  SORT lt_konp BY knumh.

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

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

    READ TABLE lt_konp WITH KEY knumh = <f_list>-knumh BINARY SEARCH.
    IF sy-subrc <> 0.
      <f_list>-msgtx = 'Condition item is not exist!'.
      <f_list>-icon = icon_led_red.
      CONTINUE.
    ENDIF.

    CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'
      EXPORTING
        input    = lt_konp-kmein
        language = sy-langu
      IMPORTING
        output   = ls_kmein.

    REFRESH bdc_tab.
    PERFORM frm_create_bdctab USING:
                          'X'    'SAPMV13A'           '0100',
                          ' '    'RV13A-KSCHL'        'PR00',
                          ' '    'BDC_OKCODE'         '/00',

                          'X'    'SAPLV14A'           '0100',
                          ' '    'BDC_OKCODE'         '/00',
                          ' '    'RV130-SELKZ(01)'    ' ',
                          ' '    'RV130-SELKZ(03)'    'X',

                          'X'    'SAPMV13A'           '1304',
                          ' '    'KOMG-VKORG'         <f_list>-vkorg,
                          ' '    'KOMG-VTWEG'         <f_list>-vtweg,
                          ' '    'KOMG-MATNR(01)'     <f_list>-newmt,
                          ' '    'KONP-KBETR(01)'     lt_konp-kbetr,
                          ' '    'KONP-KONWA(01)'     lt_konp-konwa,
                          ' '    'KONP-KPEIN(01)'     lt_konp-kpein,
                          ' '    'KONP-KMEIN(01)'     ls_kmein,
                          ' '    'RV13A-KRECH(01)'    lt_konp-krech,
                          ' '    'RV13A-DATAB(01)'    <f_list>-datab,
                          ' '    'RV13A-DATBI(01)'    <f_list>-datbi,
                          ' '    'KONP-VALTG(01)'     lt_konp-valtg,
                          ' '    'BDC_OKCODE'         '/00',

                          'X'    'SAPMV13A'           '1304',
                          ' '    'BDC_OKCODE'         '=SICH'.

    CALL TRANSACTION 'VK11' 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>-msgtx = 'Error'.
    ELSE.
      CLEAR: <f_list>-sel,<f_list>-ensel.
      <f_list>-icon = icon_led_green.
      <f_list>-msgtx = 'Successful'.
    ENDIF.
  ENDLOOP.
ENDFORM.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值