DATA:  back_cont  TYPE REF TO cl_gui_docking_container.

  IF gs_custom_container IS INITIAL.
    IF NOT gs_custom_container IS INITIAL.
      CALL METHOD gs_custom_container->free.

    ENDIF.

    
IF cl_gui_alv_grid=>offlineIS INITIAL.  "back ground job check
      CREATE OBJECT gs_custom_container
        EXPORTING
          container_name c_container.
      CREATE OBJECT gs_alv_grid
        EXPORTING
          i_parent gs_custom_container.
    
ELSE.                                                       "back ground job 일 경우
      CREATE OBJECT gs_alv_grid
        EXPORTING
          i_parent back_cont.

    ENDIF.


    PERFORM alv_variant.       "<-- ALV Variant
    PERFORM alv_sort.          "<-- SORT
    PERFORM alv_layout.        "<-- General Layout

    PERFORM alv_fieldcatalog.    "<-- Field Attribute
    PERFORM alv_toolbar_exclude"CHANGING G_EXCLUDE. "<-- Toolbar Dim

    CALL METHOD gs_alv_grid->set_table_for_first_display
      EXPORTING
        i_default            c_x
        is_layout            gs_layout
        is_variant           gs_variant
        it_toolbar_excluding gs_exclude
        i_save               c_a
      CHANGING
        it_outtab            gt_list[]
        it_fieldcatalog      gs_fieldcat[]
        it_sort              gs_sort.

설정

트랙백

댓글

MM User-Exit => MBCF0002 => EXIT_SAPMM07M_001 => INCLUDE ZXMBCU02.

여기에 아래와 같이 coding 하여 취소전표과 원본 전표의 전기일의
월이 다를 경우 Error 를 발생 시키는 로직을 추가했네요.


  DATA: L_BUDAT  LIKE SY-DATUM.
  DATA : L_BDATE LIKE SY-DATUM.

  IF ( NOT I_MSEG-SMBLN IS INITIAL ) AND
     ( NOT I_MKPF-BUDAT IS INITIAL ).
    CLEAR L_BUDAT.
    SELECT SINGLE BUDAT  INTO L_BUDAT
           FROM  MKPF
           WHERE MBLNR = I_MSEG-SMBLN
             AND MJAHR = I_MSEG-SJAHR.
    IF I_MKPF-BUDAT(6) NE L_BUDAT(6).
      MESSAGE E002(ZMM)  WITH I_MKPF-BUDAT L_BUDAT.
*            'No match Posting date of canceled document.'.
    ENDIF.
  ENDIF.

 

'SAP Business > MM' 카테고리의 다른 글

MATDOC 에서 재고유형별로 재고수량 가져오는 구분  (0) 2017.09.29
MM T-code 실습  (0) 2017.08.18
SAP Reservation and Goods Issue  (0) 2017.03.17
SAP GR 개념 자료  (0) 2017.03.17
021.Master Data  (0) 2017.03.10

설정

트랙백

댓글




  DATAlv_temp TYPE string.

  CALL METHOD cl_gui_frontend_services=>environment_get_variable
    EXPORTING
      variable   'TEMP'
    CHANGING
      value      lv_temp
    EXCEPTIONS
      cntl_error 1
      OTHERS     2.

  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 DISPLAY LIKE 'E'.
    EXIT.
  ENDIF.

  CALL METHOD cl_gui_cfw=>flush
    EXCEPTIONS
      cntl_system_error 1
      cntl_error        2
      OTHERS            3.

  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 DISPLAY LIKE 'E'.
    EXIT.
  ENDIF.

'SAP Program > ABAP' 카테고리의 다른 글

날짜 관련 ABAP function  (0) 2017.04.19
SAP Buffer 초기화 T-code  (0) 2017.04.12
S4 HANA 기반 시스템 구축을 위한 가이드  (0) 2017.04.05
Maint view event 관련 coding  (0) 2017.03.31
Maint view T-code 없이 Call 하기  (0) 2017.03.30

설정

트랙백

댓글

도요다식의 생산시스템의 하나인 서브시스템이다. 

도요다 생산방식의 기본사상은 철저한 낭비의 배제, 즉 낭비, 무리, 불균형을 배제하려는 것이다. 

이를 위하여 필요한 때에 필요한 물건을 필요한 양만큼만 만들어 

결국 보다 좋게, 보다 빨리, 짧은 리드타임으로 소로트 생산을 하는 정체하지 않는 흐름방식을 취하는 것이다. 

도요다식 생산시스템의 두가지 기본적인 사고는 Just-in time 이라고 하는 적시관리와 

생산의 자동화에 있다. 

적시관리란 준공정이 필요한 때에 필요한 물건을 필요한 양 만큼만 전공정에 가지러 가고 전공정은 가지고 간 분만큼만 보충하여 두는 방식으로, 

일정의 슈퍼마켓 방식이라고 할 수 있으며 낭비를 배제한 동기화 생산상식이다. 


이 적시관리는 철저한 낭비의 배제를 목표로 하는데 발생 가능한 낭비는 세가지로 요약된다. 

첫째, 생산량이 일정치 않고 변동이 있을 경우 설비, 노동, 재료가 정점에서의 능력을 갖추어야 하므로 낭비가 발생한다. 

둘째, 작업공수를 줄임으로써 생산준비 비용의 감소를 위해 로트생산을 할 경우 과잉생산이 이루어지고 이것은 결과적으로 재고의 감비와 운반의 낭비를 초래한다. 

셋째, 작업자의 움직임에 관한 각종의 낭비를 들 수 있는데 기계를 감시하거나 기계치공구 조정 또는 치공구[治工具]를 찾거나 가지러 가는 것은 주작업과 동작의 낭비이다. 


그러므로 낭비를 없애기 위해서는 표준화 생산과 표준작업이 갖추어져야 할 것이다. 

한편, 자동화는 사람의 지혜를 활용하여 자동화를 행하는 것을 뜻한다. 

그러므로 필요한 양만큼만 생산하면 저절로 설비가 정지 되도록하여 너무 많이 만드는 것을 방지하며, 만약 이상이 발생하면 라인이 정지되고 원인공정에 불이 켜지게 함으로써 쉽게 이상을 파악하게 하는 눈으로 보는 관리를 행한다.



가스충전제조업에 적용한다면

아마도 수요예측과 정확한 물품 조달 및 각 부재료 (가스통, 충전기기, 포장재) 와 가스와의 제조단위가 다 다를테니 정확히 맞추어 납품받는거겠지요

가스 1만통을 주입할 양을 가지고 있는데

가스통의 최소 구입단위가 12,000 통이라면 2천통이 남을테니까요

'SAP Business > 용어' 카테고리의 다른 글

Incoterms  (0) 2017.03.07
사급이란? 유상사급? 무상사급?  (0) 2017.03.03
B/L , 선하증권, 船荷證券 , bill of lading  (0) 2017.03.02

설정

트랙백

댓글

http://www.sapjoy.co.kr/?document_srl=520662#14

'지니꺼' 카테고리의 다른 글

바탕화면  (0) 2018.02.22
abap Text 언어 변환 프로그램  (0) 2017.08.22
스타크래프트 무료 받는곳  (0) 2017.04.20
gva 2000 student 2355  (0) 2017.04.14
XML Viewer  (0) 2017.03.03

설정

트랙백

댓글


  DATAls_toolbar TYPE stb_button.

  CLEAR ls_toolbar.
  ls_toolbar-function  'REFR'.
  ls_toolbar-icon      icon_refresh.
  ls_toolbar-quickinfo 'Refresh' ##NO_TEXT.
  ls_toolbar-text      'Refresh' ##NO_TEXT.

*  APPEND ls_toolbar TO p_object->mt_toolbar.
  insert ls_toolbar inTO p_object->mt_toolbar index 1.


Index로 위치를 지정해주면 된다.

설정

트랙백

댓글

S4 HANA 기반 시스템 구축을 위한 가이드


S4 HANA 기반 시스템 구축을 위한 가이드.docx


'SAP Program > ABAP' 카테고리의 다른 글

SAP Buffer 초기화 T-code  (0) 2017.04.12
Windows Temp Directory 가져오기  (0) 2017.04.10
Maint view event 관련 coding  (0) 2017.03.31
Maint view T-code 없이 Call 하기  (0) 2017.03.30
Select-options => Sql where 로 변환  (0) 2017.03.28

설정

트랙백

댓글



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

***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.




설정

트랙백

댓글

* Internal table 


DATABEGIN OF gs_result_100.
        INCLUDE STRUCTURE sflight.
DATAstats(4),
      check,
      ziso     LIKE t002-laiso,
      zdrop(10type c,
      
      cinfo      TYPE lvc_emphsz,
      cellstyl   TYPE lvc_t_styl,
      cellscol   TYPE lvc_t_scol.
DATAEND   OF gs_result_100,
gt_result_100 LIKE TABLE OF gs_result_100.



* ALV Layout setting


      gs_layout_1-info_fname 'CINFO'.
      gs_layout_1-stylefname 'CELLSTYL'.
      gs_layout_1-ctab_fname 'CELLSCOL'.



* Logic


  DATAls_scol TYPE lvc_s_scol,
        lt_scol TYPE lvc_t_scol,
        lt_styl TYPE lvc_t_styl,
        ls_styl TYPE lvc_s_styl,
        lw_idx  TYPE sy-tabix.



  LOOP AT gt_result_100 INTO gs_result_100.
    lw_idx sy-tabix.
    CLEARlt_scolls_scol,
           lt_stylls_styl.

    IF gs_result_100-price > p_price.
      ls_scol-fname 'PRICE'.
      ls_scol-color-col 6.
      ls_scol-color-int 1.
      APPEND ls_scol TO lt_scol.
    ENDIF.

    IF gs_result_100-currency 'USD'.
      ls_styl-fieldname 'CURRENCY'.
      ls_styl-style cl_gui_alv_grid=>mc_style_enabled.

      APPEND ls_styl TO lt_styl.
    ELSE.
      ls_styl-fieldname 'CURRENCY'.
      ls_styl-style cl_gui_alv_grid=>mc_style_disabled.

      APPEND ls_styl TO lt_styl.
    ENDIF.

    INSERT LINES OF lt_styl INTO TABLE gs_result_100-cellstyl.
    INSERT LINES OF lt_scol INTO TABLE gs_result_100-cellscol.

    MODIFY gt_result_100 FROM gs_result_100
                         INDEX lw_idx
                         TRANSPORTING cellscol cellstyl.
  ENDLOOP.

설정

트랙백

댓글


CALL FUNCTION 'VIEW_MAINTENANCE_CALL'
    EXPORTING
      ACTION                       = MODE
      VIEW_NAME                    = P_TABLE
*     VARIANT_FOR_SELECTION        = ls_variant
    TABLES
      DBA_SELLIST                  = GT_SELTAB
    EXCEPTIONS
      CLIENT_REFERENCE             = 1
      FOREIGN_LOCK                 = 2
      INVALID_ACTION               = 3
      NO_CLIENTINDEPENDENT_AUTH    = 4
      NO_DATABASE_FUNCTION         = 5
      NO_EDITOR_FUNCTION           = 6
      NO_SHOW_AUTH                 = 7
      NO_TVDIR_ENTRY               = 8
      NO_UPD_AUTH                  = 9
      ONLY_SHOW_ALLOWED            = 10
      SYSTEM_FAILURE               = 11
      UNKNOWN_FIELD_IN_DBA_SELLIST = 12
      VIEW_NOT_FOUND               = 13. 

설정

트랙백

댓글