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

***INCLUDE LZSD40800F02.

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


* ** https://help.sap.com/saphelp_erp60_sp/helpdata/en/91/ca9f0ea9d111d1a5690000e82deaaa/content.htm


https://help.sap.com/saphelp_nw70/helpdata/en/af/4a3837a92cbe10e10000009b38f889/frameset.htm


FORM zset_datetime_0007. "event 01 - Before saving the data in the database


*  FIELD-SYMBOLS: <fs_view_data_lo>,

*                 <fs_field>.

*

*  IF <fs_view_data_lo> IS ASSIGNED.

*    UNASSIGN <fs_view_data_lo>.

*  ENDIF.

*

*  ASSIGN (vim_view_name) TO <fs_view_data_lo>.

*  CHECK sy-subrc = 0.

*

*  ASSIGN COMPONENT c_zcrname OF STRUCTURE <fs_view_data_lo> TO <fs_field>.

*  IF sy-subrc = 0.

*    IF <fs_field> IS INITIAL.

*      ASSIGN COMPONENT 'ZCRNAME'  OF STRUCTURE <fs_view_data_lo> TO <fs_field>.

*      <fs_field> = sy-uname.

*      ASSIGN COMPONENT 'ZCRSDATE' OF STRUCTURE <fs_view_data_lo> TO <fs_field>.

*      <fs_field> = sy-datum.

*      ASSIGN COMPONENT 'ZCRSTIME' OF STRUCTURE <fs_view_data_lo> TO <fs_field>.

*      <fs_field> = sy-uzeit.

*      ASSIGN COMPONENT 'ZCRLDATE' OF STRUCTURE <fs_view_data_lo> TO <fs_field>.

*      <fs_field> = sy-datlo.

*      ASSIGN COMPONENT 'ZCRLTIME' OF STRUCTURE <fs_view_data_lo> TO <fs_field>.

*      <fs_field> = sy-timlo.

*    ELSE.

*

*      ASSIGN COMPONENT 'ZUDNAME'  OF STRUCTURE <fs_view_data_lo> TO <fs_field>.

*      <fs_field> = sy-uname.

*      ASSIGN COMPONENT 'ZUDSDATE' OF STRUCTURE <fs_view_data_lo> TO <fs_field>.

*      <fs_field> = sy-datum.

*      ASSIGN COMPONENT 'zudstime' OF STRUCTURE <fs_view_data_lo> TO <fs_field>.

*      <fs_field> = sy-uzeit.

*      ASSIGN COMPONENT 'ZUDLDATE' OF STRUCTURE <fs_view_data_lo> TO <fs_field>.

*      <fs_field> = sy-datlo.

*      ASSIGN COMPONENT 'ZUDLTIME' OF STRUCTURE <fs_view_data_lo> TO <fs_field>.

*      <fs_field> = sy-timlo.

*    ENDIF.

*  ENDIF.


  DATA : l_index  LIKE sy-tabix, "Index to note the lines found

         lw_datuv TYPE zsdt41180-datuv,

         lw_subrc TYPE sy-subrc.


  FIELD-SYMBOLS : <l_structure> TYPE any,

                  <l_field>     TYPE any,

                  <l_werks>     TYPE any,

                  <l_matnr>     TYPE any,

                  <l_datuv>     TYPE any.


  lw_subrc = 0.

  LOOP AT total.

    IF <action> = neuer_eintrag OR <action> = aendern.

      READ TABLE extract WITH KEY <vim_xtotal_key>.


      IF sy-subrc EQ 0.

        l_index = sy-tabix.

      ELSE.

        CLEAR l_index.

      ENDIF.


      CHECK l_index GT 0.


      ASSIGN COMPONENT 'WERKS' OF STRUCTURE <vim_total_struc> TO <l_werks>.

      ASSIGN COMPONENT 'MATNR' OF STRUCTURE <vim_total_struc> TO <l_matnr>.

      ASSIGN COMPONENT 'DATUV' OF STRUCTURE <vim_total_struc> TO <l_datuv>.


      IF <l_werks> IS INITIAL OR

         <l_matnr> IS INITIAL OR

         <l_datuv> IS INITIAL.

        MESSAGE s000(zsd01) WITH 'Key field is missing !' DISPLAY LIKE 'E'.

        lw_subrc = 4.

        EXIT.

      ENDIF.


      CASE <action>.

        WHEN aendern. "/Change/Update

          ASSIGN COMPONENT 'ZUDNAME' OF STRUCTURE <vim_total_struc> TO <l_field>.

          IF sy-subrc = 0. <l_field> = sy-uname. ENDIF.


          ASSIGN COMPONENT 'ZUDSDATE' OF STRUCTURE <vim_total_struc> TO <l_field>.

          IF sy-subrc = 0. <l_field> = sy-datum. ENDIF.


          ASSIGN COMPONENT 'ZUDSTIME' OF STRUCTURE <vim_total_struc> TO <l_field>.

          IF sy-subrc = 0. <l_field> = sy-uzeit. ENDIF.


          ASSIGN COMPONENT 'ZUDLDATE' OF STRUCTURE <vim_total_struc> TO <l_field>.

          IF sy-subrc = 0. <l_field> = sy-datlo. ENDIF.


          ASSIGN COMPONENT 'ZUDLTIME' OF STRUCTURE <vim_total_struc> TO <l_field>.

          IF sy-subrc = 0. <l_field> = sy-timlo. ENDIF.


        WHEN neuer_eintrag. "/New Entries


          CLEAR lw_datuv.


          SELECT datuv

            INTO lw_datuv

            FROM zsdt41180

            UP TO 1 ROWS

           WHERE werks = <l_werks>

             AND matnr = <l_matnr>

           ORDER BY datuv DESCENDING.


            IF sy-subrc = 0.

              "현재 등록하는 유효일자보다 미래일자가 이미 존재하면 Error

              IF <l_datuv> < lw_datuv.

                MESSAGE s000(zsd01) WITH 'check valid date !!' DISPLAY LIKE 'E'.

                lw_subrc = 4.

                EXIT.

              ENDIF.

            ENDIF.

          ENDSELECT.


          ASSIGN COMPONENT 'ZCRNAME' OF STRUCTURE <vim_total_struc> TO <l_field>.

          IF sy-subrc = 0. <l_field> = sy-uname. ENDIF.


          ASSIGN COMPONENT 'ZCRSDATE' OF STRUCTURE <vim_total_struc> TO <l_field>.

          IF sy-subrc = 0. <l_field> = sy-datum. ENDIF.


          ASSIGN COMPONENT 'ZCRSTIME' OF STRUCTURE <vim_total_struc> TO <l_field>.

          IF sy-subrc = 0. <l_field> = sy-uzeit. ENDIF.


          ASSIGN COMPONENT 'ZCRLDATE' OF STRUCTURE <vim_total_struc> TO <l_field>.

          IF sy-subrc = 0. <l_field> = sy-datlo. ENDIF.


          ASSIGN COMPONENT 'ZCRLTIME' OF STRUCTURE <vim_total_struc> TO <l_field>.

          IF sy-subrc = 0. <l_field> = sy-timlo. ENDIF.


      ENDCASE.


      MOVE <vim_ctotal> TO total.

      MODIFY total.


      extract = total.

      MODIFY extract INDEX l_index.

    ENDIF.

  ENDLOOP.


  sy-subrc = lw_subrc.


ENDFORM.








FORM zset_datetime_0008. "event 01 - Before saving the data in the database


  DATA : l_index  LIKE sy-tabix, "Index to note the lines found

         lw_datuv TYPE zsdt41190-datuv,

         lw_subrc TYPE sy-subrc.


  FIELD-SYMBOLS : <l_structure> TYPE any,

                  <l_field>     TYPE any,

                  <l_ztype>     TYPE any,

                  <l_datuv>     TYPE any.


  lw_subrc = 0.

  LOOP AT total.

    IF <action> = neuer_eintrag OR <action> = aendern.

      READ TABLE extract WITH KEY <vim_xtotal_key>.


      IF sy-subrc EQ 0.

        l_index = sy-tabix.

      ELSE.

        CLEAR l_index.

      ENDIF.


      CHECK l_index GT 0.


      ASSIGN COMPONENT 'ZTYPE' OF STRUCTURE <vim_total_struc> TO <l_ztype>.

      ASSIGN COMPONENT 'DATUV' OF STRUCTURE <vim_total_struc> TO <l_datuv>.


      IF <l_ztype> IS INITIAL OR

         <l_datuv> IS INITIAL.

        MESSAGE s000(zsd01) WITH 'Key field is missing !' DISPLAY LIKE 'E'.

        lw_subrc = 4.

        EXIT.

      ENDIF.


      CASE <action>.

        WHEN aendern. "/Change/Update

          ASSIGN COMPONENT 'ZUDNAME' OF STRUCTURE <vim_total_struc> TO <l_field>.

          IF sy-subrc = 0. <l_field> = sy-uname. ENDIF.


          ASSIGN COMPONENT 'ZUDSDATE' OF STRUCTURE <vim_total_struc> TO <l_field>.

          IF sy-subrc = 0. <l_field> = sy-datum. ENDIF.


          ASSIGN COMPONENT 'ZUDSTIME' OF STRUCTURE <vim_total_struc> TO <l_field>.

          IF sy-subrc = 0. <l_field> = sy-uzeit. ENDIF.


          ASSIGN COMPONENT 'ZUDLDATE' OF STRUCTURE <vim_total_struc> TO <l_field>.

          IF sy-subrc = 0. <l_field> = sy-datlo. ENDIF.


          ASSIGN COMPONENT 'ZUDLTIME' OF STRUCTURE <vim_total_struc> TO <l_field>.

          IF sy-subrc = 0. <l_field> = sy-timlo. ENDIF.


        WHEN neuer_eintrag. "/New Entries


          CLEAR lw_datuv.


          SELECT datuv

            INTO lw_datuv

            FROM zsdt41190

            UP TO 1 ROWS

           WHERE ztype = <l_ztype>

           ORDER BY datuv DESCENDING.


            IF sy-subrc = 0.

              "현재 등록하는 유효일자보다 미래일자가 이미 존재하면 Error

              IF <l_datuv> < lw_datuv.

                MESSAGE s000(zsd01) WITH 'check valid date !!' DISPLAY LIKE 'E'.

                lw_subrc = 4.

                EXIT.

              ENDIF.

            ENDIF.

          ENDSELECT.


          ASSIGN COMPONENT 'ZCRNAME' OF STRUCTURE <vim_total_struc> TO <l_field>.

          IF sy-subrc = 0. <l_field> = sy-uname. ENDIF.


          ASSIGN COMPONENT 'ZCRSDATE' OF STRUCTURE <vim_total_struc> TO <l_field>.

          IF sy-subrc = 0. <l_field> = sy-datum. ENDIF.


          ASSIGN COMPONENT 'ZCRSTIME' OF STRUCTURE <vim_total_struc> TO <l_field>.

          IF sy-subrc = 0. <l_field> = sy-uzeit. ENDIF.


          ASSIGN COMPONENT 'ZCRLDATE' OF STRUCTURE <vim_total_struc> TO <l_field>.

          IF sy-subrc = 0. <l_field> = sy-datlo. ENDIF.


          ASSIGN COMPONENT 'ZCRLTIME' OF STRUCTURE <vim_total_struc> TO <l_field>.

          IF sy-subrc = 0. <l_field> = sy-timlo. ENDIF.


      ENDCASE.


      MOVE <vim_ctotal> TO total.

      MODIFY total.


      extract = total.

      MODIFY extract INDEX l_index.

    ENDIF.

  ENDLOOP.


  sy-subrc = lw_subrc.


ENDFORM.





FORM zset_datetime_0009. "event 01 - Before saving the data in the database


  DATA : l_index  LIKE sy-tabix, "Index to note the lines found

         lw_datuv TYPE zsdt41250-kursd,

         lw_subrc TYPE sy-subrc.


  FIELD-SYMBOLS : <l_structure> TYPE any,

                  <l_field>     TYPE any,

                  <l_kurst>     TYPE any,

                  <l_fcurr>     TYPE any,

                  <l_tcurr>     TYPE any,

                  <l_kursd>     TYPE any.


  lw_subrc = 0.

  LOOP AT total.

    IF <action> = neuer_eintrag OR <action> = aendern.

      READ TABLE extract WITH KEY <vim_xtotal_key>.


      IF sy-subrc EQ 0.

        l_index = sy-tabix.

      ELSE.

        CLEAR l_index.

      ENDIF.


      CHECK l_index GT 0.


      ASSIGN COMPONENT 'KURST' OF STRUCTURE <vim_total_struc> TO <l_kurst>.

      ASSIGN COMPONENT 'FCURR' OF STRUCTURE <vim_total_struc> TO <l_fcurr>.

      ASSIGN COMPONENT 'TCURR' OF STRUCTURE <vim_total_struc> TO <l_tcurr>.

      ASSIGN COMPONENT 'KURSD' OF STRUCTURE <vim_total_struc> TO <l_kursd>.


      IF <l_kurst> IS INITIAL OR

         <l_fcurr> IS INITIAL OR

         <l_tcurr> IS INITIAL OR

         <l_kursd> IS INITIAL.

        MESSAGE s000(zsd01) WITH 'Key field is missing !' DISPLAY LIKE 'E'.

        lw_subrc = 4.

        EXIT.

      ENDIF.


      CASE <action>.

        WHEN aendern. "/Change/Update

          ASSIGN COMPONENT 'ZUDNAME' OF STRUCTURE <vim_total_struc> TO <l_field>.

          IF sy-subrc = 0. <l_field> = sy-uname. ENDIF.


          ASSIGN COMPONENT 'ZUDSDATE' OF STRUCTURE <vim_total_struc> TO <l_field>.

          IF sy-subrc = 0. <l_field> = sy-datum. ENDIF.


          ASSIGN COMPONENT 'ZUDSTIME' OF STRUCTURE <vim_total_struc> TO <l_field>.

          IF sy-subrc = 0. <l_field> = sy-uzeit. ENDIF.


          ASSIGN COMPONENT 'ZUDLDATE' OF STRUCTURE <vim_total_struc> TO <l_field>.

          IF sy-subrc = 0. <l_field> = sy-datlo. ENDIF.


          ASSIGN COMPONENT 'ZUDLTIME' OF STRUCTURE <vim_total_struc> TO <l_field>.

          IF sy-subrc = 0. <l_field> = sy-timlo. ENDIF.


        WHEN neuer_eintrag. "/New Entries




          CLEAR lw_datuv.


          SELECT kursd

            INTO lw_datuv

            FROM zsdt41250

            UP TO 1 ROWS

           WHERE kurst = <l_kurst>

             AND fcurr = <l_fcurr>

             AND tcurr = <l_tcurr>

           ORDER BY kursd DESCENDING.


            IF sy-subrc = 0.

              "현재 등록하는 유효일자보다 미래일자가 이미 존재하면 Error

              IF <l_kursd> < lw_datuv.

                MESSAGE s000(zsd01) WITH 'check valid date !!' DISPLAY LIKE 'E'.

                lw_subrc = 4.

                EXIT.

              ENDIF.

            ENDIF.

          ENDSELECT.


          ASSIGN COMPONENT 'ZCRNAME' OF STRUCTURE <vim_total_struc> TO <l_field>.

          IF sy-subrc = 0. <l_field> = sy-uname. ENDIF.


          ASSIGN COMPONENT 'ZCRSDATE' OF STRUCTURE <vim_total_struc> TO <l_field>.

          IF sy-subrc = 0. <l_field> = sy-datum. ENDIF.


          ASSIGN COMPONENT 'ZCRSTIME' OF STRUCTURE <vim_total_struc> TO <l_field>.

          IF sy-subrc = 0. <l_field> = sy-uzeit. ENDIF.


          ASSIGN COMPONENT 'ZCRLDATE' OF STRUCTURE <vim_total_struc> TO <l_field>.

          IF sy-subrc = 0. <l_field> = sy-datlo. ENDIF.


          ASSIGN COMPONENT 'ZCRLTIME' OF STRUCTURE <vim_total_struc> TO <l_field>.

          IF sy-subrc = 0. <l_field> = sy-timlo. ENDIF.


      ENDCASE.


      MOVE <vim_ctotal> TO total.

      MODIFY total.


      extract = total.

      MODIFY extract INDEX l_index.

    ENDIF.

  ENDLOOP.


  sy-subrc = lw_subrc.


ENDFORM.





FORM zset_datetime_0005. "event 01 - Before saving the data in the database


  DATA : l_index  LIKE sy-tabix, "Index to note the lines found

         lw_spmon TYPE zsdt41171-spmon,

         lw_subrc TYPE sy-subrc.


  FIELD-SYMBOLS : <l_structure> TYPE any,

                  <l_field>     TYPE any,

                  <l_spmon>     TYPE any,

                  <l_werks>     TYPE any,

                  <l_vtweg>     TYPE any,

                  <l_idnrk>     TYPE any.


  lw_subrc = 0.

  LOOP AT total.

    IF <action> = neuer_eintrag OR <action> = aendern.

      READ TABLE extract WITH KEY <vim_xtotal_key>.


      IF sy-subrc EQ 0.

        l_index = sy-tabix.

      ELSE.

        CLEAR l_index.

      ENDIF.


      CHECK l_index GT 0.


      ASSIGN COMPONENT 'SPMON' OF STRUCTURE <vim_total_struc> TO <l_spmon>.

      ASSIGN COMPONENT 'WERKS' OF STRUCTURE <vim_total_struc> TO <l_werks>.

      ASSIGN COMPONENT 'VTWEG' OF STRUCTURE <vim_total_struc> TO <l_vtweg>.

      ASSIGN COMPONENT 'IDNRK' OF STRUCTURE <vim_total_struc> TO <l_idnrk>.


      IF <l_spmon> IS INITIAL OR

         <l_werks> IS INITIAL OR

         <l_vtweg> IS INITIAL OR

         <l_idnrk> IS INITIAL.

        MESSAGE s000(zsd01) WITH 'Key field is missing !' DISPLAY LIKE 'E'.

        lw_subrc = 4.

        EXIT.

      ENDIF.


      CASE <action>.

        WHEN aendern. "/Change/Update

          ASSIGN COMPONENT 'ZUDNAME' OF STRUCTURE <vim_total_struc> TO <l_field>.

          IF sy-subrc = 0. <l_field> = sy-uname. ENDIF.


          ASSIGN COMPONENT 'ZUDSDATE' OF STRUCTURE <vim_total_struc> TO <l_field>.

          IF sy-subrc = 0. <l_field> = sy-datum. ENDIF.


          ASSIGN COMPONENT 'ZUDSTIME' OF STRUCTURE <vim_total_struc> TO <l_field>.

          IF sy-subrc = 0. <l_field> = sy-uzeit. ENDIF.


          ASSIGN COMPONENT 'ZUDLDATE' OF STRUCTURE <vim_total_struc> TO <l_field>.

          IF sy-subrc = 0. <l_field> = sy-datlo. ENDIF.


          ASSIGN COMPONENT 'ZUDLTIME' OF STRUCTURE <vim_total_struc> TO <l_field>.

          IF sy-subrc = 0. <l_field> = sy-timlo. ENDIF.


        WHEN neuer_eintrag. "/New Entries




          CLEAR lw_spmon.


          SELECT spmon

            INTO lw_spmon

            FROM zsdt41171

            UP TO 1 ROWS

           WHERE werks = <l_werks>

             AND vtweg = <l_vtweg>

             AND idnrk = <l_idnrk>

           ORDER BY spmon DESCENDING.


            IF sy-subrc = 0.

              "현재 등록하는 유효일자보다 미래일자가 이미 존재하면 Error

              IF <l_spmon> < lw_spmon.

                MESSAGE s000(zsd01) WITH 'check month !!' DISPLAY LIKE 'E'.

                lw_subrc = 4.

                EXIT.

              ENDIF.

            ENDIF.

          ENDSELECT.


          ASSIGN COMPONENT 'ZCRNAME' OF STRUCTURE <vim_total_struc> TO <l_field>.

          IF sy-subrc = 0. <l_field> = sy-uname. ENDIF.


          ASSIGN COMPONENT 'ZCRSDATE' OF STRUCTURE <vim_total_struc> TO <l_field>.

          IF sy-subrc = 0. <l_field> = sy-datum. ENDIF.


          ASSIGN COMPONENT 'ZCRSTIME' OF STRUCTURE <vim_total_struc> TO <l_field>.

          IF sy-subrc = 0. <l_field> = sy-uzeit. ENDIF.


          ASSIGN COMPONENT 'ZCRLDATE' OF STRUCTURE <vim_total_struc> TO <l_field>.

          IF sy-subrc = 0. <l_field> = sy-datlo. ENDIF.


          ASSIGN COMPONENT 'ZCRLTIME' OF STRUCTURE <vim_total_struc> TO <l_field>.

          IF sy-subrc = 0. <l_field> = sy-timlo. ENDIF.


      ENDCASE.


      MOVE <vim_ctotal> TO total.

      MODIFY total.


      extract = total.

      MODIFY extract INDEX l_index.

    ENDIF.

  ENDLOOP.


  sy-subrc = lw_subrc.


ENDFORM.

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

*&      Module  ZGET_IDNRK_NAME  INPUT

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

*       text

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

MODULE zget_idnrk_name INPUT. "event 01 - Before saving the data in the database

  FIELD-SYMBOLS : <l_ktext>     TYPE any.


*  <VIM_TOTAL_STRUC>

*  <VIM_EXTRACT_STRUC>


  ASSIGN COMPONENT 'KTEXT' OF STRUCTURE <VIM_TOTAL_STRUC> TO <l_ktext>.



  IF zsdt41171-idnrk IS INITIAL.

    CLEAR zsdt41171-ktext.

  ELSE.

    SELECT SINGLE maktx

      INTO zsdt41171-ktext

      FROM makt

     WHERE spras = sy-langu

       AND matnr = zsdt41171-idnrk.

    if sy-subrc = 0.

      <l_ktext> = zsdt41171-ktext.

    endif.

  ENDIF.

ENDMODULE.



*&---------------------------------------------------------------------*
*& Form EVENT_01_ZMMV1390
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM event_01_zmmv1390 .

  DATA ls_zmmv1390 TYPE zmmv1390.

  DATA lv_perfect TYPE f.

  LOOP AT total.
    CHECK <action> neuer_eintrag.
    CLEAR ls_zmmv1390.
    MOVE <vim_total_struc> TO ls_zmmv1390.

    lv_perfect ls_zmmv1390-delivery +
                 ls_zmmv1390-quantity +
                 ls_zmmv1390-quality  +
                 ls_zmmv1390-other.
    IF lv_perfect <> 100.
      MESSAGE s043(zmm01DISPLAY LIKE 'E'.
      vim_abort_saving 'X'.
      EXIT.
    ENDIF.
  ENDLOOP.

ENDFORM.






*&---------------------------------------------------------------------*
*& Include          event 01 공통 적용
*&---------------------------------------------------------------------*
*& *& 데이터 생성 및 수정시 로그데이터(작업자, 일자, 시간) 업데이트.
*&---------------------------------------------------------------------*

*GELOESCHT : flagged for deletion
*NEUER_EINTRAG : New entry
*AENDERN : changed entry
*UPDATE_GELOESCHT : entry first changed and then flagged for deletion
*NEUER_GELOESCHT : entry first newly created, not yet saved, and then flagged for deletion
*ORIGINAL : the same as the database status

  CONSTANTS LC_NAME TYPE STRING VALUE 'N_____'.  "Dummy Component Name for Type Flag

  DATA LV_INDEX LIKE SY-TABIX"Index to note the lines found

  DATA LS_COMPONENT TYPE ABAP_COMPONENTDESCR,
         LT_COMPONENT TYPE ABAP_COMPONENT_TAB,

         LR_STRUCTURE TYPE REF TO CL_ABAP_STRUCTDESCR,
         LR_HANDLE    TYPE REF TO DATA.


  FIELD-SYMBOLS <LV_STRUCTURE> TYPE ANY,
                  <LV_FIELD>     TYPE ANY.

  LR_STRUCTURE ?= CL_ABAP_STRUCTDESCR=>DESCRIBE_BY_NAMEX_HEADER-VIEWNAME ).
  LT_COMPONENT LR_STRUCTURE->GET_COMPONENTS).
  LS_COMPONENT-TYPE ?= CL_ABAP_DATADESCR=>DESCRIBE_BY_DATA<ACTION> ).
  LS_COMPONENT-NAME LC_NAME.
  APPEND LS_COMPONENT TO LT_COMPONENT.

  LR_STRUCTURE CL_ABAP_STRUCTDESCR=>CREATELT_COMPONENT ).

  CREATE DATA LR_HANDLE TYPE HANDLE LR_STRUCTURE.
  ASSIGN LR_HANDLE->TO <LV_STRUCTURE>.

  LOOP AT TOTAL.
    IF <ACTION> NEUER_EINTRAG OR <ACTION> AENDERN.
      READ TABLE EXTRACT WITH KEY <VIM_XTOTAL_KEY>.

      IF SY-SUBRC EQ 0.
        LV_INDEX SY-TABIX.
      ELSE.
        CLEAR LV_INDEX.
      ENDIF.

      CHECK LV_INDEX GT 0.

      MOVE TOTAL TO <LV_STRUCTURE>.

      CASE <ACTION>.
        WHEN AENDERN"/Change/Update
          ASSIGN COMPONENT 'AENAM' OF STRUCTURE <LV_STRUCTURE> TO <LV_FIELD>.
          IF SY-SUBRC 0.
            MOVE SY-UNAME TO <LV_FIELD>.
          ENDIF.

          ASSIGN COMPONENT 'AEDAT' OF STRUCTURE <LV_STRUCTURE> TO <LV_FIELD>.
          IF SY-SUBRC 0.
            MOVE SY-DATLO TO <LV_FIELD>.
          ENDIF.

          ASSIGN COMPONENT 'AEZET' OF STRUCTURE <LV_STRUCTURE> TO <LV_FIELD>.
          IF SY-SUBRC 0.
            MOVE SY-TIMLO TO <LV_FIELD>.
          ENDIF.

        WHEN NEUER_EINTRAG"/New Entries
          ASSIGN COMPONENT 'ERNAM' OF STRUCTURE <LV_STRUCTURE> TO <LV_FIELD>.
          IF SY-SUBRC 0.
            MOVE SY-UNAME TO <LV_FIELD>.
          ENDIF.

          ASSIGN COMPONENT 'ERDAT' OF STRUCTURE <LV_STRUCTURE> TO <LV_FIELD>.
          IF SY-SUBRC 0.
            MOVE SY-DATLO TO <LV_FIELD>.
          ENDIF.

          ASSIGN COMPONENT 'ERZET' OF STRUCTURE <LV_STRUCTURE> TO <LV_FIELD>.
          IF SY-SUBRC 0.
            MOVE SY-TIMLO TO <LV_FIELD>.
          ENDIF.
          ASSIGN COMPONENT 'AENAM' OF STRUCTURE <LV_STRUCTURE> TO <LV_FIELD>.
          IF SY-SUBRC 0.
            MOVE SY-UNAME TO <LV_FIELD>.
          ENDIF.

          ASSIGN COMPONENT 'AEDAT' OF STRUCTURE <LV_STRUCTURE> TO <LV_FIELD>.
          IF SY-SUBRC 0.
            MOVE SY-DATLO TO <LV_FIELD>.
          ENDIF.

          ASSIGN COMPONENT 'AEZET' OF STRUCTURE <LV_STRUCTURE> TO <LV_FIELD>.
          IF SY-SUBRC 0.
            MOVE SY-TIMLO TO <LV_FIELD>.
          ENDIF.
      ENDCASE.

      MOVE <LV_STRUCTURE> TO TOTAL.
      MODIFY TOTAL.

      EXTRACT TOTAL.
      MODIFY EXTRACT INDEX LV_INDEX.
    ENDIF.
  ENDLOOP.

  SY-SUBRC 0.




설정

트랙백

댓글