Tuesday, December 25, 2018

BDC CALL TRANSACTION AND SESSION METHOD IN SAP ABAP.



BDC CALL TRANSACTION AND SESSION METHOD.


TCODE:-SHDB

BDC using CALL TRANSACTION METHOD in SAP ABAP
   1) 
A)     Go to transaction “ SHDB”. U will get following screen


B)      click on “ NEW RECORDING”  u will get this window. Fill the name of recording in  the first , I have given name “DEMO1”. In the 2nd field i.e transaction code give  the name of the transaction which is to be performed, I have given “MM01” which is for creating materials. Then click “START RECORDING”.

    



C)      I will show the recording of "MM01" .

    

I have selected the following. then press enter to move 
to 2nd screen.
Select “BASIC DATA 1”. Click ok.






Next screen will be like this.





Fill in following fields.




Press enter. The recording will be generated. now  Click on “ SAVE” and then on “BACK” buttons at the top.





d) Now select the recording and click on “PROGRAM”.





e) Now give the name of a program(new one). And click on OK.





Give description of program and click on “ SOURCE CODE” at the bottom.








f) The Following code will get copied in the program.

  


   2)


BDC CALL TRANSACTION METHOD
*&---------------------------------------------------------------------*


*& Report  ZMMP_05

*&

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

*&

*&

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



REPORT  ZMMP_05.
*include bdcrecx1.
************************
* Type Declare Details *
************************
TYPES:BEGIN OF TY_EXCEL,
        MBRSH TYPE MBRSH,
        MTART TYPE MTART,
        MAKTX TYPE MAKTX,
        MATKL TYPE MATKL,
        MEINS TYPE MEINS,
        KZSEL TYPE XFELD,
      END OF TY_EXCEL.
****************************
TYPES:BEGIN OF TY_MSG_REV,
       MESSAGE TYPE STRING,
      END OF TY_MSG_REV.
*******************************
*   Internal Table Declare    *
*******************************
DATA:bdcdata TYPE bdcdata OCCURS WITH HEADER LINE.
DATA:messtab TYPE bdcmsgcoll OCCURS WITH HEADER LINE.
DATA:gv_name TYPE rlgrap-filename.
DATA:git_upl TYPE TABLE OF TY_EXCEL.
DATA:gwa_upl TYPE TY_EXCEL.
DATA:GIT_MESS TYPE STANDARD TABLE OF bdcmsgcoll.
DATA:GWA_MESS TYPE bdcmsgcoll.
DATA:GIT_MES_RES TYPE TABLE OF TY_MSG_REV.
DATA:GWA_MES_RES TYPE TY_MSG_REV.
DATA:GV_MSG TYPE STRING.
DATA:GV_ROW_NUM TYPE CHAR2.
*******************************
TYPES:FS_STRUCT(4096TYPE C OCCURS 0.
DATA:G_DAT TYPE FS_STRUCT.
*******************************
*  Selection Screen Declare   *
*******************************
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETERS:P_FILE TYPE IBIPPARMS-PATH.
SELECTION-SCREEN END OF BLOCK B1.
****************************************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
*******************************************************************
*                 THIS IS FOR FILE UPLOAD                         *
*******************************************************************
  CALL FUNCTION 'F4_FILENAME'
    EXPORTING
      PROGRAM_NAME  SYST-CPROG
      DYNPRO_NUMBER SYST-DYNNR
*     FIELD_NAME    = ' '
    IMPORTING
      FILE_NAME     P_FILE.

AT SELECTION-SCREEN.
  GV_NAME P_FILE.

*******************************************************************
*                 THIS IS FOR CONVERT FILE XLS TP SAP             *
*******************************************************************
  CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
    EXPORTING
*    I_FIELD_SEPERATOR          =
*    I_LINE_HEADER              =
      I_TAB_RAW_DATA             G_DAT
      I_FILENAME                 P_FILE
    TABLES
      I_TAB_CONVERTED_DATA       GIT_UPL
*  EXCEPTIONS
*    CONVERSION_FAILED          = 1
*    OTHERS                     = 2
            .
  IF SY-SUBRC <> 0.
* Implement suitable error handling here
  ENDIF.

START-OF-SELECTION.
  LOOP AT GIT_UPL INTO GWA_UPL.
    MOVE SY-TABIX TO GV_ROW_NUM.
    REFRESH BDCDATA.
    perform bdc_dynpro      using 'SAPLMGMM' '0060'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'RMMG1-MTART'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=ENTR'.
    perform bdc_field       using 'RMMG1-MBRSH'
                                   GWA_UPL-MBRSH."record-MBRSH_001.
    perform bdc_field       using 'RMMG1-MTART'
                                   GWA_UPL-MTART."record-MTART_002.
    perform bdc_dynpro      using 'SAPLMGMM' '0070'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'MSICHTAUSW-DYTXT(01)'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=ENTR'.
    perform bdc_field       using 'MSICHTAUSW-KZSEL(01)'
                                  GWA_UPL-KZSEL."'x'."record-KZSEL_01_003.
    perform bdc_dynpro      using 'SAPLMGMM' '4004'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'MARA-MATKL'.
    perform bdc_field       using 'MARA-MEINS'
                                   GWA_UPL-MEINS."record-MEINS_004.
    perform bdc_field       using 'MARA-MATKL'
                                   GWA_UPL-MATKL."record-MATKL_005.
    perform bdc_dynpro      using 'SAPLSPO1' '0300'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=YES'.
    perform bdc_dynpro      using 'SAPLMGMM' '4300'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=BU'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'SKTEXT-MAKTX(01)'.
    perform bdc_field       using 'SKTEXT-MAKTX(01)'
                                   GWA_UPL-MAKTX."record-MAKTX_01_006.

    REFRESH :GIT_MESS,GIT_MES_RES.
    CALL TRANSACTION 'MM01' USING BDCDATA MODE 'N' UPDATE 'S' MESSAGES INTO GIT_MESS.
    LOOP AT GIT_MESS INTO GWA_MESS.
      CLEAR:GV_MSG.
      CALL FUNCTION 'FORMAT_MESSAGE'
        EXPORTING
          ID        GWA_MESS-MSGID
          LANG      '-D'
          NO        GWA_MESS-MSGNR
          V1        GWA_MESS-MSGV1
*         V2        = SY-MSGV2
*         V3        = SY-MSGV3
          V4        GWA_MESS-MSGV4
        IMPORTING
          MSG       GV_MSG
        EXCEPTIONS
          NOT_FOUND 1
          OTHERS    2.
      MOVE GV_MSG TO GWA_MES_RES-MESSAGE.
      APPEND GWA_MES_RES TO GIT_MES_RES.
      CLEAR:GWA_MES_RES,GWA_MESS.
    ENDLOOP.
    CONDENSE GV_ROW_NUM.
    LOOP AT GIT_MES_RES INTO GWA_MES_RES.
      WRITE'RECORD-' ,GV_ROW_NUM,'|',GWA_UPL-MAKTX HOTSPOT ON'|',GWA_MES_RES-MESSAGE COLOR 3.
      HIDE GWA_UPL-MAKTX.
    ENDLOOP.
    CLEAR:GV_ROW_NUM,GWA_UPL.
  ENDLOOP.

FORM BDC_DYNPRO USING PROGRAM DYNPRO.
  CLEAR BDCDATA.
  BDCDATA-PROGRAM  PROGRAM.
  BDCDATA-DYNPRO   DYNPRO.
  BDCDATA-DYNBEGIN 'X'.
  APPEND BDCDATA.
ENDFORM.

*----------------------------------------------------------------------*
*                         Insert field                                 *
*----------------------------------------------------------------------*
FORM BDC_FIELD USING FNAM FVAL.
  IF FVAL <> ' '."NODATA'.
    CLEAR BDCDATA.
    BDCDATA-FNAM FNAM.
    BDCDATA-FVAL FVAL.
    APPEND BDCDATA.
  ENDIF.
ENDFORM.
BDC SESSION METHOD
*&---------------------------------------------------------------------*


*& Report  ZMMP_5_SESSSION

*&

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

*&

*&

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



REPORT  ZMMP_5_SESSSION.
************************
* Type Declare Details *
************************
TYPES:BEGIN OF TY_EXCEL,
        MBRSH TYPE MBRSH,
        MTART TYPE MTART,
        MAKTX TYPE MAKTX,
        MATKL TYPE MATKL,
        MEINS TYPE MEINS,
        KZSEL TYPE XFELD,
      END OF TY_EXCEL.
****************************
TYPES:BEGIN OF TY_MSG_REV,
       MESSAGE TYPE STRING,
      END OF TY_MSG_REV.
*******************************
*   Internal Table Declare    *
*******************************
DATA:bdcdata TYPE bdcdata OCCURS WITH HEADER LINE.
DATA:messtab TYPE bdcmsgcoll OCCURS WITH HEADER LINE.
DATA:gv_name TYPE rlgrap-filename.
DATA:git_upl TYPE TABLE OF TY_EXCEL.
DATA:gwa_upl TYPE TY_EXCEL.
DATA:GIT_MESS TYPE STANDARD TABLE OF bdcmsgcoll.
DATA:GWA_MESS TYPE bdcmsgcoll.
DATA:GIT_MES_RES TYPE TABLE OF TY_MSG_REV.
DATA:GWA_MES_RES TYPE TY_MSG_REV.
DATA:GV_MSG TYPE STRING.
DATA:GV_ROW_NUM TYPE CHAR2.
*******************************
TYPES:FS_STRUCT(4096TYPE C OCCURS 0.
DATA:G_DAT TYPE FS_STRUCT.
*******************************
*  Selection Screen Declare   *
*******************************
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETERS:P_FILE TYPE IBIPPARMS-PATH.
SELECTION-SCREEN END OF BLOCK B1.
****************************************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
*******************************************************************
*                 THIS IS FOR FILE UPLOAD                         *
*******************************************************************
  CALL FUNCTION 'F4_FILENAME'
    EXPORTING
      PROGRAM_NAME  SYST-CPROG
      DYNPRO_NUMBER SYST-DYNNR
*     FIELD_NAME    = ' '
    IMPORTING
      FILE_NAME     P_FILE.

AT SELECTION-SCREEN.
  GV_NAME P_FILE.

*******************************************************************
*                 THIS IS FOR CONVERT FILE XLS TP SAP             *
*******************************************************************
  CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
    EXPORTING
*    I_FIELD_SEPERATOR          =
*    I_LINE_HEADER              =
      I_TAB_RAW_DATA             G_DAT
      I_FILENAME                 P_FILE
    TABLES
      I_TAB_CONVERTED_DATA       GIT_UPL
*  EXCEPTIONS
*    CONVERSION_FAILED          = 1
*    OTHERS                     = 2
            .
  IF SY-SUBRC <> 0.
* Implement suitable error handling here
  ENDIF.

START-OF-SELECTION.
  CALL FUNCTION 'BDC_OPEN_GROUP'
    EXPORTING
      CLIENT              SY-MANDT
      GROUP               'AKS'
      KEEP                'X'
      USER                SY-UNAME
    EXCEPTIONS
      CLIENT_INVALID      1
      DESTINATION_INVALID 2
      GROUP_INVALID       3
      GROUP_IS_LOCKED     4
      HOLDDATE_INVALID    5
      INTERNAL_ERROR      6
      QUEUE_ERROR         7
      RUNNING             8
      SYSTEM_LOCK_ERROR   9
      USER_INVALID        10
      OTHERS              11.


START-OF-SELECTION.
  LOOP AT GIT_UPL INTO GWA_UPL.
    MOVE SY-TABIX TO GV_ROW_NUM.
    REFRESH BDCDATA.
    perform bdc_dynpro      using 'SAPLMGMM' '0060'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'RMMG1-MTART'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=ENTR'.
    perform bdc_field       using 'RMMG1-MBRSH'
                                   GWA_UPL-MBRSH."record-MBRSH_001.
    perform bdc_field       using 'RMMG1-MTART'
                                   GWA_UPL-MTART."record-MTART_002.
    perform bdc_dynpro      using 'SAPLMGMM' '0070'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'MSICHTAUSW-DYTXT(01)'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=ENTR'.
    perform bdc_field       using 'MSICHTAUSW-KZSEL(01)'
                                  GWA_UPL-KZSEL."'x'."record-KZSEL_01_003.
    perform bdc_dynpro      using 'SAPLMGMM' '4004'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'MARA-MATKL'.
    perform bdc_field       using 'MARA-MEINS'
                                   GWA_UPL-MEINS."record-MEINS_004.
    perform bdc_field       using 'MARA-MATKL'
                                   GWA_UPL-MATKL."record-MATKL_005.
    perform bdc_dynpro      using 'SAPLSPO1' '0300'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=YES'.
    perform bdc_dynpro      using 'SAPLMGMM' '4300'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=BU'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'SKTEXT-MAKTX(01)'.
    perform bdc_field       using 'SKTEXT-MAKTX(01)'
                                   GWA_UPL-MAKTX."record-MAKTX_01_006.

    CALL FUNCTION 'BDC_INSERT'
      EXPORTING
        TCODE            'MM01'
*       POST_LOCAL       = NOVBLOCAL
*       PRINTING         = NOPRINT
*       SIMUBATCH        = ' '
*       CTUPARAMS        = ' '
      TABLES
        DYNPROTAB        BDCDATA
      EXCEPTIONS
        INTERNAL_ERROR   1
        NOT_OPEN         2
        QUEUE_ERROR      3
        TCODE_INVALID    4
        PRINTING_INVALID 5
        POSTING_INVALID  6
        OTHERS           7.
    REFRESH BDCDATA.

  ENDLOOP.

  CALL FUNCTION 'BDC_CLOSE_GROUP'
    EXCEPTIONS
      NOT_OPEN    1
      QUEUE_ERROR 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.

FORM BDC_DYNPRO USING PROGRAM DYNPRO.
  CLEAR BDCDATA.
  BDCDATA-PROGRAM  PROGRAM.
  BDCDATA-DYNPRO   DYNPRO.
  BDCDATA-DYNBEGIN 'X'.
  APPEND BDCDATA.
ENDFORM.

*----------------------------------------------------------------------*
*                         Insert field                                 *
*----------------------------------------------------------------------*
FORM BDC_FIELD USING FNAM FVAL.
  IF FVAL <> ' '."NODATA'.
    CLEAR BDCDATA.
    BDCDATA-FNAM FNAM.
    BDCDATA-FVAL FVAL.
    APPEND BDCDATA.
  ENDIF.
ENDFORM.


FILE FORMAT
M1     ROH  BDC TEST   001    KG     X
M1     ROH  BDC TEST   001    KG     X
M1     ROH  BDC TEST   001    KG     X

Tuesday, August 7, 2018

Dynamic ALV report generate in sap abap.

*&---------------------------------------------------------------------*
*& Report  ZSW_REPORT35
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZSW_DREPORT.
DATA IT_FCAT TYPE LVC_T_FCAT.
PARAMETERSP_TABLE TYPE DD02L-TABNAME.
DATA WA_TABLE TYPE DD02L.

AT SELECTION-SCREEN.
  IF P_TABLE IS NOT INITIAL.
    SELECT SINGLE FROM DD02L INTO WA_TABLE WHERE TABNAME P_TABLE AND TABCLASS 'TRANSP'.
  ELSE.
    MESSAGE 'Please enter a table' TYPE 'E'.
    STOP.
  ENDIF.
  IF WA_TABLE IS INITIAL.
    MESSAGE 'Table Dosent exit or is not transparent table' TYPE 'E'.
    STOP.
  ENDIF.

START-OF-SELECTION.
  CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
    EXPORTING
      I_STRUCTURE_NAME P_TABLE
    CHANGING
      CT_FIELDCAT      IT_FCAT.

  DATA FS_TAB TYPE REF TO DATA.
  CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
    EXPORTING
*     I_STYLE_TABLE    =
      IT_FIELDCATALOG  IT_FCAT
*     I_LENGTH_IN_BYTE =
    IMPORTING
      EP_TABLE         FS_TAB.

  FIELD-SYMBOLS<FS_TAB> TYPE STANDARD TABLE.
  ASSIGN FS_TAB->TO <FS_TAB>.
*data : it_tab type TABLE OF p_table.
  SELECT FROM (P_TABLEINTO CORRESPONDING FIELDS OF TABLE <FS_TAB> UP TO 50 ROWS.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_STRUCTURE_NAME P_TABLE
    TABLES
      T_OUTTAB         <FS_TAB>.
  IF SY-SUBRC <> 0.
* Implement suitable error handling here
  ENDIF.

ALV report with total and subtotal in SAP ABAP.



REPORT  ZNEW_SUBTOTAL.

TABLESekko.
TYPE-POOLSslis.
DATAwa_fcat   TYPE lvc_s_fcat,
      it_fcat   TYPE lvc_t_fcat,
      wa_layout TYPE lvc_s_layo,
      wa_top    TYPE slis_listheader,
      it_top    TYPE slis_t_listheader.

Read More Editable-alv.

TYPESBEGIN OF ty_ekko,
ebeln TYPE ekko-ebeln,
aedat TYPE ekko-aedat,
END OF ty_ekko.
DATAwa_ekko TYPE ty_ekko,
      it_ekko TYPE TABLE OF ty_ekko.

TYPESBEGIN OF ty_ekpo,
ebeln TYPE ekpo-ebeln,
ebelp TYPE ekpo-ebelp,
matnr TYPE ekpo-matnr,
werks TYPE ekpo-werks,
menge TYPE ekpo-menge,
meins TYPE ekpo-meins,
END OF ty_ekpo.
DATAwa_ekpo TYPE ty_ekpo,
      it_ekpo TYPE TABLE OF ty_ekpo.

TYPESBEGIN OF ty_out,
ebeln TYPE char15,
ebelp TYPE char5,
matnr TYPE ekpo-matnr,
werks TYPE ekpo-werks,
menge TYPE ekpo-menge,
meins TYPE ekpo-meins,
color TYPE char4,
bold  TYPE lvc_t_styl,
END OF ty_out.
DATAwa_out TYPE ty_out,
      it_out TYPE TABLE OF ty_out.

INITIALIZATION.
  SELECT-OPTIONS s_aedat FOR ekko-aedat.

START-OF-SELECTION.
  PERFORM get_ekko.
  PERFORM get_ekpo.

END-OF-SELECTION.
  PERFORM prepare_output.
  PERFORM field_catalog.
  PERFORM alv_grid_display.

Read More Editable-alv.....

TOP-OF-PAGE.
  PERFORM top_of_page.
*&---------------------------------------------------------------------*
*&      Form  GET_EKKO
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM get_ekko .

  SELECT ebeln aedat FROM ekko
  INTO TABLE it_ekko
  WHERE aedat IN s_aedat.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  GET_EKPO
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM get_ekpo .

  IF it_ekko IS NOT INITIAL.
    SELECT ebeln ebelp matnr werks menge meins
    FROM ekpo
    INTO TABLE it_ekpo
    FOR ALL ENTRIES IN it_ekko
    WHERE ebeln it_ekko-ebeln
    AND matnr NE ' '.

    IF sy-subrc 0.
      SORT it_ekpo BY ebeln ebelp.
    ENDIF.
  ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  PREPARE_OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM prepare_output .

  DATAlw_bold TYPE lvc_s_styl,
        lt_bold TYPE lvc_t_styl.

  IF it_ekpo IS NOT INITIAL.
    LOOP AT it_ekpo INTO wa_ekpo.
      wa_out-ebeln wa_ekpo-ebeln.
      wa_out-ebelp wa_ekpo-ebelp.
      wa_out-matnr wa_ekpo-matnr.
      SHIFT wa_out-matnr LEFT DELETING LEADING '0'.
      wa_out-werks wa_ekpo-werks.
      wa_out-menge wa_ekpo-menge.
      wa_out-meins wa_ekpo-meins.
      APPEND wa_out TO it_out.
      CLEARwa_out.

      AT END OF ebeln.
        SUM.
        wa_out-ebeln 'SUB TOTAL'.
        wa_out-menge wa_ekpo-menge.
        wa_out-color 'C200'.
        lw_bold-style '00000121'.
        INSERT lw_bold INTO lt_bold INDEX 1.
        wa_out-bold lt_bold.
        FREE lt_bold.

        APPEND wa_out TO it_out.
        CLEARwa_outlw_boldwa_ekpo.
      ENDAT.

      AT LAST.
        SUM.
        wa_out-ebeln 'GRAND TOTAL'.
        wa_out-menge wa_ekpo-menge.
        wa_out-color 'C210'.
        lw_bold-style '00000121'.
        INSERT lw_bold INTO lt_bold INDEX 1.
        wa_out-bold lt_bold.
        FREE lt_bold.

        APPEND wa_out TO it_out.
        CLEARwa_outlw_boldwa_ekpo.
      ENDAT.
    ENDLOOP.
  ENDIF.

  FREE it_ekpo.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  FIELD_CATALOG
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM field_catalog .

  DATAlv_col TYPE VALUE 0.

  lv_col            + lv_col.
  wa_fcat-col_pos   lv_col.
  wa_fcat-fieldname 'EBELN'.
  wa_fcat-reptext   'Purchase Order'.
  APPEND wa_fcat TO it_fcat.
  CLEAR wa_fcat.

  lv_col            + lv_col.
  wa_fcat-col_pos   lv_col.
  wa_fcat-fieldname 'EBELP'.
  wa_fcat-reptext   'Item'.
  APPEND wa_fcat TO it_fcat.
  CLEAR wa_fcat.

  lv_col            + lv_col.
  wa_fcat-col_pos   lv_col.
  wa_fcat-fieldname 'MATNR'.
  wa_fcat-reptext   'Material'.
  APPEND wa_fcat TO it_fcat.
  CLEAR wa_fcat.

  lv_col            + lv_col.
  wa_fcat-col_pos   lv_col.
  wa_fcat-fieldname 'WERKS'.
  wa_fcat-reptext   'Plant'.
  APPEND wa_fcat TO it_fcat.
  CLEAR wa_fcat.

  lv_col            + lv_col.
  wa_fcat-col_pos   lv_col.
  wa_fcat-fieldname 'MENGE'.
  wa_fcat-reptext   'Quantity'.
  APPEND wa_fcat TO it_fcat.
  CLEAR wa_fcat.

  lv_col            + lv_col.
  wa_fcat-col_pos   lv_col.
  wa_fcat-fieldname 'MEINS'.
  wa_fcat-reptext   'Unit'.
  APPEND wa_fcat TO it_fcat.
  CLEAR wa_fcat.

  wa_layout-zebra      'X'.
  wa_layout-cwidth_opt 'X'.
  wa_layout-info_fname 'COLOR'.
  wa_layout-stylefname 'BOLD'.

ENDFORM.

Read More Editable-alv.....

*&---------------------------------------------------------------------*
*&      Form  ALV_GRID_DISPLAY
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM alv_grid_display .

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
      i_callback_program     sy-repid
      i_callback_top_of_page 'TOP_OF_PAGE'
      is_layout_lvc          wa_layout
      it_fieldcat_lvc        it_fcat
    TABLES
      t_outtab               it_out
    EXCEPTIONS
      program_error          1
      OTHERS                 2.


ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  TOP_OF_PAGE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM top_of_page .

  REFRESH it_top.

  wa_top-typ  'H'.
  wa_top-info 'Purchasing List'.
  APPEND wa_top TO it_top.
  CLEAR wa_top.

  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      it_list_commentary it_top.

ENDFORM.

Read More Editable-alv.....

Download ALV report display data in SAP ABAP.

*&---------------------------------------------------------------------*
*& Report  ZSW_DOWNLOAD
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZSW_DOWNLOAD.

TABLES VBAK,VBAP,VBFA,LIKP,LIPS.

TYPESBEGIN OF TY_VBAK,
        VBELN TYPE VBAK-VBELN,
        VKORG TYPE VBAK-VKORG,
        VTWEG TYPE VBAK-VTWEG,
        SPART TYPE VBAK-SPART,
      END OF TY_VBAK.
TYPESBEGIN OF TY_VBAP,
        VBELN TYPE VBAP-VBELN,
        POSNR TYPE VBAP-POSNR,
        MATNR TYPE VBAP-MATNR,
        ZMENG TYPE VBAP-ZMENG,
        NETPR TYPE VBAP-NETPR,
      END OF TY_VBAP.
TYPESBEGIN OF TY_LIKP,
        VBELN TYPE LIKP-VBELN,
      END OF TY_LIKP.
TYPESBEGIN OF TY_LIPS,
        VBELN TYPE LIPS-VBELN,
        POSNR TYPE LIPS-POSNR,
        LFIMG TYPE LIPS-LFIMG,
        NETPR TYPE LIPS-NETPR,
      END OF TY_LIPS.
TYPESBEGIN OF TY_VBFA,
        VBELV TYPE VBFA-VBELV,
        POSNV TYPE VBFA-POSNV,
        VBELN TYPE VBFA-VBELN,
        POSNN TYPE VBFA-POSNN,
        VBTYP_N TYPE VBFA-VBTYP_N,
      END OF TY_VBFA.
TYPESBEGIN OF TY_FINAL,
        VBELN TYPE VBAP-VBELN,
        POSNR TYPE VBAP-POSNR,
        MATNR TYPE VBAP-MATNR,
        ZMENG TYPE VBAP-ZMENG,
        NETPR TYPE VBAP-NETPR,
        VBELN1 TYPE LIPS-VBELN,
        POSNR1 TYPE LIPS-POSNR,
        LFIMG TYPE LIPS-LFIMG,
        NETPR1 TYPE LIPS-NETPR,
      END OF TY_FINAL.

DATA I_VBAK TYPE TABLE OF TY_VBAK,WA_VBAK TYPE TY_VBAK.
DATA I_VBAP TYPE TABLE OF TY_VBAP,WA_VBAP TYPE TY_VBAP.
DATA I_LIKP TYPE TABLE OF TY_LIKP,WA_LIKP TYPE TY_LIKP.
DATA I_LIPS TYPE TABLE OF TY_LIPS,WA_LIPS TYPE TY_LIPS.
DATA I_VBFA TYPE TABLE OF TY_VBFA,WA_VBFA TYPE TY_VBFA.
DATA I_FINAL TYPE TABLE OF TY_FINAL,WA_FINAL TYPE TY_FINAL.

DATA V_TITLE TYPE STRING.
DATA V_FNAME TYPE STRING.

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS S_VBELN FOR VBAK-VBELN NO-EXTENSION.
SELECT-OPTIONS S_VKORG FOR VBAK-VKORG NO INTERVALS NO-EXTENSION.
SELECT-OPTIONS S_VTWEG FOR VBAK-VTWEG NO INTERVALS NO-EXTENSION.
SELECT-OPTIONS S_SPART FOR VBAK-SPART NO INTERVALS NO-EXTENSION.
SELECTION-SCREEN END OF BLOCK B1.
SELECTION-SCREEN SKIP.

PARAMETERS P_FILE TYPE RLGRAP-FILENAME.
PARAMETERS DOWNLOAD AS CHECKBOX.

INITIALIZATION.
  V_TITLE 'SALES DOCUMENT:ITEM DATA AND DELIVERY DETAILS'.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
  PERFORM GET_FILE_PATH.

AT SELECTION-SCREEN ON HELP-REQUEST FOR P_FILE.
  PERFORM GET_HELP_FOR_FILE_PATH.

AT SELECTION-SCREEN.
  PERFORM VALIDATE_SALESDOCUMENT.
  PERFORM VALIDATE_SALESORGANIZATION.
  PERFORM VALIDATE_DISTRIBUTIONCHANNEL.
  PERFORM VALIDATE_DIVISION.

START-OF-SELECTION.
  PERFORM GET_DATA.
  PERFORM DISPLAY_DATA.
  PERFORM DOWNLOAD_DATA.

END-OF-SELECTION.

TOP-OF-PAGE.
  PERFORM DISPLAY_HEADING.

END-OF-PAGE.
  PERFORM DISPLAY_FOOTER.


FORM GET_FILE_PATH .
  CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
    EXPORTING
      PROGRAM_NAME  SYST-REPID
      DYNPRO_NUMBER SYST-DYNNR
      FIELD_NAME    P_FILE
    CHANGING
      FILE_NAME     P_FILE.
ENDFORM.                    " GET_FILE_PATH

FORM GET_HELP_FOR_FILE_PATH .
  MESSAGE 'PLEASE SELECT FILE PATH' TYPE 'I'.
ENDFORM.                    " GET_HELP_FOR_FILE_PATH

FORM VALIDATE_SALESDOCUMENT .
  SELECT SINGLE VBELN FROM VBAK INTO WA_VBAK WHERE VBELN IN S_VBELN.
  IF SY-SUBRC <> 0.
    MESSAGE 'INVALID SALES DOCUMENT NO' TYPE 'I'.
  ENDIF.
ENDFORM.                    " VALIDATE_SALESDOCUMENT

FORM VALIDATE_SALESORGANIZATION .
  SELECT VKORG FROM VBAK INTO WA_VBAK UP TO ROWS WHERE VKORG IN S_VKORG.
  ENDSELECT.
  IF SY-SUBRC <> 0.
    MESSAGE 'INVALID SALES ORGANIZATION' TYPE 'I'.
  ENDIF.
ENDFORM.                    " VALIDATE_SALESORGANIZATION

FORM VALIDATE_DISTRIBUTIONCHANNEL.
  SELECT VTWEG FROM VBAK INTO WA_VBAK UP TO ROWS WHERE VTWEG IN S_VTWEG.
  ENDSELECT.
  IF SY-SUBRC <> 0.
    MESSAGE 'INVALID DISTRIBUTION CHANNEL' TYPE 'I'.
  ENDIF.
ENDFORM.                    " VALIDATE_DISTRIBUTIONCHANNEL

FORM VALIDATE_DIVISION .
  SELECT SPART FROM VBAK INTO WA_VBAK UP TO ROWS WHERE SPART IN S_SPART.
  ENDSELECT.
  IF SY-SUBRC <> 0.
    MESSAGE 'INVALID DIVISION' TYPE 'I'.
  ENDIF.
ENDFORM.                    " VALIDATE_DIVISION

FORM GET_DATA .

  SELECT VBELN VKORG VTWEG SPART FROM VBAK INTO TABLE I_VBAK WHERE VBELN IN S_VBELN AND VKORG IN S_VKORG
                                                               AND VTWEG IN S_VTWEG AND SPART IN S_SPART.
  IF I_VBAK IS NOT INITIAL.

    SELECT VBELN POSNR MATNR ZMENG NETPR FROM VBAP INTO TABLE I_VBAP FOR ALL ENTRIES IN I_VBAK
                                                                    WHERE VBELN I_VBAK-VBELN.

    SELECT VBELV POSNV VBELN POSNN VBTYP_N FROM VBFA INTO TABLE I_VBFA FOR ALL ENTRIES IN I_VBAP
                                                    WHERE VBELV I_VBAP-VBELN AND VBTYP_N 'J'.

    SELECT VBELN FROM LIKP INTO TABLE I_LIKP FOR ALL ENTRIES IN I_VBFA WHERE VBELN I_VBFA-VBELN.


    SELECT VBELN POSNR LFIMG NETPR FROM LIPS INTO TABLE I_LIPS FOR ALL ENTRIES IN I_LIKP
                                                              WHERE VBELN I_LIKP-VBELN.
    SORT I_VBAP.
    SORT I_LIPS.

    LOOP AT I_VBFA INTO WA_VBFA.
      READ TABLE I_LIPS INTO WA_LIPS WITH KEY VBELN WA_VBFA-VBELN POSNR WA_VBFA-POSNN BINARY SEARCH.
      READ TABLE I_VBAP INTO WA_VBAP WITH KEY VBELN WA_VBFA-VBELV POSNR WA_VBFA-POSNV BINARY SEARCH.
      WA_FINAL-VBELN WA_VBAP-VBELN.
      WA_FINAL-POSNR WA_VBAP-POSNR.
      WA_FINAL-MATNR WA_VBAP-MATNR.
      WA_FINAL-ZMENG WA_VBAP-ZMENG.
      WA_FINAL-NETPR WA_VBAP-NETPR.
      WA_FINAL-VBELN1 WA_LIPS-VBELN.
      WA_FINAL-POSNR1 WA_LIPS-POSNR.
      WA_FINAL-LFIMG WA_LIPS-LFIMG.
      WA_FINAL-NETPR1 WA_LIPS-NETPR.
      APPEND WA_FINAL TO I_FINAL.
      CLEAR WA_FINAL.
    ENDLOOP.
  ENDIF.

ENDFORM.                    " GET_DATA

FORM DISPLAY_DATA .
  LOOP AT I_FINAL INTO WA_FINAL.
    WRITE / WA_FINAL-VBELN,WA_FINAL-POSNR,WA_FINAL-MATNR,WA_FINAL-ZMENG,WA_FINAL-NETPR,
              WA_FINAL-VBELN1,WA_FINAL-POSNR1,WA_FINAL-LFIMG,WA_FINAL-NETPR.
  ENDLOOP.
ENDFORM.                    " DISPLAY_DATA

FORM DOWNLOAD_DATA .
  IF DOWNLOAD 'X'.
    V_FNAME P_FILE.
    CALL FUNCTION 'GUI_DOWNLOAD'
      EXPORTING
        FILENAME              V_FNAME
        FILETYPE              'ASC'
        WRITE_FIELD_SEPARATOR 'X'
      TABLES
        DATA_TAB              I_FINAL.
    IF SY-SUBRC 0.
      MESSAGE 'DATA SUCCESSFULLY DOWNLOADED' TYPE 'I'.
    ENDIF.
  ENDIF.
ENDFORM.                    " DOWNLOAD_DATA

FORM DISPLAY_HEADING .
  WRITESY-ULINE.
  WRITE :/45 V_TITLE.
  WRITESY-ULINE.
ENDFORM.                    " DISPLAY_HEADING

FORM DISPLAY_FOOTER .
  WRITESY-ULINE.
  WRITE :/45 'INTEL GROUP OF COMPANIES'.
  WRITESY-ULINE.
ENDFORM.                    " DISPLAY_FOOTER