<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Runtime issue -  workflow ALV report in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/runtime-issue-workflow-alv-report/m-p/1451774#M213942</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;For starters change the highlighted code:&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;
FORM process_fi_invoice .
* FOR ALL THE FI INVOICES, BASED ON THE OBJECT KEY GET THE WORK ITEM IDS
* FOR FI INVOICES THE OBJECT KEY IS DOC #, CC AND FISCAL YEAR

&amp;lt;b&amp;gt;  SORT int_bkpf BY bukrs belnr gjahr.&amp;lt;/b&amp;gt;
  LOOP AT int_bseg.
    CLEAR: wf_flag, object_key, wf_objkey, zfbdt, first_dis_date,
    discount_per.
* READ HEADER TABLE
    READ TABLE int_bkpf WITH KEY bukrs = int_bseg-bukrs
    belnr = int_bseg-belnr
&amp;lt;b&amp;gt;    gjahr = int_bseg-gjahr
    BINARY SEARCH.&amp;lt;/b&amp;gt;
    CHECK sy-subrc = 0.

    PERFORM get_fi_invoice.
&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Rob&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 23 Jun 2006 21:35:01 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2006-06-23T21:35:01Z</dc:date>
    <item>
      <title>Runtime issue -  workflow ALV report</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/runtime-issue-workflow-alv-report/m-p/1451773#M213941</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi All,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have a ALV report based on workflow which helps the coders, approvers to choose as many invoices and 'Forward' 'Reject' or "approve' invoices at one time.&lt;/P&gt;&lt;P&gt;I am having runtime issues. This is how the code looks. Can anyone please help me and see what I am doing wrong or how do I get to run this report faster.&lt;/P&gt;&lt;P&gt;It doesn't take a lot of time fetching data from VBKPF and VBSEGK. Its in the  PERFORM PROCESS_FI_INVOICE which takes a lot of time.&lt;/P&gt;&lt;P&gt;Any help is appreciated&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;  PERFORM get_fi_mm_parked_docs.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM get_fi_mm_parked_docs .&lt;/P&gt;&lt;P&gt;      SELECT * FROM vbkpf INTO TABLE int_bkpf&lt;/P&gt;&lt;P&gt;        WHERE bukrs IN s_bukrs AND&lt;/P&gt;&lt;P&gt;              belnr IN s_belnr AND   &lt;/P&gt;&lt;P&gt;              gjahr IN s_gjahr AND&lt;/P&gt;&lt;P&gt;              bldat IN s_bldat AND   "INVOICE DATE&lt;/P&gt;&lt;P&gt;              xblnr IN s_xblnr AND&lt;/P&gt;&lt;P&gt;              blart IN s_blart AND&lt;/P&gt;&lt;P&gt;              tcode IN s_fi    AND   "FV60 and FBV1&lt;/P&gt;&lt;P&gt;              bstat = c_bstat.       "V - only parked&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    SELECT * FROM vbsegk INTO TABLE int_bseg   &lt;/P&gt;&lt;P&gt;      FOR ALL  entries in int_bkpf&lt;/P&gt;&lt;P&gt;      WHERE bukrs =  int_bkpf-bukrs AND&lt;/P&gt;&lt;P&gt;            belnr =  int_bkpf-belnr AND&lt;/P&gt;&lt;P&gt;            gjahr =  int_bkpf-gjahr AND&lt;/P&gt;&lt;P&gt;            lifnr IN s_lifnr        AND&lt;/P&gt;&lt;P&gt;            wrbtr IN s_wrbtr.  &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; PERFORM PROCESS_FI_INVOICE.&lt;/P&gt;&lt;P&gt;END-OF-SELECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM PROCESS_FI_INVOICE .&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;FOR ALL THE FI INVOICES, BASED ON THE OBJECT KEY GET THE WORK ITEM IDS&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;FOR FI INVOICES THE OBJECT KEY IS DOC #, CC AND FISCAL YEAR&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  LOOP AT int_bseg.&lt;/P&gt;&lt;P&gt;    CLEAR: wf_flag, object_key, wf_objkey, zfbdt, first_dis_date, discount_per.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;READ HEADER TABLE&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    READ TABLE int_bkpf WITH KEY bukrs = int_bseg-bukrs&lt;/P&gt;&lt;P&gt;                                 belnr = int_bseg-belnr&lt;/P&gt;&lt;P&gt;                                 gjahr = int_bseg-gjahr.&lt;/P&gt;&lt;P&gt;    CHECK sy-subrc = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    PERFORM get_fi_invoice.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF NOT int_worklist[] IS INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;NOW ALL THE WORK ITEMS IS IN TABLE INT_WORKLIST&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      LOOP AT int_worklist.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IF THERE IS VALUE ON SELECTION SCREEN FOR WI_ID&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        IF NOT s_wiid[] IS INITIAL.&lt;/P&gt;&lt;P&gt;          IF int_worklist-wi_id IN s_wiid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          ELSE.&lt;/P&gt;&lt;P&gt;            CONTINUE.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;TRAFFIC LIGHT COLUMN&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        PERFORM get_traffic_light_fi USING   OBJECT_key         int_worklist-wi_id c_fi_task.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;if no child WI is found for the parent..continue.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        IF wf_wi_cancelled = 'Y'.&lt;/P&gt;&lt;P&gt;          continue.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;CURRENT AGENT&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        IF wf_flag = 'Y'.&lt;/P&gt;&lt;P&gt;          CONTINUE.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;        CLEAR object_key.&lt;/P&gt;&lt;P&gt;        object_key = wf_objkey.&lt;/P&gt;&lt;P&gt;        swc_create_object duedat 'FIPP' object_key.&lt;/P&gt;&lt;P&gt;        swc_get_property duedat 'zDueDate' zfbdt.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; FIRST DISCOUNT DATE&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        swc_get_property duedat 'zVend1stDiscDate' first_dis_date.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;GET THE DISCOUNT%&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        swc_get_property duedat 'zVend1stDisc' discount_per.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;GET VENDOR NAME&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        PERFORM get_vendor_name USING int_bseg-lifnr&lt;/P&gt;&lt;P&gt;                                         CHANGING int_fields-name1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        MOVE: int_worklist-wi_id  TO int_wi-top_wi_id,&lt;/P&gt;&lt;P&gt;        swwwihead-wi_id     TO int_wi-wi_id.&lt;/P&gt;&lt;P&gt;        APPEND int_wi.&lt;/P&gt;&lt;P&gt;        CLEAR  int_wi.&lt;/P&gt;&lt;P&gt;        clear: zapinv_header.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   ELSEIF INT_BKPF-TCODE = C_FV60.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;GET THE PRIORITY PAY&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        if not int_bkpf-zzdocumentumid is initial.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     WF_OBJKEY = INT_BKPF-AWKEY.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          SELECT SINGLE * FROM zapinv_header INTO zapinv_header&lt;/P&gt;&lt;P&gt;            WHERE id = int_bkpf-zzdocumentumid.&lt;/P&gt;&lt;P&gt;          IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;            IF zapinv_header-priority_pay_ind = 'Y'.&lt;/P&gt;&lt;P&gt;              MOVE 'Priority pay'  TO int_fields-pay.&lt;/P&gt;&lt;P&gt;              MOVE 'C601' to int_fields-color_line.&lt;/P&gt;&lt;P&gt;            ENDIF.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;MOVE ALL THE FIELDS TO AN INTERNAL TABLE&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        MOVE: int_bkpf-bukrs       TO int_fields-bukrs,&lt;/P&gt;&lt;P&gt;              int_bkpf-belnr       TO int_fields-belnr,&lt;/P&gt;&lt;P&gt;              int_bkpf-gjahr       TO int_fields-gjahr,&lt;/P&gt;&lt;P&gt;              int_bkpf-xblnr       TO int_fields-xblnr,&lt;/P&gt;&lt;P&gt;              int_bseg-lifnr       TO int_fields-lifnr,&lt;/P&gt;&lt;P&gt;              int_bkpf-bldat       TO int_fields-bldat,&lt;/P&gt;&lt;P&gt;              zfbdt                TO int_fields-zfbdt,&lt;/P&gt;&lt;P&gt;              first_dis_date       TO int_fields-first_discount_date,   "FIRST DISCOUNT DATE&lt;/P&gt;&lt;P&gt;              discount_per         TO int_fields-discount,   "DISCOUNT%&lt;/P&gt;&lt;P&gt;              wf_awkey             TO int_fields-inv_doc,   "INVOICE DOC NUMBER&lt;/P&gt;&lt;P&gt;              int_bkpf-blart       TO int_fields-blart,&lt;/P&gt;&lt;P&gt;              wf_po                TO int_fields-ebeln,&lt;/P&gt;&lt;P&gt;              wf_po_item           TO int_fields-ebelp,&lt;/P&gt;&lt;P&gt;              int_bseg-zlspr       TO int_fields-zlspr,   "PAYMENT BLOCK KEY&lt;/P&gt;&lt;P&gt;              int_bseg-wrbtr       TO int_fields-wrbtr,   "INVOICE AMOUNT&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             int_worklist-wi_id   TO int_fields-wi_id,&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;              swwwihead-wi_id      TO int_fields-wi_id,&lt;/P&gt;&lt;P&gt;              zname                TO int_fields-wi_aagent,&lt;/P&gt;&lt;P&gt;              int_bkpf-tcode       TO int_fields-tcode,&lt;/P&gt;&lt;P&gt;              int_bkpf-awkey       TO int_fields-awkey,&lt;/P&gt;&lt;P&gt;              int_bkpf-zzdocumentumid TO int_fields-ID.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             WF_INDEX        TO INT_FIELDS-INDEX.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        WRITE icon_tif             TO int_fields-url.&lt;/P&gt;&lt;P&gt;        IF NOT wf_lin IS INITIAL.&lt;/P&gt;&lt;P&gt;          wf_lin = wf_lin + 1.&lt;/P&gt;&lt;P&gt;          MOVE wf_lin TO int_fields-index.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        ELSE.&lt;/P&gt;&lt;P&gt;          MOVE wf_index TO int_fields-index.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        APPEND int_fields. CLEAR: int_fields, wf_po, wf_po_item, wf_objkey, object_key, zfbdt, first_dis_date,&lt;/P&gt;&lt;P&gt;                                  lfa1, wf_awkey, zapinv_header, int_bseg, int_bkpf, swwwihead, object_key,&lt;/P&gt;&lt;P&gt;                                  discount_per, int_worklist, wf_flag.&lt;/P&gt;&lt;P&gt;        wf_index = wf_index + 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;FOR INVOICES WHICH DOEN'T HAVE A WI ATTACHED, WE STILL NEED TO SHOW ON THE REPORT&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;WITH ALL THE ATTRIBUTES&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      if wf_admin = 'Y' AND p_no_wi = 'X'..&lt;/P&gt;&lt;P&gt;        perform get_attr_for_inv_without_wi_FI.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    refresh int_worklist. clear int_worklist.&lt;/P&gt;&lt;P&gt;ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;********************************************************&lt;/P&gt;&lt;P&gt;*********************&lt;STRONG&gt;FORMS&lt;/STRONG&gt;****************************&lt;/P&gt;&lt;P&gt;********************************************************&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM get_fi_invoice .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CONCATENATE int_bseg-bukrs int_bseg-belnr int_bseg-gjahr INTO wf_objkey.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM get_workitems_to_object USING wf_objkey&lt;/P&gt;&lt;P&gt;                                        c_fi_typ&lt;/P&gt;&lt;P&gt;                                        int_bkpf-zzdocumentumid.&lt;/P&gt;&lt;P&gt;  CLEAR wf_awkey.&lt;/P&gt;&lt;P&gt;  wf_awkey = int_bkpf-awkey+4(10).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " GET_FI_INVOICE&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM get_workitems_to_object  USING    p_objkey&lt;/P&gt;&lt;P&gt;                                       p_typ&lt;/P&gt;&lt;P&gt;                                       p_id.&lt;/P&gt;&lt;P&gt;CLEAR int_worklist.  REFRESH int_worklist.&lt;/P&gt;&lt;P&gt;if int_bkpf-tcode in s_fi[].&lt;/P&gt;&lt;P&gt;    SELECT SINGLE wiid INTO zapinv_wi-wiid&lt;/P&gt;&lt;P&gt;           FROM zapinv_wi&lt;/P&gt;&lt;P&gt;           WHERE tid = p_id.&lt;/P&gt;&lt;P&gt;    IF sy-subrc EQ 0.&lt;/P&gt;&lt;P&gt;      int_worklist-wi_id = zapinv_wi-wiid.&lt;/P&gt;&lt;P&gt;      APPEND int_worklist.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;CLEAR zapinv_wi.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM get_traffic_light_fi USING p_key p_id p_task.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;get current agent name&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CLEAR: object_key, zname, int_agents, swwwihead,container, cnt_elem_tab, wf_flag, wf_wi_cancelled.&lt;/P&gt;&lt;P&gt;  REFRESH: int_agents, container, cnt_elem_tab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT SINGLE * FROM swwwihead INTO swwwihead&lt;/P&gt;&lt;P&gt;     WHERE top_wi_id = p_id AND&lt;/P&gt;&lt;P&gt;           wi_type   = 'W'  AND&lt;/P&gt;&lt;P&gt;           wi_stat  IN s_wistat AND&lt;/P&gt;&lt;P&gt;           WI_RH_TASK = p_task.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc = 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;read the container and get the status&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL FUNCTION 'SWK_WI_CONTAINER_READ'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        im_wi_id           = swwwihead-wi_id  &lt;/P&gt;&lt;P&gt;     TABLES&lt;/P&gt;&lt;P&gt;       cnt_elem_tab       = cnt_elem_tab.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    wf_wi_cancelled = 'Y'.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;GET THE AGENT NAME&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  READ TABLE cnt_elem_tab WITH KEY element = 'DeliverTo'.&lt;/P&gt;&lt;P&gt;  IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    PERFORM get_agent_name.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IF THE USER IS AN ADMIN, SHOW ALL WORK ITEMS&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  IF WF_ADMIN = 'Y'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;if an agent name is input on the screen, show only workitems associated with that user&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    IF NOT s_agent[] IS INITIAL.&lt;/P&gt;&lt;P&gt;      IF object_key IN s_agent.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;        CLEAR wf_flag.&lt;/P&gt;&lt;P&gt;        wf_flag = 'Y'.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;if the user is a coder&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ELSEIF WF_ADMIN &amp;lt;&amp;gt; 'Y' AND WF_CODER = 'Y'.&lt;/P&gt;&lt;P&gt;    IF SY-UNAME = OBJECT_KEY.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      wf_flag = 'Y'.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;if the user is an approver&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ELSEIF wf_admin &amp;lt;&amp;gt; 'Y' AND wf_coder &amp;lt;&amp;gt; 'Y'.&lt;/P&gt;&lt;P&gt;    IF OBJECT_KEY IN S_AGENT[].&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      wf_flag = 'Y'.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF wf_flag &amp;lt;&amp;gt; 'Y'.&lt;/P&gt;&lt;P&gt;    READ TABLE cnt_elem_tab WITH KEY element = 'PostingStatus'.&lt;/P&gt;&lt;P&gt;    IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;      CASE cnt_elem_tab-value.&lt;/P&gt;&lt;P&gt;        WHEN 'F'.  "FAILURE = RED LIGHT&lt;/P&gt;&lt;P&gt;          WRITE icon_red_light AS ICON TO int_fields-traffic.&lt;/P&gt;&lt;P&gt;          MOVE 'Not Ready To Post' TO int_fields-status.&lt;/P&gt;&lt;P&gt;        WHEN 'P' OR 'R'..&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;CHECK FOR YELLOW AND GREEN LIGHT&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;CHECK THE PAYMENT BLOCK FIELD, IF ITS BLANK, GREEN LIGHT&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          IF int_fields-zlspr = ' '.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Here make another check..to see if the user has approval authorization. If&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;yes turn the light green..else make it yellow and change the description&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;to 'Insufficient approval authority'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            PERFORM check_approve_authorization TABLES int_bkpf&lt;/P&gt;&lt;P&gt;                                          USING  wf_fi_typ.&lt;/P&gt;&lt;P&gt;            IF wf_ind = 'N'.&lt;/P&gt;&lt;P&gt;              WRITE icon_yellow_light AS ICON TO int_fields-traffic.&lt;/P&gt;&lt;P&gt;              MOVE 'Insufficient approval authority' TO int_fields-status.&lt;/P&gt;&lt;P&gt;            ELSE.&lt;/P&gt;&lt;P&gt;              WRITE icon_green_light AS ICON TO int_fields-traffic.&lt;/P&gt;&lt;P&gt;              MOVE 'Ready To Post' TO int_fields-status.&lt;/P&gt;&lt;P&gt;            ENDIF.&lt;/P&gt;&lt;P&gt;          ELSE.&lt;/P&gt;&lt;P&gt;            WRITE icon_yellow_light AS ICON TO int_fields-traffic.&lt;/P&gt;&lt;P&gt;            MOVE 'Blocked' TO int_fields-status.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;      ENDCASE.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " GET_TRAFFIC_LIGHT&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 23 Jun 2006 21:20:26 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/runtime-issue-workflow-alv-report/m-p/1451773#M213941</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-06-23T21:20:26Z</dc:date>
    </item>
    <item>
      <title>Re: Runtime issue -  workflow ALV report</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/runtime-issue-workflow-alv-report/m-p/1451774#M213942</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;For starters change the highlighted code:&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;
FORM process_fi_invoice .
* FOR ALL THE FI INVOICES, BASED ON THE OBJECT KEY GET THE WORK ITEM IDS
* FOR FI INVOICES THE OBJECT KEY IS DOC #, CC AND FISCAL YEAR

&amp;lt;b&amp;gt;  SORT int_bkpf BY bukrs belnr gjahr.&amp;lt;/b&amp;gt;
  LOOP AT int_bseg.
    CLEAR: wf_flag, object_key, wf_objkey, zfbdt, first_dis_date,
    discount_per.
* READ HEADER TABLE
    READ TABLE int_bkpf WITH KEY bukrs = int_bseg-bukrs
    belnr = int_bseg-belnr
&amp;lt;b&amp;gt;    gjahr = int_bseg-gjahr
    BINARY SEARCH.&amp;lt;/b&amp;gt;
    CHECK sy-subrc = 0.

    PERFORM get_fi_invoice.
&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Rob&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 23 Jun 2006 21:35:01 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/runtime-issue-workflow-alv-report/m-p/1451774#M213942</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-06-23T21:35:01Z</dc:date>
    </item>
  </channel>
</rss>

