[SAP ABAP] - Upload Inspection Plan (Full Program)

  Template Excel




GUI Status




==================================================================
*&---------------------------------------------------------------------*
*& Report  YO_UPLOAD_INSPECTION_PLAN
*&
*&---------------------------------------------------------------------*
*& Module : PP
*&
*&---------------------------------------------------------------------*

REPORT  yo_upload_inspection_plan.
*&---------------------------------------------------------------------*
*&  Include           YO_CPP019_UPLOAD_ROUTING_TOP
*&---------------------------------------------------------------------*

*------------------standard common includes----------------------------*
* ALV common functions
INCLUDE yo_alv_hier_common"<< You can found in ABAP Tutorial from SAP Interface Community


TABLES t001lmarcmara.

DATABEGIN OF gi_data OCCURS 0,
        task_grp(6),
        matnr(18),
        descr1(40),
        plant(4),
        valid(8),
        usage(3),
        status(3),
        unit(5),
        cokey(4),
        woctr(8),
        insno(6),
        mic(8),
        im(8),



        exp,
        chbox,
        icon(4),
        msg(200),
        msg1(200),
        msg2(200),
        msg3(200),
      END OF gi_data.

DATA gi_detail LIKE STANDARD TABLE OF gi_data WITH HEADER LINE,
       gi_header LIKE STANDARD TABLE OF gi_data WITH HEADER LINE.

DATAgw_header LIKE gi_data,
      gv_string(256),
      gv_test LIKE bapiflag.

DATABEGIN OF gi_xls OCCURS 1,
          tx_line LIKE gv_string.
DATAEND OF gi_xls.
DATA gi_excel LIKE STANDARD TABLE OF alsmex_tabline WITH HEADER LINE.
DATA gi_zemp  LIKE STANDARD TABLE OF gi_xls WITH HEADER LINE.


*----------------------------------------------------------*
* Global Variable                                          *
*----------------------------------------------------------*
TYPE-POOLSiconole2.

FIELD-SYMBOLS  <mnam>  TYPE ANY.
FIELD-SYMBOLS  <intab> TYPE ANY.

*&---------------------------------------------------------------------*
*& selection-screen -> Selection
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK WITH FRAME TITLE cm_tlt01.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 01(20cm_file FOR FIELD p_file.
PARAMETERSp_file(128OBLIGATORY DEFAULT 'D:\TEMPLATE.XLS'.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 01(31cm_col01 FOR FIELD p_col01.
PARAMETERSp_col01(4TYPE DEFAULT 1.
SELECTION-SCREEN COMMENT 41(10cm_col02 FOR FIELD p_col02.
PARAMETERSp_col02(4TYPE DEFAULT 25.
SELECTION-SCREEN END OF LINE.


loading...
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 01(31cm_row01 FOR FIELD p_row01.
PARAMETERSp_row01(4TYPE DEFAULT 3.
SELECTION-SCREEN COMMENT 41(10cm_row02 FOR FIELD p_row02.
PARAMETERSp_row02(4TYPE DEFAULT 9999.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN END OF BLOCK a.

*----------------------------------------------------------------------*
* INITIALIZATION.
*----------------------------------------------------------------------*
INITIALIZATION.
  PERFORM fm_initialization.


AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
  PERFORM fm_val_req_fname.

*&---------------------------------------------------------------------*
*&  Include           YO_CPP019_UPLOAD_ROUTING_F01
*&---------------------------------------------------------------------*

*----------------------------------------------------------------------*
* START-OF-SELECTION.
*----------------------------------------------------------------------*
START-OF-SELECTION.
  CHECK p_file IS NOT INITIAL.

  PERFORM fm_collect_data.
  PERFORM fm_process_data.
  PERFORM fm_validate_data.
  PERFORM fm_display_data.

*&---------------------------------------------------------------------*
*&      Form  fm_val_req_fname
*&---------------------------------------------------------------------*
FORM fm_val_req_fname .
  DATAlv_program_name  LIKE sy-repid,
        lv_dynpro_number LIKE sy-dynnr,
        lv_field_name    LIKE dynpread-fieldname,
        lv_file_name     LIKE ibipparms-path.

  lv_program_name  sy-repid.
  lv_dynpro_number sy-dynnr.
  lv_field_name    'P_FNAME'.

  PERFORM fm_f4_filename
     USING    lv_program_name
              lv_dynpro_number
              lv_field_name
     CHANGING lv_file_name.

  p_file lv_file_name.
ENDFORM.                    " fm_val_req_fname

*&---------------------------------------------------------------------*
*&      Form  fm4_filename
*&---------------------------------------------------------------------*
FORM fm_f4_filename
   USING    p_e_program_name
            p_e_dynpro_number
            p_e_field_name
   CHANGING p_i_file_name.

  CALL FUNCTION 'F4_FILENAME'
    EXPORTING
      program_name  p_e_program_name
      dynpro_number p_e_dynpro_number
      field_name    p_e_field_name
    IMPORTING
      file_name     p_i_file_name.
ENDFORM.                    " fm4_filename


*&---------------------------------------------------------------------*
*&      Form  fm_gui_upload
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_T_DATA_TAB  text
*      -->P_E_FILENAME  text
*----------------------------------------------------------------------*
FORM fm_gui_upload TABLES   p_t_data_tab
                    USING    p_e_filename.

  CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
      filename                p_e_filename
      filetype                'DAT'
*    IMPORTING
*      filelength              = p_i_filelength
*      header                  = p_i_header
    TABLES
      data_tab                p_t_data_tab
    EXCEPTIONS
      file_open_error         1
      file_read_error         2
      no_batch                3
      gui_refuse_filetransfer 4
      invalid_type            5
      no_authority            6
      unknown_error           7
      bad_data_format         8
      header_not_allowed      9
      separator_not_allowed   10
      header_too_long         11
      unknown_dp_error        12
      access_denied           13
      dp_out_of_memory        14
      disk_full               15
      dp_timeout              16
      OTHERS                  17.

  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.                    " fm_gui_upload

*&---------------------------------------------------------------------*
*&      Form  FM_GET_DATA_EXCEL_OBJECT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_GI_EXCEL  text
*      -->P_PA_FNAME  text
*      -->P_PA_COL01  text
*      -->P_PA_COL02  text
*      -->P_PA_ROW01  text
*      -->P_PA_ROW02  text
*----------------------------------------------------------------------*
FORM fm_get_data_excel_object  TABLES   p_gi_excel
                               USING    p_pa_fname
                                        p_pa_col01
                                        p_pa_col02
                                        p_pa_row01
                                        p_pa_row02.
  DATA lv_col01 TYPE i,
         lv_col02 TYPE i,
         lv_row01 TYPE i,
         lv_row02 TYPE i.

  lv_col01 p_pa_col01.
  lv_col02 p_pa_col02.
  lv_row01 p_pa_row01.
  lv_row02 p_pa_row02.

  PERFORM fm_gui_message USING 'Open Excel Files and Call Object ...' ''.
  CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
    EXPORTING
      filename                p_pa_fname
      i_begin_col             lv_col01
      i_begin_row             lv_row01
      i_end_col               lv_col02
      i_end_row               lv_row02
    TABLES
      intern                  p_gi_excel
    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.
  ELSE.
    PERFORM fm_gui_message USING 'Finish Reading Excel Data ...' ''.
  ENDIF.
ENDFORM.      "FM_GET_DATA_EXCEL_OBJECT


*&---------------------------------------------------------------------*
*&      Form  FM_PUT_DATA_ARRAY
*&---------------------------------------------------------------------*
FORM fm_put_data_array  TABLES   p_it_zemp .

  APPEND 'TASK_GRP' TO  p_it_zemp.
  APPEND 'MATNR'    TO  p_it_zemp.
  APPEND 'DESCR1'   TO p_it_zemp.
  APPEND 'PLANT'    TO  p_it_zemp.
  APPEND 'VALID'    TO  p_it_zemp.
  APPEND 'USAGE'    TO  p_it_zemp.
  APPEND 'STATUS'   TO  p_it_zemp.
*    APPEND 'UNIT' TO  p_it_zemp.
  APPEND 'COKEY'    TO  p_it_zemp.
  APPEND 'WOCTR'    TO  p_it_zemp.
  APPEND 'INSNO'    TO  p_it_zemp.
  APPEND 'MIC'      TO  p_it_zemp.

ENDFORM.                    " FM_PUT_DATA_ARRAY

*&---------------------------------------------------------------------*
*&      Form  FM_INSERT_DATA_TO_INTAB
*&---------------------------------------------------------------------*
FORM fm_insert_data_to_intab .
  DATA :   li_tamp LIKE STANDARD TABLE OF gi_xls WITH HEADER LINE,

           lv_cntr TYPE i,
           lv_pos  TYPE i,
           lv_num  TYPE i,
           lv_field(20TYPE c,
           lv_table(20TYPE VALUE 'GI_DATA',
           lv_fname(30TYPE c,
           ppterid TYPE i.

  LOOP AT gi_excel.
    READ TABLE gi_zemp  INDEX gi_excel-col.
    lv_field gi_zemp-tx_line.
    CONCATENATE lv_table '-' lv_field INTO lv_fname.
    CONDENSE lv_fname.
    ASSIGN (lv_fnameTO
<mnam>.
    CONDENSE gi_excel-value.
*    TRANSLATE gi_excel-value TO UPPER CASE.
    
<mnam> gi_excel-value.

    AT END OF row.
      lv_num 0.
      APPEND gi_data.
      CLEAR gi_data.
    ENDAT.
  ENDLOOP.
ENDFORM.                    " FM_INSERT_DATA_TO_INTAB



*&---------------------------------------------------------------------*
*&      Form  fm_refresh_intab
*&---------------------------------------------------------------------*
FORM fm_refresh_intab.
* here free all the internal table used in the program.
  REFRESHgi_data.
ENDFORM.                    " fm_refresh_intab

*&---------------------------------------------------------------------*
*&      Form  fm_gui_message
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->fu_text1   text
*      -->fu_text2   text
*----------------------------------------------------------------------*
FORM fm_gui_message USING    fu_text1 fu_text2.
  DATAld_text1(100)    TYPE c.

  CONCATENATE fu_text1 fu_text2 INTO ld_text1
              SEPARATED BY space.
  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
    EXPORTING
      percentage 0
      text       ld_text1.
ENDFORM.                    " fm_gui_message



*&---------------------------------------------------------------------*
*&      Form  fm_display_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM fm_display_data.
  PERFORM fm_alv_reset_data.

*  Set ALV Parameters and Data
  PERFORM fm_alv_set_layout USING 'Inspection Plan'.
  PERFORM fm_alv_set_print.
  PERFORM fm_alv_set_column.

  gv_i_default 'X'.
  gv_i_save 'A'.

  PERFORM fm_alv_show_hier TABLES gi_header gi_detail.

ENDFORM.                    "fm_display_data

*&---------------------------------------------------------------------*
*&      Form  fm_alv_set_column
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM fm_alv_set_column.

*  Set Header Column
  PERFORM fm_alv_add_fieldcat USING 'GI_HEADER':
    'ICON'  'GI_HEADER' 'ICON'   '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' 'X' 'X' 'X',

    'TASK_GRP' 'GI_HEADER'  'TASK_GRP'  '' '' '' '' '' 'Task Group' '' '' '' '' '' '' '' '' '' '' 'X' 'X',
    'MATNR'    'MARC'       'MATNR'  '' '' '' '' '' 'Material' '' '' '' '' '' '' '' '' '' '' '' '',
    'DESCR1'   'GI_HEADER'  'DESCR1' '' '' '' '' '' 'Description' '' '' '' '' '' '' '' '' '' '' '' '',
    'PLANT'    'GI_HEADER'  'PLANT'  '' '' '' '' '' 'Plant' '' '' '' '' '' '' '' '' '' '' '' '',
    'VALID'    'GI_HEADER'  'VALID'  '' '' '' '' '' 'Valid' '' '' '' '' '' '' '' '' '' '' '' '',
    'USAGE'    'GI_HEADER'  'USAGE'  '' '' '' '' '' 'Usage' '' '' '' '' '' '' '' '' '' '' '' '',
    'STATUS'   'GI_HEADER'  'STATUS'  '' '' '' '' '' 'Status' '' '' '' '' '' '' '' '' '' '' '' '',
    'UNIT'     'GI_HEADER'  'UNIT'  '' '' '' '' '' 'Unit' '' '' '' '' '' '' '' '' '' '' '' '',
    'COKEY'    'GI_HEADER'  'COKEY'  '' '' '' '' '' 'Cokey' '' '' '' '' '' '' '' '' '' '' '' '',
    'WOCTR'    'GI_HEADER'  'WOCTR'  '' '' '' '' '' 'Work Center' '' '' '' '' '' '' '' '' '' '' '' '',


    'MSG'   '' ''    '' '' '' '' '' 'Message Co Prd' '' '' '' '' '' '' '' '' '' '' '' '',
    'MSG1'   '' ''    '' '' '' '' '' 'Message BOM 1' '' '' '' '' '' '' '' '' '' '' '' '',
    'MSG2'   '' ''    '' '' '' '' '' 'Message BOM 2' '' '' '' '' '' '' '' '' '' '' '' '',
    'MSG3'   '' ''    '' '' '' '' '' 'Message BOM 3' '' '' '' '' '' '' '' '' '' '' '' ''.

  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
     EXPORTING
       i_internal_tabname           'GI_HEADER'
*     i_structure_name             = ''
     CHANGING
       ct_fieldcat                  gi_it_fieldcat[]
     EXCEPTIONS
       inconsistent_interface       1
       program_error                2
       OTHERS                       3.

*  Set Detail Column
  PERFORM fm_alv_add_fieldcat USING 'GI_DETAIL':
    'TASK_GRP'  'GI_HEADER'  'TASK_GRP'  '' '' '' '' '' 'Task Group' '' '' '' '' '' '' '' '' '' '' 'X' 'X',
    'INSNO'     'GI_HEADER'  'INSNO'  '' '' '' '' '' 'Ins No' '' '' '' '' '' '' '' '' '' '' 'X' 'X',
    'MIC'       'GI_HEADER'  'MIC'  '' '' '' '' '' 'Master IC' '' '' '' '' '' '' '' '' '' '' '' '',
    'IM'        'GI_HEADER'  'IM'  '' '' '' '' '' 'Ins. Method' '' '' '' '' '' '' '' '' '' '' '' '',

    'MSG'   '' ''    '' '' '' '' '' 'Message' '' '' '' '' '' '' '' '' '' '' '' ''.

  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
     EXPORTING
       i_internal_tabname           'GI_DETAIL'
*     i_structure_name             = '
     CHANGING
       ct_fieldcat                  gi_it_fieldcat[]
     EXCEPTIONS
       inconsistent_interface       1
       program_error                2
       OTHERS                       3.

*  Sort and Group by Field
*  CLEAR gi_it_sort.
*  gi_it_sort-fieldname = 'WERKS'. ">> Filled by Fieldname
*  gi_it_sort-up        = 'X'.     ">> 'X' = Ascending ; ' ' = Descending
*  gi_it_sort-subtot    = 'X'.
*  gi_it_sort-group     = '*'.     ">> '*' = Grouped by field ; ' ' = Not grouped by this field
*  APPEND gi_it_sort.


ENDFORM.                    "fm_alv_set_column



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

*&      Form  FM_USER_COMMAND

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

*       text

*---------------------------------------------------------------------*

FORM fm_alv_user_command USING fu_ucomm    LIKE sy-ucomm
                               fu_selfield TYPE slis_selfield.

  DATAlt_dynpread LIKE dynpread OCCURS WITH HEADER LINE,
        lv_ok_code  LIKE sy-ucomm.


  MOVE fu_ucomm TO lv_ok_code.
  CASE lv_ok_code.
    WHEN '&UPLOAD'.
      gv_test ' '.
      PERFORM fm_upload_data.
    WHEN '&TEST'.
      gv_test 'X'.
      PERFORM fm_upload_data.
    WHEN '&IC1'.
*      PERFORM fm_alv_event_double_click.
    WHEN '&ETA'.
*      PERFORM fm_alv_event_double_click.
    WHEN '&F03' OR '&F15' OR '&F12'.

  ENDCASE.

  MOVE 'X' TO fu_selfield-refresh.

ENDFORM.                    "FM_USER_COMMAND

*&---------------------------------------------------------------------*
*&      Form  fm_build_keyinfo
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->FU_KEYINFO text
*----------------------------------------------------------------------*
FORM fm_build_keyinfo  USING    fu_keyinfo TYPE slis_keyinfo_alv .

  fu_keyinfo-header01 'TASK_GRP'.

  fu_keyinfo-item01 'TASK_GRP'.

ENDFORM.                    "fm_build_keyinfo

*&---------------------------------------------------------------------*
*&  Include           YO_CPP019_UPLOAD_ROUTING_F02
*&---------------------------------------------------------------------*


*&---------------------------------------------------------------------*
*&      Form  fm_initialization
*&---------------------------------------------------------------------*
FORM fm_initialization .
  cm_tlt01 'File Location'.
  cm_file  'File Location'.
  cm_col01 'Start column'.
  cm_col02 'End column'.
  cm_row01 'Start Row'.
  cm_row02 'End Row'.

ENDFORM.                    " fm_initialization

*&---------------------------------------------------------------------*
*&      Form  fm_collect_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM fm_collect_data.
  PERFORM fm_get_data_excel_object TABLES gi_excel
                                    USING p_file
                                          p_col01 p_col02
                                          p_row01 p_row02.
  PERFORM fm_put_data_array TABLES gi_zemp.
  PERFORM fm_insert_data_to_intab.
ENDFORM.                    " fm_collect_data

*&---------------------------------------------------------------------*
*&      Form  fm_process_data_im
*&---------------------------------------------------------------------*
FORM fm_process_data.
  DATA li_qpmz_exp LIKE STANDARD TABLE OF qpmz WITH HEADER LINE.
  DATA lv_date LIKE sy-datum.

  LOOP AT gi_data.

    MOVE-CORRESPONDING gi_data TO gi_detail.

    CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
      EXPORTING
        input        gi_data-matnr
      IMPORTING
        output       gi_detail-matnr
      EXCEPTIONS
        length_error 1
        OTHERS       2.

    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        input  gi_data-mic
      IMPORTING
        output gi_detail-mic.

    REFRESH li_qpmz_exp.

*    break albertusr.
    IF gi_detail-mic IS NOT INITIAL AND gi_detail-valid IS NOT INITIAL.
      lv_date gi_detail-valid.
      CALL FUNCTION 'QPSD_FEATURE_VALID_READ'
        EXPORTING
          gueltigab     lv_date
          kz_aufloesung 'X'
          merkmal       gi_detail-mic
          werk          gi_detail-plant
        IMPORTING
          qpmz_exp      li_qpmz_exp.
      gi_detail-im li_qpmz_exp-pmethode.
    ENDIF.

    *PERFORM fm_check_auth_werks(yo_cpp020_upload_bomUSING gi_detail-plant.
    *PERFORM fm_check_auth_werks2(yo_cpp020_upload_bomUSING gi_detail-plant.

    APPEND gi_detail.
  ENDLOOP.

ENDFORM.                    " fm_process_data_im


*&---------------------------------------------------------------------*
*&      Form  fm_validate_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM fm_validate_data.

  DATA li_marc LIKE STANDARD TABLE OF marc WITH HEADER LINE,
         li_qpmk LIKE STANDARD TABLE OF qpmk WITH HEADER LINE,
         li_mara LIKE STANDARD TABLE OF mara WITH HEADER LINE,
         li_detail LIKE STANDARD TABLE OF gi_header WITH HEADER LINE.

  DATA lv_flag,
         lv_idnrk(18),
         lv_index LIKE sy-tabix.

  CHECK LINESgi_detail 0.

  "Get Plant data for Material Info
  li_detail[] =  gi_detail[].
  SORT li_detail BY matnr plant.
  DELETE ADJACENT DUPLICATES FROM li_detail COMPARING matnr plant.

  SELECT INTO TABLE li_marc
  FROM marc
    FOR ALL ENTRIES IN li_detail
  WHERE matnr li_detail-matnr AND
        werks li_detail-plant.

  "Get MIC Info
  REFRESH li_detail.
  li_detail[] =  gi_detail[].
  SORT li_detail BY mic.
  DELETE ADJACENT DUPLICATES FROM li_detail COMPARING mic.

  SELECT INTO TABLE li_qpmk
  FROM qpmk
    FOR ALL ENTRIES IN li_detail
  WHERE mkmnr li_detail-mic.

  "Get Material Info
  REFRESH li_detail.
  li_detail[] =  gi_detail[].
  SORT li_detail BY matnr.
  DELETE ADJACENT DUPLICATES FROM li_detail COMPARING matnr.

  SELECT INTO TABLE li_mara
  FROM mara
    FOR ALL ENTRIES IN li_detail
  WHERE matnr li_detail-matnr.

  SORT li_marc BY matnr werks.
  SORT li_qpmk BY mkmnr.
  SORT li_mara BY matnr.
  LOOP AT gi_detail.
    READ TABLE li_marc WITH KEY matnr gi_detail-matnr
                                werks gi_detail-plant BINARY SEARCH.
    IF sy-subrc 0.
      READ TABLE li_qpmk WITH KEY mkmnr gi_detail-mic BINARY SEARCH.
      IF sy-subrc 0.
        gi_detail-icon icon_led_green.
        gi_detail-msg 'Ready to upload.'.
        gi_detail-chbox 'X'.

        READ TABLE li_mara WITH KEY matnr gi_detail-matnr BINARY SEARCH.
        IF sy-subrc 0.
          gi_detail-unit li_mara-meins.
        ENDIF.
      ELSE.
        gi_detail-icon icon_led_red.
        gi_detail-msg 'MIC not exist !!'.
        MODIFY gi_detail.
      ENDIF.
    ELSE.
      gi_detail-icon icon_led_red.
      gi_detail-msg 'Material not exist !!'.
      MODIFY gi_detail.
      CONTINUE.
    ENDIF.

    MODIFY gi_detail.
  ENDLOOP.

*  Create Header Data
  gi_header[] gi_detail[].
  DELETE gi_header WHERE icon ' '.
  SORT gi_header BY task_grp.
  DELETE ADJACENT DUPLICATES FROM gi_header
  COMPARING task_grp.

  "Check Error
  LOOP AT gi_header.
    CLEAR lv_flag.
    LOOP AT gi_detail WHERE task_grp gi_header-task_grp.
      IF gi_detail-chbox ' '.
        lv_flag 'X'.
        gi_header-icon icon_led_red.
        gi_header-msg gi_detail-msg .
        gi_header-chbox ' '.
        MODIFY gi_header.
        EXIT.
      ENDIF.
    ENDLOOP.

  ENDLOOP.

ENDFORM.                    "fm_validate_data

*&---------------------------------------------------------------------*
*&      Form  fm_upload_data_im
*&---------------------------------------------------------------------*
FORM fm_upload_data .
  DATA li_detail LIKE STANDARD TABLE OF gi_detail WITH HEADER LINE,
         li_task LIKE STANDARD TABLE OF bapi1191_tsk_c WITH HEADER LINE,
         li_materialtaskallocation LIKE STANDARD TABLE OF  bapi1191_mtk_c WITH HEADER LINE,
         li_operation LIKE STANDARD TABLE OF  bapi1191_opr_c WITH HEADER LINE,
         li_inspcharacteristic LIKE STANDARD TABLE OF  bapi1191_cha_c WITH HEADER LINE,
         li_return LIKE bapiret2 OCCURS WITH HEADER LINE.

  DATA lw_return LIKE bapiret2.

  DATA lv_groupcounter LIKE bapi1191_tsk_c-group_counter,
         lv_message LIKE sy-lisel,
         lv_opid LIKE li_operation-operation_id,
         lv_error.

  DATA lv_count(6),
         lv_index(6),
         lv_text(20).

  lv_count LINESgi_header ).
  CONCATENATE '/' lv_count INTO lv_text.

  "Upload Inspection Plan
  LOOP AT gi_header WHERE chbox 'X' AND
                        icon icon_led_green.
    REFRESH li_taskli_materialtaskallocation,
              li_operationli_inspcharacteristicli_return.

    li_task-task_list_group   gi_header-task_grp.
    li_task-valid_from        gi_header-valid.
    li_task-task_list_usage   gi_header-usage.
    li_task-plant             gi_header-plant.
    li_task-task_list_status  gi_header-status.
    li_task-task_measure_unit gi_header-unit.
    IF gi_header-descr1 IS NOT INITIAL.
      li_task-description       gi_header-descr1.
    ENDIF.
    APPEND li_task.

    li_materialtaskallocation-material        gi_header-matnr.
    li_materialtaskallocation-plant           gi_header-plant.
    li_materialtaskallocation-task_list_group gi_header-task_grp.
    li_materialtaskallocation-valid_from      gi_header-valid.
    APPEND li_materialtaskallocation.

    CONCATENATE sy-datum+7(1sy-uzeit 'M' INTO lv_opid.
    li_operation-task_list_group gi_header-task_grp.
    li_operation-valid_from      gi_header-valid.
    li_operation-operation_id    lv_opid.
    li_operation-activity '1'.
    li_operation-control_key     gi_header-cokey.
    li_operation-work_cntr       gi_header-woctr.
    li_operation-plant           gi_header-plant.
    li_operation-denominator     1.
    li_operation-nominator       1.
    li_operation-base_quantity   1.
    li_operation-acttype_01      ' '.
    APPEND li_operation.

    REFRESH li_inspcharacteristic.
    LOOP AT gi_detail WHERE task_grp gi_header-task_grp.
      li_inspcharacteristic-task_list_group gi_header-task_grp.
      li_inspcharacteristic-operation_id    lv_opid.
      li_inspcharacteristic-inspchar        gi_detail-insno.
      li_inspcharacteristic-valid_from      gi_detail-valid.
      li_inspcharacteristic-mstr_char       gi_detail-mic.
      li_inspcharacteristic-pmstr_char      gi_detail-plant.
      li_inspcharacteristic-cha_master_import_modus 'C'.
      li_inspcharacteristic-method          gi_detail-im.
      li_inspcharacteristic-pmethod         gi_detail-plant.
      APPEND li_inspcharacteristic.
    ENDLOOP.

    CALL FUNCTION 'BAPI_INSPECTIONPLAN_CREATE'
     EXPORTING
       testrun                      gv_test
*   PROFILE                      =
     IMPORTING
*   GROUP                        =
       groupcounter                 lv_groupcounter
      TABLES
        task                         li_task
        materialtaskallocation       li_materialtaskallocation
        operation                    li_operation
        inspcharacteristic           li_inspcharacteristic
        return                       li_return.

    CLEAR lv_error.
    LOOP AT li_return INTO lw_return.
      CALL FUNCTION 'RPY_MESSAGE_COMPOSE'
        EXPORTING
          language       sy-langu
          message_id     lw_return-id
          message_number lw_return-number
          message_var1   lw_return-message_v1
          message_var2   lw_return-message_v2
          message_var3   lw_return-message_v3
          message_var4   lw_return-message_v4
        IMPORTING
          message_text   lv_message.
      IF sy-tabix 1.
        CONCATENATE lv_message '|' INTO gi_header-msg1 SEPARATED BY space.
      ELSEIF sy-tabix 2.
        CONCATENATE lv_message '|' INTO gi_header-msg2 SEPARATED BY space.
      ELSEIF sy-tabix 3.
        CONCATENATE lv_message '|' INTO gi_header-msg3 SEPARATED BY space.
      ENDIF.

      IF lw_return-type 'E'.
        lv_error 1.
      ENDIF.

    ENDLOOP.

    IF lv_error 1.
      gi_header-msg 'Failed.'.
      gi_header-icon icon_incomplete.
    ELSE.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
      gi_header-msg 'Succeed.'.
      gi_header-icon icon_checked.
    ENDIF.

    MODIFY gi_header.

    CONCATENATE gi_header-msg '|' INTO gi_header-msg SEPARATED BY space.

    ADD TO lv_index.
    PERFORM fm_gui_message USING lv_index lv_text.

  ENDLOOP.

ENDFORM.                    " fm_upload_data

Comments