Monday, June 22, 2015

BDC sample 

*&---------------------------------------------------------------------*
*& Report  ZHCM_BDC_PA30_NEW
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT ZHCM_BDC_PA30_NEW.
TYPE-POOLSTRUXS,SLIS.

TYPES TRUXS_T_TEXT_DATA(4096TYPE OCCURS 0.
DATAIT_RAW TYPE TRUXS_T_TEXT_DATA.
DATAMESSTAB LIKE BDCMSGCOLL OCCURS WITH HEADER LINE.
DATABDCDATA LIKE BDCDATA    OCCURS WITH HEADER LINE.
DATAL_MSTRING(480).

TYPESBEGIN OF TY_TAB,
        PERNR(08),
        BEGDA(10),
        MASSN(02),
        MASSG(02),
        PLANS(08),
        WERKS(04),
        PERSG(01),
        PERSK(02),

        BEGDA1(10),
        ANREX(05),
        VORNA(40),
        NACHN(40),
        GESCH(01),
        GBDAT(10),
        GBORT(40),
        GBLND(03),
        SPRSL(01),
        FATXT(01),
        ANZKD(03),
        NATIO(03),
        GBDEP(04),

        BEGDA2(10),
        BTRTL(04),

       END OF TY_TAB,

*include bdcrecx1.
       BEGIN OF TY_MESSAGE,
        MESSAGE TYPE STRING,
       END OF TY_MESSAGE.


DATA IT_TAB TYPE STANDARD TABLE OF TY_TAB ,
       IT_BDCDATA LIKE BDCDATA  OCCURS WITH HEADER LINE,
       IT_MSG   TYPE STANDARD TABLE OF BDCMSGCOLL,
       WA_MSG LIKE LINE OF IT_MSG,
       S_MSG     TYPE BDCMSGCOLL ,
       WA_TAB TYPE TY_TAB.

DATAI_FIELDCAT TYPE  SLIS_T_FIELDCAT_ALV,
      WA_FIELDCATALOG TYPE SLIS_FIELDCAT_ALV,
      GD_LAYOUT    TYPE SLIS_LAYOUT_ALV,
      GD_REPID     LIKE SY-REPID.

DATA IT_SORTCAT   TYPE SLIS_T_SORTINFO_ALV.

DATALV_REC_COUNT(3VALUE 0.

DATA IT_MESSAGE TYPE TABLE OF TY_MESSAGE,
       WA_MESSAGE TYPE TY_MESSAGE.

*&--------------------- SELECTION SCREEN ------------------------------------&*

SELECTION-SCREEN BEGIN OF BLOCK BLK WITH FRAME TITLE TEXT-001.
PARAMETERSFILENAM1 TYPE  RLGRAP-FILENAME OBLIGATORY,
            P_MODE    TYPE CTU_MODE DEFAULT 'A'.
SELECTION-SCREEN END  OF BLOCK BLK.

SELECTION-SCREEN BEGIN OF BLOCK WITH FRAME .
PARAMETERS P_FRMLIN TYPE DEFAULT 2.                 " FROM LINE NO
PARAMETERS P_TOLINE TYPE DEFAULT 65000.             " TO LINE NO
PARAMETERS P_FRMCOL TYPE DEFAULT 1.                 " FROM COL NO
PARAMETERS P_TOCOL TYPE DEFAULT 57.             " TO COL NO
SELECTION-SCREEN END OF BLOCK B.

*&-------------------------------------------------------------------------&*

DATABEGIN OF IT_FILE_UPLOAD1 OCCURS 0.
        INCLUDE STRUCTURE ALSMEX_TABLINE.             " ROWS FOR TABLE WITH EXCEL DATA
DATAEND OF IT_FILE_UPLOAD1.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR FILENAM1.

  CALL FUNCTION 'F4_FILENAME'
    EXPORTING
      FIELD_NAME 'FILENAME'
    IMPORTING
      FILE_NAME  FILENAM1.

*&----------------------------------------------------------------------------&*

START-OF-SELECTION.

  CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
    EXPORTING
      FILENAME                FILENAM1
      I_BEGIN_COL             P_FRMCOL
      I_BEGIN_ROW             P_FRMLIN
      I_END_COL               P_TOCOL
      I_END_ROW               P_TOLINE
    TABLES
      INTERN                  IT_FILE_UPLOAD1
    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.

*&----------------------------------------------------------------------------&*

  SORT IT_FILE_UPLOAD1 BY ROW COL.

  LOOP AT IT_FILE_UPLOAD1.

    CASE IT_FILE_UPLOAD1-COL.

      WHEN 1.
        WA_TAB-PERNR IT_FILE_UPLOAD1-VALUE.
      WHEN 2.
        WA_TAB-BEGDA IT_FILE_UPLOAD1-VALUE .
      WHEN 3.
        WA_TAB-MASSN IT_FILE_UPLOAD1-VALUE.
      WHEN 4.
        WA_TAB-MASSG IT_FILE_UPLOAD1-VALUE.
      WHEN 5.
        WA_TAB-PLANS IT_FILE_UPLOAD1-VALUE.
      WHEN 6.
        WA_TAB-WERKS IT_FILE_UPLOAD1-VALUE.
      WHEN 7.
        WA_TAB-PERSG IT_FILE_UPLOAD1-VALUE.
      WHEN 8.
        WA_TAB-PERSK IT_FILE_UPLOAD1-VALUE.
      WHEN 9.
        WA_TAB-BEGDA1 IT_FILE_UPLOAD1-VALUE.
      WHEN 10.
        WA_TAB-ANREX IT_FILE_UPLOAD1-VALUE.
      WHEN 11.
        WA_TAB-VORNA IT_FILE_UPLOAD1-VALUE.
      WHEN 12.
        WA_TAB-NACHN IT_FILE_UPLOAD1-VALUE .
      WHEN 13.
        WA_TAB-GESCH IT_FILE_UPLOAD1-VALUE.
      WHEN 14.
        WA_TAB-GBDAT IT_FILE_UPLOAD1-VALUE.
      WHEN 15.
        WA_TAB-GBORT IT_FILE_UPLOAD1-VALUE.
      WHEN 16.
        WA_TAB-GBLND IT_FILE_UPLOAD1-VALUE.
      WHEN 17.
        WA_TAB-SPRSL IT_FILE_UPLOAD1-VALUE.
      WHEN 18.
        WA_TAB-FATXT IT_FILE_UPLOAD1-VALUE.
      WHEN 19.
        WA_TAB-ANZKD IT_FILE_UPLOAD1-VALUE.
      WHEN 20.
        WA_TAB-NATIO IT_FILE_UPLOAD1-VALUE.
      WHEN 21.
        WA_TAB-GBDEP IT_FILE_UPLOAD1-VALUE.
      WHEN 22.
        WA_TAB-BEGDA2 IT_FILE_UPLOAD1-VALUE.
      WHEN 23.
        WA_TAB-BTRTL IT_FILE_UPLOAD1-VALUE.


    ENDCASE.

    AT END OF ROW.
      APPEND WA_TAB TO IT_TAB.
      CLEARWA_TAB.
    ENDAT.
  ENDLOOP.

*  perform open_group.
  LOOP AT IT_TAB INTO WA_TAB..
    REFRESHIT_BDCDATA.


    perform bdc_dynpro      using 'SAPMP50A' '1000'.
perform bdc_field       using 'BDC_OKCODE'
                              '/00'.
perform bdc_field       using 'RP50G-PERNR'
                              WA_TAB-PERNR."'1'.
perform bdc_field       using 'BDC_CURSOR'
                              'T582S-ITEXT(01)'.
perform bdc_field       using 'RP50G-SELEC(01)'
                              'X'.
perform bdc_field       using 'RP50G-TIMR6'
                              'X'.
perform bdc_dynpro      using 'SAPMP50A' '1000'.
perform bdc_field       using 'BDC_OKCODE'
                              '=INS'.
perform bdc_field       using 'RP50G-PERNR'
                              WA_TAB-PERNR."'1'.
perform bdc_field       using 'BDC_CURSOR'
                              'T582S-ITEXT(01)'.
perform bdc_field       using 'RP50G-TIMR6'
                              'X'.
perform bdc_field       using 'RP50G-CHOIC'
                              'Actions'.
perform bdc_dynpro      using 'MP000000' '2000'.
perform bdc_field       using 'BDC_CURSOR'
                              'P0000-BEGDA'.
perform bdc_field       using 'BDC_OKCODE'
                              '=UPD'.
perform bdc_field       using 'P0000-BEGDA'
                              WA_TAB-BEGDA."'28.10.2013'.
perform bdc_field       using 'P0000-MASSN'
                              WA_TAB-BEGDA."'ZA'.
perform bdc_field       using 'P0000-MASSG'
                              WA_TAB-MASSG."'02'.
perform bdc_field       using 'PSPAR-PLANS'
                               WA_TAB-PLANS."'99999999'.
perform bdc_field       using 'PSPAR-WERKS'
                              WA_TAB-WERKS."'A001'.
perform bdc_field       using 'PSPAR-PERSG'
                              WA_TAB-PERSG."'A'.
perform bdc_field       using 'PSPAR-PERSK'
                              WA_TAB-PERSK."'E1'.
perform bdc_dynpro      using 'MP000100' '2000'.
perform bdc_field       using 'BDC_CURSOR'
                              'P0001-BTRTL'.
perform bdc_field       using 'BDC_OKCODE'
                              '/00'.
perform bdc_field       using 'P0001-BEGDA'
                              WA_TAB-BEGDA2."'28.10.2013'.
perform bdc_field       using 'P0001-ENDDA'
                              '31.12.9999'.
perform bdc_field       using 'P0001-BTRTL'
                              WA_TAB-BTRTL."'CX02'.
***perform bdc_field       using 'P0001-ABKRS'
***                              'P1'.
***perform bdc_field       using 'PPRHPR-PROZT'
***                              '100,00'.
***perform bdc_field       using 'P0001-PLANS'
***                              '99999999'.
***perform bdc_field       using 'P0001-VDSK1'
***                              'A001'.
***perform bdc_dynpro      using 'MP000100' '2000'.
***perform bdc_field       using 'BDC_CURSOR'
***                              'P0001-BEGDA'.
***perform bdc_field       using 'BDC_OKCODE'
***                              '=UPD'.
***perform bdc_field       using 'P0001-BEGDA'
***                              '28.10.2013'.
***perform bdc_field       using 'P0001-ENDDA'
***                              '31.12.9999'.
***perform bdc_field       using 'P0001-BTRTL'
***                              'CX02'.
***perform bdc_field       using 'P0001-ABKRS'
***                              'P1'.
***perform bdc_field       using 'PPRHPR-PROZT'
***                              '100,00'.
***perform bdc_field       using 'P0001-PLANS'
***                              '99999999'.
***perform bdc_field       using 'P0001-VDSK1'
***                              'A001'.
perform bdc_dynpro      using 'MP000200' '2040'.
perform bdc_field       using 'BDC_CURSOR'
                              'P0002-GBORT'.
perform bdc_field       using 'BDC_OKCODE'
                              '/00'.
perform bdc_field       using 'P0002-BEGDA'
                               WA_TAB-BEGDA1."'01.01.1979'.
perform bdc_field       using 'P0002-ENDDA'
                              '31.12.9999'.
perform bdc_field       using 'Q0002-ANREX'
                              WA_TAB-ANREX."'Mr.'.
perform bdc_field       using 'P0002-NACHN'
                              WA_TAB-NACHN."'FilLING'.
perform bdc_field       using 'P0002-VORNA'
                              WA_TAB-VORNA."'Manager'.
*perform bdc_field       using 'P0002-INITS'
*                              'a'.
perform bdc_field       using 'P0002-GESCH'
                              WA_TAB-GESCH."'1'.
perform bdc_field       using 'P0002-SPRSL'
                              WA_TAB-SPRSL."'EN'.
perform bdc_field       using 'P0002-GBDAT'
                              WA_TAB-GBDAT."'01.01.1970'.
perform bdc_field       using 'Q0002-FATXT'
                              WA_TAB-FATXT."'Single'.
perform bdc_field       using 'P0002-GBORT'
                               WA_TAB-GBORT."'DEHRADUN'.
perform bdc_field       using 'P0002-GBLND'
                              WA_TAB-GBLND."'IN'.
perform bdc_field       using 'P0002-ANZKD'
                               WA_TAB-ANZKD."'40'.
perform bdc_field       using 'P0002-GBDEP'
                               WA_TAB-GBDEP."'24'.
*perform bdc_field       using 'Q0002-KITXT'
*                              'HND'.
perform bdc_field       using 'P0002-NATIO'
                              WA_TAB-NATIO."'IN'.
***perform bdc_dynpro      using 'MP000200' '2040'.
***perform bdc_field       using 'BDC_CURSOR'
***                              'P0002-BEGDA'.
***perform bdc_field       using 'BDC_OKCODE'
***                              '=UPD'.
***perform bdc_field       using 'P0002-BEGDA'
***                              '01.01.1979'.
***perform bdc_field       using 'P0002-ENDDA'
***                              '31.12.9999'.
***perform bdc_field       using 'Q0002-ANREX'
***                              'Mr.'.
***perform bdc_field       using 'P0002-NACHN'
***                              'FilLING'.
***perform bdc_field       using 'P0002-VORNA'
***                              'Manager'.
***perform bdc_field       using 'P0002-INITS'
***                              'a'.
***perform bdc_field       using 'P0002-GESCH'
***                              '1'.
***perform bdc_field       using 'P0002-SPRSL'
***                              'EN'.
***perform bdc_field       using 'P0002-GBDAT'
***                              '01.01.1970'.
***perform bdc_field       using 'Q0002-FATXT'
***                              'Single'.
***perform bdc_field       using 'P0002-GBORT'
***                              'DEHRADUN'.
***perform bdc_field       using 'P0002-GBLND'
***                              'IN'.
***perform bdc_field       using 'P0002-ANZKD'
***                              '40'.
***perform bdc_field       using 'P0002-GBDEP'
***                              '24'.
***perform bdc_field       using 'Q0002-KITXT'
***                              'HND'.
***perform bdc_field       using 'P0002-NATIO'
***                              'IN'.
perform bdc_dynpro      using 'SAPMSSY0' '0120'.
perform bdc_field       using 'BDC_CURSOR'
                              '04/03'.
perform bdc_field       using 'BDC_OKCODE'
                              '=CANC'.
perform bdc_dynpro      using 'MP000700' '2000'.
perform bdc_field       using 'BDC_OKCODE'
                              '/EBCK'.
perform bdc_field       using 'BDC_CURSOR'
                              'P0007-BEGDA'.
perform bdc_dynpro      using 'SAPMP50A' '1100'.
perform bdc_field       using 'BDC_OKCODE'
                              '/EBCK'.
perform bdc_field       using 'BDC_CURSOR'
                              'RP50G-PERNR'.

    CALL TRANSACTION 'PA30' USING IT_BDCDATA
                                    MODE P_MODE
                                    UPDATE 'S'
                                    MESSAGES INTO IT_MSG.

    REFRESHIT_BDCDATA.
  ENDLOOP.

  DATAV_MSG(255).

  LOOP AT IT_MSG INTO S_MSG.

    CALL FUNCTION 'FORMAT_MESSAGE'
      EXPORTING
        ID        S_MSG-MSGID
        LANG      S_MSG-MSGSPRA
        NO        S_MSG-MSGNR
        V1        S_MSG-MSGV1
        V2        S_MSG-MSGV2
        V3        S_MSG-MSGV3
        V4        S_MSG-MSGV4
      IMPORTING
        MSG       WA_MESSAGE-MESSAGE
      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.
    ENDIF.
    APPEND WA_MESSAGE TO IT_MESSAGE.
    CLEAR WA_MESSAGE.

  ENDLOOP.

  IF NOT IT_MESSAGE IS INITIAL.

    PERFORM BUILD_CATALOG.
    PERFORM ALV_DISPLAY.
    PERFORM LAYOUT.

  ENDIF.

***&---------------------------------------------------------------------*
*&      FORM  BDC_DYNPRO
*&---------------------------------------------------------------------*
*       TEXT
*----------------------------------------------------------------------*
*      -->PROGRAM    TEXT
*      -->DYNPRO     TEXT
*----------------------------------------------------------------------*
FORM BDC_DYNPRO USING PROGRAM DYNPRO.

  CLEAR IT_BDCDATA.
  IT_BDCDATA-PROGRAM  PROGRAM.
  IT_BDCDATA-DYNPRO   DYNPRO.
  IT_BDCDATA-DYNBEGIN 'X'.
  APPEND IT_BDCDATA.

ENDFORM.                    "BDC_DYNPRO


*----------------------------------------------------------------------*
*        INSERT FIELD                                                  *
*----------------------------------------------------------------------*
FORM BDC_FIELD USING FNAM FVAL.
  CLEAR IT_BDCDATA.
  IT_BDCDATA-FNAM FNAM.
  IT_BDCDATA-FVAL FVAL.
  APPEND IT_BDCDATA.
ENDFORM.                    "BDC_FIELD
*&---------------------------------------------------------------------*
*&      FORM  BUILD_CATALOG
*&---------------------------------------------------------------------*
*       TEXT
*----------------------------------------------------------------------*
*  -->  P1        TEXT
*  <--  P2        TEXT
*----------------------------------------------------------------------*
FORM BUILD_CATALOG .
  WA_FIELDCATALOG-FIELDNAME   'MESSAGE'.
  WA_FIELDCATALOG-SELTEXT_M   'MESSAGE.'.
  APPEND WA_FIELDCATALOG TO I_FIELDCAT.
  CLEAR  WA_FIELDCATALOG.
ENDFORM.                    " BUILD_CATALOG
*&---------------------------------------------------------------------*
*&      FORM  ALV_DISPLAY
*&---------------------------------------------------------------------*
*       TEXT
*----------------------------------------------------------------------*
*  -->  P1        TEXT
*  <--  P2        TEXT
*----------------------------------------------------------------------*
FORM ALV_DISPLAY .

  GD_REPID SY-REPID.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_CALLBACK_PROGRAM GD_REPID
      IS_LAYOUT          GD_LAYOUT
      IT_FIELDCAT        I_FIELDCAT[]
    TABLES
      T_OUTTAB           IT_MESSAGE
    EXCEPTIONS
      PROGRAM_ERROR      1
      OTHERS             2.
  IF SY-SUBRC <> 0.
* IMPLEMENT SUITABLE ERROR HANDLING HERE
  ENDIF.


ENDFORM.                    " ALV_DISPLAY
*&---------------------------------------------------------------------*
*&      FORM  LAYOUT
*&---------------------------------------------------------------------*
*       TEXT
*----------------------------------------------------------------------*
*  -->  P1        TEXT
*  <--  P2        TEXT
*----------------------------------------------------------------------*
FORM LAYOUT .
  CLEAR GD_LAYOUT.
  GD_LAYOUT-COLWIDTH_OPTIMIZE 'X'." OPTIMIZATION OF COL WIDTH
ENDFORM.                    " LAYOUT

Friday, June 19, 2015

Simple BDC with error log


*&---------------------------------------------------------------------*
*& Report  ZHCM_BDC_IT1000_PP02_O
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT zhcm_bdc_it1000_pp02_o

       NO STANDARD PAGE HEADING LINE-SIZE 255.


TYPE-POOLStruxs,slis.

TYPES truxs_t_text_data(4096TYPE OCCURS 0.
DATAit_raw TYPE truxs_t_text_data.
DATAmesstab LIKE bdcmsgcoll OCCURS WITH HEADER LINE.
DATAbdcdata LIKE bdcdata    OCCURS WITH HEADER LINE.
DATAl_mstring(480).

TYPESBEGIN OF ty_tab,

  plvar(02),
  otype(02),
  seark(12),
  infty(04),
  istat(01),
  begda(10),
  endda(10),
  rsign(01),
  relat(03),
  sclas(02),
  sobid(45),

       END OF ty_tab,

*include bdcrecx1.
       BEGIN OF ty_message,
        message TYPE string,
       END OF ty_message.


DATA it_tab TYPE STANDARD TABLE OF ty_tab ,
       it_bdcdata LIKE bdcdata  OCCURS WITH HEADER LINE,
       it_msg   TYPE STANDARD TABLE OF bdcmsgcoll,
       wa_msg LIKE LINE OF it_msg,
       s_msg     TYPE bdcmsgcoll ,
       wa_tab TYPE ty_tab.

DATAi_fieldcat TYPE  slis_t_fieldcat_alv,
      wa_fieldcatalog TYPE slis_fieldcat_alv,
      gd_layout    TYPE slis_layout_alv,
      gd_repid     LIKE sy-repid.

DATA it_sortcat   TYPE slis_t_sortinfo_alv.

DATAlv_rec_count(3VALUE 0.

DATA it_message TYPE TABLE OF ty_message,
       wa_message TYPE ty_message.

*&--------------------- SELECTION SCREEN ------------------------------------&*

SELECTION-SCREEN BEGIN OF BLOCK blk WITH FRAME TITLE text-001.
PARAMETERSfilenam1 TYPE  rlgrap-filename OBLIGATORY,
            p_mode    TYPE ctu_mode DEFAULT 'A'.
SELECTION-SCREEN END  OF BLOCK blk.

SELECTION-SCREEN BEGIN OF BLOCK WITH FRAME .
PARAMETERS p_frmlin TYPE DEFAULT 2.                 " FROM LINE NO
PARAMETERS p_toline TYPE DEFAULT 65000.             " TO LINE NO
PARAMETERS p_frmcol TYPE DEFAULT 1.                 " FROM COL NO
PARAMETERS p_tocol TYPE DEFAULT 57.             " TO COL NO
SELECTION-SCREEN END OF BLOCK b.

*&-------------------------------------------------------------------------&*

DATABEGIN OF it_file_upload1 OCCURS 0.
        INCLUDE STRUCTURE alsmex_tabline.             " ROWS FOR TABLE WITH EXCEL DATA
DATAEND OF it_file_upload1.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR filenam1.

  CALL FUNCTION 'F4_FILENAME'
    EXPORTING
      field_name 'FILENAME'
    IMPORTING
      file_name  filenam1.

*&----------------------------------------------------------------------------&*

START-OF-SELECTION.

  CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
    EXPORTING
      filename                filenam1
      i_begin_col             p_frmcol
      i_begin_row             p_frmlin
      i_end_col               p_tocol
      i_end_row               p_toline
    TABLES
      intern                  it_file_upload1
    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.

*&----------------------------------------------------------------------------&*

  SORT it_file_upload1 BY row col.

  LOOP AT it_file_upload1.

    CASE it_file_upload1-col.

      WHEN 1.
        wa_tab-plvar it_file_upload1-value.
      WHEN 2.
        wa_tab-otype it_file_upload1-value .
      WHEN 3.
        wa_tab-seark it_file_upload1-value.
      WHEN 4.
        wa_tab-infty it_file_upload1-value.
      WHEN 5.
        wa_tab-istat it_file_upload1-value.
      WHEN 6.
        wa_tab-begda it_file_upload1-value.
      WHEN 7.
        wa_tab-endda it_file_upload1-value.
      WHEN 8.
        wa_tab-rsign it_file_upload1-value.
      WHEN 9.
        wa_tab-relat it_file_upload1-value.
      WHEN 10.
        wa_tab-sclas it_file_upload1-value.
      WHEN 11.
        wa_tab-sobid it_file_upload1-value.

    ENDCASE.

    AT END OF row.
      APPEND wa_tab TO it_tab.
      CLEARwa_tab.
    ENDAT.
  ENDLOOP.

  LOOP AT it_tab INTO wa_tab..
    REFRESHit_bdcdata.
    PERFORM bdc_dynpro      USING 'SAPMH5A0' '1000'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'PPHDR-ENDDA'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '=INSE'.
    PERFORM bdc_field       USING 'PPHDR-PLVAR'
                                  wa_tab-plvar."'01'.
    PERFORM bdc_field       USING 'PPHDR-OTYPE'
                                  wa_tab-otype."'O'.
    PERFORM bdc_field       USING 'PM0D1-SEARK'
                                  wa_tab-seark."'10000002'.
    PERFORM bdc_field       USING 'PPHDR-INFTY'
                                  wa_tab-infty."'1001'.
    PERFORM bdc_field       USING 'PPHDR-ISTAT'
                                  wa_tab-istat."'1'.
    PERFORM bdc_field       USING 'PPHDR-BEGDA'
                                  wa_tab-begda."'01.01.1900'.
    PERFORM bdc_field       USING 'PPHDR-ENDDA'
                                  wa_tab-endda."'31.12.9999'.
    PERFORM bdc_dynpro      USING 'MP100100' '2000'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'P1001-SOBID'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '=UPD'.
    PERFORM bdc_field       USING 'P1001-BEGDA'
                                  wa_tab-begda."'01.01.1900'.
    PERFORM bdc_field       USING 'P1001-ENDDA'
                                  wa_tab-endda."'31.12.9999'.
    PERFORM bdc_field       USING 'P1001-RSIGN'
                                  wa_tab-rsign."'b'.
    PERFORM bdc_field       USING 'P1001-RELAT'
                                  wa_tab-relat."'002'.
    PERFORM bdc_field       USING 'P1001-SCLAS'
                                  wa_tab-sclas."'O'.
    PERFORM bdc_field       USING 'P1001-SOBID'
                                  wa_tab-sobid."'10000003'.
**perform bdc_dynpro      using 'SAPLSPO1' '0500'.
**perform bdc_field       using 'BDC_OKCODE'
**                              '=OPT1'.
    PERFORM bdc_dynpro      USING 'SAPMH5A0' '1000'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'PPHDR-PLVAR'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '=BACK'.
**perform bdc_field       using 'PPHDR-PLVAR'
**                              '01'.
**perform bdc_field       using 'PPHDR-OTYPE'
**                              'O'.
**perform bdc_field       using 'PM0D1-SEARK'
**                              '10000002'.
**perform bdc_field       using 'PPHDR-INFTY'
**                              '1001'.
**perform bdc_field       using 'PPHDR-ISTAT'
**                              '1'.
**perform bdc_field       using 'PPHDR-BEGDA'
**                              '01.01.1900'.
**perform bdc_field       using 'PPHDR-ENDDA'
**                              '31.12.9999'.

    CALL TRANSACTION 'PP02' USING it_bdcdata
                                    MODE p_mode
                                    UPDATE 'S'
                                    MESSAGES INTO it_msg.
    REFRESHit_bdcdata.
  ENDLOOP.

  DATAv_msg(255).

  LOOP AT it_msg INTO s_msg.

    CALL FUNCTION 'FORMAT_MESSAGE'
      EXPORTING
        id        s_msg-msgid
        lang      s_msg-msgspra
        no        s_msg-msgnr
        v1        s_msg-msgv1
        v2        s_msg-msgv2
        v3        s_msg-msgv3
        v4        s_msg-msgv4
      IMPORTING
        msg       wa_message-message
      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.
    ENDIF.
    APPEND wa_message TO it_message.
    CLEAR wa_message.

  ENDLOOP.

  IF NOT it_message IS INITIAL.

    PERFORM build_catalog.
    PERFORM alv_display.
    PERFORM layout.

  ENDIF.

***&---------------------------------------------------------------------*
*&      FORM  BDC_DYNPRO
*&---------------------------------------------------------------------*
*       TEXT
*----------------------------------------------------------------------*
*      -->PROGRAM    TEXT
*      -->DYNPRO     TEXT
*----------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro.

  CLEAR it_bdcdata.
  it_bdcdata-program  program.
  it_bdcdata-dynpro   dynpro.
  it_bdcdata-dynbegin 'X'.
  APPEND it_bdcdata.

ENDFORM.                    "BDC_DYNPRO


*----------------------------------------------------------------------*
*        INSERT FIELD                                                  *
*----------------------------------------------------------------------*
FORM bdc_field USING fnam fval.
  CLEAR it_bdcdata.
  it_bdcdata-fnam fnam.
  it_bdcdata-fval fval.
  APPEND it_bdcdata.
ENDFORM.                    "BDC_FIELD

*&---------------------------------------------------------------------*
*&      Form  BUILD_CATALOG
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM build_catalog .
  wa_fieldcatalog-fieldname   'MESSAGE'.
  wa_fieldcatalog-seltext_m   'MESSAGE.'.
  APPEND wa_fieldcatalog TO i_fieldcat.
  CLEAR  wa_fieldcatalog.
ENDFORM.                    " BUILD_CATALOG

*&---------------------------------------------------------------------*
*&      Form  ALV_DISPLAY
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM alv_display .

  gd_repid sy-repid.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program gd_repid
      is_layout          gd_layout
      it_fieldcat        i_fieldcat[]
    TABLES
      t_outtab           it_message
    EXCEPTIONS
      program_error      1
      OTHERS             2.
  IF sy-subrc <> 0.
* IMPLEMENT SUITABLE ERROR HANDLING HERE
  ENDIF.
ENDFORM.                    "ALV_DISPLAY

*&---------------------------------------------------------------------*
*&      FORM  LAYOUT
*&---------------------------------------------------------------------*
*       TEXT
*----------------------------------------------------------------------*
*  -->  P1        TEXT
*  <--  P2        TEXT
*----------------------------------------------------------------------*
FORM layout .
  CLEAR gd_layout.
  gd_layout-colwidth_optimize 'X'." OPTIMIZATION OF COL WIDTH
  gd_layout-zebra =  'X'.
ENDFORM.                    " LAYOUT