Saturday, 15 April 2017

Work Flow in PR




  Workflow Template:















**********************************************************************************





  METHOD get_details.

    DATA :id        TYPE  thead-tdid,
          language  TYPE  thead-tdspras,
          name      TYPE  thead-tdname,
          object    TYPE  thead-tdobject,
          lines     TYPE TABLE OF tline,
          lin       TYPE tline,
          wa_reason TYPE soli,wa_output TYPE w3html.


    TYPES BEGIN OF ty_rea,
              f1 TYPE char100,
              f2 TYPE char100,
              f3 TYPE char100,
            END OF ty_rea.

    DATA :lv_amt TYPE char20.
    DATA lv_unam TYPE sy-uname.



    DATAdoc_chng  TYPE sodocchgi1.
    DATAtab_lines  TYPE sy-tabix,
          body_start TYPE sy-tabix.
    DATAit_objtxt TYPE TABLE OF solisti1 .
    DATAwa_objtxt TYPE solisti1 .
    DATAit_objpack   TYPE TABLE OF  sopcklsti1 .
    DATAwa_objpack   TYPE sopcklsti1 .
    DATAit_objbin    TYPE TABLE OF solisti1 .
    DATAwa_objbin    TYPE solisti1 .
    DATAit_reclist   TYPE TABLE OF  somlreci1 .
    DATAwa_reclist   TYPE somlreci1 .
*DATA: it_shortcut_param type zst_shortcut_par OCCURS 0 WITH HEADER LINE.
    DATAcontent TYPE string.
    DATA text      TYPE bcsy_text,
           body_text TYPE so_text255.


    DATA parameter TYPE  text255 .


    DATA gt_rea     TYPE TABLE OF ty_rea,
           gs_rea     TYPE ty_rea,
           lv_string  TYPE char200,
           lv_string1 TYPE char200,
           lv_string2 TYPE char200,
           lv_string3 TYPE char200.




    "Getting Purchase requisition Details
    SELECT SINGLE FROM  eban INTO  @DATA(gs_eban)  WHERE banfn @pr_number.

********Commented by Navaneetha Krishnan on 10.2.17************************************************
*
*    SELECT SUM( preis ),
*           SUM( menge ) FROM eban INTO ( @gs_eban-preis , @gs_eban-menge ) WHERE banfn = @pr_number.
***************************************************************************************************

    "Getting PR Release stages details
    SELECT SINGLE FROM t16fs INTO @DATA(gs_statWHERE  frggr @gs_eban-frggr
                                                   AND frgsx @gs_eban-frgst.

    "Getting users to sent msg and approve reject option to their inbox
    SELECT FROM zmm_pr_wf_users INTO TABLE @DATA(gt_usersWHERE ekorg @gs_eban-ekorg.

    "to fill description
    SELECT SINGLE ekotx FROM t024e INTO zmm_s_pr_wf_desc-gv_company
                        WHERE ekorg gs_eban-ekorg.

*       CONCATENATE '<H> Pr Company      </>' ZMM_S_PR_WF_DESC-GV_COMPANY INTO ZMM_S_PR_WF_DESC-GV_COMPANY SEPARATED BY ':'.
    SELECT banfnpreismenge FROM eban INTO TABLE @DATA(gt_ebanWHERE banfn @pr_number AND
                                                                         loekz NE 'X'.
**********************      Coded By Navaneethakrishnan 10.2.17************************************
DATAlv_amount TYPE PREIS,
      lv_amnt TYPE preis.
CLEARlv_amount,lv_amnt.
    LOOP AT gt_eban INTO DATA(gw_eban).

      lv_amount gw_eban-preis * gw_eban-menge.
      lv_amnt lv_amnt + lv_amount.
    ENDLOOP.
********************End of Code ********************************************************************
    zmm_s_pr_wf_desc-gv_curr gs_eban-waers.
    IF gs_eban-menge IS NOT INITIAL.
      zmm_s_pr_wf_desc-gv_amt lv_amnt."gs_eban-preis * gs_eban-menge. "/ 5.8.15
    ELSE.
      zmm_s_pr_wf_desc-gv_amt space.
    ENDIF.
    zmm_s_pr_wf_desc-gv_reim gs_eban-bednr.

*
*
*       DO .
*       data flag.
*       IF flag = '1'.
*       exit.
*       ENDIF.
*       ENDDO.


    SELECT SINGLE eknam FROM t024 INTO zmm_s_pr_wf_desc-gv_team
                        WHERE ekgrp gs_eban-ekgrp.




    IF gs_eban-knttp 'N'.
      SELECT SINGLE post1 FROM proj INTO zmm_s_pr_wf_desc-gv_project
                          WHERE pspnr IN SELECT p~psphi   FROM  aufk AS JOIN prps AS  p
                                           ON a~pspel =  p~pspnr  WHERE aufnr IN
                                         SELECT nplnr FROM ebkn WHERE  banfn gs_eban-banfn AND bnfpo gs_eban-bnfpo ).
    ELSEIF gs_eban-knttp 'Q' OR gs_eban-knttp 'P'.
      SELECT SINGLE post1 FROM proj INTO zmm_s_pr_wf_desc-gv_project
                          WHERE pspnr IN SELECT psphi FROM prps WHERE pspnr IN
                                          SELECT ps_psp_pnr FROM ebkn WHERE  banfn gs_eban-banfn AND bnfpo gs_eban-bnfpo ).

    ENDIF.




    IF gs_eban-knttp 'K'.
      SELECT SINGLE ltext FROM cskt INTO zmm_s_pr_wf_desc-gv_project
                          WHERE kostl IN SELECT kostl FROM ebkn
                                           WHERE banfn gs_eban-banfn AND bnfpo gs_eban-bnfpo )
*                         and KOSTL in  ( select KOSTL from EBKN
*                                          WHERE BANFN = gs_eban-banfn and BNFPO = gs_eban-BNFPO )
                          AND spras 'EN'.
    ENDIF.

    id 'B01'.
    object =   'EBANH'.
    name gs_eban-banfn.
    language 'EN'.


    CALL FUNCTION 'READ_TEXT'
      EXPORTING
*       CLIENT                  = SY-MANDT
        id                      id
        language                language
        name                    name
        object                  object
      TABLES
        lines                   lines
      EXCEPTIONS
        id                      1
        language                2
        name                    3
        not_found               4
        object                  5
        reference_check         6
        wrong_access_to_archive 7
        OTHERS                  8.
    IF sy-subrc <> 0.
* Implement suitable error handling here
    ENDIF.




    LOOP AT lines INTO lin .
*       IF sy-subrc = 0.
      APPEND lin-tdline TO gt_just.
      CONCATENATE zmm_s_pr_wf_desc-gv_just lin-tdline INTO zmm_s_pr_wf_desc-gv_just.
      CLEAR lin.
*       ENDIF..

    ENDLOOP.





    "For Displaying reason  entered in approval of Pr using workflow

    REFRESH lines[].
    object 'EBANH'.
    id 'B02'.
    language 'EN'.
    name pr_number.


    CALL FUNCTION 'READ_TEXT'
      EXPORTING
        client                  sy-mandt
        id                      id
        language                language
        name                    name
        object                  object
      TABLES
        lines                   lines
      EXCEPTIONS
        id                      1
        language                2
        name                    3
        not_found               4
        object                  5
        reference_check         6
        wrong_access_to_archive 7
        OTHERS                  8.
    IF sy-subrc <> 0.
* Implement suitable error handling here
    ENDIF.


    LOOP AT lines INTO DATA(gs_lin).
      SPLIT gs_lin-tdline AT ':' INTO gs_rea-f1 lv_string.
      SPLIT lv_string AT '/' INTO gs_rea-f2 lv_string1 lv_string2 lv_string3.
      CONCATENATE lv_string1 lv_string2 lv_string3 INTO gs_rea-f3 SEPARATED BY '/'.
      APPEND gs_rea TO gt_rea.
      CLEAR lv_string1lv_string2 ,lv_string3,lv_string.
    ENDLOOP.


    LOOP AT lines INTO DATA(wa_lin).
      wa_reason-line wa_lin-tdline.
      APPEND wa_reason TO reasons.
    ENDLOOP.


    IF sy-subrc 0.
      wa_output-line '<HTML><BODY><TABLE BORDER="2" ><TR><TH>Action Taken</TH><TH>Action Done by</TH>'.
      APPEND wa_output TO output_table.
      CLEARwa_output.

      wa_output-line '<TH>Remarks</TH></TR>'.
      APPEND wa_output TO output_table.
      CLEARwa_output.
      IF gt_rea[] IS NOT INITIAL.
        LOOP AT gt_rea INTO gs_rea.
          CONCATENATE '<TR><TD>' gs_rea-f1 '</TD><TD>' gs_rea-f3 '</TD><TD>' gs_rea-f2 '</TD></TR>' INTO wa_output-line.

          APPEND wa_output TO output_table.
          CLEARwa_outputgs_rea.
        ENDLOOP.
      ENDIF.
      wa_output-line '</TABLE></BODY></HTML>'.
      APPEND wa_output TO output_table.
      CLEARwa_output.
    ENDIF.




    "Till here description filled



    IF gs_eban-banpr <> '08'.
      condition 2.
      "this read used to find creator or manager who is responsible for PR
*      READ TABLE gt_users INTO DATA(gs_users) WITH KEY frgco = ' '.

      CONCATENATE 'US' gs_eban-ernam INTO users_msg.
      CONCATENATE  'Approve or reject PR' pr_number INTO  lv_msg_dec SEPARATED BY ' '.

      "below code dynamically build message at each level of release which we gona convey for above user(responsible person)
      IF gs_eban-frgzu IS INITIAL.
        "below read used to get user who is responsible for next level of PR release
        READ TABLE gt_users INTO DATA(gs_usersWITH KEY frgco gs_stat-frgc1."'C1'.
        CONCATENATE 'US' gs_users-uname INTO users_opt.
        CONCATENATE  'PR' pr_number 'Created' INTO lv_msg SEPARATED BY ' '.
      ELSEIF gs_eban-frgzu 'X'.

        IF gs_stat-frgc2 IS INITIAL.
          CLEAR condition.
          CONCATENATE  'PR' pr_number 'Released'  INTO lv_msg SEPARATED BY ' ' .
        ELSE.

          DESCRIBE TABLE reasons LINES DATA(lv_cnt).
          READ TABLE reasons INTO DATA(lv_reasonsINDEX  lv_cnt..
          IF sy-subrc 0.
            IF lv_reasons-line CS 'Reject'.
              condition 2.
            ELSE.
              CLEAR condition.
            ENDIF.
          ELSE.
            CLEAR condition.
          ENDIF.



          "below read used to get user who is responsible for next level of PR release
          READ TABLE gt_users INTO gs_users WITH KEY frgco gs_stat-frgc2."'C2'.
          CONCATENATE 'US' gs_users-uname INTO users_opt.
          CONCATENATE  'PR' pr_number 'Released at 1st Level'  INTO lv_msg SEPARATED BY ' ' .
        ENDIF.

      ELSEIF gs_eban-frgzu 'XX'.
        CLEAR condition.
        CONCATENATE  'PR' pr_number 'Released'  INTO lv_msg SEPARATED BY ' ' .
      ENDIF.

    ELSE.



      condition 1.
      CONCATENATE 'US' gs_eban-ernam INTO users_msg.
      CONCATENATE 'US' gs_eban-ernam INTO users_opt.
      CONCATENATE  'PR' pr_number 'Rejected'  INTO lv_msg_dec SEPARATED BY ' ' .
      CONCATENATE  'PR' pr_number 'Rejected'  INTO lv_msg SEPARATED BY ' ' .

    ENDIF.

    REFRESH it_objpack[],it_objbin[]it_objtxt[],it_reclist[].
    CLEAR doc_chng.


    "To send Vendor Mails
    IF gs_eban-frgkz IS  INITIAL OR gs_eban-frgkz 'R'.

      CLEAR frgkz.


      SELECT FROM zmm_pr_create INTO TABLE @DATA(users_table1WHERE ekorg @gs_eban-ekorg.



      LOOP AT users_table1 INTO DATA(gs_user).



        CONCATENATE parameter 'EBAN-BANFN='
        "'MEREQ_TOPLINE-BANFN_EXT='
         pr_number  ';'  INTO parameter.
        .

*  IF sy-subrc = 0.


*** Mail Subject
        CONCATENATE 'Pr Created' pr_number  'Now you can process PO' INTO doc_chng-obj_descr SEPARATED BY space.
*** Mail Contents

        "table formation

        CONCATENATE '<BR><B> Company-</B>' zmm_s_pr_wf_desc-gv_company '</BR>'  INTO wa_objtxt-line .
        APPEND wa_objtxt TO it_objtxt." TO it_message.
        CLEARwa_objtxt.


        lv_amt zmm_s_pr_wf_desc-gv_amt.
        CONCATENATE '<BR> <B>Currency/Amount-</B>' zmm_s_pr_wf_desc-gv_curr '/' lv_amt '</BR>'  INTO wa_objtxt-line .
        APPEND wa_objtxt TO it_objtxt." TO it_message.
        CLEARwa_objtxt.
        CONCATENATE '<BR><B> Team-</B>' zmm_s_pr_wf_desc-gv_team '</BR>'  INTO wa_objtxt-line .
        APPEND wa_objtxt TO it_objtxt." TO it_message.
        CLEARwa_objtxt.
        CONCATENATE '<BR><B> Project/Cost center-</B>' zmm_s_pr_wf_desc-gv_project '</BR>'  INTO wa_objtxt-line .
        APPEND wa_objtxt TO it_objtxt." TO it_message.
        CLEARwa_objtxt.
        CONCATENATE '<BR><B> Justification-</B>' ''   INTO wa_objtxt-line .
        APPEND wa_objtxt TO it_objtxt." TO it_message.
        CLEARwa_objtxt.
        LOOP AT gt_just INTO DATA(line1).
          wa_objtxt-line line1.
          APPEND wa_objtxt TO it_objtxt." TO it_message.
          CLEARwa_objtxt.
        ENDLOOP.
        wa_objtxt-line '</BR>'   .
        APPEND wa_objtxt TO it_objtxt." TO it_message.
        CLEARwa_objtxt.

        CONCATENATE '<BR><B>  Client Reimbursement-</B>' zmm_s_pr_wf_desc-gv_reim '</BR>' INTO wa_objtxt-line .
        APPEND wa_objtxt TO it_objtxt." TO it_message.
        CLEARwa_objtxt.
        CONCATENATE '<BR>' space   '</BR>' INTO wa_objtxt-line .
        APPEND wa_objtxt TO it_objtxt." TO it_message.
        CLEARwa_objtxt.
        CONCATENATE '<BR>' space   '</BR>' INTO wa_objtxt-line .
        APPEND wa_objtxt TO it_objtxt." TO it_message.
        CLEARwa_objtxt.







        IF gt_rea[] IS NOT INITIAL.
          CONCATENATE '<BR><B>' 'Remarks'  '</B></BR>' INTO wa_objtxt-line .
          APPEND wa_objtxt TO it_objtxt." TO it_message.
          CLEARwa_objtxt.
          CONCATENATE '<BR>' space   '</BR>' INTO wa_objtxt-line .
          APPEND wa_objtxt TO it_objtxt." TO it_message.
          CLEARwa_objtxt.
          CONCATENATE body_text
          '<TABLE BORDER = "1" >' INTO body_text.
          wa_objtxt-line body_text.
          APPEND wa_objtxt TO it_objtxt." TO it_message.
          CLEARwa_objtxt.
          CLEARbody_text.

          CONCATENATE body_text
                 '<TR><TD><B>Action Taken</B></TD><TD><B>Action Done by</B></TD><TD><B>Remarks</B></TD>'
                 '</TR>'
                 INTO body_text.
          CONDENSE body_text.
          wa_objtxt-line body_text.
          APPEND  wa_objtxt TO it_objtxt." TO it_message.
          CLEARwa_objtxt.
          CLEARbody_text.


          LOOP AT gt_rea INTO gs_rea.
            CONCATENATE '<TR><TD>' gs_rea-f1 '</TD><TD>' gs_rea-f3 '</TD><TD>' gs_rea-f2 '</TD></TR>' INTO body_text.
            CONDENSE body_text.
            wa_objtxt-line body_text.
            APPEND  wa_objtxt TO it_objtxt." TO it_message.
            CLEARwa_objtxt.
            CLEARbody_text.
          ENDLOOP.
        ENDIF.




        wa_objtxt-line '</TABLE>' .
        APPEND  wa_objtxt TO it_objtxt." TO it_message.
        CLEARwa_objtxt.
        CLEARbody_text.


        "end of table formation
*** Creation of the entry for the document
        DESCRIBE TABLE it_objtxt LINES tab_lines.
        CLEAR wa_objpack-transf_bin.
        wa_objpack-head_start 1.
        wa_objpack-head_num 0.
        wa_objpack-body_start 1.
        wa_objpack-body_num tab_lines.
        wa_objpack-doc_type 'HTM'.
        APPEND wa_objpack TO it_objpack.





        lv_unam gs_user-users.
*** create the shortcut content for the required transaction
        CALL FUNCTION 'SWN_CREATE_SHORTCUT'
          EXPORTING
            i_transaction           'ME53'
            i_parameter             parameter
            i_sysid                 sy-sysid
            i_client                sy-mandt
            i_user                  lv_unam
            i_language              sy-langu
            i_windowsize            'NORMAL WINDOW'
          IMPORTING
            shortcut_string         content
          EXCEPTIONS
            inconsistent_parameters 1
            OTHERS                  2.
*** Populate attachment content
        CLEAR tab_lineswa_objbin.
        CONCATENATE content wa_objbin-line INTO wa_objbin-line.
        APPEND wa_objbin TO it_objbin.
        DESCRIBE TABLE it_objbin LINES tab_lines.

*** Creation of the entry for the compressed attachment
        wa_objpack-transf_bin 'X'"Will get content from content_bin
        wa_objpack-head_start 1.
        wa_objpack-head_num   1.
        wa_objpack-body_start 1.
        wa_objpack-body_num   tab_lines.
        wa_objpack-doc_type   'SAP'.
        wa_objpack-obj_name   'SAPSHORTCUTMAIL'.
        wa_objpack-obj_descr  pr_number.
        wa_objpack-doc_size   tab_lines * 255.
        APPEND  wa_objpack TO it_objpack.


*** target recipent(s)
        CLEAR it_reclist.
        FREE it_reclist.


*       CONCATENATE 'US' gs_user-users INTO gs_user1.
*       CONDENSE gs_user1.
*         users = gs_user1."'USTESTABAP'.
*       gs_user1-ekorg = gs_user-ekorg.
        wa_reclist-receiver   gs_user-users.  "&----- Assign SAP User Id
        wa_reclist-rec_type   'B'.                    "&-- Send to SAP Inbox
        wa_reclist-com_type   'INT'.
        wa_reclist-notif_del  'X'.
        wa_reclist-notif_ndel 'X'.
        APPEND  wa_reclist TO it_reclist.




*** Sending the document to recipients with the shortcut attachment
        CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
          EXPORTING
            document_data              doc_chng
            put_in_outbox              'X'
            commit_work                'X'
          TABLES
            packing_list               it_objpack
            contents_bin               it_objbin
            contents_txt               it_objtxt
            receivers                  it_reclist
          EXCEPTIONS
            too_many_receivers         1
            document_not_sent          2
            operation_no_authorization 4
            OTHERS                     99.

*endif.
        REFRESH it_objpack[],it_objbin[]it_objtxt[],it_reclist[].
        CLEAR doc_chng.

      ENDLOOP.


    ENDIF.



    IF condition <> OR condition <> 2.
     IF gs_eban-frgkz IS NOT INITIAL.

      REFRESH it_objpack[],it_objbin[]it_objtxt[],it_reclist[].
      CLEAR doc_chng.


      CONCATENATE parameter 'EBAN-BANFN='
      "'MEREQ_TOPLINE-BANFN_EXT='
       pr_number  ';'  INTO parameter.
      .


*** Mail Subject
      doc_chng-obj_descr lv_msg.


*** Mail Contents

      "table formation


      CONCATENATE '<BR><B> Company-</B>' zmm_s_pr_wf_desc-gv_company '</BR>'  INTO wa_objtxt-line .
      APPEND wa_objtxt TO it_objtxt." TO it_message.
      CLEARwa_objtxt.


      lv_amt zmm_s_pr_wf_desc-gv_amt.
      CONCATENATE '<BR> <B>Currency/Amount-</B>' zmm_s_pr_wf_desc-gv_curr '/' lv_amt '</BR>'  INTO wa_objtxt-line .
      APPEND wa_objtxt TO it_objtxt." TO it_message.
      CLEARwa_objtxt.
      CONCATENATE '<BR><B> Team-</B>' zmm_s_pr_wf_desc-gv_team '</BR>'  INTO wa_objtxt-line .
      APPEND wa_objtxt TO it_objtxt." TO it_message.
      CLEARwa_objtxt.
      CONCATENATE '<BR><B> Project/Cost center-</B>' zmm_s_pr_wf_desc-gv_project '</BR>'  INTO wa_objtxt-line .
      APPEND wa_objtxt TO it_objtxt." TO it_message.
      CLEARwa_objtxt.
      CONCATENATE '<BR><B> Justification-</B>' zmm_s_pr_wf_desc-gv_just   INTO wa_objtxt-line .
      APPEND wa_objtxt TO it_objtxt." TO it_message.
      CLEARwa_objtxt.
      LOOP AT gt_just INTO DATA(line).
        wa_objtxt-line line.
        APPEND wa_objtxt TO it_objtxt." TO it_message.
        CLEARwa_objtxt.
      ENDLOOP.
      wa_objtxt-line '</BR>'   .
      APPEND wa_objtxt TO it_objtxt." TO it_message.
      CLEARwa_objtxt.

      CONCATENATE '<BR><B>  Client Reimbursement-</B>' zmm_s_pr_wf_desc-gv_reim '</BR>' INTO wa_objtxt-line .
      APPEND wa_objtxt TO it_objtxt." TO it_message.
      CLEARwa_objtxt.
      CONCATENATE '<BR>' space   '</BR>' INTO wa_objtxt-line .
      APPEND wa_objtxt TO it_objtxt." TO it_message.
      CLEARwa_objtxt.
      CONCATENATE '<BR>' space   '</BR>' INTO wa_objtxt-line .
      APPEND wa_objtxt TO it_objtxt." TO it_message.
      CLEARwa_objtxt.







      IF gt_rea[] IS NOT INITIAL.
        CONCATENATE '<BR><B>' 'Remarks'  '</B></BR>' INTO wa_objtxt-line .
        APPEND wa_objtxt TO it_objtxt." TO it_message.
        CLEARwa_objtxt.
        CONCATENATE '<BR>' space   '</BR>' INTO wa_objtxt-line .
        APPEND wa_objtxt TO it_objtxt." TO it_message.
        CLEARwa_objtxt.
        CONCATENATE body_text
        '<TABLE BORDER = "1" >' INTO body_text.
        wa_objtxt-line body_text.
        APPEND wa_objtxt TO it_objtxt." TO it_message.
        CLEARwa_objtxt.
        CLEARbody_text.

        CONCATENATE body_text
               '<TR><TD><B>Action Taken</B></TD><TD><B>Action Done by</B></TD><TD><B>Remarks</B></TD>'
               '</TR>'
               INTO body_text.
        CONDENSE body_text.
        wa_objtxt-line body_text.
        APPEND  wa_objtxt TO it_objtxt." TO it_message.
        CLEARwa_objtxt.
        CLEARbody_text.


        LOOP AT gt_rea INTO gs_rea.
          CONCATENATE '<TR><TD>' gs_rea-f1 '</TD><TD>' gs_rea-f3 '</TD><TD>' gs_rea-f2 '</TD></TR>' INTO body_text.
          CONDENSE body_text.
          wa_objtxt-line body_text.
          APPEND  wa_objtxt TO it_objtxt." TO it_message.
          CLEARwa_objtxt.
          CLEARbody_text.
        ENDLOOP.
      ENDIF.




      wa_objtxt-line '</TABLE>' .
      APPEND  wa_objtxt TO it_objtxt." TO it_message.
      CLEARwa_objtxt.
      CLEARbody_text.


      "end of table formation


*** Creation of the entry for the document
      DESCRIBE TABLE it_objtxt LINES tab_lines.
      CLEAR wa_objpack-transf_bin.
      wa_objpack-head_start 1.
      wa_objpack-head_num 0.
      wa_objpack-body_start 1.
      wa_objpack-body_num tab_lines.
      wa_objpack-doc_type 'HTM'.
      APPEND wa_objpack TO it_objpack.




DATA(LV_LENGTH)  STRLENusers_msg ).

      lv_unam users_msg+2(LV_LENGTH).
*** create the shortcut content for the required transaction
      CALL FUNCTION 'SWN_CREATE_SHORTCUT'
        EXPORTING
          i_transaction           'ME53'
          i_parameter             parameter
          i_sysid                 sy-sysid
          i_client                sy-mandt
          i_user                  lv_unam
          i_language              sy-langu
          i_windowsize            'NORMAL WINDOW'
        IMPORTING
          shortcut_string         content
        EXCEPTIONS
          inconsistent_parameters 1
          OTHERS                  2.
*** Populate attachment content
      CLEAR tab_lineswa_objbin.
      CONCATENATE content wa_objbin-line INTO wa_objbin-line.
      APPEND wa_objbin TO it_objbin.
      DESCRIBE TABLE it_objbin LINES tab_lines.

*** Creation of the entry for the compressed attachment
      wa_objpack-transf_bin 'X'"Will get content from content_bin
      wa_objpack-head_start 1.
      wa_objpack-head_num   1.
      wa_objpack-body_start 1.
      wa_objpack-body_num   tab_lines.
      wa_objpack-doc_type   'SAP'.
      wa_objpack-obj_name   'SAPSHORTCUTMAIL'.
      wa_objpack-obj_descr  pr_number.
      wa_objpack-doc_size   tab_lines * 255.
      APPEND  wa_objpack TO it_objpack.


*** target recipent(s)
      CLEAR it_reclist.
      FREE it_reclist.


*       CONCATENATE 'US' gs_user-users INTO gs_user1.
*       CONDENSE gs_user1.
*         users = gs_user1."'USTESTABAP'.
*       gs_user1-ekorg = gs_user-ekorg.
      wa_reclist-receiver   lv_unam.  "&----- Assign SAP User Id
      wa_reclist-rec_type   'B'.                    "&-- Send to SAP Inbox
      wa_reclist-com_type   'INT'.
      wa_reclist-notif_del  'X'.
      wa_reclist-notif_ndel 'X'.
      APPEND  wa_reclist TO it_reclist.




*** Sending the document to recipients with the shortcut attachment
      CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
        EXPORTING
          document_data              doc_chng
          put_in_outbox              'X'
          commit_work                'X'
        TABLES
          packing_list               it_objpack
          contents_bin               it_objbin
          contents_txt               it_objtxt
          receivers                  it_reclist
        EXCEPTIONS
          too_many_receivers         1
          document_not_sent          2
          operation_no_authorization 4
          OTHERS                     99.

*endif.
      REFRESH it_objpack[],it_objbin[]it_objtxt[],it_reclist[].
      CLEAR doc_chng.

*   ENDLOOP.





    ENDIF.
    ENDIF.


  ENDMETHOD.


***********************************************************************************






  method APPROVE_PR.

data REL_STATUS_NEW type  BAPIMMPARA-REL_STATUS,
       REL_INDICATOR_NEW  type  BAPIMMPARA-REL_IND,
       RETURN  type TABLE OF  BAPIRETURN,
       gv_relcod TYPE FRGCO.


     select SINGLE FROM eban INTO  @data(gs_ebanwhere banfn @pr_number.

      IF gs_eban is NOT INITIAL.
     select from t16fs INTO TABLE @data(gt_rel)
       WHERE frggr @gs_eban-frggr
        and frgsx @gs_eban-frgst.
      ENDIF.


       READ TABLE gt_rel INTO data(gs_relwith key frggr gs_eban-frggr
                                                     frgsx gs_eban-frgst.

*
*       DO .
*       data flag.
*       IF flag = 'x'.
*       exit.
*       ENDIF.
*       ENDDO.

        IF gs_eban-frgzu is INITIAL .
         gv_relcod gs_rel-FRGC1.
         else.
         gv_relcod gs_rel-FRGC2.
        ENDIF.

       CALL FUNCTION 'BAPI_REQUISITION_RELEASE_GEN'
         EXPORTING
           number                  pr_number
           rel_code                gv_relcod
          NO_COMMIT_WORK          ' '
        IMPORTING
          REL_STATUS_NEW          REL_STATUS_NEW
          REL_INDICATOR_NEW       REL_INDICATOR_NEW
        TABLES
          RETURN                  RETURN
                 .

      "To insert approval text for Pr
      CALL METHOD zmm_cl_pr_det_workflow=>reason_insert
        EXPORTING
          workitemid =  workitemid
          pr_number  pr_number
          USERS_OPT USERS_OPT
          action    'A'
          .


  endmethod.



*************************************************************************************



  method REJECT_PR.

DATAcontainer type TABLE OF swr_cont ,
gt_eban type TABLE OF ueban ,
gt_ebkn type TABLE OF uebkn ,
it_eban type TABLE OF ueban ,
it_ebkn type TABLE OF uebkn ,
object_key TYPE swr_struct-object_key,
item_numc TYPE numc05,
BAPIRET TYPE BAPIRET2,
wa_con TYPE swr_cont,
MESSAGE_LINES type TABLE OF   SWR_MESSAG,
MESSAGE_STRUCT  type TABLE OF SWR_MSTRUC.

*DO .
*DATA flag.
*IF flag = 'x'.
*exit.
*ENDIF.
*ENDDO.

SELECT *
INTO CORRESPONDING FIELDS OF TABLE gt_eban
FROM eban
WHERE banfn pr_number.
*AND bnfpo = item.

SELECT *
INTO CORRESPONDING FIELDS OF TABLE gt_ebkn
FROM ebkn
WHERE banfn pr_number.
*AND bnfpo = item.

it_eban gt_eban.
it_ebkn gt_ebkn.


LOOP AT gt_eban INTO data(gs_eban).
gs_eban-kz 'U'.
gs_eban-banpr '08'.
MODIFY gt_eban FROM gs_eban TRANSPORTING kz banpr .
ENDLOOP.




CALL FUNCTION 'ME_UPDATE_REQUISITION'
TABLES
xeban gt_eban
xebkn gt_ebkn
yeban it_eban
yebkn it_ebkn.

CALL FUNCTION 'ME_UPDATE_REQUISITION_CHNGDOC'
TABLES
xeban gt_eban
xebkn gt_ebkn
yeban it_eban
yebkn it_ebkn.


CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
   WAIT          'X'
IMPORTING
   RETURN        BAPIRET
          .



*wa_con-element = 'RELEASECODE'.
*wa_con-value = REL_CODE.
*append wa_con to container.
*item_numc = item.
*concatenate number item_numc into object_key.


 CALL METHOD zmm_cl_pr_det_workflow=>reason_insert
        EXPORTING
          workitemid =  workitemid
          pr_number  pr_number
          USERS_OPT USERS_OPT
          Action 'R'
          .




object_key pr_number.

CALL FUNCTION 'SAP_WAPI_CREATE_EVENT'
EXPORTING
object_type 'BUS2105'
object_key object_key
event 'REJECTION_START'
TABLES
input_container container
message_lines message_lines
message_struct message_struct.






  endmethod.




***********************************************************************************




  method REASON_INSERT.

    data ATTACHMENTS  type TABLE OF SWR_OBJECT,
           MESSAGE_LINES  type TABLE OF SWR_MESSAG,
           MESSAGE_STRUCT  type TABLE OF  SWR_MSTRUC,
           RETURN_CODE  type  SY-SUBRC,
           OBJECT_ID  type  SOODK,
           OBJCONT  type TABLE OF SOLI,
           lv_msgtyp TYPE char10,
           lv_msgtyp1 TYPE char255,"used to split string to avoide numeric values
           gv_len TYPE char255,
           HEADER TYPE  THEAD,
           LINES  type TABLE OF TLINE,
           wa_line TYPE tline.



    CALL FUNCTION 'SAP_WAPI_GET_ATTACHMENTS'
      EXPORTING
        workitem_id                 workitemid
       USER                        SY-UNAME
       LANGUAGE                    SY-LANGU
       COMMENT_SEMANTIC_ONLY       ' '
     IMPORTING
       RETURN_CODE                 RETURN_CODE
     TABLES
       ATTACHMENTS                 ATTACHMENTS
       MESSAGE_LINES               MESSAGE_LINES
       MESSAGE_STRUCT              MESSAGE_STRUCT
              .



       IF RETURN_CODE 0.
       READ TABLE ATTACHMENTS INTO data(wa_attachINDEX 1.
       IF Action 'A'.
       lv_msgtyp 'Approved'.
       ELSe.
       lv_msgtyp 'Reject'.
       ENDIF.
       REPLACE 'SOFM' WITH '' INto wa_attach-object_id.
       CONDENSE wa_attach-object_id NO-GAPS.
       object_id-objtp wa_attach-object_id+17(3).
       object_id-objyr wa_attach-object_id+20(2).
       object_id-objno wa_attach-object_id+22(12).
       ENDIF.
*
*do.
*  data: flag(1).
*  if flag = 1.
*    exit.
*  endif.
*enddo.


     CALL FUNCTION 'SO_OBJECT_GET_CONTENT'
       EXPORTING
         object_id              object_id
       tables
         objcont                objcont
      EXCEPTIONS
        ARCHIVE_ERROR          1
        OBJECT_NOT_EXIST       2
        OTHERS                 3
               .
     IF sy-subrc <> 0.
* Implement suitable error handling here
     ENDIF.

*       READ TABLE objcont INTO data(wa_objcont) INDEX 1.
*      if sy-subrc = 0.
*       gv_len = strlen( wa_objcont-line ).
*      endif.


       header-tdobject 'EBANH'.
        header-tdid 'B02'.
        header-tdspras 'EN'.
        header-tdname pr_number.


      CALL FUNCTION 'READ_TEXT'
        EXPORTING
         CLIENT                        SY-MANDT
          id                            header-tdid
          language                      header-tdspras
          NAME                          header-tdname
          OBJECT                        header-tdobject
        TABLES
          lines                         lines
       EXCEPTIONS
         ID                            1
         LANGUAGE                      2
         NAME                          3
         NOT_FOUND                     4
         OBJECT                        5
         REFERENCE_CHECK               6
         WRONG_ACCESS_TO_ARCHIVE       7
         OTHERS                        8
                .
      IF sy-subrc <> 0.
* Implement suitable error handling here
      ENDIF.
      data(usersusers_opt.

      REPLACE 'US' WITH '' INTO users.
      CONDENSE users.
       select SINGLE NAME_LAST ,
                  NAME_text from adrp INTO @data(ADDRESS)
                            WHERE PERSNUMBER in select PERSNUMBER from usr21 where BNAME @users ).


data(nameADDRESS-NAME_text.
IF name is INITIAL.
name ADDRESS-NAME_LAST.
ENDIF.



***
*DO .
*  data:fin.
*  IF fin = '1'.
*  exit.
*  ENDIF.
*
*ENDDO.


      if objcont is NOT INITIAL.
       DESCRIBE TABLE objcont LINES DATA(cnt).
        LOOP AT objcont INTO data(wa_objcont).
        wa_line-tdformat '*'.
        if not wa_attach-def_attrib cs 'User Comments'.
*         if sy-tabix = 1.
           gv_len strlenwa_objcont-line ).
           gv_len gv_len 3.

            if sy-tabix and cnt 1.
              CONCATENATE lv_msgtyp  wa_objcont-line+3(gv_lenINTO wa_line-tdline SEPARATED BY ':'.
          CONCATENATE wa_line-tdline+0(100name sy-datum sy-uzeit INTO wa_line-tdline SEPARATED BY '/'.
            elseif sy-tabix cnt.
*             CONCATENATE lv_msgtyp  wa_objcont-line+3(gv_len) INTO wa_line-tdline." SEPARATED BY ':'.
              CONCATENATE wa_line-tdline wa_objcont-line+3(gv_lenINTO wa_line-tdline.
          CONCATENATE wa_line-tdline+0(100name sy-datum sy-uzeit INTO wa_line-tdline SEPARATED BY '/'.
           elseif sy-tabix =  1.
          CONCATENATE lv_msgtyp wa_objcont-line+3(gv_lenINTO wa_line-tdline SEPARATED BY ':'.
*          CONCATENATE wa_line-tdline+0(100) name sy-datum sy-uzeit INTO wa_line-tdline SEPARATED BY '/'.
             else.
             CONCATENATE wa_line-tdline wa_objcont-line+3(gv_lenINTO wa_line-tdline." SEPARATED BY ':'.
          endif.

*          else.
*        wa_line-tdline = wa_objcont-line.
*        endif.
        else.
*           wa_line-tdline = wa_objcont-line.
           CONCATENATE lv_msgtyp wa_objcont-line INTO wa_line-tdline SEPARATED BY ':'.
           CONCATENATE wa_line-tdline name sy-datum sy-uzeit INTO wa_line-tdline SEPARATED BY '/'.
        endif.

        ENDLOOP.

         append wa_line to lines.


      CALL FUNCTION 'SAVE_TEXT'
        EXPORTING
         CLIENT                SY-MANDT
          header                header
          savemode_direct =  'X'
        tables
          lines                 lines
       EXCEPTIONS
         ID                    1
         LANGUAGE              2
         NAME                  3
         OBJECT                4
         OTHERS                5
                .
      IF sy-subrc <> 0.
*       Implement suitable error handling here
      ENDIF.

      endif.



  endmethod.



****************************************************************************************************




  method VMT.
*DO .
*data fi.
*if fi =  1.
* exit.
* endif.
*ENDDO.
    DATAdoc_chng  type sodocchgi1.
DATAtab_lines type sy-tabix,
      body_start type sy-tabix.
DATAit_objtxt type TABLE OF solisti1 .
DATAwa_objtxt type solisti1 .
DATAit_objpack   type TABLE OF  sopcklsti1 .
DATAwa_objpack   type sopcklsti1 .
DATAit_objbin    type TABLE OF solisti1 .
DATAwa_objbin    type solisti1 .
DATAit_reclist   type TABLE OF  somlreci1 .
DATAwa_reclist   type somlreci1 .
*DATA: it_shortcut_param type zst_shortcut_par OCCURS 0 WITH HEADER LINE.
DATAcontent TYPE string.
 data text        TYPE bcsy_text,
        body_text   TYPE so_text255.


DESCRIBE TABLE it_objtxt LINES tab_lines.
CLEAR wa_objpack-transf_bin.
wa_objpack-head_start 1.
wa_objpack-head_num 0.
wa_objpack-body_start 1.
wa_objpack-body_num tab_lines.
wa_objpack-doc_type 'HTM'.
APPEND wa_objpack to it_objpack.


DESCRIBE TABLE it_objbin LINES tab_lines.

*** Creation of the entry for the compressed attachment
wa_objpack-transf_bin 'X'"Will get content from content_bin
wa_objpack-head_start 1.
wa_objpack-head_num   1.
wa_objpack-body_start 1.
wa_objpack-body_num   tab_lines.
wa_objpack-doc_type   'SAP'.
wa_objpack-obj_name   'SAPSHORTCUTMAIL'.
wa_objpack-obj_descr  pr_number.
wa_objpack-doc_size   tab_lines * 255.
APPEND  wa_objpack to it_objpack.


data parameter TYPE  TEXT255 .

  wa_reclist-receiver   'TESTABAP'."gs_user-users'.  "&----- Assign SAP User Id
        wa_reclist-rec_type   'B'.                    "&-- Send to SAP Inbox
        wa_reclist-com_type   'INT'.
        wa_reclist-notif_del  'X'.
        wa_reclist-notif_ndel 'X'.
        APPEND  wa_reclist to it_reclist.


CONCATENATE 'Pr Created' pr_number  'pls check' INTO doc_chng-obj_descr SEPARATED BY space.


*** Sending the document to recipients with the shortcut attachment
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
  EXPORTING
    document_data              doc_chng
    put_in_outbox              'X'
    commit_work                'X'
  TABLES
    packing_list               it_objpack
    contents_bin               it_objbin
    contents_txt               it_objtxt
    receivers                  it_reclist
  EXCEPTIONS
    too_many_receivers         1
    document_not_sent          2
    operation_no_authorization 4
    OTHERS                     99.

*endif.
    refresh it_objpack[],it_objbin[]it_objtxt[],it_reclist[].
    CLEAR doc_chng.
  endmethod.



*****************************************************************************


No comments:

Post a Comment