Search This Blog

Showing posts with label TABLE CONTROL. Show all posts
Showing posts with label TABLE CONTROL. Show all posts

Friday, March 5, 2021

BDC USING TABLE CONTROL

BDC  USING TABLE CONTROL 

In BDC horizontal scrolling does not effect the recording, but vertical scrolling will be problematic .

in case of vertical scrolling table control is used to control the scroll and selection of the fields.


" Code to manually scroll the tab 

    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '=P+'.  



REPORT ZMM01_BIN_UPDATE
       NO STANDARD PAGE HEADING LINE-SIZE 255.
TYPE-POOLS: TRUXS, SLIS.
TYPES: BEGIN OF TY_FINAL,

         MATNR TYPE MATNR,     " MATERIAL
*        MBRSH TYPE MBRSH,    " INDUSTRY TYPE
*        MTART TYPE MTART,    " MATERIAL TYPE
         WERKS TYPE WERKS,     " PLANT
         LGNUM TYPE LGNUM,     " WAREHOUSE NO.
         LGTYP TYPE LGTYP,     " STORAGE TYPE
         LTKZA TYPE MLGN-LTKZA,     " STOCK REMOVAL
         LTKZE TYPE MLGN-LTKZE,     " Stock placement
         LGBKZ TYPE MLGN-LGBKZ,     "  STORGE SEC. IND.
         LGPLA TYPE LGPLA,     " BIN
       END OF TY_FINAL.

TYPES : BEGIN OF TY_OUTPUT,
          ASSET     TYPE MATNR,
          DESC(100) TYPE C,
        END OF TY_OUTPUT.

DATA : IT_FINAL  TYPE STANDARD TABLE OF TY_FINAL,
       WA_FINAL  TYPE TY_FINAL,
       IT_OUTPUT TYPE STANDARD TABLE OF TY_OUTPUT,
       WA_OUTPUT TYPE TY_OUTPUT.

DATA: IT_TYPE TYPE TRUXS_T_TEXT_DATA,
      OPT     TYPE CTU_PARAMS,
      LV_OPT  LIKE CTU_PARAMS.

DATA: V_COUNT1 TYPE I.
DATA: V_COUNT(3) TYPE C.
DATA: V_CHAR(25).

DATA : WA_FIELDCAT TYPE  SLIS_FIELDCAT_ALV, "Field catalog work area
       IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. "field catalog internal table


DATA: IT_BDCDATA TYPE TABLE OF BDCDATA,
      WA_BDCDATA TYPE BDCDATA,
      CTU        TYPE CTU_PARAMS,
      T_VALUES   TYPE VRM_VALUES,
      W_VALUES   TYPE VRM_VALUE.
DATA: MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
**DATA: L_MSTRING(480).
DATA: L_SUBRC LIKE SY-SUBRC,
      TCODE   TYPE TCODE VALUE 'MM01'.

INITIALIZATION.
  PERFORM INITIALIZATION.
  SELECTION-SCREEN : BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
  PARAMETERS : P_FILE    TYPE RLGRAP-FILENAME DEFAULT 'C:\Users\abapsu\Desktop\bin_update.xlsx',
               P_MODE(1) AS LISTBOX VISIBLE LENGTH 20 DEFAULT 'N'.
*               P_DEFSIZE LIKE CTU_PARAMS-DEFSIZE  DEFAULT 'X'.
  SELECTION-SCREEN : END OF BLOCK B1.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_MODE.
  PERFORM DISMODE.

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

START-OF-SELECTION.
  PERFORM FILE_UPLOAD.
  PERFORM UPLOAD_DATA.
  PERFORM DISP.



*&---------------------------------------------------------------------*
*& Form FILE_UPLOAD
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM FILE_UPLOAD .
  CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
    EXPORTING
*     I_FIELD_SEPERATOR    =
      I_LINE_HEADER        = 'X'
      I_TAB_RAW_DATA       = IT_TYPE
      I_FILENAME           = P_FILE
    TABLES
      I_TAB_CONVERTED_DATA = IT_FINAL[]
    EXCEPTIONS
      CONVERSION_FAILED    = 1
      OTHERS               = 2.
  IF SY-SUBRC <> 0.
    MESSAGE 'TABLE IS INITIAL' TYPE 'E'.
  ELSE.
    CTU-DISMODE = P_MODE.     "DISPLAY MODE.
    CTU-UPDMODE = 'L'.        "UPDATE MODE.
* CTU-NOBINPT = 'X'.
    CTU-DEFSIZE = 'X'.        "DEFAULT SIZE.
  ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form UPLOAD_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM UPLOAD_DATA .
  LOOP AT IT_FINAL INTO WA_FINAL.
    PERFORM BDC_DYNPRO      USING 'SAPLMGMM' '0060'.
    PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                  'RMMG1-MATNR'.
    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                  '=ENTR'.
    PERFORM BDC_FIELD       USING 'RMMG1-MATNR'                   "  MATERIAL
                                  WA_FINAL-MATNR.
    PERFORM BDC_FIELD       USING 'RMMG1-MBRSH'                 "Industry Secto
                                  'M'.
    PERFORM BDC_FIELD       USING 'RMMG1-MTART'                   " MATERIAL TYPE
                                  'ZFGM'.
    PERFORM BDC_FIELD       USING 'RMMG1_REF-MATNR'                 " MAT COPY FROM
                                  WA_FINAL-MATNR.

    """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""  SELECT VIEW   """""""""""""""""


    PERFORM BDC_DYNPRO      USING 'SAPLMGMM' '0070'.          """""''' CODE  FOR PAGE SCROLL
 
   PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                  'MSICHTAUSW-DYTXT(05)'.
    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '=P+'.
*    PERFORM BDC_FIELD       USING 'MSICHTAUSW-KZSEL(04)'            " SELECT  VIEW
*                                  'X'.
*    PERFORM BDC_FIELD       USING 'MSICHTAUSW-KZSEL(05)'            " SELECT VIEW
*                                  'X'.



    PERFORM BDC_DYNPRO      USING 'SAPLMGMM' '0070'.            ""  CODE FOR SEELCT VIEW AFTER SCROLL
    PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                  'MSICHTAUSW-DYTXT(05)'.
    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      'ENTR'.
    PERFORM BDC_FIELD       USING 'MSICHTAUSW-KZSEL(04)'            " SELECT  VIEW
                                  'X'.
    PERFORM BDC_FIELD       USING 'MSICHTAUSW-KZSEL(05)'            " SELECT VIEW
                                  'X'.


    """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""  SELECT VIEW  """"""""""""""""""""""""""'

    PERFORM BDC_DYNPRO      USING 'SAPLMGMM' '0080'.
    PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                  'RMMG1-LGTYP'.
    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                  '=ENTR'.
    PERFORM BDC_FIELD       USING 'RMMG1-WERKS'                     " PLANT
                                  WA_FINAL-WERKS.
    PERFORM BDC_FIELD       USING 'RMMG1-LGNUM'                     "Warehouse No.
                                  WA_FINAL-LGNUM.
    PERFORM BDC_FIELD       USING 'RMMG1-LGTYP'                     " Storage Type
                                  WA_FINAL-LGTYP.
    PERFORM BDC_DYNPRO      USING 'SAPLMGMM' '4000'.
    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                  '/00'.

    PERFORM BDC_FIELD       USING 'MLGN-LTKZA'                        " STOCK REMOVAL
                                  WA_FINAL-LTKZA.
    PERFORM BDC_FIELD       USING 'MLGN-LTKZE'                        " Stock placement
                                  WA_FINAL-LTKZE.
    PERFORM BDC_FIELD       USING 'MLGN-LGBKZ'                        " Storage Section Ind
                                  WA_FINAL-LGBKZ.

    PERFORM BDC_DYNPRO      USING 'SAPLMGMM' '4000'.
    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                  '/00'.

    PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                  'MLGT-LGPLA'.
    PERFORM BDC_FIELD       USING 'MLGT-LGPLA'
                                  WA_FINAL-LGPLA.           " BIN

    PERFORM BDC_DYNPRO      USING 'SAPLSPO1' '0300'.
    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                  '=YES'.

    REFRESH: MESSTAB[].
    CALL TRANSACTION  TCODE USING IT_BDCDATA OPTIONS FROM CTU MESSAGES
    INTO MESSTAB .
    REFRESH : IT_BDCDATA[].

    LOOP AT MESSTAB.

      IF MESSTAB-MSGV1 = WA_FINAL-MATNR.
        SELECT SINGLE * FROM T100 INTO @DATA(MSG)
                        WHERE ARBGB = @MESSTAB-MSGID   AND  MSGNR = @MESSTAB-MSGNR AND  SPRSL = 'E'.

        WA_OUTPUT-ASSET = WA_FINAL-MATNR.
        WA_OUTPUT-DESC = MSG-TEXT.
        APPEND WA_OUTPUT TO IT_OUTPUT.

      ELSEIF MESSTAB-MSGTYP = 'E'.

        SELECT SINGLE * FROM T100 INTO MSG
                        WHERE ARBGB = MESSTAB-MSGID   AND  MSGNR = MESSTAB-MSGNR AND  SPRSL = 'E'.
        WA_OUTPUT-ASSET = WA_FINAL-MATNR.
        WA_OUTPUT-DESC = MSG-TEXT.

        APPEND WA_OUTPUT TO IT_OUTPUT.

      ENDIF.
      CLEAR : WA_OUTPUT , MESSTAB.
    ENDLOOP.
    CLEAR: WA_FINAL.
  ENDLOOP.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form DISP
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM DISP .
  WA_FIELDCAT-FIELDNAME =  'ASSET'.
  WA_FIELDCAT-SELTEXT_M = 'Asset No.'.
  WA_FIELDCAT-TABNAME   = 'T_OUTPUT'.
  WA_FIELDCAT-OUTPUTLEN = 30.
  APPEND WA_FIELDCAT TO IT_FIELDCAT.
  CLEAR WA_FIELDCAT.

  WA_FIELDCAT-FIELDNAME =  'DESC'.
  WA_FIELDCAT-SELTEXT_M = 'Status'.
  WA_FIELDCAT-TABNAME   = 'T_OUTPUT'.
  WA_FIELDCAT-OUTPUTLEN = 90.
  APPEND WA_FIELDCAT TO IT_FIELDCAT.
  CLEAR WA_FIELDCAT.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_CALLBACK_PROGRAM = SY-REPID
      IT_FIELDCAT        = IT_FIELDCAT
    TABLES
      T_OUTTAB           = IT_OUTPUT[].
  IF SY-SUBRC <> 0.
    MESSAGE  'ALV List Can not be generated!!!' TYPE 'E'.
  ENDIF.
ENDFORM.

FORM INITIALIZATION .
  W_VALUES-KEY = 'A'.
  W_VALUES-TEXT = 'FOREGROUND'.
  APPEND W_VALUES TO T_VALUES.
  CLEAR W_VALUES.
  W_VALUES-KEY = 'N'.
  W_VALUES-TEXT = 'BACKGROUND'.
  APPEND W_VALUES TO T_VALUES.
  CLEAR W_VALUES.
  W_VALUES-KEY = 'E'.
  W_VALUES-TEXT = 'ONLY ERRORS'.
  APPEND W_VALUES TO T_VALUES.
  CLEAR W_VALUES.
ENDFORM.

*----------------------------------------------------------------------*
*        START NEW SCREEN                                              *
*----------------------------------------------------------------------*
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
  CLEAR WA_BDCDATA.
  WA_BDCDATA-PROGRAM  = PROGRAM.
  WA_BDCDATA-DYNPRO   = DYNPRO.
  WA_BDCDATA-DYNBEGIN = 'X'.
  APPEND WA_BDCDATA TO IT_BDCDATA.
ENDFORM.

*----------------------------------------------------------------------*
*        INSERT FIELD                                                  *
*----------------------------------------------------------------------*
FORM BDC_FIELD USING FNAM FVAL.
*  IF FVAL <> NODATA.
  BREAK ABAP.
  CLEAR WA_BDCDATA.
  WA_BDCDATA-FNAM = FNAM.
  WA_BDCDATA-FVAL = FVAL.
  APPEND WA_BDCDATA TO IT_BDCDATA.
*  ENDIF.
ENDFORM.

FORM DISMODE .
  CALL FUNCTION 'VRM_SET_VALUES'
    EXPORTING
      ID     = 'P_MODE'
      VALUES = T_VALUES.
ENDFORM.

FORM F4_FILE .
  CALL FUNCTION 'F4_FILENAME'
    EXPORTING
      PROGRAM_NAME  = SYST-CPROG
      DYNPRO_NUMBER = SYST-DYNNR
      FIELD_NAME    = 'P_FILE'
    IMPORTING
      FILE_NAME     = P_FILE.
ENDFORM.

Pages