You are on page 1of 9

BDC - Sales order - VA01

REPORT z409_so_bdc.

*include bdcrecx1.
DATA: bdcdata TYPE TABLE OF bdcdata WITH HEADER LINE,
      messtab TYPE TABLE OF bdcmsgcoll WITH HEADER LINE.
DATA: lv_hdr_s TYPE string,
      lv_itm_s TYPE string.

DATA: BEGIN OF wa_hdr,
        ind(1),
* data element: AUART
        auart(004),
* data element: VKORG
        vkorg(004),
* data element: VTWEG
        vtweg(002),
* data element: SPART
        spart(002),
* data element: KUNAG
        kunnr(010),
      END OF wa_hdr.

DATA: it_hdr LIKE TABLE OF wa_hdr.

DATA: BEGIN OF wa_itm,
        ind(1),
* data element: MATNR
        mabnr(018),
* data element: KWMENG
        kwmeng(019),
* data element: WERKS_EXT
        werks(004),
     END OF wa_itm.
DATA: it_itm LIKE TABLE OF wa_itm.
*** End generated data section ***

DATA: lv_cnt(2) TYPE n,
      lv_cnt_c(2),
      lv_fname TYPE string.

PARAMETERS: lv_hdr TYPE ibipparms-path,
            lv_itm TYPE ibipparms-path.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR lv_hdr.
  CALL FUNCTION 'F4_FILENAME'
    EXPORTING
      program_name  = syst-cprog
      dynpro_number = syst-dynnr
      field_name    = 'LV_HDR'
    IMPORTING
      file_name     = lv_hdr.
  lv_hdr_s = lv_hdr.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR lv_itm.
  CALL FUNCTION 'F4_FILENAME'
    EXPORTING
      program_name  = syst-cprog
      dynpro_number = syst-dynnr
      field_name    = 'LV_ITM'
    IMPORTING
      file_name     = lv_itm.
  lv_itm_s = lv_itm.

START-OF-SELECTION.

  CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
      filename                      = lv_hdr_s
     filetype                      = 'ASC'
     has_field_separator           = '#'
*   HEADER_LENGTH                 = 0
*   READ_BY_LINE                  = 'X'
*   DAT_MODE                      = ' '
*   CODEPAGE                      = ' '
*   IGNORE_CERR                   = ABAP_TRUE
*   REPLACEMENT                   = '#'
*   CHECK_BOM                     = ' '
*   VIRUS_SCAN_PROFILE            =
*   NO_AUTH_CHECK                 = ' '
* IMPORTING
*   FILELENGTH                    =
*   HEADER                        =
    TABLES
      data_tab                      = it_hdr
* EXCEPTIONS
*   FILE_OPEN_ERROR               = 1
*   FILE_READ_ERROR               = 2
*   NO_BATCH                      = 3
*   GUI_REFUSE_FILETRANSFER       = 4
*   INVALID_TYPE                  = 5
*   NO_AUTHORITY                  = 6
*   UNKNOWN_ERROR                 = 7
*   BAD_DATA_FORMAT               = 8
*   HEADER_NOT_ALLOWED            = 9
*   SEPARATOR_NOT_ALLOWED         = 10
*   HEADER_TOO_LONG               = 11
*   UNKNOWN_DP_ERROR              = 12
*   ACCESS_DENIED                 = 13
*   DP_OUT_OF_MEMORY              = 14
*   DISK_FULL                     = 15
*   DP_TIMEOUT                    = 16
*   OTHERS                        = 17
            .
  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
  CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
      filename                      = lv_itm_s
     filetype                      = 'ASC'
     has_field_separator           = '#'
*   HEADER_LENGTH                 = 0
*   READ_BY_LINE                  = 'X'
*   DAT_MODE                      = ' '
*   CODEPAGE                      = ' '
*   IGNORE_CERR                   = ABAP_TRUE
*   REPLACEMENT                   = '#'
*   CHECK_BOM                     = ' '
*   VIRUS_SCAN_PROFILE            =
*   NO_AUTH_CHECK                 = ' '
* IMPORTING
*   FILELENGTH                    =
*   HEADER                        =
    TABLES
      data_tab                      = it_itm
* EXCEPTIONS
*   FILE_OPEN_ERROR               = 1
*   FILE_READ_ERROR               = 2
*   NO_BATCH                      = 3
*   GUI_REFUSE_FILETRANSFER       = 4
*   INVALID_TYPE                  = 5
*   NO_AUTHORITY                  = 6
*   UNKNOWN_ERROR                 = 7
*   BAD_DATA_FORMAT               = 8
*   HEADER_NOT_ALLOWED            = 9
*   SEPARATOR_NOT_ALLOWED         = 10
*   HEADER_TOO_LONG               = 11
*   UNKNOWN_DP_ERROR              = 12
*   ACCESS_DENIED                 = 13
*   DP_OUT_OF_MEMORY              = 14
*   DISK_FULL                     = 15
*   DP_TIMEOUT                    = 16
*   OTHERS                        = 17
            .
  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

  LOOP AT it_hdr INTO wa_hdr.

    PERFORM bdc_dynpro      USING 'SAPMV45A' '0101'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'VBAK-VKORG'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '/00'.
    PERFORM bdc_field       USING 'VBAK-AUART'
                                  wa_hdr-auart.
    PERFORM bdc_field       USING 'VBAK-VKORG'
                                  wa_hdr-vkorg.
    PERFORM bdc_field       USING 'VBAK-VTWEG'
                                  wa_hdr-vtweg.
    PERFORM bdc_field       USING 'VBAK-SPART'
                                  wa_hdr-spart.
    PERFORM bdc_dynpro      USING 'SAPMV45A' '4001'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '/00'.
    PERFORM bdc_field       USING 'KUAGV-KUNNR'
                                  wa_hdr-kunnr.

    LOOP AT it_itm INTO wa_itm WHERE ind = wa_hdr-ind.

      lv_cnt = lv_cnt + 1.
      lv_cnt_c = lv_cnt.

      CONCATENATE 'RV45A-MABNR(' lv_cnt_c ')' INTO lv_fname.
      PERFORM bdc_field       USING lv_fname
                                    wa_itm-mabnr.
      CONCATENATE 'RV45A-KWMENG(' lv_cnt_c ')' INTO lv_fname.
      PERFORM bdc_field       USING lv_fname
                                    wa_itm-kwmeng.
      CONCATENATE 'RV45A-WERKS(' lv_cnt_c ')' INTO lv_fname.
      PERFORM bdc_field       USING lv_fname
                                    wa_itm-werks.
      PERFORM bdc_dynpro      USING 'SAPMV45A' '4001'.
      PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '/00'.
      IF lv_cnt = 5.
        lv_cnt = 1.
      ENDIF.

    ENDLOOP.
*perform bdc_dynpro      using 'SAPMV45A' '4001'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '=SICH'.
    PERFORM bdc_transaction USING 'VA01'.
  ENDLOOP.

*perform bdc_field       using 'KUWEV-KUNNR'
*                              record-KUNNR_006.
*perform bdc_field       using 'RV45A-KETDAT'
*                              record-KETDAT_007.
*perform bdc_field       using 'RV45A-KPRGBZ'
*                              record-KPRGBZ_008.
*perform bdc_field       using 'VBKD-PRSDT'
*                              record-PRSDT_009.
*perform bdc_field       using 'BDC_CURSOR'
*                              'VBAP-WERKS(01)'.
*perform bdc_field       using 'RV45A-MABNR(01)'
*                              record-MABNR_01_010.
*perform bdc_field       using 'RV45A-KWMENG(01)'
*                              record-KWMENG_01_011.
*perform bdc_field       using 'VBAP-WERKS(01)'
*                              record-WERKS_01_012.
*perform bdc_dynpro      using 'SAPMV45A' '4001'.
*perform bdc_field       using 'BDC_OKCODE'
*                              '/00'.
*perform bdc_field       using 'KUAGV-KUNNR'
*                              record-KUNNR_013.
*perform bdc_field       using 'KUWEV-KUNNR'
*                              record-KUNNR_014.
*perform bdc_field       using 'RV45A-KETDAT'
*                              record-KETDAT_015.
*perform bdc_field       using 'RV45A-KPRGBZ'
*                              record-KPRGBZ_016.
*perform bdc_field       using 'VBKD-PRSDT'
*                              record-PRSDT_017.
*perform bdc_field       using 'VBKD-ZTERM'
*                              record-ZTERM_018.
*perform bdc_field       using 'VBKD-INCO1'
*                              record-INCO1_019.
*perform bdc_field       using 'VBKD-INCO2'
*                              record-INCO2_020.
*perform bdc_field       using 'BDC_CURSOR'
*                              'VBAP-WERKS(02)'.
*perform bdc_field       using 'RV45A-MABNR(02)'
*                              record-MABNR_02_021.
*perform bdc_field       using 'RV45A-KWMENG(02)'
*                              record-KWMENG_02_022.
*perform bdc_field       using 'VBAP-WERKS(02)'
*                              record-WERKS_02_023.
*perform bdc_dynpro      using 'SAPMV45A' '4001'.
*perform bdc_field       using 'BDC_OKCODE'
*                              '/00'.
*perform bdc_field       using 'KUAGV-KUNNR'
*                              record-KUNNR_024.
*perform bdc_field       using 'KUWEV-KUNNR'
*                              record-KUNNR_025.
*perform bdc_field       using 'RV45A-KETDAT'
*                              record-KETDAT_026.
*perform bdc_field       using 'RV45A-KPRGBZ'
*                              record-KPRGBZ_027.
*perform bdc_field       using 'VBKD-PRSDT'
*                              record-PRSDT_028.
*perform bdc_field       using 'VBKD-ZTERM'
*                              record-ZTERM_029.
*perform bdc_field       using 'VBKD-INCO1'
*                              record-INCO1_030.
*perform bdc_field       using 'VBKD-INCO2'
*                              record-INCO2_031.
*perform bdc_field       using 'BDC_CURSOR'
*                              'RV45A-MABNR(02)'.
*perform bdc_field       using 'RV45A-MABNR(02)'
*                              record-MABNR_02_032.
*perform bdc_field       using 'RV45A-KWMENG(02)'
*                              record-KWMENG_02_033.
*perform bdc_field       using 'VBAP-WERKS(02)'
*                              record-WERKS_02_034.
*perform bdc_dynpro      using 'SAPMV45A' '4001'.
*perform bdc_field       using 'BDC_OKCODE'
*                              '/00'.
*perform bdc_field       using 'KUAGV-KUNNR'
*                              record-KUNNR_035.
*perform bdc_field       using 'KUWEV-KUNNR'
*                              record-KUNNR_036.
*perform bdc_field       using 'RV45A-KETDAT'
*                              record-KETDAT_037.
*perform bdc_field       using 'RV45A-KPRGBZ'
*                              record-KPRGBZ_038.
*perform bdc_field       using 'VBKD-PRSDT'
*                              record-PRSDT_039.
*perform bdc_field       using 'VBKD-ZTERM'
*                              record-ZTERM_040.
*perform bdc_field       using 'VBKD-INCO1'
*                              record-INCO1_041.
*perform bdc_field       using 'VBKD-INCO2'
*                              record-INCO2_042.
*perform bdc_field       using 'BDC_CURSOR'
*                              'VBAP-WERKS(02)'.
*perform bdc_field       using 'RV45A-MABNR(02)'
*                              record-MABNR_02_043.
*perform bdc_field       using 'RV45A-KWMENG(02)'
*                              record-KWMENG_02_044.
*perform bdc_field       using 'VBAP-WERKS(02)'
*                              record-WERKS_02_045.
*perform bdc_dynpro      using 'SAPMV45A' '4001'.
*perform bdc_field       using 'BDC_OKCODE'
*                              '/00'.
*perform bdc_field       using 'KUAGV-KUNNR'
*                              record-KUNNR_046.
*perform bdc_field       using 'KUWEV-KUNNR'
*                              record-KUNNR_047.
*perform bdc_field       using 'RV45A-KETDAT'
*                              record-KETDAT_048.
*perform bdc_field       using 'RV45A-KPRGBZ'
*                              record-KPRGBZ_049.
*perform bdc_field       using 'VBKD-PRSDT'
*                              record-PRSDT_050.
*perform bdc_field       using 'VBKD-ZTERM'
*                              record-ZTERM_051.
*perform bdc_field       using 'VBKD-INCO1'
*                              record-INCO1_052.
*perform bdc_field       using 'VBKD-INCO2'
*                              record-INCO2_053.
*perform bdc_field       using 'BDC_CURSOR'
*                              'VBAP-WERKS(02)'.
*perform bdc_field       using 'RV45A-MABNR(02)'
*                              record-MABNR_02_054.
*perform bdc_field       using 'RV45A-KWMENG(02)'
*                              record-KWMENG_02_055.
*perform bdc_field       using 'VBAP-WERKS(02)'
*                              record-WERKS_02_056.
*perform bdc_dynpro      using 'SAPMV45A' '4001'.
*perform bdc_field       using 'BDC_OKCODE'
*                              '/00'.
*perform bdc_field       using 'KUAGV-KUNNR'
*                              record-KUNNR_057.
*perform bdc_field       using 'KUWEV-KUNNR'
*                              record-KUNNR_058.
*perform bdc_field       using 'RV45A-KETDAT'
*                              record-KETDAT_059.
*perform bdc_field       using 'RV45A-KPRGBZ'
*                              record-KPRGBZ_060.
*perform bdc_field       using 'VBKD-PRSDT'
*                              record-PRSDT_061.
*perform bdc_field       using 'VBKD-ZTERM'
*                              record-ZTERM_062.
*perform bdc_field       using 'VBKD-INCO1'
*                              record-INCO1_063.
*perform bdc_field       using 'VBKD-INCO2'
*                              record-INCO2_064.
*perform bdc_field       using 'BDC_CURSOR'
*                              'VBAP-WERKS(02)'.
*perform bdc_field       using 'RV45A-MABNR(02)'
*                              record-MABNR_02_065.
*perform bdc_field       using 'RV45A-KWMENG(02)'
*                              record-KWMENG_02_066.
*perform bdc_field       using 'VBAP-WERKS(02)'
*                              record-WERKS_02_067.
*perform bdc_dynpro      using 'SAPMV45A' '4001'.
*perform bdc_field       using 'BDC_OKCODE'
*                              '/00'.
*perform bdc_field       using 'KUAGV-KUNNR'
*                              record-KUNNR_068.
*perform bdc_field       using 'KUWEV-KUNNR'
*                              record-KUNNR_069.
*perform bdc_field       using 'RV45A-KETDAT'
*                              record-KETDAT_070.
*perform bdc_field       using 'RV45A-KPRGBZ'
*                              record-KPRGBZ_071.
*perform bdc_field       using 'VBKD-PRSDT'
*                              record-PRSDT_072.
*perform bdc_field       using 'VBKD-ZTERM'
*                              record-ZTERM_073.
*perform bdc_field       using 'VBKD-INCO1'
*                              record-INCO1_074.
*perform bdc_field       using 'VBKD-INCO2'
*                              record-INCO2_075.
*perform bdc_field       using 'BDC_CURSOR'
*                              'VBAP-WERKS(02)'.
*perform bdc_field       using 'RV45A-MABNR(02)'
*                              record-MABNR_02_076.
*perform bdc_field       using 'RV45A-KWMENG(02)'
*                              record-KWMENG_02_077.
*perform bdc_field       using 'VBAP-WERKS(02)'
*                              record-WERKS_02_078.
*perform bdc_dynpro      using 'SAPMV45A' '4001'.
*perform bdc_field       using 'BDC_OKCODE'
*                              '=SICH'.
*perform bdc_field       using 'KUAGV-KUNNR'
*                              record-KUNNR_079.
*perform bdc_field       using 'KUWEV-KUNNR'
*                              record-KUNNR_080.
*perform bdc_field       using 'RV45A-KETDAT'
*                              record-KETDAT_081.
*perform bdc_field       using 'RV45A-KPRGBZ'
*                              record-KPRGBZ_082.
*perform bdc_field       using 'VBKD-PRSDT'
*                              record-PRSDT_083.
*perform bdc_field       using 'VBKD-ZTERM'
*                              record-ZTERM_084.
*perform bdc_field       using 'VBKD-INCO1'
*                              record-INCO1_085.
*perform bdc_field       using 'VBKD-INCO2'
*                              record-INCO2_086.
*perform bdc_field       using 'BDC_CURSOR'
*                              'RV45A-MABNR(02)'.
*perform bdc_transaction using 'VA01'.
*
*enddo.
*
*perform close_group.
*perform close_dataset using dataset.

FORM bdc_field USING fnam fval.
*  IF FVAL <> NODATA.
  CLEAR bdcdata.
  bdcdata-fnam = fnam.
  bdcdata-fval = fval.
  APPEND bdcdata.
*  ENDIF.
ENDFORM.                    "BDC_FIELD

*&---------------------------------------------------------------------
*
*&      Form  BDC_DYNPRO
*&---------------------------------------------------------------------
*
*       text
*----------------------------------------------------------------------
*
*      -->PROGRAM    text
*      -->DYNPRO     text
*----------------------------------------------------------------------
*
FORM bdc_dynpro USING program dynpro.
  CLEAR bdcdata.
  bdcdata-program  = program.
  bdcdata-dynpro   = dynpro.
  bdcdata-dynbegin = 'X'.
  APPEND bdcdata.
ENDFORM.                    "BDC_DYNPRO
*&---------------------------------------------------------------------
*
*&      Form  BDC_TRANSACTION
*&---------------------------------------------------------------------
*
*       text
*----------------------------------------------------------------------
*
*      -->P_0223   text
*----------------------------------------------------------------------
*
FORM bdc_transaction  USING    value(p_0223).
  REFRESH messtab.
  CALL TRANSACTION p_0223 USING bdcdata
                   MODE   'A'
                   UPDATE 'S'
                   MESSAGES INTO messtab.
ENDFORM.                    " BDC_TRANSACTION

You might also like