Tuesday, November 21, 2023

BDC Upload Program Snippet

 TOP Include : 

TYPE-POOLS slis.
TYPES BEGIN OF str_tab,
          "Our Structure/template for upload goes here."
        END OF str_tab.

DATA:   bdcdata LIKE bdcdata    OCCURS WITH HEADER LINE.
DATA:   messtab LIKE bdcmsgcoll OCCURS WITH HEADER LINE.
DATA wa_messtab TYPE bdcmsgcoll,
       gv_msg     TYPE string.
DATA it_itab TYPE TABLE OF str_tab.
DATA it_itab1 TYPE TABLE OF str_tab.
TYPESBEGIN OF ty_msg,
         DOC TYPE vblnr,
         type   TYPE char1,
         msg    TYPE char255,
       END OF ty_msg.

DATAlt_msg TYPE TABLE OF ty_msg,
      ls_msg TYPE ty_msg.

DATAnodata TYPE VALUE '/'.

DATActu    TYPE VALUE 'X',
      mode   TYPE VALUE 'N',
      update TYPE VALUE 'S'.

DATAmess     TYPE TABLE OF bdcmsgcoll,
      msg(255TYPE c.

DATAwa_layout TYPE lvc_s_layo.
DATAlv_flag TYPE char1.


 Selection Screen Include :  

SELECTION-SCREEN BEGIN OF BLOCK sel.

  PARAMETERSfilename LIKE rlgrap-filename OBLIGATORY.
  PARAMETERSp_srow TYPE i.
  PARAMETERSp_erow TYPE i.

SELECTION-SCREEN END OF BLOCK sel.


Forms Include :  

FORM file_f4  CHANGING p_filename.

  CALL FUNCTION 'F4_FILENAME'
    EXPORTING
      program_name  syst-cprog
      dynpro_number syst-dynnr
*
      field_name    ' '
    IMPORTING
      file_name     filename.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form tab_file_upd
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM tab_file_upd .

  DATA it_data TYPE TABLE OF alsmex_tabline.
  DATA wa_data TYPE alsmex_tabline.
  DATA wa_itab TYPE str_tab.
  DATA value TYPE cawao_s_fields-num_val.
  DATA date1 TYPE d.

  CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
    EXPORTING
      filename                filename
      i_begin_col             '1'
      i_begin_row             p_srow
      i_end_col               '30'
      i_end_row               p_erow
    TABLES
      intern                  it_data
    EXCEPTIONS
      inconsistent_parameters 1
      upload_ole              2
      OTHERS                  3.
  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_data INTO wa_data.

"Get column wise data from excel. 
    CASE wa_data-col.
      WHEN '001'.
        MOVE wa_data-value TO wa_itab-bldat.
      WHEN '002'.
        MOVE wa_data-value TO wa_itab-blart.
      
    ENDCASE.

    AT END OF row.
      APPEND wa_itab TO it_itab1.
      it_itab it_itab1.
      CLEAR wa_itab.
    ENDAT.

  ENDLOOP.


ENDFORM.
*&---------------------------------------------------------------------*
*& Form bdc_open
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM bdc_open .

  DATAlv_index     LIKE sy-tabix,
        lv_idx       LIKE sy-tabix,
        lv_fieldname TYPE string.
  DATAcount TYPE i.
  LOOP AT it_itab1 INTO DATA(wa_itab1).
    lv_idx = sy-tabix.
    CLEAR bdcdata.
    REFRESH bdcdata.

"Here goes the BDC extract from SHDB 
perform bdc_dynpro      using 'SAPMF05A' '0110'.
perform bdc_field       using 'BDC_CURSOR'
                              'BSEG-VALUT'.

"End of BDC extract 

    CALL TRANSACTION 'Tcode_name' USING bdcdata
                                MODE mode
                                UPDATE update
                                MESSAGES INTO mess.

      LOOP AT mess ASSIGNING FIELD-SYMBOL(<fs_mess>WHERE msgtyp 'E' or msgtyp 'S'.
      CALL FUNCTION 'FORMAT_MESSAGE'
        EXPORTING
          id        <fs_mess>-msgid
          lang      'EN'
          no        <fs_mess>-msgnr
          v1        <fs_mess>-msgv1
          v2        <fs_mess>-msgv2
          v3        <fs_mess>-msgv3
          v4        <fs_mess>-msgv4
        IMPORTING
          msg       gv_msg
        EXCEPTIONS
          not_found 1
          OTHERS    2.

      ls_msg-doc = lv_idx.
      ls_msg-type <fs_mess>-msgtyp.
      ls_msg-msg gv_msg.

      APPEND ls_msg TO lt_msg.
      CLEARls_msg.
      endloop.
      clear mess.

  ENDLOOP.

ENDFORM.

FORM bdc_field USING fnam fval.
  IF fval <> nodata.
    CLEAR bdcdata.
    bdcdata-fnam fnam.
    bdcdata-fval fval.
    APPEND bdcdata.
  ENDIF.
ENDFORM.
FORM bdc_dynpro USING program dynpro.
  CLEAR bdcdata.
  bdcdata-program  program.
  bdcdata-dynpro   dynpro.
  bdcdata-dynbegin 'X'.
  APPEND bdcdata.
ENDFORM.

*&---------------------------------------------------------------------*
*& Form display_log
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM display_log .
  wa_layout-cwidth_opt 'X'.
  wa_layout-zebra 'X'.

  DATA(lt_fldcatVALUE lvc_t_fcat

        fieldname 'DOC' coltext 'ID' tabname 'LT_MSG' )
        fieldname 'TYPE' coltext 'Type' tabname 'LT_MSG' )
        fieldname 'MSG' coltext 'Message' tabname 'LT_MSG' ).


  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
      i_callback_program sy-repid
*     I_CALLBACK_TOP_OF_PAGE   = ' '
*     I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
*     I_CALLBACK_HTML_END_OF_LIST       = ' '
*     I_STRUCTURE_NAME   =
*     I_BACKGROUND_ID    = ' '
*     I_GRID_TITLE       =
*     I_GRID_SETTINGS    =
      is_layout_lvc      wa_layout
      it_fieldcat_lvc    lt_fldcat "it_fieldcat
    TABLES
      t_outtab           lt_msg
    EXCEPTIONS
      program_error      1
      OTHERS             2.
  IF sy-subrc <> 0.
* Implement suitable error handling here
  ENDIF.
ENDFORM.

Main Program :  

REPORT ZBDC_UPLOAD.

INCLUDE ZFI_VEN_ADV_UPLD_TOP.
INCLUDE ZFI_VEN_ADV_UPLD_SEL.
INCLUDE ZFI_VEN_ADV_UPLD_FORM.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR filename.
  PERFORM file_f4 CHANGING filename.

START-OF-SELECTION.
  PERFORM tab_file_upd.
  PERFORM bdc_open.
  PERFORM display_log.


No comments:

Post a Comment

How to Find Implemented BADIs for a Tcode in SAP

  Simple way to find implemented BADI for a TCode in SAP  First We have to find the Package for the transaction. 1.      Go to that par...