6: PROCEDURE load_error_tbl (
7: px_error_rec IN OUT NOCOPY OKL_API.ERROR_REC_TYPE,
8: px_error_tbl IN OUT NOCOPY OKL_API.ERROR_TBL_TYPE) IS
9: j INTEGER := NVL(px_error_tbl.LAST, 0) + 1;
10: last_msg_idx INTEGER := FND_MSG_PUB.COUNT_MSG;
11: l_msg_idx INTEGER := FND_MSG_PUB.G_NEXT;
12: BEGIN
13: -- FND_MSG_PUB has a small error in it. If we call FND_MSG_PUB.COUNT_AND_GET before
14: -- we call FND_MSG_PUB.GET, the variable FND_MSG_PUB uses to control the index of the
7: px_error_rec IN OUT NOCOPY OKL_API.ERROR_REC_TYPE,
8: px_error_tbl IN OUT NOCOPY OKL_API.ERROR_TBL_TYPE) IS
9: j INTEGER := NVL(px_error_tbl.LAST, 0) + 1;
10: last_msg_idx INTEGER := FND_MSG_PUB.COUNT_MSG;
11: l_msg_idx INTEGER := FND_MSG_PUB.G_NEXT;
12: BEGIN
13: -- FND_MSG_PUB has a small error in it. If we call FND_MSG_PUB.COUNT_AND_GET before
14: -- we call FND_MSG_PUB.GET, the variable FND_MSG_PUB uses to control the index of the
15: -- message stack gets set to 1. This makes sense until we call FND_MSG_PUB.GET which
9: j INTEGER := NVL(px_error_tbl.LAST, 0) + 1;
10: last_msg_idx INTEGER := FND_MSG_PUB.COUNT_MSG;
11: l_msg_idx INTEGER := FND_MSG_PUB.G_NEXT;
12: BEGIN
13: -- FND_MSG_PUB has a small error in it. If we call FND_MSG_PUB.COUNT_AND_GET before
14: -- we call FND_MSG_PUB.GET, the variable FND_MSG_PUB uses to control the index of the
15: -- message stack gets set to 1. This makes sense until we call FND_MSG_PUB.GET which
16: -- automatically increments the index by 1, (making it 2), however, when the GET function
17: -- attempts to pull message 2, we get a NO_DATA_FOUND exception because there isn't any
10: last_msg_idx INTEGER := FND_MSG_PUB.COUNT_MSG;
11: l_msg_idx INTEGER := FND_MSG_PUB.G_NEXT;
12: BEGIN
13: -- FND_MSG_PUB has a small error in it. If we call FND_MSG_PUB.COUNT_AND_GET before
14: -- we call FND_MSG_PUB.GET, the variable FND_MSG_PUB uses to control the index of the
15: -- message stack gets set to 1. This makes sense until we call FND_MSG_PUB.GET which
16: -- automatically increments the index by 1, (making it 2), however, when the GET function
17: -- attempts to pull message 2, we get a NO_DATA_FOUND exception because there isn't any
18: -- message 2. To circumvent this problem, check the amount of messages and compensate.
11: l_msg_idx INTEGER := FND_MSG_PUB.G_NEXT;
12: BEGIN
13: -- FND_MSG_PUB has a small error in it. If we call FND_MSG_PUB.COUNT_AND_GET before
14: -- we call FND_MSG_PUB.GET, the variable FND_MSG_PUB uses to control the index of the
15: -- message stack gets set to 1. This makes sense until we call FND_MSG_PUB.GET which
16: -- automatically increments the index by 1, (making it 2), however, when the GET function
17: -- attempts to pull message 2, we get a NO_DATA_FOUND exception because there isn't any
18: -- message 2. To circumvent this problem, check the amount of messages and compensate.
19: -- Again, this error only occurs when 1 message is on the stack because COUNT_AND_GET
18: -- message 2. To circumvent this problem, check the amount of messages and compensate.
19: -- Again, this error only occurs when 1 message is on the stack because COUNT_AND_GET
20: -- will only update the index variable when 1 and only 1 message is on the stack.
21: IF (last_msg_idx = 1) THEN
22: l_msg_idx := FND_MSG_PUB.G_FIRST;
23: END IF;
24: LOOP
25: fnd_msg_pub.get(
26: p_msg_index => l_msg_idx,
21: IF (last_msg_idx = 1) THEN
22: l_msg_idx := FND_MSG_PUB.G_FIRST;
23: END IF;
24: LOOP
25: fnd_msg_pub.get(
26: p_msg_index => l_msg_idx,
27: p_encoded => fnd_api.g_false,
28: p_data => px_error_rec.msg_data,
29: p_msg_index_out => px_error_rec.msg_count);