Tuesday, 18 February 2020

Update Order Master to Complete BUCO


Sample Program Update Order BUCO :



REPORT  Z_CS_DWN_IW32 .

TABLES: AUFK,JEST.
*        MARC,MVKE,MARA,KLAH,CABN ,
*        A100,KONP,SSCRFIELDS,A902,A604,A614,KONM,A305,MAST.

TYPE-POOLS: SLIS.

DATA : NO(2) TYPE P.

DATA: it_folder   LIKE STANDARD TABLE OF sdokpath,
      it_file     LIKE STANDARD TABLE OF sdokpath,
      it_fol_fil  LIKE STANDARD TABLE OF sdokpath,
      wa_fol_fil  LIKE sdokpath,
      file_count  TYPE i,
      dir_count   TYPE i.

DATA : BEGIN OF it_join_fields OCCURS 0,
         field_name(20),
       END OF it_join_fields.

DATA : BEGIN OF it_data OCCURS 0,
         AUFNR(018),
         LINE(100),
         AUART(010),
      END OF it_data.

TYPES : BEGIN OF TY_ORDO,
          AUFNR(18)," TYPE AUFK-AUFNR,
          OBJNR TYPE OBJNR,
          AUART LIKE AUFK-AUART,
          STAT TYPE JEST-STAT,
          LINE  LIKE  BSVX-STTXT,
          USER_LINE  LIKE  BSVX-STTXT,

          STATUS(60),
        END OF TY_ORDO.

DATA :IT_ORDO TYPE TABLE OF TY_ORDO,
      WA_ORDO TYPE TY_ORDO.

*----------------------------------------------------------------------*
*   data definition
*----------------------------------------------------------------------*
*       Batchinputdata of single transaction
DATA:   BDCDATA LIKE BDCDATA    OCCURS 0 WITH HEADER LINE.
*       messages of call transaction
DATA:   MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
*       error session opened (' ' or 'X')

DATA:  BEGIN OF IT_MESSTAB OCCURS 0 .
        INCLUDE STRUCTURE BDCMSGCOLL.
DATA:  AUFNR TYPE AUFK-AUFNR.
DATA:  MESS(15).
DATA:  L_MSTRING(480) TYPE C.
DATA:  END OF IT_MESSTAB,

*      IT_AUSP TYPE TABLE OF TY_AUSP,
*      WA_AUSP TYPE TY_AUSP,
      TABLE_N TYPE I ,
      T_FLDCAT     TYPE SLIS_T_FIELDCAT_ALV,
      S_FLDCAT     TYPE SLIS_FIELDCAT_ALV,
      T_SORT       TYPE SLIS_T_SORTINFO_ALV," WITH HEADER LINE,
      WA_SORTINFO TYPE SLIS_SORTINFO_ALV,
      X_LAYOUT     TYPE SLIS_LAYOUT_ALV,
      GD_LAYOUT    TYPE LVC_S_LAYO,
      X_PRINT      TYPE SLIS_PRINT_ALV,
      X_VARIANT    TYPE DISVARIANT,
      D_REPID      TYPE SY-REPID,
      CT_TYPE(2) ,
      F_FLDCAT2 TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
      G_LAYOUT TYPE SLIS_LAYOUT_ALV,
      GS_FIELDCATALOG TYPE LVC_S_FCAT OCCURS 0,
      GV_FCAT LIKE LINE OF GS_FIELDCATALOG,
      GUS_FIELDCATALOG TYPE LVC_S_FCAT OCCURS 0,
     it_alv_hedr       TYPE TABLE OF slis_listheader
                        INITIAL SIZE 0,          "ALVHEADER
     st_alv_hedr       TYPE slis_listheader,

     st_alv_layt       TYPE slis_layout_alv,         "ALVLEYOUT

     it_alv_fcat       TYPE TABLE OF slis_fieldcat_alv
                               INITIAL SIZE 0,
     st_alv_fcat       TYPE slis_fieldcat_alv,

     it_alv_sort       TYPE TABLE OF slis_sortinfo_alv
                               INITIAL SIZE 0,
     st_alv_sort       TYPE slis_sortinfo_alv,
     st_disvariant     TYPE slis_vari.
DATA:  gd_scftx TYPE smp_dyntxt.   "function key 1 properties

DATA : OK_CODE TYPE SY-UCOMM,
       SAVE_OK LIKE OK_CODE,
       OUTPUT  LIKE OK_CODE.
DATA:
       t_stpo_read like STPO_API02 occurs 0 with header line,
       t_stpo_data like STPO_API02 occurs 0 with header line,
       t_stpo_update like STPO_API03 occurs 0 with header line,
       i_stko LIKE stko_api01," OCCURS 0 WITH HEADER LINE,
       T_STKO LIKE STKO_API02 OCCURS 0 WITH HEADER LINE,
       wrk_date like CSAP_MBOM-DATUV.

DATA: AUFK_LINES TYPE I,
      GD_PERCENT TYPE I.

SELECTION-SCREEN BEGIN OF BLOCK BLOCK1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS:
      S_AUFNR FOR AUFK-AUFNR ,
      S_AUART FOR AUFK-AUART OBLIGATORY,
      S_ERDAT FOR AUFK-ERDAT,
      S_VAPLZ FOR AUFK-VAPLZ.
*SELECTION-SCREEN SKIP 1.
*PARAMETERS : C_TECO AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK BLOCK1.

SELECTION-SCREEN BEGIN OF SCREEN 0100 AS WINDOW TITLE txtblk03.
PARAMETERS:  p_pdirp   TYPE pfeflnamel DEFAULT 'C:\',
             psavep    TYPE string DEFAULT 'Order.XLS'.
SELECTION-SCREEN END OF SCREEN 0100.

*AT SELECTION-SCREEN OUTPUT.
*  PERFORM MODIFY_SCREEN.

*F4 for Getting Directory Path
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_pdirp.
  DATA: fname TYPE string.

  CALL METHOD cl_gui_frontend_services=>directory_browse
    EXPORTING
      window_title         = 'Select Directory'
    CHANGING
      selected_folder      = fname
    EXCEPTIONS
      cntl_error           = 1
      error_no_gui         = 2
      not_supported_by_gui = 3
      OTHERS               = 4.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
               WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

  p_pdirp = fname.

*F4 for Getting File Path and Name
AT SELECTION-SCREEN ON VALUE-REQUEST FOR psavep.

  DATA: filename TYPE string,
        path TYPE string.

  CALL METHOD cl_gui_frontend_services=>file_save_dialog
    EXPORTING
      window_title         = 'Select path and file name'
      default_extension    = 'XLS'
    CHANGING
      filename             = filename
      path                 = path
      fullpath             = psavep
    EXCEPTIONS
      cntl_error           = 1
      error_no_gui         = 2
      not_supported_by_gui = 3
      OTHERS               = 4.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
               WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

INITIALIZATION.
  PERFORM INIT.
  txtblk03 = 'Download File'.
  psavep   = 'Order.XLS'.


START-OF-SELECTION.

  PERFORM FILL_DATA.
  PERFORM VIEW_DATA.
*  ENDIF.
*&---------------------------------------------------------------------*
*&      Form  FILL_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FILL_DATA .

  DATA : DG_OBJNR TYPE AUFK-OBJNR.

* Append Data to Itab.
  REFRESH IT_DATA.
  IT_DATA-AUFNR = 'Material Bom'.
  IT_DATA-LINE  = 'System User'.
  IT_DATA-AUART = 'Order Type'.
  APPEND IT_DATA.CLEAR IT_DATA.

*  First Step and .

  REFRESH IT_ORDO.
  SELECT AUFK~AUFNR AUFK~OBJNR AUFK~AUART JEST~STAT
    INTO CORRESPONDING FIELDS OF TABLE IT_ORDO
    FROM AUFK
    INNER JOIN JEST AS JEST ON JEST~OBJNR = AUFK~OBJNR
   WHERE AUFK~AUFNR IN S_AUFNR
     AND AUFK~AUART IN S_AUART
     AND AUFK~ERDAT IN S_ERDAT
     AND AUFK~VAPLZ IN S_VAPLZ
     AND JEST~INACT NE 'X'
     AND JEST~STAT = 'I0046'.

  table_n = 0.
  DESCRIBE TABLE IT_ORDO LINES table_n.
  IF table_n EQ 0.
    CALL FUNCTION 'C14A_POPUP_NO_HITS'.
    STOP.
  ENDIF.

*  SORT IT_ORDO BY AUFNR.
*  DELETE ADJACENT DUPLICATES FROM IT_ORDO COMPARING AUFNR.
*
  LOOP AT IT_ORDO INTO WA_ORDO.

    DG_OBJNR = WA_ORDO-OBJNR.

    CALL FUNCTION 'STATUS_TEXT_EDIT'
      EXPORTING
       FLG_USER_STAT           = 'X'
        OBJNR                   = DG_OBJNR  "WA_OR02-OBJNR
        SPRAS                   = sy-langu
     IMPORTING
*       ANW_STAT_EXISTING       =
*       E_STSMA                 =
       LINE                    =  WA_ORDO-LINE
       USER_LINE               =  WA_ORDO-USER_LINE
*       STONR                   =
*     EXCEPTIONS
*       OBJECT_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.

    MODIFY IT_ORDO FROM WA_ORDO.
  ENDLOOP.

*  Change using IW32
  Perform Proses.
*  `WAIT UP TO 30 SECONDS.
  Perform lst_view.


*  SORT IT_ORDO BY ORDONR POSNR.
  LOOP AT IT_ORDO INTO WA_ORDO.
    CONCATENATE '="'  WA_ORDO-AUFNR '"' INTO WA_ORDO-AUFNR.
    MOVE-CORRESPONDING WA_ORDO TO IT_DATA.
    APPEND IT_DATA.
  ENDLOOP.

  SORT IT_ORDO BY AUFNR.
*  SORT IT_DATA BY AUFNR.

ENDFORM.                    " FILL_DATA
*&---------------------------------------------------------------------*
*&      Form  DOWNLOAD
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM DOWNLOAD .

  Concatenate p_Pdirp '\' psavep INTO psavep.

  IF IT_DATA[] IS NOT INITIAL.
    CALL FUNCTION 'GUI_DOWNLOAD'
      EXPORTING
        filename                = psavep " Path and Name of Excel File with Extension .xls
        write_field_separator   = 'X'
*          FILETYPE                      = 'ASC'
      TABLES
        data_tab                = it_data " Internal Table having all Name of Folders and Files
*        fieldnames              = it_join_fields
      EXCEPTIONS
        file_write_error        = 1
        no_batch                = 2
        gui_refuse_filetransfer = 3
        invalid_type            = 4
        no_authority            = 5
        unknown_error           = 6
        header_not_allowed      = 7
        separator_not_allowed   = 8
        filesize_not_allowed    = 9
        header_too_long         = 10
        dp_error_create         = 11
        dp_error_send           = 12
        dp_error_write          = 13
        unknown_dp_error        = 14
        access_denied           = 15
        dp_out_of_memory        = 16
        disk_full               = 17
        dp_timeout              = 18
        file_not_found          = 19
        dataprovider_exception  = 20
        control_flush_error     = 21
        OTHERS                  = 22.
    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
              WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.
  ELSE.
    MESSAGE: 'No file found in the selected Directory' TYPE 'I'.
  ENDIF.
ENDFORM.                    " DOWNLOAD
*&---------------------------------------------------------------------*
*&      Form  MODIFY_SCREEN
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM MODIFY_SCREEN .
  LOOP AT SCREEN.
    IF screen-name = 'pdirp'.
      screen-input = '0'.
      PSAVEP = 'Material Master.xls'.
      MODIFY SCREEN.
    ENDIF.
  ENDLOOP.
ENDFORM.                    " MODIFY_SCREEN
*&---------------------------------------------------------------------*
*&      Form  VIEW_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM VIEW_DATA .

* Display Message Upload.
  PERFORM build_fieldcat.
  PERFORM L_build_layout.
  .
  SORT IT_ORDO BY AUFNR.
  PERFORM View.

ENDFORM.                    " VIEW_DATA
*&---------------------------------------------------------------------*
*&      Form  INIT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM INIT .
  DEFINE f_fldcat.
    clear s_fldcat.
    s_fldcat-fieldname = &1.
    s_fldcat-decimals_out  = &2.
    s_fldcat-seltext_l = &3.
    s_fldcat-outputlen  = &4.
    s_fldcat-just      = &5.
    s_fldcat-no_out    = &6.
    s_fldcat-datatype  = &7.
    s_fldcat-cfieldname = &8.
    s_fldcat-no_zero  = &9.
*    s_fldcat-outputlen  = &10.

    append s_fldcat to t_fldcat.
  END-OF-DEFINITION.
ENDFORM.                    " INIT
*&---------------------------------------------------------------------*
*&      Form  BUILD_FIELDCAT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM BUILD_FIELDCAT .
*           *  *             1     2  3           4   5  6  7      8  9
  f_fldcat 'AUFNR' '' 'Order' '' 'L' ''  'CHAR' '' '' .
  f_fldcat 'LINE' '' 'System User' '' 'L' ''  'CHAR' '' '' .
  f_fldcat 'AUART' '' 'Order Type' '' 'L' '' 'CHAR' '' ''.
  f_fldcat 'STATUS' '' 'Status' '' 'L' '' 'CHAR' '' ''.
  CLEAR S_FLDCAT.

ENDFORM.                    " BUILD_FIELDCAT
*&---------------------------------------------------------------------*
*&      Form  L_BUILD_LAYOUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM L_BUILD_LAYOUT .
  x_layout-colwidth_optimize  = 'X'.
  x_layout-info_fieldname     = 'LINE_COLOR'.
  x_layout-def_status         = 'X'.
ENDFORM.                    " L_BUILD_LAYOUT
*&---------------------------------------------------------------------*
*&      Form  VIEW
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM VIEW .
  d_repid = sy-repid.
  Call function 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program = d_repid
      i_callback_pf_status_set = 'F_STATUS_SET'
      i_callback_user_command  = 'USER_COMMAND'
      it_fieldcat        = t_fldcat[]
      it_sort            = t_sort[]
      is_layout          = x_layout
*        i_default          = 'X'
        i_save             = 'A'
*        is_variant         = x_variant
*        it_event_exit      = t_event_exit[]
*        is_print           = x_print
    TABLES
      t_outtab           = IT_ORDO[]
    EXCEPTIONS
      program_error      = 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.

ENDFORM.                    " VIEW

*&---------------------------------------------------------------------*
*&      Form  f_status_set
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->RT_EXTAB   text
*----------------------------------------------------------------------*
FORM f_status_set USING rt_extab TYPE slis_t_extab.
  SET PF-STATUS 'ZALVV'.
ENDFORM.                    "f_status_set

"stat_set
*&---------------------------------------------------------------------*
*&      Form  USER_COMMAND
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_UCOMM    text
*      -->P_SELFIELD text
*----------------------------------------------------------------------*
FORM USER_COMMAND  USING p_ucomm    LIKE sy-ucomm
                         rs_selfield TYPE slis_selfield.
  CASE p_ucomm.
    WHEN '&DWN'.
      CLEAR: p_pdirp,psavep. .
      CALL SCREEN 0101 STARTING AT 10 05.
  ENDCASE.

ENDFORM.                    "USER_COMMAND
*&---------------------------------------------------------------------*
*&      Module  PF_STATUS  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE PF_STATUS OUTPUT.
  SET PF-STATUS 'Z_ST_ALV'.
ENDMODULE.                 " PF_STATUS  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  STATUS_0101  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE STATUS_0101 OUTPUT.
  SET PF-STATUS 'Z_ST_ALV'.
*  SET TITLEBAR 'xxx'.

  PERFORM MODIFY_SCREEN_101.

ENDMODULE.                 " STATUS_0101  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0101  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0101 INPUT.

  CASE SY-UCOMM.
    WHEN '&EXEC'.
      IF p_pdirp is not INITIAL AND psavep is not initial.
*        PERFORM DOWNLOAD.
        MESSAGE: 'Can Not Download ' TYPE 'S'.
        LEAVE TO SCREEN 0.
      ELSE.
        MESSAGE: 'Folder and File Name Cannot Empty ' TYPE 'S'.
      ENDIF.
    WHEN 'G_FIND'.
      PERFORM FIND.
    WHEN '&CANC'.
      LEAVE TO SCREEN 0 .
  ENDCASE.

ENDMODULE.                 " USER_COMMAND_0101  INPUT
*&---------------------------------------------------------------------*
*&      Form  MODIFY_SCREEN_101
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM MODIFY_SCREEN_101 .
  LOOP AT SCREEN.
    IF screen-name = 'OK_CODE'." 'pdirp'.
      screen-input = '0'.
*      P_PDIRP = 'D:\'.
      PSAVEP = 'Order.xls'.
      MODIFY SCREEN.
    ENDIF.
  ENDLOOP.

ENDFORM.                    " MODIFY_SCREEN_101
*&---------------------------------------------------------------------*
*&      Form  FIND
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FIND .
  DATA: fname TYPE string.

  CALL METHOD cl_gui_frontend_services=>directory_browse
    EXPORTING
      window_title         = 'Select Directory'
    CHANGING
      selected_folder      = fname
    EXCEPTIONS
      cntl_error           = 1
      error_no_gui         = 2
      not_supported_by_gui = 3
      OTHERS               = 4.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
               WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
  p_pdirp = fname.

ENDFORM.                    " FIND
*&---------------------------------------------------------------------*
*&      Form  PROSES
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM PROSES .
*  DATA: AUFK_LINES TYPE I,
*        GD_PERCENT TYPE I.


  SORT IT_ORDO BY AUFNR.
  DELETE ADJACENT DUPLICATES FROM IT_ORDO COMPARING AUFNR.

*  CHECK SY-SUBRC EQ 0.
  DESCRIBE TABLE IT_ORDO LINES AUFK_LINES.
*  AUFK_LINES = SY-DBCNT.
  CLEAR: GD_PERCENT.


  SORT IT_ORDO BY AUFNR .
  LOOP AT IT_ORDO INTO WA_ORDO.
    PERFORM PROGRESS_BAR USING '         Retrieving data...'(001)
                               SY-TABIX
                               AUFK_LINES.


    perform bdc_dynpro      using 'SAPLCOIH' '0101'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'CAUFVD-AUFNR'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_field       using 'CAUFVD-AUFNR'
                                  WA_ORDO-AUFNR.
    perform bdc_dynpro      using 'SAPLCOIH' '3000'.
    perform bdc_field       using 'BDC_OKCODE'
                                   '=BBAB'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'CAUFVD-KTEXT'.

    perform bdc_dynpro      using 'SAPLCOIH' '3000'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=BU'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'CAUFVD-KTEXT'.
    perform bdc_transaction using 'IW32'.

*    WAIT UP TO 5 SECONDS.

  ENDLOOP.

  MESSAGE '       ' TYPE 'S'.

ENDFORM.                    " PROSES


*----------------------------------------------------------------------*
*        Start new screen                                              *
*----------------------------------------------------------------------*
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
  CLEAR BDCDATA.
  BDCDATA-PROGRAM  = PROGRAM.
  BDCDATA-DYNPRO   = DYNPRO.
  BDCDATA-DYNBEGIN = 'X'.
  APPEND BDCDATA.
ENDFORM.                    "BDC_DYNPRO

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


*----------------------------------------------------------------------*
*        Start new transaction according to parameters                 *
*----------------------------------------------------------------------*
FORM BDC_TRANSACTION USING TCODE.
  DATA: L_MSTRING(480).
  DATA: L_SUBRC LIKE SY-SUBRC.
  REFRESH MESSTAB.
  CALL TRANSACTION TCODE USING BDCDATA
                   MODE  'N' " 'N' "'A' "CTUMODE
                   UPDATE 'L' "'L' "'S' "CUPDATE
                   MESSAGES INTO MESSTAB.

  LOOP AT MESSTAB.
    MESSAGE ID     MESSTAB-MSGID
            TYPE   MESSTAB-MSGTYP
            NUMBER MESSTAB-MSGNR
            INTO L_MSTRING
            WITH MESSTAB-MSGV1
                 MESSTAB-MSGV2
                 MESSTAB-MSGV3
                 MESSTAB-MSGV4.

    IT_MESSTAB-MSGTYP = MESSTAB-MSGTYP.
    IT_MESSTAB-MSGV1 = MESSTAB-MSGV1.
    IT_MESSTAB-MSGV2 = MESSTAB-MSGV2.
    IF MESSTAB-MSGV2 IS NOT INITIAL.
      IT_MESSTAB-MSGV1 = MESSTAB-MSGV2.
    ENDIF.
    IT_MESSTAB-MSGV3 = MESSTAB-MSGV3.
    IT_MESSTAB-MSGV4 = MESSTAB-MSGV4.
    IT_MESSTAB-L_MSTRING = L_MSTRING.

    APPEND IT_MESSTAB .
  ENDLOOP.

  REFRESH BDCDATA.
ENDFORM.                    "BDC_TRANSACTION
*&---------------------------------------------------------------------*
*&      Form  LST_VIEW
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM LST_VIEW.
  LOOP AT IT_MESSTAB.
    IT_MESSTAB-AUFNR = IT_MESSTAB-AUFNR.
    IT_MESSTAB-MESS = IT_MESSTAB-L_MSTRING+6(5).
    MODIFY  IT_MESSTAB.
  ENDLOOP.


  SORT IT_MESSTAB BY MESS.
  DELETE IT_MESSTAB WHERE MESS NE 'saved'.
  SORT IT_MESSTAB BY MSGV1.

  SORT IT_ORDO BY AUFNR.
  SORT IT_MESSTAB BY MSGV1.
  IF IT_MESSTAB IS NOT INITIAL.
    LOOP AT IT_ORDO INTO WA_ORDO.
      READ TABLE IT_MESSTAB WITH KEY MSGV1 = WA_ORDO-AUFNR BINARY SEARCH.

      IF SY-SUBRC EQ 0.
        WA_ORDO-STATUS = 'Updated'.
          REPLACE ALL OCCURRENCES OF 'CLSD' IN WA_ORDO-LINE WITH 'TECO'.
      ELSE.
        WA_ORDO-STATUS = 'Not Update'.
      ENDIF.

      MODIFY IT_ORDO FROM WA_ORDO.
    ENDLOOP.

  ENDIF.

*  LOOP AT IT_ORDO INTO WA_ORDO.
*    MOVE-CORRESPONDING WA_ORDO TO WA_MMXX.
*    APPEND WA_MMXX TO IT_MMXX.
*  ENDLOOP.
ENDFORM.                    " LST_VIEW
*&---------------------------------------------------------------------*
*&      Form  PROGRESS_BAR
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_1177   text
*      -->P_SY_TABIX  text
*      -->P_AUFK_LINES  text
*----------------------------------------------------------------------*
FORM PROGRESS_BAR  USING    P_VALUE
                            P_SY-TABIX
                            P_NLINES.
DATA: W_TEXT(40),
      W_PERCENTAGE TYPE P,
      W_PERCENT_CHAR(3).

  W_PERCENTAGE = ( P_SY-TABIX / P_NLINES ) * 100.
  W_PERCENT_CHAR = W_PERCENTAGE.
  SHIFT W_PERCENT_CHAR LEFT DELETING LEADING ' '.
  CONCATENATE P_VALUE W_PERCENT_CHAR '% Complete'(002) INTO W_TEXT.
* This check needs to be in otherwise when looping around big tables
* SAP will re-display indicator too many times causing report to run
* very slow. (No need to re-display same percentage anyway)
  IF W_PERCENTAGE GT GD_PERCENT OR P_SY-TABIX EQ 1.
    CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
      EXPORTING
        PERCENTAGE = W_PERCENTAGE
        TEXT       = W_TEXT.
    GD_PERCENT = W_PERCENTAGE.
  ENDIF.

ENDFORM.                    " PROGRESS_BAR

No comments:

Post a Comment

Visitor

Code Syntax Try...Endtry

  Code : Report Try. Parameters  NUMBER  type  I . data  RESULT  type  P  decimals  2 . data  OREF  type  ref  to  CX_ROOT . data  TEXT  typ...